@sbb-esta/lyne-elements 1.16.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/accordion/accordion.d.ts +4 -1
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/accordion.js +31 -22
  4. package/action-group/action-group.d.ts +6 -4
  5. package/action-group/action-group.d.ts.map +1 -1
  6. package/action-group.js +20 -17
  7. package/alert/alert/alert.d.ts +7 -23
  8. package/alert/alert/alert.d.ts.map +1 -1
  9. package/alert/alert-group/alert-group.d.ts +0 -4
  10. package/alert/alert-group/alert-group.d.ts.map +1 -1
  11. package/alert/alert-group.js +46 -47
  12. package/alert/alert.js +74 -132
  13. package/animation.css +4 -8
  14. package/autocomplete/autocomplete-base-element.d.ts +7 -6
  15. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  16. package/autocomplete/autocomplete.d.ts +0 -1
  17. package/autocomplete/autocomplete.d.ts.map +1 -1
  18. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  19. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  20. package/autocomplete-grid/autocomplete-grid-button.js +11 -11
  21. package/autocomplete-grid/autocomplete-grid.js +0 -3
  22. package/autocomplete.js +68 -67
  23. package/button/accent-button/accent-button.d.ts +19 -0
  24. package/button/accent-button/accent-button.d.ts.map +1 -0
  25. package/button/accent-button-link/accent-button-link.d.ts +19 -0
  26. package/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  27. package/button/accent-button-link.d.ts +2 -0
  28. package/button/accent-button-link.d.ts.map +1 -0
  29. package/button/accent-button-link.js +17 -0
  30. package/button/accent-button-static/accent-button-static.d.ts +19 -0
  31. package/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  32. package/button/accent-button-static.d.ts +2 -0
  33. package/button/accent-button-static.d.ts.map +1 -0
  34. package/button/accent-button-static.js +17 -0
  35. package/button/accent-button.d.ts +2 -0
  36. package/button/accent-button.d.ts.map +1 -0
  37. package/button/accent-button.js +17 -0
  38. package/button/common/button-common.d.ts.map +1 -1
  39. package/button/common.d.ts.map +1 -1
  40. package/button/common.js +20 -16
  41. package/button/mini-button/mini-button.d.ts +4 -3
  42. package/button/mini-button/mini-button.d.ts.map +1 -1
  43. package/button/mini-button-group/mini-button-group.d.ts +4 -1
  44. package/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  45. package/button/mini-button-group.js +12 -8
  46. package/button/mini-button.d.ts +0 -1
  47. package/button/mini-button.d.ts.map +1 -1
  48. package/button/mini-button.js +10 -20
  49. package/button.d.ts +3 -3
  50. package/button.d.ts.map +1 -1
  51. package/button.js +3 -3
  52. package/calendar.js +25 -25
  53. package/card/card/card.d.ts +4 -1
  54. package/card/card/card.d.ts.map +1 -1
  55. package/card/card.js +10 -6
  56. package/checkbox/checkbox/checkbox.d.ts +4 -6
  57. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  58. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  59. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  60. package/checkbox/checkbox-group.js +14 -10
  61. package/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  62. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  63. package/checkbox/checkbox-panel.js +21 -18
  64. package/checkbox/checkbox.js +28 -26
  65. package/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  66. package/chip-label/chip-label.d.ts.map +1 -0
  67. package/chip-label.d.ts +2 -0
  68. package/chip-label.d.ts.map +1 -0
  69. package/chip-label.js +54 -0
  70. package/clock.js +1 -1
  71. package/container/container.js +21 -21
  72. package/container/sticky-bar/sticky-bar.d.ts +1 -0
  73. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  74. package/container/sticky-bar.js +20 -12
  75. package/core/base-elements/button-base-element.d.ts +27 -18
  76. package/core/base-elements/button-base-element.d.ts.map +1 -1
  77. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  78. package/core/base-elements.js +135 -138
  79. package/core/datetime/date-adapter.d.ts +2 -1
  80. package/core/datetime/date-adapter.d.ts.map +1 -1
  81. package/core/datetime/native-date-adapter.d.ts +1 -1
  82. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  83. package/core/datetime.js +29 -28
  84. package/core/dom/animation.d.ts +2 -0
  85. package/core/dom/animation.d.ts.map +1 -0
  86. package/core/dom/lean-context.d.ts +5 -0
  87. package/core/dom/lean-context.d.ts.map +1 -0
  88. package/core/dom.d.ts +2 -2
  89. package/core/dom.d.ts.map +1 -1
  90. package/core/dom.js +50 -55
  91. package/core/eventing/form-element-handlers.d.ts +0 -7
  92. package/core/eventing/form-element-handlers.d.ts.map +1 -1
  93. package/core/eventing.d.ts +0 -1
  94. package/core/eventing.d.ts.map +1 -1
  95. package/core/eventing.js +28 -49
  96. package/core/i18n/i18n.d.ts +4 -2
  97. package/core/i18n/i18n.d.ts.map +1 -1
  98. package/core/i18n.js +147 -140
  99. package/core/mixins/disabled-mixin.d.ts +2 -7
  100. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  101. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  102. package/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  103. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  104. package/core/mixins.d.ts +1 -0
  105. package/core/mixins.d.ts.map +1 -1
  106. package/core/mixins.js +347 -220
  107. package/core/styles/_index.scss +1 -0
  108. package/core/styles/core.scss +150 -0
  109. package/core/styles/image.scss +66 -0
  110. package/core/styles/mixins/animation.scss +2 -4
  111. package/core/styles/mixins/buttons.scss +7 -4
  112. package/core/styles/mixins/card.scss +1 -1
  113. package/core/styles/mixins/chip.scss +35 -35
  114. package/core/styles/mixins/image.scss +34 -0
  115. package/core/styles/mixins/overlay.scss +1 -1
  116. package/core/styles/mixins/panel.scss +1 -1
  117. package/core/styles/standard-theme.scss +1 -0
  118. package/core/styles/table.scss +4 -0
  119. package/core/testing/event-spy.d.ts +2 -1
  120. package/core/testing/event-spy.d.ts.map +1 -1
  121. package/core/testing.d.ts +0 -1
  122. package/core/testing.d.ts.map +1 -1
  123. package/core/testing.js +48 -57
  124. package/core.css +113 -0
  125. package/custom-elements.json +25946 -21671
  126. package/datepicker/common/datepicker-button.d.ts +3 -5
  127. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  128. package/datepicker/common.js +30 -29
  129. package/datepicker/datepicker/datepicker.d.ts +25 -72
  130. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  131. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  132. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  133. package/datepicker/datepicker-next-day.js +10 -12
  134. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  135. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  136. package/datepicker/datepicker-previous-day.js +11 -13
  137. package/datepicker/datepicker.js +129 -157
  138. package/development/accordion/accordion.d.ts +4 -1
  139. package/development/accordion/accordion.d.ts.map +1 -1
  140. package/development/accordion.js +16 -5
  141. package/development/action-group/action-group.d.ts +6 -4
  142. package/development/action-group/action-group.d.ts.map +1 -1
  143. package/development/action-group.js +10 -7
  144. package/development/alert/alert/alert.d.ts +7 -23
  145. package/development/alert/alert/alert.d.ts.map +1 -1
  146. package/development/alert/alert-group/alert-group.d.ts +0 -4
  147. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  148. package/development/alert/alert-group.js +10 -12
  149. package/development/alert/alert.js +38 -122
  150. package/development/autocomplete/autocomplete-base-element.d.ts +7 -6
  151. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  152. package/development/autocomplete/autocomplete.d.ts +0 -1
  153. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  154. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +0 -1
  155. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  156. package/development/autocomplete-grid/autocomplete-grid-button.js +6 -6
  157. package/development/autocomplete-grid/autocomplete-grid.js +1 -7
  158. package/development/autocomplete.js +23 -19
  159. package/development/button/accent-button/accent-button.d.ts +19 -0
  160. package/development/button/accent-button/accent-button.d.ts.map +1 -0
  161. package/development/button/accent-button-link/accent-button-link.d.ts +19 -0
  162. package/development/button/accent-button-link/accent-button-link.d.ts.map +1 -0
  163. package/development/button/accent-button-link.d.ts +2 -0
  164. package/development/button/accent-button-link.d.ts.map +1 -0
  165. package/development/button/accent-button-link.js +25 -0
  166. package/development/button/accent-button-static/accent-button-static.d.ts +19 -0
  167. package/development/button/accent-button-static/accent-button-static.d.ts.map +1 -0
  168. package/development/button/accent-button-static.d.ts +2 -0
  169. package/development/button/accent-button-static.d.ts.map +1 -0
  170. package/development/button/accent-button-static.js +25 -0
  171. package/development/button/accent-button.d.ts +2 -0
  172. package/development/button/accent-button.d.ts.map +1 -0
  173. package/development/button/accent-button.js +25 -0
  174. package/development/button/common/button-common.d.ts.map +1 -1
  175. package/development/button/common.d.ts.map +1 -1
  176. package/development/button/common.js +20 -16
  177. package/development/button/mini-button/mini-button.d.ts +4 -3
  178. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  179. package/development/button/mini-button-group/mini-button-group.d.ts +4 -1
  180. package/development/button/mini-button-group/mini-button-group.d.ts.map +1 -1
  181. package/development/button/mini-button-group.js +7 -3
  182. package/development/button/mini-button.d.ts +0 -1
  183. package/development/button/mini-button.d.ts.map +1 -1
  184. package/development/button/mini-button.js +14 -32
  185. package/development/button.d.ts +3 -3
  186. package/development/button.d.ts.map +1 -1
  187. package/development/button.js +3 -3
  188. package/development/calendar.js +1 -1
  189. package/development/card/card/card.d.ts +4 -1
  190. package/development/card/card/card.d.ts.map +1 -1
  191. package/development/card/card.js +8 -4
  192. package/development/checkbox/checkbox/checkbox.d.ts +4 -6
  193. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  194. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -1
  195. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  196. package/development/checkbox/checkbox-group.js +7 -3
  197. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +4 -4
  198. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  199. package/development/checkbox/checkbox-panel.js +7 -4
  200. package/development/checkbox/checkbox.js +8 -6
  201. package/development/{chip/chip.d.ts → chip-label/chip-label.d.ts} +4 -4
  202. package/development/chip-label/chip-label.d.ts.map +1 -0
  203. package/development/chip-label.d.ts +2 -0
  204. package/development/chip-label.d.ts.map +1 -0
  205. package/development/{chip.js → chip-label.js} +26 -26
  206. package/development/clock.js +1 -1
  207. package/development/container/container.js +8 -12
  208. package/development/container/sticky-bar/sticky-bar.d.ts +1 -0
  209. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  210. package/development/container/sticky-bar.js +18 -10
  211. package/development/core/base-elements/button-base-element.d.ts +27 -18
  212. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  213. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  214. package/development/core/base-elements.js +66 -74
  215. package/development/core/datetime/date-adapter.d.ts +2 -1
  216. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  217. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  218. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  219. package/development/core/datetime.js +4 -3
  220. package/development/core/dom/animation.d.ts +2 -0
  221. package/development/core/dom/animation.d.ts.map +1 -0
  222. package/development/core/dom/lean-context.d.ts +5 -0
  223. package/development/core/dom/lean-context.d.ts.map +1 -0
  224. package/development/core/dom.d.ts +2 -2
  225. package/development/core/dom.d.ts.map +1 -1
  226. package/development/core/dom.js +13 -21
  227. package/development/core/eventing/form-element-handlers.d.ts +0 -7
  228. package/development/core/eventing/form-element-handlers.d.ts.map +1 -1
  229. package/development/core/eventing.d.ts +0 -1
  230. package/development/core/eventing.d.ts.map +1 -1
  231. package/development/core/eventing.js +1 -25
  232. package/development/core/i18n/i18n.d.ts +4 -2
  233. package/development/core/i18n/i18n.d.ts.map +1 -1
  234. package/development/core/i18n.js +27 -23
  235. package/development/core/mixins/disabled-mixin.d.ts +2 -7
  236. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  237. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  238. package/development/core/mixins/form-associated-radio-button-mixin.d.ts +35 -0
  239. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -0
  240. package/development/core/mixins.d.ts +1 -0
  241. package/development/core/mixins.d.ts.map +1 -1
  242. package/development/core/mixins.js +221 -30
  243. package/development/core/testing/event-spy.d.ts +2 -1
  244. package/development/core/testing/event-spy.d.ts.map +1 -1
  245. package/development/core/testing.d.ts +0 -1
  246. package/development/core/testing.d.ts.map +1 -1
  247. package/development/core/testing.js +4 -15
  248. package/development/datepicker/common/datepicker-button.d.ts +3 -5
  249. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  250. package/development/datepicker/common.js +13 -12
  251. package/development/datepicker/datepicker/datepicker.d.ts +25 -72
  252. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  253. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -3
  254. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  255. package/development/datepicker/datepicker-next-day.js +9 -15
  256. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -3
  257. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  258. package/development/datepicker/datepicker-previous-day.js +9 -15
  259. package/development/datepicker/datepicker.js +74 -115
  260. package/development/dialog/dialog/dialog.d.ts +3 -0
  261. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  262. package/development/dialog/dialog-title.js +2 -1
  263. package/development/dialog/dialog.js +46 -39
  264. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  265. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  266. package/development/expansion-panel/expansion-panel-header.js +3 -3
  267. package/development/expansion-panel/expansion-panel.js +32 -17
  268. package/development/file-selector/common/file-selector-common.d.ts +23 -0
  269. package/development/file-selector/common/file-selector-common.d.ts.map +1 -0
  270. package/development/file-selector/common.d.ts +2 -0
  271. package/development/file-selector/common.d.ts.map +1 -0
  272. package/development/file-selector/common.js +382 -0
  273. package/development/file-selector/file-selector/file-selector.d.ts +24 -0
  274. package/development/file-selector/file-selector/file-selector.d.ts.map +1 -0
  275. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  276. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  277. package/development/file-selector/file-selector-dropzone.d.ts +2 -0
  278. package/development/file-selector/file-selector-dropzone.d.ts.map +1 -0
  279. package/development/file-selector/file-selector-dropzone.js +181 -0
  280. package/development/file-selector/file-selector.d.ts +1 -87
  281. package/development/file-selector/file-selector.d.ts.map +1 -1
  282. package/development/file-selector/file-selector.js +52 -0
  283. package/development/file-selector.d.ts +2 -0
  284. package/development/file-selector.d.ts.map +1 -1
  285. package/development/file-selector.js +4 -552
  286. package/development/flip-card/flip-card-details.js +1 -1
  287. package/development/flip-card/flip-card-summary.js +3 -11
  288. package/development/flip-card/flip-card.js +6 -6
  289. package/development/form-field/form-field/form-field.d.ts +5 -10
  290. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  291. package/development/form-field/form-field-clear.js +6 -6
  292. package/development/form-field/form-field.js +32 -40
  293. package/development/header/common.js +2 -2
  294. package/development/header/header/header.d.ts +5 -3
  295. package/development/header/header/header.d.ts.map +1 -1
  296. package/development/header/header.js +15 -20
  297. package/development/image/image.d.ts +0 -30
  298. package/development/image/image.d.ts.map +1 -1
  299. package/development/image.js +62 -273
  300. package/development/journey-header/journey-header.d.ts +4 -1
  301. package/development/journey-header/journey-header.d.ts.map +1 -1
  302. package/development/journey-header.js +7 -3
  303. package/development/lead-container.js +2 -10
  304. package/development/link/common/link-common.d.ts.map +1 -1
  305. package/development/link/common.js +9 -8
  306. package/development/link-list/common/link-list-base.d.ts +1 -0
  307. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  308. package/development/link-list/common.js +4 -2
  309. package/development/link-list/link-list-anchor.js +4 -4
  310. package/development/loading-indicator/loading-indicator.d.ts +1 -3
  311. package/development/loading-indicator/loading-indicator.d.ts.map +1 -1
  312. package/development/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  313. package/development/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  314. package/development/loading-indicator-circle.d.ts +2 -0
  315. package/development/loading-indicator-circle.d.ts.map +1 -0
  316. package/development/loading-indicator-circle.js +146 -0
  317. package/development/loading-indicator.js +81 -182
  318. package/development/map-container/map-container.d.ts.map +1 -1
  319. package/development/map-container.js +5 -5
  320. package/development/menu/common.js +5 -5
  321. package/development/menu/menu/menu.d.ts +3 -0
  322. package/development/menu/menu/menu.d.ts.map +1 -1
  323. package/development/menu/menu.js +39 -24
  324. package/development/message.js +4 -2
  325. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  326. package/development/navigation/common.js +9 -5
  327. package/development/navigation/navigation/navigation.d.ts +3 -0
  328. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  329. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  330. package/development/navigation/navigation-list.js +3 -2
  331. package/development/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  332. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  333. package/development/navigation/navigation-marker.js +6 -4
  334. package/development/navigation/navigation-section/navigation-section.d.ts +3 -0
  335. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  336. package/development/navigation/navigation-section.js +38 -22
  337. package/development/navigation/navigation.js +42 -27
  338. package/development/notification/notification.d.ts +6 -2
  339. package/development/notification/notification.d.ts.map +1 -1
  340. package/development/notification.js +27 -21
  341. package/development/option/option/option-base-element.d.ts +0 -7
  342. package/development/option/option/option-base-element.d.ts.map +1 -1
  343. package/development/option/option.js +5 -26
  344. package/development/overlay/overlay-base-element.d.ts +2 -0
  345. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  346. package/development/overlay/overlay.d.ts +3 -0
  347. package/development/overlay/overlay.d.ts.map +1 -1
  348. package/development/overlay.js +43 -31
  349. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  350. package/development/paginator/common.js +7 -3
  351. package/development/paginator/paginator.js +1 -1
  352. package/development/popover/popover/popover.d.ts +3 -0
  353. package/development/popover/popover/popover.d.ts.map +1 -1
  354. package/development/popover/popover-trigger.js +9 -9
  355. package/development/popover/popover.js +41 -26
  356. package/development/radio-button/common/radio-button-common.d.ts +3 -10
  357. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  358. package/development/radio-button/common.js +44 -121
  359. package/development/radio-button/radio-button/radio-button.d.ts +9 -1
  360. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  361. package/development/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  362. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  363. package/development/radio-button/radio-button-group.js +87 -123
  364. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +19 -1
  365. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  366. package/development/radio-button/radio-button-panel.js +35 -15
  367. package/development/radio-button/radio-button.js +11 -15
  368. package/development/select/select.d.ts +3 -9
  369. package/development/select/select.d.ts.map +1 -1
  370. package/development/select.js +27 -25
  371. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  372. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  373. package/development/selection-expansion-panel.js +28 -16
  374. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  375. package/development/skiplink-list.js +3 -2
  376. package/development/slider/slider.d.ts +0 -1
  377. package/development/slider/slider.d.ts.map +1 -1
  378. package/development/slider.js +2 -2
  379. package/development/stepper/step-label/step-label.d.ts +0 -2
  380. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  381. package/development/stepper/step-label.js +10 -11
  382. package/development/stepper/step.js +1 -1
  383. package/development/stepper/stepper/stepper.d.ts +4 -1
  384. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  385. package/development/stepper/stepper.js +9 -7
  386. package/development/tabs/tab-group/tab-group.d.ts +4 -1
  387. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  388. package/development/tabs/tab-group.js +8 -4
  389. package/development/tabs/tab-label.js +1 -1
  390. package/development/tag/tag/tag.d.ts +4 -1
  391. package/development/tag/tag/tag.d.ts.map +1 -1
  392. package/development/tag/tag-group/tag-group.d.ts +5 -2
  393. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  394. package/development/tag/tag-group.js +7 -4
  395. package/development/tag/tag.js +16 -12
  396. package/development/teaser/teaser.d.ts +2 -2
  397. package/development/teaser/teaser.d.ts.map +1 -1
  398. package/development/teaser-hero/teaser-hero.d.ts +2 -6
  399. package/development/teaser-hero/teaser-hero.d.ts.map +1 -1
  400. package/development/teaser-hero.js +9 -60
  401. package/development/teaser-product/common.js +7 -14
  402. package/development/teaser-product/teaser-product.js +1 -21
  403. package/development/teaser.js +14 -32
  404. package/development/time-input/time-input.d.ts +3 -6
  405. package/development/time-input/time-input.d.ts.map +1 -1
  406. package/development/time-input.js +33 -27
  407. package/development/toast/toast.d.ts +3 -0
  408. package/development/toast/toast.d.ts.map +1 -1
  409. package/development/toast.js +27 -13
  410. package/development/toggle/toggle/toggle.d.ts +4 -8
  411. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  412. package/development/toggle/toggle.js +9 -12
  413. package/development/toggle-check/toggle-check.d.ts +4 -6
  414. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  415. package/development/toggle-check.js +9 -7
  416. package/development/train/train/train.d.ts.map +1 -1
  417. package/development/train/train-blocked-passage.js +2 -2
  418. package/development/train/train-formation/train-formation.d.ts +3 -11
  419. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  420. package/development/train/train-formation.js +43 -74
  421. package/development/train/train-wagon/train-wagon.d.ts +11 -8
  422. package/development/train/train-wagon/train-wagon.d.ts.map +1 -1
  423. package/development/train/train-wagon.js +149 -124
  424. package/development/train/train.js +35 -112
  425. package/development/visual-checkbox/visual-checkbox.d.ts +4 -1
  426. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  427. package/development/visual-checkbox.js +7 -3
  428. package/dialog/dialog/dialog.d.ts +3 -0
  429. package/dialog/dialog/dialog.d.ts.map +1 -1
  430. package/dialog/dialog-title.js +9 -9
  431. package/dialog/dialog.js +56 -51
  432. package/expansion-panel/expansion-panel/expansion-panel.d.ts +7 -1
  433. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  434. package/expansion-panel/expansion-panel-header.js +1 -1
  435. package/expansion-panel/expansion-panel.js +41 -28
  436. package/file-selector/common/file-selector-common.d.ts +23 -0
  437. package/file-selector/common/file-selector-common.d.ts.map +1 -0
  438. package/file-selector/common.d.ts +2 -0
  439. package/file-selector/common.d.ts.map +1 -0
  440. package/file-selector/common.js +210 -0
  441. package/file-selector/file-selector/file-selector.d.ts +24 -0
  442. package/file-selector/file-selector/file-selector.d.ts.map +1 -0
  443. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts +33 -0
  444. package/file-selector/file-selector-dropzone/file-selector-dropzone.d.ts.map +1 -0
  445. package/file-selector/file-selector-dropzone.d.ts +2 -0
  446. package/file-selector/file-selector-dropzone.d.ts.map +1 -0
  447. package/file-selector/file-selector-dropzone.js +97 -0
  448. package/file-selector/file-selector.d.ts +1 -87
  449. package/file-selector/file-selector.d.ts.map +1 -1
  450. package/file-selector/file-selector.js +44 -0
  451. package/file-selector.d.ts +2 -0
  452. package/file-selector.d.ts.map +1 -1
  453. package/file-selector.js +3 -301
  454. package/flip-card/flip-card-details.js +5 -5
  455. package/flip-card/flip-card-summary.js +7 -7
  456. package/flip-card/flip-card.js +9 -9
  457. package/form-field/form-field/form-field.d.ts +5 -10
  458. package/form-field/form-field/form-field.d.ts.map +1 -1
  459. package/form-field/form-field-clear.js +12 -12
  460. package/form-field/form-field.js +143 -141
  461. package/header/common.js +10 -10
  462. package/header/header/header.d.ts +5 -3
  463. package/header/header/header.d.ts.map +1 -1
  464. package/header/header.js +28 -31
  465. package/image/image.d.ts +0 -30
  466. package/image/image.d.ts.map +1 -1
  467. package/image.js +187 -281
  468. package/index.d.ts +13 -9
  469. package/index.js +13 -9
  470. package/journey-header/journey-header.d.ts +4 -1
  471. package/journey-header/journey-header.d.ts.map +1 -1
  472. package/journey-header.js +29 -25
  473. package/lead-container.js +5 -5
  474. package/link/common/link-common.d.ts.map +1 -1
  475. package/link/common.js +18 -16
  476. package/link-list/common/link-list-base.d.ts +1 -0
  477. package/link-list/common/link-list-base.d.ts.map +1 -1
  478. package/link-list/common.js +11 -9
  479. package/link-list/link-list-anchor.js +8 -8
  480. package/loading-indicator/loading-indicator.d.ts +1 -3
  481. package/loading-indicator/loading-indicator.d.ts.map +1 -1
  482. package/loading-indicator-circle/loading-indicator-circle.d.ts +16 -0
  483. package/loading-indicator-circle/loading-indicator-circle.d.ts.map +1 -0
  484. package/loading-indicator-circle.d.ts +2 -0
  485. package/loading-indicator-circle.d.ts.map +1 -0
  486. package/loading-indicator-circle.js +46 -0
  487. package/loading-indicator.js +41 -51
  488. package/map-container/map-container.d.ts.map +1 -1
  489. package/map-container.js +7 -7
  490. package/menu/common.js +8 -8
  491. package/menu/menu/menu.d.ts +3 -0
  492. package/menu/menu/menu.d.ts.map +1 -1
  493. package/menu/menu.js +52 -43
  494. package/message.js +12 -12
  495. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  496. package/navigation/common.js +10 -6
  497. package/navigation/navigation/navigation.d.ts +3 -0
  498. package/navigation/navigation/navigation.d.ts.map +1 -1
  499. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  500. package/navigation/navigation-list.js +17 -16
  501. package/navigation/navigation-marker/navigation-marker.d.ts +2 -1
  502. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  503. package/navigation/navigation-marker.js +12 -10
  504. package/navigation/navigation-section/navigation-section.d.ts +3 -0
  505. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  506. package/navigation/navigation-section.js +46 -37
  507. package/navigation/navigation.js +30 -21
  508. package/notification/notification.d.ts +6 -2
  509. package/notification/notification.d.ts.map +1 -1
  510. package/notification.js +55 -51
  511. package/option/option/option-base-element.d.ts +0 -7
  512. package/option/option/option-base-element.d.ts.map +1 -1
  513. package/option/option.js +110 -125
  514. package/overlay/overlay-base-element.d.ts +2 -0
  515. package/overlay/overlay-base-element.d.ts.map +1 -1
  516. package/overlay/overlay.d.ts +3 -0
  517. package/overlay/overlay.d.ts.map +1 -1
  518. package/overlay.js +83 -77
  519. package/package.json +40 -25
  520. package/paginator/common/paginator-common.d.ts.map +1 -1
  521. package/paginator/common.js +21 -17
  522. package/paginator/paginator.js +1 -1
  523. package/popover/popover/popover.d.ts +3 -0
  524. package/popover/popover/popover.d.ts.map +1 -1
  525. package/popover/popover-trigger.js +6 -6
  526. package/popover/popover.js +114 -109
  527. package/radio-button/common/radio-button-common.d.ts +3 -10
  528. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  529. package/radio-button/common.js +43 -90
  530. package/radio-button/radio-button/radio-button.d.ts +9 -1
  531. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  532. package/radio-button/radio-button-group/radio-button-group.d.ts +19 -26
  533. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  534. package/radio-button/radio-button-group.js +112 -131
  535. package/radio-button/radio-button-panel/radio-button-panel.d.ts +19 -1
  536. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  537. package/radio-button/radio-button-panel.js +56 -44
  538. package/radio-button/radio-button.js +34 -38
  539. package/select/select.d.ts +3 -9
  540. package/select/select.d.ts.map +1 -1
  541. package/select.js +65 -66
  542. package/selection-expansion-panel/selection-expansion-panel.d.ts +4 -1
  543. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  544. package/selection-expansion-panel.js +41 -31
  545. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  546. package/skiplink-list.js +14 -13
  547. package/slider/slider.d.ts +0 -1
  548. package/slider/slider.d.ts.map +1 -1
  549. package/slider.js +1 -1
  550. package/standard-theme.css +238 -8
  551. package/stepper/step-label/step-label.d.ts +0 -2
  552. package/stepper/step-label/step-label.d.ts.map +1 -1
  553. package/stepper/step-label.js +6 -6
  554. package/stepper/step.js +4 -4
  555. package/stepper/stepper/stepper.d.ts +4 -1
  556. package/stepper/stepper/stepper.d.ts.map +1 -1
  557. package/stepper/stepper.js +22 -19
  558. package/table.css +15 -0
  559. package/tabs/tab-group/tab-group.d.ts +4 -1
  560. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  561. package/tabs/tab-group.js +24 -20
  562. package/tabs/tab-label.js +1 -1
  563. package/tag/tag/tag.d.ts +4 -1
  564. package/tag/tag/tag.d.ts.map +1 -1
  565. package/tag/tag-group/tag-group.d.ts +5 -2
  566. package/tag/tag-group/tag-group.d.ts.map +1 -1
  567. package/tag/tag-group.js +13 -10
  568. package/tag/tag.js +25 -21
  569. package/teaser/teaser.d.ts +2 -2
  570. package/teaser/teaser.d.ts.map +1 -1
  571. package/teaser-hero/teaser-hero.d.ts +2 -6
  572. package/teaser-hero/teaser-hero.d.ts.map +1 -1
  573. package/teaser-hero.js +32 -57
  574. package/teaser-product/common.js +1 -1
  575. package/teaser-product/teaser-product.js +13 -13
  576. package/teaser.js +28 -28
  577. package/time-input/time-input.d.ts +3 -6
  578. package/time-input/time-input.d.ts.map +1 -1
  579. package/time-input.js +56 -55
  580. package/toast/toast.d.ts +3 -0
  581. package/toast/toast.d.ts.map +1 -1
  582. package/toast.js +51 -42
  583. package/toggle/toggle/toggle.d.ts +4 -8
  584. package/toggle/toggle/toggle.d.ts.map +1 -1
  585. package/toggle/toggle.js +48 -48
  586. package/toggle-check/toggle-check.d.ts +4 -6
  587. package/toggle-check/toggle-check.d.ts.map +1 -1
  588. package/toggle-check.js +23 -21
  589. package/train/train/train.d.ts.map +1 -1
  590. package/train/train-blocked-passage.js +1 -1
  591. package/train/train-formation/train-formation.d.ts +3 -11
  592. package/train/train-formation/train-formation.d.ts.map +1 -1
  593. package/train/train-formation.js +47 -65
  594. package/train/train-wagon/train-wagon.d.ts +11 -8
  595. package/train/train-wagon/train-wagon.d.ts.map +1 -1
  596. package/train/train-wagon.js +123 -134
  597. package/train/train.js +74 -78
  598. package/visual-checkbox/visual-checkbox.d.ts +4 -1
  599. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  600. package/visual-checkbox.js +21 -17
  601. package/button/mini-button/mini-button-base-element.d.ts +0 -8
  602. package/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  603. package/button/tertiary-button/tertiary-button.d.ts +0 -19
  604. package/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  605. package/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  606. package/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  607. package/button/tertiary-button-link.d.ts +0 -2
  608. package/button/tertiary-button-link.d.ts.map +0 -1
  609. package/button/tertiary-button-link.js +0 -17
  610. package/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  611. package/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  612. package/button/tertiary-button-static.d.ts +0 -2
  613. package/button/tertiary-button-static.d.ts.map +0 -1
  614. package/button/tertiary-button-static.js +0 -17
  615. package/button/tertiary-button.d.ts +0 -2
  616. package/button/tertiary-button.d.ts.map +0 -1
  617. package/button/tertiary-button.js +0 -17
  618. package/chip/chip.d.ts.map +0 -1
  619. package/chip.d.ts +0 -2
  620. package/chip.d.ts.map +0 -1
  621. package/chip.js +0 -54
  622. package/core/dom/get-document-writing-mode.d.ts +0 -5
  623. package/core/dom/get-document-writing-mode.d.ts.map +0 -1
  624. package/core/dom/ssr.d.ts +0 -13
  625. package/core/dom/ssr.d.ts.map +0 -1
  626. package/core/eventing/handler-repository.d.ts +0 -28
  627. package/core/eventing/handler-repository.d.ts.map +0 -1
  628. package/core/observers/intersection-observer.d.ts +0 -20
  629. package/core/observers/intersection-observer.d.ts.map +0 -1
  630. package/core/observers/mutation-observer.d.ts +0 -13
  631. package/core/observers/mutation-observer.d.ts.map +0 -1
  632. package/core/observers/resize-observer.d.ts +0 -16
  633. package/core/observers/resize-observer.d.ts.map +0 -1
  634. package/core/observers.d.ts +0 -4
  635. package/core/observers.d.ts.map +0 -1
  636. package/core/observers.js +0 -38
  637. package/core/testing/wait-for-event.d.ts +0 -2
  638. package/core/testing/wait-for-event.d.ts.map +0 -1
  639. package/development/button/mini-button/mini-button-base-element.d.ts +0 -8
  640. package/development/button/mini-button/mini-button-base-element.d.ts.map +0 -1
  641. package/development/button/tertiary-button/tertiary-button.d.ts +0 -19
  642. package/development/button/tertiary-button/tertiary-button.d.ts.map +0 -1
  643. package/development/button/tertiary-button-link/tertiary-button-link.d.ts +0 -19
  644. package/development/button/tertiary-button-link/tertiary-button-link.d.ts.map +0 -1
  645. package/development/button/tertiary-button-link.d.ts +0 -2
  646. package/development/button/tertiary-button-link.d.ts.map +0 -1
  647. package/development/button/tertiary-button-link.js +0 -25
  648. package/development/button/tertiary-button-static/tertiary-button-static.d.ts +0 -19
  649. package/development/button/tertiary-button-static/tertiary-button-static.d.ts.map +0 -1
  650. package/development/button/tertiary-button-static.d.ts +0 -2
  651. package/development/button/tertiary-button-static.d.ts.map +0 -1
  652. package/development/button/tertiary-button-static.js +0 -25
  653. package/development/button/tertiary-button.d.ts +0 -2
  654. package/development/button/tertiary-button.d.ts.map +0 -1
  655. package/development/button/tertiary-button.js +0 -25
  656. package/development/chip/chip.d.ts.map +0 -1
  657. package/development/chip.d.ts +0 -2
  658. package/development/chip.d.ts.map +0 -1
  659. package/development/core/dom/get-document-writing-mode.d.ts +0 -5
  660. package/development/core/dom/get-document-writing-mode.d.ts.map +0 -1
  661. package/development/core/dom/ssr.d.ts +0 -13
  662. package/development/core/dom/ssr.d.ts.map +0 -1
  663. package/development/core/eventing/handler-repository.d.ts +0 -28
  664. package/development/core/eventing/handler-repository.d.ts.map +0 -1
  665. package/development/core/observers/intersection-observer.d.ts +0 -20
  666. package/development/core/observers/intersection-observer.d.ts.map +0 -1
  667. package/development/core/observers/mutation-observer.d.ts +0 -13
  668. package/development/core/observers/mutation-observer.d.ts.map +0 -1
  669. package/development/core/observers/resize-observer.d.ts +0 -16
  670. package/development/core/observers/resize-observer.d.ts.map +0 -1
  671. package/development/core/observers.d.ts +0 -4
  672. package/development/core/observers.d.ts.map +0 -1
  673. package/development/core/observers.js +0 -39
  674. package/development/core/testing/wait-for-event.d.ts +0 -2
  675. package/development/core/testing/wait-for-event.d.ts.map +0 -1
@@ -67,7 +67,7 @@ const style = css`*,
67
67
 
68
68
  ::slotted(*:not([slot=image])) {
69
69
  transform: translateY(var(--sbb-flip-card-translate-title-y-hover, 0rem));
70
- transition: transform var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-2x)) var(--sbb-animation-easing);
70
+ transition: transform var(--sbb-disable-animation-duration, var(--sbb-animation-duration-2x)) var(--sbb-animation-easing);
71
71
  }
72
72
 
73
73
  .sbb-flip-card-summary--image-wrapper {
@@ -84,15 +84,7 @@ const style = css`*,
84
84
  }
85
85
  }
86
86
 
87
- ::slotted(img) {
88
- object-fit: cover;
89
- width: 100%;
90
- height: 100%;
91
- }
92
-
93
- ::slotted(sbb-image) {
94
- --sbb-image-border-radius: 0;
95
- --sbb-image-aspect-ratio: auto;
87
+ ::slotted([slot=image]) {
96
88
  width: 100%;
97
89
  height: 100%;
98
90
  }`;
@@ -153,4 +145,4 @@ let SbbFlipCardSummaryElement = (() => {
153
145
  export {
154
146
  SbbFlipCardSummaryElement
155
147
  };
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC1jYXJkLXN1bW1hcnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9mbGlwLWNhcmQvZmxpcC1jYXJkLXN1bW1hcnkvZmxpcC1jYXJkLXN1bW1hcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZmxpcC1jYXJkLXN1bW1hcnkuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IHR5cGUgU2JiRmxpcENhcmRJbWFnZUFsaWdubWVudCA9ICdhZnRlcicgfCAnYmVsb3cnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWZsaXAtY2FyZGAsIGl0IGRpc3BsYXlzIGl0cyBjb250ZW50IHdoZW4gdGhlIGNhcmQgaXMgbm90IGZsaXBwZWQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgdGl0bGUgZm9yIHRoZSBgc2JiLWZsaXAtY2FyZC1zdW1tYXJ5YC5cbiAqIEBzbG90IGltYWdlIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGltYWdlIGZvciB0aGUgYHNiYi1mbGlwLWNhcmQtc3VtbWFyeWAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1mbGlwLWNhcmQtc3VtbWFyeScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAnc3VtbWFyeScsXG59KVxuY2xhc3MgU2JiRmxpcENhcmRTdW1tYXJ5RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHBvc2l0aW9uIHdoZXJlIHRvIHJlbmRlciB0aGUgaW1hZ2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ltYWdlLWFsaWdubWVudCcsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGltYWdlQWxpZ25tZW50OiBTYmJGbGlwQ2FyZEltYWdlQWxpZ25tZW50ID0gJ2FmdGVyJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ltYWdlQWxpZ25tZW50JykpIHtcbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZmxpcC1jYXJkJyk/LnNldEF0dHJpYnV0ZSgnZGF0YS1pbWFnZS1hbGlnbm1lbnQnLCB0aGlzLmltYWdlQWxpZ25tZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmxpcC1jYXJkLXN1bW1hcnlcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZsaXAtY2FyZC1zdW1tYXJ5LS1pbWFnZS13cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImltYWdlXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mbGlwLWNhcmQtc3VtbWFyeSc6IFNiYkZsaXBDYXJkU3VtbWFyeUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFxQk0sNkJBQXlCLE1BQUE7O0FBSjlCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLHVCQUF1QixHQUNyQyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7Ozs7b0JBQ3NDOzs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBS2hELDJEQUFBLGtCQUFBLE1BQUEsOEJBQTRELE9BQU87Ozs7SUFBbkUsSUFBZ0IsaUJBQW9EO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFwRSxJQUFnQixlQUFvRCxPQUFBO0FBQUEseUJBQUEsa0NBQUE7QUFBQSxJQUFBO0FBQUEsSUFFakQsV0FBVyxtQkFBdUM7O0FBQ25FLFlBQU0sV0FBVyxpQkFBaUI7QUFFOUIsVUFBQSxrQkFBa0IsSUFBSSxnQkFBZ0IsR0FBRztBQUMzQyxlQUFBQSxNQUFBLEtBQUssWUFBTCxnQkFBQUEsSUFBQSxXQUFlLHFCQUFmLG1CQUFpQyxhQUFhLHdCQUF3QixLQUFLO0FBQUEsTUFBYztBQUFBLElBQzNGO0FBQUEsSUFHaUIsU0FBTTtBQUNoQixhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBO0FBQUEsS0FYVDs7a0NBREMsU0FBUyxFQUFFLFdBQVcsbUJBQW1CLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFDMUMsaUJBQUEsSUFBQSxNQUFBLDRCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsa0JBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsb0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLGdCQUFBLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFBLGlCQUFvRDtBQUFBLFNBQUEsVUFBQSxhQUFBLDhCQUFBLGlDQUFBO0FBTHRFLGlCQXlCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBeEJ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUF5QixZQUFBLHVCQUFBLEdBQUM7OzsifQ==
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC1jYXJkLXN1bW1hcnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9mbGlwLWNhcmQvZmxpcC1jYXJkLXN1bW1hcnkvZmxpcC1jYXJkLXN1bW1hcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZmxpcC1jYXJkLXN1bW1hcnkuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IHR5cGUgU2JiRmxpcENhcmRJbWFnZUFsaWdubWVudCA9ICdhZnRlcicgfCAnYmVsb3cnO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBgc2JiLWZsaXAtY2FyZGAsIGl0IGRpc3BsYXlzIGl0cyBjb250ZW50IHdoZW4gdGhlIGNhcmQgaXMgbm90IGZsaXBwZWQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGEgdGl0bGUgZm9yIHRoZSBgc2JiLWZsaXAtY2FyZC1zdW1tYXJ5YC5cbiAqIEBzbG90IGltYWdlIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGltYWdlIGZvciB0aGUgYHNiYi1mbGlwLWNhcmQtc3VtbWFyeWAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1mbGlwLWNhcmQtc3VtbWFyeScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAnc3VtbWFyeScsXG59KVxuY2xhc3MgU2JiRmxpcENhcmRTdW1tYXJ5RWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHBvc2l0aW9uIHdoZXJlIHRvIHJlbmRlciB0aGUgaW1hZ2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ltYWdlLWFsaWdubWVudCcsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGltYWdlQWxpZ25tZW50OiBTYmJGbGlwQ2FyZEltYWdlQWxpZ25tZW50ID0gJ2FmdGVyJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ltYWdlQWxpZ25tZW50JykpIHtcbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZmxpcC1jYXJkJyk/LnNldEF0dHJpYnV0ZSgnZGF0YS1pbWFnZS1hbGlnbm1lbnQnLCB0aGlzLmltYWdlQWxpZ25tZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZmxpcC1jYXJkLXN1bW1hcnlcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZsaXAtY2FyZC1zdW1tYXJ5LS1pbWFnZS13cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImltYWdlXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mbGlwLWNhcmQtc3VtbWFyeSc6IFNiYkZsaXBDYXJkU3VtbWFyeUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBcUJNLDZCQUF5QixNQUFBOztBQUo5QixNQUFBLG1CQUFBLENBQUEsY0FBYyx1QkFBdUIsR0FDckMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUCxDQUFDOzs7O29CQUNzQzs7OztBQUFSLEVBQUEsbUJBQVEsWUFBVTtBQUFBOztBQUtoRCwyREFBQSxrQkFBQSxNQUFBLDhCQUE0RCxPQUFPOzs7O0lBQW5FLElBQWdCLGlCQUFvRDtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBcEUsSUFBZ0IsZUFBb0QsT0FBQTtBQUFBLHlCQUFBLGtDQUFBO0FBQUEsSUFBQTtBQUFBLElBRWpELFdBQVcsbUJBQXVDOztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBRTlCLFVBQUEsa0JBQWtCLElBQUksZ0JBQWdCLEdBQUc7QUFDM0MsZUFBQUEsTUFBQSxLQUFLLFlBQUwsZ0JBQUFBLElBQUEsV0FBZSxxQkFBZixtQkFBaUMsYUFBYSx3QkFBd0IsS0FBSztBQUFBLE1BQWM7QUFBQSxJQUMzRjtBQUFBLElBR2lCLFNBQU07QUFDaEIsYUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQTtBQUFBLEtBWFQ7O2tDQURDLFNBQVMsRUFBRSxXQUFXLG1CQUFtQixTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBQzFDLGlCQUFBLElBQUEsTUFBQSw0QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGtCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLG9CQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBQSxnQkFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxpQkFBb0Q7QUFBQSxTQUFBLFVBQUEsYUFBQSw4QkFBQSxpQ0FBQTtBQUx0RSxpQkF5QkMsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQXhCd0IsR0FBTSxTQUFtQixPQUQ1QyxrQkFBeUIsWUFBQSx1QkFBQSxHQUFDOzs7In0=
@@ -30,15 +30,15 @@ const style = css`*,
30
30
  --sbb-flip-card-border-radius: var(--sbb-border-radius-4x);
31
31
  --sbb-flip-card-min-height: 17.5rem;
32
32
  --sbb-flip-card-summary-transition-duration: var(
33
- --sbb-disable-animation-zero-time,
33
+ --sbb-disable-animation-duration,
34
34
  var(--sbb-animation-duration-5x)
35
35
  );
36
36
  --sbb-flip-card-summary-transition-delay: var(
37
- --sbb-disable-animation-zero-time,
37
+ --sbb-disable-animation-duration,
38
38
  var(--sbb-animation-duration-2x)
39
39
  );
40
40
  --sbb-flip-card-details-transition-duration: var(
41
- --sbb-disable-animation-zero-time,
41
+ --sbb-disable-animation-duration,
42
42
  var(--sbb-animation-duration-4x)
43
43
  );
44
44
  position: relative;
@@ -60,7 +60,7 @@ const style = css`*,
60
60
  :host([data-flipped]) {
61
61
  --sbb-flip-card-toggle-icon-transform: rotate(45deg);
62
62
  --sbb-flip-card-details-transition-duration: var(
63
- --sbb-disable-animation-zero-time,
63
+ --sbb-disable-animation-duration,
64
64
  var(--sbb-animation-duration-2x)
65
65
  );
66
66
  --sbb-flip-card-summary-transition-delay: 0s;
@@ -128,7 +128,7 @@ const style = css`*,
128
128
  width: var(--sbb-size-element-xs);
129
129
  height: var(--sbb-size-element-xs);
130
130
  border-radius: 16rem;
131
- transition: var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-3x)) ease-out;
131
+ transition: var(--sbb-disable-animation-duration, var(--sbb-animation-duration-3x)) ease-out;
132
132
  }
133
133
  :host([data-flipped]) .sbb-flip-card::before {
134
134
  opacity: 1;
@@ -137,7 +137,7 @@ const style = css`*,
137
137
  width: 100%;
138
138
  height: 100%;
139
139
  border-radius: var(--sbb-flip-card-border-radius);
140
- transition-duration: var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-5x));
140
+ transition-duration: var(--sbb-disable-animation-duration, var(--sbb-animation-duration-5x));
141
141
  }
142
142
 
143
143
  .sbb-flip-card--toggle-button {
@@ -1,4 +1,4 @@
1
- import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
1
+ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
2
  declare const SbbFormFieldElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
3
3
  /**
4
4
  * It wraps an input element adding label, errors, icon, etc.
@@ -24,7 +24,10 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
24
24
  accessor errorSpace: 'none' | 'reserve';
25
25
  /** Indicates whether the input is optional. */
26
26
  accessor optional: boolean;
27
- /** Size variant, either l or m. */
27
+ /**
28
+ * Size variant, either l, m or s.
29
+ * @default 'm' / 's' (lean)
30
+ */
28
31
  accessor size: 'l' | 'm' | 's';
29
32
  /** Whether to display the form field without a border. */
30
33
  accessor borderless: boolean;
@@ -46,7 +49,6 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
46
49
  private accessor _label;
47
50
  /** Returns the input element. */
48
51
  get inputElement(): HTMLInputElement | HTMLSelectElement | HTMLElement | undefined;
49
- private _abort;
50
52
  private _language;
51
53
  /**
52
54
  * Listens to the changes on `readonly` and `disabled` attributes of `<input>`.
@@ -56,8 +58,6 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
56
58
  connectedCallback(): void;
57
59
  protected willUpdate(changedProperties: PropertyValues<this>): void;
58
60
  disconnectedCallback(): void;
59
- private _onPopupOpen;
60
- private _onPopupClose;
61
61
  private _handleWrapperClick;
62
62
  private _isButtonOrPopup;
63
63
  private _onSlotLabelChange;
@@ -84,11 +84,6 @@ export declare class SbbFormFieldElement extends SbbFormFieldElement_base {
84
84
  reset(): void;
85
85
  /** Manually clears the input value. It only works for inputs, selects are not supported. */
86
86
  clear(): void;
87
- /**
88
- * Returns the input element.
89
- * @deprecated Use the 'inputElement' property instead
90
- */
91
- getInputElement(): HTMLInputElement | HTMLSelectElement | HTMLElement | undefined;
92
87
  private _syncNegative;
93
88
  protected render(): TemplateResult;
94
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9F,OAAO,EAAQ,UAAU,EAAW,MAAM,KAAK,CAAC;AAchD,OAAO,eAAe,CAAC;;AASvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA6B;IAEpE,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,mCAAmC;IACnC,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAO;IAEzE,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB;;;OAGG;IACI,eAAe,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS;IAIxF,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field/form-field.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAcb,OAAO,eAAe,CAAC;;AAOvB;;;;;;;;GAQG;AACH,qBAGM,mBAAoB,SAAQ,wBAA+C;IAC/E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAmC;IAEjF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAItC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA2C;IAElF,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAKnD;IAEF,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAQhD;IAEF;;;;OAIG;IACH,SACgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAU;IAExD,+CAA+C;IAC/C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAwB;IAE1F,0DAA0D;IAC1D,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C;;+EAE2E;IAC3E,SAA6C,KAAK,EAAE,SAAS,GAAG,UAAU,CAAa;IAEvF,wFAAwF;IACxF,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,4FAA4F;IAC5F,SAEgB,aAAa,EAAE,OAAO,CAAS;IAE/C,qDAAqD;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAEzD,oEAAoE;IACpE,OAAO,CAAC,6BAA6B,CAAC,CAAgB;IAEtD,8CAA8C;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkE;IAElG,+CAA+C;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAEpD,iCAAiC;IACjC,IAAW,YAAY,IAAI,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAExF;IAED,OAAO,CAAC,SAAS,CAAmC;IAEpD;;OAEG;IACH,OAAO,CAAC,2BAA2B,CAM1B;IAET,OAAO,CAAC,qBAAqB,CAAyB;IAEtC,iBAAiB,IAAI,IAAI;cAMtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQ5D,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,yBAAyB;IA4BjC,OAAO,CAAC,sBAAsB;IAsE9B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,qBAAqB;IAiB7B,qFAAqF;IAC9E,KAAK,IAAI,IAAI;IAIpB,4FAA4F;IACrF,KAAK,IAAI,IAAI;IAQpB,OAAO,CAAC,aAAa;cAMF,MAAM,IAAI,cAAc;CAmC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,gBAAgB,EAAE,mBAAmB,CAAC;KACvC;CACF"}
@@ -34,7 +34,7 @@ const style = css`*,
34
34
  --sbb-button-border-disabled-style: dashed;
35
35
  --sbb-button-border-radius: var(--sbb-border-radius-infinity);
36
36
  --sbb-button-transition-duration: var(
37
- --sbb-disable-animation-zero-time,
37
+ --sbb-disable-animation-duration,
38
38
  var(--sbb-animation-duration-2x)
39
39
  );
40
40
  --sbb-button-transition-easing-function: var(--sbb-animation-easing);
@@ -87,12 +87,12 @@ sbb-icon {
87
87
  --sbb-button-color-disabled-text: var(--sbb-color-smoke);
88
88
  }
89
89
 
90
- :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-form-field-clear {
90
+ :host(:is([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled])) .sbb-form-field-clear {
91
91
  color: var(--sbb-button-color-disabled-text);
92
92
  cursor: default;
93
93
  pointer-events: none;
94
94
  }
95
- :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-form-field-clear::before {
95
+ :host(:is([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled])) .sbb-form-field-clear::before {
96
96
  background-color: var(--sbb-button-color-disabled-background);
97
97
  border: var(--sbb-button-border-disabled-width) var(--sbb-button-border-disabled-style) var(--sbb-button-color-disabled-border);
98
98
  }
@@ -104,17 +104,17 @@ sbb-icon {
104
104
  }
105
105
 
106
106
  @media (any-hover: hover) {
107
- :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
107
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
108
108
  --sbb-button-translate-y-content-hover: -0.0625rem;
109
109
  }
110
110
  }
111
111
  @media (any-hover: hover) {
112
- :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-form-field-clear::before {
112
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-form-field-clear::before {
113
113
  background-color: var(--sbb-button-color-hover-background);
114
114
  }
115
115
  }
116
116
 
117
- :host(:not([disabled], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-form-field-clear::before {
117
+ :host(:not([disabled], :disabled, [disabled-interactive], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-form-field-clear::before {
118
118
  background-color: var(--sbb-button-color-active-background);
119
119
  }`;
120
120
  let SbbFormFieldClearElement = (() => {
@@ -9,9 +9,9 @@ import { __runInitializers, __esDecorate } from "tslib";
9
9
  import { css, LitElement, isServer, html, nothing } from "lit";
10
10
  import { customElement, property, state } from "lit/decorators.js";
11
11
  import { sbbInputModalityDetector } from "../core/a11y.js";
12
- import { SbbConnectedAbortController, SbbLanguageController } from "../core/controllers.js";
12
+ import { SbbLanguageController } from "../core/controllers.js";
13
13
  import { slotState, forceType } from "../core/decorators.js";
14
- import { isFirefox, setOrRemoveAttribute } from "../core/dom.js";
14
+ import { isLean, isFirefox, setOrRemoveAttribute } from "../core/dom.js";
15
15
  import { i18nOptional } from "../core/i18n.js";
16
16
  import { SbbNegativeMixin, SbbHydrationMixin } from "../core/mixins.js";
17
17
  import "../icon.js";
@@ -170,19 +170,19 @@ const style = css`@charset "UTF-8";
170
170
  --sbb-form-field-prefix-color: var(--sbb-color-granite);
171
171
  }
172
172
 
173
- :host(:is([data-input-focused], [data-has-popup-open])) {
173
+ :host(:is([data-input-focused])) {
174
174
  --sbb-form-field-border-color: var(--sbb-color-charcoal);
175
175
  --sbb-form-field-prefix-color: var(--sbb-color-charcoal);
176
176
  --sbb-form-field-border-width: var(--sbb-border-width-2x);
177
177
  }
178
178
  @media (forced-colors: active) {
179
- :host(:is([data-input-focused], [data-has-popup-open])) {
179
+ :host(:is([data-input-focused])) {
180
180
  --sbb-form-field-border-color: Highlight !important;
181
181
  --sbb-form-field-prefix-color: Highlight !important;
182
182
  }
183
183
  }
184
184
 
185
- :host(:is([data-input-focused], [data-has-popup-open])[negative]) {
185
+ :host(:is([data-input-focused])[negative]) {
186
186
  --sbb-form-field-border-color: var(--sbb-color-milk);
187
187
  --sbb-form-field-prefix-color: var(--sbb-color-milk);
188
188
  }
@@ -266,7 +266,7 @@ const style = css`@charset "UTF-8";
266
266
  :host(:is([borderless], [data-input-type=sbb-slider])) .sbb-form-field__wrapper::before {
267
267
  border-color: transparent;
268
268
  }
269
- :host(:is([data-input-focused], [data-has-popup-open], [data-disabled])[borderless]) .sbb-form-field__wrapper::after {
269
+ :host(:is([data-input-focused], [data-disabled])[borderless]) .sbb-form-field__wrapper::after {
270
270
  content: "";
271
271
  position: absolute;
272
272
  border-block-end: var(--sbb-border-width-1x) var(--sbb-form-field-border-style) var(--sbb-form-field-border-color);
@@ -369,7 +369,7 @@ const style = css`@charset "UTF-8";
369
369
  pointer-events: none;
370
370
  backface-visibility: hidden;
371
371
  will-change: transform, font-size;
372
- transition-duration: var(--sbb-disable-animation-zero-time, var(--sbb-animation-duration-2x));
372
+ transition-duration: var(--sbb-disable-animation-duration, var(--sbb-animation-duration-2x));
373
373
  transition-timing-function: var(--sbb-animation-easing);
374
374
  transition-property: transform, font-size;
375
375
  }
@@ -538,7 +538,6 @@ const style = css`@charset "UTF-8";
538
538
  }`;
539
539
  let nextId = 0;
540
540
  let nextFormFieldErrorId = 0;
541
- const supportedPopupTagNames = ["sbb-autocomplete", "sbb-autocomplete-grid", "sbb-select"];
542
541
  const patchedInputs = /* @__PURE__ */ new WeakMap();
543
542
  let SbbFormFieldElement = (() => {
544
543
  var _errorSpace_accessor_storage, _optional_accessor_storage, _size_accessor_storage, _borderless_accessor_storage, _width_accessor_storage, _hiddenLabel_accessor_storage, _floatingLabel_accessor_storage, __errorElements_accessor_storage, __input_accessor_storage, __label_accessor_storage, _a;
@@ -596,7 +595,7 @@ let SbbFormFieldElement = (() => {
596
595
  "sbb-select",
597
596
  "sbb-slider"
598
597
  ];
599
- this._excludedFocusElements = ["button", "sbb-popover"];
598
+ this._excludedFocusElements = ["button", "sbb-popover", "sbb-option"];
600
599
  this._floatingLabelSupportedInputElements = [
601
600
  "input",
602
601
  "select",
@@ -614,7 +613,7 @@ let SbbFormFieldElement = (() => {
614
613
  ];
615
614
  __privateSet(this, _errorSpace_accessor_storage, __runInitializers(this, _errorSpace_initializers, "none"));
616
615
  __privateSet(this, _optional_accessor_storage, (__runInitializers(this, _errorSpace_extraInitializers), __runInitializers(this, _optional_initializers, false)));
617
- __privateSet(this, _size_accessor_storage, (__runInitializers(this, _optional_extraInitializers), __runInitializers(this, _size_initializers, "m")));
616
+ __privateSet(this, _size_accessor_storage, (__runInitializers(this, _optional_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m")));
618
617
  __privateSet(this, _borderless_accessor_storage, (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _borderless_initializers, false)));
619
618
  __privateSet(this, _width_accessor_storage, (__runInitializers(this, _borderless_extraInitializers), __runInitializers(this, _width_initializers, "default")));
620
619
  __privateSet(this, _hiddenLabel_accessor_storage, (__runInitializers(this, _width_extraInitializers), __runInitializers(this, _hiddenLabel_initializers, false)));
@@ -623,8 +622,7 @@ let SbbFormFieldElement = (() => {
623
622
  this._originalInputAriaDescribedby = __runInitializers(this, __errorElements_extraInitializers);
624
623
  __privateSet(this, __input_accessor_storage, __runInitializers(this, __input_initializers, void 0));
625
624
  __privateSet(this, __label_accessor_storage, (__runInitializers(this, __input_extraInitializers), __runInitializers(this, __label_initializers, void 0)));
626
- this._abort = (__runInitializers(this, __label_extraInitializers), new SbbConnectedAbortController(this));
627
- this._language = new SbbLanguageController(this);
625
+ this._language = (__runInitializers(this, __label_extraInitializers), new SbbLanguageController(this));
628
626
  this._formFieldAttributeObserver = !isServer ? new MutationObserver((mutations) => {
629
627
  if (mutations.some((m) => m.type === "attributes")) {
630
628
  this._readInputState();
@@ -650,7 +648,10 @@ let SbbFormFieldElement = (() => {
650
648
  set optional(value) {
651
649
  __privateSet(this, _optional_accessor_storage, value);
652
650
  }
653
- /** Size variant, either l or m. */
651
+ /**
652
+ * Size variant, either l, m or s.
653
+ * @default 'm' / 's' (lean)
654
+ */
654
655
  get size() {
655
656
  return __privateGet(this, _size_accessor_storage);
656
657
  }
@@ -714,9 +715,6 @@ let SbbFormFieldElement = (() => {
714
715
  }
715
716
  connectedCallback() {
716
717
  super.connectedCallback();
717
- const signal = this._abort.signal;
718
- this.addEventListener("willOpen", (e) => this._onPopupOpen(e), { signal });
719
- this.addEventListener("didClose", (e) => this._onPopupClose(e), { signal });
720
718
  this._registerInputListener();
721
719
  this._syncNegative();
722
720
  }
@@ -735,22 +733,12 @@ let SbbFormFieldElement = (() => {
735
733
  this._unpatchInputValue();
736
734
  }
737
735
  }
738
- _onPopupOpen({ target }) {
739
- if (supportedPopupTagNames.includes(target.localName)) {
740
- this.toggleAttribute("data-has-popup-open", true);
741
- }
742
- }
743
- _onPopupClose({ target }) {
744
- if (supportedPopupTagNames.includes(target.localName)) {
745
- this.removeAttribute("data-has-popup-open");
746
- }
747
- }
748
736
  _handleWrapperClick(event) {
749
737
  var _a2, _b;
750
738
  if (this._isButtonOrPopup(event)) {
751
739
  return;
752
740
  }
753
- if (((_a2 = this._input) == null ? void 0 : _a2.localName) === "sbb-select") {
741
+ if (((_a2 = this._input) == null ? void 0 : _a2.localName) === "sbb-select" && event.target.localName !== "sbb-select") {
754
742
  this._input.click();
755
743
  this._input.focus();
756
744
  } else if (event.target.localName !== "label") {
@@ -758,7 +746,7 @@ let SbbFormFieldElement = (() => {
758
746
  }
759
747
  }
760
748
  _isButtonOrPopup(event) {
761
- return event.composedPath().some((el) => el instanceof window.HTMLElement && el.getAttribute("role") === "button" || this._excludedFocusElements.includes(el.localName));
749
+ return event.composedPath().some((el) => el instanceof window.HTMLElement && el.getAttribute("tabindex") === "0" || this._excludedFocusElements.includes(el.localName));
762
750
  }
763
751
  _onSlotLabelChange() {
764
752
  const labels = Array.from(this.querySelectorAll("label"));
@@ -792,7 +780,7 @@ let SbbFormFieldElement = (() => {
792
780
  (_a2 = this._formFieldAttributeObserver) == null ? void 0 : _a2.disconnect();
793
781
  (_b = this._formFieldAttributeObserver) == null ? void 0 : _b.observe(this._input, {
794
782
  attributes: true,
795
- attributeFilter: ["readonly", "disabled", "class", "data-sbb-invalid"]
783
+ attributeFilter: ["readonly", "disabled", "class", "data-sbb-invalid", "data-state"]
796
784
  });
797
785
  this.setAttribute("data-input-type", this._input.localName);
798
786
  this._syncLabelInputReferences();
@@ -839,15 +827,25 @@ let SbbFormFieldElement = (() => {
839
827
  this._input.addEventListener("stateChange", () => this._checkAndUpdateInputEmpty(), {
840
828
  signal: this._inputAbortController.signal
841
829
  });
842
- inputFocusElement = this._input.inputElement;
830
+ const selectInput = this._input;
831
+ inputFocusElement = selectInput.inputElement;
832
+ if (!inputFocusElement) {
833
+ const controller = {
834
+ hostUpdated: () => {
835
+ selectInput.removeController(controller);
836
+ this._registerInputListener();
837
+ }
838
+ };
839
+ selectInput.addController(controller);
840
+ }
843
841
  }
844
- inputFocusElement.addEventListener("focusin", () => {
842
+ inputFocusElement == null ? void 0 : inputFocusElement.addEventListener("focusin", () => {
845
843
  this.toggleAttribute("data-input-focused", true);
846
844
  this.setAttribute("data-focus-origin", sbbInputModalityDetector.mostRecentModality ?? "");
847
845
  }, {
848
846
  signal: this._inputAbortController.signal
849
847
  });
850
- inputFocusElement.addEventListener("focusout", () => ["data-focus-origin", "data-input-focused"].forEach((name) => this.removeAttribute(name)), {
848
+ inputFocusElement == null ? void 0 : inputFocusElement.addEventListener("focusout", () => ["data-focus-origin", "data-input-focused"].forEach((name) => this.removeAttribute(name)), {
851
849
  signal: this._inputAbortController.signal
852
850
  });
853
851
  }
@@ -919,6 +917,7 @@ let SbbFormFieldElement = (() => {
919
917
  this.toggleAttribute("data-readonly", this._input.hasAttribute("readonly"));
920
918
  this.toggleAttribute("data-disabled", this._input.hasAttribute("disabled"));
921
919
  this.toggleAttribute("data-invalid", this._input.hasAttribute("data-sbb-invalid") || this._input.classList.contains("sbb-invalid") || this._input.classList.contains("ng-touched") && this._input.classList.contains("ng-invalid"));
920
+ this.toggleAttribute("data-has-popup-open", this._input.localName === "sbb-select" && ["opening", "opened"].includes(this._input.getAttribute("data-state")));
922
921
  }
923
922
  /**
924
923
  * It is used internally to set the aria-describedby attribute for the slotted input referencing available <sbb-form-error> instances.
@@ -966,13 +965,6 @@ let SbbFormFieldElement = (() => {
966
965
  this._input.value = "";
967
966
  this._checkAndUpdateInputEmpty();
968
967
  }
969
- /**
970
- * Returns the input element.
971
- * @deprecated Use the 'inputElement' property instead
972
- */
973
- getInputElement() {
974
- return this._input;
975
- }
976
968
  _syncNegative() {
977
969
  var _a2;
978
970
  (_a2 = this.querySelectorAll) == null ? void 0 : _a2.call(this, "sbb-form-error,sbb-mini-button,sbb-popover-trigger,sbb-form-field-clear,sbb-datepicker-next-day,sbb-datepicker-previous-day,sbb-datepicker-toggle,sbb-select,sbb-autocomplete,sbb-autocomplete-grid").forEach((element) => element.toggleAttribute("negative", this.negative));
@@ -1061,4 +1053,4 @@ let SbbFormFieldElement = (() => {
1061
1053
  export {
1062
1054
  SbbFormFieldElement
1063
1055
  };
1064
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIGlzU2VydmVyLCB0eXBlIFByb3BlcnR5VmFsdWVzLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYklucHV0TW9kYWxpdHkgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIHNsb3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0ZpcmVmb3gsIHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bk9wdGlvbmFsIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWxlY3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24uanMnO1xuXG5sZXQgbmV4dElkID0gMDtcbmxldCBuZXh0Rm9ybUZpZWxkRXJyb3JJZCA9IDA7XG5cbmNvbnN0IHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMgPSBbJ3NiYi1hdXRvY29tcGxldGUnLCAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkJywgJ3NiYi1zZWxlY3QnXTtcblxuY29uc3QgcGF0Y2hlZElucHV0cyA9IG5ldyBXZWFrTWFwPEhUTUxJbnB1dEVsZW1lbnQsIFByb3BlcnR5RGVzY3JpcHRvcj4oKTtcblxuLyoqXG4gKiBJdCB3cmFwcyBhbiBpbnB1dCBlbGVtZW50IGFkZGluZyBsYWJlbCwgZXJyb3JzLCBpY29uLCBldGMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpbnB1dC9zZWxlY3Qgb3IgYSBzdXBwb3J0ZWQgbm9uLW5hdGl2ZSBlbGVtZW50LlxuICogQHNsb3QgbGFiZWwgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhIGxhYmVsLlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3QgZXJyb3IgLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBlcnJvci5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5jbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzID0gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXTtcbiAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgZWxlbWVudCBzZWxlY3RvcnMgaW4gdW5uYW1lZCBzbG90XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZElucHV0RWxlbWVudHMgPSBbXG4gICAgLi4udGhpcy5fc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gICAgJ3NiYi1zbGlkZXInLFxuICBdO1xuICAvLyBMaXN0IG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBmb2N1cyBpbnB1dCBvbiBjbGlja1xuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlZEZvY3VzRWxlbWVudHMgPSBbJ2J1dHRvbicsICdzYmItcG9wb3ZlciddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBgbm9uZWAgZG9lcyBub3QgcmVzZXJ2ZSBhbnkgc3BhY2UuXG4gICAqIGByZXNlcnZlYCBkb2VzIHJlc2VydmUgb25lIHJvdyBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Vycm9yLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXJyb3JTcGFjZTogJ25vbmUnIHwgJ3Jlc2VydmUnID0gJ25vbmUnO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgaXMgb3B0aW9uYWwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9ICdtJztcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBib3JkZXJsZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRkZW4tbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZmxvYXQuIElmIGFjdGl2YXRlZCwgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBpbnB1dCBpcyBoaWRkZW4uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZsb2F0aW5nTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0ITogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbGFiZWwhOiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3VucGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25Qb3B1cE9wZW4oeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBDbG9zZSh7IHRhcmdldCB9OiBDdXN0b21FdmVudDx2b2lkPik6IHZvaWQge1xuICAgIGlmIChzdXBwb3J0ZWRQb3B1cFRhZ05hbWVzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWhhcy1wb3B1cC1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlV3JhcHBlckNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0J1dHRvbk9yUG9wdXAoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgdGhpcy5faW5wdXQuY2xpY2soKTtcbiAgICAgIHRoaXMuX2lucHV0LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ2xhYmVsJykge1xuICAgICAgdGhpcy5faW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNCdXR0b25PclBvcHVwKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuc29tZShcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIChlbCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJiBlbC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2J1dHRvbicpIHx8XG4gICAgICAgICAgdGhpcy5fZXhjbHVkZWRGb2N1c0VsZW1lbnRzLmluY2x1ZGVzKChlbCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9vblNsb3RMYWJlbENoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbHMgPSBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWwnKSk7XG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgbGFiZWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYERldGVjdGVkIG1vcmUgdGhhbiBvbmUgbGFiZWwgaW4gc2JiLWZvcm0tZmllbGQjJHt0aGlzLmlkfS4gT25seSBvbmUgbGFiZWwgaXMgc3VwcG9ydGVkLmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9sYWJlbCA9IGxhYmVsc1swXTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gYXNzaWduIHRoZSBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YCB0byBgX2lkYCBhbmQgYF9pbnB1dGAgYW5kIHRvIG9ic2VydmUgdGhlIG5hdGl2ZSByZWFkb25seSBhbmQgZGlzYWJsZWQgYXR0cmlidXRlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdElucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0lucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpXG4gICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAuZmluZCgoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gdGhpcy5fc3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyhlLmxvY2FsTmFtZSkpO1xuICAgIHRoaXMuX2Fzc2lnblNsb3RzKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQgJiYgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnaW5wdXQnICYmIG5ld0lucHV0ICE9PSB0aGlzLl9pbnB1dCkge1xuICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dCA9IG5ld0lucHV0O1xuXG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkgPSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICB0aGlzLl9hcHBseUFyaWFEZXNjcmliZWRieSgpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnY2xhc3MnLCAnZGF0YS1zYmItaW52YWxpZCddLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLWlucHV0LXR5cGUnLCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUpO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQgfHwgIXRoaXMuX2xhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSkge1xuICAgICAgLy8gRm9yIG5hdGl2ZSBpbnB1dCBlbGVtZW50cyB3ZSB1c2UgdGhlIGBmb3JgIGF0dHJpYnV0ZSBvbiB0aGUgbGFiZWwgdG8gcmVmZXJlbmNlIHRoZSBpbnB1dFxuICAgICAgLy8gdmlhIGlkIHJlZmVyZW5jZS5cbiAgICAgIGlmICghdGhpcy5faW5wdXQuaWQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuaWQgPSBgc2JiLWZvcm0tZmllbGQtaW5wdXQtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgaWYgKCF0aGlzLl9sYWJlbC5pZCkge1xuICAgICAgICB0aGlzLl9sYWJlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIHRoaXMuX2dldElucHV0Rm9ybSgpPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBsZXQgaW5wdXRGb2N1c0VsZW1lbnQgPSB0aGlzLl9pbnB1dDtcblxuICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhdGNoIHRoZSB2YWx1ZSBwcm9wZXJ0eSBvZiB0aGUgSFRNTElucHV0RWxlbWVudCBpbiBvcmRlclxuICAvLyB0byBiZSBhYmxlIHRvIHJlc2V0IHRoZSBmbG9hdGluZyBsYWJlbCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gIHByaXZhdGUgX3BhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXRFbGVtZW50KSxcbiAgICAgICd2YWx1ZScsXG4gICAgKTtcblxuICAgIGlmICghb3JpZ2luYWxEZXNjcmlwdG9yIHx8ICFvcmlnaW5hbERlc2NyaXB0b3Iuc2V0IHx8ICFvcmlnaW5hbERlc2NyaXB0b3IuZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGF0Y2hlZElucHV0cy5zZXQoaW5wdXRFbGVtZW50LCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuXG4gICAgY29uc3QgeyBnZXQ6IGdldHRlciwgc2V0OiBzZXR0ZXIgfSA9IG9yaWdpbmFsRGVzY3JpcHRvcjtcbiAgICBjb25zdCBjaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkgPSAoKTogdm9pZCA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dEVsZW1lbnQsICd2YWx1ZScsIHtcbiAgICAgIC4uLm9yaWdpbmFsRGVzY3JpcHRvcixcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldHRlci5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBzZXR0ZXIuY2FsbCh0aGlzLCBuZXdWYWx1ZSk7XG4gICAgICAgIGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VucGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gcGF0Y2hlZElucHV0cy5nZXQoaW5wdXRFbGVtZW50KTtcbiAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuICAgICAgcGF0Y2hlZElucHV0cy5kZWxldGUoaW5wdXRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
1056
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYklucHV0TW9kYWxpdHkgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlLCBzbG90U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNGaXJlZm94LCBpc0xlYW4sIHNldE9yUmVtb3ZlQXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgaTE4bk9wdGlvbmFsIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTZWxlY3RFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2VsZWN0LmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZm9ybS1maWVsZC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2ljb24uanMnO1xuXG5sZXQgbmV4dElkID0gMDtcbmxldCBuZXh0Rm9ybUZpZWxkRXJyb3JJZCA9IDA7XG5cbmNvbnN0IHBhdGNoZWRJbnB1dHMgPSBuZXcgV2Vha01hcDxIVE1MSW5wdXRFbGVtZW50LCBQcm9wZXJ0eURlc2NyaXB0b3I+KCk7XG5cbi8qKlxuICogSXQgd3JhcHMgYW4gaW5wdXQgZWxlbWVudCBhZGRpbmcgbGFiZWwsIGVycm9ycywgaWNvbiwgZXRjLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaW5wdXQvc2VsZWN0IG9yIGEgc3VwcG9ydGVkIG5vbi1uYXRpdmUgZWxlbWVudC5cbiAqIEBzbG90IGxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYSBsYWJlbC5cbiAqIEBzbG90IHByZWZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBzdWZmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IGVycm9yIC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gZXJyb3IuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1mb3JtLWZpZWxkJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAnc2VsZWN0JywgJ3RleHRhcmVhJ107XG4gIC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGVsZW1lbnQgc2VsZWN0b3JzIGluIHVubmFtZWQgc2xvdFxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgIC4uLnRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICdzYmItc2xpZGVyJyxcbiAgXTtcbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInLCAnc2JiLW9wdGlvbiddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBgbm9uZWAgZG9lcyBub3QgcmVzZXJ2ZSBhbnkgc3BhY2UuXG4gICAqIGByZXNlcnZlYCBkb2VzIHJlc2VydmUgb25lIHJvdyBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Vycm9yLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXJyb3JTcGFjZTogJ25vbmUnIHwgJ3Jlc2VydmUnID0gJ25vbmUnO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5wdXQgaXMgb3B0aW9uYWwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcHRpb25hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsLCBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdsJyB8ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIGZvcm0gZmllbGQgd2l0aG91dCBhIGJvcmRlci4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudDpcbiAgICogLSBgZGVmYXVsdGA6IHRoZSBjb21wb25lbnQgaGFzIGRlZmluZWQgd2lkdGggYW5kIG1pbi13aWR0aDtcbiAgICogLSBgY29sbGFwc2VgOiB0aGUgY29tcG9uZW50IGFkYXB0cyBpdHNlbGYgdG8gaXRzIGlubmVyIGlucHV0IGNvbnRlbnQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHdpZHRoOiAnZGVmYXVsdCcgfCAnY29sbGFwc2UnID0gJ2RlZmF1bHQnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHZpc3VhbGx5IGhpZGUgdGhlIGxhYmVsLiBJZiBoaWRkZW4sIHNjcmVlbiByZWFkZXJzIHdpbGwgc3RpbGwgcmVhZCBpdC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGRlbkxhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Zsb2F0aW5nLWxhYmVsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZmxvYXRpbmdMYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgZXJyb3JgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Vycm9yRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gIC8qKiBPcmlnaW5hbCBhcmlhLWRlc2NyaWJlZGJ5IHZhbHVlIG9mIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIHByaXZhdGUgX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnk/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaW5wdXQhOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGxhYmVsIGVsZW1lbnRzLiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9sYWJlbCE6IEhUTUxMYWJlbEVsZW1lbnQ7XG5cbiAgLyoqIFJldHVybnMgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBpZiAodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSA9PT0gJ2lucHV0Jykge1xuICAgICAgdGhpcy5fdW5wYXRjaElucHV0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVXcmFwcGVyQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzQnV0dG9uT3JQb3B1cChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcgJiZcbiAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ3NiYi1zZWxlY3QnXG4gICAgKSB7XG4gICAgICB0aGlzLl9pbnB1dC5jbGljaygpO1xuICAgICAgdGhpcy5faW5wdXQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKChldmVudC50YXJnZXQgYXMgRWxlbWVudCkubG9jYWxOYW1lICE9PSAnbGFiZWwnKSB7XG4gICAgICB0aGlzLl9pbnB1dD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0J1dHRvbk9yUG9wdXAoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGV2ZW50XG4gICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgIC5zb21lKFxuICAgICAgICAoZWwpID0+XG4gICAgICAgICAgKGVsIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50ICYmIGVsLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gJzAnKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJbnB1dCA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgLmZpbmQoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IHRoaXMuX3N1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXMoZS5sb2NhbE5hbWUpKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuXG4gICAgaWYgKHRoaXMuX2lucHV0ICYmIHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ2lucHV0JyAmJiBuZXdJbnB1dCAhPT0gdGhpcy5faW5wdXQpIHtcbiAgICAgIHRoaXMuX3VucGF0Y2hJbnB1dFZhbHVlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQgPSBuZXdJbnB1dDtcblxuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5ID0gdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgdGhpcy5fYXBwbHlBcmlhRGVzY3JpYmVkYnkoKTtcbiAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuXG4gICAgaWYgKHRoaXMuX2lucHV0LmxvY2FsTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdyb3dzJywgdGhpcy5faW5wdXQuZ2V0QXR0cmlidXRlKCdyb3dzJykgfHwgJzMnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMuX2lucHV0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ2RhdGEtc2JiLWludmFsaWQnLCAnZGF0YS1zdGF0ZSddLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLWlucHV0LXR5cGUnLCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUpO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQgfHwgIXRoaXMuX2xhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSkge1xuICAgICAgLy8gRm9yIG5hdGl2ZSBpbnB1dCBlbGVtZW50cyB3ZSB1c2UgdGhlIGBmb3JgIGF0dHJpYnV0ZSBvbiB0aGUgbGFiZWwgdG8gcmVmZXJlbmNlIHRoZSBpbnB1dFxuICAgICAgLy8gdmlhIGlkIHJlZmVyZW5jZS5cbiAgICAgIGlmICghdGhpcy5faW5wdXQuaWQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuaWQgPSBgc2JiLWZvcm0tZmllbGQtaW5wdXQtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgaWYgKCF0aGlzLl9sYWJlbC5pZCkge1xuICAgICAgICB0aGlzLl9sYWJlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIHRoaXMuX2dldElucHV0Rm9ybSgpPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBsZXQgaW5wdXRGb2N1c0VsZW1lbnQgPSB0aGlzLl9pbnB1dDtcblxuICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHRoaXMuX3BhdGNoSW5wdXRWYWx1ZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc2VsZWN0SW5wdXQgPSB0aGlzLl9pbnB1dCBhcyBTYmJTZWxlY3RFbGVtZW50O1xuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSBzZWxlY3RJbnB1dC5pbnB1dEVsZW1lbnQ7XG5cbiAgICAgIC8vIElmIGlucHV0RWxlbWVudCBpcyBub3QgeWV0IHJlYWR5LCB0cnkgYSBzZWNvbmQgdGltZSBhZnRlciB1cGRhdGluZy5cbiAgICAgIGlmICghaW5wdXRGb2N1c0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IHtcbiAgICAgICAgICBob3N0VXBkYXRlZDogKCkgPT4ge1xuICAgICAgICAgICAgc2VsZWN0SW5wdXQucmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgc2VsZWN0SW5wdXQuYWRkQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dEZvY3VzRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c2luJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaW5wdXQtZm9jdXNlZCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnZGF0YS1mb2N1cy1vcmlnaW4nLFxuICAgICAgICAgIChzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5IGFzIFNiYklucHV0TW9kYWxpdHkpID8/ICcnLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpbnB1dEZvY3VzRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhdGNoIHRoZSB2YWx1ZSBwcm9wZXJ0eSBvZiB0aGUgSFRNTElucHV0RWxlbWVudCBpbiBvcmRlclxuICAvLyB0byBiZSBhYmxlIHRvIHJlc2V0IHRoZSBmbG9hdGluZyBsYWJlbCBpbiB0aGUgZW1wdHkgc3RhdGUuXG4gIHByaXZhdGUgX3BhdGNoSW5wdXRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLl9pbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXRFbGVtZW50KSxcbiAgICAgICd2YWx1ZScsXG4gICAgKTtcblxuICAgIGlmICghb3JpZ2luYWxEZXNjcmlwdG9yIHx8ICFvcmlnaW5hbERlc2NyaXB0b3Iuc2V0IHx8ICFvcmlnaW5hbERlc2NyaXB0b3IuZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcGF0Y2hlZElucHV0cy5zZXQoaW5wdXRFbGVtZW50LCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuXG4gICAgY29uc3QgeyBnZXQ6IGdldHRlciwgc2V0OiBzZXR0ZXIgfSA9IG9yaWdpbmFsRGVzY3JpcHRvcjtcbiAgICBjb25zdCBjaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkgPSAoKTogdm9pZCA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnB1dEVsZW1lbnQsICd2YWx1ZScsIHtcbiAgICAgIC4uLm9yaWdpbmFsRGVzY3JpcHRvcixcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGdldHRlci5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBzZXR0ZXIuY2FsbCh0aGlzLCBuZXdWYWx1ZSk7XG4gICAgICAgIGNoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VucGF0Y2hJbnB1dFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuX2lucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3Qgb3JpZ2luYWxEZXNjcmlwdG9yID0gcGF0Y2hlZElucHV0cy5nZXQoaW5wdXRFbGVtZW50KTtcbiAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5wdXRFbGVtZW50LCAndmFsdWUnLCBvcmlnaW5hbERlc2NyaXB0b3IpO1xuICAgICAgcGF0Y2hlZElucHV0cy5kZWxldGUoaW5wdXRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtaGFzLXBvcHVwLW9wZW4nLFxuICAgICAgdGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcgJiZcbiAgICAgICAgWydvcGVuaW5nJywgJ29wZW5lZCddLmluY2x1ZGVzKHRoaXMuX2lucHV0IS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSEpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWZvcm0tZXJyb3I+IGluc3RhbmNlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdEVycm9yQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2Vycm9yRWxlbWVudHMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpO1xuXG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLl9lcnJvckVsZW1lbnRzKSB7XG4gICAgICAvLyBBbHRob3VnaCBhIGZvcm0gZXJyb3IgYXNzaWducyBhbiBpZCBpdHNlbGYsIHdlIG5lZWQgdG8gYmUgZWFybGllciBieSBjcmVhdGluZyBvbmUgaGVyZVxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1lcnJvci0keysrbmV4dEZvcm1GaWVsZEVycm9ySWR9YDtcbiAgICAgIH1cbiAgICAgIGlmICghZWwucm9sZSkge1xuICAgICAgICAvLyBJbnN0ZWFkIG9mIGRlZmluaW5nIGEgY29udGFpbmVyIHdpdGggYW4gYXJpYS1saXZlIHJlZ2lvbiBhcyBleHBlY3RlZCwgd2UgaGFkIHRvIGNoYW5nZVxuICAgICAgICAvLyBzZXR0aW5nIGl0IGZvciBldmVyeSBzbG90dGVkIGVsZW1lbnQgdG8gcHJvcGVybHkgd29yayBpbiBhbGwgYnJvd3NlcnMgYW5kIHNjcmVlbiByZWFkZXIgY29tYmluYXRpb25zLlxuICAgICAgICBlbC5yb2xlID0gJ3N0YXR1cyc7XG4gICAgICAgIGlmIChpc0ZpcmVmb3gpIHtcbiAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnc3RhdHVzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYXBwbHlBcmlhRGVzY3JpYmVkYnkoKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtZXJyb3InLCAhIXRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fZXJyb3JFbGVtZW50cy5mb3JFYWNoKChlKSA9PiBpZHMucHVzaChlLmlkKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXJpYURlc2NyaWJlZGJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMuX2lucHV0LCAnYXJpYS1kZXNjcmliZWRieScsIGFyaWFEZXNjcmliZWRieSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIE1hbnVhbGx5IHJlc2V0IHRoZSBmb3JtIGZpZWxkLiBDdXJyZW50bHksIHRoaXMgb25seSByZXNldHMgdGhlIGZsb2F0aW5nIGxhYmVsLiAqL1xuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gIH1cblxuICAvKiogTWFudWFsbHkgY2xlYXJzIHRoZSBpbnB1dCB2YWx1ZS4gSXQgb25seSB3b3JrcyBmb3IgaW5wdXRzLCBzZWxlY3RzIGFyZSBub3Qgc3VwcG9ydGVkLiAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgIT09ICdpbnB1dCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZSA9ICcnO1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY05lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKFxuICAgICAgJ3NiYi1mb3JtLWVycm9yLHNiYi1taW5pLWJ1dHRvbixzYmItcG9wb3Zlci10cmlnZ2VyLHNiYi1mb3JtLWZpZWxkLWNsZWFyLHNiYi1kYXRlcGlja2VyLW5leHQtZGF5LHNiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSxzYmItZGF0ZXBpY2tlci10b2dnbGUsc2JiLXNlbGVjdCxzYmItYXV0b2NvbXBsZXRlLHNiYi1hdXRvY29tcGxldGUtZ3JpZCcsXG4gICAgKS5mb3JFYWNoKChlbGVtZW50KSA9PiBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc3BhY2Utd3JhcHBlclwiPlxuICAgICAgICAkey8qIFF1ZXJpZWQgYnkgaWQgZnJvbSB0aGUgYXV0b2NvbXBsZXRlL3NlbGVjdCB0byBiZSB1c2VkIGFzIHRoZSBhbmNob3IgZWxlbWVudCAqLyAnJ31cbiAgICAgICAgPGRpdiBAY2xpY2s9JHt0aGlzLl9oYW5kbGVXcmFwcGVyQ2xpY2t9IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3dyYXBwZXJcIiBpZD1cIm92ZXJsYXktYW5jaG9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInByZWZpeFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fc3luY05lZ2F0aXZlfT48L3Nsb3Q+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2xhYmVsLXNwYWNlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2xhYmVsXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2xhYmVsLWVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImxhYmVsXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RMYWJlbENoYW5nZX0+PC9zbG90PlxuICAgICAgICAgICAgICAgICR7dGhpcy5vcHRpb25hbFxuICAgICAgICAgICAgICAgICAgPyBodG1sYCA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4gJHtpMThuT3B0aW9uYWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19IDwvc3Bhbj5gXG4gICAgICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXRcIj5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RJbnB1dENoYW5nZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke1snc2VsZWN0JywgJ3NiYi1zZWxlY3QnXS5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvblxuICAgICAgICAgICAgICAgICAgbmFtZT1cImNoZXZyb24tc21hbGwtZG93bi1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zZWxlY3QtaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgPjwvc2JiLWljb24+YFxuICAgICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN1ZmZpeFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fc3luY05lZ2F0aXZlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fZXJyb3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdEVycm9yQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWZvcm0tZmllbGQnOiBTYmJGb3JtRmllbGRFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsSUFBSSxTQUFTO0FBQ2IsSUFBSSx1QkFBdUI7QUFFM0IsTUFBTSxvQ0FBb0I7SUFjcEIsdUJBQW1CLE1BQUE7O0FBRnhCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLGdCQUFnQixHQUM5QixXQUFXOzs7O0FBQ3NC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
@@ -25,7 +25,7 @@ const style = css`*,
25
25
  --sbb-header-action-min-height: var(--sbb-size-element-s);
26
26
  --sbb-header-action-min-width: var(--sbb-header-action-min-height);
27
27
  --sbb-header-action-transition-duration: var(
28
- --sbb-disable-animation-zero-time,
28
+ --sbb-disable-animation-duration,
29
29
  var(--sbb-animation-duration-2x)
30
30
  );
31
31
  --sbb-header-action-transition-easing: var(--sbb-animation-easing);
@@ -83,7 +83,7 @@ const style = css`*,
83
83
  }
84
84
 
85
85
  @media (forced-colors: active) {
86
- :host([role=button]) {
86
+ :host([data-button]) {
87
87
  --sbb-header-action-color: ButtonText;
88
88
  }
89
89
  }