@slotted/angular 0.1.0-beta.0 → 0.1.0-beta.10

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 (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-currency-field.mjs","sources":["../../currency-field/src/currency-field-defaults.ts","../../currency-field/src/currency-field.ts","../../currency-field/src/currency-field-input.ts","../../currency-field/src/currency-field-parts.ts","../../currency-field/src/slotted-angular-currency-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\n\n/** The type step the control sits at, matching the field around it. */\nexport type CurrencyFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three every framed control in this\n * library ships: `outline` takes the ground it is placed on, `subtle` sinks\n * into the page, and `plain` shows nothing at rest, which is what a dense\n * table of amounts needs.\n */\nexport type CurrencyFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * How the reader types the amount.\n *\n * `cents` is the cash register: digits enter at the minor unit and shift left,\n * so `1234` is `R$ 12,34`. The separator is never typed and the caret has one\n * legal position. `natural` is the spreadsheet, and the model `number-field`\n * uses: the text is the reader's until a commit.\n */\nexport type CurrencyFieldEntry = 'cents' | 'natural';\n\n/**\n * Which edge the amount is set against. `end` by default: a column of amounts\n * is compared on its last digit, and the cents-first caret already lives there.\n */\nexport type CurrencyFieldAlign = 'end' | 'start';\n\n/**\n * Where the two steppers sit, when a product asks for them. They are withdrawn\n * by default on this family: an invoice total is typed, not nudged.\n */\nexport type CurrencyFieldStepper = 'stacked' | 'split' | 'none';\n\n/**\n * What happens to an amount outside `min`…`max`. `blur` returns it to the range\n * at the commit, `strict` refuses the keystroke that would leave it, and `none`\n * keeps the amount where the reader put it and reports `aria-invalid`.\n */\nexport type CurrencyFieldClamp = 'blur' | 'strict' | 'none';\n\n/**\n * When the text takes the locale's shape, under `entry=\"natural\"`.\n *\n * `change` regroups on every keystroke, so an amount is scannable while it is\n * being typed; `commit` holds the reader's own text until blur, `Enter` or a\n * step. It is `number-field`'s axis, and it is here because `entry=\"natural\"`\n * is `number-field`'s model.\n *\n * Under `entry=\"cents\"` the text is generated from the digits after every edit,\n * so it has always taken the locale's shape as it is typed and this decides\n * nothing.\n */\nexport type CurrencyFieldFormatOn = 'change' | 'commit';\n\n/**\n * How the currency is written beside the amount, or `none` when it is not\n * written at all: the amount becomes a plain decimal with the currency's own\n * fraction digits, so the symbol can live in a `slCurrencyFieldStart` adornment\n * instead of inside the value.\n */\nexport type CurrencyFieldDisplay = 'symbol' | 'narrowSymbol' | 'code' | 'name' | 'none';\n\nexport interface CurrencyFieldDefaults {\n align: CurrencyFieldAlign;\n clamp: CurrencyFieldClamp;\n /** The currency every field under the token is in, unless it says otherwise. */\n currency: string | undefined;\n currencyDisplay: CurrencyFieldDisplay;\n entry: CurrencyFieldEntry;\n formatOn: CurrencyFieldFormatOn;\n size: CurrencyFieldSize;\n stepper: CurrencyFieldStepper;\n variant: CurrencyFieldVariant;\n}\n\nconst FALLBACK: CurrencyFieldDefaults = {\n align: 'end',\n clamp: 'blur',\n currency: undefined,\n currencyDisplay: 'symbol',\n entry: 'cents',\n formatOn: 'change',\n size: 'md',\n stepper: 'none',\n variant: 'outline',\n};\n\nexport const CURRENCY_FIELD_DEFAULTS = new InjectionToken<CurrencyFieldDefaults>(\n 'slotted currency field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once which currency it charges in and how its\n * amounts are typed, rather than repeating the same inputs on every amount in a\n * form. A control that states any of them itself still wins. The locale and the\n * two buttons' words come from the language in force (`provideSlotted`).\n *\n * `currency` is the one worth setting first, and the only one a field cannot be\n * built without: a product has one currency in nine screens out of ten, and the\n * tenth states its own.\n */\nexport function provideCurrencyFieldDefaults(defaults: Partial<CurrencyFieldDefaults>) {\n return {\n provide: CURRENCY_FIELD_DEFAULTS,\n useFactory: (): CurrencyFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a currency field renders as here, before it states anything of its own. */\nexport function injectCurrencyFieldDefaults(): CurrencyFieldDefaults {\n return inject(CURRENCY_FIELD_DEFAULTS);\n}\n\n/**\n * What the frame needs to know about the control inside it, and what the\n * control needs the frame to call.\n *\n * It is an abstract class rather than an import so the two directives can\n * depend on each other without a cycle — the shape `field`, `text-field` and\n * `number-field` already have. The input provides itself as this, and the\n * frame queries it.\n */\nexport abstract class SlCurrencyFieldControl {\n /** The identifier the steppers point `aria-controls` at. */\n abstract readonly controlId: Signal<string | null>;\n /** Whether a step up would leave the range, which is what disables a button. */\n abstract readonly atMax: Signal<boolean>;\n /** Whether a step down would. */\n abstract readonly atMin: Signal<boolean>;\n /** The submission name the frame's hidden input carries, if there is one. */\n abstract readonly submissionName: Signal<string | null>;\n /** The form that hidden input belongs to, when it is not the ancestor one. */\n abstract readonly submissionForm: Signal<string | null>;\n /** The amount in major units, for the hidden input the frame renders. */\n abstract readonly numberValue: Signal<number | null>;\n abstract readonly resolvedDisabled: Signal<boolean | undefined>;\n abstract readonly resolvedReadOnly: Signal<boolean | undefined>;\n abstract readonly resolvedInvalid: Signal<boolean | undefined>;\n /** How the reader types, which the frame paints and the control owns. */\n abstract readonly resolvedEntry: Signal<CurrencyFieldEntry>;\n /** Moves the amount by one step and returns focus to it. */\n abstract stepBy(direction: 1 | -1, source: Event | undefined): void;\n /**\n * Moves the amount by whole steps a `scrub` drag travelled, signed, by the\n * large step under `Shift` and the small one under `Alt`.\n */\n abstract scrubBy(steps: number, source: PointerEvent): void;\n /** The native element, which a scrub focuses and reads the direction from. */\n abstract readonly inputElement: HTMLInputElement;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n currencyFieldMessages,\n type CurrencyFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport {\n STEP_REPEAT_DELAY,\n STEP_REPEAT_DELAY_COARSE,\n STEP_REPEAT_INTERVAL,\n} from '@slotted/core/number';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectCurrencyFieldDefaults, SlCurrencyFieldControl } from './currency-field-defaults';\nimport type {\n CurrencyFieldAlign,\n CurrencyFieldSize,\n CurrencyFieldStepper,\n CurrencyFieldVariant,\n} from './currency-field-defaults';\n\nexport type {\n CurrencyFieldAlign,\n CurrencyFieldClamp,\n CurrencyFieldDisplay,\n CurrencyFieldEntry,\n CurrencyFieldSize,\n CurrencyFieldStepper,\n CurrencyFieldVariant,\n} from './currency-field-defaults';\n\n/**\n * The frame: one amount, and the two buttons that move it when a product asks\n * for them.\n *\n * **It is not the control.** The element carrying `data-ui` is the consumer's\n * own box with no role; the `input` inside it holds the amount, the identifier\n * and the APG's `spinbutton` role. WAI-ARIA settles the shape: a `spinbutton`\n * may hold only non-interactive presentational children, so the two steppers\n * are the control's siblings rather than its children.\n *\n * **The steppers are withdrawn by default**, where `number-field` ships them:\n * an invoice total is typed, not nudged.\n *\n * **Angular pays one element for the frame, and React pays none.** React can\n * render a wrapper from inside a component; an Angular directive cannot create\n * a box around its own host. `slCurrencyFieldInput` injects this class, so a\n * control written without the frame is a compile-time failure rather than a\n * silent one.\n */\n@Component({\n selector: '[slCurrencyField]',\n standalone: true,\n exportAs: 'slCurrencyField',\n imports: [SlGlyph, SlIcon],\n template: `@if (resolvedStepper() === 'split') {\n <button\n data-part=\"decrement\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('decrement')\"\n [disabled]=\"decrementDisabled()\"\n (pointerdown)=\"press(-1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"minus\"></svg></span>\n </button>\n }\n <ng-content select=\"[slCurrencyFieldStart]\" />\n <ng-content />\n <ng-content select=\"[slCurrencyFieldEnd]\" />\n @if (resolvedStepper() === 'split') {\n <button\n data-part=\"increment\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('increment')\"\n [disabled]=\"incrementDisabled()\"\n (pointerdown)=\"press(1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span>\n </button>\n } @else if (resolvedStepper() === 'stacked') {\n <span data-part=\"stepper\">\n <button\n data-part=\"increment\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('increment')\"\n [disabled]=\"incrementDisabled()\"\n (pointerdown)=\"press(1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <!-- Both halves draw the down chevron; the stylesheet turns the\n increment's half a turn. -->\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <button\n data-part=\"decrement\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('decrement')\"\n [disabled]=\"decrementDisabled()\"\n (pointerdown)=\"press(-1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n </span>\n }\n @if (control()?.submissionName(); as submissionName) {\n <input\n type=\"hidden\"\n [attr.name]=\"submissionName\"\n [attr.form]=\"control()?.submissionForm()\"\n [value]=\"hiddenValue()\"\n />\n }`,\n styleUrl: '../../../styles/src/currency-field/currency-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'currency-field',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-entry]': 'resolvedEntry()',\n '[attr.data-stepper]': 'resolvedStepper()',\n '[attr.data-disabled]': \"control()?.resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"control()?.resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"control()?.resolvedReadOnly() === true ? '' : null\",\n '[attr.data-scrubbing]': \"scrubbing() ? '' : null\",\n },\n})\nexport class SlCurrencyField {\n /** Defaults to the field, then to the token, then to `md`. */\n readonly size = input<CurrencyFieldSize | undefined>(undefined);\n /** Defaults to the token, then to `outline`. */\n readonly variant = input<CurrencyFieldVariant | undefined>(undefined);\n /** Which edge the amount is set against. Defaults to the token, then `end`. */\n readonly align = input<CurrencyFieldAlign | undefined>(undefined);\n /** Where the two steppers sit. Defaults to the token, then `none`. */\n readonly stepper = input<CurrencyFieldStepper | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * `increment` and `decrement` buttons' accessible names.\n */\n readonly messages = input<PartialMessages<CurrencyFieldMessages> | undefined>(undefined);\n\n private readonly defaults = injectCurrencyFieldDefaults();\n private readonly field = inject(SlField, { optional: true });\n\n /**\n * The control inside. It provides itself as `SlCurrencyFieldControl`, so the\n * frame can read the bounds, the submission name and the shared states\n * without either directive importing the other.\n */\n readonly control = contentChild(SlCurrencyFieldControl, { descendants: true });\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedStepper = computed(() => this.stepper() ?? this.defaults.stepper);\n /**\n * The entry model belongs to the control, because it is behaviour before it\n * is an axis: the frame only paints what the control resolved. Two inputs\n * for one decision would let the box and the element disagree about how the\n * next keystroke is read.\n */\n readonly resolvedEntry = computed(() => this.control()?.resolvedEntry() ?? this.defaults.entry);\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(currencyFieldMessages, this.messages);\n\n /** Whether a `slCurrencyFieldScrub` inside is being dragged. */\n readonly scrubbing = signal(false);\n\n /** A control nobody can change has two buttons that would lie about it. */\n readonly inert = computed(() => {\n const control = this.control();\n return control?.resolvedDisabled() === true || control?.resolvedReadOnly() === true;\n });\n\n protected readonly incrementDisabled = computed(\n () => this.inert() || this.control()?.atMax() === true,\n );\n protected readonly decrementDisabled = computed(\n () => this.inert() || this.control()?.atMin() === true,\n );\n\n protected readonly hiddenValue = computed(() => {\n const value = this.control()?.numberValue() ?? null;\n return value === null ? '' : String(value);\n });\n\n private delay: ReturnType<typeof setTimeout> | undefined;\n private interval: ReturnType<typeof setInterval> | undefined;\n\n constructor() {\n /* A button unmounted mid-press would otherwise leave a timer running. */\n inject(DestroyRef).onDestroy(() => this.release());\n }\n\n /**\n * One step now, then repeating while the button is held. A coarse pointer\n * waits longer before the first repeat, because a finger that is starting to\n * scroll rests on the button first.\n */\n protected press(direction: 1 | -1, event: PointerEvent) {\n if (event.button !== 0) return;\n /* Focus stays on the amount: the button is out of the tab order and the\n caret is what the reader came back to. */\n event.preventDefault();\n const control = this.control();\n if (control === undefined) return;\n control.stepBy(direction, event);\n\n this.release();\n const wait = event.pointerType === 'touch' ? STEP_REPEAT_DELAY_COARSE : STEP_REPEAT_DELAY;\n this.delay = setTimeout(() => {\n this.interval = setInterval(() => control.stepBy(direction, undefined), STEP_REPEAT_INTERVAL);\n }, wait);\n }\n\n protected release() {\n clearTimeout(this.delay);\n clearInterval(this.interval);\n this.delay = undefined;\n this.interval = undefined;\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { createCurrencyFormat, MAX_AMOUNT_DIGITS, withAmount } from '@slotted/core/currency';\nimport type { CurrencyChangeRequest, CurrencyFormat } from '@slotted/core/currency';\nimport { clamp as clampNumber } from '@slotted/core/measure';\nimport { stepNumber } from '@slotted/core/number';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason } from '@slotted/core/state';\nimport { SlField } from '@slotted/angular/field';\nimport { injectLocale } from '@slotted/angular/i18n';\n\nimport { injectCurrencyFieldDefaults, SlCurrencyFieldControl } from './currency-field-defaults';\nimport type {\n CurrencyFieldClamp,\n CurrencyFieldDisplay,\n CurrencyFieldEntry,\n CurrencyFieldFormatOn,\n} from './currency-field-defaults';\nimport { SlCurrencyField } from './currency-field';\n\n/** `undefined` stays absent; anything else becomes a number. */\nconst optionalNumber = (value: unknown) =>\n value === undefined || value === null || value === '' ? undefined : numberAttribute(value);\n\n/** The two keys that set the sign under cents-first entry. */\nconst SIGN_KEYS = new Set(['-', '−', '+', '(']);\n\n/**\n * The control itself: the amount, the currency, the identifier, and everything\n * the field around it says.\n *\n * **The element is `type=\"text\"` and carries the APG's `spinbutton` role.**\n * `type=\"number\"` empties itself whenever the text is not a valid\n * floating-point number, so no grouping separator and no currency symbol\n * survives it.\n *\n * **Under `entry=\"cents\"` the digits are the amount.** After every edit the\n * directive reads the digits out of the text and divides by the currency's\n * minor units, so `1234` is `R$ 12,34`. The text is generated rather than\n * typed, which is why rewriting it on every keystroke is legal here and\n * forbidden in `number-field`: there is no typed text to protect, and the caret\n * has exactly one legal position.\n *\n * **Unset means ask the field.** `disabled`, `readOnly` and `invalid` default to\n * `undefined` rather than `false`. A value the consumer wrote as a static\n * attribute is read before the host binding computes.\n */\n@Directive({\n selector: 'input[slCurrencyFieldInput]',\n standalone: true,\n exportAs: 'slCurrencyFieldInput',\n providers: [\n { provide: SlCurrencyFieldControl, useExisting: forwardRef(() => SlCurrencyFieldInput) },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlCurrencyFieldInput),\n multi: true,\n },\n ],\n host: {\n 'data-part': 'input',\n autocorrect: 'off',\n spellcheck: 'false',\n /* Bound rather than static, so a consumer who wrote `type=\"number\"` on a\n currency field does not get the element that empties its own value. */\n '[attr.type]': \"'text'\",\n '[attr.role]': \"'spinbutton'\",\n '[attr.id]': 'controlId()',\n '[attr.inputmode]': 'resolvedInputMode()',\n '[attr.autocomplete]': 'resolvedAutocomplete()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.aria-valuenow]': 'numberValue()',\n '[attr.aria-valuemin]': 'min() ?? null',\n '[attr.aria-valuemax]': 'max() ?? null',\n '[attr.aria-valuetext]': 'valueText()',\n '[attr.name]': 'null',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n '(input)': 'onInput($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown)': 'onKeyDown($event)',\n '(blur)': 'onBlur($event)',\n },\n})\nexport class SlCurrencyFieldInput implements ControlValueAccessor, OnInit, SlCurrencyFieldControl {\n /**\n * An ISO 4217 code. It decides the symbol, the minor units and therefore how\n * far a digit shifts. Required here or on the token: a field that guessed two\n * minor digits would write `¥12,34`.\n */\n readonly currency = input<string | undefined>(undefined);\n /** How the currency is written beside the amount. Defaults to the token, then `symbol`. */\n readonly currencyDisplay = input<CurrencyFieldDisplay | undefined>(undefined);\n /** Overrides the currency's own minor units, for a unit price quoted finer. */\n readonly fractionDigits = input<number | undefined, unknown>(undefined, {\n transform: optionalNumber,\n });\n\n /**\n * Present means the consumer owns the amount, for the life of the component.\n * `null` is empty, and `undefined` is the absence that makes the control\n * uncontrolled — the two are different answers.\n */\n readonly value = input<number | null | undefined, unknown>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : (optionalNumber(raw) ?? null)),\n });\n /** The amount the control starts from when nobody else writes one. */\n readonly defaultValue = input<number | null, unknown>(null, {\n transform: (raw) => (raw === undefined ? null : (optionalNumber(raw) ?? null)),\n });\n\n /** How the reader types. Defaults to the token, then `cents`. */\n readonly entry = input<CurrencyFieldEntry | undefined>(undefined);\n /**\n * When the text takes the locale's shape under `entry=\"natural\"`. Defaults to\n * the token, then `change`. Cents-first entry generates the text after every\n * edit, so it decides nothing there.\n */\n readonly formatOn = input<CurrencyFieldFormatOn | undefined>(undefined);\n\n readonly min = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n readonly max = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** What the arrows and the two buttons move by, in major units. */\n readonly step = input<number, unknown>(1, { transform: (raw) => optionalNumber(raw) ?? 1 });\n /** The amount `Shift` and the page keys move by. Defaults to `step * 10`. */\n readonly largeStep = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** The amount `Alt` moves by. Defaults to `step / 10`. */\n readonly smallStep = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** Where an empty control starts stepping from. Defaults to `min`, then nought. */\n readonly stepFrom = input<number | undefined, unknown>(undefined, { transform: optionalNumber });\n /** Where an amount outside the range goes, and when. Defaults to the token, then `blur`. */\n readonly clamp = input<CurrencyFieldClamp | undefined>(undefined);\n /** Any other `Intl.NumberFormatOptions`. Every key here wins over the family's own. */\n readonly format = input<Intl.NumberFormatOptions | undefined>(undefined);\n /**\n * BCP 47. Decides the separators and the numbering system, never the symbol.\n * Defaults to the language in force (`provideSlotted`).\n */\n readonly locale = input<string | undefined>(undefined);\n /**\n * Lets the wheel move the amount while the control has focus. Off by default:\n * a reader scrolling a form must not change a total by passing over it.\n */\n readonly wheel = input(false, { transform: booleanAttribute });\n /**\n * Whether an emptied control holds nothing, or nought.\n *\n * Off, because an amount is not an optional number: a total, a price and a\n * balance are all nought when nothing is in them. Cleared, the control shows\n * `0,00` and emits `0`. On, it can be left empty and emits `null`.\n */\n readonly allowEmpty = input(false, { transform: booleanAttribute });\n\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n\n /**\n * One output for one transition, carrying the amount, the amount it replaces,\n * the currency, the exact integer of minor units, the reason, the originating\n * event and `cancel()`. There is no `[(value)]`, because a two-way binding has\n * one slot and can carry none of those.\n */\n readonly valueChange = output<CurrencyChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n /**\n * The frame around the control. Injected without `optional`, so an `input`\n * written without it fails at construction rather than silently losing its\n * border and its ring.\n */\n readonly currencyField = inject(SlCurrencyField);\n private readonly field = inject(SlField, { optional: true });\n private readonly defaults = injectCurrencyFieldDefaults();\n private readonly appLocale = injectLocale();\n\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenName = inject(new HostAttributeToken('name'), { optional: true });\n private readonly writtenForm = inject(new HostAttributeToken('form'), { optional: true });\n private readonly writtenInputMode = inject(new HostAttributeToken('inputmode'), {\n optional: true,\n });\n private readonly writtenAutocomplete = inject(new HostAttributeToken('autocomplete'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n\n /** What the family holds when nobody else owns it. */\n private readonly own = signal<number | null>(null);\n /** What the element is showing. Never a second copy of the amount. */\n private readonly text = signal('');\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * The sign, while the field holds nothing to carry it. Typing `-` into an\n * empty amount and then a digit produces a debit, which a sign derived from\n * the text alone could not express.\n */\n private pendingNegative = false;\n private onChangeFn: (value: number | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n\n /**\n * One formatter, rebuilt only when something it reads actually changes. The\n * options object is read through a signal, so an inline object handed on\n * every change detection does not rebuild the parser.\n */\n private readonly formatter = computed<CurrencyFormat>(() => {\n const currency = this.currency() ?? this.defaults.currency;\n if (currency === undefined) {\n /* Loudly, and where it is written: a currency field cannot decide how\n many digits a cent has, and one that guessed two would write ¥12,34. */\n throw new Error(\n 'slCurrencyFieldInput needs a currency: set [currency], or provideCurrencyFieldDefaults({ currency }).',\n );\n }\n const fractionDigits = this.fractionDigits();\n const options = this.format();\n return createCurrencyFormat({\n currency,\n currencyDisplay: this.currencyDisplay() ?? this.defaults.currencyDisplay,\n locale: this.locale() ?? this.appLocale(),\n ...(fractionDigits === undefined ? {} : { fractionDigits }),\n ...(options === undefined ? {} : { options }),\n });\n });\n\n /** Present means the consumer owns it; absent means the directive does. */\n private readonly controlled = computed(() => this.value() !== undefined);\n readonly numberValue = computed(() => {\n const bound = this.value();\n const held = bound === undefined ? this.own() : bound;\n /* The amount the family settles on when nothing is left in the control.\n It governs what is emitted, what `aria-valuenow` reports and what the\n hidden input submits alike, so the three never disagree. */\n return this.allowEmpty() ? held : (held ?? 0);\n });\n readonly valueText = computed(() => {\n const shown = this.text();\n return shown === '' ? null : shown;\n });\n\n readonly resolvedEntry = computed(() => this.entry() ?? this.defaults.entry);\n protected readonly resolvedFormatOn = computed(() => this.formatOn() ?? this.defaults.formatOn);\n readonly resolvedClamp = computed(() => this.clamp() ?? this.defaults.clamp);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(\n () =>\n this.readOnly() ??\n (this.writtenReadonly === null ? undefined : true) ??\n this.field?.resolvedReadOnly(),\n );\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n readonly controlId = computed(() => this.writtenId ?? this.field?.ids().control ?? null);\n readonly submissionName = computed(() => this.writtenName);\n readonly submissionForm = computed(() => this.writtenForm);\n\n private readonly parsedText = computed(() => this.formatter().parse(this.text()));\n readonly atMax = computed(() => {\n const max = this.max();\n const current = this.parsedText();\n return max !== undefined && current !== null && current >= max;\n });\n readonly atMin = computed(() => {\n const min = this.min();\n const current = this.parsedText();\n return min !== undefined && current !== null && current <= min;\n });\n\n /** Whether the range admits a debit at all. There is no `allowNegative`. */\n private readonly allowNegative = computed(() => {\n const min = this.min();\n return min === undefined || min < 0;\n });\n\n /**\n * The software keyboard, derived from the props rather than from the user\n * agent. Cents-first entry types neither a separator nor a sign into the\n * digits, so the numeric keypad is complete for the task.\n */\n protected readonly resolvedInputMode = computed(() => {\n if (this.writtenInputMode !== null) return this.writtenInputMode;\n if (this.resolvedEntry() === 'cents') return 'numeric';\n if (this.allowNegative()) return 'text';\n return this.formatter().maximumFractionDigits > 0 ? 'decimal' : 'numeric';\n });\n\n /**\n * `transaction-amount` is the token a payment amount belongs to, and the\n * default is `off`: most amounts in a back office are not payment amounts,\n * and a browser filling an invoice total is worse than no help at all.\n */\n protected readonly resolvedAutocomplete = computed(() => this.writtenAutocomplete ?? 'off');\n\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n protected readonly readonlyAttribute = computed(() =>\n this.resolvedReadOnly() === true ? '' : null,\n );\n\n constructor() {\n /* The element shows what the family holds, and the text is only rewritten\n when it no longer means the same amount. */\n effect(() => {\n const next = this.numberValue();\n const formatter = this.formatter();\n if (Object.is(next, formatter.parse(this.text()))) return;\n this.write(formatter.format(next));\n });\n\n this.attachWheel();\n }\n\n /**\n * Angular creates every directive in a template before it binds any input, so\n * the starting amount is read here rather than in the constructor: read\n * there, `defaultValue` is always its own default and the control starts\n * empty.\n */\n ngOnInit() {\n const bound = this.value();\n const initial = bound === undefined ? this.defaultValue() : bound;\n if (bound === undefined) this.own.set(initial);\n this.write(this.formatter().format(this.numberValue()));\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get inputElement(): HTMLInputElement {\n return this.element;\n }\n\n /** Steps up by one step and reports `programmatic`. */\n increment() {\n this.move(1, this.step(), 'programmatic', undefined);\n }\n\n /** Steps down by one step and reports `programmatic`. */\n decrement() {\n this.move(-1, this.step(), 'programmatic', undefined);\n }\n\n /** What a `slCurrencyFieldScrub` drag calls, once per whole step travelled. */\n scrubBy(steps: number, source: PointerEvent) {\n if (steps === 0) return;\n const step = this.step();\n const amount = source.shiftKey\n ? (this.largeStep() ?? step * 10)\n : source.altKey\n ? (this.smallStep() ?? step / 10)\n : step;\n this.move(steps > 0 ? 1 : -1, amount * Math.abs(steps), 'pointer', source);\n }\n\n /** What the frame's two buttons call. Focus returns to the amount. */\n stepBy(direction: 1 | -1, source: Event | undefined) {\n this.element.focus();\n this.move(direction, this.step(), 'pointer', source);\n }\n\n writeValue(value: number | null) {\n this.own.set(value ?? null);\n this.write(this.formatter().format(this.settledAmount(value ?? null)));\n }\n\n registerOnChange(fn: (value: number | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n const formatter = this.formatter();\n\n if (this.resolvedEntry() !== 'cents') {\n const native = event as InputEvent;\n /* An IME commits a whole run, and a run reshaped half way through is a\n run the engine can no longer finish. */\n if (this.resolvedFormatOn() !== 'change' || native.isComposing) {\n this.text.set(next);\n this.request(this.settledAmount(formatter.parse(next)), 'keyboard', event);\n return;\n }\n\n const caret = this.element.selectionStart ?? next.length;\n const deletion = native.inputType?.startsWith('delete') === true;\n const edited = deletion\n ? formatter.deleteAcrossSeparator(\n this.text(),\n { text: next, caret },\n native.inputType === 'deleteContentForward' ? 1 : -1,\n )\n : { text: next, caret };\n const shaped = formatter.formatWhileTyping(edited);\n\n this.write(shaped.text);\n /* `write` puts the caret after the last digit under cents-first entry and\n leaves it alone otherwise, so this is the only place it moves here. */\n if (this.element.ownerDocument.activeElement === this.element) {\n this.element.setSelectionRange(shaped.caret, shaped.caret);\n }\n this.request(this.settledAmount(formatter.parse(shaped.text)), 'keyboard', event);\n return;\n }\n\n const inputType = (event as InputEvent).inputType;\n const edit = formatter.editFromText({\n text: next,\n /* What the element showed before this keystroke, which is what turns the\n digits the reader added into digits at the right rather than digits\n where the caret happened to be. */\n previous: this.text(),\n negative: this.negativeNow(),\n allowNegative: this.allowNegative(),\n allowEmpty: this.allowEmpty(),\n ...(inputType === undefined ? {} : { inputType }),\n });\n this.pendingNegative = edit.value !== null && edit.value < 0;\n this.settle(edit.value, this.request(edit.value, 'keyboard', event, edit.minorUnits));\n }\n\n /**\n * The keystroke filter. `beforeinput` is where a keystroke, a paste and a\n * drop all arrive before the element changes, and it is the only place a\n * character that cannot be part of an amount can be refused without moving\n * the caret.\n */\n protected onBeforeInput(event: InputEvent) {\n if (event.defaultPrevented) return;\n /* An IME commits a whole run; refusing it character by character would\n make a full-width `123` untypeable. */\n if (event.isComposing) return;\n if (event.inputType.startsWith('delete')) return;\n /* A paste is parsed rather than filtered: it is the reader's own amount. */\n if (event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop') return;\n\n const formatter = this.formatter();\n const start = this.element.selectionStart ?? this.element.value.length;\n const finish = this.element.selectionEnd ?? this.element.value.length;\n const inserted = event.data ?? '';\n const next = this.element.value.slice(0, start) + inserted + this.element.value.slice(finish);\n const min = this.min();\n const max = this.max();\n\n if (this.resolvedEntry() !== 'cents') {\n if (!formatter.isPartial(next)) {\n event.preventDefault();\n return;\n }\n if (this.resolvedClamp() !== 'strict') return;\n const parsed = formatter.parse(next);\n if (parsed === null) return;\n if ((min !== undefined && parsed < min) || (max !== undefined && parsed > max)) {\n event.preventDefault();\n }\n return;\n }\n\n /* The sign is a key rather than a digit, so `-` pressed twice does not\n produce two signs and never enters the digit run. */\n if (SIGN_KEYS.has(inserted)) {\n event.preventDefault();\n if (!this.allowNegative()) return;\n const wanted = inserted !== '+';\n this.pendingNegative = wanted;\n const current = this.numberValue();\n if (current === null || current === 0 || current < 0 === wanted) return;\n const flipped = -current;\n this.settle(\n flipped,\n this.request(flipped, 'keyboard', event, formatter.toMinorUnits(flipped)),\n );\n return;\n }\n\n if (formatter.digitsOf(inserted).length !== [...inserted].length) {\n event.preventDefault();\n return;\n }\n /* Fifteen digits is where a double stops holding a cent, so the text stops\n growing rather than rounding silently. */\n if (formatter.digitsOf(next).length > MAX_AMOUNT_DIGITS) {\n event.preventDefault();\n return;\n }\n if (this.resolvedClamp() !== 'strict') return;\n const edit = formatter.editFromText({\n text: next,\n previous: this.element.value,\n negative: this.negativeNow(),\n allowNegative: this.allowNegative(),\n allowEmpty: this.allowEmpty(),\n });\n if (edit.value === null) return;\n if ((min !== undefined && edit.value < min) || (max !== undefined && edit.value > max)) {\n event.preventDefault();\n }\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true) return;\n\n const step = this.step();\n const large = this.largeStep() ?? step * 10;\n const small = this.smallStep() ?? step / 10;\n const amount = event.shiftKey ? large : event.altKey ? small : step;\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.move(1, amount, 'keyboard', event);\n return;\n case 'ArrowDown':\n event.preventDefault();\n this.move(-1, amount, 'keyboard', event);\n return;\n case 'PageUp':\n event.preventDefault();\n this.move(1, large, 'keyboard', event);\n return;\n case 'PageDown':\n event.preventDefault();\n this.move(-1, large, 'keyboard', event);\n return;\n case 'Home': {\n const min = this.min();\n if (min === undefined || event.ctrlKey || event.metaKey) return;\n event.preventDefault();\n this.settle(min, this.request(min, 'keyboard', event));\n return;\n }\n case 'End': {\n const max = this.max();\n if (max === undefined || event.ctrlKey || event.metaKey) return;\n event.preventDefault();\n this.settle(max, this.request(max, 'keyboard', event));\n return;\n }\n case 'Enter':\n /* Committed and not intercepted: a single-line control submits its\n form, which is the platform's behaviour. */\n this.commit('keyboard', event);\n return;\n default:\n }\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouchedFn();\n this.commit('blur', event);\n }\n\n /**\n * The wheel, when it is asked for, and never otherwise. It is a native\n * listener rather than a host binding because the event has to be cancelled,\n * and a host listener on `wheel` is passive in some browsers.\n */\n private attachWheel() {\n const onWheel = (event: WheelEvent) => {\n if (!this.wheel()) return;\n if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true) return;\n if (this.element.ownerDocument.activeElement !== this.element) return;\n if (event.deltaY === 0) return;\n event.preventDefault();\n this.move(event.deltaY < 0 ? 1 : -1, this.step(), 'pointer', event);\n };\n\n this.element.addEventListener('wheel', onWheel, { passive: false });\n inject(DestroyRef).onDestroy(() => this.element.removeEventListener('wheel', onWheel));\n }\n\n /** The sign at the moment of the edit, rather than at the last render. */\n private negativeNow() {\n const current = this.numberValue();\n /* Nought has no sign — `-0` and `0` are one amount — so a debit held\n against an empty or nought amount can only come from the key. */\n return current === null || current === 0 ? this.pendingNegative : current < 0;\n }\n\n /** Formats what the reader typed and puts the amount back in range. */\n private commit(reason: ChangeReason, source: Event | undefined) {\n const formatter = this.formatter();\n let next = formatter.parse(this.text());\n /* The commit is where a half-typed amount stops being half typed, so it is\n where an emptied one becomes the nought it means. */\n if (next === null && !this.allowEmpty()) next = 0;\n\n if (next !== null && this.resolvedClamp() !== 'none') {\n next = clampNumber(\n next,\n this.min() ?? Number.NEGATIVE_INFINITY,\n this.max() ?? Number.POSITIVE_INFINITY,\n );\n }\n this.settle(next, this.request(next, reason, source));\n }\n\n private move(direction: 1 | -1, amount: number, reason: ChangeReason, source: Event | undefined) {\n const min = this.min();\n const max = this.max();\n const stepFrom = this.stepFrom();\n const next = stepNumber({\n value: this.formatter().parse(this.text()),\n direction,\n step: amount,\n ...(min === undefined ? {} : { min }),\n ...(max === undefined ? {} : { max }),\n ...(stepFrom === undefined ? {} : { stepFrom }),\n });\n this.settle(next, this.request(next, reason, source));\n }\n\n /**\n * Asks to move, and says whether anything did. A refused request answers\n * `false`, and the caller uses that to decide what the element shows.\n */\n private request(\n next: number | null,\n reason: ChangeReason,\n source: Event | undefined,\n minorUnits?: number | null,\n ): boolean {\n const formatter = this.formatter();\n const current = this.numberValue();\n if (Object.is(next, current)) return false;\n\n let cancelled = false;\n const state = createControllable<number | null>({\n controlled: undefined,\n initial: current,\n onRequest: (pending) => {\n this.valueChange.emit(\n withAmount(pending, formatter.currency, minorUnits ?? formatter.toMinorUnits(next)),\n );\n cancelled = pending.cancelled;\n },\n });\n state.request(next, reason, source);\n if (cancelled) return false;\n\n this.onChangeFn(next);\n /* A controlled control never moves its own amount: it asks, and waits for\n the consumer's next value. */\n if (this.controlled()) return false;\n this.own.set(next);\n return true;\n }\n\n /** Nothing, or the nought it means. The one rule `allowEmpty` decides. */\n private settledAmount(amount: number | null) {\n return this.allowEmpty() ? amount : (amount ?? 0);\n }\n\n private settle(next: number | null, moved: boolean) {\n const shown = moved ? next : this.numberValue();\n this.write(this.formatter().format(shown));\n }\n\n /**\n * One place the element's text is written, so the signal never drifts from\n * it. Under cents-first entry the caret goes back after the last digit —\n * before whatever affix the locale writes at the end — because that is the\n * only position where the next keystroke means anything.\n */\n private write(value: string) {\n if (this.element.value !== value) this.element.value = value;\n this.text.set(value);\n\n if (this.resolvedEntry() !== 'cents') return;\n if (this.element.ownerDocument.activeElement !== this.element) return;\n\n const formatter = this.formatter();\n let position = value.length;\n for (let index = value.length; index > 0; index -= 1) {\n if (formatter.digitsOf(value[index - 1] ?? '') !== '') {\n position = index;\n break;\n }\n }\n this.element.setSelectionRange(position, position);\n }\n}\n","import { Directive, inject, input, signal } from '@angular/core';\nimport { createScrub, SCRUB_SENSITIVITY } from '@slotted/core/number';\nimport type { Scrub } from '@slotted/core/number';\n\nimport { SlCurrencyField } from './currency-field';\n\n/**\n * An adornment before the amount in the reading direction: a currency mark, a\n * period, an icon. Named for the direction rather than for a side, so the same\n * markup puts the mark before the amount in both directions.\n *\n * It is a sibling of the number rather than part of it. A symbol that belongs\n * *inside* the amount is what `currency` and `currencyDisplay` write, and it is\n * selected, copied and parsed with the amount; this one is none of those\n * things.\n */\n@Directive({\n selector: '[slCurrencyFieldStart]',\n standalone: true,\n exportAs: 'slCurrencyFieldStart',\n host: { 'data-part': 'start' },\n})\nexport class SlCurrencyFieldStart {}\n\n/** An adornment after the amount in the reading direction. */\n@Directive({\n selector: '[slCurrencyFieldEnd]',\n standalone: true,\n exportAs: 'slCurrencyFieldEnd',\n host: { 'data-part': 'end' },\n})\nexport class SlCurrencyFieldEnd {}\n\n/**\n * A mark that moves the amount when it is dragged sideways — the design\n * tools' gesture, shared with `slNumberFieldScrub`. Placed inside\n * `slCurrencyFieldStart` or `slCurrencyFieldEnd`, where the frame it belongs\n * to is its ancestor; the currency symbol, with `currencyDisplay=\"none\"` on\n * the control, is the natural mark:\n *\n * ```html\n * <span slCurrencyFieldStart><span slCurrencyFieldScrub>R$</span></span>\n * ```\n *\n * Each `sensitivity` pixels towards the inline end is one step up; `Shift`\n * moves by the large step and `Alt` by the small one, as on the keyboard. It\n * is hidden from assistive technology and takes no focus: the input's arrow\n * keys are the same movement.\n */\n@Directive({\n selector: '[slCurrencyFieldScrub]',\n standalone: true,\n exportAs: 'slCurrencyFieldScrub',\n host: {\n 'data-part': 'scrub',\n 'aria-hidden': 'true',\n '[attr.data-scrubbing]': \"active() ? '' : null\",\n '(pointerdown)': 'begin($event)',\n '(pointermove)': 'drag($event)',\n '(pointerup)': 'end()',\n '(pointercancel)': 'end()',\n '(lostpointercapture)': 'end()',\n },\n})\nexport class SlCurrencyFieldScrub {\n /** Pixels of horizontal travel per step. Defaults to 2. */\n readonly sensitivity = input<number>(SCRUB_SENSITIVITY);\n\n private readonly frame = inject(SlCurrencyField);\n protected readonly active = signal(false);\n private travel: Scrub | null = null;\n\n protected begin(event: PointerEvent) {\n const control = this.frame.control();\n if (event.button !== 0 || control === undefined || this.frame.inert()) return;\n /* No text selection, and the caret stays in the amount the drag moves. */\n event.preventDefault();\n control.inputElement.focus();\n (event.currentTarget as Element | null)?.setPointerCapture?.(event.pointerId);\n this.travel = createScrub({\n clientX: event.clientX,\n sensitivity: this.sensitivity(),\n rtl: getComputedStyle(control.inputElement).direction === 'rtl',\n });\n this.active.set(true);\n this.frame.scrubbing.set(true);\n }\n\n protected drag(event: PointerEvent) {\n if (this.travel === null) return;\n this.frame.control()?.scrubBy(this.travel.steps(event.clientX), event);\n }\n\n protected end() {\n if (this.travel === null) return;\n this.travel = null;\n this.active.set(false);\n this.frame.scrubbing.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["clampNumber"],"mappings":";;;;;;;;;;;;AA8EA,MAAM,QAAQ,GAA0B;AACtC,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,SAAS;CACnB;MAEY,uBAAuB,GAAG,IAAI,cAAc,CACvD,iCAAiC,EACjC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE;AAGjD;;;;;;;;;AASG;AACG,SAAU,4BAA4B,CAAC,QAAwC,EAAA;IACnF,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,UAAU,EAAE,OAA8B,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;KACxE;AACH;AAEA;SACgB,2BAA2B,GAAA;AACzC,IAAA,OAAO,MAAM,CAAC,uBAAuB,CAAC;AACxC;AAEA;;;;;;;;AAQG;MACmB,sBAAsB,CAAA;AA2B3C;;AC9GD;;;;;;;;;;;;;;;;;;AAkBG;MAmGU,eAAe,CAAA;;IAEjB,IAAI,GAAG,KAAK,CAAgC,SAAS;6EAAC;;IAEtD,OAAO,GAAG,KAAK,CAAmC,SAAS;gFAAC;;IAE5D,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;;IAExD,OAAO,GAAG,KAAK,CAAmC,SAAS;gFAAC;AACrE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAqD,SAAS;iFAAC;IAEvE,QAAQ,GAAG,2BAA2B,EAAE;IACxC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5D;;;;AAIG;IACM,OAAO,GAAG,YAAY,CAAC,sBAAsB,+EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;IAErE,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFACtE;AACQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACnE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AAClF;;;;;AAKG;AACM,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;;IAEtF,CAAC,GAAG,cAAc,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAGxD,SAAS,GAAG,MAAM,CAAC,KAAK;kFAAC;;AAGzB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,OAAO,EAAE,gBAAgB,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,gBAAgB,EAAE,KAAK,IAAI;IACrF,CAAC;8EAAC;AAEiB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI;0FACvD;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI;0FACvD;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI;AACnD,QAAA,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5C,CAAC;oFAAC;AAEM,IAAA,KAAK;AACL,IAAA,QAAQ;AAEhB,IAAA,WAAA,GAAA;;AAEE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD;AAEA;;;;AAIG;IACO,KAAK,CAAC,SAAiB,EAAE,KAAmB,EAAA;AACpD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AACxB;AAC4C;QAC5C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,KAAK,SAAS;YAAE;AAC3B,QAAA,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;QAEhC,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,GAAG,wBAAwB,GAAG,iBAAiB;AACzF,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,oBAAoB,CAAC;QAC/F,CAAC,EAAE,IAAI,CAAC;IACV;IAEU,OAAO,GAAA;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;uGAhGW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oDAAA,EAAA,mBAAA,EAAA,mDAAA,EAAA,oBAAA,EAAA,oDAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAuBM,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApH5C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2EN,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,shdAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5EM,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA8Fd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlG3B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN,iBAAiB,EAAA,OAAA,EAClB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAA,QAAA,EAChB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EN,KAAA,CAAA,EAAA,eAAA,EAEa,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,sBAAsB,EAAE,oDAAoD;AAC5E,wBAAA,qBAAqB,EAAE,mDAAmD;AAC1E,wBAAA,sBAAsB,EAAE,oDAAoD;AAC5E,wBAAA,uBAAuB,EAAE,yBAAyB;AACnD,qBAAA,EAAA,MAAA,EAAA,CAAA,shdAAA,CAAA,EAAA;AAyB+B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnJ/E;AACA,MAAM,cAAc,GAAG,CAAC,KAAc,KACpC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;AAE5F;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;AAmBG;MAwCU,oBAAoB,CAAA;AAC/B;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAqB,SAAS;iFAAC;;IAE/C,eAAe,GAAG,KAAK,CAAmC,SAAS;wFAAC;;IAEpE,cAAc,GAAG,KAAK,CAA8B,SAAS,sFACpE,SAAS,EAAE,cAAc,EAAA,CACzB;AAEF;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAqC,SAAS,6EAClE,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GACnF;;AAEO,IAAA,YAAY,GAAG,KAAK,CAAyB,IAAI,oFACxD,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAC9E;;IAGO,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;AACjE;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAoC,SAAS;iFAAC;IAE9D,GAAG,GAAG,KAAK,CAA8B,SAAS,2EAAI,SAAS,EAAE,cAAc,EAAA,CAAG;IAClF,GAAG,GAAG,KAAK,CAA8B,SAAS,2EAAI,SAAS,EAAE,cAAc,EAAA,CAAG;;AAElF,IAAA,IAAI,GAAG,KAAK,CAAkB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;;IAElF,SAAS,GAAG,KAAK,CAA8B,SAAS,iFAAI,SAAS,EAAE,cAAc,EAAA,CAAG;;IAExF,SAAS,GAAG,KAAK,CAA8B,SAAS,iFAAI,SAAS,EAAE,cAAc,EAAA,CAAG;;IAExF,QAAQ,GAAG,KAAK,CAA8B,SAAS,gFAAI,SAAS,EAAE,cAAc,EAAA,CAAG;;IAEvF,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;;IAExD,MAAM,GAAG,KAAK,CAAuC,SAAS;+EAAC;AACxE;;;AAGG;IACM,MAAM,GAAG,KAAK,CAAqB,SAAS;+EAAC;AACtD;;;AAGG;IACM,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;;;;AAMG;IACM,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG1D,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AACO,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AACO,IAAA,OAAO,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EACnF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AAEF;;;;;AAKG;IACM,WAAW,GAAG,MAAM,EAAyB;AAErC,IAAA,OAAO,GAAG,MAAM,CAA+B,UAAU,CAAC,CAAC,aAAa;AACzF;;;;AAIG;AACM,IAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/B,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,QAAQ,GAAG,2BAA2B,EAAE;IACxC,SAAS,GAAG,YAAY,EAAE;AAE1B,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxE,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxE,gBAAgB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE;AAC9E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,mBAAmB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AACpF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,kBAAkB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;AACvF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,cAAc,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AAC/E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;AACjF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;IAGhF,GAAG,GAAG,MAAM,CAAgB,IAAI;4EAAC;;IAEjC,IAAI,GAAG,MAAM,CAAC,EAAE;6EAAC;IACjB,YAAY,GAAG,MAAM,CAAsB,SAAS;qFAAC;AACtE;;;;AAIG;IACK,eAAe,GAAG,KAAK;AACvB,IAAA,UAAU,GAAmC,MAAM,SAAS;AAC5D,IAAA,WAAW,GAAe,MAAM,SAAS;AAEjD;;;;AAIG;AACc,IAAA,SAAS,GAAG,QAAQ,CAAiB,MAAK;AACzD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC1D,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B;AAC0E;AAC1E,YAAA,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG;QACH;AACA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,QAAA,OAAO,oBAAoB,CAAC;YAC1B,QAAQ;YACR,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe;YACxE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,cAAc,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;AAC3D,YAAA,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9C,SAAA,CAAC;IACJ,CAAC;kFAAC;;IAGe,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;mFAAC;AAC/D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AACrD;;AAE8D;AAC9D,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;IAC/C,CAAC;oFAAC;AACO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;QACzB,OAAO,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK;IACpC,CAAC;kFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACzD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;yFAAC;AACtF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;IACnE,gBAAgB,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE;yFAC/E;IACQ,gBAAgB,GAAG,QAAQ,CAClC,MACE,IAAI,CAAC,QAAQ,EAAE;AACf,SAAC,IAAI,CAAC,eAAe,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE;yFACjC;AACQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;wFAAC;AAEzE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,IAAI;kFAAC;IAC/E,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW;uFAAC;IACjD,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW;uFAAC;AAEzC,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;mFAAC;AACxE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;IAChE,CAAC;8EAAC;AACO,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;IAChE,CAAC;8EAAC;;AAGe,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,CAAC;IACrC,CAAC;sFAAC;AAEF;;;;AAIG;AACgB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,gBAAgB;AAChE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACtD,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,MAAM;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,qBAAqB,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;IAC3E,CAAC;0FAAC;AAEF;;;;AAIG;IACgB,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,IAAI,KAAK;6FAAC;AAExE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACnF,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC;oFAAC;IACiB,WAAW,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oFAC/E;IACkB,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;qFAChF;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;0FAC7C;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;0FAC7C;AAED,IAAA,WAAA,GAAA;AACE;AAC8C;QAC9C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAE;YACnD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;;;;AAKG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK;QACjE,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD;;AAGA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC;IACtD;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC;IACvD;;IAGA,OAAO,CAAC,KAAa,EAAE,MAAoB,EAAA;QACzC,IAAI,KAAK,KAAK,CAAC;YAAE;AACjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC;eACjB,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;cAC9B,MAAM,CAAC;mBACJ,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;kBAC9B,IAAI;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5E;;IAGA,MAAM,CAAC,SAAiB,EAAE,MAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC;IACtD;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IACxE;AAEA,IAAA,gBAAgB,CAAC,EAAkC,EAAA;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE;YACpC,MAAM,MAAM,GAAG,KAAmB;AAClC;AAC0C;YAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9D,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;gBAC1E;YACF;YAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM;AACxD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI;YAChE,MAAM,MAAM,GAAG;AACb,kBAAE,SAAS,CAAC,qBAAqB,CAC7B,IAAI,CAAC,IAAI,EAAE,EACX,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EACrB,MAAM,CAAC,SAAS,KAAK,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC;kBAEtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;YACzB,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAElD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB;AACyE;AACzE,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;AAC7D,gBAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YAC5D;YACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;YACjF;QACF;AAEA,QAAA,MAAM,SAAS,GAAI,KAAoB,CAAC,SAAS;AACjD,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,YAAA,IAAI,EAAE,IAAI;AACV;;AAEqC;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvF;AAEA;;;;;AAKG;AACO,IAAA,aAAa,CAAC,KAAiB,EAAA;QACvC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B;AACyC;QACzC,IAAI,KAAK,CAAC,WAAW;YAAE;AACvB,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE;;QAE1C,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB,IAAI,KAAK,CAAC,SAAS,KAAK,gBAAgB;YAAE;AAEnF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AACrE,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC9B,KAAK,CAAC,cAAc,EAAE;gBACtB;YACF;AACA,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;gBAAE;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE;YACrB,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE;gBAC9E,KAAK,CAAC,cAAc,EAAE;YACxB;YACA;QACF;AAEA;AACuD;AACvD,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,QAAQ,KAAK,GAAG;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,MAAM;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,MAAM;gBAAE;AACjE,YAAA,MAAM,OAAO,GAAG,CAAC,OAAO;YACxB,IAAI,CAAC,MAAM,CACT,OAAO,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAC1E;YACD;QACF;AAEA,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE;YAChE,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AACA;AAC4C;QAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,iBAAiB,EAAE;YACvD,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;YAAE;AACvC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE;QACzB,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YACtF,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI;YAAE;AAE1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI;AAEnE,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;gBACvC;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;gBACxC;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;gBACtC;AACF,YAAA,KAAK,UAAU;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;gBACvC;YACF,KAAK,MAAM,EAAE;AACX,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;oBAAE;gBACzD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtD;YACF;YACA,KAAK,KAAK,EAAE;AACV,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;oBAAE;gBACzD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtD;YACF;AACA,YAAA,KAAK,OAAO;AACV;AAC8C;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC9B;YACF;;IAEJ;AAEU,IAAA,MAAM,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC5B;AAEA;;;;AAIG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE;AACnB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI;gBAAE;YAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO;gBAAE;AAC/D,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE;YACxB,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC;AACrE,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxF;;IAGQ,WAAW,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC;AACmE;AACnE,QAAA,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC;IAC/E;;IAGQ,MAAM,CAAC,MAAoB,EAAE,MAAyB,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC;AACuD;QACvD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,IAAI,GAAG,CAAC;QAEjD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;YACpD,IAAI,GAAGA,KAAW,CAChB,IAAI,EACJ,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,iBAAiB,EACtC,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,iBAAiB,CACvC;QACH;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD;AAEQ,IAAA,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAoB,EAAE,MAAyB,EAAA;AAC7F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,SAAS;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD;AAEA;;;AAGG;AACK,IAAA,OAAO,CACb,IAAmB,EACnB,MAAoB,EACpB,MAAyB,EACzB,UAA0B,EAAA;AAE1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK;QAE1C,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAgB;AAC9C,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;gBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CACpF;AACD,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,KAAK;AAE3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB;AACgC;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,KAAK;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI;IACb;;AAGQ,IAAA,aAAa,CAAC,MAAqB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC;IACnD;IAEQ,MAAM,CAAC,IAAmB,EAAE,KAAc,EAAA;AAChD,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C;AAEA;;;;;AAKG;AACK,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO;YAAE;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO;YAAE;AAE/D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,QAAQ,GAAG,KAAK;gBAChB;YACF;QACF;QACA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpD;uGAxnBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAnCpB;AACT,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE;AACxF,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FA4BU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAvChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,oBAAqB,CAAC,EAAE;AACxF,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,UAAU,EAAE,OAAO;AACnB;AACyE;AACzE,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,kBAAkB,EAAE,qBAAqB;AACzC,wBAAA,qBAAqB,EAAE,wBAAwB;AAC/C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,eAAe,EAAE,uBAAuB;AACxC,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,QAAQ,EAAE,gBAAgB;AAC3B,qBAAA;AACF,iBAAA;;;AC/FD;;;;;;;;;AASG;MAOU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;AAC/B,iBAAA;;AAGD;MAOa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AAC7B,iBAAA;;AAGD;;;;;;;;;;;;;;;AAeG;MAgBU,oBAAoB,CAAA;;IAEtB,WAAW,GAAG,KAAK,CAAS,iBAAiB;oFAAC;AAEtC,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IAC7B,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACjC,MAAM,GAAiB,IAAI;AAEzB,IAAA,KAAK,CAAC,KAAmB,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAAE;;QAEvE,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B,KAAK,CAAC,aAAgC,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,KAAK,KAAK;AAChE,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;AAEU,IAAA,IAAI,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACxE;IAEU,GAAG,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;uGAlCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,uBAAuB,EAAE,sBAAsB;AAC/C,wBAAA,eAAe,EAAE,eAAe;AAChC,wBAAA,eAAe,EAAE,cAAc;AAC/B,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,iBAAiB,EAAE,OAAO;AAC1B,wBAAA,sBAAsB,EAAE,OAAO;AAChC,qBAAA;AACF,iBAAA;;;AC/DD;;AAEG;;"}
1
+ {"version":3,"file":"slotted-angular-currency-field.mjs","sources":["../../currency-field/src/currency-field-defaults.ts","../../currency-field/src/currency-field.ts","../../currency-field/src/currency-field-input.ts","../../currency-field/src/currency-field-parts.ts","../../currency-field/src/slotted-angular-currency-field.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport type { CurrencyAffix, CurrencyUnit } from '@slotted/core/currency';\n\n/** The type step the control sits at, matching the field around it. */\nexport type CurrencyFieldSize = 'sm' | 'md' | 'lg';\n\n/**\n * How much frame the control shows. The three every framed control in this\n * library ships: `outline` takes the ground it is placed on, `subtle` sinks\n * into the page, and `plain` shows nothing at rest, which is what a dense\n * table of amounts needs.\n */\nexport type CurrencyFieldVariant = 'outline' | 'subtle' | 'plain';\n\n/**\n * `control` is a field among fields, on the control scale. `display` is the\n * headline amount of an entry sheet: the figure at the 4xl step, the\n * currency's mark drawn apart from it and muted at a smaller step, and a rule\n * under it instead of a box.\n */\nexport type CurrencyFieldAppearance = 'control' | 'display';\n\n/**\n * How the reader types the amount.\n *\n * `cents` is the cash register: digits enter at the minor unit and shift left,\n * so `1234` is `R$ 12,34`. The separator is never typed and the caret has one\n * legal position. `natural` is the spreadsheet, and the model `number-field`\n * uses: the text is the reader's until a commit.\n */\nexport type CurrencyFieldEntry = 'cents' | 'natural';\n\n/**\n * Which edge the amount is set against. `end` by default: a column of amounts\n * is compared on its last digit, and the cents-first caret already lives there.\n */\nexport type CurrencyFieldAlign = 'end' | 'start';\n\n/**\n * Where the two steppers sit, when a product asks for them. They are withdrawn\n * by default on this family: an invoice total is typed, not nudged.\n */\nexport type CurrencyFieldStepper = 'stacked' | 'split' | 'none';\n\n/**\n * What happens to an amount outside `min`…`max`. `blur` returns it to the range\n * at the commit, `strict` refuses the keystroke that would leave it, and `none`\n * keeps the amount where the reader put it and reports `aria-invalid`.\n */\nexport type CurrencyFieldClamp = 'blur' | 'strict' | 'none';\n\n/**\n * When the text takes the locale's shape, under `entry=\"natural\"`.\n *\n * `change` regroups on every keystroke, so an amount is scannable while it is\n * being typed; `commit` holds the reader's own text until blur, `Enter` or a\n * step. It is `number-field`'s axis, and it is here because `entry=\"natural\"`\n * is `number-field`'s model.\n *\n * Under `entry=\"cents\"` the text is generated from the digits after every edit,\n * so it has always taken the locale's shape as it is typed and this decides\n * nothing.\n */\nexport type CurrencyFieldFormatOn = 'change' | 'commit';\n\n/**\n * How the currency is written beside the amount, or `none` when it is not\n * written at all: the amount becomes a plain decimal with the currency's own\n * fraction digits, so the symbol can live in a `slCurrencyFieldStart` adornment\n * instead of inside the value.\n */\nexport type CurrencyFieldDisplay = 'symbol' | 'narrowSymbol' | 'code' | 'name' | 'none';\n\nexport interface CurrencyFieldDefaults {\n align: CurrencyFieldAlign;\n clamp: CurrencyFieldClamp;\n /** The currency every field under the token is in, unless it says otherwise. */\n currency: string | undefined;\n currencyDisplay: CurrencyFieldDisplay;\n entry: CurrencyFieldEntry;\n formatOn: CurrencyFieldFormatOn;\n size: CurrencyFieldSize;\n stepper: CurrencyFieldStepper;\n unit: CurrencyUnit;\n variant: CurrencyFieldVariant;\n}\n\nconst FALLBACK: CurrencyFieldDefaults = {\n align: 'end',\n clamp: 'blur',\n currency: undefined,\n currencyDisplay: 'symbol',\n entry: 'cents',\n formatOn: 'change',\n size: 'md',\n stepper: 'none',\n unit: 'major',\n variant: 'outline',\n};\n\nexport const CURRENCY_FIELD_DEFAULTS = new InjectionToken<CurrencyFieldDefaults>(\n 'slotted currency field defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/**\n * An application decides once which currency it charges in and how its\n * amounts are typed, rather than repeating the same inputs on every amount in a\n * form. A control that states any of them itself still wins. The locale and the\n * two buttons' words come from the language in force (`provideSlotted`).\n *\n * `currency` is the one worth setting first, and the only one a field cannot be\n * built without: a product has one currency in nine screens out of ten, and the\n * tenth states its own.\n */\nexport function provideCurrencyFieldDefaults(defaults: Partial<CurrencyFieldDefaults>) {\n return {\n provide: CURRENCY_FIELD_DEFAULTS,\n useFactory: (): CurrencyFieldDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a currency field renders as here, before it states anything of its own. */\nexport function injectCurrencyFieldDefaults(): CurrencyFieldDefaults {\n return inject(CURRENCY_FIELD_DEFAULTS);\n}\n\n/**\n * What the frame needs to know about the control inside it, and what the\n * control needs the frame to call.\n *\n * It is an abstract class rather than an import so the two directives can\n * depend on each other without a cycle — the shape `field`, `text-field` and\n * `number-field` already have. The input provides itself as this, and the\n * frame queries it.\n */\nexport abstract class SlCurrencyFieldControl {\n /** The identifier the steppers point `aria-controls` at. */\n abstract readonly controlId: Signal<string | null>;\n /** Whether a step up would leave the range, which is what disables a button. */\n abstract readonly atMax: Signal<boolean>;\n /** Whether a step down would. */\n abstract readonly atMin: Signal<boolean>;\n /** The submission name the frame's hidden input carries, if there is one. */\n abstract readonly submissionName: Signal<string | null>;\n /** The form that hidden input belongs to, when it is not the ancestor one. */\n abstract readonly submissionForm: Signal<string | null>;\n /** The amount in major units. */\n abstract readonly numberValue: Signal<number | null>;\n /** The amount in `unit`, for the hidden input the frame renders. */\n abstract readonly submittedValue: Signal<number | null>;\n abstract readonly resolvedDisabled: Signal<boolean | undefined>;\n abstract readonly resolvedReadOnly: Signal<boolean | undefined>;\n abstract readonly resolvedInvalid: Signal<boolean | undefined>;\n /** How the reader types, which the frame paints and the control owns. */\n abstract readonly resolvedEntry: Signal<CurrencyFieldEntry>;\n /** Moves the amount by one step and returns focus to it. */\n abstract stepBy(direction: 1 | -1, source: Event | undefined): void;\n /**\n * Moves the amount by whole steps a `scrub` drag travelled, signed, by the\n * large step under `Shift` and the small one under `Alt`.\n */\n abstract scrubBy(steps: number, source: PointerEvent): void;\n /** The native element, which a scrub focuses and reads the direction from. */\n abstract readonly inputElement: HTMLInputElement;\n /** The currency's mark the frame draws apart from the digits, at the display appearance. */\n abstract readonly affix: Signal<CurrencyAffix | null>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n currencyFieldMessages,\n type CurrencyFieldMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport {\n STEP_REPEAT_DELAY,\n STEP_REPEAT_DELAY_COARSE,\n STEP_REPEAT_INTERVAL,\n} from '@slotted/core/number';\nimport { SlField } from '@slotted/angular/field';\n\nimport { injectCurrencyFieldDefaults, SlCurrencyFieldControl } from './currency-field-defaults';\nimport type {\n CurrencyFieldAlign,\n CurrencyFieldAppearance,\n CurrencyFieldSize,\n CurrencyFieldStepper,\n CurrencyFieldVariant,\n} from './currency-field-defaults';\n\nexport type {\n CurrencyFieldAlign,\n CurrencyFieldAppearance,\n CurrencyFieldClamp,\n CurrencyFieldDisplay,\n CurrencyFieldEntry,\n CurrencyFieldSize,\n CurrencyFieldStepper,\n CurrencyFieldVariant,\n} from './currency-field-defaults';\n\n/**\n * The frame: one amount, and the two buttons that move it when a product asks\n * for them.\n *\n * **It is not the control.** The element carrying `data-ui` is the consumer's\n * own box with no role; the `input` inside it holds the amount, the identifier\n * and the APG's `spinbutton` role. WAI-ARIA settles the shape: a `spinbutton`\n * may hold only non-interactive presentational children, so the two steppers\n * are the control's siblings rather than its children.\n *\n * **The steppers are withdrawn by default**, where `number-field` ships them:\n * an invoice total is typed, not nudged.\n *\n * **Angular pays one element for the frame, and React pays none.** React can\n * render a wrapper from inside a component; an Angular directive cannot create\n * a box around its own host. `slCurrencyFieldInput` injects this class, so a\n * control written without the frame is a compile-time failure rather than a\n * silent one.\n */\n@Component({\n selector: '[slCurrencyField]',\n standalone: true,\n exportAs: 'slCurrencyField',\n imports: [SlGlyph, SlIcon],\n template: `@if (resolvedStepper() === 'split') {\n <button\n data-part=\"decrement\"\n data-part-decrement=\"\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('decrement')\"\n [disabled]=\"decrementDisabled()\"\n (pointerdown)=\"press(-1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"minus\"></svg></span>\n </button>\n }\n <ng-content select=\"[slCurrencyFieldStart]\" />\n @if (control()?.affix(); as affix) {\n @if (affix.position === 'start') {\n <span data-part=\"symbol\" data-part-symbol=\"\">{{ affix.text }}</span>\n }\n }\n <ng-content />\n @if (control()?.affix(); as affix) {\n @if (affix.position === 'end') {\n <span data-part=\"symbol\" data-part-symbol=\"\">{{ affix.text }}</span>\n }\n }\n <ng-content select=\"[slCurrencyFieldEnd]\" />\n @if (resolvedStepper() === 'split') {\n <button\n data-part=\"increment\"\n data-part-increment=\"\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('increment')\"\n [disabled]=\"incrementDisabled()\"\n (pointerdown)=\"press(1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"plus\"></svg></span>\n </button>\n } @else if (resolvedStepper() === 'stacked') {\n <span data-part=\"stepper\" data-part-stepper=\"\">\n <button\n data-part=\"increment\"\n data-part-increment=\"\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('increment')\"\n [disabled]=\"incrementDisabled()\"\n (pointerdown)=\"press(1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <!-- Both halves draw the down chevron; the stylesheet turns the\n increment's half a turn. -->\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n <button\n data-part=\"decrement\"\n data-part-decrement=\"\"\n type=\"button\"\n tabindex=\"-1\"\n [attr.aria-controls]=\"control()?.controlId()\"\n [attr.aria-label]=\"t('decrement')\"\n [disabled]=\"decrementDisabled()\"\n (pointerdown)=\"press(-1, $event)\"\n (pointerup)=\"release()\"\n (pointerleave)=\"release()\"\n (pointercancel)=\"release()\"\n >\n <span slIcon><svg slGlyph name=\"chevron-down\"></svg></span>\n </button>\n </span>\n }\n @if (control()?.submissionName(); as submissionName) {\n <input\n type=\"hidden\"\n [attr.name]=\"submissionName\"\n [attr.form]=\"control()?.submissionForm()\"\n [value]=\"hiddenValue()\"\n />\n }`,\n styleUrl: '../../../styles/src/currency-field/currency-field.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'currency-field',\n 'data-ui-currency-field': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-align]': 'resolvedAlign()',\n '[attr.data-appearance]': 'resolvedAppearance()',\n '[attr.data-entry]': 'resolvedEntry()',\n '[attr.data-stepper]': 'resolvedStepper()',\n '[attr.data-disabled]': \"control()?.resolvedDisabled() === true ? '' : null\",\n '[attr.data-invalid]': \"control()?.resolvedInvalid() === true ? '' : null\",\n '[attr.data-readonly]': \"control()?.resolvedReadOnly() === true ? '' : null\",\n '[attr.data-scrubbing]': \"scrubbing() ? '' : null\",\n },\n})\nexport class SlCurrencyField {\n /** Defaults to the field, then to the token, then to `md`. */\n readonly size = input<CurrencyFieldSize | undefined>(undefined);\n /** Defaults to the token, then to `outline`. */\n readonly variant = input<CurrencyFieldVariant | undefined>(undefined);\n /**\n * A field among fields, or the headline amount of an entry sheet. Defaults\n * to `control`. `display` sets its own type step and draws a rule rather\n * than a box, so `size` and `variant` do not apply to it.\n */\n readonly appearance = input<CurrencyFieldAppearance | undefined>(undefined);\n readonly resolvedAppearance = computed(() => this.appearance() ?? 'control');\n /** Which edge the amount is set against. Defaults to the token, then `end`. */\n readonly align = input<CurrencyFieldAlign | undefined>(undefined);\n /** Where the two steppers sit. Defaults to the token, then `none`. */\n readonly stepper = input<CurrencyFieldStepper | undefined>(undefined);\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * `increment` and `decrement` buttons' accessible names.\n */\n readonly messages = input<PartialMessages<CurrencyFieldMessages> | undefined>(undefined);\n\n private readonly defaults = injectCurrencyFieldDefaults();\n private readonly field = inject(SlField, { optional: true });\n\n /**\n * The control inside. It provides itself as `SlCurrencyFieldControl`, so the\n * frame can read the bounds, the submission name and the shared states\n * without either directive importing the other.\n */\n readonly control = contentChild(SlCurrencyFieldControl, { descendants: true });\n\n readonly resolvedSize = computed(\n () => this.size() ?? this.field?.resolvedSize() ?? this.defaults.size,\n );\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedStepper = computed(() => this.stepper() ?? this.defaults.stepper);\n /**\n * The entry model belongs to the control, because it is behaviour before it\n * is an axis: the frame only paints what the control resolved. Two inputs\n * for one decision would let the box and the element disagree about how the\n * next keystroke is read.\n */\n readonly resolvedEntry = computed(() => this.control()?.resolvedEntry() ?? this.defaults.entry);\n /** The family's words in the language in force, with this field's `messages` laid over them. */\n readonly t = injectMessages(currencyFieldMessages, this.messages);\n\n /** Whether a `slCurrencyFieldScrub` inside is being dragged. */\n readonly scrubbing = signal(false);\n\n /** A control nobody can change has two buttons that would lie about it. */\n readonly inert = computed(() => {\n const control = this.control();\n return control?.resolvedDisabled() === true || control?.resolvedReadOnly() === true;\n });\n\n protected readonly incrementDisabled = computed(\n () => this.inert() || this.control()?.atMax() === true,\n );\n protected readonly decrementDisabled = computed(\n () => this.inert() || this.control()?.atMin() === true,\n );\n\n protected readonly hiddenValue = computed(() => {\n const value = this.control()?.submittedValue() ?? null;\n return value === null ? '' : String(value);\n });\n\n private delay: ReturnType<typeof setTimeout> | undefined;\n private interval: ReturnType<typeof setInterval> | undefined;\n\n constructor() {\n /* A button unmounted mid-press would otherwise leave a timer running. */\n inject(DestroyRef).onDestroy(() => this.release());\n }\n\n /**\n * One step now, then repeating while the button is held. A coarse pointer\n * waits longer before the first repeat, because a finger that is starting to\n * scroll rests on the button first.\n */\n protected press(direction: 1 | -1, event: PointerEvent) {\n if (event.button !== 0) return;\n /* Focus stays on the amount: the button is out of the tab order and the\n caret is what the reader came back to. */\n event.preventDefault();\n const control = this.control();\n if (control === undefined) return;\n control.stepBy(direction, event);\n\n this.release();\n const wait = event.pointerType === 'touch' ? STEP_REPEAT_DELAY_COARSE : STEP_REPEAT_DELAY;\n this.delay = setTimeout(() => {\n this.interval = setInterval(() => control.stepBy(direction, undefined), STEP_REPEAT_INTERVAL);\n }, wait);\n }\n\n protected release() {\n clearTimeout(this.delay);\n clearInterval(this.interval);\n this.delay = undefined;\n this.interval = undefined;\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport {\n amountFromUnit,\n createCurrencyFormat,\n currencyAffix,\n MAX_AMOUNT_DIGITS,\n requestInUnit,\n withAmount,\n} from '@slotted/core/currency';\nimport type {\n CurrencyAffix,\n CurrencyChangeRequest,\n CurrencyFormat,\n CurrencyUnit,\n} from '@slotted/core/currency';\nimport { clamp as clampNumber } from '@slotted/core/measure';\nimport { stepNumber } from '@slotted/core/number';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason } from '@slotted/core/state';\nimport { SlField } from '@slotted/angular/field';\nimport { injectLocale } from '@slotted/angular/i18n';\n\nimport { injectCurrencyFieldDefaults, SlCurrencyFieldControl } from './currency-field-defaults';\nimport type {\n CurrencyFieldClamp,\n CurrencyFieldDisplay,\n CurrencyFieldEntry,\n CurrencyFieldFormatOn,\n} from './currency-field-defaults';\nimport { SlCurrencyField } from './currency-field';\n\n/** `undefined` stays absent; anything else becomes a number. */\nconst optionalNumber = (value: unknown) =>\n value === undefined || value === null || value === '' ? undefined : numberAttribute(value);\n\n/** The two keys that set the sign under cents-first entry. */\nconst SIGN_KEYS = new Set(['-', '−', '+', '(']);\n\n/**\n * The control itself: the amount, the currency, the identifier, and everything\n * the field around it says.\n *\n * **The element is `type=\"text\"` and carries the APG's `spinbutton` role.**\n * `type=\"number\"` empties itself whenever the text is not a valid\n * floating-point number, so no grouping separator and no currency symbol\n * survives it.\n *\n * **Under `entry=\"cents\"` the digits are the amount.** After every edit the\n * directive reads the digits out of the text and divides by the currency's\n * minor units, so `1234` is `R$ 12,34`. The text is generated rather than\n * typed, which is why rewriting it on every keystroke is legal here and\n * forbidden in `number-field`: there is no typed text to protect, and the caret\n * has exactly one legal position.\n *\n * **Unset means ask the field.** `disabled`, `readOnly` and `invalid` default to\n * `undefined` rather than `false`. A value the consumer wrote as a static\n * attribute is read before the host binding computes.\n */\n@Directive({\n selector: 'input[slCurrencyFieldInput]',\n standalone: true,\n exportAs: 'slCurrencyFieldInput',\n providers: [\n { provide: SlCurrencyFieldControl, useExisting: forwardRef(() => SlCurrencyFieldInput) },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlCurrencyFieldInput),\n multi: true,\n },\n ],\n host: {\n 'data-part': 'input',\n 'data-part-input': '',\n autocorrect: 'off',\n spellcheck: 'false',\n /* Bound rather than static, so a consumer who wrote `type=\"number\"` on a\n currency field does not get the element that empties its own value. */\n '[attr.type]': \"'text'\",\n '[attr.role]': \"'spinbutton'\",\n '[attr.id]': 'controlId()',\n '[attr.inputmode]': 'resolvedInputMode()',\n '[attr.autocomplete]': 'resolvedAutocomplete()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-invalid]': 'ariaInvalid()',\n '[attr.aria-required]': 'ariaRequired()',\n '[attr.aria-valuenow]': 'numberValue()',\n '[attr.aria-valuemin]': 'min() ?? null',\n '[attr.aria-valuemax]': 'max() ?? null',\n '[attr.aria-valuetext]': 'valueText()',\n '[attr.name]': 'null',\n '[attr.disabled]': 'disabledAttribute()',\n '[attr.readonly]': 'readonlyAttribute()',\n '(input)': 'onInput($event)',\n '(beforeinput)': 'onBeforeInput($event)',\n '(keydown)': 'onKeyDown($event)',\n '(blur)': 'onBlur($event)',\n },\n})\nexport class SlCurrencyFieldInput implements ControlValueAccessor, OnInit, SlCurrencyFieldControl {\n /**\n * An ISO 4217 code. It decides the symbol, the minor units and therefore how\n * far a digit shifts. Required here or on the token: a field that guessed two\n * minor digits would write `¥12,34`.\n */\n readonly currency = input<string | undefined>(undefined);\n /** How the currency is written beside the amount. Defaults to the token, then `symbol`. */\n readonly currencyDisplay = input<CurrencyFieldDisplay | undefined>(undefined);\n /** Overrides the currency's own minor units, for a unit price quoted finer. */\n readonly fractionDigits = input<number | undefined, unknown>(undefined, {\n transform: optionalNumber,\n });\n\n /**\n * Present means the consumer owns the amount, for the life of the component.\n * `null` is empty, and `undefined` is the absence that makes the control\n * uncontrolled — the two are different answers.\n */\n protected readonly valueInUnit = input<number | null | undefined, unknown>(undefined, {\n alias: 'value',\n transform: (raw) => (raw === undefined ? undefined : (optionalNumber(raw) ?? null)),\n });\n /** The amount the control starts from when nobody else writes one, in `unit`. */\n protected readonly defaultValueInUnit = input<number | null, unknown>(null, {\n alias: 'defaultValue',\n transform: (raw) => (raw === undefined ? null : (optionalNumber(raw) ?? null)),\n });\n /**\n * The unit `value`, `defaultValue`, `min`, `max`, the steps, `stepFrom`,\n * `valueChange`, the form model and the submitted amount are in. `major` is\n * `12.34`; `minor` is the integer `1234` of the currency's minor unit, which\n * `fractionDigits` decides when set. Entry, format and appearance do not\n * change. Defaults to the token, then `major`.\n */\n readonly unit = input<CurrencyUnit | undefined>(undefined);\n\n /** How the reader types. Defaults to the token, then `cents`. */\n readonly entry = input<CurrencyFieldEntry | undefined>(undefined);\n /**\n * When the text takes the locale's shape under `entry=\"natural\"`. Defaults to\n * the token, then `change`. Cents-first entry generates the text after every\n * edit, so it decides nothing there.\n */\n readonly formatOn = input<CurrencyFieldFormatOn | undefined>(undefined);\n\n /** The smallest amount, in `unit`. */\n protected readonly minInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'min',\n transform: optionalNumber,\n });\n /** The largest amount, in `unit`. */\n protected readonly maxInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'max',\n transform: optionalNumber,\n });\n /** What the arrows and the two buttons move by, in `unit`. One major unit by default. */\n protected readonly stepInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'step',\n transform: optionalNumber,\n });\n /** The amount `Shift` and the page keys move by. Defaults to `step * 10`. */\n protected readonly largeStepInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'largeStep',\n transform: optionalNumber,\n });\n /** The amount `Alt` moves by. Defaults to `step / 10`. */\n protected readonly smallStepInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'smallStep',\n transform: optionalNumber,\n });\n /** Where an empty control starts stepping from. Defaults to `min`, then nought. */\n protected readonly stepFromInUnit = input<number | undefined, unknown>(undefined, {\n alias: 'stepFrom',\n transform: optionalNumber,\n });\n /** Where an amount outside the range goes, and when. Defaults to the token, then `blur`. */\n readonly clamp = input<CurrencyFieldClamp | undefined>(undefined);\n /** Any other `Intl.NumberFormatOptions`. Every key here wins over the family's own. */\n readonly format = input<Intl.NumberFormatOptions | undefined>(undefined);\n /**\n * BCP 47. Decides the separators and the numbering system, never the symbol.\n * Defaults to the language in force (`provideSlotted`).\n */\n readonly locale = input<string | undefined>(undefined);\n /**\n * Lets the wheel move the amount while the control has focus. Off by default:\n * a reader scrolling a form must not change a total by passing over it.\n */\n readonly wheel = input(false, { transform: booleanAttribute });\n /**\n * Whether an emptied control holds nothing, or nought.\n *\n * Off, because an amount is not an optional number: a total, a price and a\n * balance are all nought when nothing is in them. Cleared, the control shows\n * `0,00` and emits `0`. On, it can be left empty and emits `null`.\n */\n readonly allowEmpty = input(false, { transform: booleanAttribute });\n\n /** Unstated rather than `false`, so the control defers to the field. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n readonly readOnly = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n readonly invalid = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (raw) => (raw === undefined ? undefined : booleanAttribute(raw)),\n });\n\n /**\n * One output for one transition, carrying the amount, the amount it replaces,\n * the currency, the exact integer of minor units, the reason, the originating\n * event and `cancel()`. There is no `[(value)]`, because a two-way binding has\n * one slot and can carry none of those.\n */\n readonly valueChange = output<CurrencyChangeRequest>();\n\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef).nativeElement;\n /**\n * The frame around the control. Injected without `optional`, so an `input`\n * written without it fails at construction rather than silently losing its\n * border and its ring.\n */\n readonly currencyField = inject(SlCurrencyField);\n private readonly field = inject(SlField, { optional: true });\n private readonly defaults = injectCurrencyFieldDefaults();\n private readonly appLocale = injectLocale();\n\n private readonly writtenId = inject(new HostAttributeToken('id'), { optional: true });\n private readonly writtenName = inject(new HostAttributeToken('name'), { optional: true });\n private readonly writtenForm = inject(new HostAttributeToken('form'), { optional: true });\n private readonly writtenInputMode = inject(new HostAttributeToken('inputmode'), {\n optional: true,\n });\n private readonly writtenAutocomplete = inject(new HostAttributeToken('autocomplete'), {\n optional: true,\n });\n private readonly writtenDescribedBy = inject(new HostAttributeToken('aria-describedby'), {\n optional: true,\n });\n private readonly writtenInvalid = inject(new HostAttributeToken('aria-invalid'), {\n optional: true,\n });\n private readonly writtenRequired = inject(new HostAttributeToken('aria-required'), {\n optional: true,\n });\n private readonly writtenReadonly = inject(new HostAttributeToken('readonly'), { optional: true });\n\n /** What the family holds when nobody else owns it. */\n private readonly own = signal<number | null>(null);\n /** What the element is showing. Never a second copy of the amount. */\n private readonly text = signal('');\n private readonly formDisabled = signal<boolean | undefined>(undefined);\n /**\n * The sign, while the field holds nothing to carry it. Typing `-` into an\n * empty amount and then a digit produces a debit, which a sign derived from\n * the text alone could not express.\n */\n private pendingNegative = false;\n private onChangeFn: (value: number | null) => void = () => undefined;\n private onTouchedFn: () => void = () => undefined;\n\n /**\n * One formatter, rebuilt only when something it reads actually changes. The\n * options object is read through a signal, so an inline object handed on\n * every change detection does not rebuild the parser.\n */\n /**\n * At the display appearance the mark is drawn apart from the digits, so the\n * frame can mute it at a smaller step: the text carries the amount alone,\n * and the mark stands on the side the locale writes it on.\n */\n readonly affix = computed<CurrencyAffix | null>(() => {\n const currency = this.currency() ?? this.defaults.currency;\n if (currency === undefined || this.currencyField.resolvedAppearance() !== 'display')\n return null;\n return currencyAffix({\n currency,\n currencyDisplay: this.currencyDisplay() ?? this.defaults.currencyDisplay,\n locale: this.locale() ?? this.appLocale(),\n });\n });\n\n private readonly formatter = computed<CurrencyFormat>(() => {\n const currency = this.currency() ?? this.defaults.currency;\n if (currency === undefined) {\n /* Loudly, and where it is written: a currency field cannot decide how\n many digits a cent has, and one that guessed two would write ¥12,34. */\n throw new Error(\n 'slCurrencyFieldInput needs a currency: set [currency], or provideCurrencyFieldDefaults({ currency }).',\n );\n }\n const fractionDigits = this.fractionDigits();\n const options = this.format();\n return createCurrencyFormat({\n currency,\n currencyDisplay:\n this.affix() === null ? (this.currencyDisplay() ?? this.defaults.currencyDisplay) : 'none',\n locale: this.locale() ?? this.appLocale(),\n ...(fractionDigits === undefined ? {} : { fractionDigits }),\n ...(options === undefined ? {} : { options }),\n });\n });\n\n readonly resolvedUnit = computed(() => this.unit() ?? this.defaults.unit);\n /* Everything below computes in major units; `unit` is converted here, on the way in. */\n private inMajor<T extends number | null | undefined>(amount: T): T {\n return this.resolvedUnit() === 'minor'\n ? amountFromUnit(amount, 'minor', this.formatter())\n : amount;\n }\n /** On the way out. */\n private inUnit(amount: number | null): number | null {\n return this.resolvedUnit() === 'minor' ? this.formatter().toMinorUnits(amount) : amount;\n }\n readonly value = computed(() => this.inMajor(this.valueInUnit()));\n readonly defaultValue = computed(() => this.inMajor(this.defaultValueInUnit()));\n readonly min = computed(() => this.inMajor(this.minInUnit()));\n readonly max = computed(() => this.inMajor(this.maxInUnit()));\n readonly step = computed(() => {\n const step = this.stepInUnit();\n return step === undefined ? 1 : this.inMajor(step);\n });\n readonly largeStep = computed(() => this.inMajor(this.largeStepInUnit()));\n readonly smallStep = computed(() => this.inMajor(this.smallStepInUnit()));\n readonly stepFrom = computed(() => this.inMajor(this.stepFromInUnit()));\n\n /** Present means the consumer owns it; absent means the directive does. */\n private readonly controlled = computed(() => this.value() !== undefined);\n readonly numberValue = computed(() => {\n const bound = this.value();\n const held = bound === undefined ? this.own() : bound;\n /* The amount the family settles on when nothing is left in the control.\n It governs what is emitted, what `aria-valuenow` reports and what the\n hidden input submits alike, so the three never disagree. */\n return this.allowEmpty() ? held : (held ?? 0);\n });\n readonly submittedValue = computed(() => this.inUnit(this.numberValue()));\n readonly valueText = computed(() => {\n const shown = this.text();\n if (shown === '') return null;\n const affix = this.affix();\n if (affix === null) return shown;\n return affix.position === 'start' ? `${affix.text} ${shown}` : `${shown} ${affix.text}`;\n });\n\n readonly resolvedEntry = computed(() => this.entry() ?? this.defaults.entry);\n protected readonly resolvedFormatOn = computed(() => this.formatOn() ?? this.defaults.formatOn);\n readonly resolvedClamp = computed(() => this.clamp() ?? this.defaults.clamp);\n readonly resolvedDisabled = computed(\n () => this.disabled() ?? this.formDisabled() ?? this.field?.resolvedDisabled(),\n );\n readonly resolvedReadOnly = computed(\n () =>\n this.readOnly() ??\n (this.writtenReadonly === null ? undefined : true) ??\n this.field?.resolvedReadOnly(),\n );\n readonly resolvedInvalid = computed(() => this.invalid() ?? this.field?.invalid());\n\n readonly controlId = computed(() => this.writtenId ?? this.field?.ids().control ?? null);\n readonly submissionName = computed(() => this.writtenName);\n readonly submissionForm = computed(() => this.writtenForm);\n\n private readonly parsedText = computed(() => this.formatter().parse(this.text()));\n readonly atMax = computed(() => {\n const max = this.max();\n const current = this.parsedText();\n return max !== undefined && current !== null && current >= max;\n });\n readonly atMin = computed(() => {\n const min = this.min();\n const current = this.parsedText();\n return min !== undefined && current !== null && current <= min;\n });\n\n /** Whether the range admits a debit at all. There is no `allowNegative`. */\n private readonly allowNegative = computed(() => {\n const min = this.min();\n return min === undefined || min < 0;\n });\n\n /**\n * The software keyboard, derived from the props rather than from the user\n * agent. Cents-first entry types neither a separator nor a sign into the\n * digits, so the numeric keypad is complete for the task.\n */\n protected readonly resolvedInputMode = computed(() => {\n if (this.writtenInputMode !== null) return this.writtenInputMode;\n if (this.resolvedEntry() === 'cents') return 'numeric';\n if (this.allowNegative()) return 'text';\n return this.formatter().maximumFractionDigits > 0 ? 'decimal' : 'numeric';\n });\n\n /**\n * `transaction-amount` is the token a payment amount belongs to, and the\n * default is `off`: most amounts in a back office are not payment amounts,\n * and a browser filling an invoice total is worse than no help at all.\n */\n protected readonly resolvedAutocomplete = computed(() => this.writtenAutocomplete ?? 'off');\n\n protected readonly describedBy = computed(() => {\n const merged = [this.writtenDescribedBy, this.field?.describedBy()].filter(Boolean);\n return merged.length === 0 ? null : merged.join(' ');\n });\n protected readonly ariaInvalid = computed(\n () => this.writtenInvalid ?? (this.resolvedInvalid() === true ? 'true' : null),\n );\n protected readonly ariaRequired = computed(\n () => this.writtenRequired ?? (this.field?.required() === true ? 'true' : null),\n );\n protected readonly disabledAttribute = computed(() =>\n this.resolvedDisabled() === true ? '' : null,\n );\n protected readonly readonlyAttribute = computed(() =>\n this.resolvedReadOnly() === true ? '' : null,\n );\n\n constructor() {\n /* The element shows what the family holds, and the text is only rewritten\n when it no longer means the same amount. */\n effect(() => {\n const next = this.numberValue();\n const formatter = this.formatter();\n if (Object.is(next, formatter.parse(this.text()))) return;\n this.write(formatter.format(next));\n });\n\n this.attachWheel();\n }\n\n /**\n * Angular creates every directive in a template before it binds any input, so\n * the starting amount is read here rather than in the constructor: read\n * there, `defaultValue` is always its own default and the control starts\n * empty.\n */\n ngOnInit() {\n const bound = this.value();\n const initial = bound === undefined ? this.defaultValue() : bound;\n if (bound === undefined) this.own.set(initial);\n this.write(this.formatter().format(this.numberValue()));\n }\n\n /** The native element, for `focus()`, `select()` and `setSelectionRange()`. */\n get inputElement(): HTMLInputElement {\n return this.element;\n }\n\n /** Steps up by one step and reports `programmatic`. */\n increment() {\n this.move(1, this.step(), 'programmatic', undefined);\n }\n\n /** Steps down by one step and reports `programmatic`. */\n decrement() {\n this.move(-1, this.step(), 'programmatic', undefined);\n }\n\n /** What a `slCurrencyFieldScrub` drag calls, once per whole step travelled. */\n scrubBy(steps: number, source: PointerEvent) {\n if (steps === 0) return;\n const step = this.step();\n const amount = source.shiftKey\n ? (this.largeStep() ?? step * 10)\n : source.altKey\n ? (this.smallStep() ?? step / 10)\n : step;\n this.move(steps > 0 ? 1 : -1, amount * Math.abs(steps), 'pointer', source);\n }\n\n /** What the frame's two buttons call. Focus returns to the amount. */\n stepBy(direction: 1 | -1, source: Event | undefined) {\n this.element.focus();\n this.move(direction, this.step(), 'pointer', source);\n }\n\n writeValue(value: number | null) {\n const amount = this.inMajor(value ?? null);\n this.own.set(amount);\n this.write(this.formatter().format(this.settledAmount(amount)));\n }\n\n registerOnChange(fn: (value: number | null) => void) {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.formDisabled.set(isDisabled);\n }\n\n protected onInput(event: Event) {\n const next = this.element.value;\n const formatter = this.formatter();\n\n if (this.resolvedEntry() !== 'cents') {\n const native = event as InputEvent;\n /* An IME commits a whole run, and a run reshaped half way through is a\n run the engine can no longer finish. */\n if (this.resolvedFormatOn() !== 'change' || native.isComposing) {\n this.text.set(next);\n this.request(this.settledAmount(formatter.parse(next)), 'keyboard', event);\n return;\n }\n\n const caret = this.element.selectionStart ?? next.length;\n const deletion = native.inputType?.startsWith('delete') === true;\n const edited = deletion\n ? formatter.deleteAcrossSeparator(\n this.text(),\n { text: next, caret },\n native.inputType === 'deleteContentForward' ? 1 : -1,\n )\n : { text: next, caret };\n const shaped = formatter.formatWhileTyping(edited);\n\n this.write(shaped.text);\n /* `write` puts the caret after the last digit under cents-first entry and\n leaves it alone otherwise, so this is the only place it moves here. */\n if (this.element.ownerDocument.activeElement === this.element) {\n this.element.setSelectionRange(shaped.caret, shaped.caret);\n }\n this.request(this.settledAmount(formatter.parse(shaped.text)), 'keyboard', event);\n return;\n }\n\n const inputType = (event as InputEvent).inputType;\n const edit = formatter.editFromText({\n text: next,\n /* What the element showed before this keystroke, which is what turns the\n digits the reader added into digits at the right rather than digits\n where the caret happened to be. */\n previous: this.text(),\n negative: this.negativeNow(),\n allowNegative: this.allowNegative(),\n allowEmpty: this.allowEmpty(),\n ...(inputType === undefined ? {} : { inputType }),\n });\n this.pendingNegative = edit.value !== null && edit.value < 0;\n this.settle(edit.value, this.request(edit.value, 'keyboard', event, edit.minorUnits));\n }\n\n /**\n * The keystroke filter. `beforeinput` is where a keystroke, a paste and a\n * drop all arrive before the element changes, and it is the only place a\n * character that cannot be part of an amount can be refused without moving\n * the caret.\n */\n protected onBeforeInput(event: InputEvent) {\n if (event.defaultPrevented) return;\n /* An IME commits a whole run; refusing it character by character would\n make a full-width `123` untypeable. */\n if (event.isComposing) return;\n if (event.inputType.startsWith('delete')) return;\n /* A paste is parsed rather than filtered: it is the reader's own amount. */\n if (event.inputType === 'insertFromPaste' || event.inputType === 'insertFromDrop') return;\n\n const formatter = this.formatter();\n const start = this.element.selectionStart ?? this.element.value.length;\n const finish = this.element.selectionEnd ?? this.element.value.length;\n const inserted = event.data ?? '';\n const next = this.element.value.slice(0, start) + inserted + this.element.value.slice(finish);\n const min = this.min();\n const max = this.max();\n\n if (this.resolvedEntry() !== 'cents') {\n if (!formatter.isPartial(next)) {\n event.preventDefault();\n return;\n }\n if (this.resolvedClamp() !== 'strict') return;\n const parsed = formatter.parse(next);\n if (parsed === null) return;\n if ((min !== undefined && parsed < min) || (max !== undefined && parsed > max)) {\n event.preventDefault();\n }\n return;\n }\n\n /* The sign is a key rather than a digit, so `-` pressed twice does not\n produce two signs and never enters the digit run. */\n if (SIGN_KEYS.has(inserted)) {\n event.preventDefault();\n if (!this.allowNegative()) return;\n const wanted = inserted !== '+';\n this.pendingNegative = wanted;\n const current = this.numberValue();\n if (current === null || current === 0 || current < 0 === wanted) return;\n const flipped = -current;\n this.settle(\n flipped,\n this.request(flipped, 'keyboard', event, formatter.toMinorUnits(flipped)),\n );\n return;\n }\n\n if (formatter.digitsOf(inserted).length !== [...inserted].length) {\n event.preventDefault();\n return;\n }\n /* Fifteen digits is where a double stops holding a cent, so the text stops\n growing rather than rounding silently. */\n if (formatter.digitsOf(next).length > MAX_AMOUNT_DIGITS) {\n event.preventDefault();\n return;\n }\n if (this.resolvedClamp() !== 'strict') return;\n const edit = formatter.editFromText({\n text: next,\n previous: this.element.value,\n negative: this.negativeNow(),\n allowNegative: this.allowNegative(),\n allowEmpty: this.allowEmpty(),\n });\n if (edit.value === null) return;\n if ((min !== undefined && edit.value < min) || (max !== undefined && edit.value > max)) {\n event.preventDefault();\n }\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true) return;\n\n const step = this.step();\n const large = this.largeStep() ?? step * 10;\n const small = this.smallStep() ?? step / 10;\n const amount = event.shiftKey ? large : event.altKey ? small : step;\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.move(1, amount, 'keyboard', event);\n return;\n case 'ArrowDown':\n event.preventDefault();\n this.move(-1, amount, 'keyboard', event);\n return;\n case 'PageUp':\n event.preventDefault();\n this.move(1, large, 'keyboard', event);\n return;\n case 'PageDown':\n event.preventDefault();\n this.move(-1, large, 'keyboard', event);\n return;\n case 'Home': {\n const min = this.min();\n if (min === undefined || event.ctrlKey || event.metaKey) return;\n event.preventDefault();\n this.settle(min, this.request(min, 'keyboard', event));\n return;\n }\n case 'End': {\n const max = this.max();\n if (max === undefined || event.ctrlKey || event.metaKey) return;\n event.preventDefault();\n this.settle(max, this.request(max, 'keyboard', event));\n return;\n }\n case 'Enter':\n /* Committed and not intercepted: a single-line control submits its\n form, which is the platform's behaviour. */\n this.commit('keyboard', event);\n return;\n default:\n }\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouchedFn();\n this.commit('blur', event);\n }\n\n /**\n * The wheel, when it is asked for, and never otherwise. It is a native\n * listener rather than a host binding because the event has to be cancelled,\n * and a host listener on `wheel` is passive in some browsers.\n */\n private attachWheel() {\n const onWheel = (event: WheelEvent) => {\n if (!this.wheel()) return;\n if (this.resolvedDisabled() === true || this.resolvedReadOnly() === true) return;\n if (this.element.ownerDocument.activeElement !== this.element) return;\n if (event.deltaY === 0) return;\n event.preventDefault();\n this.move(event.deltaY < 0 ? 1 : -1, this.step(), 'pointer', event);\n };\n\n this.element.addEventListener('wheel', onWheel, { passive: false });\n inject(DestroyRef).onDestroy(() => this.element.removeEventListener('wheel', onWheel));\n }\n\n /** The sign at the moment of the edit, rather than at the last render. */\n private negativeNow() {\n const current = this.numberValue();\n /* Nought has no sign — `-0` and `0` are one amount — so a debit held\n against an empty or nought amount can only come from the key. */\n return current === null || current === 0 ? this.pendingNegative : current < 0;\n }\n\n /** Formats what the reader typed and puts the amount back in range. */\n private commit(reason: ChangeReason, source: Event | undefined) {\n const formatter = this.formatter();\n let next = formatter.parse(this.text());\n /* The commit is where a half-typed amount stops being half typed, so it is\n where an emptied one becomes the nought it means. */\n if (next === null && !this.allowEmpty()) next = 0;\n\n if (next !== null && this.resolvedClamp() !== 'none') {\n next = clampNumber(\n next,\n this.min() ?? Number.NEGATIVE_INFINITY,\n this.max() ?? Number.POSITIVE_INFINITY,\n );\n }\n this.settle(next, this.request(next, reason, source));\n }\n\n private move(direction: 1 | -1, amount: number, reason: ChangeReason, source: Event | undefined) {\n const min = this.min();\n const max = this.max();\n const stepFrom = this.stepFrom();\n const next = stepNumber({\n value: this.formatter().parse(this.text()),\n direction,\n step: amount,\n ...(min === undefined ? {} : { min }),\n ...(max === undefined ? {} : { max }),\n ...(stepFrom === undefined ? {} : { stepFrom }),\n });\n this.settle(next, this.request(next, reason, source));\n }\n\n /**\n * Asks to move, and says whether anything did. A refused request answers\n * `false`, and the caller uses that to decide what the element shows.\n */\n private request(\n next: number | null,\n reason: ChangeReason,\n source: Event | undefined,\n minorUnits?: number | null,\n ): boolean {\n const formatter = this.formatter();\n const current = this.numberValue();\n if (Object.is(next, current)) return false;\n\n let cancelled = false;\n const state = createControllable<number | null>({\n controlled: undefined,\n initial: current,\n onRequest: (pending) => {\n this.valueChange.emit(\n requestInUnit(\n withAmount(pending, formatter.currency, minorUnits ?? formatter.toMinorUnits(next)),\n this.resolvedUnit(),\n formatter,\n ),\n );\n cancelled = pending.cancelled;\n },\n });\n state.request(next, reason, source);\n if (cancelled) return false;\n\n this.onChangeFn(this.inUnit(next));\n /* A controlled control never moves its own amount: it asks, and waits for\n the consumer's next value. */\n if (this.controlled()) return false;\n this.own.set(next);\n return true;\n }\n\n /** Nothing, or the nought it means. The one rule `allowEmpty` decides. */\n private settledAmount(amount: number | null) {\n return this.allowEmpty() ? amount : (amount ?? 0);\n }\n\n private settle(next: number | null, moved: boolean) {\n const shown = moved ? next : this.numberValue();\n this.write(this.formatter().format(shown));\n }\n\n /**\n * One place the element's text is written, so the signal never drifts from\n * it. Under cents-first entry the caret goes back after the last digit —\n * before whatever affix the locale writes at the end — because that is the\n * only position where the next keystroke means anything.\n */\n private write(value: string) {\n if (this.element.value !== value) this.element.value = value;\n this.text.set(value);\n\n if (this.resolvedEntry() !== 'cents') return;\n if (this.element.ownerDocument.activeElement !== this.element) return;\n\n const formatter = this.formatter();\n let position = value.length;\n for (let index = value.length; index > 0; index -= 1) {\n if (formatter.digitsOf(value[index - 1] ?? '') !== '') {\n position = index;\n break;\n }\n }\n this.element.setSelectionRange(position, position);\n }\n}\n","import { Directive, inject, input, signal } from '@angular/core';\nimport { createScrub, SCRUB_SENSITIVITY } from '@slotted/core/number';\nimport type { Scrub } from '@slotted/core/number';\n\nimport { SlCurrencyField } from './currency-field';\n\n/**\n * An adornment before the amount in the reading direction: a currency mark, a\n * period, an icon. Named for the direction rather than for a side, so the same\n * markup puts the mark before the amount in both directions.\n *\n * It is a sibling of the number rather than part of it. A symbol that belongs\n * *inside* the amount is what `currency` and `currencyDisplay` write, and it is\n * selected, copied and parsed with the amount; this one is none of those\n * things.\n */\n@Directive({\n selector: '[slCurrencyFieldStart]',\n standalone: true,\n exportAs: 'slCurrencyFieldStart',\n host: { 'data-part': 'start', 'data-part-start': '' },\n})\nexport class SlCurrencyFieldStart {}\n\n/** An adornment after the amount in the reading direction. */\n@Directive({\n selector: '[slCurrencyFieldEnd]',\n standalone: true,\n exportAs: 'slCurrencyFieldEnd',\n host: { 'data-part': 'end', 'data-part-end': '' },\n})\nexport class SlCurrencyFieldEnd {}\n\n/**\n * A mark that moves the amount when it is dragged sideways — the design\n * tools' gesture, shared with `slNumberFieldScrub`. Placed inside\n * `slCurrencyFieldStart` or `slCurrencyFieldEnd`, where the frame it belongs\n * to is its ancestor; the currency symbol, with `currencyDisplay=\"none\"` on\n * the control, is the natural mark:\n *\n * ```html\n * <span slCurrencyFieldStart><span slCurrencyFieldScrub>R$</span></span>\n * ```\n *\n * Each `sensitivity` pixels towards the inline end is one step up; `Shift`\n * moves by the large step and `Alt` by the small one, as on the keyboard. It\n * is hidden from assistive technology and takes no focus: the input's arrow\n * keys are the same movement.\n */\n@Directive({\n selector: '[slCurrencyFieldScrub]',\n standalone: true,\n exportAs: 'slCurrencyFieldScrub',\n host: {\n 'data-part': 'scrub',\n 'data-part-scrub': '',\n 'aria-hidden': 'true',\n '[attr.data-scrubbing]': \"active() ? '' : null\",\n '(pointerdown)': 'begin($event)',\n '(pointermove)': 'drag($event)',\n '(pointerup)': 'end()',\n '(pointercancel)': 'end()',\n '(lostpointercapture)': 'end()',\n },\n})\nexport class SlCurrencyFieldScrub {\n /** Pixels of horizontal travel per step. Defaults to 2. */\n readonly sensitivity = input<number>(SCRUB_SENSITIVITY);\n\n private readonly frame = inject(SlCurrencyField);\n protected readonly active = signal(false);\n private travel: Scrub | null = null;\n\n protected begin(event: PointerEvent) {\n const control = this.frame.control();\n if (event.button !== 0 || control === undefined || this.frame.inert()) return;\n /* No text selection, and the caret stays in the amount the drag moves. */\n event.preventDefault();\n control.inputElement.focus();\n (event.currentTarget as Element | null)?.setPointerCapture?.(event.pointerId);\n this.travel = createScrub({\n clientX: event.clientX,\n sensitivity: this.sensitivity(),\n rtl: getComputedStyle(control.inputElement).direction === 'rtl',\n });\n this.active.set(true);\n this.frame.scrubbing.set(true);\n }\n\n protected drag(event: PointerEvent) {\n if (this.travel === null) return;\n this.frame.control()?.scrubBy(this.travel.steps(event.clientX), event);\n }\n\n protected end() {\n if (this.travel === null) return;\n this.travel = null;\n this.active.set(false);\n this.frame.scrubbing.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["clampNumber"],"mappings":";;;;;;;;;;;;AAwFA,MAAM,QAAQ,GAA0B;AACtC,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,eAAe,EAAE,QAAQ;AACzB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,OAAO,EAAE,SAAS;CACnB;MAEY,uBAAuB,GAAG,IAAI,cAAc,CACvD,iCAAiC,EACjC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE;AAGjD;;;;;;;;;AASG;AACG,SAAU,4BAA4B,CAAC,QAAwC,EAAA;IACnF,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,UAAU,EAAE,OAA8B,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;KACxE;AACH;AAEA;SACgB,2BAA2B,GAAA;AACzC,IAAA,OAAO,MAAM,CAAC,uBAAuB,CAAC;AACxC;AAEA;;;;;;;;AAQG;MACmB,sBAAsB,CAAA;AA+B3C;;AC3HD;;;;;;;;;;;;;;;;;;AAkBG;MAoHU,eAAe,CAAA;;IAEjB,IAAI,GAAG,KAAK,CAAgC,SAAS;6EAAC;;IAEtD,OAAO,GAAG,KAAK,CAAmC,SAAS;gFAAC;AACrE;;;;AAIG;IACM,UAAU,GAAG,KAAK,CAAsC,SAAS;mFAAC;IAClE,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,SAAS;2FAAC;;IAEnE,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;;IAExD,OAAO,GAAG,KAAK,CAAmC,SAAS;gFAAC;AACrE;;;AAGG;IACM,QAAQ,GAAG,KAAK,CAAqD,SAAS;iFAAC;IAEvE,QAAQ,GAAG,2BAA2B,EAAE;IACxC,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE5D;;;;AAIG;IACM,OAAO,GAAG,YAAY,CAAC,sBAAsB,+EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;IAErE,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFACtE;AACQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AACzE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACnE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;wFAAC;AAClF;;;;;AAKG;AACM,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;;IAEtF,CAAC,GAAG,cAAc,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAGxD,SAAS,GAAG,MAAM,CAAC,KAAK;kFAAC;;AAGzB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,OAAO,EAAE,gBAAgB,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,gBAAgB,EAAE,KAAK,IAAI;IACrF,CAAC;8EAAC;AAEiB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI;0FACvD;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI;0FACvD;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,IAAI;AACtD,QAAA,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5C,CAAC;oFAAC;AAEM,IAAA,KAAK;AACL,IAAA,QAAQ;AAEhB,IAAA,WAAA,GAAA;;AAEE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD;AAEA;;;;AAIG;IACO,KAAK,CAAC,SAAiB,EAAE,KAAmB,EAAA;AACpD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AACxB;AAC4C;QAC5C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,IAAI,OAAO,KAAK,SAAS;YAAE;AAC3B,QAAA,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;QAEhC,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,GAAG,wBAAwB,GAAG,iBAAiB;AACzF,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,oBAAoB,CAAC;QAC/F,CAAC,EAAE,IAAI,CAAC;IACV;IAEU,OAAO,GAAA;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;uGAvGW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oDAAA,EAAA,mBAAA,EAAA,mDAAA,EAAA,oBAAA,EAAA,oDAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8BM,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5I5C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAyFN,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+jjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA1FM,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA+Gd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAnH3B,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN,iBAAiB,EAAA,OAAA,EAClB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAA,QAAA,EAChB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFN,KAAA,CAAA,EAAA,eAAA,EAEa,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,wBAAwB,EAAE,EAAE;AAC5B,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,wBAAwB,EAAE,sBAAsB;AAChD,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,sBAAsB,EAAE,oDAAoD;AAC5E,wBAAA,qBAAqB,EAAE,mDAAmD;AAC1E,wBAAA,sBAAsB,EAAE,oDAAoD;AAC5E,wBAAA,uBAAuB,EAAE,yBAAyB;AACnD,qBAAA,EAAA,MAAA,EAAA,CAAA,+jjBAAA,CAAA,EAAA;AAgC+B,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACjK/E;AACA,MAAM,cAAc,GAAG,CAAC,KAAc,KACpC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;AAE5F;AACA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;AAmBG;MAyCU,oBAAoB,CAAA;AAC/B;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAqB,SAAS;iFAAC;;IAE/C,eAAe,GAAG,KAAK,CAAmC,SAAS;wFAAC;;IAEpE,cAAc,GAAG,KAAK,CAA8B,SAAS,sFACpE,SAAS,EAAE,cAAc,EAAA,CACzB;AAEF;;;;AAIG;AACgB,IAAA,WAAW,GAAG,KAAK,CAAqC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,CAAA,EAClF,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAA,CACnF;;AAEiB,IAAA,kBAAkB,GAAG,KAAK,CAAyB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,CAAA,EACxE,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAA,CAC9E;AACF;;;;;;AAMG;IACM,IAAI,GAAG,KAAK,CAA2B,SAAS;6EAAC;;IAGjD,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;AACjE;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAoC,SAAS;iFAAC;;AAGpD,IAAA,SAAS,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EACzE,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,cAAc,EAAA,CACzB;;AAEiB,IAAA,SAAS,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EACzE,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,cAAc,EAAA,CACzB;;AAEiB,IAAA,UAAU,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,CAAA,EAC1E,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,cAAc,EAAA,CACzB;;AAEiB,IAAA,eAAe,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAC/E,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,cAAc,EAAA,CACzB;;AAEiB,IAAA,eAAe,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,CAAA,EAC/E,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,cAAc,EAAA,CACzB;;AAEiB,IAAA,cAAc,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,8BAAA,EAAA,CAAA,EAC9E,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,cAAc,EAAA,CACzB;;IAEO,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;;IAExD,MAAM,GAAG,KAAK,CAAuC,SAAS;+EAAC;AACxE;;;AAGG;IACM,MAAM,GAAG,KAAK,CAAqB,SAAS;+EAAC;AACtD;;;AAGG;IACM,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9D;;;;;;AAMG;IACM,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG1D,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AACO,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AACO,IAAA,OAAO,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EACnF,SAAS,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC3E;AAEF;;;;;AAKG;IACM,WAAW,GAAG,MAAM,EAAyB;AAErC,IAAA,OAAO,GAAG,MAAM,CAA+B,UAAU,CAAC,CAAC,aAAa;AACzF;;;;AAIG;AACM,IAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/B,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,QAAQ,GAAG,2BAA2B,EAAE;IACxC,SAAS,GAAG,YAAY,EAAE;AAE1B,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxE,IAAA,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxE,gBAAgB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE;AAC9E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,mBAAmB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AACpF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,kBAAkB,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;AACvF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,cAAc,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,cAAc,CAAC,EAAE;AAC/E,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;IACe,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;AACjF,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,eAAe,GAAG,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;IAGhF,GAAG,GAAG,MAAM,CAAgB,IAAI;4EAAC;;IAEjC,IAAI,GAAG,MAAM,CAAC,EAAE;6EAAC;IACjB,YAAY,GAAG,MAAM,CAAsB,SAAS;qFAAC;AACtE;;;;AAIG;IACK,eAAe,GAAG,KAAK;AACvB,IAAA,UAAU,GAAmC,MAAM,SAAS;AAC5D,IAAA,WAAW,GAAe,MAAM,SAAS;AAEjD;;;;AAIG;AACH;;;;AAIG;AACM,IAAA,KAAK,GAAG,QAAQ,CAAuB,MAAK;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAC1D,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,KAAK,SAAS;AACjF,YAAA,OAAO,IAAI;AACb,QAAA,OAAO,aAAa,CAAC;YACnB,QAAQ;YACR,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe;YACxE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1C,SAAA,CAAC;IACJ,CAAC;8EAAC;AAEe,IAAA,SAAS,GAAG,QAAQ,CAAiB,MAAK;AACzD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC1D,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B;AAC0E;AAC1E,YAAA,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG;QACH;AACA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,QAAA,OAAO,oBAAoB,CAAC;YAC1B,QAAQ;YACR,eAAe,EACb,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,MAAM;YAC5F,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,cAAc,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;AAC3D,YAAA,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9C,SAAA,CAAC;IACJ,CAAC;kFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;qFAAC;;AAEjE,IAAA,OAAO,CAAsC,MAAS,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK;cAC3B,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;cAChD,MAAM;IACZ;;AAEQ,IAAA,MAAM,CAAC,MAAqB,EAAA;QAClC,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM;IACzF;AACS,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;8EAAC;AACxD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;qFAAC;AACtE,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;4EAAC;AACpD,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;4EAAC;AACpD,IAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,OAAO,IAAI,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,CAAC;6EAAC;AACO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;kFAAC;AAChE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;kFAAC;AAChE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;iFAAC;;IAGtD,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS;mFAAC;AAC/D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;AACrD;;AAE8D;AAC9D,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;IAC/C,CAAC;oFAAC;AACO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;uFAAC;AAChE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAChC,OAAO,KAAK,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAA,EAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAA,CAAE,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAA,CAAE;IACzF,CAAC;kFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;AACzD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;yFAAC;AACtF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;sFAAC;IACnE,gBAAgB,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE;yFAC/E;IACQ,gBAAgB,GAAG,QAAQ,CAClC,MACE,IAAI,CAAC,QAAQ,EAAE;AACf,SAAC,IAAI,CAAC,eAAe,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE;yFACjC;AACQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;wFAAC;AAEzE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,IAAI;kFAAC;IAC/E,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW;uFAAC;IACjD,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW;uFAAC;AAEzC,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;mFAAC;AACxE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;IAChE,CAAC;8EAAC;AACO,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG;IAChE,CAAC;8EAAC;;AAGe,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,CAAC;IACrC,CAAC;sFAAC;AAEF;;;;AAIG;AACgB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACnD,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,gBAAgB;AAChE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACtD,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,MAAM;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,qBAAqB,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;IAC3E,CAAC;0FAAC;AAEF;;;;AAIG;IACgB,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,IAAI,KAAK;6FAAC;AAExE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACnF,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC;oFAAC;IACiB,WAAW,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oFAC/E;IACkB,YAAY,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;qFAChF;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;0FAC7C;AACkB,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;0FAC7C;AAED,IAAA,WAAA,GAAA;AACE;AAC8C;QAC9C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAE;YACnD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;;;;AAKG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK;QACjE,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD;;AAGA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC;IACtD;;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC;IACvD;;IAGA,OAAO,CAAC,KAAa,EAAE,MAAoB,EAAA;QACzC,IAAI,KAAK,KAAK,CAAC;YAAE;AACjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC;eACjB,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;cAC9B,MAAM,CAAC;mBACJ,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;kBAC9B,IAAI;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5E;;IAGA,MAAM,CAAC,SAAiB,EAAE,MAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC;IACtD;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE;AAEA,IAAA,gBAAgB,CAAC,EAAkC,EAAA;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE;YACpC,MAAM,MAAM,GAAG,KAAmB;AAClC;AAC0C;YAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9D,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;gBAC1E;YACF;YAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM;AACxD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI;YAChE,MAAM,MAAM,GAAG;AACb,kBAAE,SAAS,CAAC,qBAAqB,CAC7B,IAAI,CAAC,IAAI,EAAE,EACX,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EACrB,MAAM,CAAC,SAAS,KAAK,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC;kBAEtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;YACzB,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAElD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB;AACyE;AACzE,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;AAC7D,gBAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YAC5D;YACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;YACjF;QACF;AAEA,QAAA,MAAM,SAAS,GAAI,KAAoB,CAAC,SAAS;AACjD,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,YAAA,IAAI,EAAE,IAAI;AACV;;AAEqC;AACrC,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvF;AAEA;;;;;AAKG;AACO,IAAA,aAAa,CAAC,KAAiB,EAAA;QACvC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B;AACyC;QACzC,IAAI,KAAK,CAAC,WAAW;YAAE;AACvB,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE;;QAE1C,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB,IAAI,KAAK,CAAC,SAAS,KAAK,gBAAgB;YAAE;AAEnF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AACrE,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC9B,KAAK,CAAC,cAAc,EAAE;gBACtB;YACF;AACA,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;gBAAE;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE;YACrB,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE;gBAC9E,KAAK,CAAC,cAAc,EAAE;YACxB;YACA;QACF;AAEA;AACuD;AACvD,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,QAAQ,KAAK,GAAG;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,MAAM;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,MAAM;gBAAE;AACjE,YAAA,MAAM,OAAO,GAAG,CAAC,OAAO;YACxB,IAAI,CAAC,MAAM,CACT,OAAO,EACP,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAC1E;YACD;QACF;AAEA,QAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE;YAChE,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AACA;AAC4C;QAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,iBAAiB,EAAE;YACvD,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;YAAE;AACvC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5B,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE;QACzB,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YACtF,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,CAAC,gBAAgB;YAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI;YAAE;AAE1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI;AAEnE,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;gBACvC;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;gBACxC;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;gBACtC;AACF,YAAA,KAAK,UAAU;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;gBACvC;YACF,KAAK,MAAM,EAAE;AACX,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;oBAAE;gBACzD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtD;YACF;YACA,KAAK,KAAK,EAAE;AACV,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;gBACtB,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;oBAAE;gBACzD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtD;YACF;AACA,YAAA,KAAK,OAAO;AACV;AAC8C;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC9B;YACF;;IAEJ;AAEU,IAAA,MAAM,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAC5B;AAEA;;;;AAIG;IACK,WAAW,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE;AACnB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI;gBAAE;YAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO;gBAAE;AAC/D,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE;YACxB,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC;AACrE,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxF;;IAGQ,WAAW,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC;AACmE;AACnE,QAAA,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC;IAC/E;;IAGQ,MAAM,CAAC,MAAoB,EAAE,MAAyB,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC;AACuD;QACvD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,IAAI,GAAG,CAAC;QAEjD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;YACpD,IAAI,GAAGA,KAAW,CAChB,IAAI,EACJ,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,iBAAiB,EACtC,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,iBAAiB,CACvC;QACH;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD;AAEQ,IAAA,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAoB,EAAE,MAAyB,EAAA;AAC7F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC;AACtB,YAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,SAAS;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,YAAA,IAAI,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD;AAEA;;;AAGG;AACK,IAAA,OAAO,CACb,IAAmB,EACnB,MAAoB,EACpB,MAAyB,EACzB,UAA0B,EAAA;AAE1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK;QAE1C,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAgB;AAC9C,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,aAAa,CACX,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EACnF,IAAI,CAAC,YAAY,EAAE,EACnB,SAAS,CACV,CACF;AACD,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,KAAK;QAE3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC;AACgC;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,KAAK;AACnC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI;IACb;;AAGQ,IAAA,aAAa,CAAC,MAAqB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC;IACnD;IAEQ,MAAM,CAAC,IAAmB,EAAE,KAAc,EAAA;AAChD,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C;AAEA;;;;;AAKG;AACK,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO;YAAE;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO;YAAE;AAE/D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AACpD,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrD,QAAQ,GAAG,KAAK;gBAChB;YACF;QACF;QACA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpD;uGAvsBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,KAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EApCpB;AACT,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE;AACxF,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FA6BU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,oBAAqB,CAAC,EAAE;AACxF,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,iBAAiB,EAAE,EAAE;AACrB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,UAAU,EAAE,OAAO;AACnB;AACyE;AACzE,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,kBAAkB,EAAE,qBAAqB;AACzC,wBAAA,qBAAqB,EAAE,wBAAwB;AAC/C,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,iBAAiB,EAAE,qBAAqB;AACxC,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,eAAe,EAAE,uBAAuB;AACxC,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,QAAQ,EAAE,gBAAgB;AAC3B,qBAAA;AACF,iBAAA;;;AC5GD;;;;;;;;;AASG;MAOU,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE;AACtD,iBAAA;;AAGD;MAOa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,KAAA,EAAA,eAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE;AAClD,iBAAA;;AAGD;;;;;;;;;;;;;;;AAeG;MAiBU,oBAAoB,CAAA;;IAEtB,WAAW,GAAG,KAAK,CAAS,iBAAiB;oFAAC;AAEtC,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;IAC7B,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACjC,MAAM,GAAiB,IAAI;AAEzB,IAAA,KAAK,CAAC,KAAmB,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAAE;;QAEvE,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B,KAAK,CAAC,aAAgC,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,KAAK,KAAK;AAChE,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;AAEU,IAAA,IAAI,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACxE;IAEU,GAAG,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;uGAlCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,iBAAiB,EAAE,EAAE;AACrB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,uBAAuB,EAAE,sBAAsB;AAC/C,wBAAA,eAAe,EAAE,eAAe;AAChC,wBAAA,eAAe,EAAE,cAAc;AAC/B,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,iBAAiB,EAAE,OAAO;AAC1B,wBAAA,sBAAsB,EAAE,OAAO;AAChC,qBAAA;AACF,iBAAA;;;AChED;;AAEG;;"}