@ardium-ui/ui 2.3.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/esm2022/lib/_internal/boolean-component.mjs +3 -2
  2. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +9 -6
  3. package/esm2022/lib/_internal/disablable-component.mjs +13 -8
  4. package/esm2022/lib/_internal/focusable-component.mjs +11 -4
  5. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +30 -23
  6. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +4 -5
  7. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +7 -8
  8. package/esm2022/lib/_internal/models/pagination.model.mjs +3 -3
  9. package/esm2022/lib/_internal/models/queue.mjs +59 -0
  10. package/esm2022/lib/_internal/ngmodel-component.mjs +4 -3
  11. package/esm2022/lib/_internal/selectable-list-component.mjs +31 -42
  12. package/esm2022/lib/badge/badge.defaults.mjs +20 -0
  13. package/esm2022/lib/badge/badge.directive.mjs +18 -15
  14. package/esm2022/lib/badge/index.mjs +3 -2
  15. package/esm2022/lib/buttons/_button-base.defaults.mjs +16 -0
  16. package/esm2022/lib/buttons/_button-base.mjs +12 -12
  17. package/esm2022/lib/buttons/button/button.component.mjs +15 -15
  18. package/esm2022/lib/buttons/button/button.defaults.mjs +17 -0
  19. package/esm2022/lib/buttons/button/index.mjs +3 -2
  20. package/esm2022/lib/buttons/fab/fab.component.mjs +16 -15
  21. package/esm2022/lib/buttons/fab/fab.defaults.mjs +17 -0
  22. package/esm2022/lib/buttons/fab/index.mjs +3 -2
  23. package/esm2022/lib/buttons/general-button.types.mjs +2 -2
  24. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +16 -13
  25. package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +9 -0
  26. package/esm2022/lib/buttons/icon-button/index.mjs +3 -2
  27. package/esm2022/lib/card/card.children.mjs +15 -15
  28. package/esm2022/lib/card/card.component.mjs +6 -5
  29. package/esm2022/lib/card/card.defaults.mjs +17 -0
  30. package/esm2022/lib/card/index.mjs +4 -3
  31. package/esm2022/lib/checkbox/checkbox.component.mjs +16 -19
  32. package/esm2022/lib/checkbox/checkbox.defaults.mjs +17 -0
  33. package/esm2022/lib/checkbox/index.mjs +3 -2
  34. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +19 -21
  35. package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +25 -0
  36. package/esm2022/lib/checkbox-list/index.mjs +3 -2
  37. package/esm2022/lib/chip/chip.component.mjs +17 -16
  38. package/esm2022/lib/chip/chip.defaults.mjs +20 -0
  39. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +18 -20
  40. package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +17 -0
  41. package/esm2022/lib/chip/index.mjs +5 -2
  42. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +21 -21
  43. package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +18 -0
  44. package/esm2022/lib/color/color-display/color-display.component.mjs +13 -12
  45. package/esm2022/lib/color/color-display/color-display.defaults.mjs +16 -0
  46. package/esm2022/lib/color/color-display/index.mjs +3 -2
  47. package/esm2022/lib/dialog/dialog.component.mjs +23 -22
  48. package/esm2022/lib/dialog/dialog.defaults.mjs +24 -0
  49. package/esm2022/lib/dialog/dialog.types.mjs +1 -1
  50. package/esm2022/lib/dialog/index.mjs +4 -3
  51. package/esm2022/lib/divider/divider.component.mjs +10 -12
  52. package/esm2022/lib/divider/divider.defaults.mjs +13 -0
  53. package/esm2022/lib/divider/index.mjs +3 -2
  54. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +10 -9
  55. package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +17 -0
  56. package/esm2022/lib/dropdown-panel/index.mjs +3 -2
  57. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +14 -12
  58. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +18 -0
  59. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +1 -1
  60. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +3 -2
  61. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +23 -25
  62. package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +23 -0
  63. package/esm2022/lib/file-inputs/file-input/index.mjs +3 -2
  64. package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +8 -0
  65. package/esm2022/lib/file-inputs/file-input-base.mjs +2 -2
  66. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +12 -8
  67. package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +18 -0
  68. package/esm2022/lib/form-field-frame/index.mjs +3 -2
  69. package/esm2022/lib/icon/icon.component.mjs +6 -4
  70. package/esm2022/lib/icon/icon.defaults.mjs +17 -0
  71. package/esm2022/lib/icon/index.mjs +3 -2
  72. package/esm2022/lib/inputs/_simple-input-base.mjs +159 -0
  73. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +17 -15
  74. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +21 -0
  75. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
  76. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  77. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  78. package/esm2022/lib/inputs/digit-input/index.mjs +3 -2
  79. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +24 -23
  80. package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +26 -0
  81. package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +97 -0
  82. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +1 -1
  83. package/esm2022/lib/inputs/hex-input/index.mjs +3 -2
  84. package/esm2022/lib/inputs/input/index.mjs +1 -1
  85. package/esm2022/lib/inputs/input/input.component.mjs +28 -48
  86. package/esm2022/lib/inputs/input/input.defaults.mjs +17 -0
  87. package/esm2022/lib/inputs/input/input.directives.mjs +1 -1
  88. package/esm2022/lib/inputs/input/input.module.mjs +1 -1
  89. package/esm2022/lib/inputs/input-transformers.mjs +1 -1
  90. package/esm2022/lib/inputs/input-utils.mjs +1 -1
  91. package/esm2022/lib/inputs/number-input/index.mjs +3 -2
  92. package/esm2022/lib/inputs/number-input/number-input.component.mjs +34 -30
  93. package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +27 -0
  94. package/esm2022/lib/inputs/password-input/index.mjs +3 -2
  95. package/esm2022/lib/inputs/password-input/password-input.component.mjs +23 -18
  96. package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +24 -0
  97. package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
  98. package/esm2022/lib/inputs/simple-input/index.mjs +3 -2
  99. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +15 -145
  100. package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +25 -0
  101. package/esm2022/lib/kbd/index.mjs +2 -1
  102. package/esm2022/lib/kbd/kbd.component.mjs +6 -4
  103. package/esm2022/lib/kbd/kbd.defaults.mjs +15 -0
  104. package/esm2022/lib/kbd/kbd.directive.mjs +1 -1
  105. package/esm2022/lib/kbd/kbd.pipe.mjs +7 -3
  106. package/esm2022/lib/kbd-shortcut/index.mjs +3 -2
  107. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +12 -7
  108. package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +8 -0
  109. package/esm2022/lib/modal/index.mjs +3 -2
  110. package/esm2022/lib/modal/modal.component.mjs +14 -11
  111. package/esm2022/lib/modal/modal.defaults.mjs +20 -0
  112. package/esm2022/lib/option/index.mjs +1 -1
  113. package/esm2022/lib/option/option.component.mjs +1 -1
  114. package/esm2022/lib/progress-bar/index.mjs +4 -3
  115. package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -18
  116. package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +21 -0
  117. package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
  118. package/esm2022/lib/progress-circle/index.mjs +4 -3
  119. package/esm2022/lib/progress-circle/progress-circle.component.mjs +18 -22
  120. package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +21 -0
  121. package/esm2022/lib/progress-circle/progress-circle.module.mjs +4 -4
  122. package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
  123. package/esm2022/lib/radio/index.mjs +4 -3
  124. package/esm2022/lib/radio/radio/radio.component.mjs +13 -10
  125. package/esm2022/lib/radio/radio/radio.defaults.mjs +16 -0
  126. package/esm2022/lib/radio/radio-group.component.mjs +7 -7
  127. package/esm2022/lib/search-functions.mjs +2 -2
  128. package/esm2022/lib/segment/index.mjs +3 -2
  129. package/esm2022/lib/segment/segment.component.mjs +22 -21
  130. package/esm2022/lib/segment/segment.defaults.mjs +26 -0
  131. package/esm2022/lib/segment/segment.directives.mjs +1 -1
  132. package/esm2022/lib/select/index.mjs +3 -2
  133. package/esm2022/lib/select/select.component.mjs +76 -101
  134. package/esm2022/lib/select/select.defaults.mjs +53 -0
  135. package/esm2022/lib/select/select.directive.mjs +1 -1
  136. package/esm2022/lib/select/select.types.mjs +1 -1
  137. package/esm2022/lib/slide-toggle/index.mjs +2 -1
  138. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +17 -15
  139. package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +21 -0
  140. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +1 -1
  141. package/esm2022/lib/slider/abstract-slider.mjs +44 -34
  142. package/esm2022/lib/slider/index.mjs +5 -4
  143. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +13 -9
  144. package/esm2022/lib/slider/slider.component.mjs +13 -9
  145. package/esm2022/lib/slider/slider.defaults.mjs +14 -0
  146. package/esm2022/lib/slider/slider.module.mjs +1 -1
  147. package/esm2022/lib/slider/slider.types.mjs +1 -1
  148. package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
  149. package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
  150. package/esm2022/lib/snackbar/snackbar.service.mjs +10 -14
  151. package/esm2022/lib/snackbar/snackbar.token.mjs +12 -6
  152. package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
  153. package/esm2022/lib/spinner/index.mjs +3 -2
  154. package/esm2022/lib/spinner/spinner.component.mjs +7 -6
  155. package/esm2022/lib/spinner/spinner.defaults.mjs +14 -0
  156. package/esm2022/lib/star/index.mjs +3 -2
  157. package/esm2022/lib/star/star-button/index.mjs +3 -2
  158. package/esm2022/lib/star/star-button/star-button.component.mjs +14 -11
  159. package/esm2022/lib/star/star-button/star-button.defaults.mjs +18 -0
  160. package/esm2022/lib/star/star-display/index.mjs +3 -2
  161. package/esm2022/lib/star/star-display/star-display.component.mjs +10 -8
  162. package/esm2022/lib/star/star-display/star-display.defaults.mjs +16 -0
  163. package/esm2022/lib/star/star-input/index.mjs +3 -2
  164. package/esm2022/lib/star/star-input/star-input.component.mjs +14 -11
  165. package/esm2022/lib/star/star-input/star-input.defaults.mjs +17 -0
  166. package/esm2022/lib/star/star.component.mjs +15 -8
  167. package/esm2022/lib/star/star.defaults.mjs +15 -0
  168. package/esm2022/lib/statebox/index.mjs +2 -1
  169. package/esm2022/lib/statebox/statebox.component.mjs +19 -25
  170. package/esm2022/lib/statebox/statebox.defaults.mjs +20 -0
  171. package/esm2022/lib/statebox/statebox.types.mjs +1 -1
  172. package/esm2022/lib/tabber/index.mjs +5 -3
  173. package/esm2022/lib/tabber/tab/tab.component.mjs +7 -5
  174. package/esm2022/lib/tabber/tab/tab.defaults.mjs +13 -0
  175. package/esm2022/lib/tabber/tabber.component.mjs +13 -11
  176. package/esm2022/lib/tabber/tabber.defaults.mjs +19 -0
  177. package/esm2022/lib/tabber/tabber.module.mjs +1 -1
  178. package/esm2022/lib/table/index.mjs +3 -2
  179. package/esm2022/lib/table/table-item-storage.mjs +4 -4
  180. package/esm2022/lib/table/table.component.mjs +69 -50
  181. package/esm2022/lib/table/table.defaults.mjs +53 -0
  182. package/esm2022/lib/table/table.directives.mjs +1 -1
  183. package/esm2022/lib/table/table.module.mjs +8 -7
  184. package/esm2022/lib/table-from-csv/index.mjs +3 -2
  185. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +44 -44
  186. package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +15 -0
  187. package/esm2022/lib/table-pagination/index.mjs +3 -2
  188. package/esm2022/lib/table-pagination/table-pagination.component.mjs +13 -9
  189. package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +25 -0
  190. package/esm2022/lib/types/button.types.mjs +1 -1
  191. package/esm2022/lib/types/item-storage.types.mjs +1 -1
  192. package/esm2022/lib/types/utility.types.mjs +1 -1
  193. package/esm2022/public-api.mjs +1 -1
  194. package/fesm2022/ardium-ui-ui.mjs +3049 -2265
  195. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  196. package/lib/_internal/boolean-component.d.ts +5 -1
  197. package/lib/_internal/clear-button/clear-button.component.d.ts +1 -0
  198. package/lib/_internal/disablable-component.d.ts +9 -2
  199. package/lib/_internal/focusable-component.d.ts +6 -1
  200. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +9 -19
  201. package/lib/_internal/item-storages/simple-item-storage.d.ts +1 -1
  202. package/lib/_internal/item-storages/simplest-item-storage.d.ts +3 -3
  203. package/lib/_internal/models/pagination.model.d.ts +2 -2
  204. package/lib/_internal/ngmodel-component.d.ts +6 -2
  205. package/lib/_internal/selectable-list-component.d.ts +18 -13
  206. package/lib/badge/badge.defaults.d.ts +13 -0
  207. package/lib/badge/badge.directive.d.ts +4 -4
  208. package/lib/badge/index.d.ts +2 -1
  209. package/lib/buttons/_button-base.d.ts +6 -1
  210. package/lib/buttons/_button-base.defaults.d.ts +15 -0
  211. package/lib/buttons/button/button.component.d.ts +4 -3
  212. package/lib/buttons/button/button.defaults.d.ts +11 -0
  213. package/lib/buttons/button/index.d.ts +2 -1
  214. package/lib/buttons/fab/fab.component.d.ts +5 -6
  215. package/lib/buttons/fab/fab.defaults.d.ts +8 -0
  216. package/lib/buttons/fab/index.d.ts +2 -1
  217. package/lib/buttons/general-button.types.d.ts +2 -2
  218. package/lib/buttons/icon-button/icon-button.component.d.ts +3 -0
  219. package/lib/buttons/icon-button/icon-button.defaults.d.ts +6 -0
  220. package/lib/buttons/icon-button/index.d.ts +2 -1
  221. package/lib/card/card.children.d.ts +1 -1
  222. package/lib/card/card.component.d.ts +1 -0
  223. package/lib/card/card.defaults.d.ts +10 -0
  224. package/lib/card/index.d.ts +3 -2
  225. package/lib/checkbox/checkbox.component.d.ts +4 -2
  226. package/lib/checkbox/checkbox.defaults.d.ts +9 -0
  227. package/lib/checkbox/index.d.ts +2 -1
  228. package/lib/checkbox-list/checkbox-list.component.d.ts +4 -5
  229. package/lib/checkbox-list/checkbox-list.defaults.d.ts +19 -0
  230. package/lib/checkbox-list/index.d.ts +2 -1
  231. package/lib/chip/chip.component.d.ts +3 -0
  232. package/lib/chip/chip.defaults.d.ts +15 -0
  233. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +3 -3
  234. package/lib/chip/deletable-chip/deletable-chip.defaults.d.ts +8 -0
  235. package/lib/chip/index.d.ts +4 -1
  236. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +3 -3
  237. package/lib/chip/selectable-chip/selectable-chip.defaults.d.ts +9 -0
  238. package/lib/color/color-display/color-display.component.d.ts +2 -1
  239. package/lib/color/color-display/color-display.defaults.d.ts +9 -0
  240. package/lib/color/color-display/index.d.ts +2 -1
  241. package/lib/dialog/dialog.component.d.ts +1 -0
  242. package/lib/dialog/dialog.defaults.d.ts +16 -0
  243. package/lib/dialog/index.d.ts +3 -2
  244. package/lib/divider/divider.component.d.ts +1 -1
  245. package/lib/divider/divider.defaults.d.ts +6 -0
  246. package/lib/divider/index.d.ts +2 -1
  247. package/lib/dropdown-panel/dropdown-panel.component.d.ts +1 -0
  248. package/lib/dropdown-panel/dropdown-panel.defaults.d.ts +10 -0
  249. package/lib/dropdown-panel/index.d.ts +2 -1
  250. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -2
  251. package/lib/file-inputs/file-drop-area/file-drop-area.defaults.d.ts +10 -0
  252. package/lib/file-inputs/file-drop-area/index.d.ts +2 -1
  253. package/lib/file-inputs/file-input/file-input.component.d.ts +4 -4
  254. package/lib/file-inputs/file-input/file-input.defaults.d.ts +15 -0
  255. package/lib/file-inputs/file-input/index.d.ts +2 -1
  256. package/lib/file-inputs/file-input-base.d.ts +2 -0
  257. package/lib/file-inputs/file-input-base.defaults.d.ts +7 -0
  258. package/lib/form-field-frame/form-field-frame.component.d.ts +3 -0
  259. package/lib/form-field-frame/form-field-frame.defaults.d.ts +10 -0
  260. package/lib/form-field-frame/index.d.ts +2 -1
  261. package/lib/icon/icon.component.d.ts +7 -3
  262. package/lib/icon/icon.defaults.d.ts +11 -0
  263. package/lib/icon/index.d.ts +2 -1
  264. package/lib/inputs/_simple-input-base.d.ts +62 -0
  265. package/lib/inputs/digit-input/digit-input.component.d.ts +3 -0
  266. package/lib/inputs/digit-input/digit-input.defaults.d.ts +13 -0
  267. package/lib/inputs/digit-input/index.d.ts +2 -1
  268. package/lib/inputs/hex-input/hex-input.component.d.ts +4 -4
  269. package/lib/inputs/hex-input/hex-input.defaults.d.ts +19 -0
  270. package/lib/inputs/{hex-input.model.d.ts → hex-input/hex-input.model.d.ts} +2 -2
  271. package/lib/inputs/hex-input/index.d.ts +2 -1
  272. package/lib/inputs/input/input.component.d.ts +10 -17
  273. package/lib/inputs/input/input.defaults.d.ts +9 -0
  274. package/lib/inputs/number-input/index.d.ts +2 -1
  275. package/lib/inputs/number-input/number-input.component.d.ts +3 -1
  276. package/lib/inputs/number-input/number-input.defaults.d.ts +19 -0
  277. package/lib/inputs/password-input/index.d.ts +2 -1
  278. package/lib/inputs/password-input/password-input.component.d.ts +3 -0
  279. package/lib/inputs/password-input/password-input.defaults.d.ts +17 -0
  280. package/lib/inputs/simple-input/index.d.ts +2 -1
  281. package/lib/inputs/simple-input/simple-input.component.d.ts +6 -50
  282. package/lib/inputs/simple-input/simple-input.defaults.d.ts +6 -0
  283. package/lib/kbd/index.d.ts +1 -0
  284. package/lib/kbd/kbd.component.d.ts +1 -0
  285. package/lib/kbd/kbd.defaults.d.ts +8 -0
  286. package/lib/kbd/kbd.pipe.d.ts +1 -0
  287. package/lib/kbd-shortcut/index.d.ts +2 -1
  288. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +2 -0
  289. package/lib/kbd-shortcut/kbd-shortcut.defaults.d.ts +8 -0
  290. package/lib/modal/index.d.ts +2 -1
  291. package/lib/modal/modal.component.d.ts +1 -0
  292. package/lib/modal/modal.defaults.d.ts +14 -0
  293. package/lib/progress-bar/index.d.ts +3 -2
  294. package/lib/progress-bar/progress-bar.component.d.ts +3 -1
  295. package/lib/progress-bar/progress-bar.defaults.d.ts +14 -0
  296. package/lib/progress-circle/index.d.ts +3 -2
  297. package/lib/progress-circle/progress-circle.component.d.ts +3 -1
  298. package/lib/progress-circle/progress-circle.defaults.d.ts +14 -0
  299. package/lib/progress-circle/progress-circle.module.d.ts +1 -1
  300. package/lib/radio/index.d.ts +3 -2
  301. package/lib/radio/radio/radio.component.d.ts +5 -2
  302. package/lib/radio/radio/radio.defaults.d.ts +8 -0
  303. package/lib/segment/index.d.ts +2 -1
  304. package/lib/segment/segment.component.d.ts +3 -0
  305. package/lib/segment/segment.defaults.d.ts +18 -0
  306. package/lib/select/index.d.ts +2 -1
  307. package/lib/select/select.component.d.ts +11 -22
  308. package/lib/select/select.defaults.d.ts +49 -0
  309. package/lib/slide-toggle/index.d.ts +1 -0
  310. package/lib/slide-toggle/slide-toggle.component.d.ts +9 -6
  311. package/lib/slide-toggle/slide-toggle.defaults.d.ts +14 -0
  312. package/lib/slider/abstract-slider.d.ts +22 -5
  313. package/lib/slider/index.d.ts +4 -3
  314. package/lib/slider/range-slider/range-slider.component.d.ts +3 -0
  315. package/lib/slider/slider.component.d.ts +3 -0
  316. package/lib/slider/slider.defaults.d.ts +6 -0
  317. package/lib/snackbar/snackbar.service.d.ts +1 -2
  318. package/lib/snackbar/snackbar.token.d.ts +3 -3
  319. package/lib/spinner/index.d.ts +2 -1
  320. package/lib/spinner/spinner.component.d.ts +1 -0
  321. package/lib/spinner/spinner.defaults.d.ts +7 -0
  322. package/lib/star/index.d.ts +2 -1
  323. package/lib/star/star-button/index.d.ts +2 -1
  324. package/lib/star/star-button/star-button.component.d.ts +3 -0
  325. package/lib/star/star-button/star-button.defaults.d.ts +10 -0
  326. package/lib/star/star-display/index.d.ts +2 -1
  327. package/lib/star/star-display/star-display.component.d.ts +1 -0
  328. package/lib/star/star-display/star-display.defaults.d.ts +9 -0
  329. package/lib/star/star-input/index.d.ts +2 -1
  330. package/lib/star/star-input/star-input.component.d.ts +3 -1
  331. package/lib/star/star-input/star-input.defaults.d.ts +9 -0
  332. package/lib/star/star.component.d.ts +4 -2
  333. package/lib/star/star.defaults.d.ts +8 -0
  334. package/lib/statebox/index.d.ts +1 -0
  335. package/lib/statebox/statebox.component.d.ts +7 -6
  336. package/lib/statebox/statebox.defaults.d.ts +10 -0
  337. package/lib/tabber/index.d.ts +4 -2
  338. package/lib/tabber/tab/tab.component.d.ts +1 -0
  339. package/lib/tabber/tab/tab.defaults.d.ts +6 -0
  340. package/lib/tabber/tabber.component.d.ts +3 -1
  341. package/lib/tabber/tabber.defaults.d.ts +12 -0
  342. package/lib/table/index.d.ts +2 -1
  343. package/lib/table/table-item-storage.d.ts +5 -10
  344. package/lib/table/table.component.d.ts +11 -9
  345. package/lib/table/table.defaults.d.ts +50 -0
  346. package/lib/table/table.module.d.ts +2 -1
  347. package/lib/table-from-csv/index.d.ts +2 -1
  348. package/lib/table-from-csv/table-from-csv.component.d.ts +7 -5
  349. package/lib/table-from-csv/table-from-csv.defaults.d.ts +7 -0
  350. package/lib/table-pagination/index.d.ts +2 -1
  351. package/lib/table-pagination/table-pagination.component.d.ts +3 -0
  352. package/lib/table-pagination/table-pagination.defaults.d.ts +20 -0
  353. package/lib/types/button.types.d.ts +1 -1
  354. package/lib/types/item-storage.types.d.ts +3 -63
  355. package/package.json +1 -1
  356. package/prebuilt-themes/default/buttons/fab.css +1 -1
  357. package/prebuilt-themes/default/buttons/icon-button.css +7 -12
  358. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
  359. package/prebuilt-themes/default/checkbox.css.map +1 -1
  360. package/prebuilt-themes/default/inputs/color-input.css +5 -0
  361. package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
  362. package/prebuilt-themes/default/inputs/file-input.css +5 -0
  363. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  364. package/prebuilt-themes/default/inputs/hex-input.css +5 -0
  365. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
  366. package/prebuilt-themes/default/inputs/input.css +5 -0
  367. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  368. package/prebuilt-themes/default/inputs/number-input.css +5 -0
  369. package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
  370. package/prebuilt-themes/default/inputs/password-input.css +5 -0
  371. package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
  372. package/prebuilt-themes/default/inputs/search-bar.css +5 -0
  373. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
  374. package/prebuilt-themes/default/inputs/simple-input.css +5 -0
  375. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
  376. package/prebuilt-themes/default/segment.css.map +1 -1
  377. package/prebuilt-themes/default/select.css +4 -0
  378. package/prebuilt-themes/default/select.css.map +1 -1
  379. package/prebuilt-themes/default/tabber.css +2 -0
  380. package/prebuilt-themes/default/tabber.css.map +1 -1
  381. package/prebuilt-themes/default/table.css +17 -0
  382. package/prebuilt-themes/default/table.css.map +1 -1
  383. package/themes/default/_clear-button.scss +73 -73
  384. package/themes/default/badge.scss +94 -94
  385. package/themes/default/buttons/button.scss +72 -72
  386. package/themes/default/buttons/fab.scss +74 -74
  387. package/themes/default/buttons/icon-button.scss +55 -62
  388. package/themes/default/card.scss +129 -129
  389. package/themes/default/checkbox.scss +1 -1
  390. package/themes/default/chips.scss +200 -200
  391. package/themes/default/core.scss +99 -99
  392. package/themes/default/inputs/_shared.scss +5 -0
  393. package/themes/default/inputs/digit-input.scss +56 -56
  394. package/themes/default/inputs/file-input.scss +85 -85
  395. package/themes/default/inputs/hex-input.scss +27 -27
  396. package/themes/default/modal.scss +93 -93
  397. package/themes/default/segment.scss +355 -351
  398. package/themes/default/select.scss +259 -255
  399. package/themes/default/snackbar.scss +58 -58
  400. package/themes/default/tabber.scss +89 -87
  401. package/themes/default/table.scss +20 -0
  402. package/esm2022/lib/_internal/queue.mjs +0 -59
  403. package/esm2022/lib/color/color-picker/color-picker.types.mjs +0 -11
  404. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +0 -101
  405. package/esm2022/lib/inputs/color-input/color-input.types.mjs +0 -2
  406. package/esm2022/lib/inputs/hex-input.model.mjs +0 -97
  407. package/lib/color/color-picker/color-picker.types.d.ts +0 -21
  408. package/lib/inputs/color-input/color-input.directives.d.ts +0 -52
  409. package/lib/inputs/color-input/color-input.types.d.ts +0 -5
  410. /package/lib/_internal/{queue.d.ts → models/queue.d.ts} +0 -0
@@ -67,7 +67,6 @@ export class SimpleItemStorage {
67
67
  this._items.set(items.map((item, index) => {
68
68
  return this._setItemsMapFn(item, index, areItemsPrimitive);
69
69
  }));
70
- return areItemsPrimitive;
71
70
  }
72
71
  _primitiveItemsMapFn(item) {
73
72
  return { value: item };
@@ -76,7 +75,7 @@ export class SimpleItemStorage {
76
75
  if (areItemsPrimitive) {
77
76
  return {
78
77
  itemData: signal(rawItemData),
79
- index: signal(index),
78
+ index: index,
80
79
  value: signal(rawItemData.value),
81
80
  label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
82
81
  disabled: signal(false),
@@ -99,7 +98,7 @@ export class SimpleItemStorage {
99
98
  //return
100
99
  return {
101
100
  itemData: signal(rawItemData),
102
- index: signal(index),
101
+ index: index,
103
102
  value: signal(value),
104
103
  label: signal(label?.toString?.() ?? String(label)),
105
104
  disabled: signal(disabled),
@@ -323,7 +322,7 @@ export class SimpleItemStorage {
323
322
  }
324
323
  const currentItem = this.highlightedItems().last();
325
324
  const itemsWithoutDisabled = this._items().filter(item => !item.disabled() && (!this.isItemLimitReached() || item.selected()));
326
- const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());
325
+ const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index === currentItem.index);
327
326
  let nextItemIndex = currentIndexInItems + offset;
328
327
  if (nextItemIndex >= itemsWithoutDisabled.length) {
329
328
  nextItemIndex -= itemsWithoutDisabled.length;
@@ -341,4 +340,4 @@ export class SimpleItemStorage {
341
340
  return this.highlightSingleItem(itemToHighlight);
342
341
  }
343
342
  }
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWl0ZW0tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXNCekUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUE2QixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKakQsV0FBTSxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFJaEU7O1dBRUc7UUFDTSxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQzs7V0FFRztRQUNNLHFCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRTs7V0FFRztRQUNNLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxRDs7V0FFRztRQUNNLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBVTNFOztXQUVHO1FBQ00seUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElB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QUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQzVFLENBQUM7UUFDRixNQUFNLG1CQUFtQixHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV6RyxJQUFJLGFBQWEsR0FBRyxtQkFBbUIsR0FBRyxNQUFNLENBQUM7UUFDakQsSUFBSSxhQUFhLElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakQsYUFBYSxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsYUFBYSxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUMvQyxDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFNUQsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQ3RELElBQUksZUFBZSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQU1GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHJlc29sdmVQYXRoIH0gZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XHJcbmltcG9ydCB7IGV2YWx1YXRlLCBpc0RlZmluZWQsIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQXJkT3B0aW9uU2ltcGxlLCBDb21wYXJlV2l0aEZuIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHMge1xyXG4gIHZhbHVlRnJvbTogc3RyaW5nO1xyXG4gIGxhYmVsRnJvbTogc3RyaW5nO1xyXG4gIGRpc2FibGVkRnJvbTogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IHtcclxuICByZWFkb25seSB2YWx1ZUZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcclxuICByZWFkb25seSBsYWJlbEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcclxuICByZWFkb25seSBkaXNhYmxlZEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcclxuICByZWFkb25seSBpbnZlcnREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIHJlYWRvbmx5IERFRkFVTFRTOiBJdGVtU3RvcmFnZUhvc3REZWZhdWx0cztcclxuICByZWFkb25seSBjb21wYXJlV2l0aDogU2lnbmFsPE51bGxhYmxlPENvbXBhcmVXaXRoRm4+PjtcclxuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGU6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBpc1ZhbHVlUmVxdWlyZWQ6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zOiBTaWduYWw8TnVsbGFibGU8bnVtYmVyPj47XHJcbiAgcmVhZG9ubHkgX2NvbXBvbmVudElkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTaW1wbGVJdGVtU3RvcmFnZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uU2ltcGxlW10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEl0ZW1zID0gc2lnbmFsPEFyZE9wdGlvblNpbXBsZVtdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25TaW1wbGVbXT4oW10pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9hcmRQYXJlbnRDb21wOiBTaW1wbGVJdGVtU3RvcmFnZUhvc3QpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGl0ZW1zID0gdGhpcy5faXRlbXMuYXNSZWFkb25seSgpO1xyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cclxuICAgKi9cclxuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5hc1JlYWRvbmx5KCk7XHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbGwgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmFzUmVhZG9ubHkoKTtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcy5cclxuICAgKi9cclxuICByZWFkb25seSB2YWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKCkpKTtcclxuICAvKipcclxuICAgKiBNYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gdGhlaXIgdmFsdWVzLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdG8gY29udmVydCB0byB2YWx1ZS5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtIHZhbHVlcy5cclxuICAgKi9cclxuICBwcml2YXRlIF9pdGVtc1RvVmFsdWUoaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQsIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICByZWFkb25seSBpc0FueUl0ZW1IaWdobGlnaHRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKS5sZW5ndGggPiAwKTtcclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhcmVudCBjb21wb25lbnQgZGVmaW5lcyB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGFibGUgaXRlbXMgYW5kIHRoZSBhbW91bnQgb2YgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIG1hdGNoZXMgdGhhdCBsaW1pdC4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuXHJcbiAgICpcclxuICAgKiAqKlRMRFIqKjogdHJ1ZSBpZiBgbWF4U2VsZWN0ZWRJdGVtc2AgaXMgZGVmaW5lZCBhbmQgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBtYXRjaGVzIHRoYXQgdmFsdWUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaXNJdGVtTGltaXRSZWFjaGVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgbXNpID0gdGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICBpZiAoIXRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKCkgfHwgIWlzRGVmaW5lZChtc2kpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBtc2kgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoO1xyXG4gIH0pO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyBpdGVtcy4gVGFrZXMgaW50byBhY2NvdW50IHRoZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgYHZhbHVlRnJvbWAsIGBsYWJlbEZyb21gLCBhbmQgYGRpc2FibGVkRnJvbWAuXHJcbiAgICogQHBhcmFtIGl0ZW1zIEFuIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHNldCBhcyB0aGUgY29tcG9uZW50J3MgaXRlbXMuXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGl0ZW1zIGlzIG9mIHByaW1pdGl2ZSB0eXBlLCBvdGhlcndpc2UgZmFsc2UuXHJcbiAgICovXHJcbiAgc2V0SXRlbXMoaXRlbXM6IHVua25vd25bXSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XHJcbiAgICBpZiAoaXRlbXMuc29tZShpc1ByaW1pdGl2ZSkpIHtcclxuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICAgIGFyZUl0ZW1zUHJpbWl0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pdGVtcy5zZXQoXHJcbiAgICAgIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCBpbmRleCwgYXJlSXRlbXNQcmltaXRpdmUpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gYXJlSXRlbXNQcmltaXRpdmU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ByaW1pdGl2ZUl0ZW1zTWFwRm48VD4oaXRlbTogVCk6IHsgdmFsdWU6IFQgfSB7XHJcbiAgICByZXR1cm4geyB2YWx1ZTogaXRlbSB9O1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXRJdGVtc01hcEZuKHJhd0l0ZW1EYXRhOiBhbnksIGluZGV4OiBudW1iZXIsIGFyZUl0ZW1zUHJpbWl0aXZlOiBib29sZWFuKTogQXJkT3B0aW9uU2ltcGxlIHtcclxuICAgIGlmIChhcmVJdGVtc1ByaW1pdGl2ZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW1EYXRhOiBzaWduYWwocmF3SXRlbURhdGEpLFxyXG4gICAgICAgIGluZGV4OiBzaWduYWwoaW5kZXgpLFxyXG4gICAgICAgIHZhbHVlOiBzaWduYWwocmF3SXRlbURhdGEudmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBzaWduYWwocmF3SXRlbURhdGEudmFsdWU/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcocmF3SXRlbURhdGEudmFsdWUpKSxcclxuICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIC8vZ2V0IHZhbHVlXHJcbiAgICBjb25zdCB2YWx1ZVBhdGggPVxyXG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy52YWx1ZUZyb207XHJcbiAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCB2YWx1ZVBhdGgpO1xyXG5cclxuICAgIC8vZ2V0IGxhYmVsXHJcbiAgICBjb25zdCBsYWJlbFBhdGggPVxyXG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5sYWJlbEZyb207XHJcbiAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xyXG5cclxuICAgIC8vZ2V0IGRpc2FibGVkXHJcbiAgICBjb25zdCBkaXNhYmxlZFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmRpc2FibGVkRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuZGlzYWJsZWRGcm9tO1xyXG4gICAgbGV0IGRpc2FibGVkID0gZXZhbHVhdGUocmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGRpc2FibGVkUGF0aCkpO1xyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaW52ZXJ0RGlzYWJsZWQoKSkge1xyXG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvL3JldHVyblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXHJcbiAgICAgIGluZGV4OiBzaWduYWwoaW5kZXgpLFxyXG4gICAgICB2YWx1ZTogc2lnbmFsKHZhbHVlKSxcclxuICAgICAgbGFiZWw6IHNpZ25hbChsYWJlbD8udG9TdHJpbmc/LigpID8/IFN0cmluZyhsYWJlbCkpLFxyXG4gICAgICBkaXNhYmxlZDogc2lnbmFsKGRpc2FibGVkKSxcclxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBpdGVtIHN0b3JhZ2UuIFNlbGVjdHMgdGhlIGNvcnJlY3QgaXRlbXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhbHVlcywgd2FybmluZyB0aGUgdXNlciBpZiB0aGUgdmFsdWUgaXMgbm90IGZvdW5kLlxyXG4gICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiB0aGUgbmdNb2RlbCB0byBzZXQuXHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5fdmFsaWRhdGVXcml0ZVZhbHVlKG5nTW9kZWwpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbUJ5VmFsdWUodmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQVJELVdBJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0xOiBDb3VsZG4ndCBmaW5kIGFuIGl0ZW0gd2l0aCB2YWx1ZSAke3ZhbHVlPy50b1N0cmluZz8uKCkgfHwgU3RyaW5nKHZhbHVlKX0uYFxyXG4gICAgICApO1xyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IG1vZGVsVmFsdWUgb2YgbmdNb2RlbCkge1xyXG4gICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoYXQgYWxsIHZhbHVlcyBvZiB0aGUgdmFsdWUgdG8gYmUgd3JpdHRlbiBhcmUgYWJsZSB0byBiZSBhY2N1cmF0ZWx5IGNvbXBhcmVkIGFnYWluc3QgdGhlIHN0b3JhZ2UgaXRlbXMuXHJcbiAgICpcclxuICAgKiBBbiBpdGVtIGZyb20gdGhlIG5nTW9kZWwgYXJyYXkgaXMgY29uc2lkZXJlZCB2YWxpZCBpZiBpdCBpcyBhIHByaW1pdGl2ZSB2YWx1ZSwgb3IgaWYgYWxsIG9mIHRoZSBiZWxvdyBwb2ludHMgYXJlIG1ldDpcclxuICAgKiAxLiBUaGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBgY29tcGFyZVdpdGhgIHByb3BlcnR5LlxyXG4gICAqIDIuIFRoZSBuZ01vZGVsIHZhbHVlIGl0ZW0gaXMgYW4gb2JqZWN0IChvciBhcnJheSkuXHJcbiAgICogMy4gVGhlIHBhcmVudCBjb21wb25lbnQgaGFzIGEgZGVmaW5lZCBgdmFsdWVGcm9tYCBwcm9wZXJ0eS5cclxuICAgKiBAcGFyYW0gbmdNb2RlbCBUaGUgdmFsdWUgb2YgbmdNb2RlbCB0byB2YWxpZGF0ZS5cclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFsbCBpdGVtcyBhcmUgdmFsaWQsIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICBwcml2YXRlIF92YWxpZGF0ZVdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBuZ01vZGVsLmV2ZXJ5KGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKCkpICYmIGlzT2JqZWN0KGl0ZW0pICYmIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKCkpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICBgQVJELUZUJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0wOiBTZXR0aW5nIG9iamVjdCgke0pTT04uc3RyaW5naWZ5KFxyXG4gICAgICAgICAgICBpdGVtXHJcbiAgICAgICAgICApfSkgYXMgeW91ciBtb2RlbCB3aXRoIFt2YWx1ZUZyb21dIGlzIG5vdCBhbGxvd2VkIHVubGVzcyBbY29tcGFyZVdpdGhdIGlzIHVzZWQuYFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZpbmRJdGVtQnlWYWx1ZSh2YWx1ZVRvRmluZDogYW55KTogQXJkT3B0aW9uU2ltcGxlIHwgdW5kZWZpbmVkIHtcclxuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb25TaW1wbGUpID0+IGJvb2xlYW47XHJcbiAgICBjb25zdCBjbXBGbiA9IHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgoKTtcclxuICAgIGlmIChpc0RlZmluZWQoY21wRm4pKSB7XHJcbiAgICAgIGZpbmRCeSA9IGl0ZW0gPT4gY21wRm4odmFsdWVUb0ZpbmQsIGl0ZW0udmFsdWUoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUoKSA9PT0gdmFsdWVUb0ZpbmQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXMoKS5maW5kKGl0ZW0gPT4gZmluZEJ5KGl0ZW0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc2VsZWN0cyBhbGwgc2VsZWN0ZWQgaXRlbXMuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgcGFyZW50IGNvbXBvbmVudCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdmFsdWUgdG8gYmUgc2VsZWN0ZWQgYXQgYWxsIHRpbWVzLCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbXMgaXMgbGVmdCBzZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyBjbGVhcmVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgdW5zZWxlY3RBbGwoKTogYW55W10ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3NlbGVjdGVkSXRlbXMoKSkge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmV0ID0gdGhpcy52YWx1ZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmlzVmFsdWVSZXF1aXJlZCgpICYmIHRoaXMuX3NlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMoKS5maXJzdCgpLnNlbGVjdGVkLnNldCh0cnVlKTtcclxuICAgICAgcmV0LnNwbGljZSgwLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNldChbXSk7XHJcblxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVW5zZWxlY3RzIGFsbCBzZWxlY3RlZCBpdGVtcywgbm8gbWF0dGVyIHdoYXQgdGhlIGNvbXBvbmVudCBzZXR0aW5ncyBhcmUuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2ZvcmNlVW5zZWxlY3RBbGwoKTogYW55W10ge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3NlbGVjdGVkSXRlbXMoKSkge1xyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmV0ID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSk7XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgb25lIG9yIG11bHRpcGxlIGl0ZW1zLlxyXG4gICAqXHJcbiAgICogQWNjb3VudHMgZm9yIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSBzZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhyZWUgYXJyYXlzLCBhbGwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzOlxyXG4gICAqIC0gQW4gYXJyYXkgb2YgaXRlbXMgc2VsZWN0ZWQsXHJcbiAgICogLSBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLFxyXG4gICAqIC0gQW4gYXJyYXkgb2YgaXRlbXMgZmFpbGVkIHRvIHNlbGVjdCBkdWUgdG8gdGhlIGxpbWl0LlxyXG4gICAqL1xyXG4gIHNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogW2FueVtdLCBhbnlbXSwgYW55W11dIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpKSB7XHJcbiAgICAgIHJldHVybiBbW10sIFtdLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpXTtcclxuICAgIH1cclxuICAgIGxldCB1bnNlbGVjdGVkID0gW107XHJcbiAgICBpZiAoIXRoaXMuX2FyZFBhcmVudENvbXAubXVsdGlzZWxlY3RhYmxlKCkpIHtcclxuICAgICAgdW5zZWxlY3RlZCA9IHRoaXMuX2ZvcmNlVW5zZWxlY3RBbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcclxuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQ6IEFyZE9wdGlvblNpbXBsZVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaXRlbXNTZWxlY3RlZENvdW50Kys7XHJcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKCkpIGNvbnRpbnVlO1xyXG4gICAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQoKSkge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KHRydWUpO1xyXG4gICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnVwZGF0ZSh2ID0+IFsuLi52LCAuLi5pdGVtc1NlbGVjdGVkXSk7XHJcblxyXG4gICAgY29uc3QgaXRlbXNGYWlsZWRUb1NlbGVjdCA9IGl0ZW1zLnNsaWNlKGl0ZW1zU2VsZWN0ZWRDb3VudCAtIDEpO1xyXG4gICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHVuc2VsZWN0ZWQsIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGl0ZW1zIEEgcmVzdCBvcGVyYXRvciBhcnJheSBvZiBpdGVtIG9iamVjdHMgdG8gYmUgdW5zZWxlY3RlZC5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IGFueVtdIHtcclxuICAgIGxldCBza2lwcGVkSXRlbSA9IGZhbHNlO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmlzVmFsdWVSZXF1aXJlZCgpICYmICFza2lwcGVkSXRlbSkge1xyXG4gICAgICAgIHNraXBwZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFpdGVtLnNlbGVjdGVkKCkpIGNvbnRpbnVlO1xyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5zZWxlY3RlZCgpKSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtcy5cclxuICAgKi9cclxuICB1bmhpZ2hsaWdodEFsbCgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zKCkpIHtcclxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5zZXQoW10pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBnaXZlbiBpdGVtLCB3aGlsZSB1bmhpZ2hsaWdodGluZyBhbGwgb3RoZXIgaXRlbXMuIERvZXMgbm90aGluZyB3aGVuIHRoZSBpdGVtIGlzIGRpc2FibGVkLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGJlIGhpZ2hsaWdodGVkLlxyXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbTogQXJkT3B0aW9uU2ltcGxlKTogQXJkT3B0aW9uU2ltcGxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcclxuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXHJcbiAgICogQHJldHVybnMgVGhlIGxhc3QgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IEFyZE9wdGlvblNpbXBsZSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IFsuLi52LCAuLi5pdGVtc10pO1xyXG4gICAgcmV0dXJuIGl0ZW1zLmxhc3QoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVW5oaWdobGlnaHRzIGFsbCBnaXZlbiBpdGVtcy5cclxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXHJcbiAgICovXHJcbiAgdW5oaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGlmICghaXRlbSB8fCAhaXRlbS5oaWdobGlnaHRlZCgpKSByZXR1cm47XHJcblxyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCgpKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgdGhlIGZpcnN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cclxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRGaXJzdEl0ZW0oKTogQXJkT3B0aW9uU2ltcGxlIHwgbnVsbCB7XHJcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XHJcblxyXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5oaWdobGlnaHRhYmxlSXRlbXMoKS5maXJzdCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBsYXN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cclxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cclxuICAgKi9cclxuICBoaWdobGlnaHRMYXN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcclxuICAgIHRoaXMudW5oaWdobGlnaHRBbGwoKTtcclxuXHJcbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLmhpZ2hsaWdodGFibGVJdGVtcygpLmxhc3QoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyBhbGwgbm9uLWRpc2FibGVkIGl0ZW1zLlxyXG4gICAqL1xyXG4gIGhpZ2hsaWdodEFsbEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuaGlnaGxpZ2h0YWJsZUl0ZW1zKCk7XHJcblxyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIGRlZmluZWQgYnkgdGhlIG9mZnNldCBhbW91bnQuXHJcbiAgICpcclxuICAgKiBJZiBgaGFzU2hpZnRgIGlzIHNldCB0byB0cnVlLCBhbGwgb3JpZ2luYWxseSBoaWdobGlnaHRlZCBpdGVtcyBhcmUga2VwdC4gT3RoZXJ3aXNlLCBhbGwgb3JpZ2luYWwgaXRlbXMgYXJlIHVuc2VsZWN0ZWQuXHJcbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxyXG4gICAqIEBwYXJhbSBoYXNTaGlmdCBXaGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgc2hpZnQga2V5IHByZXNzZWQuXHJcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gaGlnaGxpZ2h0ZWQuXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIsIGhhc1NoaWZ0PzogYm9vbGVhbik6IEFyZE9wdGlvblNpbXBsZSB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmlzQW55SXRlbUhpZ2hsaWdodGVkKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcygpLmxhc3QoKTtcclxuICAgIGNvbnN0IGl0ZW1zV2l0aG91dERpc2FibGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoXHJcbiAgICAgIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSAmJiAoIXRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkgfHwgaXRlbS5zZWxlY3RlZCgpKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4KCkgPT09IGN1cnJlbnRJdGVtLmluZGV4KCkpO1xyXG5cclxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcclxuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGl0ZW1zV2l0aG91dERpc2FibGVkW25leHRJdGVtSW5kZXhdO1xyXG5cclxuICAgIGlmIChoYXNTaGlmdCAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XHJcbiAgICAgIGlmIChpdGVtVG9IaWdobGlnaHQuaGlnaGxpZ2h0ZWQoKSkge1xyXG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLiBBbiBpdGVtIGlzIGNvbnNpZGVyZWQgaGlnaGxpZ2h0YWJsZSBpZiBpdCBpcyAqKm5vdCoqIGRpc2FibGVkLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBoaWdobGlnaHRhYmxlIGl0ZW1zLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0YWJsZUl0ZW1zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5kaXNhYmxlZCgpKSk7XHJcbn1cclxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWl0ZW0tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXNCekUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUE2QixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKakQsV0FBTSxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUNsRCxtQkFBYyxHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFJaEU7O1dBRUc7UUFDTSxVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQzs7V0FFRztRQUNNLHFCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRTs7V0FFRztRQUNNLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxRDs7V0FFRztRQUNNLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBVTNFOztXQUVHO1FBQ00seUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElB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bUJBQW1CLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckcsSUFBSSxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ2pELElBQUksYUFBYSxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pELGFBQWEsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLGFBQWEsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7UUFDL0MsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUN0RCxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FNRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGggfSBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcbmltcG9ydCB7IGV2YWx1YXRlLCBpc0RlZmluZWQsIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IEFyZE9wdGlvblNpbXBsZSwgQ29tcGFyZVdpdGhGbiB9IGZyb20gJy4uLy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzIHtcbiAgdmFsdWVGcm9tOiBzdHJpbmc7XG4gIGxhYmVsRnJvbTogc3RyaW5nO1xuICBkaXNhYmxlZEZyb206IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgcmVhZG9ubHkgdmFsdWVGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XG4gIHJlYWRvbmx5IGxhYmVsRnJvbTogU2lnbmFsPE51bGxhYmxlPHN0cmluZz4+O1xuICByZWFkb25seSBkaXNhYmxlZEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcbiAgcmVhZG9ubHkgaW52ZXJ0RGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgREVGQVVMVFM6IEl0ZW1TdG9yYWdlSG9zdERlZmF1bHRzO1xuICByZWFkb25seSBjb21wYXJlV2l0aDogU2lnbmFsPE51bGxhYmxlPENvbXBhcmVXaXRoRm4+PjtcbiAgcmVhZG9ubHkgbXVsdGlzZWxlY3RhYmxlOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGlzVmFsdWVSZXF1aXJlZDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zOiBTaWduYWw8TnVsbGFibGU8bnVtYmVyPj47XG4gIHJlYWRvbmx5IF9jb21wb25lbnRJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlSXRlbVN0b3JhZ2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25TaW1wbGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEl0ZW1zID0gc2lnbmFsPEFyZE9wdGlvblNpbXBsZVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uU2ltcGxlW10+KFtdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9hcmRQYXJlbnRDb21wOiBTaW1wbGVJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XG4gIC8qKlxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5hc1JlYWRvbmx5KCk7XG4gIC8qKlxuICAgKiBHZXRzIGFsbCBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5hc1JlYWRvbmx5KCk7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSkpO1xuICAvKipcbiAgICogTWFwcyBhbiBhcnJheSBvZiBpdGVtcyBpbnRvIHRoZWlyIHZhbHVlcy5cbiAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBjb252ZXJ0IHRvIHZhbHVlLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgX2l0ZW1zVG9WYWx1ZShpdGVtczogQXJkT3B0aW9uU2ltcGxlW10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBpdGVtIGlzIGhpZ2hsaWdodGVkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICByZWFkb25seSBpc0FueUl0ZW1IaWdobGlnaHRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKS5sZW5ndGggPiAwKTtcbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBsaW1pdCBvZiBjb25jdXJyZW50bHkgc2VsZWN0YWJsZSBpdGVtcyBhbmQgdGhlIGFtb3VudCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IGxpbWl0LiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAgICpcbiAgICogKipUTERSKio6IHRydWUgaWYgYG1heFNlbGVjdGVkSXRlbXNgIGlzIGRlZmluZWQgYW5kIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgbWF0Y2hlcyB0aGF0IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNJdGVtTGltaXRSZWFjaGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1zaSA9IHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpO1xuICAgIGlmICghdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSB8fCAhaXNEZWZpbmVkKG1zaSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG1zaSA8PSB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGg7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyBpdGVtcy4gVGFrZXMgaW50byBhY2NvdW50IHRoZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudCBmb3IgYHZhbHVlRnJvbWAsIGBsYWJlbEZyb21gLCBhbmQgYGRpc2FibGVkRnJvbWAuXG4gICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBzZXQgYXMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaXRlbXMgaXMgb2YgcHJpbWl0aXZlIHR5cGUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIHNldEl0ZW1zKGl0ZW1zOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBsZXQgYXJlSXRlbXNQcmltaXRpdmUgPSBmYWxzZTtcbiAgICBpZiAoaXRlbXMuc29tZShpc1ByaW1pdGl2ZSkpIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4pO1xuICAgICAgYXJlSXRlbXNQcmltaXRpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuX2l0ZW1zLnNldChcbiAgICAgIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XG4gIH1cbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvblNpbXBsZSB7XG4gICAgaWYgKGFyZUl0ZW1zUHJpbWl0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICB2YWx1ZTogc2lnbmFsKHJhd0l0ZW1EYXRhLnZhbHVlKSxcbiAgICAgICAgbGFiZWw6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSkpLFxuICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxuICAgICAgfTtcbiAgICB9XG4gICAgLy9nZXQgdmFsdWVcbiAgICBjb25zdCB2YWx1ZVBhdGggPVxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMudmFsdWVGcm9tO1xuICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHZhbHVlUGF0aCk7XG5cbiAgICAvL2dldCBsYWJlbFxuICAgIGNvbnN0IGxhYmVsUGF0aCA9XG4gICAgICB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5ERUZBVUxUUy5sYWJlbEZyb207XG4gICAgY29uc3QgbGFiZWwgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgbGFiZWxQYXRoKSA/PyB2YWx1ZTtcblxuICAgIC8vZ2V0IGRpc2FibGVkXG4gICAgY29uc3QgZGlzYWJsZWRQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5kaXNhYmxlZEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmRpc2FibGVkRnJvbTtcbiAgICBsZXQgZGlzYWJsZWQgPSBldmFsdWF0ZShyZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZGlzYWJsZWRQYXRoKSk7XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaW52ZXJ0RGlzYWJsZWQoKSkge1xuICAgICAgZGlzYWJsZWQgPSAhZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy9yZXR1cm5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB2YWx1ZTogc2lnbmFsKHZhbHVlKSxcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcbiAgICAgIGRpc2FibGVkOiBzaWduYWwoZGlzYWJsZWQpLFxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGl0ZW0gc3RvcmFnZS4gU2VsZWN0cyB0aGUgY29ycmVjdCBpdGVtcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsdWVzLCB3YXJuaW5nIHRoZSB1c2VyIGlmIHRoZSB2YWx1ZSBpcyBub3QgZm91bmQuXG4gICAqIEBwYXJhbSBuZ01vZGVsIFRoZSB2YWx1ZSBvZiB0aGUgbmdNb2RlbCB0byBzZXQuXG4gICAqL1xuICB3cml0ZVZhbHVlKG5nTW9kZWw6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xuXG4gICAgaWYgKCF0aGlzLl92YWxpZGF0ZVdyaXRlVmFsdWUobmdNb2RlbCkpIHJldHVybjtcblxuICAgIGNvbnN0IHNlbGVjdEl0ZW1CeVZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRJdGVtQnlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQVJELVdBJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0xOiBDb3VsZG4ndCBmaW5kIGFuIGl0ZW0gd2l0aCB2YWx1ZSAke3ZhbHVlPy50b1N0cmluZz8uKCkgfHwgU3RyaW5nKHZhbHVlKX0uYFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBtb2RlbFZhbHVlIG9mIG5nTW9kZWwpIHtcbiAgICAgIHNlbGVjdEl0ZW1CeVZhbHVlKG1vZGVsVmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgYWxsIHZhbHVlcyBvZiB0aGUgdmFsdWUgdG8gYmUgd3JpdHRlbiBhcmUgYWJsZSB0byBiZSBhY2N1cmF0ZWx5IGNvbXBhcmVkIGFnYWluc3QgdGhlIHN0b3JhZ2UgaXRlbXMuXG4gICAqXG4gICAqIEFuIGl0ZW0gZnJvbSB0aGUgbmdNb2RlbCBhcnJheSBpcyBjb25zaWRlcmVkIHZhbGlkIGlmIGl0IGlzIGEgcHJpbWl0aXZlIHZhbHVlLCBvciBpZiBhbGwgb2YgdGhlIGJlbG93IHBvaW50cyBhcmUgbWV0OlxuICAgKiAxLiBUaGUgcGFyZW50IGNvbXBvbmVudCBkZWZpbmVzIHRoZSBgY29tcGFyZVdpdGhgIHByb3BlcnR5LlxuICAgKiAyLiBUaGUgbmdNb2RlbCB2YWx1ZSBpdGVtIGlzIGFuIG9iamVjdCAob3IgYXJyYXkpLlxuICAgKiAzLiBUaGUgcGFyZW50IGNvbXBvbmVudCBoYXMgYSBkZWZpbmVkIGB2YWx1ZUZyb21gIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gbmdNb2RlbCBUaGUgdmFsdWUgb2YgbmdNb2RlbCB0byB2YWxpZGF0ZS5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhbGwgaXRlbXMgYXJlIHZhbGlkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmdNb2RlbC5ldmVyeShpdGVtID0+IHtcbiAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgoKSkgJiYgaXNPYmplY3QoaXRlbSkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEFSRC1GVCR7dGhpcy5fYXJkUGFyZW50Q29tcC5fY29tcG9uZW50SWR9MDogU2V0dGluZyBvYmplY3QoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICApfSkgYXMgeW91ciBtb2RlbCB3aXRoIFt2YWx1ZUZyb21dIGlzIG5vdCBhbGxvd2VkIHVubGVzcyBbY29tcGFyZVdpdGhdIGlzIHVzZWQuYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBmaW5kSXRlbUJ5VmFsdWUodmFsdWVUb0ZpbmQ6IGFueSk6IEFyZE9wdGlvblNpbXBsZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGZpbmRCeTogKGl0ZW06IEFyZE9wdGlvblNpbXBsZSkgPT4gYm9vbGVhbjtcbiAgICBjb25zdCBjbXBGbiA9IHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgoKTtcbiAgICBpZiAoaXNEZWZpbmVkKGNtcEZuKSkge1xuICAgICAgZmluZEJ5ID0gaXRlbSA9PiBjbXBGbih2YWx1ZVRvRmluZCwgaXRlbS52YWx1ZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluZEJ5ID0gaXRlbSA9PiBpdGVtLnZhbHVlKCkgPT09IHZhbHVlVG9GaW5kO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faXRlbXMoKS5maW5kKGl0ZW0gPT4gZmluZEJ5KGl0ZW0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgYWxsIHNlbGVjdGVkIGl0ZW1zLlxuICAgKlxuICAgKiBJZiB0aGUgcGFyZW50IGNvbXBvbmVudCByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdmFsdWUgdG8gYmUgc2VsZWN0ZWQgYXQgYWxsIHRpbWVzLCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbXMgaXMgbGVmdCBzZWxlY3RlZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgKi9cbiAgdW5zZWxlY3RBbGwoKTogYW55W10ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXQgPSB0aGlzLnZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pc1ZhbHVlUmVxdWlyZWQoKSAmJiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcygpLmZpcnN0KCkuc2VsZWN0ZWQuc2V0KHRydWUpO1xuICAgICAgcmV0LnNwbGljZSgwLCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNldChbXSk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgYWxsIHNlbGVjdGVkIGl0ZW1zLCBubyBtYXR0ZXIgd2hhdCB0aGUgY29tcG9uZW50IHNldHRpbmdzIGFyZS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaXRlbXMgY2xlYXJlZCwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9yY2VVbnNlbGVjdEFsbCgpOiBhbnlbXSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX3NlbGVjdGVkSXRlbXMoKSkge1xuICAgICAgaXRlbS5zZWxlY3RlZC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLl9zZWxlY3RlZEl0ZW1zKCkpO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICAvKipcbiAgICogU2VsZWN0cyBvbmUgb3IgbXVsdGlwbGUgaXRlbXMuXG4gICAqXG4gICAqIEFjY291bnRzIGZvciB0aGUgbGltaXQgb2YgY29uY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbSBvYmplY3RzIHRvIGJlIHNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBBIHR1cGxlIGNvbnRhaW5pbmcgdGhyZWUgYXJyYXlzLCBhbGwgbWFwcGVkIHRvIG9ubHkgdGhlaXIgdmFsdWVzOlxuICAgKiAtIEFuIGFycmF5IG9mIGl0ZW1zIHNlbGVjdGVkLFxuICAgKiAtIEFuIGFycmF5IG9mIGl0ZW1zIHVuc2VsZWN0ZWQsXG4gICAqIC0gQW4gYXJyYXkgb2YgaXRlbXMgZmFpbGVkIHRvIHNlbGVjdCBkdWUgdG8gdGhlIGxpbWl0LlxuICAgKi9cbiAgc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uU2ltcGxlW10pOiBbYW55W10sIGFueVtdLCBhbnlbXV0ge1xuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpKSB7XG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XG4gICAgfVxuICAgIGxldCB1bnNlbGVjdGVkID0gW107XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XG4gICAgICB1bnNlbGVjdGVkID0gdGhpcy5fZm9yY2VVbnNlbGVjdEFsbCgpO1xuICAgIH1cblxuICAgIGxldCBpdGVtc1NlbGVjdGVkQ291bnQgPSAwO1xuICAgIGNvbnN0IGl0ZW1zU2VsZWN0ZWQ6IEFyZE9wdGlvblNpbXBsZVtdID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKCkpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiBbLi4udiwgLi4uaXRlbXNTZWxlY3RlZF0pO1xuXG4gICAgY29uc3QgaXRlbXNGYWlsZWRUb1NlbGVjdCA9IGl0ZW1zLnNsaWNlKGl0ZW1zU2VsZWN0ZWRDb3VudCAtIDEpO1xuICAgIHJldHVybiBbdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zU2VsZWN0ZWQpLCB1bnNlbGVjdGVkLCB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNGYWlsZWRUb1NlbGVjdCldO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW0gb2JqZWN0cyB0byBiZSB1bnNlbGVjdGVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpdGVtcyB1bnNlbGVjdGVkLCBtYXBwZWQgdG8gb25seSB0aGVpciB2YWx1ZXMuXG4gICAqL1xuICB1bnNlbGVjdEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogYW55W10ge1xuICAgIGxldCBza2lwcGVkSXRlbSA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaXNWYWx1ZVJlcXVpcmVkKCkgJiYgIXNraXBwZWRJdGVtKSB7XG4gICAgICAgIHNraXBwZWRJdGVtID0gdHJ1ZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiB2LmZpbHRlcih2ID0+IHYuc2VsZWN0ZWQoKSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogVW5oaWdobGlnaHRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXG4gICAqL1xuICB1bmhpZ2hsaWdodEFsbCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcygpKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuc2V0KFtdKTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgZ2l2ZW4gaXRlbSwgd2hpbGUgdW5oaWdobGlnaHRpbmcgYWxsIG90aGVyIGl0ZW1zLiBEb2VzIG5vdGhpbmcgd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZC5cbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIEByZXR1cm5zIFRoZSBoaWdobGlnaHRlZCBpdGVtLlxuICAgKi9cbiAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb25TaW1wbGUpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtKTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyBhbGwgZ2l2ZW4gaXRlbXMuXG4gICAqIEBwYXJhbSBpdGVtcyBBIHJlc3Qgb3BlcmF0b3IgYXJyYXkgb2YgaXRlbXMgdG8gYmUgaGlnaGxpZ2h0ZWQuXG4gICAqIEByZXR1cm5zIFRoZSBsYXN0IGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IEFyZE9wdGlvblNpbXBsZSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy51cGRhdGUodiA9PiBbLi4udiwgLi4uaXRlbXNdKTtcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xuICB9XG4gIC8qKlxuICAgKiBVbmhpZ2hsaWdodHMgYWxsIGdpdmVuIGl0ZW1zLlxuICAgKiBAcGFyYW0gaXRlbXMgQSByZXN0IG9wZXJhdG9yIGFycmF5IG9mIGl0ZW1zIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXG4gICAqL1xuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvblNpbXBsZVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQoKSkgcmV0dXJuO1xuXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMudXBkYXRlKHYgPT4gdi5maWx0ZXIodiA9PiB2LmhpZ2hsaWdodGVkKCkpKTtcbiAgfVxuICAvKipcbiAgICogSGlnaGxpZ2h0cyB0aGUgZmlyc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICovXG4gIGhpZ2hsaWdodEZpcnN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG5cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLmhpZ2hsaWdodGFibGVJdGVtcygpLmZpcnN0KCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBsYXN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRMYXN0SXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICB0aGlzLnVuaGlnaGxpZ2h0QWxsKCk7XG5cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLmhpZ2hsaWdodGFibGVJdGVtcygpLmxhc3QoKTtcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgYWxsIG5vbi1kaXNhYmxlZCBpdGVtcy5cbiAgICovXG4gIGhpZ2hsaWdodEFsbEl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLmhpZ2hsaWdodGFibGVJdGVtcygpO1xuXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLml0ZW1zVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIGRlZmluZWQgYnkgdGhlIG9mZnNldCBhbW91bnQuXG4gICAqXG4gICAqIElmIGBoYXNTaGlmdGAgaXMgc2V0IHRvIHRydWUsIGFsbCBvcmlnaW5hbGx5IGhpZ2hsaWdodGVkIGl0ZW1zIGFyZSBrZXB0LiBPdGhlcndpc2UsIGFsbCBvcmlnaW5hbCBpdGVtcyBhcmUgdW5zZWxlY3RlZC5cbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxuICAgKiBAcGFyYW0gaGFzU2hpZnQgV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIHNoaWZ0IGtleSBwcmVzc2VkLlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBoaWdobGlnaHRlZC5cbiAgICovXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRPcHRpb25TaW1wbGUgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNBbnlJdGVtSGlnaGxpZ2h0ZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5oaWdobGlnaHRlZEl0ZW1zKCkubGFzdCgpO1xuICAgIGNvbnN0IGl0ZW1zV2l0aG91dERpc2FibGVkID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoXG4gICAgICBpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkgJiYgKCF0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpIHx8IGl0ZW0uc2VsZWN0ZWQoKSlcbiAgICApO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtc1dpdGhvdXREaXNhYmxlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4ID09PSBjdXJyZW50SXRlbS5pbmRleCk7XG5cbiAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IGN1cnJlbnRJbmRleEluSXRlbXMgKyBvZmZzZXQ7XG4gICAgaWYgKG5leHRJdGVtSW5kZXggPj0gaXRlbXNXaXRob3V0RGlzYWJsZWQubGVuZ3RoKSB7XG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKG5leHRJdGVtSW5kZXggPCAwKSB7XG4gICAgICBuZXh0SXRlbUluZGV4ICs9IGl0ZW1zV2l0aG91dERpc2FibGVkLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaXRlbXNXaXRob3V0RGlzYWJsZWRbbmV4dEl0ZW1JbmRleF07XG5cbiAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSkge1xuICAgICAgaWYgKGl0ZW1Ub0hpZ2hsaWdodC5oaWdobGlnaHRlZCgpKSB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIC8qKlxuICAgKiBGaW5kcyBhbGwgaGlnaGxpZ2h0YWJsZSBpdGVtcy4gQW4gaXRlbSBpcyBjb25zaWRlcmVkIGhpZ2hsaWdodGFibGUgaWYgaXQgaXMgKipub3QqKiBkaXNhYmxlZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIGhpZ2hsaWdodGFibGUgaXRlbXMuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodGFibGVJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2l0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSkpO1xufVxuIl19
@@ -33,7 +33,6 @@ export class SimplestItemStorage {
33
33
  this._items.set(items.map((item, index) => {
34
34
  return this._setItemsMapFn(item, index, areItemsPrimitive);
35
35
  }));
36
- return areItemsPrimitive;
37
36
  }
38
37
  _primitiveItemsMapFn(item) {
39
38
  return { value: item };
@@ -42,7 +41,7 @@ export class SimplestItemStorage {
42
41
  if (areItemsPrimitive) {
43
42
  return {
44
43
  itemData: signal(rawItemData),
45
- index: signal(index),
44
+ index: index,
46
45
  value: signal(rawItemData.value),
47
46
  label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),
48
47
  selected: signal(false),
@@ -50,15 +49,15 @@ export class SimplestItemStorage {
50
49
  };
51
50
  }
52
51
  //get value
53
- const valuePath = this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;
52
+ const valuePath = this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.suggValueFrom;
54
53
  const value = resolvePath(rawItemData, valuePath);
55
54
  //get label
56
- const labelPath = this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;
55
+ const labelPath = this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.suggLabelFrom;
57
56
  const label = resolvePath(rawItemData, labelPath) ?? value;
58
57
  //return
59
58
  return {
60
59
  itemData: signal(rawItemData),
61
- index: signal(index),
60
+ index: index,
62
61
  value: signal(value),
63
62
  label: signal(label?.toString?.() ?? String(label)),
64
63
  selected: signal(false),
@@ -104,7 +103,7 @@ export class SimplestItemStorage {
104
103
  */
105
104
  unhighlightItem(item) {
106
105
  item.highlighted.set(false);
107
- if (this._highlightedItem()?.index() === item.index())
106
+ if (this._highlightedItem()?.index === item.index)
108
107
  this._highlightedItem.set(null);
109
108
  }
110
109
  /**
@@ -142,7 +141,7 @@ export class SimplestItemStorage {
142
141
  return this.highlightFirstItem();
143
142
  }
144
143
  const items = this._items();
145
- const currentIndexInItems = items.findIndex(item => item.index() === currentItem.index());
144
+ const currentIndexInItems = items.findIndex(item => item.index === currentItem.index);
146
145
  let nextItemIndex = currentIndexInItems + offset;
147
146
  if (nextItemIndex >= items.length) {
148
147
  nextItemIndex -= items.length;
@@ -155,4 +154,4 @@ export class SimplestItemStorage {
155
154
  return itemToHighlight;
156
155
  }
157
156
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlc3QtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9zaW1wbGVzdC1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWMxRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQTZCLGNBQXVDO1FBQXZDLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtRQUhuRCxXQUFNLEdBQUcsTUFBTSxDQUEyQixFQUFFLENBQUMsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBRyxNQUFNLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBSW5GOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUM7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5RDs7V0FFRztRQUNNLHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBYlosQ0FBQztJQWV4RTs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9C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SSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxNQUFjO1FBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTFGLElBQUksYUFBYSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmVzb2x2ZVBhdGggfSBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcclxuaW1wb3J0IHsgYW55LCBpc0RlZmluZWQsIGlzUHJpbWl0aXZlIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlc3RJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XHJcbiAgdmFsdWVGcm9tOiBzdHJpbmc7XHJcbiAgbGFiZWxGcm9tOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdCB7XHJcbiAgcmVhZG9ubHkgdmFsdWVGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgbGFiZWxGcm9tOiBTaWduYWw8TnVsbGFibGU8c3RyaW5nPj47XHJcbiAgcmVhZG9ubHkgREVGQVVMVFM6IFNpbXBsZXN0SXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHM7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTaW1wbGVzdEl0ZW1TdG9yYWdlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtcyA9IHNpZ25hbDxBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtW10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEl0ZW0gPSBzaWduYWw8TnVsbGFibGU8QXJkU2ltcGxlc3RTdG9yYWdlSXRlbT4+KG51bGwpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9hcmRQYXJlbnRDb21wOiBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdCkge31cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbGwgaXRlbXMuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XHJcbiAgLyoqXHJcbiAgICogVGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuX2hpZ2hsaWdodGVkSXRlbS5hc1JlYWRvbmx5KCk7XHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGlzQW55SXRlbUhpZ2hsaWdodGVkID0gY29tcHV0ZWQoKCkgPT4gaXNEZWZpbmVkKHRoaXMuX2hpZ2hsaWdodGVkSXRlbSgpKSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIGl0ZW1zLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQgY29tcG9uZW50IGZvciBgc3VnZ1ZhbHVlRnJvbWAgYW5kIGBzdWdnTGFiZWxGcm9tYC5cclxuICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2YgaXRlbXMgdG8gYmUgc2V0IGFzIHRoZSBjb21wb25lbnQncyBpdGVtcy5cclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgaXRlbXMgaXMgb2YgcHJpbWl0aXZlIHR5cGUsIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICBzZXRJdGVtcyhpdGVtczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xyXG4gICAgaWYgKGFueShpdGVtcywgaXNQcmltaXRpdmUpKSB7XHJcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4pO1xyXG4gICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faXRlbXMuc2V0KFxyXG4gICAgICBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGFyZUl0ZW1zUHJpbWl0aXZlO1xyXG4gIH1cclxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xyXG4gICAgcmV0dXJuIHsgdmFsdWU6IGl0ZW0gfTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0ge1xyXG4gICAgaWYgKGFyZUl0ZW1zUHJpbWl0aXZlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXHJcbiAgICAgICAgaW5kZXg6IHNpZ25hbChpbmRleCksXHJcbiAgICAgICAgdmFsdWU6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZSksXHJcbiAgICAgICAgbGFiZWw6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSkpLFxyXG4gICAgICAgIHNlbGVjdGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy9nZXQgdmFsdWVcclxuICAgIGNvbnN0IHZhbHVlUGF0aCA9XHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAudmFsdWVGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLnZhbHVlRnJvbTtcclxuICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHZhbHVlUGF0aCk7XHJcblxyXG4gICAgLy9nZXQgbGFiZWxcclxuICAgIGNvbnN0IGxhYmVsUGF0aCA9XHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLkRFRkFVTFRTLmxhYmVsRnJvbTtcclxuICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGxhYmVsUGF0aCkgPz8gdmFsdWU7XHJcblxyXG4gICAgLy9yZXR1cm5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGl0ZW1EYXRhOiBzaWduYWwocmF3SXRlbURhdGEpLFxyXG4gICAgICBpbmRleDogc2lnbmFsKGluZGV4KSxcclxuICAgICAgdmFsdWU6IHNpZ25hbCh2YWx1ZSksXHJcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcclxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtIHRvIHNlbGVjdC5cclxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0uXHJcbiAgICovXHJcbiAgc2VsZWN0SXRlbShpdGVtOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtKTogYW55IHtcclxuICAgIHJldHVybiBpdGVtLnZhbHVlO1xyXG4gIH1cclxuICBzZWxlY3RDdXJyZW50KCk6IGFueSB7XHJcbiAgICBjb25zdCBoaSA9IHRoaXMuX2hpZ2hsaWdodGVkSXRlbSgpO1xyXG4gICAgaWYgKCFoaSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdEl0ZW0oaGkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5oaWdobGlnaHRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXHJcbiAgICovXHJcbiAgdW5oaWdobGlnaHRDdXJyZW50KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaGkgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW0oKTtcclxuICAgIGlmIChoaSkge1xyXG4gICAgICBoaS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRJdGVtLnNldChudWxsKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyBhIGdpdmVuIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYmUgaGlnaGxpZ2h0ZWQuXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0SXRlbShpdGVtOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuaGlnaGxpZ2h0Q3VycmVudCgpO1xyXG5cclxuICAgIGl0ZW0uaGlnaGxpZ2h0ZWQuc2V0KHRydWUpO1xyXG5cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVuaGlnaGxpZ2h0cyBhIGdpdmVuIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGl0ZW0gdG8gYmUgdW5oaWdobGlnaHRlZC5cclxuICAgKi9cclxuICB1bmhpZ2hsaWdodEl0ZW0oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IHZvaWQge1xyXG4gICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xyXG5cclxuICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZEl0ZW0oKT8uaW5kZXgoKSA9PT0gaXRlbS5pbmRleCgpKSB0aGlzLl9oaWdobGlnaHRlZEl0ZW0uc2V0KG51bGwpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIaWdobGlnaHRzIHRoZSBmaXJzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXHJcbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0gfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5faXRlbXMoKS5sZW5ndGgpIHJldHVybiBudWxsO1xyXG5cclxuICAgIHRoaXMudW5oaWdobGlnaHRDdXJyZW50KCk7XHJcblxyXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gdGhpcy5faXRlbXMoKS5maXJzdCgpO1xyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcblxyXG4gICAgcmV0dXJuIGl0ZW1Ub0hpZ2hsaWdodDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGlnaGxpZ2h0cyB0aGUgbGFzdCBpdGVtIG91dCBvZiBhbGwgaXRlbXMuXHJcbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0TGFzdEl0ZW0oKTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLl9pdGVtcygpLmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgdGhpcy51bmhpZ2hsaWdodEN1cnJlbnQoKTtcclxuXHJcbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLl9pdGVtcygpLmxhc3QoKTtcclxuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbShpdGVtVG9IaWdobGlnaHQpO1xyXG5cclxuICAgIHJldHVybiBpdGVtVG9IaWdobGlnaHQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhpZ2hsaWdodHMgdGhlIG5leHQgbm9uLWRpc2FibGVkIGl0ZW0gZGVmaW5lZCBieSB0aGUgb2Zmc2V0IGFtb3VudC5cclxuICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBhbW91bnQgb2YgaXRlbXMgdG8gb2Zmc2V0IHRoZSBoaWdobGlnaHQgYnkuXHJcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gaGlnaGxpZ2h0ZWQuXHJcbiAgICovXHJcbiAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIpOiBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtIHwgbnVsbCB7XHJcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuX2hpZ2hsaWdodGVkSXRlbSgpO1xyXG4gICAgaWYgKCFjdXJyZW50SXRlbSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5faXRlbXMoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleEluSXRlbXMgPSBpdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4KCkgPT09IGN1cnJlbnRJdGVtLmluZGV4KCkpO1xyXG5cclxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5JdGVtcyArIG9mZnNldDtcclxuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4IC09IGl0ZW1zLmxlbmd0aDtcclxuICAgIH0gZWxzZSBpZiAobmV4dEl0ZW1JbmRleCA8IDApIHtcclxuICAgICAgbmV4dEl0ZW1JbmRleCArPSBpdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBpdGVtc1tuZXh0SXRlbUluZGV4XTtcclxuXHJcbiAgICB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcclxuXHJcbiAgICByZXR1cm4gaXRlbVRvSGlnaGxpZ2h0O1xyXG4gIH1cclxufVxyXG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlc3QtaXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9zaW1wbGVzdC1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWMxRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQTZCLGNBQXVDO1FBQXZDLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtRQUhuRCxXQUFNLEdBQUcsTUFBTSxDQUEyQixFQUFFLENBQUMsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBRyxNQUFNLENBQW1DLElBQUksQ0FBQyxDQUFDO1FBSW5GOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUM7O1dBRUc7UUFDTSxvQkFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5RDs7V0FFRztRQUNNLHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBYlosQ0FBQztJQWV4RTs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDN0MsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDYixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFDTyxvQkFBb0IsQ0FBSSxJQUFPO1FBQ3JDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNPLGNBQWMsQ0FBQyxXQUFnQixFQUFFLEtBQWEsRUFBRSxpQkFBMEI7UUFDaEYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQzdCLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDaEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZCLFdBQVcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQzNCLENBQUM7UUFDSixDQUFDO1FBQ0QsV0FBVztRQUNYLE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDbkgsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVsRCxXQUFXO1FBQ1gsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNuSCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUUzRCxRQUFRO1FBQ1IsT0FBTztZQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzdCLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLElBQTRCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsYUFBYTtRQUNYLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxJQUE0QjtRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsSUFBNEI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUs7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRDs7O09BR0c7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7T0FHRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsTUFBYztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRGLElBQUksYUFBYSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLGFBQWEsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc29sdmVQYXRoIH0gZnJvbSAncmVzb2x2ZS1vYmplY3QtcGF0aCc7XG5pbXBvcnQgeyBhbnksIGlzRGVmaW5lZCwgaXNQcmltaXRpdmUgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlc3RJdGVtU3RvcmFnZUhvc3REZWZhdWx0cyB7XG4gIHN1Z2dWYWx1ZUZyb206IHN0cmluZztcbiAgc3VnZ0xhYmVsRnJvbTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVzdEl0ZW1TdG9yYWdlSG9zdCB7XG4gIHJlYWRvbmx5IHZhbHVlRnJvbTogU2lnbmFsPE51bGxhYmxlPHN0cmluZz4+O1xuICByZWFkb25seSBsYWJlbEZyb206IFNpZ25hbDxOdWxsYWJsZTxzdHJpbmc+PjtcbiAgcmVhZG9ubHkgREVGQVVMVFM6IFNpbXBsZXN0SXRlbVN0b3JhZ2VIb3N0RGVmYXVsdHM7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVzdEl0ZW1TdG9yYWdlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXMgPSBzaWduYWw8QXJkU2ltcGxlc3RTdG9yYWdlSXRlbVtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hpZ2hsaWdodGVkSXRlbSA9IHNpZ25hbDxOdWxsYWJsZTxBcmRTaW1wbGVzdFN0b3JhZ2VJdGVtPj4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfYXJkUGFyZW50Q29tcDogU2ltcGxlc3RJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW0gPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW0uYXNSZWFkb25seSgpO1xuICAvKipcbiAgICogVHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaXRlbSBpcyBoaWdobGlnaHRlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNBbnlJdGVtSGlnaGxpZ2h0ZWQgPSBjb21wdXRlZCgoKSA9PiBpc0RlZmluZWQodGhpcy5faGlnaGxpZ2h0ZWRJdGVtKCkpKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgaXRlbXMuIFRha2VzIGludG8gYWNjb3VudCB0aGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQgZm9yIGBzdWdnVmFsdWVGcm9tYCBhbmQgYHN1Z2dMYWJlbEZyb21gLlxuICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2YgaXRlbXMgdG8gYmUgc2V0IGFzIHRoZSBjb21wb25lbnQncyBpdGVtcy5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIGl0ZW1zIGlzIG9mIHByaW1pdGl2ZSB0eXBlLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBzZXRJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcbiAgICBsZXQgYXJlSXRlbXNQcmltaXRpdmUgPSBmYWxzZTtcbiAgICBpZiAoYW55KGl0ZW1zLCBpc1ByaW1pdGl2ZSkpIHtcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4pO1xuICAgICAgYXJlSXRlbXNQcmltaXRpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuX2l0ZW1zLnNldChcbiAgICAgIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XG4gIH1cbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0ge1xuICAgIGlmIChhcmVJdGVtc1ByaW1pdGl2ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgdmFsdWU6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZSksXG4gICAgICAgIGxhYmVsOiBzaWduYWwocmF3SXRlbURhdGEudmFsdWU/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcocmF3SXRlbURhdGEudmFsdWUpKSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxuICAgICAgfTtcbiAgICB9XG4gICAgLy9nZXQgdmFsdWVcbiAgICBjb25zdCB2YWx1ZVBhdGggPVxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuc3VnZ1ZhbHVlRnJvbTtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCB2YWx1ZVBhdGgpO1xuXG4gICAgLy9nZXQgbGFiZWxcbiAgICBjb25zdCBsYWJlbFBhdGggPVxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSgpID8/IHRoaXMuX2FyZFBhcmVudENvbXAuREVGQVVMVFMuc3VnZ0xhYmVsRnJvbTtcbiAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xuXG4gICAgLy9yZXR1cm5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB2YWx1ZTogc2lnbmFsKHZhbHVlKSxcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcbiAgICAgIHNlbGVjdGVkOiBzaWduYWwoZmFsc2UpLFxuICAgICAgaGlnaGxpZ2h0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBnaXZlbiBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW0gdG8gc2VsZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0uXG4gICAqL1xuICBzZWxlY3RJdGVtKGl0ZW06IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0pOiBhbnkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG4gIHNlbGVjdEN1cnJlbnQoKTogYW55IHtcbiAgICBjb25zdCBoaSA9IHRoaXMuX2hpZ2hsaWdodGVkSXRlbSgpO1xuICAgIGlmICghaGkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0SXRlbShoaSk7XG4gIH1cblxuICAvKipcbiAgICogVW5oaWdobGlnaHRzIGFsbCBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgaXRlbXMuXG4gICAqL1xuICB1bmhpZ2hsaWdodEN1cnJlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgaGkgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW0oKTtcbiAgICBpZiAoaGkpIHtcbiAgICAgIGhpLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgYSBnaXZlbiBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICovXG4gIGhpZ2hsaWdodEl0ZW0oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IHZvaWQge1xuICAgIHRoaXMudW5oaWdobGlnaHRDdXJyZW50KCk7XG5cbiAgICBpdGVtLmhpZ2hsaWdodGVkLnNldCh0cnVlKTtcblxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XG4gIH1cbiAgLyoqXG4gICAqIFVuaGlnaGxpZ2h0cyBhIGdpdmVuIGl0ZW0uXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRvIGJlIHVuaGlnaGxpZ2h0ZWQuXG4gICAqL1xuICB1bmhpZ2hsaWdodEl0ZW0oaXRlbTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSk6IHZvaWQge1xuICAgIGl0ZW0uaGlnaGxpZ2h0ZWQuc2V0KGZhbHNlKTtcblxuICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZEl0ZW0oKT8uaW5kZXggPT09IGl0ZW0uaW5kZXgpIHRoaXMuX2hpZ2hsaWdodGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIGZpcnN0IGl0ZW0gb3V0IG9mIGFsbCBpdGVtcy5cbiAgICogQHJldHVybnMgVGhlIGhpZ2hsaWdodGVkIGl0ZW0uXG4gICAqL1xuICBoaWdobGlnaHRGaXJzdEl0ZW0oKTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB8IG51bGwge1xuICAgIGlmICghdGhpcy5faXRlbXMoKS5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgdGhpcy51bmhpZ2hsaWdodEN1cnJlbnQoKTtcblxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IHRoaXMuX2l0ZW1zKCkuZmlyc3QoKTtcbiAgICB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcblxuICAgIHJldHVybiBpdGVtVG9IaWdobGlnaHQ7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIGxhc3QgaXRlbSBvdXQgb2YgYWxsIGl0ZW1zLlxuICAgKiBAcmV0dXJucyBUaGUgaGlnaGxpZ2h0ZWQgaXRlbS5cbiAgICovXG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZFNpbXBsZXN0U3RvcmFnZUl0ZW0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX2l0ZW1zKCkubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgIHRoaXMudW5oaWdobGlnaHRDdXJyZW50KCk7XG5cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSB0aGlzLl9pdGVtcygpLmxhc3QoKTtcbiAgICB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcblxuICAgIHJldHVybiBpdGVtVG9IaWdobGlnaHQ7XG4gIH1cbiAgLyoqXG4gICAqIEhpZ2hsaWdodHMgdGhlIG5leHQgbm9uLWRpc2FibGVkIGl0ZW0gZGVmaW5lZCBieSB0aGUgb2Zmc2V0IGFtb3VudC5cbiAgICogQHBhcmFtIG9mZnNldCBUaGUgYW1vdW50IG9mIGl0ZW1zIHRvIG9mZnNldCB0aGUgaGlnaGxpZ2h0IGJ5LlxuICAgKiBAcmV0dXJucyBUaGUgaXRlbSBoaWdobGlnaHRlZC5cbiAgICovXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyKTogQXJkU2ltcGxlc3RTdG9yYWdlSXRlbSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtKCk7XG4gICAgaWYgKCFjdXJyZW50SXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Rmlyc3RJdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5faXRlbXMoKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhJbkl0ZW1zID0gaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pbmRleCA9PT0gY3VycmVudEl0ZW0uaW5kZXgpO1xuXG4gICAgbGV0IG5leHRJdGVtSW5kZXggPSBjdXJyZW50SW5kZXhJbkl0ZW1zICsgb2Zmc2V0O1xuICAgIGlmIChuZXh0SXRlbUluZGV4ID49IGl0ZW1zLmxlbmd0aCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCAtPSBpdGVtcy5sZW5ndGg7XG4gICAgfSBlbHNlIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCArPSBpdGVtcy5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1Ub0hpZ2hsaWdodCA9IGl0ZW1zW25leHRJdGVtSW5kZXhdO1xuXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XG5cbiAgICByZXR1cm4gaXRlbVRvSGlnaGxpZ2h0O1xuICB9XG59XG4iXX0=
@@ -39,8 +39,8 @@ export class PaginationModel {
39
39
  totalPages: this.lastPageNum(),
40
40
  totalItems: total,
41
41
  page: this._ardHostCmp.page(),
42
- currentItemsFirst: pageItems[0],
43
- currentItemsLast: pageItems[1],
42
+ currentItemsFrom: pageItems[0],
43
+ currentItemsTo: pageItems[1],
44
44
  };
45
45
  });
46
46
  this.getPartialContext = computed(() => {
@@ -87,4 +87,4 @@ export class PaginationModel {
87
87
  return this._ardHostCmp.page();
88
88
  }
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUE2QnhDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQTZCLFdBQWdDO1FBQWhDLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUVwRCx3QkFBbUIsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhGLGdCQUFXLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNNLGVBQVUsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBQ00sdUJBQWtCLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUU7WUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFB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LE9BQU8sSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQTRCRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsU2lnbmFsLCBTaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbk1vZGVsSG9zdCB7XHJcbiAgcmVhZG9ubHkgY29tcG9uZW50SWQ6IHN0cmluZztcclxuICByZWFkb25seSB0b3RhbEl0ZW1zOiBTaWduYWw8bnVtYmVyPjtcclxuICByZWFkb25seSBvcHRpb25zOiBTaWduYWw8bnVtYmVyW10gfCB7IHZhbHVlOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdPjtcclxuICByZWFkb25seSBpdGVtc1BlclBhZ2U6IE1vZGVsU2lnbmFsPG51bWJlcj47XHJcbiAgcmVhZG9ubHkgcGFnZTogTW9kZWxTaWduYWw8bnVtYmVyPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ3VycmVudEl0ZW1zQ29udGV4dCB7XHJcbiAgcmVhZG9ubHkgY3VycmVudEl0ZW1zRmlyc3Q6IG51bWJlcjtcclxuICByZWFkb25seSBjdXJyZW50SXRlbXNMYXN0OiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgdG90YWxJdGVtczogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IHRvdGFsUGFnZXM6IG51bWJlcjtcclxuICByZWFkb25seSBwYWdlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNvbnRleHQgZXh0ZW5kcyBQYWdpbmF0aW9uQ3VycmVudEl0ZW1zQ29udGV4dCB7XHJcbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gfCB7IHZhbHVlOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdO1xyXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZTogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IG9uSXRlbXNQZXJQYWdlQ2hhbmdlOiAobmV3VmFsdWU6IG51bWJlcikgPT4gdm9pZDtcclxuICByZWFkb25seSBmaXJzdFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcclxuICByZWFkb25seSBwcmV2UGFnZURpc2FibGVkOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IG5leHRQYWdlRGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgbGFzdFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcclxuICByZWFkb25seSBvblBhZ2VDaGFuZ2U6IChuZXdQYWdlOiBudW1iZXIpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uTW9kZWwge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2FyZEhvc3RDbXA6IFBhZ2luYXRpb25Nb2RlbEhvc3QpIHt9XHJcblxyXG4gIHJlYWRvbmx5IGlzVG90YWxJdGVtc0RlZmluZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiBpc0RlZmluZWQodGhpcy5fYXJkSG9zdENtcC50b3RhbEl0ZW1zKCkpKTtcclxuXHJcbiAgcmVhZG9ubHkgbGFzdFBhZ2VOdW0gPSBjb21wdXRlZDxudW1iZXIgfCBudWxsPigoKSA9PiB7XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpO1xyXG4gICAgaWYgKCF0b3RhbCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gdGhpcy5fYXJkSG9zdENtcC5pdGVtc1BlclBhZ2UoKSk7XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgaXNMYXN0UGFnZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgIHJldHVybiAhaXNEZWZpbmVkKHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpKSB8fCB0aGlzLmxhc3RQYWdlTnVtKCkgPT09IHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGl0ZW1zT25DdXJyZW50UGFnZSA9IGNvbXB1dGVkPFtudW1iZXIsIG51bWJlcl0gfCBudWxsPigoKSA9PiB7XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpO1xyXG4gICAgaWYgKCF0b3RhbCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBNYXRoLm1pbih0b3RhbCwgKHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpIC0gMSkgKiB0aGlzLl9hcmRIb3N0Q21wLml0ZW1zUGVyUGFnZSgpICsgMSksXHJcbiAgICAgIE1hdGgubWluKHRvdGFsLCB0aGlzLl9hcmRIb3N0Q21wLnBhZ2UoKSAqIHRoaXMuX2FyZEhvc3RDbXAuaXRlbXNQZXJQYWdlKCkpLFxyXG4gICAgXTtcclxuICB9KTtcclxuXHJcbiAgLy8hIGFjdGlvbiBkaXNhYmxlZCBzdGF0ZXNcclxuICByZWFkb25seSBmaXJzdFBhZ2VEaXNhYmxlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcclxuICAgIHJldHVybiAhaXNEZWZpbmVkKHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpKSB8fCB0aGlzLl9hcmRIb3N0Q21wLnBhZ2UoKSA9PT0gMTtcclxuICB9KTtcclxuICByZWFkb25seSBsYXN0UGFnZURpc2FibGVkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xyXG4gICAgcmV0dXJuICFpc0RlZmluZWQodGhpcy5fYXJkSG9zdENtcC50b3RhbEl0ZW1zKCkpIHx8IHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpID09PSB0aGlzLmxhc3RQYWdlTnVtKCk7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBjdXJyZW50IHBhZ2VcclxuICBzZXRQYWdlKHY6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJkSG9zdENtcC5wYWdlLnNldCh2KTtcclxuICB9XHJcbiAgZ2V0UGFnZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xyXG4gIH1cclxuICBnb1RvRmlyc3RQYWdlKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQoKSkgcmV0dXJuIG51bGw7XHJcbiAgICB0aGlzLnNldFBhZ2UoMSk7XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcbiAgZ29Ub1ByZXZQYWdlKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQoKSkgcmV0dXJuIG51bGw7XHJcbiAgICB0aGlzLnNldFBhZ2UodGhpcy5fYXJkSG9zdENtcC5wYWdlKCkgLSAxKTtcclxuICAgIHJldHVybiB0aGlzLl9hcmRIb3N0Q21wLnBhZ2UoKTtcclxuICB9XHJcbiAgZ29Ub05leHRQYWdlKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMubGFzdFBhZ2VEaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcclxuICAgIHRoaXMuc2V0UGFnZSh0aGlzLl9hcmRIb3N0Q21wLnBhZ2UoKSArIDEpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xyXG4gIH1cclxuICBnb1RvTGFzdFBhZ2UoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5sYXN0UGFnZURpc2FibGVkKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5zZXRQYWdlKHRoaXMubGFzdFBhZ2VOdW0oKSEpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvbnRleHRcclxuICByZWFkb25seSBnZXRDdXJyZW50SXRlbXNDb250ZXh0ID0gY29tcHV0ZWQ8UGFnaW5hdGlvbkN1cnJlbnRJdGVtc0NvbnRleHQ+KCgpID0+IHtcclxuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5fYXJkSG9zdENtcC50b3RhbEl0ZW1zKCk7XHJcbiAgICBpZiAoIXRvdGFsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1GVCR7dGhpcy5fYXJkSG9zdENtcC5jb21wb25lbnRJZH05MDogQ2Fubm90IHVzZSBwYWdpbmF0aW9uIG1vZGVsIHdpdGhvdXQgZGVmaW5pbmcgdG90YWwgaXRlbXMgZmlyc3QuYCk7XHJcblxyXG4gICAgY29uc3QgcGFnZUl0ZW1zID0gdGhpcy5pdGVtc09uQ3VycmVudFBhZ2UoKSE7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0b3RhbFBhZ2VzOiB0aGlzLmxhc3RQYWdlTnVtKCkhLFxyXG4gICAgICB0b3RhbEl0ZW1zOiB0b3RhbCxcclxuICAgICAgcGFnZTogdGhpcy5fYXJkSG9zdENtcC5wYWdlKCksXHJcbiAgICAgIGN1cnJlbnRJdGVtc0ZpcnN0OiBwYWdlSXRlbXNbMF0sXHJcbiAgICAgIGN1cnJlbnRJdGVtc0xhc3Q6IHBhZ2VJdGVtc1sxXSxcclxuICAgIH07XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZ2V0UGFydGlhbENvbnRleHQgPSBjb21wdXRlZDxPbWl0PFBhZ2luYXRpb25Db250ZXh0LCAnb25JdGVtc1BlclBhZ2VDaGFuZ2UnIHwgJ29uUGFnZUNoYW5nZSc+PigoKSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi50aGlzLmdldEN1cnJlbnRJdGVtc0NvbnRleHQoKSxcclxuICAgICAgaXRlbXNQZXJQYWdlT3B0aW9uczogdGhpcy5fYXJkSG9zdENtcC5vcHRpb25zKCksXHJcbiAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5fYXJkSG9zdENtcC5pdGVtc1BlclBhZ2UoKSxcclxuICAgICAgZmlyc3RQYWdlRGlzYWJsZWQ6IHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQoKSxcclxuICAgICAgcHJldlBhZ2VEaXNhYmxlZDogdGhpcy5maXJzdFBhZ2VEaXNhYmxlZCgpLFxyXG4gICAgICBuZXh0UGFnZURpc2FibGVkOiB0aGlzLmxhc3RQYWdlRGlzYWJsZWQoKSxcclxuICAgICAgbGFzdFBhZ2VEaXNhYmxlZDogdGhpcy5sYXN0UGFnZURpc2FibGVkKCksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG59XHJcbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUE2QnhDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQTZCLFdBQWdDO1FBQWhDLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUVwRCx3QkFBbUIsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhGLGdCQUFXLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNNLGVBQVUsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBQ00sdUJBQWtCLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUU7WUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFB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QUFPLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0E0QkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlbFNpZ25hbCwgU2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25Nb2RlbEhvc3Qge1xuICByZWFkb25seSBjb21wb25lbnRJZDogc3RyaW5nO1xuICByZWFkb25seSB0b3RhbEl0ZW1zOiBTaWduYWw8bnVtYmVyPjtcbiAgcmVhZG9ubHkgb3B0aW9uczogU2lnbmFsPG51bWJlcltdIHwgeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXT47XG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZTogTW9kZWxTaWduYWw8bnVtYmVyPjtcbiAgcmVhZG9ubHkgcGFnZTogTW9kZWxTaWduYWw8bnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ3VycmVudEl0ZW1zQ29udGV4dCB7XG4gIHJlYWRvbmx5IGN1cnJlbnRJdGVtc0Zyb206IG51bWJlcjtcbiAgcmVhZG9ubHkgY3VycmVudEl0ZW1zVG86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG90YWxJdGVtczogbnVtYmVyO1xuICByZWFkb25seSB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHJlYWRvbmx5IHBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29udGV4dCBleHRlbmRzIFBhZ2luYXRpb25DdXJyZW50SXRlbXNDb250ZXh0IHtcbiAgcmVhZG9ubHkgaXRlbXNQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gfCB7IHZhbHVlOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICByZWFkb25seSBpdGVtc1BlclBhZ2U6IG51bWJlcjtcbiAgcmVhZG9ubHkgb25JdGVtc1BlclBhZ2VDaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICByZWFkb25seSBmaXJzdFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcHJldlBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbmV4dFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGFzdFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb25QYWdlQ2hhbmdlOiAobmV3UGFnZTogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbk1vZGVsIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfYXJkSG9zdENtcDogUGFnaW5hdGlvbk1vZGVsSG9zdCkge31cblxuICByZWFkb25seSBpc1RvdGFsSXRlbXNEZWZpbmVkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gaXNEZWZpbmVkKHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpKSk7XG5cbiAgcmVhZG9ubHkgbGFzdFBhZ2VOdW0gPSBjb21wdXRlZDxudW1iZXIgfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLl9hcmRIb3N0Q21wLnRvdGFsSXRlbXMoKTtcbiAgICBpZiAoIXRvdGFsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gdGhpcy5fYXJkSG9zdENtcC5pdGVtc1BlclBhZ2UoKSk7XG4gIH0pO1xuICByZWFkb25seSBpc0xhc3RQYWdlID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhaXNEZWZpbmVkKHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpKSB8fCB0aGlzLmxhc3RQYWdlTnVtKCkgPT09IHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgaXRlbXNPbkN1cnJlbnRQYWdlID0gY29tcHV0ZWQ8W251bWJlciwgbnVtYmVyXSB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpO1xuICAgIGlmICghdG90YWwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBbXG4gICAgICBNYXRoLm1pbih0b3RhbCwgKHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpIC0gMSkgKiB0aGlzLl9hcmRIb3N0Q21wLml0ZW1zUGVyUGFnZSgpICsgMSksXG4gICAgICBNYXRoLm1pbih0b3RhbCwgdGhpcy5fYXJkSG9zdENtcC5wYWdlKCkgKiB0aGlzLl9hcmRIb3N0Q21wLml0ZW1zUGVyUGFnZSgpKSxcbiAgICBdO1xuICB9KTtcblxuICAvLyEgYWN0aW9uIGRpc2FibGVkIHN0YXRlc1xuICByZWFkb25seSBmaXJzdFBhZ2VEaXNhYmxlZCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gIWlzRGVmaW5lZCh0aGlzLl9hcmRIb3N0Q21wLnRvdGFsSXRlbXMoKSkgfHwgdGhpcy5fYXJkSG9zdENtcC5wYWdlKCkgPT09IDE7XG4gIH0pO1xuICByZWFkb25seSBsYXN0UGFnZURpc2FibGVkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhaXNEZWZpbmVkKHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpKSB8fCB0aGlzLl9hcmRIb3N0Q21wLnBhZ2UoKSA9PT0gdGhpcy5sYXN0UGFnZU51bSgpO1xuICB9KTtcblxuICAvLyEgY3VycmVudCBwYWdlXG4gIHNldFBhZ2UodjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXJkSG9zdENtcC5wYWdlLnNldCh2KTtcbiAgfVxuICBnZXRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xuICB9XG4gIGdvVG9GaXJzdFBhZ2UoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQoKSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5zZXRQYWdlKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG4gIGdvVG9QcmV2UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5maXJzdFBhZ2VEaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLnNldFBhZ2UodGhpcy5fYXJkSG9zdENtcC5wYWdlKCkgLSAxKTtcbiAgICByZXR1cm4gdGhpcy5fYXJkSG9zdENtcC5wYWdlKCk7XG4gIH1cbiAgZ29Ub05leHRQYWdlKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmxhc3RQYWdlRGlzYWJsZWQoKSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5zZXRQYWdlKHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpICsgMSk7XG4gICAgcmV0dXJuIHRoaXMuX2FyZEhvc3RDbXAucGFnZSgpO1xuICB9XG4gIGdvVG9MYXN0UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5sYXN0UGFnZURpc2FibGVkKCkpIHJldHVybiBudWxsO1xuICAgIHRoaXMuc2V0UGFnZSh0aGlzLmxhc3RQYWdlTnVtKCkhKTtcbiAgICByZXR1cm4gdGhpcy5fYXJkSG9zdENtcC5wYWdlKCk7XG4gIH1cblxuICAvLyEgY29udGV4dFxuICByZWFkb25seSBnZXRDdXJyZW50SXRlbXNDb250ZXh0ID0gY29tcHV0ZWQ8UGFnaW5hdGlvbkN1cnJlbnRJdGVtc0NvbnRleHQ+KCgpID0+IHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuX2FyZEhvc3RDbXAudG90YWxJdGVtcygpO1xuICAgIGlmICghdG90YWwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1GVCR7dGhpcy5fYXJkSG9zdENtcC5jb21wb25lbnRJZH05MDogQ2Fubm90IHVzZSBwYWdpbmF0aW9uIG1vZGVsIHdpdGhvdXQgZGVmaW5pbmcgdG90YWwgaXRlbXMgZmlyc3QuYCk7XG5cbiAgICBjb25zdCBwYWdlSXRlbXMgPSB0aGlzLml0ZW1zT25DdXJyZW50UGFnZSgpITtcbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxQYWdlczogdGhpcy5sYXN0UGFnZU51bSgpISxcbiAgICAgIHRvdGFsSXRlbXM6IHRvdGFsLFxuICAgICAgcGFnZTogdGhpcy5fYXJkSG9zdENtcC5wYWdlKCksXG4gICAgICBjdXJyZW50SXRlbXNGcm9tOiBwYWdlSXRlbXNbMF0sXG4gICAgICBjdXJyZW50SXRlbXNUbzogcGFnZUl0ZW1zWzFdLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBnZXRQYXJ0aWFsQ29udGV4dCA9IGNvbXB1dGVkPE9taXQ8UGFnaW5hdGlvbkNvbnRleHQsICdvbkl0ZW1zUGVyUGFnZUNoYW5nZScgfCAnb25QYWdlQ2hhbmdlJz4+KCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRDdXJyZW50SXRlbXNDb250ZXh0KCksXG4gICAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiB0aGlzLl9hcmRIb3N0Q21wLm9wdGlvbnMoKSxcbiAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5fYXJkSG9zdENtcC5pdGVtc1BlclBhZ2UoKSxcbiAgICAgIGZpcnN0UGFnZURpc2FibGVkOiB0aGlzLmZpcnN0UGFnZURpc2FibGVkKCksXG4gICAgICBwcmV2UGFnZURpc2FibGVkOiB0aGlzLmZpcnN0UGFnZURpc2FibGVkKCksXG4gICAgICBuZXh0UGFnZURpc2FibGVkOiB0aGlzLmxhc3RQYWdlRGlzYWJsZWQoKSxcbiAgICAgIGxhc3RQYWdlRGlzYWJsZWQ6IHRoaXMubGFzdFBhZ2VEaXNhYmxlZCgpLFxuICAgIH07XG4gIH0pO1xufVxuIl19
@@ -0,0 +1,59 @@
1
+ export class Queue {
2
+ push(item) {
3
+ if (!this.tail)
4
+ return this.pushFront(item);
5
+ this.tail.next = new QueueItem(item);
6
+ this.tail = this.tail.next;
7
+ }
8
+ pushFront(item) {
9
+ this.head = new QueueItem(item, this.head);
10
+ if (!this.tail)
11
+ this.tail = this.head;
12
+ }
13
+ pop() {
14
+ const head = this.head;
15
+ if (!head)
16
+ return;
17
+ //replace head with the next item
18
+ this.head = head.next;
19
+ //delete the tail if there are no next items
20
+ if (!this.head)
21
+ this.tail = undefined;
22
+ return head.value;
23
+ }
24
+ peek() {
25
+ return this.head?.value;
26
+ }
27
+ clear() {
28
+ this.head = undefined;
29
+ this.tail = undefined;
30
+ }
31
+ get length() {
32
+ let length = 0;
33
+ let currentNode = this.head;
34
+ while (currentNode) {
35
+ length++;
36
+ currentNode = currentNode.next;
37
+ }
38
+ return length;
39
+ }
40
+ isEmpty() {
41
+ return !this.head;
42
+ }
43
+ toArray() {
44
+ const array = [];
45
+ let currentNode = this.head;
46
+ while (currentNode) {
47
+ array.push(currentNode.value);
48
+ currentNode = currentNode.next;
49
+ }
50
+ return array;
51
+ }
52
+ }
53
+ export class QueueItem {
54
+ constructor(value, next) {
55
+ this.value = value;
56
+ this.next = next;
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9tb2RlbHMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLEtBQUs7SUFJaEIsSUFBSSxDQUFDLElBQU87UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSyxDQUFDLElBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsU0FBUyxDQUFDLElBQU87UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxHQUFHO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0Qiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFFdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sV0FBVyxFQUFFLENBQUM7WUFDbkIsTUFBTSxFQUFFLENBQUM7WUFDVCxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU0sS0FBSyxHQUFRLEVBQUUsQ0FBQztRQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sV0FBVyxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDcEIsWUFDUyxLQUFRLEVBQ1IsSUFBbUI7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUNSLFNBQUksR0FBSixJQUFJLENBQWU7SUFDekIsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIElRdWV1ZSB7XG4gIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgUXVldWU8VCA9IHVua25vd24+IGltcGxlbWVudHMgSVF1ZXVlIHtcbiAgcHJpdmF0ZSBoZWFkPzogUXVldWVJdGVtPFQ+O1xuICBwcml2YXRlIHRhaWw/OiBRdWV1ZUl0ZW08VD47XG5cbiAgcHVzaChpdGVtOiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhaWwpIHJldHVybiB0aGlzLnB1c2hGcm9udChpdGVtKTtcbiAgICB0aGlzLnRhaWwhLm5leHQgPSBuZXcgUXVldWVJdGVtKGl0ZW0pO1xuICAgIHRoaXMudGFpbCA9IHRoaXMudGFpbCEubmV4dCE7XG4gIH1cbiAgcHVzaEZyb250KGl0ZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWQgPSBuZXcgUXVldWVJdGVtKGl0ZW0sIHRoaXMuaGVhZCk7XG4gICAgaWYgKCF0aGlzLnRhaWwpIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcbiAgfVxuICBwb3AoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaGVhZCA9IHRoaXMuaGVhZDtcbiAgICBpZiAoIWhlYWQpIHJldHVybjtcbiAgICAvL3JlcGxhY2UgaGVhZCB3aXRoIHRoZSBuZXh0IGl0ZW1cbiAgICB0aGlzLmhlYWQgPSBoZWFkLm5leHQ7XG4gICAgLy9kZWxldGUgdGhlIHRhaWwgaWYgdGhlcmUgYXJlIG5vIG5leHQgaXRlbXNcbiAgICBpZiAoIXRoaXMuaGVhZCkgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIGhlYWQudmFsdWU7XG4gIH1cbiAgcGVlaygpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkPy52YWx1ZTtcbiAgfVxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuICB9XG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBsZXQgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7XG4gICAgICBsZW5ndGgrKztcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5oZWFkO1xuICB9XG4gIHRvQXJyYXkoKTogVFtdIHtcbiAgICBjb25zdCBhcnJheTogVFtdID0gW107XG4gICAgbGV0IGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgYXJyYXkucHVzaChjdXJyZW50Tm9kZS52YWx1ZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUXVldWVJdGVtPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHZhbHVlOiBULFxuICAgIHB1YmxpYyBuZXh0PzogUXVldWVJdGVtPFQ+XG4gICkge31cbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { Directive } from '@angular/core';
2
- import { _FocusableComponentBase } from './focusable-component';
2
+ import { _FocusableComponentBase, _focusableComponentDefaults } from './focusable-component';
3
3
  import * as i0 from "@angular/core";
4
+ export const _ngModelComponentDefaults = _focusableComponentDefaults;
4
5
  /**
5
- * Common code for components, which implement the ControlValueAccessor.
6
+ * Common code for components which implement the ControlValueAccessor.
6
7
  *
7
8
  * **Warning**: `writeValue` function should be implemented on the child component!
8
9
  */
@@ -39,4 +40,4 @@ export class _NgModelComponentBase extends _FocusableComponentBase {
39
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _NgModelComponentBase, decorators: [{
40
41
  type: Directive
41
42
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdtb2RlbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVoRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSx1QkFBdUI7SUFJekU7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBZ0JELGtCQUFrQjtJQUNULE1BQU0sQ0FBQyxLQUFpQjtRQUMvQixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs4R0E1Q21CLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vZm9jdXNhYmxlLWNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQ29tbW9uIGNvZGUgZm9yIGNvbXBvbmVudHMsIHdoaWNoIGltcGxlbWVudCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAqXHJcbiAqICoqV2FybmluZyoqOiBgd3JpdGVWYWx1ZWAgZnVuY3Rpb24gc2hvdWxkIGJlIGltcGxlbWVudGVkIG9uIHRoZSBjaGlsZCBjb21wb25lbnQhXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yXHJcbiAgcHJvdGVjdGVkIF9vbkNoYW5nZVJlZ2lzdGVyZWQhOiAoXzogYW55KSA9PiB2b2lkO1xyXG4gIHByb3RlY3RlZCBfb25Ub3VjaGVkUmVnaXN0ZXJlZCE6ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHRvdWNoZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG4gICAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXIuXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQgPSBmbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHZhbHVlIGNoYW5nZS4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cclxuICAgKi9cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQgPSBmbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgZGlzYWJsZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXHJcbiAgICovXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgYSBuZXcgdmFsdWUgaW50byB0aGUgY29tcG9uZW50LiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcGFyYW0gdiBUaGUgbmV3IHZhbHVlIHRvIHdyaXRlLlxyXG4gICAqL1xyXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodjogYW55KTogdm9pZDsgLy8qIGFic3RyYWN0XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgYSBuZXcgdmFsdWUgaW50byB0aGUgY29tcG9uZW50LiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcGFyYW0gdiBUaGUgbmV3IHZhbHVlIHRvIHdyaXRlLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZW1pdENoYW5nZSgpOiB2b2lkOyAvLyogYWJzdHJhY3RcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb3ZlcnJpZGUgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICBzdXBlci5vbkJsdXIoZXZlbnQpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdtb2RlbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBK0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJMUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQThCLDJCQUEyQixDQUFDO0FBRWhHOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLHVCQUF1QjtJQU16RTs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUNEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLEVBQW9CO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUNEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFnQkQsa0JBQWtCO0lBQ1QsTUFBTSxDQUFDLEtBQWlCO1FBQy9CLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzhHQTlDbUIscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRDFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UsIF9mb2N1c2FibGVDb21wb25lbnREZWZhdWx0cywgX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9mb2N1c2FibGUtY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzIGV4dGVuZHMgX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzIHt9XG5cbmV4cG9ydCBjb25zdCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzOiBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzID0gX2ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzO1xuXG4vKipcbiAqIENvbW1vbiBjb2RlIGZvciBjb21wb25lbnRzIHdoaWNoIGltcGxlbWVudCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKlxuICogKipXYXJuaW5nKio6IGB3cml0ZVZhbHVlYCBmdW5jdGlvbiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gdGhlIGNoaWxkIGNvbXBvbmVudCFcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX05nTW9kZWxDb21wb25lbnRCYXNlIGV4dGVuZHMgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfREVGQVVMVFMhOiBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzO1xuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yXG4gIHByb3RlY3RlZCBfb25DaGFuZ2VSZWdpc3RlcmVkITogKF86IGFueSkgPT4gdm9pZDtcbiAgcHJvdGVjdGVkIF9vblRvdWNoZWRSZWdpc3RlcmVkITogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGhhbmRsZSB0b3VjaGVkIHN0YXRlLiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZCA9IGZuO1xuICB9XG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBmdW5jdGlvbiB0byBoYW5kbGUgdmFsdWUgY2hhbmdlLiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQgPSBmbjtcbiAgfVxuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgZGlzYWJsZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCB0aGUgbmV3IGRpc2FibGVkIHN0YXRlLlxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBhIG5ldyB2YWx1ZSBpbnRvIHRoZSBjb21wb25lbnQuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHYgVGhlIG5ldyB2YWx1ZSB0byB3cml0ZS5cbiAgICovXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodjogYW55KTogdm9pZDsgLy8qIGFic3RyYWN0XG5cbiAgLyoqXG4gICAqIFdyaXRlcyB0aGUgYSBuZXcgdmFsdWUgaW50byB0aGUgY29tcG9uZW50LiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB2IFRoZSBuZXcgdmFsdWUgdG8gd3JpdGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2VtaXRDaGFuZ2UoKTogdm9pZDsgLy8qIGFic3RyYWN0XG5cbiAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gIG92ZXJyaWRlIG9uQmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgIHN1cGVyLm9uQmx1cihldmVudCk7XG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XG4gIH1cbn1cbiJdfQ==