@rebasepro/studio 0.0.1-canary.4d4fb3e

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 (2509) hide show
  1. package/LICENSE +114 -0
  2. package/README.md +159 -0
  3. package/dist/common/src/collections/CollectionRegistry.d.ts +48 -0
  4. package/dist/common/src/collections/index.d.ts +1 -0
  5. package/dist/common/src/data/buildRebaseData.d.ts +14 -0
  6. package/dist/common/src/index.d.ts +3 -0
  7. package/dist/common/src/util/builders.d.ts +57 -0
  8. package/dist/common/src/util/callbacks.d.ts +6 -0
  9. package/dist/common/src/util/collections.d.ts +11 -0
  10. package/dist/common/src/util/common.d.ts +2 -0
  11. package/dist/common/src/util/conditions.d.ts +26 -0
  12. package/dist/common/src/util/entities.d.ts +36 -0
  13. package/dist/common/src/util/enums.d.ts +3 -0
  14. package/dist/common/src/util/index.d.ts +16 -0
  15. package/dist/common/src/util/navigation_from_path.d.ts +34 -0
  16. package/dist/common/src/util/navigation_utils.d.ts +20 -0
  17. package/dist/common/src/util/parent_references_from_path.d.ts +6 -0
  18. package/dist/common/src/util/paths.d.ts +14 -0
  19. package/dist/common/src/util/permissions.d.ts +5 -0
  20. package/dist/common/src/util/references.d.ts +2 -0
  21. package/dist/common/src/util/relations.d.ts +12 -0
  22. package/dist/common/src/util/resolutions.d.ts +72 -0
  23. package/dist/common/src/util/storage.d.ts +24 -0
  24. package/dist/core/src/components/AIIcon.d.ts +16 -0
  25. package/dist/core/src/components/ConfirmationDialog.d.ts +9 -0
  26. package/dist/core/src/components/Debug/UIReferenceView.d.ts +1 -0
  27. package/dist/core/src/components/Debug/UIStyleGuide.d.ts +1 -0
  28. package/dist/core/src/components/ErrorTooltip.d.ts +2 -0
  29. package/dist/core/src/components/ErrorView.d.ts +21 -0
  30. package/dist/core/src/components/LanguageToggle.d.ts +1 -0
  31. package/dist/core/src/components/LoginView/LoginView.d.ts +68 -0
  32. package/dist/core/src/components/LoginView/index.d.ts +2 -0
  33. package/dist/core/src/components/NotFoundPage.d.ts +1 -0
  34. package/dist/core/src/components/RebaseAuth.d.ts +10 -0
  35. package/dist/core/src/components/RebaseLogo.d.ts +7 -0
  36. package/dist/core/src/components/UnsavedChangesDialog.d.ts +9 -0
  37. package/dist/core/src/components/UserDisplay.d.ts +7 -0
  38. package/dist/core/src/components/UserSelectPopover.d.ts +62 -0
  39. package/dist/core/src/components/UserSettingsView.d.ts +1 -0
  40. package/dist/core/src/components/common/index.d.ts +6 -0
  41. package/dist/core/src/components/common/table_height.d.ts +5 -0
  42. package/dist/core/src/components/common/types.d.ts +59 -0
  43. package/dist/core/src/components/common/useColumnsIds.d.ts +9 -0
  44. package/dist/core/src/components/common/useDataTableController.d.ts +45 -0
  45. package/dist/core/src/components/common/useDebouncedData.d.ts +9 -0
  46. package/dist/core/src/components/common/useScrollRestoration.d.ts +14 -0
  47. package/dist/core/src/components/index.d.ts +16 -0
  48. package/dist/core/src/contexts/AdminModeController.d.ts +4 -0
  49. package/dist/core/src/contexts/AnalyticsContext.d.ts +3 -0
  50. package/dist/core/src/contexts/AuthControllerContext.d.ts +3 -0
  51. package/dist/core/src/contexts/CustomizationControllerContext.d.ts +3 -0
  52. package/dist/core/src/contexts/DataDriverContext.d.ts +3 -0
  53. package/dist/core/src/contexts/DatabaseAdminContext.d.ts +3 -0
  54. package/dist/core/src/contexts/DialogsProvider.d.ts +4 -0
  55. package/dist/core/src/contexts/EffectiveRoleController.d.ts +4 -0
  56. package/dist/core/src/contexts/InternalUserManagementContext.d.ts +3 -0
  57. package/dist/core/src/contexts/ModeController.d.ts +4 -0
  58. package/dist/core/src/contexts/RebaseClientInstanceContext.d.ts +6 -0
  59. package/dist/core/src/contexts/RebaseDataContext.d.ts +3 -0
  60. package/dist/core/src/contexts/SnackbarProvider.d.ts +2 -0
  61. package/dist/core/src/contexts/StorageSourceContext.d.ts +3 -0
  62. package/dist/core/src/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  63. package/dist/core/src/contexts/index.d.ts +13 -0
  64. package/dist/core/src/core/PluginLifecycleManager.d.ts +17 -0
  65. package/dist/core/src/core/PluginProviderStack.d.ts +21 -0
  66. package/dist/core/src/core/Rebase.d.ts +14 -0
  67. package/dist/core/src/core/RebaseProps.d.ts +136 -0
  68. package/dist/core/src/core/RebaseRouter.d.ts +4 -0
  69. package/dist/core/src/core/RebaseRoutes.d.ts +17 -0
  70. package/dist/core/src/core/index.d.ts +4 -0
  71. package/dist/core/src/hooks/ApiConfigContext.d.ts +24 -0
  72. package/dist/core/src/hooks/data/delete.d.ts +31 -0
  73. package/dist/core/src/hooks/data/save.d.ts +34 -0
  74. package/dist/core/src/hooks/data/useCollectionFetch.d.ts +51 -0
  75. package/dist/core/src/hooks/data/useData.d.ts +13 -0
  76. package/dist/core/src/hooks/data/useDataOrder.d.ts +12 -0
  77. package/dist/core/src/hooks/data/useEntityFetch.d.ts +30 -0
  78. package/dist/core/src/hooks/data/useRelationSelector.d.ts +52 -0
  79. package/dist/core/src/hooks/index.d.ts +36 -0
  80. package/dist/core/src/hooks/useAdminModeController.d.ts +19 -0
  81. package/dist/core/src/hooks/useAnalyticsController.d.ts +5 -0
  82. package/dist/core/src/hooks/useAuthController.d.ts +11 -0
  83. package/dist/core/src/hooks/useAuthSubscription.d.ts +2 -0
  84. package/dist/core/src/hooks/useBackendStorageSource.d.ts +30 -0
  85. package/dist/core/src/hooks/useBridgeRegistration.d.ts +18 -0
  86. package/dist/core/src/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  87. package/dist/core/src/hooks/useBuildAdminModeController.d.ts +6 -0
  88. package/dist/core/src/hooks/useBuildEffectiveRoleController.d.ts +8 -0
  89. package/dist/core/src/hooks/useBuildLocalConfigurationPersistence.d.ts +2 -0
  90. package/dist/core/src/hooks/useBuildModeController.d.ts +6 -0
  91. package/dist/core/src/hooks/useClipboard.d.ts +57 -0
  92. package/dist/core/src/hooks/useCollapsedGroups.d.ts +12 -0
  93. package/dist/core/src/hooks/useCustomizationController.d.ts +11 -0
  94. package/dist/core/src/hooks/useDialogsController.d.ts +11 -0
  95. package/dist/core/src/hooks/useEffectiveRoleController.d.ts +7 -0
  96. package/dist/core/src/hooks/useInternalUserManagementController.d.ts +12 -0
  97. package/dist/core/src/hooks/useLargeLayout.d.ts +1 -0
  98. package/dist/core/src/hooks/useModeController.d.ts +19 -0
  99. package/dist/core/src/hooks/usePermissions.d.ts +12 -0
  100. package/dist/core/src/hooks/useRebaseClient.d.ts +5 -0
  101. package/dist/core/src/hooks/useRebaseContext.d.ts +11 -0
  102. package/dist/core/src/hooks/useRebaseRegistry.d.ts +34 -0
  103. package/dist/core/src/hooks/useSlot.d.ts +18 -0
  104. package/dist/core/src/hooks/useSnackbarController.d.ts +20 -0
  105. package/dist/core/src/hooks/useStorageSource.d.ts +7 -0
  106. package/dist/core/src/hooks/useStudioBridge.d.ts +91 -0
  107. package/dist/core/src/hooks/useTranslation.d.ts +17 -0
  108. package/dist/core/src/hooks/useUnsavedChangesDialog.d.ts +12 -0
  109. package/dist/core/src/hooks/useUserConfigurationPersistence.d.ts +8 -0
  110. package/dist/core/src/hooks/useValidateAuthenticator.d.ts +21 -0
  111. package/dist/core/src/i18n/RebaseI18nProvider.d.ts +33 -0
  112. package/dist/core/src/index.d.ts +15 -0
  113. package/dist/core/src/internal/common.d.ts +3 -0
  114. package/dist/core/src/internal/useRestoreScroll.d.ts +6 -0
  115. package/dist/core/src/locales/de.d.ts +2 -0
  116. package/dist/core/src/locales/en.d.ts +10 -0
  117. package/dist/core/src/locales/es.d.ts +10 -0
  118. package/dist/core/src/locales/fr.d.ts +2 -0
  119. package/dist/core/src/locales/hi.d.ts +2 -0
  120. package/dist/core/src/locales/it.d.ts +2 -0
  121. package/dist/core/src/locales/pt.d.ts +7 -0
  122. package/dist/core/src/util/createFormexStub.d.ts +2 -0
  123. package/dist/core/src/util/entity_cache.d.ts +27 -0
  124. package/dist/core/src/util/enums.d.ts +5 -0
  125. package/dist/core/src/util/icon_list.d.ts +5 -0
  126. package/dist/core/src/util/icon_synonyms.d.ts +1853 -0
  127. package/dist/core/src/util/icons.d.ts +16 -0
  128. package/dist/core/src/util/index.d.ts +9 -0
  129. package/dist/core/src/util/previews.d.ts +4 -0
  130. package/dist/core/src/util/useStorageUploadController.d.ts +38 -0
  131. package/dist/core/src/util/useTraceUpdate.d.ts +2 -0
  132. package/dist/formex/src/Field.d.ts +52 -0
  133. package/dist/formex/src/Formex.d.ts +7 -0
  134. package/dist/formex/src/index.d.ts +5 -0
  135. package/dist/formex/src/types.d.ts +40 -0
  136. package/dist/formex/src/useCreateFormex.d.ts +14 -0
  137. package/dist/formex/src/utils.d.ts +16 -0
  138. package/dist/index.es.js +6430 -0
  139. package/dist/index.es.js.map +1 -0
  140. package/dist/index.umd.js +6443 -0
  141. package/dist/index.umd.js.map +1 -0
  142. package/dist/studio/src/components/JSEditor/JSEditor.d.ts +1 -0
  143. package/dist/studio/src/components/JSEditor/JSEditorSidebar.d.ts +21 -0
  144. package/dist/studio/src/components/JSEditor/JSMonacoEditor.d.ts +18 -0
  145. package/dist/studio/src/components/RLSEditor/PolicyEditor.d.ts +9 -0
  146. package/dist/studio/src/components/RLSEditor/RLSEditor.d.ts +19 -0
  147. package/dist/studio/src/components/RLSEditor/index.d.ts +1 -0
  148. package/dist/studio/src/components/RebaseStudio.d.ts +10 -0
  149. package/dist/studio/src/components/SQLEditor/ExplainVisualizer.d.ts +24 -0
  150. package/dist/studio/src/components/SQLEditor/MonacoEditor.d.ts +17 -0
  151. package/dist/studio/src/components/SQLEditor/SQLEditor.d.ts +11 -0
  152. package/dist/studio/src/components/SQLEditor/SQLEditorSidebar.d.ts +21 -0
  153. package/dist/studio/src/components/SQLEditor/SchemaBrowser.d.ts +8 -0
  154. package/dist/studio/src/components/StorageView/StorageView.d.ts +1 -0
  155. package/dist/studio/src/components/StudioHomePage.d.ts +9 -0
  156. package/dist/studio/src/index.d.ts +10 -0
  157. package/dist/studio/src/utils/arrays.d.ts +1 -0
  158. package/dist/studio/src/utils/entities.d.ts +0 -0
  159. package/dist/studio/src/utils/pgColumnToProperty.d.ts +6 -0
  160. package/dist/studio/src/utils/sql_utils.d.ts +52 -0
  161. package/dist/types/src/controllers/analytics_controller.d.ts +7 -0
  162. package/dist/types/src/controllers/auth.d.ts +117 -0
  163. package/dist/types/src/controllers/client.d.ts +58 -0
  164. package/dist/types/src/controllers/collection_registry.d.ts +44 -0
  165. package/dist/types/src/controllers/customization_controller.d.ts +54 -0
  166. package/dist/types/src/controllers/data.d.ts +141 -0
  167. package/dist/types/src/controllers/data_driver.d.ts +168 -0
  168. package/dist/types/src/controllers/database_admin.d.ts +11 -0
  169. package/dist/types/src/controllers/dialogs_controller.d.ts +36 -0
  170. package/dist/types/src/controllers/effective_role.d.ts +4 -0
  171. package/dist/types/src/controllers/index.d.ts +17 -0
  172. package/dist/types/src/controllers/local_config_persistence.d.ts +20 -0
  173. package/dist/types/src/controllers/navigation.d.ts +213 -0
  174. package/dist/types/src/controllers/registry.d.ts +51 -0
  175. package/dist/types/src/controllers/side_dialogs_controller.d.ts +67 -0
  176. package/dist/types/src/controllers/side_entity_controller.d.ts +89 -0
  177. package/dist/types/src/controllers/snackbar.d.ts +24 -0
  178. package/dist/types/src/controllers/storage.d.ts +173 -0
  179. package/dist/types/src/index.d.ts +4 -0
  180. package/dist/types/src/rebase_context.d.ts +101 -0
  181. package/dist/types/src/types/backend.d.ts +533 -0
  182. package/dist/types/src/types/builders.d.ts +14 -0
  183. package/dist/types/src/types/chips.d.ts +5 -0
  184. package/dist/types/src/types/collections.d.ts +812 -0
  185. package/dist/types/src/types/data_source.d.ts +64 -0
  186. package/dist/types/src/types/entities.d.ts +145 -0
  187. package/dist/types/src/types/entity_actions.d.ts +98 -0
  188. package/dist/types/src/types/entity_callbacks.d.ts +173 -0
  189. package/dist/types/src/types/entity_link_builder.d.ts +7 -0
  190. package/dist/types/src/types/entity_overrides.d.ts +9 -0
  191. package/dist/types/src/types/entity_views.d.ts +61 -0
  192. package/dist/types/src/types/export_import.d.ts +21 -0
  193. package/dist/types/src/types/index.d.ts +22 -0
  194. package/dist/types/src/types/locales.d.ts +4 -0
  195. package/dist/types/src/types/modify_collections.d.ts +5 -0
  196. package/dist/types/src/types/plugins.d.ts +225 -0
  197. package/dist/types/src/types/properties.d.ts +1091 -0
  198. package/dist/types/src/types/property_config.d.ts +70 -0
  199. package/dist/types/src/types/relations.d.ts +336 -0
  200. package/dist/types/src/types/slots.d.ts +228 -0
  201. package/dist/types/src/types/translations.d.ts +826 -0
  202. package/dist/types/src/types/user_management_delegate.d.ts +120 -0
  203. package/dist/types/src/types/websockets.d.ts +78 -0
  204. package/dist/types/src/users/index.d.ts +2 -0
  205. package/dist/types/src/users/roles.d.ts +22 -0
  206. package/dist/types/src/users/user.d.ts +46 -0
  207. package/dist/ui/src/components/Alert.d.ts +12 -0
  208. package/dist/ui/src/components/Autocomplete.d.ts +21 -0
  209. package/dist/ui/src/components/Avatar.d.ts +11 -0
  210. package/dist/ui/src/components/Badge.d.ts +8 -0
  211. package/dist/ui/src/components/BooleanSwitch.d.ts +14 -0
  212. package/dist/ui/src/components/BooleanSwitchWithLabel.d.ts +17 -0
  213. package/dist/ui/src/components/Button.d.ts +14 -0
  214. package/dist/ui/src/components/Card.d.ts +9 -0
  215. package/dist/ui/src/components/CenteredView.d.ts +9 -0
  216. package/dist/ui/src/components/Checkbox.d.ts +12 -0
  217. package/dist/ui/src/components/Chip.d.ts +22 -0
  218. package/dist/ui/src/components/CircularProgress.d.ts +5 -0
  219. package/dist/ui/src/components/CircularProgressCenter.d.ts +11 -0
  220. package/dist/ui/src/components/Collapse.d.ts +9 -0
  221. package/dist/ui/src/components/ColorPicker.d.ts +30 -0
  222. package/dist/ui/src/components/Container.d.ts +8 -0
  223. package/dist/ui/src/components/DateTimeField.d.ts +24 -0
  224. package/dist/ui/src/components/DebouncedTextField.d.ts +2 -0
  225. package/dist/ui/src/components/Dialog.d.ts +39 -0
  226. package/dist/ui/src/components/DialogActions.d.ts +7 -0
  227. package/dist/ui/src/components/DialogContent.d.ts +7 -0
  228. package/dist/ui/src/components/DialogTitle.d.ts +10 -0
  229. package/dist/ui/src/components/ErrorBoundary.d.ts +11 -0
  230. package/dist/ui/src/components/ExpandablePanel.d.ts +12 -0
  231. package/dist/ui/src/components/FileUpload.d.ts +23 -0
  232. package/dist/ui/src/components/IconButton.d.ts +11 -0
  233. package/dist/ui/src/components/InfoLabel.d.ts +5 -0
  234. package/dist/ui/src/components/InputLabel.d.ts +11 -0
  235. package/dist/ui/src/components/Label.d.ts +7 -0
  236. package/dist/ui/src/components/LoadingButton.d.ts +7 -0
  237. package/dist/ui/src/components/Markdown.d.ts +10 -0
  238. package/dist/ui/src/components/Menu.d.ts +23 -0
  239. package/dist/ui/src/components/Menubar.d.ts +80 -0
  240. package/dist/ui/src/components/MultiSelect.d.ts +48 -0
  241. package/dist/ui/src/components/Paper.d.ts +6 -0
  242. package/dist/ui/src/components/Popover.d.ts +22 -0
  243. package/dist/ui/src/components/RadioGroup.d.ts +28 -0
  244. package/dist/ui/src/components/ResizablePanels.d.ts +16 -0
  245. package/dist/ui/src/components/SearchBar.d.ts +22 -0
  246. package/dist/ui/src/components/Select.d.ts +43 -0
  247. package/dist/ui/src/components/Separator.d.ts +5 -0
  248. package/dist/ui/src/components/Sheet.d.ts +22 -0
  249. package/dist/ui/src/components/Skeleton.d.ts +6 -0
  250. package/dist/ui/src/components/Slider.d.ts +21 -0
  251. package/dist/ui/src/components/Table.d.ts +34 -0
  252. package/dist/ui/src/components/Tabs.d.ts +19 -0
  253. package/dist/ui/src/components/TextField.d.ts +58 -0
  254. package/dist/ui/src/components/TextareaAutosize.d.ts +43 -0
  255. package/dist/ui/src/components/ToggleButtonGroup.d.ts +30 -0
  256. package/dist/ui/src/components/Tooltip.d.ts +19 -0
  257. package/dist/ui/src/components/Typography.d.ts +36 -0
  258. package/dist/ui/src/components/VirtualTable/VirtualTable.d.ts +11 -0
  259. package/dist/ui/src/components/VirtualTable/VirtualTableCell.d.ts +20 -0
  260. package/dist/ui/src/components/VirtualTable/VirtualTableHeader.d.ts +29 -0
  261. package/dist/ui/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  262. package/dist/ui/src/components/VirtualTable/VirtualTableProps.d.ts +238 -0
  263. package/dist/ui/src/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  264. package/dist/ui/src/components/VirtualTable/index.d.ts +3 -0
  265. package/dist/ui/src/components/VirtualTable/types.d.ts +37 -0
  266. package/dist/ui/src/components/common/SelectInputLabel.d.ts +5 -0
  267. package/dist/ui/src/components/index.d.ts +53 -0
  268. package/dist/ui/src/hooks/PortalContainerContext.d.ts +31 -0
  269. package/dist/ui/src/hooks/index.d.ts +7 -0
  270. package/dist/ui/src/hooks/useDebounceCallback.d.ts +1 -0
  271. package/dist/ui/src/hooks/useDebounceValue.d.ts +1 -0
  272. package/dist/ui/src/hooks/useDebouncedCallback.d.ts +1 -0
  273. package/dist/ui/src/hooks/useIconStyles.d.ts +7 -0
  274. package/dist/ui/src/hooks/useInjectStyles.d.ts +7 -0
  275. package/dist/ui/src/hooks/useOutsideAlerter.d.ts +5 -0
  276. package/dist/ui/src/icons/GitHubIcon.d.ts +2 -0
  277. package/dist/ui/src/icons/HandleIcon.d.ts +1 -0
  278. package/dist/ui/src/icons/Icon.d.ts +13 -0
  279. package/dist/ui/src/icons/components/AbcIcon.d.ts +6 -0
  280. package/dist/ui/src/icons/components/AcUnitIcon.d.ts +6 -0
  281. package/dist/ui/src/icons/components/AccessAlarmIcon.d.ts +6 -0
  282. package/dist/ui/src/icons/components/AccessAlarmsIcon.d.ts +6 -0
  283. package/dist/ui/src/icons/components/AccessTimeFilledIcon.d.ts +6 -0
  284. package/dist/ui/src/icons/components/AccessTimeIcon.d.ts +6 -0
  285. package/dist/ui/src/icons/components/AccessibilityIcon.d.ts +6 -0
  286. package/dist/ui/src/icons/components/AccessibilityNewIcon.d.ts +6 -0
  287. package/dist/ui/src/icons/components/AccessibleForwardIcon.d.ts +6 -0
  288. package/dist/ui/src/icons/components/AccessibleIcon.d.ts +6 -0
  289. package/dist/ui/src/icons/components/AccountBalanceIcon.d.ts +6 -0
  290. package/dist/ui/src/icons/components/AccountBalanceWalletIcon.d.ts +6 -0
  291. package/dist/ui/src/icons/components/AccountBoxIcon.d.ts +6 -0
  292. package/dist/ui/src/icons/components/AccountCircleIcon.d.ts +6 -0
  293. package/dist/ui/src/icons/components/AccountTreeIcon.d.ts +6 -0
  294. package/dist/ui/src/icons/components/AdUnitsIcon.d.ts +6 -0
  295. package/dist/ui/src/icons/components/AdbIcon.d.ts +6 -0
  296. package/dist/ui/src/icons/components/AddAPhotoIcon.d.ts +6 -0
  297. package/dist/ui/src/icons/components/AddAlarmIcon.d.ts +6 -0
  298. package/dist/ui/src/icons/components/AddAlertIcon.d.ts +6 -0
  299. package/dist/ui/src/icons/components/AddBoxIcon.d.ts +6 -0
  300. package/dist/ui/src/icons/components/AddBusinessIcon.d.ts +6 -0
  301. package/dist/ui/src/icons/components/AddCardIcon.d.ts +6 -0
  302. package/dist/ui/src/icons/components/AddChartIcon.d.ts +6 -0
  303. package/dist/ui/src/icons/components/AddCircleIcon.d.ts +6 -0
  304. package/dist/ui/src/icons/components/AddCircleOutlineIcon.d.ts +6 -0
  305. package/dist/ui/src/icons/components/AddCommentIcon.d.ts +6 -0
  306. package/dist/ui/src/icons/components/AddHomeIcon.d.ts +6 -0
  307. package/dist/ui/src/icons/components/AddHomeWorkIcon.d.ts +6 -0
  308. package/dist/ui/src/icons/components/AddIcCallIcon.d.ts +6 -0
  309. package/dist/ui/src/icons/components/AddIcon.d.ts +6 -0
  310. package/dist/ui/src/icons/components/AddLinkIcon.d.ts +6 -0
  311. package/dist/ui/src/icons/components/AddLocationAltIcon.d.ts +6 -0
  312. package/dist/ui/src/icons/components/AddLocationIcon.d.ts +6 -0
  313. package/dist/ui/src/icons/components/AddModeratorIcon.d.ts +6 -0
  314. package/dist/ui/src/icons/components/AddPhotoAlternateIcon.d.ts +6 -0
  315. package/dist/ui/src/icons/components/AddReactionIcon.d.ts +6 -0
  316. package/dist/ui/src/icons/components/AddRoadIcon.d.ts +6 -0
  317. package/dist/ui/src/icons/components/AddShoppingCartIcon.d.ts +6 -0
  318. package/dist/ui/src/icons/components/AddTaskIcon.d.ts +6 -0
  319. package/dist/ui/src/icons/components/AddToDriveIcon.d.ts +6 -0
  320. package/dist/ui/src/icons/components/AddToHomeScreenIcon.d.ts +6 -0
  321. package/dist/ui/src/icons/components/AddToPhotosIcon.d.ts +6 -0
  322. package/dist/ui/src/icons/components/AddToQueueIcon.d.ts +6 -0
  323. package/dist/ui/src/icons/components/AdfScannerIcon.d.ts +6 -0
  324. package/dist/ui/src/icons/components/AdjustIcon.d.ts +6 -0
  325. package/dist/ui/src/icons/components/AdminPanelSettingsIcon.d.ts +6 -0
  326. package/dist/ui/src/icons/components/AdobeIcon.d.ts +6 -0
  327. package/dist/ui/src/icons/components/AdsClickIcon.d.ts +6 -0
  328. package/dist/ui/src/icons/components/AgricultureIcon.d.ts +6 -0
  329. package/dist/ui/src/icons/components/AirIcon.d.ts +6 -0
  330. package/dist/ui/src/icons/components/AirlineSeatFlatAngledIcon.d.ts +6 -0
  331. package/dist/ui/src/icons/components/AirlineSeatFlatIcon.d.ts +6 -0
  332. package/dist/ui/src/icons/components/AirlineSeatIndividualSuiteIcon.d.ts +6 -0
  333. package/dist/ui/src/icons/components/AirlineSeatLegroomExtraIcon.d.ts +6 -0
  334. package/dist/ui/src/icons/components/AirlineSeatLegroomNormalIcon.d.ts +6 -0
  335. package/dist/ui/src/icons/components/AirlineSeatLegroomReducedIcon.d.ts +6 -0
  336. package/dist/ui/src/icons/components/AirlineSeatReclineExtraIcon.d.ts +6 -0
  337. package/dist/ui/src/icons/components/AirlineSeatReclineNormalIcon.d.ts +6 -0
  338. package/dist/ui/src/icons/components/AirlineStopsIcon.d.ts +6 -0
  339. package/dist/ui/src/icons/components/AirlinesIcon.d.ts +6 -0
  340. package/dist/ui/src/icons/components/AirplaneTicketIcon.d.ts +6 -0
  341. package/dist/ui/src/icons/components/AirplanemodeActiveIcon.d.ts +6 -0
  342. package/dist/ui/src/icons/components/AirplanemodeInactiveIcon.d.ts +6 -0
  343. package/dist/ui/src/icons/components/AirplanemodeOffIcon.d.ts +6 -0
  344. package/dist/ui/src/icons/components/AirplanemodeOnIcon.d.ts +6 -0
  345. package/dist/ui/src/icons/components/AirplayIcon.d.ts +6 -0
  346. package/dist/ui/src/icons/components/AirportShuttleIcon.d.ts +6 -0
  347. package/dist/ui/src/icons/components/AlarmAddIcon.d.ts +6 -0
  348. package/dist/ui/src/icons/components/AlarmIcon.d.ts +6 -0
  349. package/dist/ui/src/icons/components/AlarmOffIcon.d.ts +6 -0
  350. package/dist/ui/src/icons/components/AlarmOnIcon.d.ts +6 -0
  351. package/dist/ui/src/icons/components/AlbumIcon.d.ts +6 -0
  352. package/dist/ui/src/icons/components/AlignHorizontalCenterIcon.d.ts +6 -0
  353. package/dist/ui/src/icons/components/AlignHorizontalLeftIcon.d.ts +6 -0
  354. package/dist/ui/src/icons/components/AlignHorizontalRightIcon.d.ts +6 -0
  355. package/dist/ui/src/icons/components/AlignVerticalBottomIcon.d.ts +6 -0
  356. package/dist/ui/src/icons/components/AlignVerticalCenterIcon.d.ts +6 -0
  357. package/dist/ui/src/icons/components/AlignVerticalTopIcon.d.ts +6 -0
  358. package/dist/ui/src/icons/components/AllInboxIcon.d.ts +6 -0
  359. package/dist/ui/src/icons/components/AllInclusiveIcon.d.ts +6 -0
  360. package/dist/ui/src/icons/components/AllOutIcon.d.ts +6 -0
  361. package/dist/ui/src/icons/components/AltRouteIcon.d.ts +6 -0
  362. package/dist/ui/src/icons/components/AlternateEmailIcon.d.ts +6 -0
  363. package/dist/ui/src/icons/components/AmpStoriesIcon.d.ts +6 -0
  364. package/dist/ui/src/icons/components/AnalyticsIcon.d.ts +6 -0
  365. package/dist/ui/src/icons/components/AnchorIcon.d.ts +6 -0
  366. package/dist/ui/src/icons/components/AndroidIcon.d.ts +6 -0
  367. package/dist/ui/src/icons/components/AnimationIcon.d.ts +6 -0
  368. package/dist/ui/src/icons/components/AnnouncementIcon.d.ts +6 -0
  369. package/dist/ui/src/icons/components/AodIcon.d.ts +6 -0
  370. package/dist/ui/src/icons/components/ApartmentIcon.d.ts +6 -0
  371. package/dist/ui/src/icons/components/ApiIcon.d.ts +6 -0
  372. package/dist/ui/src/icons/components/AppBlockingIcon.d.ts +6 -0
  373. package/dist/ui/src/icons/components/AppRegistrationIcon.d.ts +6 -0
  374. package/dist/ui/src/icons/components/AppSettingsAltIcon.d.ts +6 -0
  375. package/dist/ui/src/icons/components/AppShortcutIcon.d.ts +6 -0
  376. package/dist/ui/src/icons/components/AppleIcon.d.ts +6 -0
  377. package/dist/ui/src/icons/components/ApprovalIcon.d.ts +6 -0
  378. package/dist/ui/src/icons/components/AppsIcon.d.ts +6 -0
  379. package/dist/ui/src/icons/components/AppsOutageIcon.d.ts +6 -0
  380. package/dist/ui/src/icons/components/ArchitectureIcon.d.ts +6 -0
  381. package/dist/ui/src/icons/components/ArchiveIcon.d.ts +6 -0
  382. package/dist/ui/src/icons/components/AreaChartIcon.d.ts +6 -0
  383. package/dist/ui/src/icons/components/ArrowBackIcon.d.ts +6 -0
  384. package/dist/ui/src/icons/components/ArrowBackIosIcon.d.ts +6 -0
  385. package/dist/ui/src/icons/components/ArrowBackIosNewIcon.d.ts +6 -0
  386. package/dist/ui/src/icons/components/ArrowCircleDownIcon.d.ts +6 -0
  387. package/dist/ui/src/icons/components/ArrowCircleLeftIcon.d.ts +6 -0
  388. package/dist/ui/src/icons/components/ArrowCircleRightIcon.d.ts +6 -0
  389. package/dist/ui/src/icons/components/ArrowCircleUpIcon.d.ts +6 -0
  390. package/dist/ui/src/icons/components/ArrowDownwardIcon.d.ts +6 -0
  391. package/dist/ui/src/icons/components/ArrowDropDownCircleIcon.d.ts +6 -0
  392. package/dist/ui/src/icons/components/ArrowDropDownIcon.d.ts +6 -0
  393. package/dist/ui/src/icons/components/ArrowDropUpIcon.d.ts +6 -0
  394. package/dist/ui/src/icons/components/ArrowForwardIcon.d.ts +6 -0
  395. package/dist/ui/src/icons/components/ArrowForwardIosIcon.d.ts +6 -0
  396. package/dist/ui/src/icons/components/ArrowLeftIcon.d.ts +6 -0
  397. package/dist/ui/src/icons/components/ArrowOutwardIcon.d.ts +6 -0
  398. package/dist/ui/src/icons/components/ArrowRightAltIcon.d.ts +6 -0
  399. package/dist/ui/src/icons/components/ArrowRightIcon.d.ts +6 -0
  400. package/dist/ui/src/icons/components/ArrowUpwardIcon.d.ts +6 -0
  401. package/dist/ui/src/icons/components/ArtTrackIcon.d.ts +6 -0
  402. package/dist/ui/src/icons/components/ArticleIcon.d.ts +6 -0
  403. package/dist/ui/src/icons/components/AspectRatioIcon.d.ts +6 -0
  404. package/dist/ui/src/icons/components/AssessmentIcon.d.ts +6 -0
  405. package/dist/ui/src/icons/components/AssignmentIcon.d.ts +6 -0
  406. package/dist/ui/src/icons/components/AssignmentIndIcon.d.ts +6 -0
  407. package/dist/ui/src/icons/components/AssignmentLateIcon.d.ts +6 -0
  408. package/dist/ui/src/icons/components/AssignmentReturnIcon.d.ts +6 -0
  409. package/dist/ui/src/icons/components/AssignmentReturnedIcon.d.ts +6 -0
  410. package/dist/ui/src/icons/components/AssignmentTurnedInIcon.d.ts +6 -0
  411. package/dist/ui/src/icons/components/AssistWalkerIcon.d.ts +6 -0
  412. package/dist/ui/src/icons/components/AssistantDirectionIcon.d.ts +6 -0
  413. package/dist/ui/src/icons/components/AssistantIcon.d.ts +6 -0
  414. package/dist/ui/src/icons/components/AssistantPhotoIcon.d.ts +6 -0
  415. package/dist/ui/src/icons/components/AssuredWorkloadIcon.d.ts +6 -0
  416. package/dist/ui/src/icons/components/AtmIcon.d.ts +6 -0
  417. package/dist/ui/src/icons/components/AttachEmailIcon.d.ts +6 -0
  418. package/dist/ui/src/icons/components/AttachFileIcon.d.ts +6 -0
  419. package/dist/ui/src/icons/components/AttachMoneyIcon.d.ts +6 -0
  420. package/dist/ui/src/icons/components/AttachmentIcon.d.ts +6 -0
  421. package/dist/ui/src/icons/components/AttractionsIcon.d.ts +6 -0
  422. package/dist/ui/src/icons/components/AttributionIcon.d.ts +6 -0
  423. package/dist/ui/src/icons/components/AudioFileIcon.d.ts +6 -0
  424. package/dist/ui/src/icons/components/AudiotrackIcon.d.ts +6 -0
  425. package/dist/ui/src/icons/components/AutoAwesomeIcon.d.ts +6 -0
  426. package/dist/ui/src/icons/components/AutoAwesomeMosaicIcon.d.ts +6 -0
  427. package/dist/ui/src/icons/components/AutoAwesomeMotionIcon.d.ts +6 -0
  428. package/dist/ui/src/icons/components/AutoDeleteIcon.d.ts +6 -0
  429. package/dist/ui/src/icons/components/AutoFixHighIcon.d.ts +6 -0
  430. package/dist/ui/src/icons/components/AutoFixNormalIcon.d.ts +6 -0
  431. package/dist/ui/src/icons/components/AutoFixOffIcon.d.ts +6 -0
  432. package/dist/ui/src/icons/components/AutoGraphIcon.d.ts +6 -0
  433. package/dist/ui/src/icons/components/AutoModeIcon.d.ts +6 -0
  434. package/dist/ui/src/icons/components/AutoStoriesIcon.d.ts +6 -0
  435. package/dist/ui/src/icons/components/AutofpsSelectIcon.d.ts +6 -0
  436. package/dist/ui/src/icons/components/AutorenewIcon.d.ts +6 -0
  437. package/dist/ui/src/icons/components/AvTimerIcon.d.ts +6 -0
  438. package/dist/ui/src/icons/components/BabyChangingStationIcon.d.ts +6 -0
  439. package/dist/ui/src/icons/components/BackHandIcon.d.ts +6 -0
  440. package/dist/ui/src/icons/components/BackpackIcon.d.ts +6 -0
  441. package/dist/ui/src/icons/components/BackspaceIcon.d.ts +6 -0
  442. package/dist/ui/src/icons/components/BackupIcon.d.ts +6 -0
  443. package/dist/ui/src/icons/components/BackupTableIcon.d.ts +6 -0
  444. package/dist/ui/src/icons/components/BadgeIcon.d.ts +6 -0
  445. package/dist/ui/src/icons/components/BakeryDiningIcon.d.ts +6 -0
  446. package/dist/ui/src/icons/components/BalanceIcon.d.ts +6 -0
  447. package/dist/ui/src/icons/components/BalconyIcon.d.ts +6 -0
  448. package/dist/ui/src/icons/components/BallotIcon.d.ts +6 -0
  449. package/dist/ui/src/icons/components/BarChartIcon.d.ts +6 -0
  450. package/dist/ui/src/icons/components/BatchPredictionIcon.d.ts +6 -0
  451. package/dist/ui/src/icons/components/BathroomIcon.d.ts +6 -0
  452. package/dist/ui/src/icons/components/BathtubIcon.d.ts +6 -0
  453. package/dist/ui/src/icons/components/Battery0BarIcon.d.ts +6 -0
  454. package/dist/ui/src/icons/components/Battery1BarIcon.d.ts +6 -0
  455. package/dist/ui/src/icons/components/Battery2BarIcon.d.ts +6 -0
  456. package/dist/ui/src/icons/components/Battery3BarIcon.d.ts +6 -0
  457. package/dist/ui/src/icons/components/Battery4BarIcon.d.ts +6 -0
  458. package/dist/ui/src/icons/components/Battery5BarIcon.d.ts +6 -0
  459. package/dist/ui/src/icons/components/Battery6BarIcon.d.ts +6 -0
  460. package/dist/ui/src/icons/components/BatteryAlertIcon.d.ts +6 -0
  461. package/dist/ui/src/icons/components/BatteryChargingFullIcon.d.ts +6 -0
  462. package/dist/ui/src/icons/components/BatteryFullIcon.d.ts +6 -0
  463. package/dist/ui/src/icons/components/BatterySaverIcon.d.ts +6 -0
  464. package/dist/ui/src/icons/components/BatteryStdIcon.d.ts +6 -0
  465. package/dist/ui/src/icons/components/BatteryUnknownIcon.d.ts +6 -0
  466. package/dist/ui/src/icons/components/BeachAccessIcon.d.ts +6 -0
  467. package/dist/ui/src/icons/components/BedIcon.d.ts +6 -0
  468. package/dist/ui/src/icons/components/BedroomBabyIcon.d.ts +6 -0
  469. package/dist/ui/src/icons/components/BedroomChildIcon.d.ts +6 -0
  470. package/dist/ui/src/icons/components/BedroomParentIcon.d.ts +6 -0
  471. package/dist/ui/src/icons/components/BedtimeIcon.d.ts +6 -0
  472. package/dist/ui/src/icons/components/BedtimeOffIcon.d.ts +6 -0
  473. package/dist/ui/src/icons/components/BeenhereIcon.d.ts +6 -0
  474. package/dist/ui/src/icons/components/BentoIcon.d.ts +6 -0
  475. package/dist/ui/src/icons/components/BikeScooterIcon.d.ts +6 -0
  476. package/dist/ui/src/icons/components/BiotechIcon.d.ts +6 -0
  477. package/dist/ui/src/icons/components/BlenderIcon.d.ts +6 -0
  478. package/dist/ui/src/icons/components/BlindIcon.d.ts +6 -0
  479. package/dist/ui/src/icons/components/BlindsClosedIcon.d.ts +6 -0
  480. package/dist/ui/src/icons/components/BlindsIcon.d.ts +6 -0
  481. package/dist/ui/src/icons/components/BlockIcon.d.ts +6 -0
  482. package/dist/ui/src/icons/components/BloodtypeIcon.d.ts +6 -0
  483. package/dist/ui/src/icons/components/BluetoothAudioIcon.d.ts +6 -0
  484. package/dist/ui/src/icons/components/BluetoothConnectedIcon.d.ts +6 -0
  485. package/dist/ui/src/icons/components/BluetoothDisabledIcon.d.ts +6 -0
  486. package/dist/ui/src/icons/components/BluetoothDriveIcon.d.ts +6 -0
  487. package/dist/ui/src/icons/components/BluetoothIcon.d.ts +6 -0
  488. package/dist/ui/src/icons/components/BluetoothSearchingIcon.d.ts +6 -0
  489. package/dist/ui/src/icons/components/BlurCircularIcon.d.ts +6 -0
  490. package/dist/ui/src/icons/components/BlurLinearIcon.d.ts +6 -0
  491. package/dist/ui/src/icons/components/BlurOffIcon.d.ts +6 -0
  492. package/dist/ui/src/icons/components/BlurOnIcon.d.ts +6 -0
  493. package/dist/ui/src/icons/components/BoltIcon.d.ts +6 -0
  494. package/dist/ui/src/icons/components/BookIcon.d.ts +6 -0
  495. package/dist/ui/src/icons/components/BookOnlineIcon.d.ts +6 -0
  496. package/dist/ui/src/icons/components/BookmarkAddIcon.d.ts +6 -0
  497. package/dist/ui/src/icons/components/BookmarkAddedIcon.d.ts +6 -0
  498. package/dist/ui/src/icons/components/BookmarkBorderIcon.d.ts +6 -0
  499. package/dist/ui/src/icons/components/BookmarkIcon.d.ts +6 -0
  500. package/dist/ui/src/icons/components/BookmarkOutlineIcon.d.ts +6 -0
  501. package/dist/ui/src/icons/components/BookmarkRemoveIcon.d.ts +6 -0
  502. package/dist/ui/src/icons/components/BookmarksIcon.d.ts +6 -0
  503. package/dist/ui/src/icons/components/BorderAllIcon.d.ts +6 -0
  504. package/dist/ui/src/icons/components/BorderBottomIcon.d.ts +6 -0
  505. package/dist/ui/src/icons/components/BorderClearIcon.d.ts +6 -0
  506. package/dist/ui/src/icons/components/BorderColorIcon.d.ts +6 -0
  507. package/dist/ui/src/icons/components/BorderHorizontalIcon.d.ts +6 -0
  508. package/dist/ui/src/icons/components/BorderInnerIcon.d.ts +6 -0
  509. package/dist/ui/src/icons/components/BorderLeftIcon.d.ts +6 -0
  510. package/dist/ui/src/icons/components/BorderOuterIcon.d.ts +6 -0
  511. package/dist/ui/src/icons/components/BorderRightIcon.d.ts +6 -0
  512. package/dist/ui/src/icons/components/BorderStyleIcon.d.ts +6 -0
  513. package/dist/ui/src/icons/components/BorderTopIcon.d.ts +6 -0
  514. package/dist/ui/src/icons/components/BorderVerticalIcon.d.ts +6 -0
  515. package/dist/ui/src/icons/components/BoyIcon.d.ts +6 -0
  516. package/dist/ui/src/icons/components/BrandingWatermarkIcon.d.ts +6 -0
  517. package/dist/ui/src/icons/components/BreakfastDiningIcon.d.ts +6 -0
  518. package/dist/ui/src/icons/components/Brightness1Icon.d.ts +6 -0
  519. package/dist/ui/src/icons/components/Brightness2Icon.d.ts +6 -0
  520. package/dist/ui/src/icons/components/Brightness3Icon.d.ts +6 -0
  521. package/dist/ui/src/icons/components/Brightness4Icon.d.ts +6 -0
  522. package/dist/ui/src/icons/components/Brightness5Icon.d.ts +6 -0
  523. package/dist/ui/src/icons/components/Brightness6Icon.d.ts +6 -0
  524. package/dist/ui/src/icons/components/Brightness7Icon.d.ts +6 -0
  525. package/dist/ui/src/icons/components/BrightnessAutoIcon.d.ts +6 -0
  526. package/dist/ui/src/icons/components/BrightnessHighIcon.d.ts +6 -0
  527. package/dist/ui/src/icons/components/BrightnessLowIcon.d.ts +6 -0
  528. package/dist/ui/src/icons/components/BrightnessMediumIcon.d.ts +6 -0
  529. package/dist/ui/src/icons/components/BroadcastOnHomeIcon.d.ts +6 -0
  530. package/dist/ui/src/icons/components/BroadcastOnPersonalIcon.d.ts +6 -0
  531. package/dist/ui/src/icons/components/BrokenImageIcon.d.ts +6 -0
  532. package/dist/ui/src/icons/components/BrowseGalleryIcon.d.ts +6 -0
  533. package/dist/ui/src/icons/components/BrowserNotSupportedIcon.d.ts +6 -0
  534. package/dist/ui/src/icons/components/BrowserUpdatedIcon.d.ts +6 -0
  535. package/dist/ui/src/icons/components/BrunchDiningIcon.d.ts +6 -0
  536. package/dist/ui/src/icons/components/BrushIcon.d.ts +6 -0
  537. package/dist/ui/src/icons/components/BubbleChartIcon.d.ts +6 -0
  538. package/dist/ui/src/icons/components/BugReportIcon.d.ts +6 -0
  539. package/dist/ui/src/icons/components/BuildCircleIcon.d.ts +6 -0
  540. package/dist/ui/src/icons/components/BuildIcon.d.ts +6 -0
  541. package/dist/ui/src/icons/components/BungalowIcon.d.ts +6 -0
  542. package/dist/ui/src/icons/components/BurstModeIcon.d.ts +6 -0
  543. package/dist/ui/src/icons/components/BusAlertIcon.d.ts +6 -0
  544. package/dist/ui/src/icons/components/BusinessCenterIcon.d.ts +6 -0
  545. package/dist/ui/src/icons/components/BusinessIcon.d.ts +6 -0
  546. package/dist/ui/src/icons/components/CabinIcon.d.ts +6 -0
  547. package/dist/ui/src/icons/components/CableIcon.d.ts +6 -0
  548. package/dist/ui/src/icons/components/CachedIcon.d.ts +6 -0
  549. package/dist/ui/src/icons/components/CakeIcon.d.ts +6 -0
  550. package/dist/ui/src/icons/components/CalculateIcon.d.ts +6 -0
  551. package/dist/ui/src/icons/components/CalendarMonthIcon.d.ts +6 -0
  552. package/dist/ui/src/icons/components/CalendarTodayIcon.d.ts +6 -0
  553. package/dist/ui/src/icons/components/CalendarViewDayIcon.d.ts +6 -0
  554. package/dist/ui/src/icons/components/CalendarViewMonthIcon.d.ts +6 -0
  555. package/dist/ui/src/icons/components/CalendarViewWeekIcon.d.ts +6 -0
  556. package/dist/ui/src/icons/components/CallEndIcon.d.ts +6 -0
  557. package/dist/ui/src/icons/components/CallIcon.d.ts +6 -0
  558. package/dist/ui/src/icons/components/CallMadeIcon.d.ts +6 -0
  559. package/dist/ui/src/icons/components/CallMergeIcon.d.ts +6 -0
  560. package/dist/ui/src/icons/components/CallMissedIcon.d.ts +6 -0
  561. package/dist/ui/src/icons/components/CallMissedOutgoingIcon.d.ts +6 -0
  562. package/dist/ui/src/icons/components/CallReceivedIcon.d.ts +6 -0
  563. package/dist/ui/src/icons/components/CallSplitIcon.d.ts +6 -0
  564. package/dist/ui/src/icons/components/CallToActionIcon.d.ts +6 -0
  565. package/dist/ui/src/icons/components/CameraAltIcon.d.ts +6 -0
  566. package/dist/ui/src/icons/components/CameraEnhanceIcon.d.ts +6 -0
  567. package/dist/ui/src/icons/components/CameraFrontIcon.d.ts +6 -0
  568. package/dist/ui/src/icons/components/CameraIcon.d.ts +6 -0
  569. package/dist/ui/src/icons/components/CameraIndoorIcon.d.ts +6 -0
  570. package/dist/ui/src/icons/components/CameraOutdoorIcon.d.ts +6 -0
  571. package/dist/ui/src/icons/components/CameraRearIcon.d.ts +6 -0
  572. package/dist/ui/src/icons/components/CameraRollIcon.d.ts +6 -0
  573. package/dist/ui/src/icons/components/CameraswitchIcon.d.ts +6 -0
  574. package/dist/ui/src/icons/components/CampaignIcon.d.ts +6 -0
  575. package/dist/ui/src/icons/components/CancelIcon.d.ts +6 -0
  576. package/dist/ui/src/icons/components/CancelPresentationIcon.d.ts +6 -0
  577. package/dist/ui/src/icons/components/CancelScheduleSendIcon.d.ts +6 -0
  578. package/dist/ui/src/icons/components/CandlestickChartIcon.d.ts +6 -0
  579. package/dist/ui/src/icons/components/CarCrashIcon.d.ts +6 -0
  580. package/dist/ui/src/icons/components/CarRentalIcon.d.ts +6 -0
  581. package/dist/ui/src/icons/components/CarRepairIcon.d.ts +6 -0
  582. package/dist/ui/src/icons/components/CardGiftcardIcon.d.ts +6 -0
  583. package/dist/ui/src/icons/components/CardMembershipIcon.d.ts +6 -0
  584. package/dist/ui/src/icons/components/CardTravelIcon.d.ts +6 -0
  585. package/dist/ui/src/icons/components/CarpenterIcon.d.ts +6 -0
  586. package/dist/ui/src/icons/components/CasesIcon.d.ts +6 -0
  587. package/dist/ui/src/icons/components/CasinoIcon.d.ts +6 -0
  588. package/dist/ui/src/icons/components/CastConnectedIcon.d.ts +6 -0
  589. package/dist/ui/src/icons/components/CastForEducationIcon.d.ts +6 -0
  590. package/dist/ui/src/icons/components/CastIcon.d.ts +6 -0
  591. package/dist/ui/src/icons/components/CastleIcon.d.ts +6 -0
  592. package/dist/ui/src/icons/components/CatchingPokemonIcon.d.ts +6 -0
  593. package/dist/ui/src/icons/components/CategoryIcon.d.ts +6 -0
  594. package/dist/ui/src/icons/components/CelebrationIcon.d.ts +6 -0
  595. package/dist/ui/src/icons/components/CellTowerIcon.d.ts +6 -0
  596. package/dist/ui/src/icons/components/CellWifiIcon.d.ts +6 -0
  597. package/dist/ui/src/icons/components/CenterFocusStrongIcon.d.ts +6 -0
  598. package/dist/ui/src/icons/components/CenterFocusWeakIcon.d.ts +6 -0
  599. package/dist/ui/src/icons/components/ChairAltIcon.d.ts +6 -0
  600. package/dist/ui/src/icons/components/ChairIcon.d.ts +6 -0
  601. package/dist/ui/src/icons/components/ChaletIcon.d.ts +6 -0
  602. package/dist/ui/src/icons/components/ChangeCircleIcon.d.ts +6 -0
  603. package/dist/ui/src/icons/components/ChangeHistoryIcon.d.ts +6 -0
  604. package/dist/ui/src/icons/components/ChargingStationIcon.d.ts +6 -0
  605. package/dist/ui/src/icons/components/ChatBubbleIcon.d.ts +6 -0
  606. package/dist/ui/src/icons/components/ChatBubbleOutlineIcon.d.ts +6 -0
  607. package/dist/ui/src/icons/components/ChatIcon.d.ts +6 -0
  608. package/dist/ui/src/icons/components/CheckBoxIcon.d.ts +6 -0
  609. package/dist/ui/src/icons/components/CheckBoxOutlineBlankIcon.d.ts +6 -0
  610. package/dist/ui/src/icons/components/CheckCircleIcon.d.ts +6 -0
  611. package/dist/ui/src/icons/components/CheckCircleOutlineIcon.d.ts +6 -0
  612. package/dist/ui/src/icons/components/CheckIcon.d.ts +6 -0
  613. package/dist/ui/src/icons/components/ChecklistIcon.d.ts +6 -0
  614. package/dist/ui/src/icons/components/ChecklistRtlIcon.d.ts +6 -0
  615. package/dist/ui/src/icons/components/CheckroomIcon.d.ts +6 -0
  616. package/dist/ui/src/icons/components/ChevronLeftIcon.d.ts +6 -0
  617. package/dist/ui/src/icons/components/ChevronRightIcon.d.ts +6 -0
  618. package/dist/ui/src/icons/components/ChildCareIcon.d.ts +6 -0
  619. package/dist/ui/src/icons/components/ChildFriendlyIcon.d.ts +6 -0
  620. package/dist/ui/src/icons/components/ChromeReaderModeIcon.d.ts +6 -0
  621. package/dist/ui/src/icons/components/ChurchIcon.d.ts +6 -0
  622. package/dist/ui/src/icons/components/CircleIcon.d.ts +6 -0
  623. package/dist/ui/src/icons/components/CircleNotificationsIcon.d.ts +6 -0
  624. package/dist/ui/src/icons/components/ClassIcon.d.ts +6 -0
  625. package/dist/ui/src/icons/components/CleanHandsIcon.d.ts +6 -0
  626. package/dist/ui/src/icons/components/CleaningServicesIcon.d.ts +6 -0
  627. package/dist/ui/src/icons/components/ClearAllIcon.d.ts +6 -0
  628. package/dist/ui/src/icons/components/ClearIcon.d.ts +6 -0
  629. package/dist/ui/src/icons/components/CloseFullscreenIcon.d.ts +6 -0
  630. package/dist/ui/src/icons/components/CloseIcon.d.ts +6 -0
  631. package/dist/ui/src/icons/components/ClosedCaptionDisabledIcon.d.ts +6 -0
  632. package/dist/ui/src/icons/components/ClosedCaptionIcon.d.ts +6 -0
  633. package/dist/ui/src/icons/components/ClosedCaptionOffIcon.d.ts +6 -0
  634. package/dist/ui/src/icons/components/CloudCircleIcon.d.ts +6 -0
  635. package/dist/ui/src/icons/components/CloudDoneIcon.d.ts +6 -0
  636. package/dist/ui/src/icons/components/CloudDownloadIcon.d.ts +6 -0
  637. package/dist/ui/src/icons/components/CloudIcon.d.ts +6 -0
  638. package/dist/ui/src/icons/components/CloudOffIcon.d.ts +6 -0
  639. package/dist/ui/src/icons/components/CloudQueueIcon.d.ts +6 -0
  640. package/dist/ui/src/icons/components/CloudSyncIcon.d.ts +6 -0
  641. package/dist/ui/src/icons/components/CloudUploadIcon.d.ts +6 -0
  642. package/dist/ui/src/icons/components/Co2Icon.d.ts +6 -0
  643. package/dist/ui/src/icons/components/CoPresentIcon.d.ts +6 -0
  644. package/dist/ui/src/icons/components/CodeIcon.d.ts +6 -0
  645. package/dist/ui/src/icons/components/CodeOffIcon.d.ts +6 -0
  646. package/dist/ui/src/icons/components/CoffeeIcon.d.ts +6 -0
  647. package/dist/ui/src/icons/components/CoffeeMakerIcon.d.ts +6 -0
  648. package/dist/ui/src/icons/components/CollectionsBookmarkIcon.d.ts +6 -0
  649. package/dist/ui/src/icons/components/CollectionsIcon.d.ts +6 -0
  650. package/dist/ui/src/icons/components/ColorLensIcon.d.ts +6 -0
  651. package/dist/ui/src/icons/components/ColorizeIcon.d.ts +6 -0
  652. package/dist/ui/src/icons/components/CommentBankIcon.d.ts +6 -0
  653. package/dist/ui/src/icons/components/CommentIcon.d.ts +6 -0
  654. package/dist/ui/src/icons/components/CommentsDisabledIcon.d.ts +6 -0
  655. package/dist/ui/src/icons/components/CommitIcon.d.ts +6 -0
  656. package/dist/ui/src/icons/components/CommuteIcon.d.ts +6 -0
  657. package/dist/ui/src/icons/components/CompareArrowsIcon.d.ts +6 -0
  658. package/dist/ui/src/icons/components/CompareIcon.d.ts +6 -0
  659. package/dist/ui/src/icons/components/CompassCalibrationIcon.d.ts +6 -0
  660. package/dist/ui/src/icons/components/CompostIcon.d.ts +6 -0
  661. package/dist/ui/src/icons/components/CompressIcon.d.ts +6 -0
  662. package/dist/ui/src/icons/components/ComputerIcon.d.ts +6 -0
  663. package/dist/ui/src/icons/components/ConfirmationNumIcon.d.ts +6 -0
  664. package/dist/ui/src/icons/components/ConfirmationNumberIcon.d.ts +6 -0
  665. package/dist/ui/src/icons/components/ConnectWithoutContactIcon.d.ts +6 -0
  666. package/dist/ui/src/icons/components/ConnectedTvIcon.d.ts +6 -0
  667. package/dist/ui/src/icons/components/ConnectingAirportsIcon.d.ts +6 -0
  668. package/dist/ui/src/icons/components/ConstructionIcon.d.ts +6 -0
  669. package/dist/ui/src/icons/components/ContactEmergencyIcon.d.ts +6 -0
  670. package/dist/ui/src/icons/components/ContactMailIcon.d.ts +6 -0
  671. package/dist/ui/src/icons/components/ContactPageIcon.d.ts +6 -0
  672. package/dist/ui/src/icons/components/ContactPhoneIcon.d.ts +6 -0
  673. package/dist/ui/src/icons/components/ContactSupportIcon.d.ts +6 -0
  674. package/dist/ui/src/icons/components/ContactlessIcon.d.ts +6 -0
  675. package/dist/ui/src/icons/components/ContactsIcon.d.ts +6 -0
  676. package/dist/ui/src/icons/components/ContentCopyIcon.d.ts +6 -0
  677. package/dist/ui/src/icons/components/ContentCutIcon.d.ts +6 -0
  678. package/dist/ui/src/icons/components/ContentPasteGoIcon.d.ts +6 -0
  679. package/dist/ui/src/icons/components/ContentPasteIcon.d.ts +6 -0
  680. package/dist/ui/src/icons/components/ContentPasteOffIcon.d.ts +6 -0
  681. package/dist/ui/src/icons/components/ContentPasteSearchIcon.d.ts +6 -0
  682. package/dist/ui/src/icons/components/ContrastIcon.d.ts +6 -0
  683. package/dist/ui/src/icons/components/ControlCameraIcon.d.ts +6 -0
  684. package/dist/ui/src/icons/components/ControlPointDuplicateIcon.d.ts +6 -0
  685. package/dist/ui/src/icons/components/ControlPointIcon.d.ts +6 -0
  686. package/dist/ui/src/icons/components/CookieIcon.d.ts +6 -0
  687. package/dist/ui/src/icons/components/CopyAllIcon.d.ts +6 -0
  688. package/dist/ui/src/icons/components/CopyIcon.d.ts +6 -0
  689. package/dist/ui/src/icons/components/CopyrightIcon.d.ts +6 -0
  690. package/dist/ui/src/icons/components/CoronavirusIcon.d.ts +6 -0
  691. package/dist/ui/src/icons/components/CorporateFareIcon.d.ts +6 -0
  692. package/dist/ui/src/icons/components/CottageIcon.d.ts +6 -0
  693. package/dist/ui/src/icons/components/CountertopsIcon.d.ts +6 -0
  694. package/dist/ui/src/icons/components/CreateIcon.d.ts +6 -0
  695. package/dist/ui/src/icons/components/CreateNewFolderIcon.d.ts +6 -0
  696. package/dist/ui/src/icons/components/CreditCardIcon.d.ts +6 -0
  697. package/dist/ui/src/icons/components/CreditCardOffIcon.d.ts +6 -0
  698. package/dist/ui/src/icons/components/CreditScoreIcon.d.ts +6 -0
  699. package/dist/ui/src/icons/components/CribIcon.d.ts +6 -0
  700. package/dist/ui/src/icons/components/CrisisAlertIcon.d.ts +6 -0
  701. package/dist/ui/src/icons/components/Crop169Icon.d.ts +6 -0
  702. package/dist/ui/src/icons/components/Crop32Icon.d.ts +6 -0
  703. package/dist/ui/src/icons/components/Crop54Icon.d.ts +6 -0
  704. package/dist/ui/src/icons/components/Crop75Icon.d.ts +6 -0
  705. package/dist/ui/src/icons/components/CropDinIcon.d.ts +6 -0
  706. package/dist/ui/src/icons/components/CropFreeIcon.d.ts +6 -0
  707. package/dist/ui/src/icons/components/CropIcon.d.ts +6 -0
  708. package/dist/ui/src/icons/components/CropLandscapeIcon.d.ts +6 -0
  709. package/dist/ui/src/icons/components/CropOriginalIcon.d.ts +6 -0
  710. package/dist/ui/src/icons/components/CropPortraitIcon.d.ts +6 -0
  711. package/dist/ui/src/icons/components/CropRotateIcon.d.ts +6 -0
  712. package/dist/ui/src/icons/components/CropSquareIcon.d.ts +6 -0
  713. package/dist/ui/src/icons/components/CrueltyFreeIcon.d.ts +6 -0
  714. package/dist/ui/src/icons/components/CssIcon.d.ts +6 -0
  715. package/dist/ui/src/icons/components/CurrencyBitcoinIcon.d.ts +6 -0
  716. package/dist/ui/src/icons/components/CurrencyExchangeIcon.d.ts +6 -0
  717. package/dist/ui/src/icons/components/CurrencyFrancIcon.d.ts +6 -0
  718. package/dist/ui/src/icons/components/CurrencyLiraIcon.d.ts +6 -0
  719. package/dist/ui/src/icons/components/CurrencyPoundIcon.d.ts +6 -0
  720. package/dist/ui/src/icons/components/CurrencyRubleIcon.d.ts +6 -0
  721. package/dist/ui/src/icons/components/CurrencyRupeeIcon.d.ts +6 -0
  722. package/dist/ui/src/icons/components/CurrencyYenIcon.d.ts +6 -0
  723. package/dist/ui/src/icons/components/CurrencyYuanIcon.d.ts +6 -0
  724. package/dist/ui/src/icons/components/CurtainsClosedIcon.d.ts +6 -0
  725. package/dist/ui/src/icons/components/CurtainsIcon.d.ts +6 -0
  726. package/dist/ui/src/icons/components/CutIcon.d.ts +6 -0
  727. package/dist/ui/src/icons/components/CycloneIcon.d.ts +6 -0
  728. package/dist/ui/src/icons/components/DangerousIcon.d.ts +6 -0
  729. package/dist/ui/src/icons/components/DarkModeIcon.d.ts +6 -0
  730. package/dist/ui/src/icons/components/DashboardCustomizeIcon.d.ts +6 -0
  731. package/dist/ui/src/icons/components/DashboardIcon.d.ts +6 -0
  732. package/dist/ui/src/icons/components/DataArrayIcon.d.ts +6 -0
  733. package/dist/ui/src/icons/components/DataExplorationIcon.d.ts +6 -0
  734. package/dist/ui/src/icons/components/DataObjectIcon.d.ts +6 -0
  735. package/dist/ui/src/icons/components/DataSaverOffIcon.d.ts +6 -0
  736. package/dist/ui/src/icons/components/DataSaverOnIcon.d.ts +6 -0
  737. package/dist/ui/src/icons/components/DataThresholdingIcon.d.ts +6 -0
  738. package/dist/ui/src/icons/components/DataUsageIcon.d.ts +6 -0
  739. package/dist/ui/src/icons/components/DatasetIcon.d.ts +6 -0
  740. package/dist/ui/src/icons/components/DatasetLinkedIcon.d.ts +6 -0
  741. package/dist/ui/src/icons/components/DateRangeIcon.d.ts +6 -0
  742. package/dist/ui/src/icons/components/DeblurIcon.d.ts +6 -0
  743. package/dist/ui/src/icons/components/DeckIcon.d.ts +6 -0
  744. package/dist/ui/src/icons/components/DehazeIcon.d.ts +6 -0
  745. package/dist/ui/src/icons/components/DeleteForeverIcon.d.ts +6 -0
  746. package/dist/ui/src/icons/components/DeleteIcon.d.ts +6 -0
  747. package/dist/ui/src/icons/components/DeleteOutlineIcon.d.ts +6 -0
  748. package/dist/ui/src/icons/components/DeleteSweepIcon.d.ts +6 -0
  749. package/dist/ui/src/icons/components/DeliveryDiningIcon.d.ts +6 -0
  750. package/dist/ui/src/icons/components/DensityLargeIcon.d.ts +6 -0
  751. package/dist/ui/src/icons/components/DensityMediumIcon.d.ts +6 -0
  752. package/dist/ui/src/icons/components/DensitySmallIcon.d.ts +6 -0
  753. package/dist/ui/src/icons/components/DepartureBoardIcon.d.ts +6 -0
  754. package/dist/ui/src/icons/components/DescriptionIcon.d.ts +6 -0
  755. package/dist/ui/src/icons/components/DeselectIcon.d.ts +6 -0
  756. package/dist/ui/src/icons/components/DesignServicesIcon.d.ts +6 -0
  757. package/dist/ui/src/icons/components/DeskIcon.d.ts +6 -0
  758. package/dist/ui/src/icons/components/DesktopAccessDisabledIcon.d.ts +6 -0
  759. package/dist/ui/src/icons/components/DesktopMacIcon.d.ts +6 -0
  760. package/dist/ui/src/icons/components/DesktopWindowsIcon.d.ts +6 -0
  761. package/dist/ui/src/icons/components/DetailsIcon.d.ts +6 -0
  762. package/dist/ui/src/icons/components/DeveloperBoardIcon.d.ts +6 -0
  763. package/dist/ui/src/icons/components/DeveloperBoardOffIcon.d.ts +6 -0
  764. package/dist/ui/src/icons/components/DeveloperModeIcon.d.ts +6 -0
  765. package/dist/ui/src/icons/components/DeviceHubIcon.d.ts +6 -0
  766. package/dist/ui/src/icons/components/DeviceThermostatIcon.d.ts +6 -0
  767. package/dist/ui/src/icons/components/DeviceUnknownIcon.d.ts +6 -0
  768. package/dist/ui/src/icons/components/DevicesFoldIcon.d.ts +6 -0
  769. package/dist/ui/src/icons/components/DevicesIcon.d.ts +6 -0
  770. package/dist/ui/src/icons/components/DevicesOtherIcon.d.ts +6 -0
  771. package/dist/ui/src/icons/components/DialerSipIcon.d.ts +6 -0
  772. package/dist/ui/src/icons/components/DialpadIcon.d.ts +6 -0
  773. package/dist/ui/src/icons/components/DiamondIcon.d.ts +6 -0
  774. package/dist/ui/src/icons/components/DifferenceIcon.d.ts +6 -0
  775. package/dist/ui/src/icons/components/DiningIcon.d.ts +6 -0
  776. package/dist/ui/src/icons/components/DinnerDiningIcon.d.ts +6 -0
  777. package/dist/ui/src/icons/components/DirectionsBikeIcon.d.ts +6 -0
  778. package/dist/ui/src/icons/components/DirectionsBoatFilledIcon.d.ts +6 -0
  779. package/dist/ui/src/icons/components/DirectionsBoatIcon.d.ts +6 -0
  780. package/dist/ui/src/icons/components/DirectionsBusFilledIcon.d.ts +6 -0
  781. package/dist/ui/src/icons/components/DirectionsBusIcon.d.ts +6 -0
  782. package/dist/ui/src/icons/components/DirectionsCarFilledIcon.d.ts +6 -0
  783. package/dist/ui/src/icons/components/DirectionsCarIcon.d.ts +6 -0
  784. package/dist/ui/src/icons/components/DirectionsFerryIcon.d.ts +6 -0
  785. package/dist/ui/src/icons/components/DirectionsIcon.d.ts +6 -0
  786. package/dist/ui/src/icons/components/DirectionsOffIcon.d.ts +6 -0
  787. package/dist/ui/src/icons/components/DirectionsRailwayFilledIcon.d.ts +6 -0
  788. package/dist/ui/src/icons/components/DirectionsRailwayIcon.d.ts +6 -0
  789. package/dist/ui/src/icons/components/DirectionsRunIcon.d.ts +6 -0
  790. package/dist/ui/src/icons/components/DirectionsSubwayFilledIcon.d.ts +6 -0
  791. package/dist/ui/src/icons/components/DirectionsSubwayIcon.d.ts +6 -0
  792. package/dist/ui/src/icons/components/DirectionsTrainIcon.d.ts +6 -0
  793. package/dist/ui/src/icons/components/DirectionsTransitFilledIcon.d.ts +6 -0
  794. package/dist/ui/src/icons/components/DirectionsTransitIcon.d.ts +6 -0
  795. package/dist/ui/src/icons/components/DirectionsWalkIcon.d.ts +6 -0
  796. package/dist/ui/src/icons/components/DirtyLensIcon.d.ts +6 -0
  797. package/dist/ui/src/icons/components/DisabledByDefaultIcon.d.ts +6 -0
  798. package/dist/ui/src/icons/components/DisabledVisibleIcon.d.ts +6 -0
  799. package/dist/ui/src/icons/components/DiscFullIcon.d.ts +6 -0
  800. package/dist/ui/src/icons/components/DiscordIcon.d.ts +6 -0
  801. package/dist/ui/src/icons/components/DiscountIcon.d.ts +6 -0
  802. package/dist/ui/src/icons/components/DisplaySettingsIcon.d.ts +6 -0
  803. package/dist/ui/src/icons/components/Diversity1Icon.d.ts +6 -0
  804. package/dist/ui/src/icons/components/Diversity2Icon.d.ts +6 -0
  805. package/dist/ui/src/icons/components/Diversity3Icon.d.ts +6 -0
  806. package/dist/ui/src/icons/components/DndForwardslashIcon.d.ts +6 -0
  807. package/dist/ui/src/icons/components/DnsIcon.d.ts +6 -0
  808. package/dist/ui/src/icons/components/DoDisturbAltIcon.d.ts +6 -0
  809. package/dist/ui/src/icons/components/DoDisturbIcon.d.ts +6 -0
  810. package/dist/ui/src/icons/components/DoDisturbOffIcon.d.ts +6 -0
  811. package/dist/ui/src/icons/components/DoDisturbOnIcon.d.ts +6 -0
  812. package/dist/ui/src/icons/components/DoNotDisturbAltIcon.d.ts +6 -0
  813. package/dist/ui/src/icons/components/DoNotDisturbIcon.d.ts +6 -0
  814. package/dist/ui/src/icons/components/DoNotDisturbOffIcon.d.ts +6 -0
  815. package/dist/ui/src/icons/components/DoNotDisturbOnIcon.d.ts +6 -0
  816. package/dist/ui/src/icons/components/DoNotDisturbOnTotalSilenceIcon.d.ts +6 -0
  817. package/dist/ui/src/icons/components/DoNotStepIcon.d.ts +6 -0
  818. package/dist/ui/src/icons/components/DoNotTouchIcon.d.ts +6 -0
  819. package/dist/ui/src/icons/components/DockIcon.d.ts +6 -0
  820. package/dist/ui/src/icons/components/DocumentScannerIcon.d.ts +6 -0
  821. package/dist/ui/src/icons/components/DomainAddIcon.d.ts +6 -0
  822. package/dist/ui/src/icons/components/DomainDisabledIcon.d.ts +6 -0
  823. package/dist/ui/src/icons/components/DomainIcon.d.ts +6 -0
  824. package/dist/ui/src/icons/components/DomainVerificationIcon.d.ts +6 -0
  825. package/dist/ui/src/icons/components/DoneAllIcon.d.ts +6 -0
  826. package/dist/ui/src/icons/components/DoneIcon.d.ts +6 -0
  827. package/dist/ui/src/icons/components/DoneOutlineIcon.d.ts +6 -0
  828. package/dist/ui/src/icons/components/DonutLargeIcon.d.ts +6 -0
  829. package/dist/ui/src/icons/components/DonutSmallIcon.d.ts +6 -0
  830. package/dist/ui/src/icons/components/DoorBackIcon.d.ts +6 -0
  831. package/dist/ui/src/icons/components/DoorFrontIcon.d.ts +6 -0
  832. package/dist/ui/src/icons/components/DoorSlidingIcon.d.ts +6 -0
  833. package/dist/ui/src/icons/components/DoorbellIcon.d.ts +6 -0
  834. package/dist/ui/src/icons/components/DoubleArrowIcon.d.ts +6 -0
  835. package/dist/ui/src/icons/components/DownhillSkiingIcon.d.ts +6 -0
  836. package/dist/ui/src/icons/components/DownloadDoneIcon.d.ts +6 -0
  837. package/dist/ui/src/icons/components/DownloadForOfflineIcon.d.ts +6 -0
  838. package/dist/ui/src/icons/components/DownloadIcon.d.ts +6 -0
  839. package/dist/ui/src/icons/components/DownloadingIcon.d.ts +6 -0
  840. package/dist/ui/src/icons/components/DraftsIcon.d.ts +6 -0
  841. package/dist/ui/src/icons/components/DragHandleIcon.d.ts +6 -0
  842. package/dist/ui/src/icons/components/DragIndicatorIcon.d.ts +6 -0
  843. package/dist/ui/src/icons/components/DrawIcon.d.ts +6 -0
  844. package/dist/ui/src/icons/components/DriveEtaIcon.d.ts +6 -0
  845. package/dist/ui/src/icons/components/DriveFileMoveIcon.d.ts +6 -0
  846. package/dist/ui/src/icons/components/DriveFileMoveRtlIcon.d.ts +6 -0
  847. package/dist/ui/src/icons/components/DriveFileRenameOutlineIcon.d.ts +6 -0
  848. package/dist/ui/src/icons/components/DriveFolderUploadIcon.d.ts +6 -0
  849. package/dist/ui/src/icons/components/DryCleaningIcon.d.ts +6 -0
  850. package/dist/ui/src/icons/components/DryIcon.d.ts +6 -0
  851. package/dist/ui/src/icons/components/DuoIcon.d.ts +6 -0
  852. package/dist/ui/src/icons/components/DvrIcon.d.ts +6 -0
  853. package/dist/ui/src/icons/components/DynamicFeedIcon.d.ts +6 -0
  854. package/dist/ui/src/icons/components/DynamicFormIcon.d.ts +6 -0
  855. package/dist/ui/src/icons/components/EMobiledataIcon.d.ts +6 -0
  856. package/dist/ui/src/icons/components/EarbudsBatteryIcon.d.ts +6 -0
  857. package/dist/ui/src/icons/components/EarbudsIcon.d.ts +6 -0
  858. package/dist/ui/src/icons/components/EastIcon.d.ts +6 -0
  859. package/dist/ui/src/icons/components/EcoIcon.d.ts +6 -0
  860. package/dist/ui/src/icons/components/EdgesensorHighIcon.d.ts +6 -0
  861. package/dist/ui/src/icons/components/EdgesensorLowIcon.d.ts +6 -0
  862. package/dist/ui/src/icons/components/EditAttributesIcon.d.ts +6 -0
  863. package/dist/ui/src/icons/components/EditCalendarIcon.d.ts +6 -0
  864. package/dist/ui/src/icons/components/EditIcon.d.ts +6 -0
  865. package/dist/ui/src/icons/components/EditLocationAltIcon.d.ts +6 -0
  866. package/dist/ui/src/icons/components/EditLocationIcon.d.ts +6 -0
  867. package/dist/ui/src/icons/components/EditNoteIcon.d.ts +6 -0
  868. package/dist/ui/src/icons/components/EditNotificationsIcon.d.ts +6 -0
  869. package/dist/ui/src/icons/components/EditOffIcon.d.ts +6 -0
  870. package/dist/ui/src/icons/components/EditRoadIcon.d.ts +6 -0
  871. package/dist/ui/src/icons/components/EggAltIcon.d.ts +6 -0
  872. package/dist/ui/src/icons/components/EggIcon.d.ts +6 -0
  873. package/dist/ui/src/icons/components/EjectIcon.d.ts +6 -0
  874. package/dist/ui/src/icons/components/ElderlyIcon.d.ts +6 -0
  875. package/dist/ui/src/icons/components/ElderlyWomanIcon.d.ts +6 -0
  876. package/dist/ui/src/icons/components/ElectricBikeIcon.d.ts +6 -0
  877. package/dist/ui/src/icons/components/ElectricBoltIcon.d.ts +6 -0
  878. package/dist/ui/src/icons/components/ElectricCarIcon.d.ts +6 -0
  879. package/dist/ui/src/icons/components/ElectricMeterIcon.d.ts +6 -0
  880. package/dist/ui/src/icons/components/ElectricMopedIcon.d.ts +6 -0
  881. package/dist/ui/src/icons/components/ElectricRickshawIcon.d.ts +6 -0
  882. package/dist/ui/src/icons/components/ElectricScooterIcon.d.ts +6 -0
  883. package/dist/ui/src/icons/components/ElectricalServicesIcon.d.ts +6 -0
  884. package/dist/ui/src/icons/components/ElevatorIcon.d.ts +6 -0
  885. package/dist/ui/src/icons/components/EmailIcon.d.ts +6 -0
  886. package/dist/ui/src/icons/components/EmergencyIcon.d.ts +6 -0
  887. package/dist/ui/src/icons/components/EmergencyRecordingIcon.d.ts +6 -0
  888. package/dist/ui/src/icons/components/EmergencyShareIcon.d.ts +6 -0
  889. package/dist/ui/src/icons/components/EmojiEmotionsIcon.d.ts +6 -0
  890. package/dist/ui/src/icons/components/EmojiEventsIcon.d.ts +6 -0
  891. package/dist/ui/src/icons/components/EmojiFlagsIcon.d.ts +6 -0
  892. package/dist/ui/src/icons/components/EmojiFoodBeverageIcon.d.ts +6 -0
  893. package/dist/ui/src/icons/components/EmojiNatureIcon.d.ts +6 -0
  894. package/dist/ui/src/icons/components/EmojiObjectsIcon.d.ts +6 -0
  895. package/dist/ui/src/icons/components/EmojiPeopleIcon.d.ts +6 -0
  896. package/dist/ui/src/icons/components/EmojiSymbolsIcon.d.ts +6 -0
  897. package/dist/ui/src/icons/components/EmojiTransportationIcon.d.ts +6 -0
  898. package/dist/ui/src/icons/components/EnergySavingsLeafIcon.d.ts +6 -0
  899. package/dist/ui/src/icons/components/EngineeringIcon.d.ts +6 -0
  900. package/dist/ui/src/icons/components/EnhancePhotoTranslateIcon.d.ts +6 -0
  901. package/dist/ui/src/icons/components/EnhancedEncryptionIcon.d.ts +6 -0
  902. package/dist/ui/src/icons/components/EqualizerIcon.d.ts +6 -0
  903. package/dist/ui/src/icons/components/ErrorIcon.d.ts +6 -0
  904. package/dist/ui/src/icons/components/ErrorOutlineIcon.d.ts +6 -0
  905. package/dist/ui/src/icons/components/EscalatorIcon.d.ts +6 -0
  906. package/dist/ui/src/icons/components/EscalatorWarningIcon.d.ts +6 -0
  907. package/dist/ui/src/icons/components/EuroIcon.d.ts +6 -0
  908. package/dist/ui/src/icons/components/EuroSymbolIcon.d.ts +6 -0
  909. package/dist/ui/src/icons/components/EvStationIcon.d.ts +6 -0
  910. package/dist/ui/src/icons/components/EventAvailableIcon.d.ts +6 -0
  911. package/dist/ui/src/icons/components/EventBusyIcon.d.ts +6 -0
  912. package/dist/ui/src/icons/components/EventIcon.d.ts +6 -0
  913. package/dist/ui/src/icons/components/EventNoteIcon.d.ts +6 -0
  914. package/dist/ui/src/icons/components/EventRepeatIcon.d.ts +6 -0
  915. package/dist/ui/src/icons/components/EventSeatIcon.d.ts +6 -0
  916. package/dist/ui/src/icons/components/ExitToAppIcon.d.ts +6 -0
  917. package/dist/ui/src/icons/components/ExpandCircleDownIcon.d.ts +6 -0
  918. package/dist/ui/src/icons/components/ExpandIcon.d.ts +6 -0
  919. package/dist/ui/src/icons/components/ExpandLessIcon.d.ts +6 -0
  920. package/dist/ui/src/icons/components/ExpandMoreIcon.d.ts +6 -0
  921. package/dist/ui/src/icons/components/ExplicitIcon.d.ts +6 -0
  922. package/dist/ui/src/icons/components/ExploreIcon.d.ts +6 -0
  923. package/dist/ui/src/icons/components/ExploreOffIcon.d.ts +6 -0
  924. package/dist/ui/src/icons/components/ExposureIcon.d.ts +6 -0
  925. package/dist/ui/src/icons/components/ExposureMinus1Icon.d.ts +6 -0
  926. package/dist/ui/src/icons/components/ExposureMinus2Icon.d.ts +6 -0
  927. package/dist/ui/src/icons/components/ExposureNeg1Icon.d.ts +6 -0
  928. package/dist/ui/src/icons/components/ExposureNeg2Icon.d.ts +6 -0
  929. package/dist/ui/src/icons/components/ExposurePlus1Icon.d.ts +6 -0
  930. package/dist/ui/src/icons/components/ExposurePlus2Icon.d.ts +6 -0
  931. package/dist/ui/src/icons/components/ExposureZeroIcon.d.ts +6 -0
  932. package/dist/ui/src/icons/components/ExtensionIcon.d.ts +6 -0
  933. package/dist/ui/src/icons/components/ExtensionOffIcon.d.ts +6 -0
  934. package/dist/ui/src/icons/components/Face2Icon.d.ts +6 -0
  935. package/dist/ui/src/icons/components/Face3Icon.d.ts +6 -0
  936. package/dist/ui/src/icons/components/Face4Icon.d.ts +6 -0
  937. package/dist/ui/src/icons/components/Face5Icon.d.ts +6 -0
  938. package/dist/ui/src/icons/components/Face6Icon.d.ts +6 -0
  939. package/dist/ui/src/icons/components/FaceIcon.d.ts +6 -0
  940. package/dist/ui/src/icons/components/FaceRetouchingNaturalIcon.d.ts +6 -0
  941. package/dist/ui/src/icons/components/FaceRetouchingOffIcon.d.ts +6 -0
  942. package/dist/ui/src/icons/components/FaceUnlockIcon.d.ts +6 -0
  943. package/dist/ui/src/icons/components/FacebookIcon.d.ts +6 -0
  944. package/dist/ui/src/icons/components/FactCheckIcon.d.ts +6 -0
  945. package/dist/ui/src/icons/components/FactoryIcon.d.ts +6 -0
  946. package/dist/ui/src/icons/components/FamilyRestroomIcon.d.ts +6 -0
  947. package/dist/ui/src/icons/components/FastForwardIcon.d.ts +6 -0
  948. package/dist/ui/src/icons/components/FastRewindIcon.d.ts +6 -0
  949. package/dist/ui/src/icons/components/FastfoodIcon.d.ts +6 -0
  950. package/dist/ui/src/icons/components/FavoriteBorderIcon.d.ts +6 -0
  951. package/dist/ui/src/icons/components/FavoriteIcon.d.ts +6 -0
  952. package/dist/ui/src/icons/components/FavoriteOutlineIcon.d.ts +6 -0
  953. package/dist/ui/src/icons/components/FaxIcon.d.ts +6 -0
  954. package/dist/ui/src/icons/components/FeaturedPlayListIcon.d.ts +6 -0
  955. package/dist/ui/src/icons/components/FeaturedVideoIcon.d.ts +6 -0
  956. package/dist/ui/src/icons/components/FeedIcon.d.ts +6 -0
  957. package/dist/ui/src/icons/components/FeedbackIcon.d.ts +6 -0
  958. package/dist/ui/src/icons/components/FemaleIcon.d.ts +6 -0
  959. package/dist/ui/src/icons/components/FenceIcon.d.ts +6 -0
  960. package/dist/ui/src/icons/components/FestivalIcon.d.ts +6 -0
  961. package/dist/ui/src/icons/components/FiberDvrIcon.d.ts +6 -0
  962. package/dist/ui/src/icons/components/FiberManualRecordIcon.d.ts +6 -0
  963. package/dist/ui/src/icons/components/FiberNewIcon.d.ts +6 -0
  964. package/dist/ui/src/icons/components/FiberPinIcon.d.ts +6 -0
  965. package/dist/ui/src/icons/components/FiberSmartRecordIcon.d.ts +6 -0
  966. package/dist/ui/src/icons/components/FileCopyIcon.d.ts +6 -0
  967. package/dist/ui/src/icons/components/FileDownloadDoneIcon.d.ts +6 -0
  968. package/dist/ui/src/icons/components/FileDownloadIcon.d.ts +6 -0
  969. package/dist/ui/src/icons/components/FileDownloadOffIcon.d.ts +6 -0
  970. package/dist/ui/src/icons/components/FileOpenIcon.d.ts +6 -0
  971. package/dist/ui/src/icons/components/FilePresentIcon.d.ts +6 -0
  972. package/dist/ui/src/icons/components/FileUploadIcon.d.ts +6 -0
  973. package/dist/ui/src/icons/components/Filter1Icon.d.ts +6 -0
  974. package/dist/ui/src/icons/components/Filter2Icon.d.ts +6 -0
  975. package/dist/ui/src/icons/components/Filter3Icon.d.ts +6 -0
  976. package/dist/ui/src/icons/components/Filter4Icon.d.ts +6 -0
  977. package/dist/ui/src/icons/components/Filter5Icon.d.ts +6 -0
  978. package/dist/ui/src/icons/components/Filter6Icon.d.ts +6 -0
  979. package/dist/ui/src/icons/components/Filter7Icon.d.ts +6 -0
  980. package/dist/ui/src/icons/components/Filter8Icon.d.ts +6 -0
  981. package/dist/ui/src/icons/components/Filter9Icon.d.ts +6 -0
  982. package/dist/ui/src/icons/components/Filter9PlusIcon.d.ts +6 -0
  983. package/dist/ui/src/icons/components/FilterAltIcon.d.ts +6 -0
  984. package/dist/ui/src/icons/components/FilterAltOffIcon.d.ts +6 -0
  985. package/dist/ui/src/icons/components/FilterBAndWIcon.d.ts +6 -0
  986. package/dist/ui/src/icons/components/FilterCenterFocusIcon.d.ts +6 -0
  987. package/dist/ui/src/icons/components/FilterDramaIcon.d.ts +6 -0
  988. package/dist/ui/src/icons/components/FilterFramesIcon.d.ts +6 -0
  989. package/dist/ui/src/icons/components/FilterHdrIcon.d.ts +6 -0
  990. package/dist/ui/src/icons/components/FilterIcon.d.ts +6 -0
  991. package/dist/ui/src/icons/components/FilterListIcon.d.ts +6 -0
  992. package/dist/ui/src/icons/components/FilterListOffIcon.d.ts +6 -0
  993. package/dist/ui/src/icons/components/FilterNoneIcon.d.ts +6 -0
  994. package/dist/ui/src/icons/components/FilterTiltShiftIcon.d.ts +6 -0
  995. package/dist/ui/src/icons/components/FilterVintageIcon.d.ts +6 -0
  996. package/dist/ui/src/icons/components/FindInPageIcon.d.ts +6 -0
  997. package/dist/ui/src/icons/components/FindReplaceIcon.d.ts +6 -0
  998. package/dist/ui/src/icons/components/FingerprintIcon.d.ts +6 -0
  999. package/dist/ui/src/icons/components/FireExtinguisherIcon.d.ts +6 -0
  1000. package/dist/ui/src/icons/components/FireHydrantAltIcon.d.ts +6 -0
  1001. package/dist/ui/src/icons/components/FireTruckIcon.d.ts +6 -0
  1002. package/dist/ui/src/icons/components/FireplaceIcon.d.ts +6 -0
  1003. package/dist/ui/src/icons/components/FirstPageIcon.d.ts +6 -0
  1004. package/dist/ui/src/icons/components/FitScreenIcon.d.ts +6 -0
  1005. package/dist/ui/src/icons/components/FitbitIcon.d.ts +6 -0
  1006. package/dist/ui/src/icons/components/FitnessCenterIcon.d.ts +6 -0
  1007. package/dist/ui/src/icons/components/FlagCircleIcon.d.ts +6 -0
  1008. package/dist/ui/src/icons/components/FlagIcon.d.ts +6 -0
  1009. package/dist/ui/src/icons/components/FlakyIcon.d.ts +6 -0
  1010. package/dist/ui/src/icons/components/FlareIcon.d.ts +6 -0
  1011. package/dist/ui/src/icons/components/FlashAutoIcon.d.ts +6 -0
  1012. package/dist/ui/src/icons/components/FlashOffIcon.d.ts +6 -0
  1013. package/dist/ui/src/icons/components/FlashOnIcon.d.ts +6 -0
  1014. package/dist/ui/src/icons/components/FlashlightOffIcon.d.ts +6 -0
  1015. package/dist/ui/src/icons/components/FlashlightOnIcon.d.ts +6 -0
  1016. package/dist/ui/src/icons/components/FlatwareIcon.d.ts +6 -0
  1017. package/dist/ui/src/icons/components/FlightClassIcon.d.ts +6 -0
  1018. package/dist/ui/src/icons/components/FlightIcon.d.ts +6 -0
  1019. package/dist/ui/src/icons/components/FlightLandIcon.d.ts +6 -0
  1020. package/dist/ui/src/icons/components/FlightTakeoffIcon.d.ts +6 -0
  1021. package/dist/ui/src/icons/components/FlipCameraAndroidIcon.d.ts +6 -0
  1022. package/dist/ui/src/icons/components/FlipCameraIosIcon.d.ts +6 -0
  1023. package/dist/ui/src/icons/components/FlipIcon.d.ts +6 -0
  1024. package/dist/ui/src/icons/components/FlipToBackIcon.d.ts +6 -0
  1025. package/dist/ui/src/icons/components/FlipToFrontIcon.d.ts +6 -0
  1026. package/dist/ui/src/icons/components/FloodIcon.d.ts +6 -0
  1027. package/dist/ui/src/icons/components/FlourescentIcon.d.ts +6 -0
  1028. package/dist/ui/src/icons/components/FluorescentIcon.d.ts +6 -0
  1029. package/dist/ui/src/icons/components/FlutterDashIcon.d.ts +6 -0
  1030. package/dist/ui/src/icons/components/FmdBadIcon.d.ts +6 -0
  1031. package/dist/ui/src/icons/components/FmdGoodIcon.d.ts +6 -0
  1032. package/dist/ui/src/icons/components/FolderCopyIcon.d.ts +6 -0
  1033. package/dist/ui/src/icons/components/FolderDeleteIcon.d.ts +6 -0
  1034. package/dist/ui/src/icons/components/FolderIcon.d.ts +6 -0
  1035. package/dist/ui/src/icons/components/FolderOffIcon.d.ts +6 -0
  1036. package/dist/ui/src/icons/components/FolderOpenIcon.d.ts +6 -0
  1037. package/dist/ui/src/icons/components/FolderSharedIcon.d.ts +6 -0
  1038. package/dist/ui/src/icons/components/FolderSpecialIcon.d.ts +6 -0
  1039. package/dist/ui/src/icons/components/FolderZipIcon.d.ts +6 -0
  1040. package/dist/ui/src/icons/components/FollowTheSignsIcon.d.ts +6 -0
  1041. package/dist/ui/src/icons/components/FontDownloadIcon.d.ts +6 -0
  1042. package/dist/ui/src/icons/components/FontDownloadOffIcon.d.ts +6 -0
  1043. package/dist/ui/src/icons/components/FoodBankIcon.d.ts +6 -0
  1044. package/dist/ui/src/icons/components/ForestIcon.d.ts +6 -0
  1045. package/dist/ui/src/icons/components/ForkLeftIcon.d.ts +6 -0
  1046. package/dist/ui/src/icons/components/ForkRightIcon.d.ts +6 -0
  1047. package/dist/ui/src/icons/components/FormatAlignCenterIcon.d.ts +6 -0
  1048. package/dist/ui/src/icons/components/FormatAlignJustifyIcon.d.ts +6 -0
  1049. package/dist/ui/src/icons/components/FormatAlignLeftIcon.d.ts +6 -0
  1050. package/dist/ui/src/icons/components/FormatAlignRightIcon.d.ts +6 -0
  1051. package/dist/ui/src/icons/components/FormatBoldIcon.d.ts +6 -0
  1052. package/dist/ui/src/icons/components/FormatClearIcon.d.ts +6 -0
  1053. package/dist/ui/src/icons/components/FormatColorFillIcon.d.ts +6 -0
  1054. package/dist/ui/src/icons/components/FormatColorResetIcon.d.ts +6 -0
  1055. package/dist/ui/src/icons/components/FormatColorTextIcon.d.ts +6 -0
  1056. package/dist/ui/src/icons/components/FormatIndentDecreaseIcon.d.ts +6 -0
  1057. package/dist/ui/src/icons/components/FormatIndentIncreaseIcon.d.ts +6 -0
  1058. package/dist/ui/src/icons/components/FormatItalicIcon.d.ts +6 -0
  1059. package/dist/ui/src/icons/components/FormatLineSpacingIcon.d.ts +6 -0
  1060. package/dist/ui/src/icons/components/FormatListBulletedIcon.d.ts +6 -0
  1061. package/dist/ui/src/icons/components/FormatListNumberedIcon.d.ts +6 -0
  1062. package/dist/ui/src/icons/components/FormatListNumberedRtlIcon.d.ts +6 -0
  1063. package/dist/ui/src/icons/components/FormatOverlineIcon.d.ts +6 -0
  1064. package/dist/ui/src/icons/components/FormatPaintIcon.d.ts +6 -0
  1065. package/dist/ui/src/icons/components/FormatQuoteIcon.d.ts +6 -0
  1066. package/dist/ui/src/icons/components/FormatShapesIcon.d.ts +6 -0
  1067. package/dist/ui/src/icons/components/FormatSizeIcon.d.ts +6 -0
  1068. package/dist/ui/src/icons/components/FormatStrikethroughIcon.d.ts +6 -0
  1069. package/dist/ui/src/icons/components/FormatTextdirectionLToRIcon.d.ts +6 -0
  1070. package/dist/ui/src/icons/components/FormatTextdirectionRToLIcon.d.ts +6 -0
  1071. package/dist/ui/src/icons/components/FormatUnderlineIcon.d.ts +6 -0
  1072. package/dist/ui/src/icons/components/FormatUnderlinedIcon.d.ts +6 -0
  1073. package/dist/ui/src/icons/components/FortIcon.d.ts +6 -0
  1074. package/dist/ui/src/icons/components/ForumIcon.d.ts +6 -0
  1075. package/dist/ui/src/icons/components/Forward10Icon.d.ts +6 -0
  1076. package/dist/ui/src/icons/components/Forward30Icon.d.ts +6 -0
  1077. package/dist/ui/src/icons/components/Forward5Icon.d.ts +6 -0
  1078. package/dist/ui/src/icons/components/ForwardIcon.d.ts +6 -0
  1079. package/dist/ui/src/icons/components/ForwardToInboxIcon.d.ts +6 -0
  1080. package/dist/ui/src/icons/components/FoundationIcon.d.ts +6 -0
  1081. package/dist/ui/src/icons/components/FreeBreakfastIcon.d.ts +6 -0
  1082. package/dist/ui/src/icons/components/FreeCancellationIcon.d.ts +6 -0
  1083. package/dist/ui/src/icons/components/FrontHandIcon.d.ts +6 -0
  1084. package/dist/ui/src/icons/components/FullscreenExitIcon.d.ts +6 -0
  1085. package/dist/ui/src/icons/components/FullscreenIcon.d.ts +6 -0
  1086. package/dist/ui/src/icons/components/FunctionsIcon.d.ts +6 -0
  1087. package/dist/ui/src/icons/components/GMobiledataIcon.d.ts +6 -0
  1088. package/dist/ui/src/icons/components/GTranslateIcon.d.ts +6 -0
  1089. package/dist/ui/src/icons/components/GamepadIcon.d.ts +6 -0
  1090. package/dist/ui/src/icons/components/GamesIcon.d.ts +6 -0
  1091. package/dist/ui/src/icons/components/GarageIcon.d.ts +6 -0
  1092. package/dist/ui/src/icons/components/GasMeterIcon.d.ts +6 -0
  1093. package/dist/ui/src/icons/components/GavelIcon.d.ts +6 -0
  1094. package/dist/ui/src/icons/components/GeneratingTokensIcon.d.ts +6 -0
  1095. package/dist/ui/src/icons/components/GestureIcon.d.ts +6 -0
  1096. package/dist/ui/src/icons/components/GetAppIcon.d.ts +6 -0
  1097. package/dist/ui/src/icons/components/GifBoxIcon.d.ts +6 -0
  1098. package/dist/ui/src/icons/components/GifIcon.d.ts +6 -0
  1099. package/dist/ui/src/icons/components/GirlIcon.d.ts +6 -0
  1100. package/dist/ui/src/icons/components/GiteIcon.d.ts +6 -0
  1101. package/dist/ui/src/icons/components/GolfCourseIcon.d.ts +6 -0
  1102. package/dist/ui/src/icons/components/GppBadIcon.d.ts +6 -0
  1103. package/dist/ui/src/icons/components/GppGoodIcon.d.ts +6 -0
  1104. package/dist/ui/src/icons/components/GppMaybeIcon.d.ts +6 -0
  1105. package/dist/ui/src/icons/components/GpsFixedIcon.d.ts +6 -0
  1106. package/dist/ui/src/icons/components/GpsNotFixedIcon.d.ts +6 -0
  1107. package/dist/ui/src/icons/components/GpsOffIcon.d.ts +6 -0
  1108. package/dist/ui/src/icons/components/GradeIcon.d.ts +6 -0
  1109. package/dist/ui/src/icons/components/GradientIcon.d.ts +6 -0
  1110. package/dist/ui/src/icons/components/GradingIcon.d.ts +6 -0
  1111. package/dist/ui/src/icons/components/GrainIcon.d.ts +6 -0
  1112. package/dist/ui/src/icons/components/GraphicEqIcon.d.ts +6 -0
  1113. package/dist/ui/src/icons/components/GrassIcon.d.ts +6 -0
  1114. package/dist/ui/src/icons/components/Grid3x3Icon.d.ts +6 -0
  1115. package/dist/ui/src/icons/components/Grid4x4Icon.d.ts +6 -0
  1116. package/dist/ui/src/icons/components/GridGoldenratioIcon.d.ts +6 -0
  1117. package/dist/ui/src/icons/components/GridOffIcon.d.ts +6 -0
  1118. package/dist/ui/src/icons/components/GridOnIcon.d.ts +6 -0
  1119. package/dist/ui/src/icons/components/GridViewIcon.d.ts +6 -0
  1120. package/dist/ui/src/icons/components/GroupAddIcon.d.ts +6 -0
  1121. package/dist/ui/src/icons/components/GroupIcon.d.ts +6 -0
  1122. package/dist/ui/src/icons/components/GroupOffIcon.d.ts +6 -0
  1123. package/dist/ui/src/icons/components/GroupRemoveIcon.d.ts +6 -0
  1124. package/dist/ui/src/icons/components/GroupWorkIcon.d.ts +6 -0
  1125. package/dist/ui/src/icons/components/Groups2Icon.d.ts +6 -0
  1126. package/dist/ui/src/icons/components/Groups3Icon.d.ts +6 -0
  1127. package/dist/ui/src/icons/components/GroupsIcon.d.ts +6 -0
  1128. package/dist/ui/src/icons/components/HMobiledataIcon.d.ts +6 -0
  1129. package/dist/ui/src/icons/components/HPlusMobiledataIcon.d.ts +6 -0
  1130. package/dist/ui/src/icons/components/HailIcon.d.ts +6 -0
  1131. package/dist/ui/src/icons/components/HandshakeIcon.d.ts +6 -0
  1132. package/dist/ui/src/icons/components/HandymanIcon.d.ts +6 -0
  1133. package/dist/ui/src/icons/components/HardwareIcon.d.ts +6 -0
  1134. package/dist/ui/src/icons/components/HdIcon.d.ts +6 -0
  1135. package/dist/ui/src/icons/components/HdrAutoIcon.d.ts +6 -0
  1136. package/dist/ui/src/icons/components/HdrAutoSelectIcon.d.ts +6 -0
  1137. package/dist/ui/src/icons/components/HdrEnhancedSelectIcon.d.ts +6 -0
  1138. package/dist/ui/src/icons/components/HdrOffIcon.d.ts +6 -0
  1139. package/dist/ui/src/icons/components/HdrOffSelectIcon.d.ts +6 -0
  1140. package/dist/ui/src/icons/components/HdrOnIcon.d.ts +6 -0
  1141. package/dist/ui/src/icons/components/HdrOnSelectIcon.d.ts +6 -0
  1142. package/dist/ui/src/icons/components/HdrPlusIcon.d.ts +6 -0
  1143. package/dist/ui/src/icons/components/HdrStrongIcon.d.ts +6 -0
  1144. package/dist/ui/src/icons/components/HdrWeakIcon.d.ts +6 -0
  1145. package/dist/ui/src/icons/components/HeadphonesBatteryIcon.d.ts +6 -0
  1146. package/dist/ui/src/icons/components/HeadphonesIcon.d.ts +6 -0
  1147. package/dist/ui/src/icons/components/HeadsetIcon.d.ts +6 -0
  1148. package/dist/ui/src/icons/components/HeadsetMicIcon.d.ts +6 -0
  1149. package/dist/ui/src/icons/components/HeadsetOffIcon.d.ts +6 -0
  1150. package/dist/ui/src/icons/components/HealingIcon.d.ts +6 -0
  1151. package/dist/ui/src/icons/components/HealthAndSafetyIcon.d.ts +6 -0
  1152. package/dist/ui/src/icons/components/HearingDisabledIcon.d.ts +6 -0
  1153. package/dist/ui/src/icons/components/HearingIcon.d.ts +6 -0
  1154. package/dist/ui/src/icons/components/HeartBrokenIcon.d.ts +6 -0
  1155. package/dist/ui/src/icons/components/HeatPumpIcon.d.ts +6 -0
  1156. package/dist/ui/src/icons/components/HeightIcon.d.ts +6 -0
  1157. package/dist/ui/src/icons/components/HelpCenterIcon.d.ts +6 -0
  1158. package/dist/ui/src/icons/components/HelpIcon.d.ts +6 -0
  1159. package/dist/ui/src/icons/components/HelpOutlineIcon.d.ts +6 -0
  1160. package/dist/ui/src/icons/components/HevcIcon.d.ts +6 -0
  1161. package/dist/ui/src/icons/components/HexagonIcon.d.ts +6 -0
  1162. package/dist/ui/src/icons/components/HideImageIcon.d.ts +6 -0
  1163. package/dist/ui/src/icons/components/HideSourceIcon.d.ts +6 -0
  1164. package/dist/ui/src/icons/components/HighQualityIcon.d.ts +6 -0
  1165. package/dist/ui/src/icons/components/HighlightAltIcon.d.ts +6 -0
  1166. package/dist/ui/src/icons/components/HighlightIcon.d.ts +6 -0
  1167. package/dist/ui/src/icons/components/HighlightOffIcon.d.ts +6 -0
  1168. package/dist/ui/src/icons/components/HighlightRemoveIcon.d.ts +6 -0
  1169. package/dist/ui/src/icons/components/HikingIcon.d.ts +6 -0
  1170. package/dist/ui/src/icons/components/HistoryEduIcon.d.ts +6 -0
  1171. package/dist/ui/src/icons/components/HistoryIcon.d.ts +6 -0
  1172. package/dist/ui/src/icons/components/HistoryToggleOffIcon.d.ts +6 -0
  1173. package/dist/ui/src/icons/components/HiveIcon.d.ts +6 -0
  1174. package/dist/ui/src/icons/components/HlsIcon.d.ts +6 -0
  1175. package/dist/ui/src/icons/components/HlsOffIcon.d.ts +6 -0
  1176. package/dist/ui/src/icons/components/HolidayVillageIcon.d.ts +6 -0
  1177. package/dist/ui/src/icons/components/HomeIcon.d.ts +6 -0
  1178. package/dist/ui/src/icons/components/HomeMaxIcon.d.ts +6 -0
  1179. package/dist/ui/src/icons/components/HomeMiniIcon.d.ts +6 -0
  1180. package/dist/ui/src/icons/components/HomeRepairServiceIcon.d.ts +6 -0
  1181. package/dist/ui/src/icons/components/HomeWorkIcon.d.ts +6 -0
  1182. package/dist/ui/src/icons/components/HorizontalDistributeIcon.d.ts +6 -0
  1183. package/dist/ui/src/icons/components/HorizontalRuleIcon.d.ts +6 -0
  1184. package/dist/ui/src/icons/components/HorizontalSplitIcon.d.ts +6 -0
  1185. package/dist/ui/src/icons/components/HotTubIcon.d.ts +6 -0
  1186. package/dist/ui/src/icons/components/HotelClassIcon.d.ts +6 -0
  1187. package/dist/ui/src/icons/components/HotelIcon.d.ts +6 -0
  1188. package/dist/ui/src/icons/components/HourglassBottomIcon.d.ts +6 -0
  1189. package/dist/ui/src/icons/components/HourglassDisabledIcon.d.ts +6 -0
  1190. package/dist/ui/src/icons/components/HourglassEmptyIcon.d.ts +6 -0
  1191. package/dist/ui/src/icons/components/HourglassFullIcon.d.ts +6 -0
  1192. package/dist/ui/src/icons/components/HourglassTopIcon.d.ts +6 -0
  1193. package/dist/ui/src/icons/components/HouseIcon.d.ts +6 -0
  1194. package/dist/ui/src/icons/components/HouseSidingIcon.d.ts +6 -0
  1195. package/dist/ui/src/icons/components/HouseboatIcon.d.ts +6 -0
  1196. package/dist/ui/src/icons/components/HowToRegIcon.d.ts +6 -0
  1197. package/dist/ui/src/icons/components/HowToVoteIcon.d.ts +6 -0
  1198. package/dist/ui/src/icons/components/HtmlIcon.d.ts +6 -0
  1199. package/dist/ui/src/icons/components/HttpIcon.d.ts +6 -0
  1200. package/dist/ui/src/icons/components/HttpsIcon.d.ts +6 -0
  1201. package/dist/ui/src/icons/components/HubIcon.d.ts +6 -0
  1202. package/dist/ui/src/icons/components/HvacIcon.d.ts +6 -0
  1203. package/dist/ui/src/icons/components/IceSkatingIcon.d.ts +6 -0
  1204. package/dist/ui/src/icons/components/IcecreamIcon.d.ts +6 -0
  1205. package/dist/ui/src/icons/components/ImageAspectRatioIcon.d.ts +6 -0
  1206. package/dist/ui/src/icons/components/ImageIcon.d.ts +6 -0
  1207. package/dist/ui/src/icons/components/ImageNotSupportedIcon.d.ts +6 -0
  1208. package/dist/ui/src/icons/components/ImageSearchIcon.d.ts +6 -0
  1209. package/dist/ui/src/icons/components/ImagesearchRollerIcon.d.ts +6 -0
  1210. package/dist/ui/src/icons/components/ImportContactsIcon.d.ts +6 -0
  1211. package/dist/ui/src/icons/components/ImportExportIcon.d.ts +6 -0
  1212. package/dist/ui/src/icons/components/ImportantDevicesIcon.d.ts +6 -0
  1213. package/dist/ui/src/icons/components/InboxIcon.d.ts +6 -0
  1214. package/dist/ui/src/icons/components/IncompleteCircleIcon.d.ts +6 -0
  1215. package/dist/ui/src/icons/components/IndeterminateCheckBoxIcon.d.ts +6 -0
  1216. package/dist/ui/src/icons/components/InfoIcon.d.ts +6 -0
  1217. package/dist/ui/src/icons/components/InfoOutlineIcon.d.ts +6 -0
  1218. package/dist/ui/src/icons/components/InputIcon.d.ts +6 -0
  1219. package/dist/ui/src/icons/components/InsertChartIcon.d.ts +6 -0
  1220. package/dist/ui/src/icons/components/InsertChartOutlinedIcon.d.ts +6 -0
  1221. package/dist/ui/src/icons/components/InsertCommentIcon.d.ts +6 -0
  1222. package/dist/ui/src/icons/components/InsertDriveFileIcon.d.ts +6 -0
  1223. package/dist/ui/src/icons/components/InsertEmoticonIcon.d.ts +6 -0
  1224. package/dist/ui/src/icons/components/InsertInvitationIcon.d.ts +6 -0
  1225. package/dist/ui/src/icons/components/InsertLinkIcon.d.ts +6 -0
  1226. package/dist/ui/src/icons/components/InsertPageBreakIcon.d.ts +6 -0
  1227. package/dist/ui/src/icons/components/InsertPhotoIcon.d.ts +6 -0
  1228. package/dist/ui/src/icons/components/InsightsIcon.d.ts +6 -0
  1229. package/dist/ui/src/icons/components/InstallDesktopIcon.d.ts +6 -0
  1230. package/dist/ui/src/icons/components/InstallMobileIcon.d.ts +6 -0
  1231. package/dist/ui/src/icons/components/IntegrationInstructionsIcon.d.ts +6 -0
  1232. package/dist/ui/src/icons/components/InterestsIcon.d.ts +6 -0
  1233. package/dist/ui/src/icons/components/InterpreterModeIcon.d.ts +6 -0
  1234. package/dist/ui/src/icons/components/Inventory2Icon.d.ts +6 -0
  1235. package/dist/ui/src/icons/components/InventoryIcon.d.ts +6 -0
  1236. package/dist/ui/src/icons/components/InvertColorsIcon.d.ts +6 -0
  1237. package/dist/ui/src/icons/components/InvertColorsOffIcon.d.ts +6 -0
  1238. package/dist/ui/src/icons/components/InvertColorsOnIcon.d.ts +6 -0
  1239. package/dist/ui/src/icons/components/IosShareIcon.d.ts +6 -0
  1240. package/dist/ui/src/icons/components/IronIcon.d.ts +6 -0
  1241. package/dist/ui/src/icons/components/IsoIcon.d.ts +6 -0
  1242. package/dist/ui/src/icons/components/JavascriptIcon.d.ts +6 -0
  1243. package/dist/ui/src/icons/components/JoinFullIcon.d.ts +6 -0
  1244. package/dist/ui/src/icons/components/JoinInnerIcon.d.ts +6 -0
  1245. package/dist/ui/src/icons/components/JoinLeftIcon.d.ts +6 -0
  1246. package/dist/ui/src/icons/components/JoinRightIcon.d.ts +6 -0
  1247. package/dist/ui/src/icons/components/KayakingIcon.d.ts +6 -0
  1248. package/dist/ui/src/icons/components/KebabDiningIcon.d.ts +6 -0
  1249. package/dist/ui/src/icons/components/KeyIcon.d.ts +6 -0
  1250. package/dist/ui/src/icons/components/KeyOffIcon.d.ts +6 -0
  1251. package/dist/ui/src/icons/components/KeyboardAltIcon.d.ts +6 -0
  1252. package/dist/ui/src/icons/components/KeyboardArrowDownIcon.d.ts +6 -0
  1253. package/dist/ui/src/icons/components/KeyboardArrowLeftIcon.d.ts +6 -0
  1254. package/dist/ui/src/icons/components/KeyboardArrowRightIcon.d.ts +6 -0
  1255. package/dist/ui/src/icons/components/KeyboardArrowUpIcon.d.ts +6 -0
  1256. package/dist/ui/src/icons/components/KeyboardBackspaceIcon.d.ts +6 -0
  1257. package/dist/ui/src/icons/components/KeyboardCapslockIcon.d.ts +6 -0
  1258. package/dist/ui/src/icons/components/KeyboardCommandKeyIcon.d.ts +6 -0
  1259. package/dist/ui/src/icons/components/KeyboardControlIcon.d.ts +6 -0
  1260. package/dist/ui/src/icons/components/KeyboardControlKeyIcon.d.ts +6 -0
  1261. package/dist/ui/src/icons/components/KeyboardDoubleArrowDownIcon.d.ts +6 -0
  1262. package/dist/ui/src/icons/components/KeyboardDoubleArrowLeftIcon.d.ts +6 -0
  1263. package/dist/ui/src/icons/components/KeyboardDoubleArrowRightIcon.d.ts +6 -0
  1264. package/dist/ui/src/icons/components/KeyboardDoubleArrowUpIcon.d.ts +6 -0
  1265. package/dist/ui/src/icons/components/KeyboardHideIcon.d.ts +6 -0
  1266. package/dist/ui/src/icons/components/KeyboardIcon.d.ts +6 -0
  1267. package/dist/ui/src/icons/components/KeyboardOptionKeyIcon.d.ts +6 -0
  1268. package/dist/ui/src/icons/components/KeyboardReturnIcon.d.ts +6 -0
  1269. package/dist/ui/src/icons/components/KeyboardTabIcon.d.ts +6 -0
  1270. package/dist/ui/src/icons/components/KeyboardVoiceIcon.d.ts +6 -0
  1271. package/dist/ui/src/icons/components/KingBedIcon.d.ts +6 -0
  1272. package/dist/ui/src/icons/components/KitchenIcon.d.ts +6 -0
  1273. package/dist/ui/src/icons/components/KitesurfingIcon.d.ts +6 -0
  1274. package/dist/ui/src/icons/components/LabelIcon.d.ts +6 -0
  1275. package/dist/ui/src/icons/components/LabelImportantIcon.d.ts +6 -0
  1276. package/dist/ui/src/icons/components/LabelImportantOutlineIcon.d.ts +6 -0
  1277. package/dist/ui/src/icons/components/LabelOffIcon.d.ts +6 -0
  1278. package/dist/ui/src/icons/components/LabelOutlineIcon.d.ts +6 -0
  1279. package/dist/ui/src/icons/components/LanIcon.d.ts +6 -0
  1280. package/dist/ui/src/icons/components/LandscapeIcon.d.ts +6 -0
  1281. package/dist/ui/src/icons/components/LandslideIcon.d.ts +6 -0
  1282. package/dist/ui/src/icons/components/LanguageIcon.d.ts +6 -0
  1283. package/dist/ui/src/icons/components/LaptopChromebookIcon.d.ts +6 -0
  1284. package/dist/ui/src/icons/components/LaptopIcon.d.ts +6 -0
  1285. package/dist/ui/src/icons/components/LaptopMacIcon.d.ts +6 -0
  1286. package/dist/ui/src/icons/components/LaptopWindowsIcon.d.ts +6 -0
  1287. package/dist/ui/src/icons/components/LastPageIcon.d.ts +6 -0
  1288. package/dist/ui/src/icons/components/LaunchIcon.d.ts +6 -0
  1289. package/dist/ui/src/icons/components/LayersClearIcon.d.ts +6 -0
  1290. package/dist/ui/src/icons/components/LayersIcon.d.ts +6 -0
  1291. package/dist/ui/src/icons/components/LeaderboardIcon.d.ts +6 -0
  1292. package/dist/ui/src/icons/components/LeakAddIcon.d.ts +6 -0
  1293. package/dist/ui/src/icons/components/LeakRemoveIcon.d.ts +6 -0
  1294. package/dist/ui/src/icons/components/LeaveBagsAtHomeIcon.d.ts +6 -0
  1295. package/dist/ui/src/icons/components/LegendToggleIcon.d.ts +6 -0
  1296. package/dist/ui/src/icons/components/LensBlurIcon.d.ts +6 -0
  1297. package/dist/ui/src/icons/components/LensIcon.d.ts +6 -0
  1298. package/dist/ui/src/icons/components/LibraryAddCheckIcon.d.ts +6 -0
  1299. package/dist/ui/src/icons/components/LibraryAddIcon.d.ts +6 -0
  1300. package/dist/ui/src/icons/components/LibraryBooksIcon.d.ts +6 -0
  1301. package/dist/ui/src/icons/components/LibraryMusicIcon.d.ts +6 -0
  1302. package/dist/ui/src/icons/components/LightIcon.d.ts +6 -0
  1303. package/dist/ui/src/icons/components/LightModeIcon.d.ts +6 -0
  1304. package/dist/ui/src/icons/components/LightbulbCircleIcon.d.ts +6 -0
  1305. package/dist/ui/src/icons/components/LightbulbIcon.d.ts +6 -0
  1306. package/dist/ui/src/icons/components/LightbulbOutlineIcon.d.ts +6 -0
  1307. package/dist/ui/src/icons/components/LineAxisIcon.d.ts +6 -0
  1308. package/dist/ui/src/icons/components/LineStyleIcon.d.ts +6 -0
  1309. package/dist/ui/src/icons/components/LineWeightIcon.d.ts +6 -0
  1310. package/dist/ui/src/icons/components/LinearScaleIcon.d.ts +6 -0
  1311. package/dist/ui/src/icons/components/LinkIcon.d.ts +6 -0
  1312. package/dist/ui/src/icons/components/LinkOffIcon.d.ts +6 -0
  1313. package/dist/ui/src/icons/components/LinkedCameraIcon.d.ts +6 -0
  1314. package/dist/ui/src/icons/components/LiquorIcon.d.ts +6 -0
  1315. package/dist/ui/src/icons/components/ListAltIcon.d.ts +6 -0
  1316. package/dist/ui/src/icons/components/ListIcon.d.ts +6 -0
  1317. package/dist/ui/src/icons/components/LiveHelpIcon.d.ts +6 -0
  1318. package/dist/ui/src/icons/components/LiveTvIcon.d.ts +6 -0
  1319. package/dist/ui/src/icons/components/LivingIcon.d.ts +6 -0
  1320. package/dist/ui/src/icons/components/LocalActivityIcon.d.ts +6 -0
  1321. package/dist/ui/src/icons/components/LocalAirportIcon.d.ts +6 -0
  1322. package/dist/ui/src/icons/components/LocalAtmIcon.d.ts +6 -0
  1323. package/dist/ui/src/icons/components/LocalAttractionIcon.d.ts +6 -0
  1324. package/dist/ui/src/icons/components/LocalBarIcon.d.ts +6 -0
  1325. package/dist/ui/src/icons/components/LocalCafeIcon.d.ts +6 -0
  1326. package/dist/ui/src/icons/components/LocalCarWashIcon.d.ts +6 -0
  1327. package/dist/ui/src/icons/components/LocalConvenienceStoreIcon.d.ts +6 -0
  1328. package/dist/ui/src/icons/components/LocalDiningIcon.d.ts +6 -0
  1329. package/dist/ui/src/icons/components/LocalDrinkIcon.d.ts +6 -0
  1330. package/dist/ui/src/icons/components/LocalFireDepartmentIcon.d.ts +6 -0
  1331. package/dist/ui/src/icons/components/LocalFloristIcon.d.ts +6 -0
  1332. package/dist/ui/src/icons/components/LocalGasStationIcon.d.ts +6 -0
  1333. package/dist/ui/src/icons/components/LocalGroceryStoreIcon.d.ts +6 -0
  1334. package/dist/ui/src/icons/components/LocalHospitalIcon.d.ts +6 -0
  1335. package/dist/ui/src/icons/components/LocalHotelIcon.d.ts +6 -0
  1336. package/dist/ui/src/icons/components/LocalLaundryServiceIcon.d.ts +6 -0
  1337. package/dist/ui/src/icons/components/LocalLibraryIcon.d.ts +6 -0
  1338. package/dist/ui/src/icons/components/LocalMallIcon.d.ts +6 -0
  1339. package/dist/ui/src/icons/components/LocalMoviesIcon.d.ts +6 -0
  1340. package/dist/ui/src/icons/components/LocalOfferIcon.d.ts +6 -0
  1341. package/dist/ui/src/icons/components/LocalParkingIcon.d.ts +6 -0
  1342. package/dist/ui/src/icons/components/LocalPharmacyIcon.d.ts +6 -0
  1343. package/dist/ui/src/icons/components/LocalPhoneIcon.d.ts +6 -0
  1344. package/dist/ui/src/icons/components/LocalPizzaIcon.d.ts +6 -0
  1345. package/dist/ui/src/icons/components/LocalPlayIcon.d.ts +6 -0
  1346. package/dist/ui/src/icons/components/LocalPoliceIcon.d.ts +6 -0
  1347. package/dist/ui/src/icons/components/LocalPostOfficeIcon.d.ts +6 -0
  1348. package/dist/ui/src/icons/components/LocalPrintShopIcon.d.ts +6 -0
  1349. package/dist/ui/src/icons/components/LocalRestaurantIcon.d.ts +6 -0
  1350. package/dist/ui/src/icons/components/LocalSeeIcon.d.ts +6 -0
  1351. package/dist/ui/src/icons/components/LocalShippingIcon.d.ts +6 -0
  1352. package/dist/ui/src/icons/components/LocalTaxiIcon.d.ts +6 -0
  1353. package/dist/ui/src/icons/components/LocationCityIcon.d.ts +6 -0
  1354. package/dist/ui/src/icons/components/LocationDisabledIcon.d.ts +6 -0
  1355. package/dist/ui/src/icons/components/LocationHistoryIcon.d.ts +6 -0
  1356. package/dist/ui/src/icons/components/LocationOffIcon.d.ts +6 -0
  1357. package/dist/ui/src/icons/components/LocationOnIcon.d.ts +6 -0
  1358. package/dist/ui/src/icons/components/LocationSearchingIcon.d.ts +6 -0
  1359. package/dist/ui/src/icons/components/LockClockIcon.d.ts +6 -0
  1360. package/dist/ui/src/icons/components/LockIcon.d.ts +6 -0
  1361. package/dist/ui/src/icons/components/LockOpenIcon.d.ts +6 -0
  1362. package/dist/ui/src/icons/components/LockOutlineIcon.d.ts +6 -0
  1363. package/dist/ui/src/icons/components/LockPersonIcon.d.ts +6 -0
  1364. package/dist/ui/src/icons/components/LockResetIcon.d.ts +6 -0
  1365. package/dist/ui/src/icons/components/LoginIcon.d.ts +6 -0
  1366. package/dist/ui/src/icons/components/LogoDevIcon.d.ts +6 -0
  1367. package/dist/ui/src/icons/components/LogoutIcon.d.ts +6 -0
  1368. package/dist/ui/src/icons/components/Looks3Icon.d.ts +6 -0
  1369. package/dist/ui/src/icons/components/Looks4Icon.d.ts +6 -0
  1370. package/dist/ui/src/icons/components/Looks5Icon.d.ts +6 -0
  1371. package/dist/ui/src/icons/components/Looks6Icon.d.ts +6 -0
  1372. package/dist/ui/src/icons/components/LooksIcon.d.ts +6 -0
  1373. package/dist/ui/src/icons/components/LooksOneIcon.d.ts +6 -0
  1374. package/dist/ui/src/icons/components/LooksTwoIcon.d.ts +6 -0
  1375. package/dist/ui/src/icons/components/LoopIcon.d.ts +6 -0
  1376. package/dist/ui/src/icons/components/LoupeIcon.d.ts +6 -0
  1377. package/dist/ui/src/icons/components/LowPriorityIcon.d.ts +6 -0
  1378. package/dist/ui/src/icons/components/LoyaltyIcon.d.ts +6 -0
  1379. package/dist/ui/src/icons/components/LteMobiledataIcon.d.ts +6 -0
  1380. package/dist/ui/src/icons/components/LtePlusMobiledataIcon.d.ts +6 -0
  1381. package/dist/ui/src/icons/components/LuggageIcon.d.ts +6 -0
  1382. package/dist/ui/src/icons/components/LunchDiningIcon.d.ts +6 -0
  1383. package/dist/ui/src/icons/components/LyricsIcon.d.ts +6 -0
  1384. package/dist/ui/src/icons/components/MacroOffIcon.d.ts +6 -0
  1385. package/dist/ui/src/icons/components/MailIcon.d.ts +6 -0
  1386. package/dist/ui/src/icons/components/MailLockIcon.d.ts +6 -0
  1387. package/dist/ui/src/icons/components/MailOutlineIcon.d.ts +6 -0
  1388. package/dist/ui/src/icons/components/MaleIcon.d.ts +6 -0
  1389. package/dist/ui/src/icons/components/Man2Icon.d.ts +6 -0
  1390. package/dist/ui/src/icons/components/Man3Icon.d.ts +6 -0
  1391. package/dist/ui/src/icons/components/Man4Icon.d.ts +6 -0
  1392. package/dist/ui/src/icons/components/ManIcon.d.ts +6 -0
  1393. package/dist/ui/src/icons/components/ManageAccountsIcon.d.ts +6 -0
  1394. package/dist/ui/src/icons/components/ManageHistoryIcon.d.ts +6 -0
  1395. package/dist/ui/src/icons/components/ManageSearchIcon.d.ts +6 -0
  1396. package/dist/ui/src/icons/components/MapIcon.d.ts +6 -0
  1397. package/dist/ui/src/icons/components/MapsHomeWorkIcon.d.ts +6 -0
  1398. package/dist/ui/src/icons/components/MapsUgcIcon.d.ts +6 -0
  1399. package/dist/ui/src/icons/components/MarginIcon.d.ts +6 -0
  1400. package/dist/ui/src/icons/components/MarkAsUnreadIcon.d.ts +6 -0
  1401. package/dist/ui/src/icons/components/MarkChatReadIcon.d.ts +6 -0
  1402. package/dist/ui/src/icons/components/MarkChatUnreadIcon.d.ts +6 -0
  1403. package/dist/ui/src/icons/components/MarkEmailReadIcon.d.ts +6 -0
  1404. package/dist/ui/src/icons/components/MarkEmailUnreadIcon.d.ts +6 -0
  1405. package/dist/ui/src/icons/components/MarkUnreadChatAltIcon.d.ts +6 -0
  1406. package/dist/ui/src/icons/components/MarkunreadIcon.d.ts +6 -0
  1407. package/dist/ui/src/icons/components/MarkunreadMailboxIcon.d.ts +6 -0
  1408. package/dist/ui/src/icons/components/MasksIcon.d.ts +6 -0
  1409. package/dist/ui/src/icons/components/MaximizeIcon.d.ts +6 -0
  1410. package/dist/ui/src/icons/components/MediaBluetoothOffIcon.d.ts +6 -0
  1411. package/dist/ui/src/icons/components/MediaBluetoothOnIcon.d.ts +6 -0
  1412. package/dist/ui/src/icons/components/MediationIcon.d.ts +6 -0
  1413. package/dist/ui/src/icons/components/MedicalInformationIcon.d.ts +6 -0
  1414. package/dist/ui/src/icons/components/MedicalServicesIcon.d.ts +6 -0
  1415. package/dist/ui/src/icons/components/MedicationIcon.d.ts +6 -0
  1416. package/dist/ui/src/icons/components/MedicationLiquidIcon.d.ts +6 -0
  1417. package/dist/ui/src/icons/components/MeetingRoomIcon.d.ts +6 -0
  1418. package/dist/ui/src/icons/components/MemoryIcon.d.ts +6 -0
  1419. package/dist/ui/src/icons/components/MenuBookIcon.d.ts +6 -0
  1420. package/dist/ui/src/icons/components/MenuIcon.d.ts +6 -0
  1421. package/dist/ui/src/icons/components/MenuOpenIcon.d.ts +6 -0
  1422. package/dist/ui/src/icons/components/MergeIcon.d.ts +6 -0
  1423. package/dist/ui/src/icons/components/MergeTypeIcon.d.ts +6 -0
  1424. package/dist/ui/src/icons/components/MessageIcon.d.ts +6 -0
  1425. package/dist/ui/src/icons/components/MessengerIcon.d.ts +6 -0
  1426. package/dist/ui/src/icons/components/MessengerOutlineIcon.d.ts +6 -0
  1427. package/dist/ui/src/icons/components/MicExternalOffIcon.d.ts +6 -0
  1428. package/dist/ui/src/icons/components/MicExternalOnIcon.d.ts +6 -0
  1429. package/dist/ui/src/icons/components/MicIcon.d.ts +6 -0
  1430. package/dist/ui/src/icons/components/MicNoneIcon.d.ts +6 -0
  1431. package/dist/ui/src/icons/components/MicOffIcon.d.ts +6 -0
  1432. package/dist/ui/src/icons/components/MicrowaveIcon.d.ts +6 -0
  1433. package/dist/ui/src/icons/components/MilitaryTechIcon.d.ts +6 -0
  1434. package/dist/ui/src/icons/components/MinimizeIcon.d.ts +6 -0
  1435. package/dist/ui/src/icons/components/MinorCrashIcon.d.ts +6 -0
  1436. package/dist/ui/src/icons/components/MiscellaneousServicesIcon.d.ts +6 -0
  1437. package/dist/ui/src/icons/components/MissedVideoCallIcon.d.ts +6 -0
  1438. package/dist/ui/src/icons/components/MmsIcon.d.ts +6 -0
  1439. package/dist/ui/src/icons/components/MobileFriendlyIcon.d.ts +6 -0
  1440. package/dist/ui/src/icons/components/MobileOffIcon.d.ts +6 -0
  1441. package/dist/ui/src/icons/components/MobileScreenShareIcon.d.ts +6 -0
  1442. package/dist/ui/src/icons/components/MobiledataOffIcon.d.ts +6 -0
  1443. package/dist/ui/src/icons/components/ModeCommentIcon.d.ts +6 -0
  1444. package/dist/ui/src/icons/components/ModeEditIcon.d.ts +6 -0
  1445. package/dist/ui/src/icons/components/ModeEditOutlineIcon.d.ts +6 -0
  1446. package/dist/ui/src/icons/components/ModeFanOffIcon.d.ts +6 -0
  1447. package/dist/ui/src/icons/components/ModeIcon.d.ts +6 -0
  1448. package/dist/ui/src/icons/components/ModeNightIcon.d.ts +6 -0
  1449. package/dist/ui/src/icons/components/ModeOfTravelIcon.d.ts +6 -0
  1450. package/dist/ui/src/icons/components/ModeStandbyIcon.d.ts +6 -0
  1451. package/dist/ui/src/icons/components/ModelTrainingIcon.d.ts +6 -0
  1452. package/dist/ui/src/icons/components/MonetizationOnIcon.d.ts +6 -0
  1453. package/dist/ui/src/icons/components/MoneyIcon.d.ts +6 -0
  1454. package/dist/ui/src/icons/components/MoneyOffCsredIcon.d.ts +6 -0
  1455. package/dist/ui/src/icons/components/MoneyOffIcon.d.ts +6 -0
  1456. package/dist/ui/src/icons/components/MonitorHeartIcon.d.ts +6 -0
  1457. package/dist/ui/src/icons/components/MonitorIcon.d.ts +6 -0
  1458. package/dist/ui/src/icons/components/MonitorWeightIcon.d.ts +6 -0
  1459. package/dist/ui/src/icons/components/MonochromePhotosIcon.d.ts +6 -0
  1460. package/dist/ui/src/icons/components/MoodBadIcon.d.ts +6 -0
  1461. package/dist/ui/src/icons/components/MoodIcon.d.ts +6 -0
  1462. package/dist/ui/src/icons/components/MopedIcon.d.ts +6 -0
  1463. package/dist/ui/src/icons/components/MoreHorizIcon.d.ts +6 -0
  1464. package/dist/ui/src/icons/components/MoreIcon.d.ts +6 -0
  1465. package/dist/ui/src/icons/components/MoreTimeIcon.d.ts +6 -0
  1466. package/dist/ui/src/icons/components/MoreVertIcon.d.ts +6 -0
  1467. package/dist/ui/src/icons/components/MosqueIcon.d.ts +6 -0
  1468. package/dist/ui/src/icons/components/MotionPhotosAutoIcon.d.ts +6 -0
  1469. package/dist/ui/src/icons/components/MotionPhotosOffIcon.d.ts +6 -0
  1470. package/dist/ui/src/icons/components/MotionPhotosOnIcon.d.ts +6 -0
  1471. package/dist/ui/src/icons/components/MotionPhotosPauseIcon.d.ts +6 -0
  1472. package/dist/ui/src/icons/components/MotionPhotosPausedIcon.d.ts +6 -0
  1473. package/dist/ui/src/icons/components/MotorcycleIcon.d.ts +6 -0
  1474. package/dist/ui/src/icons/components/MouseIcon.d.ts +6 -0
  1475. package/dist/ui/src/icons/components/MoveDownIcon.d.ts +6 -0
  1476. package/dist/ui/src/icons/components/MoveToInboxIcon.d.ts +6 -0
  1477. package/dist/ui/src/icons/components/MoveUpIcon.d.ts +6 -0
  1478. package/dist/ui/src/icons/components/MovieCreationIcon.d.ts +6 -0
  1479. package/dist/ui/src/icons/components/MovieFilterIcon.d.ts +6 -0
  1480. package/dist/ui/src/icons/components/MovieIcon.d.ts +6 -0
  1481. package/dist/ui/src/icons/components/MovingIcon.d.ts +6 -0
  1482. package/dist/ui/src/icons/components/MpIcon.d.ts +6 -0
  1483. package/dist/ui/src/icons/components/MultilineChartIcon.d.ts +6 -0
  1484. package/dist/ui/src/icons/components/MultipleStopIcon.d.ts +6 -0
  1485. package/dist/ui/src/icons/components/MultitrackAudioIcon.d.ts +6 -0
  1486. package/dist/ui/src/icons/components/MuseumIcon.d.ts +6 -0
  1487. package/dist/ui/src/icons/components/MusicNoteIcon.d.ts +6 -0
  1488. package/dist/ui/src/icons/components/MusicOffIcon.d.ts +6 -0
  1489. package/dist/ui/src/icons/components/MusicVideoIcon.d.ts +6 -0
  1490. package/dist/ui/src/icons/components/MyLibraryAddIcon.d.ts +6 -0
  1491. package/dist/ui/src/icons/components/MyLibraryBooksIcon.d.ts +6 -0
  1492. package/dist/ui/src/icons/components/MyLibraryMusicIcon.d.ts +6 -0
  1493. package/dist/ui/src/icons/components/MyLocationIcon.d.ts +6 -0
  1494. package/dist/ui/src/icons/components/NatIcon.d.ts +6 -0
  1495. package/dist/ui/src/icons/components/NatureIcon.d.ts +6 -0
  1496. package/dist/ui/src/icons/components/NaturePeopleIcon.d.ts +6 -0
  1497. package/dist/ui/src/icons/components/NavigateBeforeIcon.d.ts +6 -0
  1498. package/dist/ui/src/icons/components/NavigateNextIcon.d.ts +6 -0
  1499. package/dist/ui/src/icons/components/NavigationIcon.d.ts +6 -0
  1500. package/dist/ui/src/icons/components/NearMeDisabledIcon.d.ts +6 -0
  1501. package/dist/ui/src/icons/components/NearMeIcon.d.ts +6 -0
  1502. package/dist/ui/src/icons/components/NearbyErrorIcon.d.ts +6 -0
  1503. package/dist/ui/src/icons/components/NearbyOffIcon.d.ts +6 -0
  1504. package/dist/ui/src/icons/components/NestCamWiredStandIcon.d.ts +6 -0
  1505. package/dist/ui/src/icons/components/NetworkCellIcon.d.ts +6 -0
  1506. package/dist/ui/src/icons/components/NetworkCheckIcon.d.ts +6 -0
  1507. package/dist/ui/src/icons/components/NetworkLockedIcon.d.ts +6 -0
  1508. package/dist/ui/src/icons/components/NetworkPingIcon.d.ts +6 -0
  1509. package/dist/ui/src/icons/components/NetworkWifi1BarIcon.d.ts +6 -0
  1510. package/dist/ui/src/icons/components/NetworkWifi2BarIcon.d.ts +6 -0
  1511. package/dist/ui/src/icons/components/NetworkWifi3BarIcon.d.ts +6 -0
  1512. package/dist/ui/src/icons/components/NetworkWifiIcon.d.ts +6 -0
  1513. package/dist/ui/src/icons/components/NewLabelIcon.d.ts +6 -0
  1514. package/dist/ui/src/icons/components/NewReleasesIcon.d.ts +6 -0
  1515. package/dist/ui/src/icons/components/NewspaperIcon.d.ts +6 -0
  1516. package/dist/ui/src/icons/components/NextPlanIcon.d.ts +6 -0
  1517. package/dist/ui/src/icons/components/NextWeekIcon.d.ts +6 -0
  1518. package/dist/ui/src/icons/components/NfcIcon.d.ts +6 -0
  1519. package/dist/ui/src/icons/components/NightShelterIcon.d.ts +6 -0
  1520. package/dist/ui/src/icons/components/NightlifeIcon.d.ts +6 -0
  1521. package/dist/ui/src/icons/components/NightlightIcon.d.ts +6 -0
  1522. package/dist/ui/src/icons/components/NightlightRoundIcon.d.ts +6 -0
  1523. package/dist/ui/src/icons/components/NightsStayIcon.d.ts +6 -0
  1524. package/dist/ui/src/icons/components/NoAccountsIcon.d.ts +6 -0
  1525. package/dist/ui/src/icons/components/NoAdultContentIcon.d.ts +6 -0
  1526. package/dist/ui/src/icons/components/NoBackpackIcon.d.ts +6 -0
  1527. package/dist/ui/src/icons/components/NoCellIcon.d.ts +6 -0
  1528. package/dist/ui/src/icons/components/NoCrashIcon.d.ts +6 -0
  1529. package/dist/ui/src/icons/components/NoDrinksIcon.d.ts +6 -0
  1530. package/dist/ui/src/icons/components/NoEncryptionGmailerrorredIcon.d.ts +6 -0
  1531. package/dist/ui/src/icons/components/NoEncryptionIcon.d.ts +6 -0
  1532. package/dist/ui/src/icons/components/NoFlashIcon.d.ts +6 -0
  1533. package/dist/ui/src/icons/components/NoFoodIcon.d.ts +6 -0
  1534. package/dist/ui/src/icons/components/NoLuggageIcon.d.ts +6 -0
  1535. package/dist/ui/src/icons/components/NoMealsIcon.d.ts +6 -0
  1536. package/dist/ui/src/icons/components/NoMeetingRoomIcon.d.ts +6 -0
  1537. package/dist/ui/src/icons/components/NoPhotographyIcon.d.ts +6 -0
  1538. package/dist/ui/src/icons/components/NoSimIcon.d.ts +6 -0
  1539. package/dist/ui/src/icons/components/NoStrollerIcon.d.ts +6 -0
  1540. package/dist/ui/src/icons/components/NoTransferIcon.d.ts +6 -0
  1541. package/dist/ui/src/icons/components/NoiseAwareIcon.d.ts +6 -0
  1542. package/dist/ui/src/icons/components/NoiseControlOffIcon.d.ts +6 -0
  1543. package/dist/ui/src/icons/components/NordicWalkingIcon.d.ts +6 -0
  1544. package/dist/ui/src/icons/components/NorthEastIcon.d.ts +6 -0
  1545. package/dist/ui/src/icons/components/NorthIcon.d.ts +6 -0
  1546. package/dist/ui/src/icons/components/NorthWestIcon.d.ts +6 -0
  1547. package/dist/ui/src/icons/components/NotAccessibleIcon.d.ts +6 -0
  1548. package/dist/ui/src/icons/components/NotInterestedIcon.d.ts +6 -0
  1549. package/dist/ui/src/icons/components/NotListedLocationIcon.d.ts +6 -0
  1550. package/dist/ui/src/icons/components/NotStartedIcon.d.ts +6 -0
  1551. package/dist/ui/src/icons/components/NoteAddIcon.d.ts +6 -0
  1552. package/dist/ui/src/icons/components/NoteAltIcon.d.ts +6 -0
  1553. package/dist/ui/src/icons/components/NoteIcon.d.ts +6 -0
  1554. package/dist/ui/src/icons/components/NotesIcon.d.ts +6 -0
  1555. package/dist/ui/src/icons/components/NotificationAddIcon.d.ts +6 -0
  1556. package/dist/ui/src/icons/components/NotificationImportantIcon.d.ts +6 -0
  1557. package/dist/ui/src/icons/components/NotificationsActiveIcon.d.ts +6 -0
  1558. package/dist/ui/src/icons/components/NotificationsIcon.d.ts +6 -0
  1559. package/dist/ui/src/icons/components/NotificationsNoneIcon.d.ts +6 -0
  1560. package/dist/ui/src/icons/components/NotificationsOffIcon.d.ts +6 -0
  1561. package/dist/ui/src/icons/components/NotificationsOnIcon.d.ts +6 -0
  1562. package/dist/ui/src/icons/components/NotificationsPausedIcon.d.ts +6 -0
  1563. package/dist/ui/src/icons/components/NowWallpaperIcon.d.ts +6 -0
  1564. package/dist/ui/src/icons/components/NowWidgetsIcon.d.ts +6 -0
  1565. package/dist/ui/src/icons/components/NumbersIcon.d.ts +6 -0
  1566. package/dist/ui/src/icons/components/OfflineBoltIcon.d.ts +6 -0
  1567. package/dist/ui/src/icons/components/OfflinePinIcon.d.ts +6 -0
  1568. package/dist/ui/src/icons/components/OfflineShareIcon.d.ts +6 -0
  1569. package/dist/ui/src/icons/components/OilBarrelIcon.d.ts +6 -0
  1570. package/dist/ui/src/icons/components/OnDeviceTrainingIcon.d.ts +6 -0
  1571. package/dist/ui/src/icons/components/OndemandVideoIcon.d.ts +6 -0
  1572. package/dist/ui/src/icons/components/OnlinePredictionIcon.d.ts +6 -0
  1573. package/dist/ui/src/icons/components/OpacityIcon.d.ts +6 -0
  1574. package/dist/ui/src/icons/components/OpenInBrowserIcon.d.ts +6 -0
  1575. package/dist/ui/src/icons/components/OpenInFullIcon.d.ts +6 -0
  1576. package/dist/ui/src/icons/components/OpenInNewIcon.d.ts +6 -0
  1577. package/dist/ui/src/icons/components/OpenInNewOffIcon.d.ts +6 -0
  1578. package/dist/ui/src/icons/components/OpenWithIcon.d.ts +6 -0
  1579. package/dist/ui/src/icons/components/OtherHousesIcon.d.ts +6 -0
  1580. package/dist/ui/src/icons/components/OutbondIcon.d.ts +6 -0
  1581. package/dist/ui/src/icons/components/OutboundIcon.d.ts +6 -0
  1582. package/dist/ui/src/icons/components/OutboxIcon.d.ts +6 -0
  1583. package/dist/ui/src/icons/components/OutdoorGrillIcon.d.ts +6 -0
  1584. package/dist/ui/src/icons/components/OutletIcon.d.ts +6 -0
  1585. package/dist/ui/src/icons/components/OutlinedFlagIcon.d.ts +6 -0
  1586. package/dist/ui/src/icons/components/OutputIcon.d.ts +6 -0
  1587. package/dist/ui/src/icons/components/PaddingIcon.d.ts +6 -0
  1588. package/dist/ui/src/icons/components/PagesIcon.d.ts +6 -0
  1589. package/dist/ui/src/icons/components/PageviewIcon.d.ts +6 -0
  1590. package/dist/ui/src/icons/components/PaidIcon.d.ts +6 -0
  1591. package/dist/ui/src/icons/components/PaletteIcon.d.ts +6 -0
  1592. package/dist/ui/src/icons/components/PanToolAltIcon.d.ts +6 -0
  1593. package/dist/ui/src/icons/components/PanToolIcon.d.ts +6 -0
  1594. package/dist/ui/src/icons/components/PanoramaFishEyeIcon.d.ts +6 -0
  1595. package/dist/ui/src/icons/components/PanoramaHorizontalIcon.d.ts +6 -0
  1596. package/dist/ui/src/icons/components/PanoramaHorizontalSelectIcon.d.ts +6 -0
  1597. package/dist/ui/src/icons/components/PanoramaIcon.d.ts +6 -0
  1598. package/dist/ui/src/icons/components/PanoramaPhotosphereIcon.d.ts +6 -0
  1599. package/dist/ui/src/icons/components/PanoramaPhotosphereSelectIcon.d.ts +6 -0
  1600. package/dist/ui/src/icons/components/PanoramaVerticalIcon.d.ts +6 -0
  1601. package/dist/ui/src/icons/components/PanoramaVerticalSelectIcon.d.ts +6 -0
  1602. package/dist/ui/src/icons/components/PanoramaWideAngleIcon.d.ts +6 -0
  1603. package/dist/ui/src/icons/components/PanoramaWideAngleSelectIcon.d.ts +6 -0
  1604. package/dist/ui/src/icons/components/ParaglidingIcon.d.ts +6 -0
  1605. package/dist/ui/src/icons/components/ParkIcon.d.ts +6 -0
  1606. package/dist/ui/src/icons/components/PartyModeIcon.d.ts +6 -0
  1607. package/dist/ui/src/icons/components/PasswordIcon.d.ts +6 -0
  1608. package/dist/ui/src/icons/components/PasteIcon.d.ts +6 -0
  1609. package/dist/ui/src/icons/components/PatternIcon.d.ts +6 -0
  1610. package/dist/ui/src/icons/components/PauseCircleFilledIcon.d.ts +6 -0
  1611. package/dist/ui/src/icons/components/PauseCircleIcon.d.ts +6 -0
  1612. package/dist/ui/src/icons/components/PauseCircleOutlineIcon.d.ts +6 -0
  1613. package/dist/ui/src/icons/components/PauseIcon.d.ts +6 -0
  1614. package/dist/ui/src/icons/components/PausePresentationIcon.d.ts +6 -0
  1615. package/dist/ui/src/icons/components/PaymentIcon.d.ts +6 -0
  1616. package/dist/ui/src/icons/components/PaymentsIcon.d.ts +6 -0
  1617. package/dist/ui/src/icons/components/PaypalIcon.d.ts +6 -0
  1618. package/dist/ui/src/icons/components/PedalBikeIcon.d.ts +6 -0
  1619. package/dist/ui/src/icons/components/PendingActionsIcon.d.ts +6 -0
  1620. package/dist/ui/src/icons/components/PendingIcon.d.ts +6 -0
  1621. package/dist/ui/src/icons/components/PentagonIcon.d.ts +6 -0
  1622. package/dist/ui/src/icons/components/PeopleAltIcon.d.ts +6 -0
  1623. package/dist/ui/src/icons/components/PeopleIcon.d.ts +6 -0
  1624. package/dist/ui/src/icons/components/PeopleOutlineIcon.d.ts +6 -0
  1625. package/dist/ui/src/icons/components/PercentIcon.d.ts +6 -0
  1626. package/dist/ui/src/icons/components/PermCameraMicIcon.d.ts +6 -0
  1627. package/dist/ui/src/icons/components/PermContactCalIcon.d.ts +6 -0
  1628. package/dist/ui/src/icons/components/PermContactCalendarIcon.d.ts +6 -0
  1629. package/dist/ui/src/icons/components/PermDataSettingIcon.d.ts +6 -0
  1630. package/dist/ui/src/icons/components/PermDeviceInfoIcon.d.ts +6 -0
  1631. package/dist/ui/src/icons/components/PermDeviceInformationIcon.d.ts +6 -0
  1632. package/dist/ui/src/icons/components/PermIdentityIcon.d.ts +6 -0
  1633. package/dist/ui/src/icons/components/PermMediaIcon.d.ts +6 -0
  1634. package/dist/ui/src/icons/components/PermPhoneMsgIcon.d.ts +6 -0
  1635. package/dist/ui/src/icons/components/PermScanWifiIcon.d.ts +6 -0
  1636. package/dist/ui/src/icons/components/Person2Icon.d.ts +6 -0
  1637. package/dist/ui/src/icons/components/Person3Icon.d.ts +6 -0
  1638. package/dist/ui/src/icons/components/Person4Icon.d.ts +6 -0
  1639. package/dist/ui/src/icons/components/PersonAddAlt1Icon.d.ts +6 -0
  1640. package/dist/ui/src/icons/components/PersonAddAltIcon.d.ts +6 -0
  1641. package/dist/ui/src/icons/components/PersonAddDisabledIcon.d.ts +6 -0
  1642. package/dist/ui/src/icons/components/PersonAddIcon.d.ts +6 -0
  1643. package/dist/ui/src/icons/components/PersonIcon.d.ts +6 -0
  1644. package/dist/ui/src/icons/components/PersonOffIcon.d.ts +6 -0
  1645. package/dist/ui/src/icons/components/PersonOutlineIcon.d.ts +6 -0
  1646. package/dist/ui/src/icons/components/PersonPinCircleIcon.d.ts +6 -0
  1647. package/dist/ui/src/icons/components/PersonPinIcon.d.ts +6 -0
  1648. package/dist/ui/src/icons/components/PersonRemoveAlt1Icon.d.ts +6 -0
  1649. package/dist/ui/src/icons/components/PersonRemoveIcon.d.ts +6 -0
  1650. package/dist/ui/src/icons/components/PersonSearchIcon.d.ts +6 -0
  1651. package/dist/ui/src/icons/components/PersonalInjuryIcon.d.ts +6 -0
  1652. package/dist/ui/src/icons/components/PersonalVideoIcon.d.ts +6 -0
  1653. package/dist/ui/src/icons/components/PestControlIcon.d.ts +6 -0
  1654. package/dist/ui/src/icons/components/PestControlRodentIcon.d.ts +6 -0
  1655. package/dist/ui/src/icons/components/PetsIcon.d.ts +6 -0
  1656. package/dist/ui/src/icons/components/PhishingIcon.d.ts +6 -0
  1657. package/dist/ui/src/icons/components/PhoneAndroidIcon.d.ts +6 -0
  1658. package/dist/ui/src/icons/components/PhoneBluetoothSpeakerIcon.d.ts +6 -0
  1659. package/dist/ui/src/icons/components/PhoneCallbackIcon.d.ts +6 -0
  1660. package/dist/ui/src/icons/components/PhoneDisabledIcon.d.ts +6 -0
  1661. package/dist/ui/src/icons/components/PhoneEnabledIcon.d.ts +6 -0
  1662. package/dist/ui/src/icons/components/PhoneForwardedIcon.d.ts +6 -0
  1663. package/dist/ui/src/icons/components/PhoneIcon.d.ts +6 -0
  1664. package/dist/ui/src/icons/components/PhoneInTalkIcon.d.ts +6 -0
  1665. package/dist/ui/src/icons/components/PhoneIphoneIcon.d.ts +6 -0
  1666. package/dist/ui/src/icons/components/PhoneLockedIcon.d.ts +6 -0
  1667. package/dist/ui/src/icons/components/PhoneMissedIcon.d.ts +6 -0
  1668. package/dist/ui/src/icons/components/PhonePausedIcon.d.ts +6 -0
  1669. package/dist/ui/src/icons/components/PhonelinkEraseIcon.d.ts +6 -0
  1670. package/dist/ui/src/icons/components/PhonelinkIcon.d.ts +6 -0
  1671. package/dist/ui/src/icons/components/PhonelinkLockIcon.d.ts +6 -0
  1672. package/dist/ui/src/icons/components/PhonelinkOffIcon.d.ts +6 -0
  1673. package/dist/ui/src/icons/components/PhonelinkRingIcon.d.ts +6 -0
  1674. package/dist/ui/src/icons/components/PhonelinkSetupIcon.d.ts +6 -0
  1675. package/dist/ui/src/icons/components/PhotoAlbumIcon.d.ts +6 -0
  1676. package/dist/ui/src/icons/components/PhotoCameraBackIcon.d.ts +6 -0
  1677. package/dist/ui/src/icons/components/PhotoCameraFrontIcon.d.ts +6 -0
  1678. package/dist/ui/src/icons/components/PhotoCameraIcon.d.ts +6 -0
  1679. package/dist/ui/src/icons/components/PhotoFilterIcon.d.ts +6 -0
  1680. package/dist/ui/src/icons/components/PhotoIcon.d.ts +6 -0
  1681. package/dist/ui/src/icons/components/PhotoLibraryIcon.d.ts +6 -0
  1682. package/dist/ui/src/icons/components/PhotoSizeSelectActualIcon.d.ts +6 -0
  1683. package/dist/ui/src/icons/components/PhotoSizeSelectLargeIcon.d.ts +6 -0
  1684. package/dist/ui/src/icons/components/PhotoSizeSelectSmallIcon.d.ts +6 -0
  1685. package/dist/ui/src/icons/components/PhpIcon.d.ts +6 -0
  1686. package/dist/ui/src/icons/components/PianoIcon.d.ts +6 -0
  1687. package/dist/ui/src/icons/components/PianoOffIcon.d.ts +6 -0
  1688. package/dist/ui/src/icons/components/PictureAsPdfIcon.d.ts +6 -0
  1689. package/dist/ui/src/icons/components/PictureInPictureAltIcon.d.ts +6 -0
  1690. package/dist/ui/src/icons/components/PictureInPictureIcon.d.ts +6 -0
  1691. package/dist/ui/src/icons/components/PieChartIcon.d.ts +6 -0
  1692. package/dist/ui/src/icons/components/PieChartOutlineIcon.d.ts +6 -0
  1693. package/dist/ui/src/icons/components/PinDropIcon.d.ts +6 -0
  1694. package/dist/ui/src/icons/components/PinEndIcon.d.ts +6 -0
  1695. package/dist/ui/src/icons/components/PinIcon.d.ts +6 -0
  1696. package/dist/ui/src/icons/components/PinInvokeIcon.d.ts +6 -0
  1697. package/dist/ui/src/icons/components/PinchIcon.d.ts +6 -0
  1698. package/dist/ui/src/icons/components/PivotTableChartIcon.d.ts +6 -0
  1699. package/dist/ui/src/icons/components/PixIcon.d.ts +6 -0
  1700. package/dist/ui/src/icons/components/PlaceIcon.d.ts +6 -0
  1701. package/dist/ui/src/icons/components/PlagiarismIcon.d.ts +6 -0
  1702. package/dist/ui/src/icons/components/PlayArrowIcon.d.ts +6 -0
  1703. package/dist/ui/src/icons/components/PlayCircleFillIcon.d.ts +6 -0
  1704. package/dist/ui/src/icons/components/PlayCircleFilledIcon.d.ts +6 -0
  1705. package/dist/ui/src/icons/components/PlayCircleIcon.d.ts +6 -0
  1706. package/dist/ui/src/icons/components/PlayCircleOutlineIcon.d.ts +6 -0
  1707. package/dist/ui/src/icons/components/PlayDisabledIcon.d.ts +6 -0
  1708. package/dist/ui/src/icons/components/PlayForWorkIcon.d.ts +6 -0
  1709. package/dist/ui/src/icons/components/PlayLessonIcon.d.ts +6 -0
  1710. package/dist/ui/src/icons/components/PlaylistAddCheckCircleIcon.d.ts +6 -0
  1711. package/dist/ui/src/icons/components/PlaylistAddCheckIcon.d.ts +6 -0
  1712. package/dist/ui/src/icons/components/PlaylistAddCircleIcon.d.ts +6 -0
  1713. package/dist/ui/src/icons/components/PlaylistAddIcon.d.ts +6 -0
  1714. package/dist/ui/src/icons/components/PlaylistPlayIcon.d.ts +6 -0
  1715. package/dist/ui/src/icons/components/PlaylistRemoveIcon.d.ts +6 -0
  1716. package/dist/ui/src/icons/components/PlumbingIcon.d.ts +6 -0
  1717. package/dist/ui/src/icons/components/PlusOneIcon.d.ts +6 -0
  1718. package/dist/ui/src/icons/components/PodcastsIcon.d.ts +6 -0
  1719. package/dist/ui/src/icons/components/PointOfSaleIcon.d.ts +6 -0
  1720. package/dist/ui/src/icons/components/PolicyIcon.d.ts +6 -0
  1721. package/dist/ui/src/icons/components/PollIcon.d.ts +6 -0
  1722. package/dist/ui/src/icons/components/PolylineIcon.d.ts +6 -0
  1723. package/dist/ui/src/icons/components/PolymerIcon.d.ts +6 -0
  1724. package/dist/ui/src/icons/components/PoolIcon.d.ts +6 -0
  1725. package/dist/ui/src/icons/components/PortableWifiOffIcon.d.ts +6 -0
  1726. package/dist/ui/src/icons/components/PortraitIcon.d.ts +6 -0
  1727. package/dist/ui/src/icons/components/PostAddIcon.d.ts +6 -0
  1728. package/dist/ui/src/icons/components/PowerIcon.d.ts +6 -0
  1729. package/dist/ui/src/icons/components/PowerInputIcon.d.ts +6 -0
  1730. package/dist/ui/src/icons/components/PowerOffIcon.d.ts +6 -0
  1731. package/dist/ui/src/icons/components/PowerSettingsNewIcon.d.ts +6 -0
  1732. package/dist/ui/src/icons/components/PrecisionManufacturingIcon.d.ts +6 -0
  1733. package/dist/ui/src/icons/components/PregnantWomanIcon.d.ts +6 -0
  1734. package/dist/ui/src/icons/components/PresentToAllIcon.d.ts +6 -0
  1735. package/dist/ui/src/icons/components/PreviewIcon.d.ts +6 -0
  1736. package/dist/ui/src/icons/components/PriceChangeIcon.d.ts +6 -0
  1737. package/dist/ui/src/icons/components/PriceCheckIcon.d.ts +6 -0
  1738. package/dist/ui/src/icons/components/PrintDisabledIcon.d.ts +6 -0
  1739. package/dist/ui/src/icons/components/PrintIcon.d.ts +6 -0
  1740. package/dist/ui/src/icons/components/PriorityHighIcon.d.ts +6 -0
  1741. package/dist/ui/src/icons/components/PrivacyTipIcon.d.ts +6 -0
  1742. package/dist/ui/src/icons/components/PrivateConnectivityIcon.d.ts +6 -0
  1743. package/dist/ui/src/icons/components/ProductionQuantityLimitsIcon.d.ts +6 -0
  1744. package/dist/ui/src/icons/components/PropaneIcon.d.ts +6 -0
  1745. package/dist/ui/src/icons/components/PropaneTankIcon.d.ts +6 -0
  1746. package/dist/ui/src/icons/components/PsychologyAltIcon.d.ts +6 -0
  1747. package/dist/ui/src/icons/components/PsychologyIcon.d.ts +6 -0
  1748. package/dist/ui/src/icons/components/PublicIcon.d.ts +6 -0
  1749. package/dist/ui/src/icons/components/PublicOffIcon.d.ts +6 -0
  1750. package/dist/ui/src/icons/components/PublishIcon.d.ts +6 -0
  1751. package/dist/ui/src/icons/components/PublishedWithChangesIcon.d.ts +6 -0
  1752. package/dist/ui/src/icons/components/PunchClockIcon.d.ts +6 -0
  1753. package/dist/ui/src/icons/components/PushPinIcon.d.ts +6 -0
  1754. package/dist/ui/src/icons/components/QrCode2Icon.d.ts +6 -0
  1755. package/dist/ui/src/icons/components/QrCodeIcon.d.ts +6 -0
  1756. package/dist/ui/src/icons/components/QrCodeScannerIcon.d.ts +6 -0
  1757. package/dist/ui/src/icons/components/QueryBuilderIcon.d.ts +6 -0
  1758. package/dist/ui/src/icons/components/QueryStatsIcon.d.ts +6 -0
  1759. package/dist/ui/src/icons/components/QuestionAnswerIcon.d.ts +6 -0
  1760. package/dist/ui/src/icons/components/QuestionMarkIcon.d.ts +6 -0
  1761. package/dist/ui/src/icons/components/QueueIcon.d.ts +6 -0
  1762. package/dist/ui/src/icons/components/QueueMusicIcon.d.ts +6 -0
  1763. package/dist/ui/src/icons/components/QueuePlayNextIcon.d.ts +6 -0
  1764. package/dist/ui/src/icons/components/QuickContactsDialerIcon.d.ts +6 -0
  1765. package/dist/ui/src/icons/components/QuickContactsMailIcon.d.ts +6 -0
  1766. package/dist/ui/src/icons/components/QuickreplyIcon.d.ts +6 -0
  1767. package/dist/ui/src/icons/components/QuizIcon.d.ts +6 -0
  1768. package/dist/ui/src/icons/components/QuoraIcon.d.ts +6 -0
  1769. package/dist/ui/src/icons/components/RMobiledataIcon.d.ts +6 -0
  1770. package/dist/ui/src/icons/components/RadarIcon.d.ts +6 -0
  1771. package/dist/ui/src/icons/components/RadioButtonCheckedIcon.d.ts +6 -0
  1772. package/dist/ui/src/icons/components/RadioButtonOffIcon.d.ts +6 -0
  1773. package/dist/ui/src/icons/components/RadioButtonOnIcon.d.ts +6 -0
  1774. package/dist/ui/src/icons/components/RadioButtonUncheckedIcon.d.ts +6 -0
  1775. package/dist/ui/src/icons/components/RadioIcon.d.ts +6 -0
  1776. package/dist/ui/src/icons/components/RailwayAlertIcon.d.ts +6 -0
  1777. package/dist/ui/src/icons/components/RamenDiningIcon.d.ts +6 -0
  1778. package/dist/ui/src/icons/components/RampLeftIcon.d.ts +6 -0
  1779. package/dist/ui/src/icons/components/RampRightIcon.d.ts +6 -0
  1780. package/dist/ui/src/icons/components/RateReviewIcon.d.ts +6 -0
  1781. package/dist/ui/src/icons/components/RawOffIcon.d.ts +6 -0
  1782. package/dist/ui/src/icons/components/RawOnIcon.d.ts +6 -0
  1783. package/dist/ui/src/icons/components/ReadMoreIcon.d.ts +6 -0
  1784. package/dist/ui/src/icons/components/RealEstateAgentIcon.d.ts +6 -0
  1785. package/dist/ui/src/icons/components/ReceiptIcon.d.ts +6 -0
  1786. package/dist/ui/src/icons/components/ReceiptLongIcon.d.ts +6 -0
  1787. package/dist/ui/src/icons/components/RecentActorsIcon.d.ts +6 -0
  1788. package/dist/ui/src/icons/components/RecommendIcon.d.ts +6 -0
  1789. package/dist/ui/src/icons/components/RecordVoiceOverIcon.d.ts +6 -0
  1790. package/dist/ui/src/icons/components/RectangleIcon.d.ts +6 -0
  1791. package/dist/ui/src/icons/components/RecyclingIcon.d.ts +6 -0
  1792. package/dist/ui/src/icons/components/RedditIcon.d.ts +6 -0
  1793. package/dist/ui/src/icons/components/RedeemIcon.d.ts +6 -0
  1794. package/dist/ui/src/icons/components/RedoIcon.d.ts +6 -0
  1795. package/dist/ui/src/icons/components/ReduceCapacityIcon.d.ts +6 -0
  1796. package/dist/ui/src/icons/components/RefreshIcon.d.ts +6 -0
  1797. package/dist/ui/src/icons/components/RememberMeIcon.d.ts +6 -0
  1798. package/dist/ui/src/icons/components/RemoveCircleIcon.d.ts +6 -0
  1799. package/dist/ui/src/icons/components/RemoveCircleOutlineIcon.d.ts +6 -0
  1800. package/dist/ui/src/icons/components/RemoveDoneIcon.d.ts +6 -0
  1801. package/dist/ui/src/icons/components/RemoveFromQueueIcon.d.ts +6 -0
  1802. package/dist/ui/src/icons/components/RemoveIcon.d.ts +6 -0
  1803. package/dist/ui/src/icons/components/RemoveModeratorIcon.d.ts +6 -0
  1804. package/dist/ui/src/icons/components/RemoveRedEyeIcon.d.ts +6 -0
  1805. package/dist/ui/src/icons/components/RemoveRoadIcon.d.ts +6 -0
  1806. package/dist/ui/src/icons/components/RemoveShoppingCartIcon.d.ts +6 -0
  1807. package/dist/ui/src/icons/components/ReorderIcon.d.ts +6 -0
  1808. package/dist/ui/src/icons/components/RepartitionIcon.d.ts +6 -0
  1809. package/dist/ui/src/icons/components/RepeatIcon.d.ts +6 -0
  1810. package/dist/ui/src/icons/components/RepeatOnIcon.d.ts +6 -0
  1811. package/dist/ui/src/icons/components/RepeatOneIcon.d.ts +6 -0
  1812. package/dist/ui/src/icons/components/RepeatOneOnIcon.d.ts +6 -0
  1813. package/dist/ui/src/icons/components/Replay10Icon.d.ts +6 -0
  1814. package/dist/ui/src/icons/components/Replay30Icon.d.ts +6 -0
  1815. package/dist/ui/src/icons/components/Replay5Icon.d.ts +6 -0
  1816. package/dist/ui/src/icons/components/ReplayCircleFilledIcon.d.ts +6 -0
  1817. package/dist/ui/src/icons/components/ReplayIcon.d.ts +6 -0
  1818. package/dist/ui/src/icons/components/ReplyAllIcon.d.ts +6 -0
  1819. package/dist/ui/src/icons/components/ReplyIcon.d.ts +6 -0
  1820. package/dist/ui/src/icons/components/ReportGmailerrorredIcon.d.ts +6 -0
  1821. package/dist/ui/src/icons/components/ReportIcon.d.ts +6 -0
  1822. package/dist/ui/src/icons/components/ReportOffIcon.d.ts +6 -0
  1823. package/dist/ui/src/icons/components/ReportProblemIcon.d.ts +6 -0
  1824. package/dist/ui/src/icons/components/RequestPageIcon.d.ts +6 -0
  1825. package/dist/ui/src/icons/components/RequestQuoteIcon.d.ts +6 -0
  1826. package/dist/ui/src/icons/components/ResetTvIcon.d.ts +6 -0
  1827. package/dist/ui/src/icons/components/RestartAltIcon.d.ts +6 -0
  1828. package/dist/ui/src/icons/components/RestaurantIcon.d.ts +6 -0
  1829. package/dist/ui/src/icons/components/RestaurantMenuIcon.d.ts +6 -0
  1830. package/dist/ui/src/icons/components/RestoreFromTrashIcon.d.ts +6 -0
  1831. package/dist/ui/src/icons/components/RestoreIcon.d.ts +6 -0
  1832. package/dist/ui/src/icons/components/RestorePageIcon.d.ts +6 -0
  1833. package/dist/ui/src/icons/components/ReviewsIcon.d.ts +6 -0
  1834. package/dist/ui/src/icons/components/RiceBowlIcon.d.ts +6 -0
  1835. package/dist/ui/src/icons/components/RingVolumeIcon.d.ts +6 -0
  1836. package/dist/ui/src/icons/components/RocketIcon.d.ts +6 -0
  1837. package/dist/ui/src/icons/components/RocketLaunchIcon.d.ts +6 -0
  1838. package/dist/ui/src/icons/components/RollerShadesClosedIcon.d.ts +6 -0
  1839. package/dist/ui/src/icons/components/RollerShadesIcon.d.ts +6 -0
  1840. package/dist/ui/src/icons/components/RollerSkatingIcon.d.ts +6 -0
  1841. package/dist/ui/src/icons/components/RoofingIcon.d.ts +6 -0
  1842. package/dist/ui/src/icons/components/RoomIcon.d.ts +6 -0
  1843. package/dist/ui/src/icons/components/RoomPreferencesIcon.d.ts +6 -0
  1844. package/dist/ui/src/icons/components/RoomServiceIcon.d.ts +6 -0
  1845. package/dist/ui/src/icons/components/Rotate90DegreesCcwIcon.d.ts +6 -0
  1846. package/dist/ui/src/icons/components/Rotate90DegreesCwIcon.d.ts +6 -0
  1847. package/dist/ui/src/icons/components/RotateLeftIcon.d.ts +6 -0
  1848. package/dist/ui/src/icons/components/RotateRightIcon.d.ts +6 -0
  1849. package/dist/ui/src/icons/components/RoundaboutLeftIcon.d.ts +6 -0
  1850. package/dist/ui/src/icons/components/RoundaboutRightIcon.d.ts +6 -0
  1851. package/dist/ui/src/icons/components/RoundedCornerIcon.d.ts +6 -0
  1852. package/dist/ui/src/icons/components/RouteIcon.d.ts +6 -0
  1853. package/dist/ui/src/icons/components/RouterIcon.d.ts +6 -0
  1854. package/dist/ui/src/icons/components/RowingIcon.d.ts +6 -0
  1855. package/dist/ui/src/icons/components/RssFeedIcon.d.ts +6 -0
  1856. package/dist/ui/src/icons/components/RsvpIcon.d.ts +6 -0
  1857. package/dist/ui/src/icons/components/RttIcon.d.ts +6 -0
  1858. package/dist/ui/src/icons/components/RuleFolderIcon.d.ts +6 -0
  1859. package/dist/ui/src/icons/components/RuleIcon.d.ts +6 -0
  1860. package/dist/ui/src/icons/components/RunCircleIcon.d.ts +6 -0
  1861. package/dist/ui/src/icons/components/RunningWithErrorsIcon.d.ts +6 -0
  1862. package/dist/ui/src/icons/components/RvHookupIcon.d.ts +6 -0
  1863. package/dist/ui/src/icons/components/SafetyCheckIcon.d.ts +6 -0
  1864. package/dist/ui/src/icons/components/SafetyDividerIcon.d.ts +6 -0
  1865. package/dist/ui/src/icons/components/SailingIcon.d.ts +6 -0
  1866. package/dist/ui/src/icons/components/SanitizerIcon.d.ts +6 -0
  1867. package/dist/ui/src/icons/components/SatelliteAltIcon.d.ts +6 -0
  1868. package/dist/ui/src/icons/components/SatelliteIcon.d.ts +6 -0
  1869. package/dist/ui/src/icons/components/SaveAltIcon.d.ts +6 -0
  1870. package/dist/ui/src/icons/components/SaveAsIcon.d.ts +6 -0
  1871. package/dist/ui/src/icons/components/SaveIcon.d.ts +6 -0
  1872. package/dist/ui/src/icons/components/SavedSearchIcon.d.ts +6 -0
  1873. package/dist/ui/src/icons/components/SavingsIcon.d.ts +6 -0
  1874. package/dist/ui/src/icons/components/ScaleIcon.d.ts +6 -0
  1875. package/dist/ui/src/icons/components/ScannerIcon.d.ts +6 -0
  1876. package/dist/ui/src/icons/components/ScatterPlotIcon.d.ts +6 -0
  1877. package/dist/ui/src/icons/components/ScheduleIcon.d.ts +6 -0
  1878. package/dist/ui/src/icons/components/ScheduleSendIcon.d.ts +6 -0
  1879. package/dist/ui/src/icons/components/SchemaIcon.d.ts +6 -0
  1880. package/dist/ui/src/icons/components/SchoolIcon.d.ts +6 -0
  1881. package/dist/ui/src/icons/components/ScienceIcon.d.ts +6 -0
  1882. package/dist/ui/src/icons/components/ScoreIcon.d.ts +6 -0
  1883. package/dist/ui/src/icons/components/ScoreboardIcon.d.ts +6 -0
  1884. package/dist/ui/src/icons/components/ScreenLockLandscapeIcon.d.ts +6 -0
  1885. package/dist/ui/src/icons/components/ScreenLockPortraitIcon.d.ts +6 -0
  1886. package/dist/ui/src/icons/components/ScreenLockRotationIcon.d.ts +6 -0
  1887. package/dist/ui/src/icons/components/ScreenRotationAltIcon.d.ts +6 -0
  1888. package/dist/ui/src/icons/components/ScreenRotationIcon.d.ts +6 -0
  1889. package/dist/ui/src/icons/components/ScreenSearchDesktopIcon.d.ts +6 -0
  1890. package/dist/ui/src/icons/components/ScreenShareIcon.d.ts +6 -0
  1891. package/dist/ui/src/icons/components/ScreenshotIcon.d.ts +6 -0
  1892. package/dist/ui/src/icons/components/ScreenshotMonitorIcon.d.ts +6 -0
  1893. package/dist/ui/src/icons/components/ScubaDivingIcon.d.ts +6 -0
  1894. package/dist/ui/src/icons/components/SdCardAlertIcon.d.ts +6 -0
  1895. package/dist/ui/src/icons/components/SdCardIcon.d.ts +6 -0
  1896. package/dist/ui/src/icons/components/SdIcon.d.ts +6 -0
  1897. package/dist/ui/src/icons/components/SdStorageIcon.d.ts +6 -0
  1898. package/dist/ui/src/icons/components/SearchIcon.d.ts +6 -0
  1899. package/dist/ui/src/icons/components/SearchOffIcon.d.ts +6 -0
  1900. package/dist/ui/src/icons/components/SecurityIcon.d.ts +6 -0
  1901. package/dist/ui/src/icons/components/SecurityUpdateGoodIcon.d.ts +6 -0
  1902. package/dist/ui/src/icons/components/SecurityUpdateIcon.d.ts +6 -0
  1903. package/dist/ui/src/icons/components/SecurityUpdateWarningIcon.d.ts +6 -0
  1904. package/dist/ui/src/icons/components/SegmentIcon.d.ts +6 -0
  1905. package/dist/ui/src/icons/components/SelectAllIcon.d.ts +6 -0
  1906. package/dist/ui/src/icons/components/SelfImprovementIcon.d.ts +6 -0
  1907. package/dist/ui/src/icons/components/SellIcon.d.ts +6 -0
  1908. package/dist/ui/src/icons/components/SendAndArchiveIcon.d.ts +6 -0
  1909. package/dist/ui/src/icons/components/SendIcon.d.ts +6 -0
  1910. package/dist/ui/src/icons/components/SendTimeExtensionIcon.d.ts +6 -0
  1911. package/dist/ui/src/icons/components/SendToMobileIcon.d.ts +6 -0
  1912. package/dist/ui/src/icons/components/SensorDoorIcon.d.ts +6 -0
  1913. package/dist/ui/src/icons/components/SensorOccupiedIcon.d.ts +6 -0
  1914. package/dist/ui/src/icons/components/SensorWindowIcon.d.ts +6 -0
  1915. package/dist/ui/src/icons/components/SensorsIcon.d.ts +6 -0
  1916. package/dist/ui/src/icons/components/SensorsOffIcon.d.ts +6 -0
  1917. package/dist/ui/src/icons/components/SentimentDissatisfiedIcon.d.ts +6 -0
  1918. package/dist/ui/src/icons/components/SentimentNeutralIcon.d.ts +6 -0
  1919. package/dist/ui/src/icons/components/SentimentSatisfiedAltIcon.d.ts +6 -0
  1920. package/dist/ui/src/icons/components/SentimentSatisfiedIcon.d.ts +6 -0
  1921. package/dist/ui/src/icons/components/SentimentVeryDissatisfiedIcon.d.ts +6 -0
  1922. package/dist/ui/src/icons/components/SentimentVerySatisfiedIcon.d.ts +6 -0
  1923. package/dist/ui/src/icons/components/SetMealIcon.d.ts +6 -0
  1924. package/dist/ui/src/icons/components/SettingsAccessibilityIcon.d.ts +6 -0
  1925. package/dist/ui/src/icons/components/SettingsApplicationsIcon.d.ts +6 -0
  1926. package/dist/ui/src/icons/components/SettingsBackupRestoreIcon.d.ts +6 -0
  1927. package/dist/ui/src/icons/components/SettingsBluetoothIcon.d.ts +6 -0
  1928. package/dist/ui/src/icons/components/SettingsBrightnessIcon.d.ts +6 -0
  1929. package/dist/ui/src/icons/components/SettingsCellIcon.d.ts +6 -0
  1930. package/dist/ui/src/icons/components/SettingsDisplayIcon.d.ts +6 -0
  1931. package/dist/ui/src/icons/components/SettingsEthernetIcon.d.ts +6 -0
  1932. package/dist/ui/src/icons/components/SettingsIcon.d.ts +6 -0
  1933. package/dist/ui/src/icons/components/SettingsInputAntennaIcon.d.ts +6 -0
  1934. package/dist/ui/src/icons/components/SettingsInputComponentIcon.d.ts +6 -0
  1935. package/dist/ui/src/icons/components/SettingsInputCompositeIcon.d.ts +6 -0
  1936. package/dist/ui/src/icons/components/SettingsInputHdmiIcon.d.ts +6 -0
  1937. package/dist/ui/src/icons/components/SettingsInputSvideoIcon.d.ts +6 -0
  1938. package/dist/ui/src/icons/components/SettingsOverscanIcon.d.ts +6 -0
  1939. package/dist/ui/src/icons/components/SettingsPhoneIcon.d.ts +6 -0
  1940. package/dist/ui/src/icons/components/SettingsPowerIcon.d.ts +6 -0
  1941. package/dist/ui/src/icons/components/SettingsRemoteIcon.d.ts +6 -0
  1942. package/dist/ui/src/icons/components/SettingsSuggestIcon.d.ts +6 -0
  1943. package/dist/ui/src/icons/components/SettingsSystemDaydreamIcon.d.ts +6 -0
  1944. package/dist/ui/src/icons/components/SettingsVoiceIcon.d.ts +6 -0
  1945. package/dist/ui/src/icons/components/SevereColdIcon.d.ts +6 -0
  1946. package/dist/ui/src/icons/components/ShapeLineIcon.d.ts +6 -0
  1947. package/dist/ui/src/icons/components/ShareArrivalTimeIcon.d.ts +6 -0
  1948. package/dist/ui/src/icons/components/ShareIcon.d.ts +6 -0
  1949. package/dist/ui/src/icons/components/ShareLocationIcon.d.ts +6 -0
  1950. package/dist/ui/src/icons/components/ShieldIcon.d.ts +6 -0
  1951. package/dist/ui/src/icons/components/ShieldMoonIcon.d.ts +6 -0
  1952. package/dist/ui/src/icons/components/Shop2Icon.d.ts +6 -0
  1953. package/dist/ui/src/icons/components/ShopIcon.d.ts +6 -0
  1954. package/dist/ui/src/icons/components/ShopTwoIcon.d.ts +6 -0
  1955. package/dist/ui/src/icons/components/ShopifyIcon.d.ts +6 -0
  1956. package/dist/ui/src/icons/components/ShoppingBagIcon.d.ts +6 -0
  1957. package/dist/ui/src/icons/components/ShoppingBasketIcon.d.ts +6 -0
  1958. package/dist/ui/src/icons/components/ShoppingCartCheckoutIcon.d.ts +6 -0
  1959. package/dist/ui/src/icons/components/ShoppingCartIcon.d.ts +6 -0
  1960. package/dist/ui/src/icons/components/ShortTextIcon.d.ts +6 -0
  1961. package/dist/ui/src/icons/components/ShortcutIcon.d.ts +6 -0
  1962. package/dist/ui/src/icons/components/ShowChartIcon.d.ts +6 -0
  1963. package/dist/ui/src/icons/components/ShowerIcon.d.ts +6 -0
  1964. package/dist/ui/src/icons/components/ShuffleIcon.d.ts +6 -0
  1965. package/dist/ui/src/icons/components/ShuffleOnIcon.d.ts +6 -0
  1966. package/dist/ui/src/icons/components/ShutterSpeedIcon.d.ts +6 -0
  1967. package/dist/ui/src/icons/components/SickIcon.d.ts +6 -0
  1968. package/dist/ui/src/icons/components/SignLanguageIcon.d.ts +6 -0
  1969. package/dist/ui/src/icons/components/SignalCellular0BarIcon.d.ts +6 -0
  1970. package/dist/ui/src/icons/components/SignalCellular4BarIcon.d.ts +6 -0
  1971. package/dist/ui/src/icons/components/SignalCellularAlt1BarIcon.d.ts +6 -0
  1972. package/dist/ui/src/icons/components/SignalCellularAlt2BarIcon.d.ts +6 -0
  1973. package/dist/ui/src/icons/components/SignalCellularAltIcon.d.ts +6 -0
  1974. package/dist/ui/src/icons/components/SignalCellularConnectedNoInternet0BarIcon.d.ts +6 -0
  1975. package/dist/ui/src/icons/components/SignalCellularConnectedNoInternet4BarIcon.d.ts +6 -0
  1976. package/dist/ui/src/icons/components/SignalCellularNoSimIcon.d.ts +6 -0
  1977. package/dist/ui/src/icons/components/SignalCellularNodataIcon.d.ts +6 -0
  1978. package/dist/ui/src/icons/components/SignalCellularNullIcon.d.ts +6 -0
  1979. package/dist/ui/src/icons/components/SignalCellularOffIcon.d.ts +6 -0
  1980. package/dist/ui/src/icons/components/SignalWifi0BarIcon.d.ts +6 -0
  1981. package/dist/ui/src/icons/components/SignalWifi4BarIcon.d.ts +6 -0
  1982. package/dist/ui/src/icons/components/SignalWifi4BarLockIcon.d.ts +6 -0
  1983. package/dist/ui/src/icons/components/SignalWifiBadIcon.d.ts +6 -0
  1984. package/dist/ui/src/icons/components/SignalWifiConnectedNoInternet4Icon.d.ts +6 -0
  1985. package/dist/ui/src/icons/components/SignalWifiOffIcon.d.ts +6 -0
  1986. package/dist/ui/src/icons/components/SignalWifiStatusbar4BarIcon.d.ts +6 -0
  1987. package/dist/ui/src/icons/components/SignalWifiStatusbarConnectedNoInternet4Icon.d.ts +6 -0
  1988. package/dist/ui/src/icons/components/SignalWifiStatusbarNullIcon.d.ts +6 -0
  1989. package/dist/ui/src/icons/components/SignpostIcon.d.ts +6 -0
  1990. package/dist/ui/src/icons/components/SimCardAlertIcon.d.ts +6 -0
  1991. package/dist/ui/src/icons/components/SimCardDownloadIcon.d.ts +6 -0
  1992. package/dist/ui/src/icons/components/SimCardIcon.d.ts +6 -0
  1993. package/dist/ui/src/icons/components/SingleBedIcon.d.ts +6 -0
  1994. package/dist/ui/src/icons/components/SipIcon.d.ts +6 -0
  1995. package/dist/ui/src/icons/components/SkateboardingIcon.d.ts +6 -0
  1996. package/dist/ui/src/icons/components/SkipNextIcon.d.ts +6 -0
  1997. package/dist/ui/src/icons/components/SkipPreviousIcon.d.ts +6 -0
  1998. package/dist/ui/src/icons/components/SleddingIcon.d.ts +6 -0
  1999. package/dist/ui/src/icons/components/SlideshowIcon.d.ts +6 -0
  2000. package/dist/ui/src/icons/components/SlowMotionVideoIcon.d.ts +6 -0
  2001. package/dist/ui/src/icons/components/SmartButtonIcon.d.ts +6 -0
  2002. package/dist/ui/src/icons/components/SmartDisplayIcon.d.ts +6 -0
  2003. package/dist/ui/src/icons/components/SmartScreenIcon.d.ts +6 -0
  2004. package/dist/ui/src/icons/components/SmartToyIcon.d.ts +6 -0
  2005. package/dist/ui/src/icons/components/SmartphoneIcon.d.ts +6 -0
  2006. package/dist/ui/src/icons/components/SmokeFreeIcon.d.ts +6 -0
  2007. package/dist/ui/src/icons/components/SmokingRoomsIcon.d.ts +6 -0
  2008. package/dist/ui/src/icons/components/SmsFailedIcon.d.ts +6 -0
  2009. package/dist/ui/src/icons/components/SmsIcon.d.ts +6 -0
  2010. package/dist/ui/src/icons/components/SnapchatIcon.d.ts +6 -0
  2011. package/dist/ui/src/icons/components/SnippetFolderIcon.d.ts +6 -0
  2012. package/dist/ui/src/icons/components/SnoozeIcon.d.ts +6 -0
  2013. package/dist/ui/src/icons/components/SnowboardingIcon.d.ts +6 -0
  2014. package/dist/ui/src/icons/components/SnowmobileIcon.d.ts +6 -0
  2015. package/dist/ui/src/icons/components/SnowshoeingIcon.d.ts +6 -0
  2016. package/dist/ui/src/icons/components/SoapIcon.d.ts +6 -0
  2017. package/dist/ui/src/icons/components/SocialDistanceIcon.d.ts +6 -0
  2018. package/dist/ui/src/icons/components/SolarPowerIcon.d.ts +6 -0
  2019. package/dist/ui/src/icons/components/SortByAlphaIcon.d.ts +6 -0
  2020. package/dist/ui/src/icons/components/SortIcon.d.ts +6 -0
  2021. package/dist/ui/src/icons/components/SosIcon.d.ts +6 -0
  2022. package/dist/ui/src/icons/components/SoupKitchenIcon.d.ts +6 -0
  2023. package/dist/ui/src/icons/components/SourceIcon.d.ts +6 -0
  2024. package/dist/ui/src/icons/components/SouthAmericaIcon.d.ts +6 -0
  2025. package/dist/ui/src/icons/components/SouthEastIcon.d.ts +6 -0
  2026. package/dist/ui/src/icons/components/SouthIcon.d.ts +6 -0
  2027. package/dist/ui/src/icons/components/SouthWestIcon.d.ts +6 -0
  2028. package/dist/ui/src/icons/components/SpaIcon.d.ts +6 -0
  2029. package/dist/ui/src/icons/components/SpaceBarIcon.d.ts +6 -0
  2030. package/dist/ui/src/icons/components/SpaceDashboardIcon.d.ts +6 -0
  2031. package/dist/ui/src/icons/components/SpatialAudioIcon.d.ts +6 -0
  2032. package/dist/ui/src/icons/components/SpatialAudioOffIcon.d.ts +6 -0
  2033. package/dist/ui/src/icons/components/SpatialTrackingIcon.d.ts +6 -0
  2034. package/dist/ui/src/icons/components/SpeakerGroupIcon.d.ts +6 -0
  2035. package/dist/ui/src/icons/components/SpeakerIcon.d.ts +6 -0
  2036. package/dist/ui/src/icons/components/SpeakerNotesIcon.d.ts +6 -0
  2037. package/dist/ui/src/icons/components/SpeakerNotesOffIcon.d.ts +6 -0
  2038. package/dist/ui/src/icons/components/SpeakerPhoneIcon.d.ts +6 -0
  2039. package/dist/ui/src/icons/components/SpeedIcon.d.ts +6 -0
  2040. package/dist/ui/src/icons/components/SpellcheckIcon.d.ts +6 -0
  2041. package/dist/ui/src/icons/components/SplitscreenIcon.d.ts +6 -0
  2042. package/dist/ui/src/icons/components/SpokeIcon.d.ts +6 -0
  2043. package/dist/ui/src/icons/components/SportsBarIcon.d.ts +6 -0
  2044. package/dist/ui/src/icons/components/SportsBaseballIcon.d.ts +6 -0
  2045. package/dist/ui/src/icons/components/SportsBasketballIcon.d.ts +6 -0
  2046. package/dist/ui/src/icons/components/SportsCricketIcon.d.ts +6 -0
  2047. package/dist/ui/src/icons/components/SportsEsportsIcon.d.ts +6 -0
  2048. package/dist/ui/src/icons/components/SportsFootballIcon.d.ts +6 -0
  2049. package/dist/ui/src/icons/components/SportsGolfIcon.d.ts +6 -0
  2050. package/dist/ui/src/icons/components/SportsGymnasticsIcon.d.ts +6 -0
  2051. package/dist/ui/src/icons/components/SportsHandballIcon.d.ts +6 -0
  2052. package/dist/ui/src/icons/components/SportsHockeyIcon.d.ts +6 -0
  2053. package/dist/ui/src/icons/components/SportsIcon.d.ts +6 -0
  2054. package/dist/ui/src/icons/components/SportsKabaddiIcon.d.ts +6 -0
  2055. package/dist/ui/src/icons/components/SportsMartialArtsIcon.d.ts +6 -0
  2056. package/dist/ui/src/icons/components/SportsMmaIcon.d.ts +6 -0
  2057. package/dist/ui/src/icons/components/SportsMotorsportsIcon.d.ts +6 -0
  2058. package/dist/ui/src/icons/components/SportsRugbyIcon.d.ts +6 -0
  2059. package/dist/ui/src/icons/components/SportsScoreIcon.d.ts +6 -0
  2060. package/dist/ui/src/icons/components/SportsSoccerIcon.d.ts +6 -0
  2061. package/dist/ui/src/icons/components/SportsTennisIcon.d.ts +6 -0
  2062. package/dist/ui/src/icons/components/SportsVolleyballIcon.d.ts +6 -0
  2063. package/dist/ui/src/icons/components/SquareFootIcon.d.ts +6 -0
  2064. package/dist/ui/src/icons/components/SquareIcon.d.ts +6 -0
  2065. package/dist/ui/src/icons/components/SsidChartIcon.d.ts +6 -0
  2066. package/dist/ui/src/icons/components/StackedBarChartIcon.d.ts +6 -0
  2067. package/dist/ui/src/icons/components/StackedLineChartIcon.d.ts +6 -0
  2068. package/dist/ui/src/icons/components/StadiumIcon.d.ts +6 -0
  2069. package/dist/ui/src/icons/components/StairsIcon.d.ts +6 -0
  2070. package/dist/ui/src/icons/components/StarBorderIcon.d.ts +6 -0
  2071. package/dist/ui/src/icons/components/StarBorderPurple500Icon.d.ts +6 -0
  2072. package/dist/ui/src/icons/components/StarHalfIcon.d.ts +6 -0
  2073. package/dist/ui/src/icons/components/StarIcon.d.ts +6 -0
  2074. package/dist/ui/src/icons/components/StarOutlineIcon.d.ts +6 -0
  2075. package/dist/ui/src/icons/components/StarPurple500Icon.d.ts +6 -0
  2076. package/dist/ui/src/icons/components/StarRateIcon.d.ts +6 -0
  2077. package/dist/ui/src/icons/components/StarsIcon.d.ts +6 -0
  2078. package/dist/ui/src/icons/components/StartIcon.d.ts +6 -0
  2079. package/dist/ui/src/icons/components/StayCurrentLandscapeIcon.d.ts +6 -0
  2080. package/dist/ui/src/icons/components/StayCurrentPortraitIcon.d.ts +6 -0
  2081. package/dist/ui/src/icons/components/StayPrimaryLandscapeIcon.d.ts +6 -0
  2082. package/dist/ui/src/icons/components/StayPrimaryPortraitIcon.d.ts +6 -0
  2083. package/dist/ui/src/icons/components/StickyNote2Icon.d.ts +6 -0
  2084. package/dist/ui/src/icons/components/StopCircleIcon.d.ts +6 -0
  2085. package/dist/ui/src/icons/components/StopIcon.d.ts +6 -0
  2086. package/dist/ui/src/icons/components/StopScreenShareIcon.d.ts +6 -0
  2087. package/dist/ui/src/icons/components/StorageIcon.d.ts +6 -0
  2088. package/dist/ui/src/icons/components/StoreIcon.d.ts +6 -0
  2089. package/dist/ui/src/icons/components/StoreMallDirectoryIcon.d.ts +6 -0
  2090. package/dist/ui/src/icons/components/StorefrontIcon.d.ts +6 -0
  2091. package/dist/ui/src/icons/components/StormIcon.d.ts +6 -0
  2092. package/dist/ui/src/icons/components/StraightIcon.d.ts +6 -0
  2093. package/dist/ui/src/icons/components/StraightenIcon.d.ts +6 -0
  2094. package/dist/ui/src/icons/components/StreamIcon.d.ts +6 -0
  2095. package/dist/ui/src/icons/components/StreetviewIcon.d.ts +6 -0
  2096. package/dist/ui/src/icons/components/StrikethroughSIcon.d.ts +6 -0
  2097. package/dist/ui/src/icons/components/StrollerIcon.d.ts +6 -0
  2098. package/dist/ui/src/icons/components/StyleIcon.d.ts +6 -0
  2099. package/dist/ui/src/icons/components/SubdirectoryArrowLeftIcon.d.ts +6 -0
  2100. package/dist/ui/src/icons/components/SubdirectoryArrowRightIcon.d.ts +6 -0
  2101. package/dist/ui/src/icons/components/SubjectIcon.d.ts +6 -0
  2102. package/dist/ui/src/icons/components/SubscriptIcon.d.ts +6 -0
  2103. package/dist/ui/src/icons/components/SubscriptionsIcon.d.ts +6 -0
  2104. package/dist/ui/src/icons/components/SubtitlesIcon.d.ts +6 -0
  2105. package/dist/ui/src/icons/components/SubtitlesOffIcon.d.ts +6 -0
  2106. package/dist/ui/src/icons/components/SubwayIcon.d.ts +6 -0
  2107. package/dist/ui/src/icons/components/SummarizeIcon.d.ts +6 -0
  2108. package/dist/ui/src/icons/components/SuperscriptIcon.d.ts +6 -0
  2109. package/dist/ui/src/icons/components/SupervisedUserCircleIcon.d.ts +6 -0
  2110. package/dist/ui/src/icons/components/SupervisorAccountIcon.d.ts +6 -0
  2111. package/dist/ui/src/icons/components/SupportAgentIcon.d.ts +6 -0
  2112. package/dist/ui/src/icons/components/SupportIcon.d.ts +6 -0
  2113. package/dist/ui/src/icons/components/SurfingIcon.d.ts +6 -0
  2114. package/dist/ui/src/icons/components/SurroundSoundIcon.d.ts +6 -0
  2115. package/dist/ui/src/icons/components/SwapCallsIcon.d.ts +6 -0
  2116. package/dist/ui/src/icons/components/SwapHorizIcon.d.ts +6 -0
  2117. package/dist/ui/src/icons/components/SwapHorizontalCircleIcon.d.ts +6 -0
  2118. package/dist/ui/src/icons/components/SwapVertCircleIcon.d.ts +6 -0
  2119. package/dist/ui/src/icons/components/SwapVertIcon.d.ts +6 -0
  2120. package/dist/ui/src/icons/components/SwapVerticalCircleIcon.d.ts +6 -0
  2121. package/dist/ui/src/icons/components/SwipeDownAltIcon.d.ts +6 -0
  2122. package/dist/ui/src/icons/components/SwipeDownIcon.d.ts +6 -0
  2123. package/dist/ui/src/icons/components/SwipeIcon.d.ts +6 -0
  2124. package/dist/ui/src/icons/components/SwipeLeftAltIcon.d.ts +6 -0
  2125. package/dist/ui/src/icons/components/SwipeLeftIcon.d.ts +6 -0
  2126. package/dist/ui/src/icons/components/SwipeRightAltIcon.d.ts +6 -0
  2127. package/dist/ui/src/icons/components/SwipeRightIcon.d.ts +6 -0
  2128. package/dist/ui/src/icons/components/SwipeUpAltIcon.d.ts +6 -0
  2129. package/dist/ui/src/icons/components/SwipeUpIcon.d.ts +6 -0
  2130. package/dist/ui/src/icons/components/SwipeVerticalIcon.d.ts +6 -0
  2131. package/dist/ui/src/icons/components/SwitchAccessShortcutAddIcon.d.ts +6 -0
  2132. package/dist/ui/src/icons/components/SwitchAccessShortcutIcon.d.ts +6 -0
  2133. package/dist/ui/src/icons/components/SwitchAccountIcon.d.ts +6 -0
  2134. package/dist/ui/src/icons/components/SwitchCameraIcon.d.ts +6 -0
  2135. package/dist/ui/src/icons/components/SwitchLeftIcon.d.ts +6 -0
  2136. package/dist/ui/src/icons/components/SwitchRightIcon.d.ts +6 -0
  2137. package/dist/ui/src/icons/components/SwitchVideoIcon.d.ts +6 -0
  2138. package/dist/ui/src/icons/components/SynagogueIcon.d.ts +6 -0
  2139. package/dist/ui/src/icons/components/SyncAltIcon.d.ts +6 -0
  2140. package/dist/ui/src/icons/components/SyncDisabledIcon.d.ts +6 -0
  2141. package/dist/ui/src/icons/components/SyncIcon.d.ts +6 -0
  2142. package/dist/ui/src/icons/components/SyncLockIcon.d.ts +6 -0
  2143. package/dist/ui/src/icons/components/SyncProblemIcon.d.ts +6 -0
  2144. package/dist/ui/src/icons/components/SystemSecurityUpdateGoodIcon.d.ts +6 -0
  2145. package/dist/ui/src/icons/components/SystemSecurityUpdateIcon.d.ts +6 -0
  2146. package/dist/ui/src/icons/components/SystemSecurityUpdateWarningIcon.d.ts +6 -0
  2147. package/dist/ui/src/icons/components/SystemUpdateAltIcon.d.ts +6 -0
  2148. package/dist/ui/src/icons/components/SystemUpdateIcon.d.ts +6 -0
  2149. package/dist/ui/src/icons/components/SystemUpdateTvIcon.d.ts +6 -0
  2150. package/dist/ui/src/icons/components/TabIcon.d.ts +6 -0
  2151. package/dist/ui/src/icons/components/TabUnselectedIcon.d.ts +6 -0
  2152. package/dist/ui/src/icons/components/TableBarIcon.d.ts +6 -0
  2153. package/dist/ui/src/icons/components/TableChartIcon.d.ts +6 -0
  2154. package/dist/ui/src/icons/components/TableRestaurantIcon.d.ts +6 -0
  2155. package/dist/ui/src/icons/components/TableRowsIcon.d.ts +6 -0
  2156. package/dist/ui/src/icons/components/TableViewIcon.d.ts +6 -0
  2157. package/dist/ui/src/icons/components/TabletAndroidIcon.d.ts +6 -0
  2158. package/dist/ui/src/icons/components/TabletIcon.d.ts +6 -0
  2159. package/dist/ui/src/icons/components/TabletMacIcon.d.ts +6 -0
  2160. package/dist/ui/src/icons/components/TagFacesIcon.d.ts +6 -0
  2161. package/dist/ui/src/icons/components/TagIcon.d.ts +6 -0
  2162. package/dist/ui/src/icons/components/TakeoutDiningIcon.d.ts +6 -0
  2163. package/dist/ui/src/icons/components/TapAndPlayIcon.d.ts +6 -0
  2164. package/dist/ui/src/icons/components/TapasIcon.d.ts +6 -0
  2165. package/dist/ui/src/icons/components/TaskAltIcon.d.ts +6 -0
  2166. package/dist/ui/src/icons/components/TaskIcon.d.ts +6 -0
  2167. package/dist/ui/src/icons/components/TaxiAlertIcon.d.ts +6 -0
  2168. package/dist/ui/src/icons/components/TelegramIcon.d.ts +6 -0
  2169. package/dist/ui/src/icons/components/TempleBuddhistIcon.d.ts +6 -0
  2170. package/dist/ui/src/icons/components/TempleHinduIcon.d.ts +6 -0
  2171. package/dist/ui/src/icons/components/TerminalIcon.d.ts +6 -0
  2172. package/dist/ui/src/icons/components/TerrainIcon.d.ts +6 -0
  2173. package/dist/ui/src/icons/components/TextDecreaseIcon.d.ts +6 -0
  2174. package/dist/ui/src/icons/components/TextFieldsIcon.d.ts +6 -0
  2175. package/dist/ui/src/icons/components/TextFormatIcon.d.ts +6 -0
  2176. package/dist/ui/src/icons/components/TextIncreaseIcon.d.ts +6 -0
  2177. package/dist/ui/src/icons/components/TextRotateUpIcon.d.ts +6 -0
  2178. package/dist/ui/src/icons/components/TextRotateVerticalIcon.d.ts +6 -0
  2179. package/dist/ui/src/icons/components/TextRotationAngledownIcon.d.ts +6 -0
  2180. package/dist/ui/src/icons/components/TextRotationAngleupIcon.d.ts +6 -0
  2181. package/dist/ui/src/icons/components/TextRotationDownIcon.d.ts +6 -0
  2182. package/dist/ui/src/icons/components/TextRotationNoneIcon.d.ts +6 -0
  2183. package/dist/ui/src/icons/components/TextSnippetIcon.d.ts +6 -0
  2184. package/dist/ui/src/icons/components/TextsmsIcon.d.ts +6 -0
  2185. package/dist/ui/src/icons/components/TextureIcon.d.ts +6 -0
  2186. package/dist/ui/src/icons/components/TheaterComedyIcon.d.ts +6 -0
  2187. package/dist/ui/src/icons/components/TheatersIcon.d.ts +6 -0
  2188. package/dist/ui/src/icons/components/ThermostatAutoIcon.d.ts +6 -0
  2189. package/dist/ui/src/icons/components/ThermostatIcon.d.ts +6 -0
  2190. package/dist/ui/src/icons/components/ThumbDownAltIcon.d.ts +6 -0
  2191. package/dist/ui/src/icons/components/ThumbDownIcon.d.ts +6 -0
  2192. package/dist/ui/src/icons/components/ThumbDownOffAltIcon.d.ts +6 -0
  2193. package/dist/ui/src/icons/components/ThumbUpAltIcon.d.ts +6 -0
  2194. package/dist/ui/src/icons/components/ThumbUpIcon.d.ts +6 -0
  2195. package/dist/ui/src/icons/components/ThumbUpOffAltIcon.d.ts +6 -0
  2196. package/dist/ui/src/icons/components/ThumbsUpDownIcon.d.ts +6 -0
  2197. package/dist/ui/src/icons/components/ThunderstormIcon.d.ts +6 -0
  2198. package/dist/ui/src/icons/components/TiktokIcon.d.ts +6 -0
  2199. package/dist/ui/src/icons/components/TimeToLeaveIcon.d.ts +6 -0
  2200. package/dist/ui/src/icons/components/TimelapseIcon.d.ts +6 -0
  2201. package/dist/ui/src/icons/components/TimelineIcon.d.ts +6 -0
  2202. package/dist/ui/src/icons/components/Timer10Icon.d.ts +6 -0
  2203. package/dist/ui/src/icons/components/Timer10SelectIcon.d.ts +6 -0
  2204. package/dist/ui/src/icons/components/Timer3Icon.d.ts +6 -0
  2205. package/dist/ui/src/icons/components/Timer3SelectIcon.d.ts +6 -0
  2206. package/dist/ui/src/icons/components/TimerIcon.d.ts +6 -0
  2207. package/dist/ui/src/icons/components/TimerOffIcon.d.ts +6 -0
  2208. package/dist/ui/src/icons/components/TipsAndUpdatesIcon.d.ts +6 -0
  2209. package/dist/ui/src/icons/components/TireRepairIcon.d.ts +6 -0
  2210. package/dist/ui/src/icons/components/TitleIcon.d.ts +6 -0
  2211. package/dist/ui/src/icons/components/TocIcon.d.ts +6 -0
  2212. package/dist/ui/src/icons/components/TodayIcon.d.ts +6 -0
  2213. package/dist/ui/src/icons/components/ToggleOffIcon.d.ts +6 -0
  2214. package/dist/ui/src/icons/components/ToggleOnIcon.d.ts +6 -0
  2215. package/dist/ui/src/icons/components/TokenIcon.d.ts +6 -0
  2216. package/dist/ui/src/icons/components/TollIcon.d.ts +6 -0
  2217. package/dist/ui/src/icons/components/TonalityIcon.d.ts +6 -0
  2218. package/dist/ui/src/icons/components/TopicIcon.d.ts +6 -0
  2219. package/dist/ui/src/icons/components/TornadoIcon.d.ts +6 -0
  2220. package/dist/ui/src/icons/components/TouchAppIcon.d.ts +6 -0
  2221. package/dist/ui/src/icons/components/TourIcon.d.ts +6 -0
  2222. package/dist/ui/src/icons/components/ToysIcon.d.ts +6 -0
  2223. package/dist/ui/src/icons/components/TrackChangesIcon.d.ts +6 -0
  2224. package/dist/ui/src/icons/components/TrafficIcon.d.ts +6 -0
  2225. package/dist/ui/src/icons/components/TrainIcon.d.ts +6 -0
  2226. package/dist/ui/src/icons/components/TramIcon.d.ts +6 -0
  2227. package/dist/ui/src/icons/components/TranscribeIcon.d.ts +6 -0
  2228. package/dist/ui/src/icons/components/TransferWithinAStationIcon.d.ts +6 -0
  2229. package/dist/ui/src/icons/components/TransformIcon.d.ts +6 -0
  2230. package/dist/ui/src/icons/components/TransgenderIcon.d.ts +6 -0
  2231. package/dist/ui/src/icons/components/TransitEnterexitIcon.d.ts +6 -0
  2232. package/dist/ui/src/icons/components/TranslateIcon.d.ts +6 -0
  2233. package/dist/ui/src/icons/components/TravelExploreIcon.d.ts +6 -0
  2234. package/dist/ui/src/icons/components/TrendingDownIcon.d.ts +6 -0
  2235. package/dist/ui/src/icons/components/TrendingFlatIcon.d.ts +6 -0
  2236. package/dist/ui/src/icons/components/TrendingNeutralIcon.d.ts +6 -0
  2237. package/dist/ui/src/icons/components/TrendingUpIcon.d.ts +6 -0
  2238. package/dist/ui/src/icons/components/TripOriginIcon.d.ts +6 -0
  2239. package/dist/ui/src/icons/components/TroubleshootIcon.d.ts +6 -0
  2240. package/dist/ui/src/icons/components/TryIcon.d.ts +6 -0
  2241. package/dist/ui/src/icons/components/TsunamiIcon.d.ts +6 -0
  2242. package/dist/ui/src/icons/components/TtyIcon.d.ts +6 -0
  2243. package/dist/ui/src/icons/components/TuneIcon.d.ts +6 -0
  2244. package/dist/ui/src/icons/components/TungstenIcon.d.ts +6 -0
  2245. package/dist/ui/src/icons/components/TurnLeftIcon.d.ts +6 -0
  2246. package/dist/ui/src/icons/components/TurnRightIcon.d.ts +6 -0
  2247. package/dist/ui/src/icons/components/TurnSharpLeftIcon.d.ts +6 -0
  2248. package/dist/ui/src/icons/components/TurnSharpRightIcon.d.ts +6 -0
  2249. package/dist/ui/src/icons/components/TurnSlightLeftIcon.d.ts +6 -0
  2250. package/dist/ui/src/icons/components/TurnSlightRightIcon.d.ts +6 -0
  2251. package/dist/ui/src/icons/components/TurnedInIcon.d.ts +6 -0
  2252. package/dist/ui/src/icons/components/TurnedInNotIcon.d.ts +6 -0
  2253. package/dist/ui/src/icons/components/TvIcon.d.ts +6 -0
  2254. package/dist/ui/src/icons/components/TvOffIcon.d.ts +6 -0
  2255. package/dist/ui/src/icons/components/TwoWheelerIcon.d.ts +6 -0
  2256. package/dist/ui/src/icons/components/TypeSpecimenIcon.d.ts +6 -0
  2257. package/dist/ui/src/icons/components/UTurnLeftIcon.d.ts +6 -0
  2258. package/dist/ui/src/icons/components/UTurnRightIcon.d.ts +6 -0
  2259. package/dist/ui/src/icons/components/UmbrellaIcon.d.ts +6 -0
  2260. package/dist/ui/src/icons/components/UnarchiveIcon.d.ts +6 -0
  2261. package/dist/ui/src/icons/components/UndoIcon.d.ts +6 -0
  2262. package/dist/ui/src/icons/components/UnfoldLessDoubleIcon.d.ts +6 -0
  2263. package/dist/ui/src/icons/components/UnfoldLessIcon.d.ts +6 -0
  2264. package/dist/ui/src/icons/components/UnfoldMoreDoubleIcon.d.ts +6 -0
  2265. package/dist/ui/src/icons/components/UnfoldMoreIcon.d.ts +6 -0
  2266. package/dist/ui/src/icons/components/UnpublishedIcon.d.ts +6 -0
  2267. package/dist/ui/src/icons/components/UnsubscribeIcon.d.ts +6 -0
  2268. package/dist/ui/src/icons/components/UpcomingIcon.d.ts +6 -0
  2269. package/dist/ui/src/icons/components/UpdateDisabledIcon.d.ts +6 -0
  2270. package/dist/ui/src/icons/components/UpdateIcon.d.ts +6 -0
  2271. package/dist/ui/src/icons/components/UpgradeIcon.d.ts +6 -0
  2272. package/dist/ui/src/icons/components/UploadFileIcon.d.ts +6 -0
  2273. package/dist/ui/src/icons/components/UploadIcon.d.ts +6 -0
  2274. package/dist/ui/src/icons/components/UsbIcon.d.ts +6 -0
  2275. package/dist/ui/src/icons/components/UsbOffIcon.d.ts +6 -0
  2276. package/dist/ui/src/icons/components/VaccinesIcon.d.ts +6 -0
  2277. package/dist/ui/src/icons/components/VapeFreeIcon.d.ts +6 -0
  2278. package/dist/ui/src/icons/components/VapingRoomsIcon.d.ts +6 -0
  2279. package/dist/ui/src/icons/components/VerifiedIcon.d.ts +6 -0
  2280. package/dist/ui/src/icons/components/VerifiedUserIcon.d.ts +6 -0
  2281. package/dist/ui/src/icons/components/VerticalAlignBottomIcon.d.ts +6 -0
  2282. package/dist/ui/src/icons/components/VerticalAlignCenterIcon.d.ts +6 -0
  2283. package/dist/ui/src/icons/components/VerticalAlignTopIcon.d.ts +6 -0
  2284. package/dist/ui/src/icons/components/VerticalDistributeIcon.d.ts +6 -0
  2285. package/dist/ui/src/icons/components/VerticalShadesClosedIcon.d.ts +6 -0
  2286. package/dist/ui/src/icons/components/VerticalShadesIcon.d.ts +6 -0
  2287. package/dist/ui/src/icons/components/VerticalSplitIcon.d.ts +6 -0
  2288. package/dist/ui/src/icons/components/VibrationIcon.d.ts +6 -0
  2289. package/dist/ui/src/icons/components/VideoCallIcon.d.ts +6 -0
  2290. package/dist/ui/src/icons/components/VideoCameraBackIcon.d.ts +6 -0
  2291. package/dist/ui/src/icons/components/VideoCameraFrontIcon.d.ts +6 -0
  2292. package/dist/ui/src/icons/components/VideoChatIcon.d.ts +6 -0
  2293. package/dist/ui/src/icons/components/VideoCollectionIcon.d.ts +6 -0
  2294. package/dist/ui/src/icons/components/VideoFileIcon.d.ts +6 -0
  2295. package/dist/ui/src/icons/components/VideoLabelIcon.d.ts +6 -0
  2296. package/dist/ui/src/icons/components/VideoLibraryIcon.d.ts +6 -0
  2297. package/dist/ui/src/icons/components/VideoSettingsIcon.d.ts +6 -0
  2298. package/dist/ui/src/icons/components/VideoStableIcon.d.ts +6 -0
  2299. package/dist/ui/src/icons/components/VideocamIcon.d.ts +6 -0
  2300. package/dist/ui/src/icons/components/VideocamOffIcon.d.ts +6 -0
  2301. package/dist/ui/src/icons/components/VideogameAssetIcon.d.ts +6 -0
  2302. package/dist/ui/src/icons/components/VideogameAssetOffIcon.d.ts +6 -0
  2303. package/dist/ui/src/icons/components/ViewAgendaIcon.d.ts +6 -0
  2304. package/dist/ui/src/icons/components/ViewArrayIcon.d.ts +6 -0
  2305. package/dist/ui/src/icons/components/ViewCarouselIcon.d.ts +6 -0
  2306. package/dist/ui/src/icons/components/ViewColumnIcon.d.ts +6 -0
  2307. package/dist/ui/src/icons/components/ViewComfortableIcon.d.ts +6 -0
  2308. package/dist/ui/src/icons/components/ViewComfyAltIcon.d.ts +6 -0
  2309. package/dist/ui/src/icons/components/ViewComfyIcon.d.ts +6 -0
  2310. package/dist/ui/src/icons/components/ViewCompactAltIcon.d.ts +6 -0
  2311. package/dist/ui/src/icons/components/ViewCompactIcon.d.ts +6 -0
  2312. package/dist/ui/src/icons/components/ViewCozyIcon.d.ts +6 -0
  2313. package/dist/ui/src/icons/components/ViewDayIcon.d.ts +6 -0
  2314. package/dist/ui/src/icons/components/ViewHeadlineIcon.d.ts +6 -0
  2315. package/dist/ui/src/icons/components/ViewInArIcon.d.ts +6 -0
  2316. package/dist/ui/src/icons/components/ViewKanbanIcon.d.ts +6 -0
  2317. package/dist/ui/src/icons/components/ViewListIcon.d.ts +6 -0
  2318. package/dist/ui/src/icons/components/ViewModuleIcon.d.ts +6 -0
  2319. package/dist/ui/src/icons/components/ViewQuiltIcon.d.ts +6 -0
  2320. package/dist/ui/src/icons/components/ViewSidebarIcon.d.ts +6 -0
  2321. package/dist/ui/src/icons/components/ViewStreamIcon.d.ts +6 -0
  2322. package/dist/ui/src/icons/components/ViewTimelineIcon.d.ts +6 -0
  2323. package/dist/ui/src/icons/components/ViewWeekIcon.d.ts +6 -0
  2324. package/dist/ui/src/icons/components/VignetteIcon.d.ts +6 -0
  2325. package/dist/ui/src/icons/components/VillaIcon.d.ts +6 -0
  2326. package/dist/ui/src/icons/components/VisibilityIcon.d.ts +6 -0
  2327. package/dist/ui/src/icons/components/VisibilityOffIcon.d.ts +6 -0
  2328. package/dist/ui/src/icons/components/VoiceChatIcon.d.ts +6 -0
  2329. package/dist/ui/src/icons/components/VoiceOverOffIcon.d.ts +6 -0
  2330. package/dist/ui/src/icons/components/VoicemailIcon.d.ts +6 -0
  2331. package/dist/ui/src/icons/components/VolcanoIcon.d.ts +6 -0
  2332. package/dist/ui/src/icons/components/VolumeDownIcon.d.ts +6 -0
  2333. package/dist/ui/src/icons/components/VolumeMuteIcon.d.ts +6 -0
  2334. package/dist/ui/src/icons/components/VolumeOffIcon.d.ts +6 -0
  2335. package/dist/ui/src/icons/components/VolumeUpIcon.d.ts +6 -0
  2336. package/dist/ui/src/icons/components/VolunteerActivismIcon.d.ts +6 -0
  2337. package/dist/ui/src/icons/components/VpnKeyIcon.d.ts +6 -0
  2338. package/dist/ui/src/icons/components/VpnKeyOffIcon.d.ts +6 -0
  2339. package/dist/ui/src/icons/components/VpnLockIcon.d.ts +6 -0
  2340. package/dist/ui/src/icons/components/VrpanoIcon.d.ts +6 -0
  2341. package/dist/ui/src/icons/components/WalletGiftcardIcon.d.ts +6 -0
  2342. package/dist/ui/src/icons/components/WalletIcon.d.ts +6 -0
  2343. package/dist/ui/src/icons/components/WalletMembershipIcon.d.ts +6 -0
  2344. package/dist/ui/src/icons/components/WalletTravelIcon.d.ts +6 -0
  2345. package/dist/ui/src/icons/components/WallpaperIcon.d.ts +6 -0
  2346. package/dist/ui/src/icons/components/WarehouseIcon.d.ts +6 -0
  2347. package/dist/ui/src/icons/components/WarningAmberIcon.d.ts +6 -0
  2348. package/dist/ui/src/icons/components/WarningIcon.d.ts +6 -0
  2349. package/dist/ui/src/icons/components/WashIcon.d.ts +6 -0
  2350. package/dist/ui/src/icons/components/WatchIcon.d.ts +6 -0
  2351. package/dist/ui/src/icons/components/WatchLaterIcon.d.ts +6 -0
  2352. package/dist/ui/src/icons/components/WatchOffIcon.d.ts +6 -0
  2353. package/dist/ui/src/icons/components/WaterDamageIcon.d.ts +6 -0
  2354. package/dist/ui/src/icons/components/WaterDropIcon.d.ts +6 -0
  2355. package/dist/ui/src/icons/components/WaterIcon.d.ts +6 -0
  2356. package/dist/ui/src/icons/components/WaterfallChartIcon.d.ts +6 -0
  2357. package/dist/ui/src/icons/components/WavesIcon.d.ts +6 -0
  2358. package/dist/ui/src/icons/components/WavingHandIcon.d.ts +6 -0
  2359. package/dist/ui/src/icons/components/WbAutoIcon.d.ts +6 -0
  2360. package/dist/ui/src/icons/components/WbCloudyIcon.d.ts +6 -0
  2361. package/dist/ui/src/icons/components/WbIncandescentIcon.d.ts +6 -0
  2362. package/dist/ui/src/icons/components/WbIridescentIcon.d.ts +6 -0
  2363. package/dist/ui/src/icons/components/WbShadeIcon.d.ts +6 -0
  2364. package/dist/ui/src/icons/components/WbSunnyIcon.d.ts +6 -0
  2365. package/dist/ui/src/icons/components/WbTwilightIcon.d.ts +6 -0
  2366. package/dist/ui/src/icons/components/WcIcon.d.ts +6 -0
  2367. package/dist/ui/src/icons/components/WebAssetIcon.d.ts +6 -0
  2368. package/dist/ui/src/icons/components/WebAssetOffIcon.d.ts +6 -0
  2369. package/dist/ui/src/icons/components/WebIcon.d.ts +6 -0
  2370. package/dist/ui/src/icons/components/WebStoriesIcon.d.ts +6 -0
  2371. package/dist/ui/src/icons/components/WebhookIcon.d.ts +6 -0
  2372. package/dist/ui/src/icons/components/WechatIcon.d.ts +6 -0
  2373. package/dist/ui/src/icons/components/WeekendIcon.d.ts +6 -0
  2374. package/dist/ui/src/icons/components/WestIcon.d.ts +6 -0
  2375. package/dist/ui/src/icons/components/WhatshotIcon.d.ts +6 -0
  2376. package/dist/ui/src/icons/components/WheelchairPickupIcon.d.ts +6 -0
  2377. package/dist/ui/src/icons/components/WhereToVoteIcon.d.ts +6 -0
  2378. package/dist/ui/src/icons/components/WidgetsIcon.d.ts +6 -0
  2379. package/dist/ui/src/icons/components/WidthFullIcon.d.ts +6 -0
  2380. package/dist/ui/src/icons/components/WidthNormalIcon.d.ts +6 -0
  2381. package/dist/ui/src/icons/components/WidthWideIcon.d.ts +6 -0
  2382. package/dist/ui/src/icons/components/Wifi1BarIcon.d.ts +6 -0
  2383. package/dist/ui/src/icons/components/Wifi2BarIcon.d.ts +6 -0
  2384. package/dist/ui/src/icons/components/WifiCalling3Icon.d.ts +6 -0
  2385. package/dist/ui/src/icons/components/WifiCallingIcon.d.ts +6 -0
  2386. package/dist/ui/src/icons/components/WifiChannelIcon.d.ts +6 -0
  2387. package/dist/ui/src/icons/components/WifiFindIcon.d.ts +6 -0
  2388. package/dist/ui/src/icons/components/WifiIcon.d.ts +6 -0
  2389. package/dist/ui/src/icons/components/WifiLockIcon.d.ts +6 -0
  2390. package/dist/ui/src/icons/components/WifiOffIcon.d.ts +6 -0
  2391. package/dist/ui/src/icons/components/WifiPasswordIcon.d.ts +6 -0
  2392. package/dist/ui/src/icons/components/WifiProtectedSetupIcon.d.ts +6 -0
  2393. package/dist/ui/src/icons/components/WifiTetheringErrorIcon.d.ts +6 -0
  2394. package/dist/ui/src/icons/components/WifiTetheringErrorRoundedIcon.d.ts +6 -0
  2395. package/dist/ui/src/icons/components/WifiTetheringIcon.d.ts +6 -0
  2396. package/dist/ui/src/icons/components/WifiTetheringOffIcon.d.ts +6 -0
  2397. package/dist/ui/src/icons/components/WindPowerIcon.d.ts +6 -0
  2398. package/dist/ui/src/icons/components/WindowIcon.d.ts +6 -0
  2399. package/dist/ui/src/icons/components/WineBarIcon.d.ts +6 -0
  2400. package/dist/ui/src/icons/components/Woman2Icon.d.ts +6 -0
  2401. package/dist/ui/src/icons/components/WomanIcon.d.ts +6 -0
  2402. package/dist/ui/src/icons/components/WooCommerceIcon.d.ts +6 -0
  2403. package/dist/ui/src/icons/components/WordpressIcon.d.ts +6 -0
  2404. package/dist/ui/src/icons/components/WorkHistoryIcon.d.ts +6 -0
  2405. package/dist/ui/src/icons/components/WorkIcon.d.ts +6 -0
  2406. package/dist/ui/src/icons/components/WorkOffIcon.d.ts +6 -0
  2407. package/dist/ui/src/icons/components/WorkOutlineIcon.d.ts +6 -0
  2408. package/dist/ui/src/icons/components/WorkspacePremiumIcon.d.ts +6 -0
  2409. package/dist/ui/src/icons/components/WorkspacesIcon.d.ts +6 -0
  2410. package/dist/ui/src/icons/components/WrapTextIcon.d.ts +6 -0
  2411. package/dist/ui/src/icons/components/WrongLocationIcon.d.ts +6 -0
  2412. package/dist/ui/src/icons/components/WysiwygIcon.d.ts +6 -0
  2413. package/dist/ui/src/icons/components/YardIcon.d.ts +6 -0
  2414. package/dist/ui/src/icons/components/YoutubeSearchedForIcon.d.ts +6 -0
  2415. package/dist/ui/src/icons/components/ZoomInIcon.d.ts +6 -0
  2416. package/dist/ui/src/icons/components/ZoomInMapIcon.d.ts +6 -0
  2417. package/dist/ui/src/icons/components/ZoomOutIcon.d.ts +6 -0
  2418. package/dist/ui/src/icons/components/ZoomOutMapIcon.d.ts +6 -0
  2419. package/dist/ui/src/icons/components/_10kIcon.d.ts +6 -0
  2420. package/dist/ui/src/icons/components/_10mpIcon.d.ts +6 -0
  2421. package/dist/ui/src/icons/components/_11mpIcon.d.ts +6 -0
  2422. package/dist/ui/src/icons/components/_123Icon.d.ts +6 -0
  2423. package/dist/ui/src/icons/components/_12mpIcon.d.ts +6 -0
  2424. package/dist/ui/src/icons/components/_13mpIcon.d.ts +6 -0
  2425. package/dist/ui/src/icons/components/_14mpIcon.d.ts +6 -0
  2426. package/dist/ui/src/icons/components/_15mpIcon.d.ts +6 -0
  2427. package/dist/ui/src/icons/components/_16mpIcon.d.ts +6 -0
  2428. package/dist/ui/src/icons/components/_17mpIcon.d.ts +6 -0
  2429. package/dist/ui/src/icons/components/_18UpRatingIcon.d.ts +6 -0
  2430. package/dist/ui/src/icons/components/_18mpIcon.d.ts +6 -0
  2431. package/dist/ui/src/icons/components/_19mpIcon.d.ts +6 -0
  2432. package/dist/ui/src/icons/components/_1kIcon.d.ts +6 -0
  2433. package/dist/ui/src/icons/components/_1kPlusIcon.d.ts +6 -0
  2434. package/dist/ui/src/icons/components/_1xMobiledataIcon.d.ts +6 -0
  2435. package/dist/ui/src/icons/components/_20mpIcon.d.ts +6 -0
  2436. package/dist/ui/src/icons/components/_21mpIcon.d.ts +6 -0
  2437. package/dist/ui/src/icons/components/_22mpIcon.d.ts +6 -0
  2438. package/dist/ui/src/icons/components/_23mpIcon.d.ts +6 -0
  2439. package/dist/ui/src/icons/components/_24mpIcon.d.ts +6 -0
  2440. package/dist/ui/src/icons/components/_2kIcon.d.ts +6 -0
  2441. package/dist/ui/src/icons/components/_2kPlusIcon.d.ts +6 -0
  2442. package/dist/ui/src/icons/components/_2mpIcon.d.ts +6 -0
  2443. package/dist/ui/src/icons/components/_30fpsIcon.d.ts +6 -0
  2444. package/dist/ui/src/icons/components/_30fpsSelectIcon.d.ts +6 -0
  2445. package/dist/ui/src/icons/components/_360Icon.d.ts +6 -0
  2446. package/dist/ui/src/icons/components/_3dRotationIcon.d.ts +6 -0
  2447. package/dist/ui/src/icons/components/_3gMobiledataIcon.d.ts +6 -0
  2448. package/dist/ui/src/icons/components/_3kIcon.d.ts +6 -0
  2449. package/dist/ui/src/icons/components/_3kPlusIcon.d.ts +6 -0
  2450. package/dist/ui/src/icons/components/_3mpIcon.d.ts +6 -0
  2451. package/dist/ui/src/icons/components/_3pIcon.d.ts +6 -0
  2452. package/dist/ui/src/icons/components/_4gMobiledataIcon.d.ts +6 -0
  2453. package/dist/ui/src/icons/components/_4gPlusMobiledataIcon.d.ts +6 -0
  2454. package/dist/ui/src/icons/components/_4kIcon.d.ts +6 -0
  2455. package/dist/ui/src/icons/components/_4kPlusIcon.d.ts +6 -0
  2456. package/dist/ui/src/icons/components/_4mpIcon.d.ts +6 -0
  2457. package/dist/ui/src/icons/components/_5gIcon.d.ts +6 -0
  2458. package/dist/ui/src/icons/components/_5kIcon.d.ts +6 -0
  2459. package/dist/ui/src/icons/components/_5kPlusIcon.d.ts +6 -0
  2460. package/dist/ui/src/icons/components/_5mpIcon.d.ts +6 -0
  2461. package/dist/ui/src/icons/components/_60fpsIcon.d.ts +6 -0
  2462. package/dist/ui/src/icons/components/_60fpsSelectIcon.d.ts +6 -0
  2463. package/dist/ui/src/icons/components/_6FtApartIcon.d.ts +6 -0
  2464. package/dist/ui/src/icons/components/_6kIcon.d.ts +6 -0
  2465. package/dist/ui/src/icons/components/_6kPlusIcon.d.ts +6 -0
  2466. package/dist/ui/src/icons/components/_6mpIcon.d.ts +6 -0
  2467. package/dist/ui/src/icons/components/_7kIcon.d.ts +6 -0
  2468. package/dist/ui/src/icons/components/_7kPlusIcon.d.ts +6 -0
  2469. package/dist/ui/src/icons/components/_7mpIcon.d.ts +6 -0
  2470. package/dist/ui/src/icons/components/_8kIcon.d.ts +6 -0
  2471. package/dist/ui/src/icons/components/_8kPlusIcon.d.ts +6 -0
  2472. package/dist/ui/src/icons/components/_8mpIcon.d.ts +6 -0
  2473. package/dist/ui/src/icons/components/_9kIcon.d.ts +6 -0
  2474. package/dist/ui/src/icons/components/_9kPlusIcon.d.ts +6 -0
  2475. package/dist/ui/src/icons/components/_9mpIcon.d.ts +6 -0
  2476. package/dist/ui/src/icons/cool_icon_keys.d.ts +1 -0
  2477. package/dist/ui/src/icons/icon_keys.d.ts +1 -0
  2478. package/dist/ui/src/icons/index.d.ts +2202 -0
  2479. package/dist/ui/src/index.d.ts +5 -0
  2480. package/dist/ui/src/styles.d.ts +12 -0
  2481. package/dist/ui/src/util/chip_colors.d.ts +4 -0
  2482. package/dist/ui/src/util/cls.d.ts +2 -0
  2483. package/dist/ui/src/util/debounce.d.ts +10 -0
  2484. package/dist/ui/src/util/hash.d.ts +1 -0
  2485. package/dist/ui/src/util/index.d.ts +4 -0
  2486. package/dist/ui/src/util/key_to_icon_component.d.ts +1 -0
  2487. package/package.json +81 -0
  2488. package/src/components/JSEditor/JSEditor.tsx +1036 -0
  2489. package/src/components/JSEditor/JSEditorSidebar.tsx +348 -0
  2490. package/src/components/JSEditor/JSMonacoEditor.tsx +388 -0
  2491. package/src/components/RLSEditor/PolicyEditor.tsx +459 -0
  2492. package/src/components/RLSEditor/RLSEditor.tsx +697 -0
  2493. package/src/components/RLSEditor/index.ts +1 -0
  2494. package/src/components/RebaseStudio.tsx +49 -0
  2495. package/src/components/SQLEditor/ExplainVisualizer.tsx +128 -0
  2496. package/src/components/SQLEditor/MonacoEditor.tsx +203 -0
  2497. package/src/components/SQLEditor/SQLEditor.tsx +1343 -0
  2498. package/src/components/SQLEditor/SQLEditorSidebar.tsx +180 -0
  2499. package/src/components/SQLEditor/SchemaBrowser.tsx +166 -0
  2500. package/src/components/StorageView/StorageView.tsx +1055 -0
  2501. package/src/components/StudioHomePage.tsx +339 -0
  2502. package/src/index.ts +28 -0
  2503. package/src/utils/arrays.ts +3 -0
  2504. package/src/utils/entities.ts +2 -0
  2505. package/src/utils/pgColumnToProperty.test.ts +258 -0
  2506. package/src/utils/pgColumnToProperty.ts +274 -0
  2507. package/src/utils/sql_utils.test.ts +227 -0
  2508. package/src/utils/sql_utils.ts +297 -0
  2509. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/components/SQLEditor/MonacoEditor.tsx","../src/components/SQLEditor/SchemaBrowser.tsx","../src/components/SQLEditor/SQLEditorSidebar.tsx","../src/utils/sql_utils.ts","../src/components/SQLEditor/ExplainVisualizer.tsx","../src/components/SQLEditor/SQLEditor.tsx","../src/components/JSEditor/JSMonacoEditor.tsx","../src/components/JSEditor/JSEditorSidebar.tsx","../src/components/JSEditor/JSEditor.tsx","../src/components/RLSEditor/PolicyEditor.tsx","../src/components/RLSEditor/RLSEditor.tsx","../src/components/StorageView/StorageView.tsx","../src/components/StudioHomePage.tsx","../src/components/RebaseStudio.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport Editor, { Monaco, OnMount } from \"@monaco-editor/react\";\nimport type { editor, Position, IRange } from \"monaco-editor\";\nimport { cls, defaultBorderMixin } from \"@rebasepro/ui\";\nimport { useModeController } from \"@rebasepro/core\";\n\nexport type MonacoEditorProps = {\n value: string;\n onChange: (value: string | undefined) => void;\n onRun?: (selectedText?: string) => void;\n className?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n schemas?: Record<string, { schemaName: string, tableName: string, columns: { name: string, dataType: string }[] }[]>;\n};\n\nexport const MonacoEditor = ({\n value,\n onChange,\n onRun,\n className,\n readOnly = false,\n autoFocus = true,\n schemas\n}: MonacoEditorProps) => {\n const { mode } = useModeController();\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const onRunRef = useRef(onRun);\n onRunRef.current = onRun;\n\n const schemasRef = useRef(schemas);\n schemasRef.current = schemas;\n\n const handleEditorOnMount: OnMount = (editor, monaco) => {\n editorRef.current = editor;\n monacoRef.current = monaco;\n\n editor.addAction({\n id: \"run-query\",\n label: \"Run Query\",\n keybindings: [monaco.KeyMod.CtrlCmd + monaco.KeyCode.Enter],\n contextMenuGroupId: \"operation\",\n contextMenuOrder: 0,\n run: () => {\n if (onRunRef.current) {\n const selection = editor.getSelection();\n let selectedText: string | undefined = undefined;\n if (selection && !selection.isEmpty()) {\n selectedText = editor.getModel()?.getValueInRange(selection)?.trim();\n }\n onRunRef.current(selectedText || undefined);\n }\n },\n });\n\n // Register custom autocomplete for tables, columns, and SQL keywords\n const sqlKeywords = [\n \"SELECT\", \"FROM\", \"WHERE\", \"INSERT INTO\", \"VALUES\", \"UPDATE\", \"SET\",\n \"DELETE FROM\", \"JOIN\", \"INNER JOIN\", \"LEFT JOIN\", \"RIGHT JOIN\", \"FULL JOIN\",\n \"ON\", \"GROUP BY\", \"HAVING\", \"ORDER BY\", \"ASC\", \"DESC\", \"LIMIT\", \"OFFSET\",\n \"AS\", \"AND\", \"OR\", \"NOT\", \"IN\", \"BETWEEN\", \"LIKE\", \"IS NULL\", \"IS NOT NULL\",\n \"CREATE TABLE\", \"ALTER TABLE\", \"DROP TABLE\", \"PRIMARY KEY\", \"FOREIGN KEY\",\n \"COUNT\", \"SUM\", \"AVG\", \"MIN\", \"MAX\", \"DISTINCT\", \"UNION\", \"ALL\", \"EXISTS\",\n \"CASE\", \"WHEN\", \"THEN\", \"ELSE\", \"END\", \"CAST\", \"COALESCE\"\n ];\n\n monaco.languages.registerCompletionItemProvider(\"pgsql\", {\n triggerCharacters: [\".\", \" \", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\"],\n provideCompletionItems: (model: editor.ITextModel, position: Position) => {\n const word = model.getWordUntilPosition(position);\n const range = {\n startLineNumber: position.lineNumber,\n endLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endColumn: word.endColumn,\n };\n\n const textUntilPosition = model.getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn: 1,\n endLineNumber: position.lineNumber,\n endColumn: position.column\n });\n\n // Check if user is typing `tableName.`\n const match = textUntilPosition.match(/([a-zA-Z0-9_]+)\\.$/);\n const tableNameMatch = match ? match[1] : null;\n\n const suggestions: { label: string; kind: number; insertText: string; range: IRange; detail: string; sortText: string }[] = [];\n const allSchemas = schemasRef.current || {};\n\n if (tableNameMatch) {\n // Provide columns for the matched table\n for (const [, tables] of Object.entries(allSchemas)) {\n const table = tables.find(t => t.tableName === tableNameMatch);\n if (table) {\n table.columns.forEach(col => {\n suggestions.push({\n label: col.name,\n kind: monaco.languages.CompletionItemKind.Field,\n insertText: col.name,\n range,\n detail: `Column`,\n sortText: \"1\"\n });\n });\n }\n }\n } else {\n // Provide table names\n for (const [sName, tables] of Object.entries(allSchemas)) {\n tables.forEach(table => {\n suggestions.push({\n label: table.tableName,\n kind: monaco.languages.CompletionItemKind.Class,\n insertText: table.tableName,\n range,\n detail: `Table (${sName})`,\n sortText: \"2\"\n });\n });\n }\n\n // Provide SQL keywords\n sqlKeywords.forEach(keyword => {\n suggestions.push({\n label: keyword,\n kind: monaco.languages.CompletionItemKind.Keyword,\n insertText: keyword + \" \",\n range,\n detail: \"SQL Keyword\",\n sortText: \"3\"\n });\n });\n\n // Heuristic: Suggest columns for tables that are mentioned in the current editor text\n const fullText = model.getValue();\n const activeTables = new Set<string>();\n for (const [, tables] of Object.entries(allSchemas)) {\n tables.forEach(table => {\n const regex = new RegExp(`\\\\b${table.tableName}\\\\b`, 'i');\n if (regex.test(fullText)) {\n activeTables.add(table.tableName);\n }\n });\n }\n\n const addedColumns = new Set<string>();\n for (const [, tables] of Object.entries(allSchemas)) {\n tables.forEach(table => {\n if (activeTables.has(table.tableName)) {\n table.columns.forEach(col => {\n if (!addedColumns.has(col.name)) {\n addedColumns.add(col.name);\n suggestions.push({\n label: col.name,\n kind: monaco.languages.CompletionItemKind.Field,\n insertText: col.name,\n range,\n detail: `Column (${table.tableName})`,\n sortText: \"1\" // Prioritize columns from active tables\n });\n }\n });\n }\n });\n }\n }\n\n return { suggestions };\n\n }\n });\n\n if (autoFocus) {\n editor.focus();\n }\n };\n\n return (\n <div className={cls(\"relative w-full h-full overflow-hidden\", className)}>\n <Editor\n height=\"100%\"\n defaultLanguage=\"pgsql\"\n value={value}\n onChange={onChange}\n onMount={handleEditorOnMount}\n theme={mode === \"dark\" ? \"vs-dark\" : \"vs\"}\n options={{\n minimap: { enabled: false },\n fontSize: 14,\n lineNumbers: \"on\",\n scrollBeyondLastLine: false,\n automaticLayout: true,\n readOnly,\n tabSize: 2,\n wordWrap: \"on\",\n }}\n />\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport {\n Typography,\n CircularProgress,\n cls,\n IconButton,\n defaultBorderMixin,\n Menu,\n MenuItem,\n Button,\n ContentCopyIcon,\n MoreVertIcon,\n RefreshIcon\n} from \"@rebasepro/ui\";\nimport { TableInfo } from \"./SQLEditor\";\nimport { ErrorView, useTranslation } from \"@rebasepro/core\";\n\nexport const SchemaBrowser = ({\n onTableClick,\n schemas,\n isSchemaLoading,\n schemaError,\n onRetrySchema\n}: {\n onTableClick?: (tableName: string) => void,\n schemas: Record<string, TableInfo[]>,\n isSchemaLoading: boolean,\n schemaError: string | null,\n onRetrySchema: () => void\n}) => {\n const [expandedSchemas, setExpandedSchemas] = useState<Record<string, boolean>>({ public: true });\n const [expandedTables, setExpandedTables] = useState<Record<string, boolean>>({});\n const { t } = useTranslation();\n\n if (isSchemaLoading) return <div className=\"p-4 flex justify-center\"><CircularProgress size=\"small\" /></div>;\n if (schemaError) return (\n <div className=\"p-2\">\n <ErrorView error={schemaError} onRetry={onRetrySchema} />\n </div>\n );\n\n return (\n <div className=\"flex flex-col h-full overflow-hidden\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_schema_tables\")}</Typography>\n <IconButton size=\"small\" onClick={onRetrySchema} title=\"Refresh schema\">\n <RefreshIcon size=\"small\" />\n </IconButton>\n </div>\n\n <div className=\"flex-grow overflow-y-auto no-scrollbar p-1\">\n {Object.keys(schemas).length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark italic\">{t(\"studio_schema_no_tables\")}</Typography>\n </div>\n ) : Object.entries(schemas).map(([schemaName, tables]) => (\n <div key={schemaName} className=\"mb-2\">\n <div\n className=\"flex items-center p-1 cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800 rounded transition-colors\"\n onClick={() => setExpandedSchemas(prev => ({ ...prev, [schemaName]: !prev[schemaName] }))}\n >\n <svg className={cls(\"w-3 h-3 mr-1 transition-transform\", expandedSchemas[schemaName] ? \"rotate-90\" : \"\")} fill=\"currentColor\" viewBox=\"0 0 20 20\"><path d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" /></svg>\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-medium text-xs truncate flex-grow\">{schemaName}</Typography>\n </div>\n\n {expandedSchemas[schemaName] && (\n <div className=\"ml-3 mt-1 space-y-1\">\n {tables.map(table => (\n <div key={table.tableName}>\n <div\n className=\"flex items-center p-1 cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800 rounded transition-colors group relative\"\n onClick={() => setExpandedTables(prev => ({ ...prev, [`${schemaName}.${table.tableName}`]: !prev[`${schemaName}.${table.tableName}`] }))}\n >\n <svg className={cls(\"w-3 h-3 mr-1 transition-transform shrink-0\", expandedTables[`${schemaName}.${table.tableName}`] ? \"rotate-90\" : \"\")} fill=\"currentColor\" viewBox=\"0 0 20 20\"><path d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" /></svg>\n <svg className=\"w-3.5 h-3.5 mr-1 shrink-0 text-text-disabled dark:text-text-disabled-dark\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 10h18M3 14h18m-9-4v8m-7 0h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" /></svg>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark text-xs truncate flex-1 min-w-0\">{table.tableName}</Typography>\n\n <div className=\"flex opacity-0 group-hover:opacity-100 focus-within:opacity-100 absolute right-1 items-center bg-surface-100 dark:bg-surface-800 px-1 gap-1 rounded transition-opacity\">\n <IconButton\n size=\"smallest\"\n className=\"transition-colors text-text-secondary hover:text-text-primary pointer-events-auto\"\n onClick={(e) => {\n e.stopPropagation();\n navigator.clipboard.writeText(table.tableName);\n }}\n title=\"Copy table name\"\n >\n <ContentCopyIcon size=\"smallest\" />\n </IconButton>\n\n <Menu\n trigger={\n <IconButton\n size=\"smallest\"\n className=\"transition-colors text-text-secondary hover:text-text-primary pointer-events-auto\"\n onClick={(e) => e.stopPropagation()}\n title=\"Generate SQL templates\"\n >\n <MoreVertIcon size=\"smallest\" />\n </IconButton>\n }\n >\n <MenuItem dense className=\"text-xs\" onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onTableClick?.(`SELECT * FROM ${schemaName !== 'public' ? `${schemaName}.` : ''}${table.tableName} LIMIT 100;`);\n }}>SELECT (Top 100)</MenuItem>\n <MenuItem dense className=\"text-xs\" onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onTableClick?.(`SELECT \\n ${table.columns.map(c => c.name).join(\",\\n \")}\\nFROM ${schemaName !== 'public' ? `${schemaName}.` : ''}${table.tableName};`);\n }}>SELECT (All columns)</MenuItem>\n <MenuItem dense className=\"text-xs\" onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onTableClick?.(`INSERT INTO ${schemaName !== 'public' ? `${schemaName}.` : ''}${table.tableName} (\\n ${table.columns.map(c => c.name).join(\",\\n \")}\\n) VALUES (\\n ${table.columns.map(() => '?').join(\",\\n \")}\\n);`);\n }}>INSERT statement</MenuItem>\n <MenuItem dense className=\"text-xs\" onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onTableClick?.(`UPDATE ${schemaName !== 'public' ? `${schemaName}.` : ''}${table.tableName} \\nSET \\n ${table.columns.map(c => `${c.name} = ?`).join(\",\\n \")}\\nWHERE id = ?;`);\n }}>UPDATE statement</MenuItem>\n </Menu>\n\n <Button\n variant=\"text\"\n size=\"small\"\n className=\"text-[10px] text-primary uppercase min-h-0 py-0.5 px-1 font-medium ml-1 flex-shrink-0 leading-none h-[22px]\"\n onClick={(e) => {\n e.stopPropagation();\n onTableClick?.(`SELECT * FROM ${schemaName !== 'public' ? `${schemaName}.` : ''}${table.tableName} LIMIT 100;`);\n }}\n >\n SELECT\n </Button>\n </div>\n </div>\n\n {expandedTables[`${schemaName}.${table.tableName}`] && (\n <div className={cls(\"ml-5 mt-1 space-y-0.5 border-l\", defaultBorderMixin)}>\n {table.columns.map(col => (\n <div key={col.name} className=\"flex items-center p-1 group pl-2 hover:bg-surface-50 dark:hover:bg-surface-800 rounded-r relative min-h-[28px]\">\n <svg className=\"w-3 h-3 mr-1.5 text-text-disabled dark:text-text-disabled-dark shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M9 4.5v15m6-15v15m-10.5-1.5h15c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125h-15c-.621 0-1.125.504-1.125 1.125v12.75c0 .621.504 1.125 1.125 1.125Z\" /></svg>\n <Typography variant=\"caption\" className=\"text-text-primary dark:text-text-primary-dark text-[11px] truncate flex-grow mr-2\">{col.name}</Typography>\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark text-[9px] truncate mr-1 uppercase shrink-0\" title={col.dataType}>{col.dataType}</Typography>\n <IconButton\n size=\"smallest\"\n className=\"opacity-0 group-hover:opacity-100 absolute right-1 bg-surface-50 dark:bg-surface-800 transition-colors pointer-events-auto\"\n onClick={(e) => {\n e.stopPropagation();\n navigator.clipboard.writeText(col.name);\n }}\n title=\"Copy column name\"\n >\n <ContentCopyIcon size=\"smallest\" />\n </IconButton>\n </div>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport {\n Typography,\n cls,\n defaultBorderMixin,\n Tabs,\n Tab,\n IconButton,\n DeleteIcon\n} from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\nimport { SchemaBrowser } from \"./SchemaBrowser\";\nimport { TableInfo } from \"./SQLEditor\";\n\nexport interface Snippet {\n id: string;\n name: string;\n sql: string;\n createdAt: number;\n isFavorite?: boolean;\n}\n\ninterface SQLEditorSidebarProps {\n onSelectSnippet: (sql: string) => void;\n onTableClick: (tableName: string) => void;\n snippets: Snippet[];\n history: string[];\n onDeleteSnippet: (id: string) => void;\n schemas: Record<string, TableInfo[]>;\n isSchemaLoading: boolean;\n schemaError: string | null;\n onRetrySchema: () => void;\n}\n\nexport const SQLEditorSidebar = ({\n onSelectSnippet,\n onTableClick,\n snippets,\n history,\n onDeleteSnippet,\n schemas,\n isSchemaLoading,\n schemaError,\n onRetrySchema\n}: SQLEditorSidebarProps) => {\n const [activeTab, setActiveTab] = useState<\"schema\" | \"snippets\" | \"history\">(\"schema\");\n const { t } = useTranslation();\n\n return (\n <div className={cls(\"flex flex-col h-full w-full bg-white dark:bg-surface-950 border-r\", defaultBorderMixin)}>\n <Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as \"schema\" | \"snippets\" | \"history\")} variant=\"boxy\" className=\"border-b border-surface-200 dark:border-surface-800\">\n <Tab value=\"schema\">{t(\"studio_sql_sidebar_schema\")}</Tab>\n <Tab value=\"snippets\">{t(\"studio_sql_sidebar_snippets\")}</Tab>\n <Tab value=\"history\">{t(\"studio_sql_sidebar_history\")}</Tab>\n </Tabs>\n\n <div className=\"flex-grow overflow-hidden relative\">\n {activeTab === \"schema\" && (\n <SchemaBrowser\n onTableClick={onTableClick}\n schemas={schemas}\n isSchemaLoading={isSchemaLoading}\n schemaError={schemaError}\n onRetrySchema={onRetrySchema}\n />\n )}\n\n {activeTab === \"snippets\" && (() => {\n const favorites = snippets.filter(s => s.isFavorite);\n const others = snippets.filter(s => !s.isFavorite);\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_sidebar_snippets\")}</Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-2 space-y-2 no-scrollbar\">\n {snippets.length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_sidebar_no_snippets\")}</Typography>\n </div>\n ) : (\n <>\n {favorites.length > 0 && (\n <div className=\"mb-4\">\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark mb-2 px-1 flex items-center\">\n <svg className=\"w-3 h-3 mr-1 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\"><path fillRule=\"evenodd\" d=\"M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z\" clipRule=\"evenodd\" /></svg>\n Favorites\n </Typography>\n <div className=\"space-y-2\">\n {favorites.map(snippet => (\n <div\n key={snippet.id}\n className={cls(\"group p-2 rounded border hover:border-surface-400 dark:hover:border-surface-600 bg-white dark:bg-surface-900 transition-all cursor-pointer relative\", defaultBorderMixin)}\n onClick={() => onSelectSnippet(snippet.sql)}\n >\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-medium text-[13px] truncate pr-6\">{snippet.name}</Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[10px] block mt-1 truncate\">{snippet.sql}</Typography>\n <IconButton\n size=\"smallest\"\n className=\"absolute right-1 top-1 opacity-0 group-hover:opacity-100 text-text-disabled hover:text-red-500 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation();\n onDeleteSnippet(snippet.id);\n }}\n >\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n ))}\n </div>\n </div>\n )}\n {others.length > 0 && (\n <div>\n {favorites.length > 0 && (\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark mb-2 px-1 mt-4\">\n Others\n </Typography>\n )}\n <div className=\"space-y-2\">\n {others.map(snippet => (\n <div\n key={snippet.id}\n className={cls(\"group p-2 rounded border hover:border-surface-400 dark:hover:border-surface-600 bg-white dark:bg-surface-900 transition-all cursor-pointer relative\", defaultBorderMixin)}\n onClick={() => onSelectSnippet(snippet.sql)}\n >\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-medium text-[13px] truncate pr-6\">{snippet.name}</Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[10px] block mt-1 truncate\">{snippet.sql}</Typography>\n <IconButton\n size=\"smallest\"\n className=\"absolute right-1 top-1 opacity-0 group-hover:opacity-100 text-text-disabled hover:text-red-500 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation();\n onDeleteSnippet(snippet.id);\n }}\n >\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n ))}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n })()}\n\n {activeTab === \"history\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_sidebar_history\")}</Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-1 space-y-1 no-scrollbar\">\n {history.length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_sidebar_no_history\")}</Typography>\n </div>\n ) : (\n [...history].reverse().map((sql, i) => (\n <div\n key={i}\n className=\"p-2 py-1.5 rounded hover:bg-surface-100 dark:hover:bg-surface-800 cursor-pointer group transition-colors flex items-start\"\n onClick={() => onSelectSnippet(sql)}\n >\n <svg className=\"w-3 h-3 mt-1 mr-2 text-text-disabled dark:text-text-disabled-dark group-hover:text-primary transition-colors flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark group-hover:text-text-primary dark:group-hover:text-text-primary-dark text-[11px] line-clamp-2 leading-tight flex-grow\">{sql}</Typography>\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { parseFirst } from \"pgsql-ast-parser\";\nimport { TableInfo } from \"../components/SQLEditor/SQLEditor\";\nimport { EntityCollection } from \"@rebasepro/types\";\n\n/**\n * A table extracted from a SQL query's FROM/JOIN clauses.\n */\nexport interface ExtractedTable {\n name: string;\n alias?: string;\n}\n\n/**\n * A collection matched to a table in a SQL query.\n */\nexport interface ResolvedQueryCollection {\n /** DB table name from the SQL AST (e.g. \"blog_posts\") */\n tableName: string;\n /** SQL alias if present (e.g. \"bp\") */\n tableAlias?: string;\n /** The matched collection */\n collection: EntityCollection;\n /** Columns from this table that are present in the result set */\n columns: string[];\n /** The result column name that holds the primary key for this table (e.g. \"id\", \"author_id\") */\n pkColumn?: string;\n}\n\n/**\n * Extract all tables referenced in a SQL query's FROM and JOIN clauses.\n * Returns an empty array for non-SELECT queries or parse failures.\n */\nexport function extractTablesFromQuery(sqlString: string): ExtractedTable[] {\n try {\n const ast = parseFirst(sqlString);\n if (ast.type !== \"select\") return [];\n\n const tables: ExtractedTable[] = [];\n\n // pgsql-ast-parser From items — tables and joins with left/right branches\n type FromNode = { type: string; name?: { name: string; alias?: string }; left?: FromNode; right?: FromNode };\n const processFrom = (fromItems: FromNode[]) => {\n for (const item of fromItems) {\n if (item.type === \"table\" && item.name) {\n tables.push({ name: item.name.name, alias: item.name.alias });\n }\n if (item.type === \"join\") {\n if (item.left) processFrom([item.left]);\n if (item.right) processFrom([item.right]);\n }\n }\n };\n\n if (ast.from) {\n processFrom(ast.from);\n }\n\n return tables;\n } catch {\n return [];\n }\n}\n\n/**\n * Convert a slug like \"blogPosts\" or \"blog-posts\" to snake_case \"blog_posts\".\n */\nfunction slugToSnakeCase(slug: string): string {\n return slug\n .replace(/([a-z])([A-Z])/g, \"$1_$2\")\n .replace(/[-\\s]+/g, \"_\")\n .toLowerCase();\n}\n\n/**\n * Resolve which collections are referenced by a SQL query.\n *\n * Parses the SQL, extracts table names, and matches each against\n * registered collections via `collection.table` (falling back to\n * snake_case of `collection.slug`).\n *\n * For each matched collection, determines which result columns\n * belong to that table using the database schema information.\n */\nexport function resolveQueryCollections(\n sqlString: string,\n schemas: Record<string, TableInfo[]>,\n collections: EntityCollection[],\n resultColumns?: string[]\n): ResolvedQueryCollection[] {\n const tables = extractTablesFromQuery(sqlString);\n if (tables.length === 0) return [];\n\n // Parse the AST to resolve SELECT column aliases\n let selectColumns: { table?: string; column: string; alias?: string }[] = [];\n try {\n const ast = parseFirst(sqlString);\n if (ast.type === \"select\" && ast.columns) {\n for (const col of ast.columns) {\n if (col.expr?.type === \"ref\") {\n selectColumns.push({\n table: col.expr.table?.name,\n column: col.expr.name,\n alias: col.alias?.name\n });\n }\n }\n }\n } catch { /* parse failure is ok, we'll fall back */ }\n\n const results: ResolvedQueryCollection[] = [];\n\n for (const table of tables) {\n // Match table name against collection table or slug->snake_case\n const matched = collections.find(c => {\n const tableName = (c as any).table || slugToSnakeCase(c.slug);\n return tableName === table.name;\n });\n\n if (!matched) continue;\n\n // Find columns belonging to this table from the schema\n const tableColumns: string[] = [];\n for (const schemaEntries of Object.values(schemas)) {\n const tableInfo = schemaEntries.find(t => t.tableName === table.name);\n if (tableInfo) {\n tableColumns.push(...tableInfo.columns.map(c => c.name));\n break;\n }\n }\n\n // Determine which result column holds the PK (\"id\") for this table.\n // 1. Check parsed SELECT columns for an explicit \"id\" column from this table (by name or alias)\n // 2. Fall back to checking if result columns contain \"id\"\n let pkColumn: string | undefined;\n\n // Look in the AST select columns for `table.id` or `alias.id`\n const tableRef = table.alias || table.name;\n const idSelectCol = selectColumns.find(\n sc => sc.column === \"id\" && (!sc.table || sc.table === tableRef || sc.table === table.name)\n );\n if (idSelectCol) {\n pkColumn = idSelectCol.alias || idSelectCol.column; // use alias if present\n }\n\n // If we didn't find it from the AST (e.g. SELECT *), check if result columns have \"id\"\n if (!pkColumn && resultColumns) {\n if (resultColumns.includes(\"id\")) {\n pkColumn = \"id\";\n }\n }\n\n // If still not found, fall back to checking tableColumns\n if (!pkColumn && tableColumns.includes(\"id\")) {\n pkColumn = \"id\";\n }\n\n results.push({\n tableName: table.name,\n tableAlias: table.alias,\n collection: matched,\n columns: tableColumns,\n pkColumn\n });\n }\n\n return results;\n}\n\nexport interface PKMapping {\n /** The actual column name in the database table */\n dbColumn: string;\n /** The column name as it appears in the query result set (may be aliased) */\n resultColumn: string;\n}\n\nexport interface TableAndPKResult {\n tableName?: string;\n primaryKeys?: PKMapping[];\n error?: string;\n}\n\nexport function determineTableAndPK(sqlString: string, columnKey: string, schemas: Record<string, TableInfo[]>): TableAndPKResult {\n try {\n const tables = extractTablesFromQuery(sqlString);\n\n const ast = parseFirst(sqlString);\n if (ast.type !== \"select\") {\n return { error: \"Inline editing is only supported for SELECT queries.\" };\n }\n\n if (tables.length === 0) {\n return { error: \"Could not find any tables in the query.\" };\n }\n\n // Parse SELECT columns to resolve aliases\n const selectColumns: { table?: string; column: string; alias?: string }[] = [];\n if (ast.columns) {\n for (const col of ast.columns) {\n if (col.expr?.type === \"ref\") {\n selectColumns.push({\n table: col.expr.table?.name,\n column: col.expr.name,\n alias: col.alias?.name\n });\n }\n }\n }\n\n // Resolve which DB column `columnKey` refers to (it might be aliased)\n const resolvedColumn = selectColumns.find(\n sc => (sc.alias === columnKey) || (!sc.alias && sc.column === columnKey)\n );\n const actualDbColumnName = resolvedColumn?.column ?? columnKey;\n const columnTableRef = resolvedColumn?.table; // e.g. \"p\" or \"posts\"\n\n // Resolve the table for the edited column\n let resolvedTableName: string | null = null;\n\n if (tables.length === 1) {\n resolvedTableName = tables[0].name;\n } else {\n // If the AST tells us which table, use that\n if (columnTableRef) {\n const matchedTable = tables.find(\n t => t.alias === columnTableRef || t.name === columnTableRef\n );\n if (matchedTable) {\n resolvedTableName = matchedTable.name;\n }\n }\n\n // Otherwise, look up which schema table has this column\n if (!resolvedTableName) {\n const matchedTables = tables.filter(t => {\n for (const schema of Object.values(schemas)) {\n const tableInfo = schema.find(ti => ti.tableName === t.name);\n if (tableInfo && tableInfo.columns.some(c => c.name === actualDbColumnName)) {\n return true;\n }\n }\n return false;\n });\n\n if (matchedTables.length === 1) {\n resolvedTableName = matchedTables[0].name;\n } else if (matchedTables.length > 1) {\n return { error: `Ambiguous column \"${columnKey}\": Found in multiple queried tables.` };\n } else {\n return { error: `Could not find column \"${columnKey}\" in the queried tables.` };\n }\n }\n }\n\n if (!resolvedTableName) {\n return { error: \"Could not resolve the target table.\" };\n }\n\n // Find the table's actual primary key columns from the schema\n let pkDbColumns: string[] = [];\n for (const schema of Object.values(schemas)) {\n const tableInfo = schema.find(t => t.tableName === resolvedTableName);\n if (tableInfo) {\n pkDbColumns = tableInfo.columns\n .filter(c => c.isPrimaryKey)\n .map(c => c.name);\n break;\n }\n }\n\n if (pkDbColumns.length === 0) {\n return { error: `Table \"${resolvedTableName}\" has no primary key defined.` };\n }\n\n // Find the table's alias in the query (for resolving PK result column names)\n const tableEntry = tables.find(t => t.name === resolvedTableName);\n const tableAlias = tableEntry?.alias;\n\n // Map each PK db column to its result column name (resolving aliases)\n const primaryKeys: PKMapping[] = pkDbColumns.map(dbCol => {\n // Find the SELECT column for this PK\n const selectCol = selectColumns.find(\n sc => sc.column === dbCol &&\n (!sc.table || sc.table === (tableAlias || resolvedTableName))\n );\n return {\n dbColumn: dbCol,\n resultColumn: selectCol?.alias || selectCol?.column || dbCol\n };\n });\n\n return { tableName: resolvedTableName, primaryKeys };\n } catch (e: unknown) {\n console.warn(\"Failed to parse SQL AST:\", e);\n const message = e instanceof Error ? e.message : String(e);\n return { error: `Could not safely parse query for inline editing: ${message}` };\n }\n}\n","import React, { useState } from \"react\";\nimport { Typography, cls, defaultBorderMixin, Collapse } from \"@rebasepro/ui\";\n\nexport interface ExplainPlanNode {\n \"Node Type\": string;\n \"Relation Name\"?: string;\n \"Alias\"?: string;\n \"Startup Cost\": number;\n \"Total Cost\": number;\n \"Plan Rows\": number;\n \"Plan Width\": number;\n \"Actual Startup Time\"?: number;\n \"Actual Total Time\"?: number;\n \"Actual Rows\"?: number;\n \"Actual Loops\"?: number;\n \"Filter\"?: string;\n \"Index Cond\"?: string;\n \"Hash Cond\"?: string;\n \"Plans\"?: ExplainPlanNode[];\n [key: string]: unknown;\n}\n\nexport interface ExplainVisualizerProps {\n plan: ExplainPlanNode;\n isRoot?: boolean;\n}\n\nexport const ExplainVisualizer: React.FC<ExplainVisualizerProps> = ({ plan, isRoot = true }) => {\n const [expanded, setExpanded] = useState(true);\n\n const hasChildren = plan.Plans && plan.Plans.length > 0;\n\n // Determine color based on cost\n const cost = plan[\"Total Cost\"];\n let costColor = \"text-green-500 dark:text-green-400\";\n if (cost > 1000) costColor = \"text-red-500 dark:text-red-400\";\n else if (cost > 100) costColor = \"text-orange-500 dark:text-orange-400\";\n\n return (\n <div className={cls(\"flex flex-col\", isRoot ? \"p-4\" : \"pl-6 mt-2 relative\")}>\n {/* Tree branch line */}\n {!isRoot && (\n <div className=\"absolute left-2.5 top-0 bottom-0 w-px bg-surface-200 dark:bg-surface-800 -z-10\"></div>\n )}\n {!isRoot && (\n <div className=\"absolute left-2.5 top-5 w-3 h-px bg-surface-200 dark:bg-surface-800 -z-10\"></div>\n )}\n\n <div className={cls(\"border rounded-md bg-white dark:bg-surface-900 text-text-primary dark:text-text-primary-dark shadow-xs relative z-10 w-[420px] max-w-full\", defaultBorderMixin)}>\n <div\n className={cls(\"px-4 py-3 flex justify-between items-center cursor-pointer select-none\")}\n onClick={() => setExpanded(!expanded)}\n >\n <div className=\"flex items-center space-x-2\">\n {hasChildren ? (\n <svg className={cls(\"w-4 h-4 text-text-secondary transition-transform\", !expanded ? \"-rotate-90\" : \"\")} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" /></svg>\n ) : (\n <div className=\"w-4 h-4\"></div>\n )}\n\n <Typography variant=\"body1\" className=\"flex items-center\">\n {plan[\"Node Type\"]}\n </Typography>\n\n {plan[\"Relation Name\"] && (\n <span className=\"font-mono text-[11px] text-text-secondary dark:text-text-secondary-dark px-2 py-0.5 rounded bg-surface-200 dark:bg-surface-800 ml-2\">\n on {plan[\"Relation Name\"]} {plan.Alias && plan.Alias !== plan[\"Relation Name\"] ? `(${plan.Alias})` : \"\"}\n </span>\n )}\n </div>\n\n <div className=\"flex space-x-6 items-center\">\n <div className=\"flex flex-col text-right\">\n <span className=\"text-[10px] uppercase text-text-disabled dark:text-text-disabled-dark font-semibold tracking-wide leading-tight mb-0.5\">Cost</span>\n <span className={cls(\"font-mono font-medium text-[13px] leading-none\", costColor)}>{cost.toFixed(2)}</span>\n </div>\n <div className=\"flex flex-col text-right\">\n <span className=\"text-[10px] uppercase text-text-disabled dark:text-text-disabled-dark font-semibold tracking-wide leading-tight mb-0.5\">Rows</span>\n <span className=\"font-mono text-[13px] text-text-secondary dark:text-text-secondary-dark leading-none\">{plan[\"Plan Rows\"]}</span>\n </div>\n </div>\n </div>\n\n <Collapse in={expanded}>\n <div className=\"px-4 py-3 border-t border-surface-200 dark:border-surface-800 text-[13px] flex flex-col gap-2\">\n <div className=\"flex items-center space-x-6\">\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark\">Startup Cost:</span>\n <span className=\"font-mono font-medium\">{plan[\"Startup Cost\"].toFixed(2)}</span>\n </div>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark\">Width:</span>\n <span className=\"font-mono font-medium\">{plan[\"Plan Width\"]} bytes</span>\n </div>\n </div>\n\n {plan.Filter && (\n <div className=\"mt-1\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark block mb-1\">Filter:</span>\n <code className=\"block w-full p-2 bg-surface-50 dark:bg-surface-950 border dark:border-surface-800 rounded font-mono text-[12px] truncate\">{plan.Filter}</code>\n </div>\n )}\n {plan[\"Index Cond\"] && (\n <div className=\"mt-1\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark block mb-1\">Index Cond:</span>\n <code className=\"block w-full p-2 bg-surface-50 dark:bg-surface-950 border dark:border-surface-800 rounded font-mono text-[12px] truncate\">{plan[\"Index Cond\"]}</code>\n </div>\n )}\n {plan[\"Hash Cond\"] && (\n <div className=\"mt-1\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark block mb-1\">Hash Cond:</span>\n <code className=\"block w-full p-2 bg-surface-50 dark:bg-surface-950 border dark:border-surface-800 rounded font-mono text-[12px] truncate\">{plan[\"Hash Cond\"]}</code>\n </div>\n )}\n </div>\n </Collapse>\n </div>\n\n {expanded && hasChildren && (\n <div className=\"flex flex-col space-y-2 mt-[-4px]\">\n {plan.Plans!.map((childPlan, idx) => (\n <ExplainVisualizer key={idx} plan={childPlan} isRoot={false} />\n ))}\n </div>\n )}\n </div>\n );\n};\n","import { IconForView } from \"@rebasepro/core\";\nimport { useStudioCollectionRegistry, useStudioSideEntityController } from \"@rebasepro/core\";\nimport React, { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport {\n Button,\n Paper,\n Typography,\n CircularProgress,\n cls,\n IconButton,\n InputLabel,\n Dialog,\n DialogContent,\n DialogActions,\n DialogTitle,\n TextField,\n Tooltip,\n Alert,\n Tabs,\n Tab,\n defaultBorderMixin,\n Select,\n SelectItem,\n Menu,\n MenuItem,\n ResizablePanels,\n Chip,\n CloseIcon,\n AddIcon,\n StorageIcon,\n TerminalIcon,\n EditIcon,\n MoreVertIcon,\n NotesIcon,\n PlayArrowIcon,\n VirtualTable,\n VirtualTableColumn,\n} from \"@rebasepro/ui\";\n// VirtualTableInput is conditionally loaded from CMS when available\nlet VirtualTableInput: React.ComponentType<any> | null = null;\ntry {\n // @ts-ignore — optional peer dependency\n const cms = require(\"@rebasepro/cms\");\n VirtualTableInput = cms.VirtualTableInput;\n} catch { /* CMS not available */ }\nimport { useRebaseContext, useSnackbarController, ConfirmationDialog, ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { MonacoEditor } from \"./MonacoEditor\";\nimport { SQLEditorSidebar, Snippet } from \"./SQLEditorSidebar\";\nimport { parseFirst } from \"pgsql-ast-parser\";\nimport { determineTableAndPK, resolveQueryCollections, ResolvedQueryCollection } from \"../../utils/sql_utils\";\nimport { ExplainVisualizer } from \"./ExplainVisualizer\";\n\nexport interface SQLEditorColumnInfo {\n name: string;\n dataType: string;\n isPrimaryKey: boolean;\n}\n\nexport interface TableInfo {\n schemaName: string;\n tableName: string;\n columns: SQLEditorColumnInfo[];\n}\n\nconst QueryLoadingView = () => {\n const [elapsed, setElapsed] = useState(0);\n\n useEffect(() => {\n const start = Date.now();\n const interval = setInterval(() => {\n setElapsed(Date.now() - start);\n }, 100);\n return () => clearInterval(interval);\n }, []);\n\n return (\n <div className=\"flex-grow flex items-center justify-center\">\n <div className=\"text-center\">\n <CircularProgress size=\"medium\" />\n <Typography variant=\"body2\" className=\"mt-4 text-text-secondary dark:text-text-secondary-dark font-mono tracking-tight animate-pulse\">\n EXECUTING QUERY...\n </Typography>\n <div className=\"mt-2 text-xs font-mono text-text-disabled dark:text-text-disabled-dark\">\n {(elapsed / 1000).toFixed(1)}s elapsed\n </div>\n </div>\n </div>\n );\n};\n\nconst STORAGE_KEY_TABS = \"rebase_sql_tabs\";\nconst STORAGE_KEY_ACTIVE_TAB = \"rebase_sql_active_tab\";\n\nexport const SQLEditor = () => {\n const { databaseAdmin } = useRebaseContext();\n const sideEntityController = useStudioSideEntityController();\n const snackbarController = useSnackbarController();\n const collectionRegistry = useStudioCollectionRegistry();\n\n const { t } = useTranslation();\n\n // Schema state\n const [schemas, setSchemas] = useState<Record<string, TableInfo[]>>({});\n const [isSchemaLoading, setIsSchemaLoading] = useState(true);\n const schemaFetchedRef = useRef(false);\n const [schemaError, setSchemaError] = useState<string | null>(null);\n\n // Connection state\n const [selectedDatabase, setSelectedDatabase] = useState<string | undefined>(() => {\n return localStorage.getItem(\"rebase_sql_selected_db\") || undefined;\n });\n const [selectedRole, setSelectedRole] = useState<string | undefined>(() => {\n return localStorage.getItem(\"rebase_sql_selected_role\") || undefined;\n });\n\n const [availableDatabases, setAvailableDatabases] = useState<string[]>([]);\n const [availableRoles, setAvailableRoles] = useState<string[]>([]);\n const [isLoadingConfig, setIsLoadingConfig] = useState(true);\n const [connectionConfigError, setConnectionConfigError] = useState<string | null>(null);\n\n // Tabbed interface state\n const [tabs, setTabs] = useState<Array<{\n id: string,\n name: string,\n sql: string,\n database?: string,\n role?: string,\n results: Record<string, unknown>[] | null,\n loading: boolean,\n error: string | null,\n execTime: number | null,\n lastExecutedSql: string | null\n }>>(() => {\n const saved = localStorage.getItem(STORAGE_KEY_TABS);\n if (saved) {\n const parsed = JSON.parse(saved);\n return parsed.map((t: Record<string, unknown>) => ({\n ...t,\n results: null,\n loading: false,\n error: null,\n execTime: null,\n lastExecutedSql: null\n }));\n }\n return [{\n id: \"1\",\n name: \"Query 1\",\n sql: \"SELECT * FROM \",\n database: localStorage.getItem(\"rebase_sql_selected_db\") || undefined,\n role: localStorage.getItem(\"rebase_sql_selected_role\") || undefined,\n results: null,\n loading: false,\n error: null,\n execTime: null,\n lastExecutedSql: null\n }];\n });\n const [activeTabId, setActiveTabId] = useState<string>(() => {\n return localStorage.getItem(STORAGE_KEY_ACTIVE_TAB) || \"1\";\n });\n\n const activeTab = tabs.find(t => t.id === activeTabId) || tabs[0];\n\n // Helper to update active tab state\n const updateActiveTab = useCallback((update: Partial<typeof activeTab>) => {\n setTabs(prev => prev.map(t => t.id === activeTabId ? { ...t, ...update } : t));\n }, [activeTabId]);\n\n const sql = activeTab.sql;\n const results = activeTab.results;\n const loading = activeTab.loading;\n const error = activeTab.error;\n const execTime = activeTab.execTime;\n\n const setSql = (newSql: string) => updateActiveTab({ sql: newSql });\n const setResults = (newResults: Record<string, unknown>[] | null) => updateActiveTab({ results: newResults });\n const setLoading = (newLoading: boolean) => updateActiveTab({ loading: newLoading });\n const setError = (newError: string | null) => updateActiveTab({ error: newError });\n\n useEffect(() => {\n let mounted = true;\n const fetchConnectionConfig = async () => {\n if (!databaseAdmin?.fetchAvailableDatabases || !databaseAdmin?.fetchAvailableRoles) {\n setConnectionConfigError(t(\"studio_sql_sql_not_supported\"));\n setIsLoadingConfig(false);\n return;\n }\n\n try {\n const [dbs, roles, currentDbFromApi] = await Promise.all([\n databaseAdmin.fetchAvailableDatabases(),\n databaseAdmin.fetchAvailableRoles(),\n typeof databaseAdmin?.fetchCurrentDatabase === \"function\" ? databaseAdmin.fetchCurrentDatabase() : Promise.resolve(undefined)\n ]);\n\n if (mounted) {\n setAvailableDatabases(dbs);\n setAvailableRoles(roles);\n\n const loadedDb = localStorage.getItem(\"rebase_sql_selected_db\") || undefined;\n const loadedRole = localStorage.getItem(\"rebase_sql_selected_role\") || undefined;\n\n let initialActiveTabId = localStorage.getItem(STORAGE_KEY_ACTIVE_TAB) || \"1\";\n let initialTabs: any[] = [];\n try {\n const savedTabs = localStorage.getItem(STORAGE_KEY_TABS);\n if (savedTabs) initialTabs = JSON.parse(savedTabs);\n } catch (e) {}\n const currentActiveTab = initialTabs.find(t => t.id === initialActiveTabId);\n\n let actualDb = currentActiveTab?.database || loadedDb;\n if (actualDb && !dbs.includes(actualDb)) actualDb = undefined;\n if (!actualDb && dbs.length > 0) {\n actualDb = currentDbFromApi && dbs.includes(currentDbFromApi) ? currentDbFromApi : dbs[0];\n }\n\n if (actualDb) {\n setSelectedDatabase(actualDb);\n localStorage.setItem(\"rebase_sql_selected_db\", actualDb);\n setTabs(prev => prev.map(t => t.id === initialActiveTabId && !t.database ? { ...t, database: actualDb } : t));\n }\n\n let actualRole = currentActiveTab?.role || loadedRole;\n if (actualRole && !roles.includes(actualRole)) actualRole = undefined;\n if (!actualRole && roles.length > 0) {\n actualRole = roles.includes(\"postgres\") ? \"postgres\" : roles[0];\n }\n\n if (actualRole) {\n setSelectedRole(actualRole);\n localStorage.setItem(\"rebase_sql_selected_role\", actualRole);\n setTabs(prev => prev.map(t => t.id === initialActiveTabId && !t.role ? { ...t, role: actualRole } : t));\n }\n }\n } catch (err: unknown) {\n console.error(\"Failed to fetch databases or roles:\", err);\n if (mounted) {\n const message = err instanceof Error ? err.message : String(err);\n setConnectionConfigError(t(\"studio_sql_fetch_error\", { message }));\n }\n } finally {\n if (mounted) {\n setIsLoadingConfig(false);\n }\n }\n };\n\n fetchConnectionConfig();\n\n return () => { mounted = false; };\n }, [databaseAdmin]);\n\n const handleDatabaseChange = (db: string, tabId?: string) => {\n setSelectedDatabase(db);\n localStorage.setItem(\"rebase_sql_selected_db\", db);\n setTabs(prev => prev.map(t => t.id === (tabId || activeTabId) ? { ...t, database: db } : t));\n // Reset so the schema will be re-fetched for the new database\n schemaFetchedRef.current = false;\n };\n\n const handleRoleChange = (role: string, tabId?: string) => {\n setSelectedRole(role);\n localStorage.setItem(\"rebase_sql_selected_role\", role);\n setTabs(prev => prev.map(t => t.id === (tabId || activeTabId) ? { ...t, role } : t));\n };\n\n const handleTabChange = useCallback((newTabId: string) => {\n setActiveTabId(newTabId);\n const newTab = tabs.find(t => t.id === newTabId);\n if (newTab) {\n if (newTab.database && newTab.database !== selectedDatabase) {\n setSelectedDatabase(newTab.database);\n localStorage.setItem(\"rebase_sql_selected_db\", newTab.database);\n schemaFetchedRef.current = false;\n } else if (!newTab.database && selectedDatabase) {\n setTabs(prev => prev.map(t => t.id === newTabId ? { ...t, database: selectedDatabase } : t));\n }\n\n if (newTab.role && newTab.role !== selectedRole) {\n setSelectedRole(newTab.role);\n localStorage.setItem(\"rebase_sql_selected_role\", newTab.role);\n } else if (!newTab.role && selectedRole) {\n setTabs(prev => prev.map(t => t.id === newTabId ? { ...t, role: selectedRole } : t));\n }\n }\n }, [tabs, selectedDatabase, selectedRole]);\n\n const fetchSchema = useCallback(async () => {\n if (!databaseAdmin?.executeSql) {\n setSchemaError(t(\"studio_sql_sql_not_supported\"));\n setIsSchemaLoading(false);\n return;\n }\n\n setIsSchemaLoading(true);\n setSchemaError(null);\n try {\n const sql = `\n SELECT \n c.table_schema as schema, \n c.table_name as \"table\", \n c.column_name as \"column\",\n c.data_type as \"data_type\",\n CASE WHEN kcu.column_name IS NOT NULL THEN true ELSE false END as \"is_pk\"\n FROM \n information_schema.columns c\n LEFT JOIN information_schema.table_constraints tc\n ON tc.table_schema = c.table_schema \n AND tc.table_name = c.table_name \n AND tc.constraint_type = 'PRIMARY KEY'\n LEFT JOIN information_schema.key_column_usage kcu\n ON kcu.constraint_name = tc.constraint_name\n AND kcu.table_schema = tc.table_schema\n AND kcu.table_name = tc.table_name\n AND kcu.column_name = c.column_name\n WHERE \n c.table_schema NOT IN ('information_schema', 'pg_catalog')\n ORDER BY \n c.table_schema, c.table_name, c.ordinal_position;\n `;\n // Pass the selected database so schema introspection targets the right DB.\n const result = await databaseAdmin!.executeSql!(sql, { database: selectedDatabase });\n\n const processGrouped = (data: Record<string, unknown>[]) => {\n const grouped = data.reduce((acc: Record<string, TableInfo[]>, curr: Record<string, unknown>) => {\n const schema = (curr.schema || curr.SCHEMA || curr.table_schema || \"public\") as string;\n const table = (curr.table || curr.TABLE || curr.table_name) as string;\n const column = (curr.column || curr.COLUMN || curr.column_name) as string;\n const dataType = (curr.data_type || curr.DATA_TYPE || \"\") as string;\n const isPrimaryKey = curr.is_pk === true || curr.is_pk === \"true\";\n\n if (!acc[schema]) acc[schema] = [];\n let tableInfo = acc[schema].find(t => t.tableName === table);\n if (!tableInfo) {\n tableInfo = { schemaName: schema, tableName: table, columns: [] };\n acc[schema].push(tableInfo);\n }\n tableInfo.columns.push({ name: column, dataType, isPrimaryKey });\n return acc;\n }, {});\n setSchemas(grouped);\n };\n\n if (!result || !Array.isArray(result)) {\n if (result && typeof result === \"object\" && \"rows\" in result && Array.isArray((result as { rows: Record<string, unknown>[] }).rows)) {\n processGrouped((result as { rows: Record<string, unknown>[] }).rows);\n } else {\n setSchemaError(t(\"studio_sql_unexpected_format\", { type: typeof result }));\n setSchemas({});\n }\n } else if (result.length === 0) {\n setSchemas({});\n setSchemaError(t(\"studio_sql_no_tables\"));\n } else {\n processGrouped(result);\n }\n\n schemaFetchedRef.current = true;\n } catch (e: unknown) {\n console.error(\"Schema fetch error:\", e);\n const message = e instanceof Error ? e.message : String(e);\n setSchemaError(t(\"studio_sql_schema_fetch_error\", { message }));\n } finally {\n setIsSchemaLoading(false);\n }\n }, [databaseAdmin, selectedDatabase]);\n\n useEffect(() => {\n // Fetch schema after config finishes loading, and re-fetch when the selected database changes.\n if (!isLoadingConfig && !schemaFetchedRef.current) {\n fetchSchema();\n }\n }, [fetchSchema, isLoadingConfig, selectedDatabase]);\n\n\n\n const [autoLimit, setAutoLimit] = useState(true);\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [pendingAction, setPendingAction] = useState<(() => void) | null>(null);\n\n // Inline editing state\n const [editingCell, setEditingCell] = useState<{ rowIndex: number, columnKey: string, initialValue: unknown } | null>(null);\n\n const handleDoubleClick = useCallback((rowIndex: number, columnKey: string, initialValue: unknown, rowData: Record<string, unknown>) => {\n if (!activeTab.lastExecutedSql) {\n snackbarController.open({\n type: \"error\",\n message: t(\"studio_sql_cannot_edit_missing_query\")\n });\n return;\n }\n\n const resolution = determineTableAndPK(activeTab.lastExecutedSql, columnKey, schemas);\n\n if (resolution.error || !resolution.primaryKeys || resolution.primaryKeys.length === 0) {\n snackbarController.open({\n type: \"error\",\n message: resolution.error || t(\"studio_sql_cannot_resolve_table\")\n });\n return;\n }\n\n // Check all PK values are present in the row\n const missingPKs = resolution.primaryKeys.filter(\n pk => rowData[pk.resultColumn] === undefined || rowData[pk.resultColumn] === null\n );\n if (missingPKs.length > 0) {\n snackbarController.open({\n type: \"error\",\n message: t(\"studio_sql_missing_pk\", { columns: missingPKs.map(pk => `\"${pk.resultColumn}\"`).join(\", \") })\n });\n return;\n }\n\n setEditingCell({ rowIndex, columnKey, initialValue });\n }, [activeTab.lastExecutedSql, schemas, snackbarController]);\n\n const handleCellSave = useCallback(async (newValue: string | null, rowData: Record<string, unknown>, columnKey: string, rowIndex: number) => {\n if (!editingCell || !activeTab.lastExecutedSql) return;\n\n setEditingCell(null); // Optimistically close\n\n if (newValue === editingCell.initialValue) return;\n\n const resolution = determineTableAndPK(activeTab.lastExecutedSql, columnKey, schemas);\n if (resolution.error || !resolution.tableName || !resolution.primaryKeys || resolution.primaryKeys.length === 0) {\n snackbarController.open({ type: \"error\", message: resolution.error || \"Resolution failed.\" });\n return;\n }\n\n const tableName = resolution.tableName;\n\n const formatValue = (val: unknown) => {\n if (val === null || val === undefined) return \"NULL\";\n if (typeof val === \"number\") return val;\n if (typeof val === \"boolean\") return val ? \"TRUE\" : \"FALSE\";\n return `'${String(val).replace(/'/g, \"''\")}'`;\n };\n\n // Resolve the actual DB column name for the edited column (may differ from the result alias)\n // e.g. if the query has `a.name AS author_name`, columnKey = \"author_name\" but DB column = \"name\"\n const resolveDbColumnName = (resultColKey: string): string => {\n try {\n const ast = parseFirst(activeTab.lastExecutedSql!);\n if (ast.type === \"select\" && ast.columns) {\n for (const col of ast.columns) {\n if (col.expr?.type === \"ref\") {\n const alias = col.alias?.name;\n const colName = col.expr.name;\n if (alias === resultColKey || (!alias && colName === resultColKey)) {\n return colName;\n }\n }\n }\n }\n } catch { /* fall back to columnKey */ }\n return resultColKey;\n };\n\n const dbColumnName = resolveDbColumnName(columnKey);\n\n // Build composite WHERE clause\n const whereConditions = resolution.primaryKeys.map(\n pk => `\"${pk.dbColumn}\" = ${formatValue(rowData[pk.resultColumn])}`\n ).join(\" AND \");\n\n const updateSql = `UPDATE \"${tableName}\" SET \"${dbColumnName}\" = ${formatValue(newValue)} WHERE ${whereConditions};`;\n\n try {\n if (databaseAdmin?.executeSql) {\n await databaseAdmin.executeSql(updateSql, { database: selectedDatabase, role: selectedRole });\n\n const newResults = [...(activeTab.results || [])];\n if (newResults[rowIndex]) {\n newResults[rowIndex] = { ...newResults[rowIndex], [columnKey]: newValue };\n }\n updateActiveTab({ results: newResults });\n\n snackbarController.open({\n type: \"success\",\n message: t(\"studio_sql_row_updated\")\n });\n }\n } catch (e: unknown) {\n snackbarController.open({\n type: \"error\",\n message: t(\"studio_sql_update_failed\", { message: e instanceof Error ? e.message : String(e) })\n });\n }\n }, [editingCell, schemas, activeTab.lastExecutedSql, activeTab.results, databaseAdmin, updateActiveTab, snackbarController, selectedDatabase, selectedRole]);\n\n const [columnWidths, setColumnWidths] = useState<Record<string, Record<string, number>>>(() => {\n const saved = localStorage.getItem(\"rebase_sql_column_widths\");\n return saved ? JSON.parse(saved) : {};\n });\n const [snippets, setSnippets] = useState<Snippet[]>([]);\n const [history, setHistory] = useState<string[]>([]);\n const [isSaveDialogOpen, setIsSaveDialogOpen] = useState(false);\n const [newSnippetName, setNewSnippetName] = useState(\"\");\n\n // Load from local storage\n useEffect(() => {\n const savedSnippets = localStorage.getItem(\"rebase_sql_snippets\");\n if (savedSnippets) setSnippets(JSON.parse(savedSnippets));\n\n const savedHistory = localStorage.getItem(\"rebase_sql_history\");\n if (savedHistory) setHistory(JSON.parse(savedHistory));\n }, []);\n\n // Save tabs and active tab to local storage\n useEffect(() => {\n const sanitizedTabs = tabs.map(t => ({\n id: t.id,\n name: t.name,\n sql: t.sql,\n database: t.database,\n role: t.role,\n }));\n localStorage.setItem(STORAGE_KEY_TABS, JSON.stringify(sanitizedTabs));\n }, [tabs]);\n\n useEffect(() => {\n localStorage.setItem(STORAGE_KEY_ACTIVE_TAB, activeTabId);\n }, [activeTabId]);\n\n const saveSnippets = (newSnippets: Snippet[]) => {\n setSnippets(newSnippets);\n localStorage.setItem(\"rebase_sql_snippets\", JSON.stringify(newSnippets));\n };\n\n const saveHistory = (newHistory: string[]) => {\n setHistory(newHistory);\n localStorage.setItem(\"rebase_sql_history\", JSON.stringify(newHistory.slice(-50)));\n };\n\n const handleDeleteSnippet = (id: string) => {\n saveSnippets(snippets.filter(s => s.id !== id));\n };\n\n const handleAddTab = () => {\n const newId = Math.random().toString(36).substring(2, 9);\n\n // Find the next available query number\n let maxNumber = 0;\n tabs.forEach(tab => {\n const match = tab.name.match(/^Query (\\d+)$/);\n if (match) {\n const num = parseInt(match[1], 10);\n if (num > maxNumber) maxNumber = num;\n }\n });\n const name = `Query ${maxNumber + 1}`;\n setTabs(prev => [...prev, {\n id: newId,\n name,\n sql: \"SELECT * FROM \",\n database: selectedDatabase,\n role: selectedRole,\n results: null,\n loading: false,\n error: null,\n execTime: null,\n lastExecutedSql: null\n }]);\n setActiveTabId(newId);\n };\n\n const handleCloseTab = (id: string, e: React.MouseEvent) => {\n e.stopPropagation();\n if (tabs.length === 1) return;\n\n const tabIndex = tabs.findIndex(t => t.id === id);\n const newTabs = tabs.filter(t => t.id !== id);\n setTabs(newTabs);\n\n if (activeTabId === id) {\n // Find a new active tab: the one at the same index, or the last one if we closed the last\n const nextIndex = Math.min(tabIndex, newTabs.length - 1);\n if (newTabs[nextIndex]) {\n setActiveTabId(newTabs[nextIndex].id);\n }\n }\n };\n\n const handleColumnResize = useCallback(({ key, width }: { key: string, width: number }) => {\n setColumnWidths(prev => {\n const newWidths = {\n ...prev,\n [activeTab.sql]: {\n ...(prev[activeTab.sql] || {}),\n [key]: width\n }\n };\n localStorage.setItem(\"rebase_sql_column_widths\", JSON.stringify(newWidths));\n return newWidths;\n });\n }, [activeTab.sql]);\n\n const handlePrettify = () => {\n // Simple formatting for now\n const formatted = activeTab.sql\n .replace(/\\s+/g, \" \")\n .replace(/\\s?,\\s?/g, \", \")\n .replace(/\\s?=\\s?/g, \" = \")\n .trim();\n setSql(formatted);\n };\n\n const handleExplain = async () => {\n const explainSql = `EXPLAIN (FORMAT JSON, ANALYZE) ${activeTab.sql}`;\n updateActiveTab({ loading: true, error: null, results: null });\n const start = performance.now();\n try {\n if (databaseAdmin?.executeSql) {\n const result = await databaseAdmin.executeSql(explainSql, { database: selectedDatabase, role: selectedRole });\n updateActiveTab({ results: result, execTime: Math.round(performance.now() - start) });\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n updateActiveTab({ error: message || t(\"studio_sql_error_explaining\") });\n } finally {\n updateActiveTab({ loading: false });\n }\n };\n\n const executeRun = useCallback(async (sqlOverride?: string) => {\n let sqlToRun = sqlOverride || activeTab.sql;\n if (autoLimit && sqlToRun.toUpperCase().includes(\"SELECT\") && !sqlToRun.toUpperCase().includes(\"LIMIT\")) {\n sqlToRun = `${sqlToRun.trim()} LIMIT 1000`;\n }\n\n updateActiveTab({ loading: true, error: null, results: null });\n const start = performance.now();\n\n try {\n if (databaseAdmin?.executeSql) {\n const result = await databaseAdmin.executeSql(sqlToRun, { database: selectedDatabase, role: selectedRole });\n updateActiveTab({\n results: result,\n execTime: Math.round(performance.now() - start),\n lastExecutedSql: sqlToRun\n });\n\n if (history[history.length - 1] !== activeTab.sql) {\n saveHistory([...history, activeTab.sql]);\n }\n } else {\n updateActiveTab({ error: t(\"studio_sql_execution_not_supported\") });\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n updateActiveTab({ error: message || t(\"studio_sql_error_executing\") });\n } finally {\n updateActiveTab({ loading: false });\n }\n }, [activeTab.sql, autoLimit, databaseAdmin, history, updateActiveTab]);\n\n const handleRun = useCallback(async (selectedText?: string) => {\n const sqlTarget = selectedText || activeTab.sql;\n if (!sqlTarget.trim()) return;\n\n // Destructive operation check\n const destructiveKeywords = [\"DELETE\", \"DROP\", \"TRUNCATE\", \"UPDATE\"];\n const hasDestructive = destructiveKeywords.some(kw => sqlTarget.toUpperCase().includes(kw));\n const hasWhere = sqlTarget.toUpperCase().includes(\"WHERE\");\n\n if (hasDestructive && (!hasWhere || sqlTarget.toUpperCase().includes(\"DROP\") || sqlTarget.toUpperCase().includes(\"TRUNCATE\"))) {\n setPendingAction(() => () => executeRun(selectedText));\n setIsConfirmDialogOpen(true);\n return;\n }\n\n executeRun(selectedText);\n }, [activeTab.sql, executeRun]);\n\n // Global keybindings\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === \"Enter\") {\n // If we are in an input or textarea (except the code editor which handles its own), we might not want to run\n const activeElement = document.activeElement;\n const isInput = activeElement?.tagName === \"INPUT\" || activeElement?.tagName === \"TEXTAREA\";\n // If it's the monaco editor textarea, it's fine, let's trigger handleRun\n // Actually the monaco editor already has its own action, so we don't need a global one IF focused in monaco.\n // But wait, if we have both, it might run twice.\n // Let's check if we're focused in monaco.\n const isMonaco = activeElement?.className?.includes(\"monaco-mouse-cursor-text\");\n\n if (!isMonaco && !isInput) {\n e.preventDefault();\n handleRun();\n }\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [handleRun]);\n\n const handleSaveSnippet = () => {\n if (!newSnippetName.trim() || !sql.trim()) return;\n\n const newSnippet: Snippet = {\n id: Math.random().toString(36).substring(2, 9),\n name: newSnippetName,\n sql: sql,\n createdAt: Date.now()\n };\n\n saveSnippets([...snippets, newSnippet]);\n setNewSnippetName(\"\");\n setIsSaveDialogOpen(false);\n snackbarController.open({\n type: \"success\",\n message: t(\"studio_sql_snippet_saved\", { name: newSnippetName })\n });\n };\n\n const handleExportCSV = () => {\n if (!results || results.length === 0) return;\n\n const headers = Object.keys(results[0]).join(\",\");\n const rows = results.map(row =>\n Object.values(row).map(val => {\n const str = String(val);\n return str.includes(\",\") ? `\"${str}\"` : str;\n }).join(\",\")\n );\n const csv = [headers, ...rows].join(\"\\n\");\n const blob = new Blob([csv], { type: \"text/csv\" });\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `query_results_${new Date().toISOString().slice(0, 19)}.csv`;\n a.click();\n window.URL.revokeObjectURL(url);\n };\n\n const handleExportJSON = () => {\n if (!results || results.length === 0) return;\n\n const json = JSON.stringify(results, null, 2);\n const blob = new Blob([json], { type: \"application/json\" });\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `query_results_${new Date().toISOString().slice(0, 19)}.json`;\n a.click();\n window.URL.revokeObjectURL(url);\n };\n\n const handleExportMarkdown = () => {\n if (!results || results.length === 0) return;\n\n const headers = Object.keys(results[0]);\n const headerRow = `| ${headers.join(\" | \")} |`;\n const dividerRow = `| ${headers.map(() => \"---\").join(\" | \")} |`;\n const dataRows = results.map(row =>\n `| ${headers.map(header => {\n const val = row[header];\n if (val === null) return \"null\";\n if (val === undefined) return \"\";\n // Replace pipes and newlines to avoid breaking the markdown table\n return String(val).replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \");\n }).join(\" | \")} |`\n );\n\n const markdown = [headerRow, dividerRow, ...dataRows].join(\"\\n\");\n navigator.clipboard.writeText(markdown).then(() => {\n snackbarController.open({\n type: \"success\",\n message: t(\"studio_sql_markdown_copied\")\n });\n }).catch(() => {\n snackbarController.open({\n type: \"error\",\n message: t(\"studio_sql_markdown_copy_failed\")\n });\n });\n };\n\n const renderResults = () => {\n if (loading) {\n return (\n <div className=\"flex-grow flex items-center justify-center\">\n <div className=\"text-center\">\n <CircularProgress size=\"medium\" />\n <Typography variant=\"body2\" className=\"mt-4 text-text-secondary dark:text-text-secondary-dark font-mono tracking-tight animate-pulse\">{t(\"studio_sql_executing_query\")}</Typography>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"flex-grow flex items-center justify-center p-6 overflow-auto\">\n <ErrorView title={t(\"studio_sql_query_error\")} error={error} />\n </div>\n );\n }\n\n if (!results) {\n return (\n <div className=\"flex-grow flex items-center justify-center text-text-disabled dark:text-text-disabled-dark\">\n <div className=\"text-center\">\n <svg className=\"w-12 h-12 mx-auto mb-4 opacity-50\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1} d=\"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4\" /></svg>\n <Typography variant=\"body2\">{t(\"studio_sql_run_query_placeholder\")}</Typography>\n </div>\n </div>\n );\n }\n\n // Check for EXPLAIN (FORMAT JSON) response\n if (results.length === 1 && results[0][\"QUERY PLAN\"] && Array.isArray(results[0][\"QUERY PLAN\"])) {\n try {\n const plan = results[0][\"QUERY PLAN\"][0].Plan;\n if (plan) {\n return (\n <div className=\"flex-grow overflow-auto p-4 bg-surface-50 dark:bg-surface-900 flex flex-col items-start\">\n <Typography variant=\"caption\" className=\"font-bold text-text-secondary mb-4 tracking-wider uppercase\">{t(\"studio_sql_visual_execution_plan\")}</Typography>\n <div className=\"pb-12\">\n <ExplainVisualizer plan={plan} />\n </div>\n </div>\n );\n }\n } catch (e) {\n console.warn(\"Failed to parse EXPLAIN JSON output:\", e);\n }\n }\n\n if (results.length === 0) {\n return (\n <div className=\"flex-grow p-6 flex flex-col items-center justify-center\">\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark font-mono border-b border-surface-200 dark:border-surface-800 pb-2 mb-2\">{t(\"studio_sql_success\")}</Typography>\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_no_results\")}</Typography>\n </div>\n );\n }\n\n const savedWidths = columnWidths[activeTab.sql] || {};\n const resultColumnKeys = Object.keys(results[0]);\n\n // Compute matched collections for this query, including PK column detection\n const matchedCollections: ResolvedQueryCollection[] = (() => {\n if (!activeTab.lastExecutedSql || !collectionRegistry.collections) return [];\n try {\n return resolveQueryCollections(activeTab.lastExecutedSql, schemas, collectionRegistry.collections, resultColumnKeys);\n } catch {\n return [];\n }\n })();\n\n // Only collections that have a PK column in the result set can be opened\n const actionableCollections = matchedCollections.filter(mc => mc.pkColumn && resultColumnKeys.includes(mc.pkColumn));\n\n // For each row, determine which entities can be opened\n const getRowEntityActions = (rowData: Record<string, unknown>): { collection: ResolvedQueryCollection, entityId: string | number }[] => {\n if (!rowData) return [];\n return actionableCollections\n .filter(mc => rowData[mc.pkColumn!] != null)\n .map(mc => ({\n collection: mc,\n entityId: rowData[mc.pkColumn!] as string | number\n }));\n };\n\n // Build the columns array. If we have actionable collections, prepend a dedicated action column.\n const dataColumns: VirtualTableColumn[] = resultColumnKeys.map(key => ({\n key,\n title: key,\n width: savedWidths[key] ?? 150,\n sortable: false,\n resizable: true\n }));\n\n const columns: VirtualTableColumn[] = actionableCollections.length > 0\n ? [{ key: \"__cms_action__\", title: \"\", width: 36, sortable: false, resizable: false }, ...dataColumns]\n : dataColumns;\n\n return (\n <div className=\"flex-grow flex flex-col overflow-hidden min-h-0\">\n {/* Collection Badges Bar */}\n {actionableCollections.length > 0 && (\n <div className={cls(\"px-4 py-1.5 border-b flex items-center gap-2 shrink-0 bg-surface-50 dark:bg-surface-900\", defaultBorderMixin)}>\n <Tooltip title={t(\"studio_sql_cms_collections_tooltip\")}>\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-widest text-text-disabled dark:text-text-disabled-dark mr-1 shrink-0 cursor-help\">{t(\"studio_sql_cms\")}</Typography>\n </Tooltip>\n <div className=\"flex items-center gap-1.5 overflow-x-auto no-scrollbar\">\n {actionableCollections.map(mc => (\n <Tooltip key={mc.tableName} title={`Table \"${mc.tableName}\" → ${mc.collection.name} (PK: ${mc.pkColumn})`}>\n <span className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[11px] font-medium bg-primary/10 dark:bg-primary-dark/15 text-primary dark:text-primary-dark whitespace-nowrap border border-primary/20 dark:border-primary-dark/20\">\n {typeof mc.collection.icon === \"string\" && (\n <IconForView collectionOrView={mc.collection} className=\"text-[12px]\" />\n )}\n {mc.collection.name}\n </span>\n </Tooltip>\n ))}\n </div>\n </div>\n )}\n <div className=\"flex-grow relative h-full min-h-0 min-w-0\">\n <VirtualTable\n data={results}\n columns={columns}\n rowHeight={32}\n headerHeight={32}\n onColumnResizeEnd={handleColumnResize}\n cellRenderer={({ rowData, column, rowIndex }) => {\n // Dedicated collection action column\n if (column.key === \"__cms_action__\") {\n const rowActions = getRowEntityActions(rowData);\n if (rowActions.length === 0) {\n return <div className=\"h-full w-full\" />;\n }\n if (rowActions.length === 1) {\n const ra = rowActions[0];\n return (\n <div className=\"h-full flex items-center justify-center\">\n <Tooltip title={t(\"studio_sql_edit_entity\", { name: ra.collection.collection.name, id: String(ra.entityId) })}>\n <IconButton\n size=\"small\"\n className=\"text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 transition-colors\"\n onClick={(e) => {\n e.stopPropagation();\n sideEntityController?.open({\n path: ra.collection.collection.slug,\n entityId: ra.entityId,\n collection: ra.collection.collection,\n updateUrl: false\n });\n }}\n >\n <EditIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n }\n // Multiple matched collections (JOIN) — show a dropdown\n return (\n <div className=\"h-full flex items-center justify-center\">\n <Menu\n trigger={\n <IconButton\n size=\"small\"\n className=\"text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300 transition-colors\"\n onClick={(e) => e.stopPropagation()}\n >\n <MoreVertIcon size=\"small\" />\n </IconButton>\n }\n >\n {rowActions.map(ra => (\n <MenuItem\n key={ra.collection.tableName}\n dense\n onClick={() => {\n sideEntityController?.open({\n path: ra.collection.collection.slug,\n entityId: ra.entityId,\n collection: ra.collection.collection,\n updateUrl: false\n });\n }}\n >\n {t(\"studio_sql_edit_entity\", { name: ra.collection.collection.name, id: String(ra.entityId) })}\n </MenuItem>\n ))}\n </Menu>\n </div>\n );\n }\n\n // Regular data cell\n const isEditing = editingCell?.rowIndex === rowIndex && editingCell?.columnKey === column.key;\n const value = rowData ? rowData[column.key] : null;\n const displayValue = typeof value === \"object\" && value !== null ? JSON.stringify(value) : String(value ?? \"\");\n\n if (isEditing) {\n return (\n <div className=\"absolute inset-x-0 -inset-y-0.5 z-10 bg-surface-50 dark:bg-surface-900 border border-primary dark:border-primary-dark shadow-md overflow-y-auto max-h-[200px] flex px-2 py-1 items-start text-[13px] font-mono\">\n {VirtualTableInput ? (\n <VirtualTableInput\n error={undefined}\n value={displayValue}\n multiline={true}\n focused={true}\n disabled={false}\n updateValue={(newValue: string | null) => {\n handleCellSave(newValue, rowData, column.key, rowIndex);\n }}\n onBlur={() => setEditingCell(null)}\n />\n ) : (\n <input\n className=\"w-full bg-transparent outline-none font-mono text-[13px]\"\n defaultValue={displayValue}\n autoFocus\n onBlur={(e) => {\n handleCellSave(e.target.value || null, rowData, column.key, rowIndex);\n setEditingCell(null);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleCellSave((e.target as HTMLInputElement).value || null, rowData, column.key, rowIndex);\n setEditingCell(null);\n }\n if (e.key === \"Escape\") setEditingCell(null);\n }}\n />\n )}\n </div>\n );\n }\n\n return (\n <div\n className=\"px-4 py-1.5 h-full flex items-center whitespace-nowrap text-[13px] text-text-primary dark:text-text-primary-dark font-mono cursor-text group/cell\"\n onDoubleClick={() => handleDoubleClick(rowIndex, column.key, displayValue, rowData)}\n >\n <div className=\"truncate flex-grow\" title={displayValue}>\n {displayValue === \"\" ? <span className=\"text-text-disabled dark:text-text-disabled-dark italic text-[11px]\">NULL</span> : displayValue}\n </div>\n </div>\n );\n }}\n />\n </div>\n\n <div className={cls(\"p-2 px-4 border-t bg-surface-50 dark:bg-surface-900 flex justify-between items-center shrink-0\", defaultBorderMixin)}>\n <div className=\"flex space-x-4\">\n <div className=\"flex items-center text-[11px]\">\n <span className=\"font-bold text-text-disabled dark:text-text-disabled-dark mr-2 uppercase tracking-tighter\">{t(\"studio_sql_rows\")}</span>\n <span className=\"font-mono text-text-secondary dark:text-text-secondary-dark\">{results.length}</span>\n </div>\n <div className=\"flex items-center text-[11px]\">\n <span className=\"font-bold text-text-disabled dark:text-text-disabled-dark mr-2 uppercase tracking-tighter\">{t(\"studio_sql_time\")}</span>\n <span className=\"font-mono text-text-secondary dark:text-text-secondary-dark\">{execTime}ms</span>\n </div>\n </div>\n <div className=\"flex gap-2 overflow-x-auto no-scrollbar items-center px-2\">\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={handleExportMarkdown}\n >\n {t(\"studio_sql_copy_markdown\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={handleExportJSON}\n >\n {t(\"studio_sql_export_json\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={handleExportCSV}\n >\n {t(\"studio_sql_export_csv\")}\n </Button>\n </div>\n </div>\n </div>\n );\n };\n\n const [sidebarSize, setSidebarSize] = useState(() => {\n try {\n const saved = localStorage.getItem(\"rebase_sql_editor_sidebar_size\");\n return saved !== null ? parseFloat(saved) : 20;\n } catch (e) {\n return 20;\n }\n });\n const [editorHeight, setEditorHeight] = useState(() => {\n try {\n const saved = localStorage.getItem(\"rebase_sql_editor_height\");\n return saved !== null ? parseFloat(saved) : 50;\n } catch (e) {\n return 50;\n }\n });\n\n useEffect(() => {\n try {\n localStorage.setItem(\"rebase_sql_editor_sidebar_size\", sidebarSize.toString());\n } catch (e) { }\n }, [sidebarSize]);\n\n useEffect(() => {\n try {\n localStorage.setItem(\"rebase_sql_editor_height\", editorHeight.toString());\n } catch (e) { }\n }, [editorHeight]);\n\n const activeSnippet = snippets.find(s => s.sql === activeTab.sql);\n const isFavorite = activeSnippet?.isFavorite || false;\n\n return (\n <div className=\"flex h-full w-full bg-white dark:bg-surface-950 overflow-hidden text-text-primary dark:text-text-primary-dark\">\n <ResizablePanels\n orientation=\"horizontal\"\n panelSizePercent={sidebarSize}\n onPanelSizeChange={setSidebarSize}\n minPanelSizePx={220}\n firstPanel={\n <SQLEditorSidebar\n snippets={snippets}\n history={history}\n onSelectSnippet={setSql}\n onTableClick={setSql}\n onDeleteSnippet={handleDeleteSnippet}\n schemas={schemas}\n isSchemaLoading={isSchemaLoading}\n schemaError={schemaError}\n onRetrySchema={fetchSchema}\n />\n }\n secondPanel={\n <div className=\"flex-grow flex flex-col min-w-0 h-full w-full\">\n {/* Toolbar */}\n <div className={cls(\"flex items-center justify-between pr-2 border-b bg-white dark:bg-surface-950\", defaultBorderMixin)}>\n <div className=\"flex items-center flex-grow overflow-hidden mr-4\">\n <div className=\"flex items-center no-scrollbar overflow-x-auto min-w-0\">\n <Tabs value={activeTabId} onValueChange={handleTabChange} variant=\"boxy\" className=\"w-[unset] flex-shrink-0\" innerClassName=\"bg-white dark:bg-surface-950\">\n {tabs.map(tab => (\n <Tab key={tab.id} value={tab.id} className=\"flex items-center justify-between group max-w-[200px]\">\n <TerminalIcon size=\"smallest\" className=\"text-blue-500 mr-1.5 flex-shrink-0\" />\n <span className=\"truncate\">{tab.name}</span>\n {tabs.length > 1 && (\n <IconButton\n size=\"smallest\"\n onClick={(e) => handleCloseTab(tab.id, e)}\n className=\"ml-1 !p-0.5 opacity-0 group-hover:opacity-100 hover:text-red-500 transition-opacity\"\n >\n <CloseIcon size=\"smallest\" />\n </IconButton>\n )}\n </Tab>\n ))}\n </Tabs>\n <IconButton\n size=\"small\"\n onClick={handleAddTab}\n className=\"ml-2 flex-shrink-0\"\n >\n <AddIcon size=\"small\" />\n </IconButton>\n </div>\n </div>\n <div className=\"flex shrink-0 items-center justify-end pr-2 gap-1.5\">\n <Tooltip title={t(\"studio_sql_format_sql\")}>\n <IconButton size=\"small\" onClick={handlePrettify} className=\"text-text-secondary hover:text-text-primary transition-colors\">\n <NotesIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={handleExplain}\n disabled={loading}\n >\n {t(\"studio_sql_explain\")}\n </Button>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\"></div>\n\n <div className=\"flex items-center space-x-2 px-2 cursor-pointer\" onClick={() => setAutoLimit(!autoLimit)}>\n <Typography variant=\"caption\" className=\"text-[11px] text-text-secondary cursor-pointer select-none\">{t(\"studio_sql_limit_1000\")}</Typography>\n <input\n type=\"checkbox\"\n checked={autoLimit}\n onChange={(e) => setAutoLimit(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n className=\"w-3.5 h-3.5 rounded border-surface-300 text-primary focus:ring-primary cursor-pointer\"\n />\n </div>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\"></div>\n\n <Tooltip title={isFavorite ? t(\"studio_sql_remove_from_favorites\") : t(\"studio_sql_add_to_favorites\")}>\n <IconButton\n size=\"small\"\n onClick={() => {\n if (!activeSnippet) {\n snackbarController.open({\n type: \"info\",\n message: t(\"studio_sql_save_first_to_favorite\")\n });\n return;\n }\n saveSnippets(snippets.map(s => s.id === activeSnippet.id ? { ...s, isFavorite: !s.isFavorite } : s));\n }}\n >\n <svg className={`w-4 h-4 ${isFavorite ? 'text-red-500 fill-current' : 'text-text-disabled dark:text-text-disabled-dark hover:text-text-primary'}`} fill={isFavorite ? \"currentColor\" : \"none\"} stroke=\"currentColor\" strokeWidth={2} viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\" /></svg>\n </IconButton>\n </Tooltip>\n\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={() => setIsSaveDialogOpen(true)}\n >\n {t(\"studio_sql_save\")}\n </Button>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\"></div>\n\n <Menu\n trigger={\n <Button\n size=\"small\"\n variant=\"outlined\"\n className=\"text-text-secondary dark:text-text-secondary-dark font-medium mr-2\"\n >\n <StorageIcon size=\"small\" className=\"mr-1.5 text-text-disabled dark:text-text-disabled-dark\" />\n <span className=\"max-w-[80px] truncate\">{isLoadingConfig ? \"...\" : (selectedDatabase || t(\"studio_sql_select_db\"))}</span>\n </Button>\n }\n >\n <div className=\"max-h-64 overflow-y-auto\">\n <div className=\"px-3 py-1.5 border-b border-surface-200 dark:border-surface-800 mb-1\">\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-[9px] text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_database\")}</Typography>\n </div>\n {isLoadingConfig ? (\n <div className=\"flex items-center justify-center p-4\">\n <CircularProgress size=\"small\" />\n </div>\n ) : connectionConfigError ? (\n <div className=\"px-3 py-2 text-xs text-red-500 dark:text-red-400 max-w-[200px] break-words\">\n {connectionConfigError}\n </div>\n ) : (\n <>\n {availableDatabases.map(db => (\n <MenuItem key={db} dense onClick={() => handleDatabaseChange(db)} className={cls(\"text-xs\", selectedDatabase === db && \"text-primary dark:text-primary-dark\")}>\n {db}\n </MenuItem>\n ))}\n\n <div className=\"px-3 py-1.5 border-y border-surface-200 dark:border-surface-800 mb-1 mt-1\">\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-[9px] text-text-disabled dark:text-text-disabled-dark\">{t(\"studio_sql_role\")}</Typography>\n </div>\n {availableRoles.map(role => (\n <MenuItem key={role} dense onClick={() => handleRoleChange(role)} className={cls(\"text-xs\", selectedRole === role && \"text-primary dark:text-primary-dark\")}>\n {role}{role === \"postgres\" ? \" \" + t(\"studio_sql_admin\") : \"\"}\n </MenuItem>\n ))}\n </>\n )}\n </div>\n </Menu>\n\n <Button\n onClick={() => handleRun()}\n disabled={loading}\n size=\"small\"\n color=\"primary\"\n >\n {loading ? <CircularProgress size=\"smallest\" className=\"mr-2\" /> : <PlayArrowIcon size=\"small\" className=\"mr-2\" />}\n {t(\"studio_sql_run\")}\n </Button>\n </div>\n </div>\n\n <ResizablePanels\n orientation=\"vertical\"\n panelSizePercent={editorHeight}\n onPanelSizeChange={setEditorHeight}\n minPanelSizePx={100}\n firstPanel={\n <div className=\"h-full w-full relative flex flex-col min-h-0\">\n <MonacoEditor\n value={sql}\n onChange={(v) => setSql(v || \"\")}\n onRun={handleRun}\n schemas={schemas}\n />\n </div>\n }\n secondPanel={\n <div className=\"h-full w-full flex flex-col bg-surface-50 dark:bg-surface-950 overflow-hidden min-h-0\">\n <div className={cls(\"p-2 px-4 bg-surface-100 dark:bg-surface-900 border-b shrink-0 flex items-center\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold text-text-disabled dark:text-text-disabled-dark uppercase tracking-widest text-[10px]\">{t(\"studio_sql_query_results\")}</Typography>\n </div>\n <div className=\"flex-grow flex flex-col min-h-0 overflow-hidden\">\n {renderResults()}\n </div>\n </div>\n }\n />\n\n </div>\n }\n />\n\n <Dialog open={isSaveDialogOpen} onOpenChange={setIsSaveDialogOpen}>\n <DialogTitle>{t(\"studio_sql_save_snippet\")}</DialogTitle>\n <DialogContent>\n <div className=\"py-4 flex flex-col gap-4\">\n <TextField\n label={t(\"studio_sql_snippet_name\")}\n autoFocus\n placeholder={t(\"studio_sql_snippet_name_placeholder\")}\n value={newSnippetName}\n onChange={(e) => setNewSnippetName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSaveSnippet();\n }\n }}\n />\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark block\">{t(\"studio_sql_snippet_saved_local\")}</Typography>\n </div>\n </DialogContent>\n <DialogActions>\n <Button variant=\"text\" onClick={() => setIsSaveDialogOpen(false)}>{t(\"studio_sql_cancel\")}</Button>\n <Button onClick={handleSaveSnippet} color=\"primary\" disabled={!newSnippetName.trim()}>{t(\"studio_sql_save\")}</Button>\n </DialogActions>\n </Dialog>\n {/* Confirmation Dialog */}\n <ConfirmationDialog\n open={isConfirmDialogOpen}\n onCancel={() => setIsConfirmDialogOpen(false)}\n title={t(\"studio_sql_dangerous_operation\")}\n body={t(\"studio_sql_dangerous_operation_body\")}\n onAccept={() => {\n if (pendingAction) pendingAction();\n setIsConfirmDialogOpen(false);\n }}\n />\n </div>\n );\n};\n","import React, { useRef, useEffect } from \"react\";\nimport Editor, { Monaco, OnMount } from \"@monaco-editor/react\";\nimport type { editor } from \"monaco-editor\";\nimport { cls, defaultBorderMixin } from \"@rebasepro/ui\";\nimport { useModeController } from \"@rebasepro/core\";\n\n/** Ambient type definitions for the Rebase client SDK injected into Monaco. */\nconst REBASE_CLIENT_TYPES = `\n// ─── Rebase Client SDK Type Definitions ─────────────────────────────\n\ninterface Entity<M extends Record<string, any> = any> {\n id: string | number;\n path: string;\n values: M;\n}\n\ninterface FindParams {\n limit?: number;\n offset?: number;\n page?: number;\n where?: Record<string, string>;\n orderBy?: string;\n include?: string[];\n searchString?: string;\n}\n\ninterface FindResponse<M extends Record<string, any> = any> {\n data: Entity<M>[];\n meta: {\n total: number;\n limit: number;\n offset: number;\n hasMore: boolean;\n };\n}\n\ntype FilterOperator = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"in\" | \"not-in\" | \"array-contains\" | \"array-contains-any\" | \"is\" | \"is_not\" | \"like\" | \"ilike\";\n\ninterface QueryBuilder<M extends Record<string, any> = any> {\n where(column: keyof M & string, operator: FilterOperator, value: any): QueryBuilder<M>;\n orderBy(column: keyof M & string, direction?: \"asc\" | \"desc\"): QueryBuilder<M>;\n limit(count: number): QueryBuilder<M>;\n offset(count: number): QueryBuilder<M>;\n search(searchString: string): QueryBuilder<M>;\n find(): Promise<FindResponse<M>>;\n findOne(): Promise<Entity<M> | undefined>;\n count(): Promise<number>;\n}\n\ninterface CollectionClient<M extends Record<string, any> = any> {\n find(params?: FindParams): Promise<FindResponse<M>>;\n findById(id: string | number): Promise<Entity<M> | undefined>;\n create(data: Partial<M>, id?: string | number): Promise<Entity<M>>;\n update(id: string | number, data: Partial<M>): Promise<Entity<M>>;\n delete(id: string | number): Promise<void>;\n where(column: keyof M & string, operator: FilterOperator, value: any): QueryBuilder<M>;\n orderBy(column: keyof M & string, direction?: \"asc\" | \"desc\"): QueryBuilder<M>;\n limit(count: number): QueryBuilder<M>;\n offset(count: number): QueryBuilder<M>;\n search(searchString: string): QueryBuilder<M>;\n listen?(params: FindParams | undefined, onUpdate: (response: FindResponse<M>) => void, onError?: (error: Error) => void): () => void;\n listenById?(id: string | number, onUpdate: (entity: Entity<M> | undefined) => void, onError?: (error: Error) => void): () => void;\n count?(params?: FindParams): Promise<number>;\n}\n\ninterface RebaseUser {\n uid: string;\n email: string | null;\n displayName: string | null;\n photoURL: string | null;\n emailVerified?: boolean;\n roles?: string[];\n providerId: string;\n isAnonymous: boolean;\n}\n\ninterface RebaseSession {\n accessToken: string;\n refreshToken: string;\n expiresAt: number;\n user: RebaseUser;\n}\n\ntype AuthChangeEvent = 'SIGNED_IN' | 'SIGNED_OUT' | 'TOKEN_REFRESHED' | 'USER_UPDATED';\n\ninterface RebaseAuth {\n signInWithEmail(email: string, password: string): Promise<{ user: RebaseUser; accessToken: string; refreshToken: string }>;\n signUp(email: string, password: string, displayName?: string): Promise<{ user: RebaseUser; accessToken: string; refreshToken: string }>;\n signInWithGoogle(idToken: string): Promise<{ user: RebaseUser; accessToken: string; refreshToken: string }>;\n signOut(): Promise<void>;\n refreshSession(): Promise<RebaseSession>;\n getUser(): Promise<RebaseUser>;\n updateUser(updates: { displayName?: string; photoURL?: string }): Promise<RebaseUser>;\n resetPasswordForEmail(email: string): Promise<{ success: boolean; message: string }>;\n resetPassword(token: string, password: string): Promise<{ success: boolean; message: string }>;\n changePassword(oldPassword: string, newPassword: string): Promise<{ success: boolean; message: string }>;\n sendVerificationEmail(): Promise<{ success: boolean; message: string }>;\n verifyEmail(token: string): Promise<{ success: boolean; message: string }>;\n getSessions(): Promise<any[]>;\n revokeSession(sessionId: string): Promise<{ success: boolean }>;\n revokeAllSessions(): Promise<{ success: boolean }>;\n getSession(): RebaseSession | null;\n onAuthStateChange(callback: (event: AuthChangeEvent, session: RebaseSession | null) => void): () => void;\n}\n\ninterface AdminUser {\n uid: string;\n email: string;\n displayName: string | null;\n photoURL: string | null;\n provider: string;\n roles: string[];\n createdAt: string;\n updatedAt: string;\n}\n\ninterface RebaseRole {\n id: string;\n name: string;\n isAdmin: boolean;\n defaultPermissions: Record<string, any> | null;\n config: Record<string, any> | null;\n}\n\ninterface RebaseAdmin {\n listUsers(): Promise<{ users: AdminUser[] }>;\n getUser(userId: string): Promise<{ user: AdminUser }>;\n createUser(data: { email: string; displayName?: string; password?: string; roles?: string[] }): Promise<{ user: AdminUser }>;\n updateUser(userId: string, data: { email?: string; displayName?: string; password?: string; roles?: string[] }): Promise<{ user: AdminUser }>;\n deleteUser(userId: string): Promise<{ success: boolean }>;\n listRoles(): Promise<{ roles: RebaseRole[] }>;\n getRole(roleId: string): Promise<{ role: RebaseRole }>;\n createRole(data: { id: string; name: string; isAdmin?: boolean; defaultPermissions?: any; config?: any }): Promise<{ role: RebaseRole }>;\n updateRole(roleId: string, data: { name?: string; isAdmin?: boolean; defaultPermissions?: any; config?: any }): Promise<{ role: RebaseRole }>;\n deleteRole(roleId: string): Promise<{ success: boolean }>;\n bootstrap(): Promise<{ success: boolean; message: string; user: { uid: string; roles: string[] } }>;\n}\n\ninterface UploadFileProps {\n file: File;\n fileName?: string;\n path?: string;\n metadata?: Record<string, any>;\n bucket?: string;\n}\n\ninterface UploadFileResult {\n path: string;\n bucket?: string;\n downloadUrl?: string;\n}\n\ninterface DownloadConfig {\n url: string | null;\n fileNotFound?: boolean;\n metadata?: any;\n}\n\ninterface StorageSource {\n uploadFile(props: UploadFileProps): Promise<UploadFileResult>;\n getDownloadURL(pathOrUrl: string, bucket?: string): Promise<DownloadConfig>;\n getFile(path: string, bucket?: string): Promise<File | null>;\n deleteFile(path: string, bucket?: string): Promise<void>;\n list(path: string, options?: { bucket?: string; maxResults?: number; pageToken?: string }): Promise<any>;\n}\n\ntype RebaseData = {\n /** Look up a collection by slug. */\n collection(slug: string): CollectionClient;\n} & {\n /** Dynamic collection access — e.g. client.data.authors */\n [collectionSlug: string]: CollectionClient;\n};\n\n/**\n * The Rebase client instance. Use \\`client.data\\`, \\`client.auth\\`, \\`client.admin\\`,\n * \\`client.storage\\`, and \\`client.call()\\` to interact with your Rebase backend.\n *\n * @example\n * // Query a collection\n * const result = await client.data.products.find({ limit: 10 });\n *\n * // Create a record\n * await client.data.products.create({ name: \"Camera\", price: 299 });\n *\n * // Fluent query\n * const expensive = await client.data.products.where(\"price\", \">\", 100).orderBy(\"price\", \"desc\").limit(5).find();\n *\n * // Auth\n * const session = client.auth.getSession();\n *\n * // Admin\n * const { users } = await client.admin.listUsers();\n *\n * // Custom endpoint\n * const result = await client.call(\"/my-endpoint\", { myData: 123 });\n */\ninterface RebaseClient {\n /** Data access — dynamic collection accessors */\n data: RebaseData;\n /** Authentication methods */\n auth: RebaseAuth;\n /** User/role admin methods */\n admin: RebaseAdmin;\n /** Storage operations */\n storage?: StorageSource;\n /** Call a custom server-side endpoint */\n call<T = any>(endpoint: string, payload?: any): Promise<T>;\n /** Direct collection access (shorthand) */\n [collectionSlug: string]: any;\n}\n\n/** The pre-configured client instance. Already authenticated with the current user session. */\ndeclare const client: RebaseClient;\n\n/** Execution context with user and collection information. */\ninterface JSEditorContext {\n /** The user the script is running as. */\n user: {\n uid: string;\n displayName: string | null;\n email: string | null;\n roles?: string[];\n } | null;\n /** Registered collections with their property names. */\n collections: Array<{\n slug: string;\n name: string;\n properties: string[];\n }>;\n}\n\n/** Execution context — contains info about the selected user and registered collections. */\ndeclare const context: JSEditorContext;\n`;\n\nexport type CollectionInfo = {\n slug: string;\n name: string;\n properties: string[];\n};\n\nexport type JSMonacoEditorProps = {\n value: string;\n onChange: (value: string | undefined) => void;\n onRun?: (selectedText?: string) => void;\n className?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n /** Collection slugs for basic autocomplete */\n collectionSlugs?: string[];\n /** Full collection info with property names for richer type generation */\n collections?: CollectionInfo[];\n};\n\nexport const JSMonacoEditor = ({\n value,\n onChange,\n onRun,\n className,\n readOnly = false,\n autoFocus = true,\n collectionSlugs = [],\n collections = []\n}: JSMonacoEditorProps) => {\n const { mode } = useModeController();\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const onRunRef = useRef(onRun);\n onRunRef.current = onRun;\n const typesRegisteredRef = useRef(false);\n\n const handleEditorOnMount: OnMount = (editorInstance, monaco) => {\n editorRef.current = editorInstance;\n monacoRef.current = monaco;\n\n // Register Cmd/Ctrl+Enter to run\n editorInstance.addAction({\n id: \"run-script\",\n label: \"Run Script\",\n keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter],\n contextMenuGroupId: \"operation\",\n contextMenuOrder: 0,\n run: () => {\n if (onRunRef.current) {\n const selection = editorInstance.getSelection();\n let selectedText: string | undefined;\n if (selection && !selection.isEmpty()) {\n selectedText = editorInstance.getModel()?.getValueInRange(selection)?.trim();\n }\n onRunRef.current(selectedText || undefined);\n }\n },\n });\n\n // Configure TypeScript/JavaScript defaults for richer completion\n if (!typesRegisteredRef.current) {\n typesRegisteredRef.current = true;\n\n // Configure TS compiler for modern JS with top-level await\n // Note: cast through `any` because the bundled type stubs mark\n // `monaco.languages.typescript` as deprecated while the runtime\n // API is fully functional.\n const ts = (monaco.languages as any).typescript;\n ts.typescriptDefaults.setCompilerOptions({\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n allowJs: true,\n checkJs: false,\n strict: false,\n noEmit: true,\n allowNonTsExtensions: true,\n });\n\n // Suppress diagnostics that don't apply to our script context.\n // Scripts are executed inside `new AsyncFunction(...)` at runtime,\n // so top-level `await` (1375) and `return` (1108) are valid.\n ts.typescriptDefaults.setDiagnosticsOptions({\n diagnosticCodesToIgnore: [1375, 1108],\n });\n\n // Inject the Rebase Client SDK type definitions\n ts.typescriptDefaults.addExtraLib(\n REBASE_CLIENT_TYPES,\n \"ts:rebase-client.d.ts\"\n );\n\n // Generate collection-specific types from registered collections\n if (collections.length > 0) {\n const lines: string[] = [];\n for (const col of collections) {\n // Generate a typed interface for each collection\n const ifaceName = col.slug.replace(/[^a-zA-Z0-9_]/g, '_');\n const propsType = col.properties.length > 0\n ? `{ ${col.properties.map(p => `${p}: any`).join('; ')} }`\n : 'Record<string, any>';\n lines.push(`/** Collection: ${col.name} (${col.slug}) */`);\n lines.push(`interface ${ifaceName}_Row ${propsType}`);\n lines.push(`declare namespace client.data { const ${col.slug}: CollectionClient<${ifaceName}_Row>; }`);\n }\n ts.typescriptDefaults.addExtraLib(\n lines.join('\\n'),\n 'ts:rebase-collections.d.ts'\n );\n } else if (collectionSlugs.length > 0) {\n // Fallback: just slug names without property info\n const collectionHints = collectionSlugs.map(slug =>\n `/** Collection: ${slug} */\\ndeclare namespace client.data { const ${slug}: CollectionClient; }`\n ).join('\\n');\n ts.typescriptDefaults.addExtraLib(\n collectionHints,\n 'ts:rebase-collections.d.ts'\n );\n }\n }\n\n if (autoFocus) {\n editorInstance.focus();\n }\n };\n\n return (\n <div className={cls(\"relative w-full h-full overflow-hidden\", className)}>\n <Editor\n height=\"100%\"\n defaultLanguage=\"typescript\"\n path=\"rebase-script.ts\"\n value={value}\n onChange={onChange}\n onMount={handleEditorOnMount}\n theme={mode === \"dark\" ? \"vs-dark\" : \"vs\"}\n options={{\n minimap: { enabled: false },\n fontSize: 14,\n lineNumbers: \"on\",\n scrollBeyondLastLine: false,\n automaticLayout: true,\n readOnly,\n tabSize: 2,\n wordWrap: \"on\",\n suggestOnTriggerCharacters: true,\n quickSuggestions: true,\n parameterHints: { enabled: true },\n }}\n />\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport {\n Typography,\n cls,\n defaultBorderMixin,\n Tabs,\n Tab,\n Tooltip,\n IconButton,\n AddIcon,\n DeleteIcon\n} from \"@rebasepro/ui\";\n\nexport interface JSSnippet {\n id: string;\n name: string;\n code: string;\n createdAt: number;\n isFavorite?: boolean;\n}\n\ninterface CollectionInfo {\n slug: string;\n properties: string[];\n}\n\ninterface JSEditorSidebarProps {\n collections: CollectionInfo[];\n snippets: JSSnippet[];\n history: string[];\n onSelectSnippet: (code: string) => void;\n onDeleteSnippet: (id: string) => void;\n onInsertCode: (code: string) => void;\n}\n\nconst QUICK_REFERENCE: { label: string; code: string; description: string }[] = [\n {\n label: \"Find all\",\n code: `const result = await client.data.collection(\"COLLECTION\").find({ limit: 20 });\\nreturn result;`,\n description: \"Fetch records with pagination\"\n },\n {\n label: \"Find by ID\",\n code: `const item = await client.data.collection(\"COLLECTION\").findById(\"ID\");\\nreturn item;`,\n description: \"Fetch a single record\"\n },\n {\n label: \"Create\",\n code: `const created = await client.data.collection(\"COLLECTION\").create({\\n // your fields here\\n});\\nreturn created;`,\n description: \"Insert a new record\"\n },\n {\n label: \"Update\",\n code: `const updated = await client.data.collection(\"COLLECTION\").update(\"ID\", {\\n // fields to update\\n});\\nreturn updated;`,\n description: \"Update an existing record\"\n },\n {\n label: \"Delete\",\n code: `await client.data.collection(\"COLLECTION\").delete(\"ID\");\\nreturn { success: true };`,\n description: \"Delete a record\"\n },\n {\n label: \"Fluent query\",\n code: `const result = await client.data.collection(\"COLLECTION\")\\n .where(\"field\", \">\", value)\\n .orderBy(\"field\", \"desc\")\\n .limit(10)\\n .find();\\nreturn result;`,\n description: \"Chained query builder\"\n },\n {\n label: \"Auth: Current session\",\n code: `const session = client.auth.getSession();\\nreturn session;`,\n description: \"Get current auth session\"\n },\n {\n label: \"Admin: List users\",\n code: `const { users } = await client.admin.listUsers();\\nreturn users;`,\n description: \"List all registered users\"\n },\n {\n label: \"Custom endpoint\",\n code: `const result = await client.call(\"/my-endpoint\", { key: \"value\" });\\nreturn result;`,\n description: \"Call a custom API endpoint\"\n }\n];\n\nexport const JSEditorSidebar = ({\n collections,\n snippets,\n history,\n onSelectSnippet,\n onDeleteSnippet,\n onInsertCode,\n}: JSEditorSidebarProps) => {\n const [activeTab, setActiveTab] = useState<\"collections\" | \"snippets\" | \"history\" | \"reference\">(\"collections\");\n\n return (\n <div className={cls(\"flex flex-col h-full w-full bg-white dark:bg-surface-950 border-r\", defaultBorderMixin)}>\n <Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as \"collections\" | \"snippets\" | \"history\" | \"reference\")} variant=\"boxy\" className=\"border-b border-surface-200 dark:border-surface-800\">\n <Tab value=\"collections\">\n <Tooltip title=\"Browse collections\">\n <span className=\"text-xs\">Collections</span>\n </Tooltip>\n </Tab>\n <Tab value=\"reference\">\n <Tooltip title=\"SDK quick reference\">\n <span className=\"text-xs\">Reference</span>\n </Tooltip>\n </Tab>\n <Tab value=\"snippets\">\n <span className=\"text-xs\">Snippets</span>\n </Tab>\n <Tab value=\"history\">\n <span className=\"text-xs\">History</span>\n </Tab>\n </Tabs>\n\n <div className=\"flex-grow overflow-hidden relative\">\n {/* Collections browser */}\n {activeTab === \"collections\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">\n Collections\n </Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-1 space-y-1 no-scrollbar\">\n {collections.length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">\n No collections found\n </Typography>\n </div>\n ) : (\n collections.map(col => (\n <CollectionItem\n key={col.slug}\n collection={col}\n onInsertCode={onInsertCode}\n />\n ))\n )}\n </div>\n </div>\n )}\n\n {/* Quick reference */}\n {activeTab === \"reference\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">\n SDK Reference\n </Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-2 space-y-2 no-scrollbar\">\n {QUICK_REFERENCE.map((ref, i) => (\n <div\n key={i}\n className={cls(\n \"group p-2.5 rounded-lg border hover:border-primary/40 dark:hover:border-primary/40\",\n \"bg-white dark:bg-surface-900 transition-all cursor-pointer\",\n defaultBorderMixin\n )}\n onClick={() => onInsertCode(ref.code)}\n >\n <div className=\"flex items-center justify-between mb-1\">\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-semibold text-[13px]\">\n {ref.label}\n </Typography>\n <svg className=\"w-3.5 h-3.5 text-text-disabled group-hover:text-primary transition-colors\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n </div>\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark text-[10px] leading-tight\">\n {ref.description}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Snippets */}\n {activeTab === \"snippets\" && (() => {\n const favorites = snippets.filter(s => s.isFavorite);\n const others = snippets.filter(s => !s.isFavorite);\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">Snippets</Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-2 space-y-2 no-scrollbar\">\n {snippets.length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">\n No saved snippets yet. Use the save button to store reusable code.\n </Typography>\n </div>\n ) : (\n <>\n {favorites.length > 0 && (\n <div className=\"mb-3\">\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark mb-2 px-1 flex items-center\">\n <svg className=\"w-3 h-3 mr-1 text-amber-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\"><path d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\" /></svg>\n Favorites\n </Typography>\n <div className=\"space-y-2\">\n {favorites.map(snippet => (\n <SnippetItem key={snippet.id} snippet={snippet} onSelect={onSelectSnippet} onDelete={onDeleteSnippet} />\n ))}\n </div>\n </div>\n )}\n {others.length > 0 && (\n <div>\n {favorites.length > 0 && (\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark mb-2 px-1\">\n Others\n </Typography>\n )}\n <div className=\"space-y-2\">\n {others.map(snippet => (\n <SnippetItem key={snippet.id} snippet={snippet} onSelect={onSelectSnippet} onDelete={onDeleteSnippet} />\n ))}\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n })()}\n\n {/* History */}\n {activeTab === \"history\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">History</Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-1 space-y-1 no-scrollbar\">\n {history.length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">\n No execution history yet\n </Typography>\n </div>\n ) : (\n [...history].reverse().map((code, i) => (\n <div\n key={i}\n className=\"p-2 py-1.5 rounded hover:bg-surface-100 dark:hover:bg-surface-800 cursor-pointer group transition-colors flex items-start\"\n onClick={() => onSelectSnippet(code)}\n >\n <svg className=\"w-3 h-3 mt-1 mr-2 text-text-disabled dark:text-text-disabled-dark group-hover:text-primary transition-colors flex-shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark group-hover:text-text-primary dark:group-hover:text-text-primary-dark text-[11px] line-clamp-2 leading-tight flex-grow font-mono\">\n {code.length > 120 ? code.substring(0, 120) + \"…\" : code}\n </Typography>\n </div>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\n// ─── Sub-components ──────────────────────────────────────────────────\n\nfunction CollectionItem({ collection, onInsertCode }: { collection: CollectionInfo; onInsertCode: (code: string) => void }) {\n const [expanded, setExpanded] = useState(false);\n\n return (\n <div>\n <div\n className=\"flex items-center p-1 cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800 rounded transition-colors group relative\"\n onClick={() => setExpanded(!expanded)}\n >\n <svg\n className={cls(\"w-3 h-3 mr-1 transition-transform\", expanded && \"rotate-90\")}\n fill=\"currentColor\" viewBox=\"0 0 20 20\"\n >\n <path d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" />\n </svg>\n <svg className=\"w-3.5 h-3.5 mr-1 shrink-0 text-text-disabled dark:text-text-disabled-dark\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4\" />\n </svg>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark text-xs truncate flex-1 min-w-0\">\n {collection.slug}\n </Typography>\n <Tooltip title=\"Insert find() snippet\">\n <IconButton\n size=\"smallest\"\n className=\"opacity-0 group-hover:opacity-100 text-text-disabled hover:text-primary transition-all\"\n onClick={(e) => {\n e.stopPropagation();\n onInsertCode(`const result = await client.data.${collection.slug}.find({ limit: 20 });\\nreturn result;`);\n }}\n >\n <AddIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n </div>\n {expanded && collection.properties.length > 0 && (\n <div className={cls(\"ml-5 mt-1 space-y-0.5 border-l\", defaultBorderMixin)}>\n {collection.properties.map(prop => (\n <div\n key={prop}\n className=\"flex items-center p-1 pl-2 hover:bg-surface-50 dark:hover:bg-surface-800 rounded-r cursor-pointer transition-colors group/prop relative min-h-[28px]\"\n onClick={() => onInsertCode(`\"${prop}\"`)}\n >\n <svg className=\"w-3 h-3 mr-1.5 text-text-disabled dark:text-text-disabled-dark shrink-0\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M9 4.5v15m6-15v15m-10.5-1.5h15c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125h-15c-.621 0-1.125.504-1.125 1.125v12.75c0 .621.504 1.125 1.125 1.125Z\" /></svg>\n <Typography variant=\"caption\" className=\"text-text-primary dark:text-text-primary-dark text-[11px] truncate flex-grow font-mono\">{prop}</Typography>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction SnippetItem({ snippet, onSelect, onDelete }: { snippet: JSSnippet; onSelect: (code: string) => void; onDelete: (id: string) => void }) {\n return (\n <div\n className={cls(\"group p-2 rounded border hover:border-surface-400 dark:hover:border-surface-600 bg-white dark:bg-surface-900 transition-all cursor-pointer relative\", defaultBorderMixin)}\n onClick={() => onSelect(snippet.code)}\n >\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-medium text-[13px] truncate pr-6\">\n {snippet.name}\n </Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[10px] block mt-1 truncate font-mono\">\n {snippet.code}\n </Typography>\n <IconButton\n size=\"smallest\"\n className=\"absolute right-1 top-1 opacity-0 group-hover:opacity-100 text-text-disabled hover:text-red-500 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(snippet.id);\n }}\n >\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </div>\n );\n}\n","import React, { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { Highlight, themes } from \"prism-react-renderer\";\nimport {\n Button,\n Typography,\n CircularProgress,\n cls,\n IconButton,\n Dialog,\n DialogContent,\n DialogActions,\n DialogTitle,\n TextField,\n Tooltip,\n defaultBorderMixin,\n ResizablePanels,\n Chip,\n Menu,\n MenuItem,\n Tabs,\n Tab,\n TerminalIcon,\n CloseIcon,\n AddIcon,\n SaveIcon,\n DownloadIcon,\n PlayArrowIcon,\n MoreVertIcon,\n EditIcon,\n VirtualTable,\n VirtualTableColumn,\n CellRendererParams,\n} from \"@rebasepro/ui\";\nimport { useStudioUrlController, useStudioCollectionRegistry, useStudioSideEntityController } from \"@rebasepro/core\";\nimport { useRebaseContext, useRebaseClient, useSnackbarController, useApiConfig, useTranslation, useModeController, ErrorView, UserSelectPopover, SelectableUser, IconForView } from \"@rebasepro/core\";\nimport { EntityCollection } from \"@rebasepro/types\";\nimport { createRebaseClient } from \"@rebasepro/client\";\nimport { JSMonacoEditor } from \"./JSMonacoEditor\";\nimport { JSEditorSidebar, JSSnippet } from \"./JSEditorSidebar\";\n\n// ─── Types ───────────────────────────────────────────────────────────\n\ninterface ConsoleEntry {\n type: \"log\" | \"warn\" | \"error\" | \"info\";\n args: any[];\n timestamp: number;\n}\n\ninterface ExecutionResult {\n value: any;\n console: ConsoleEntry[];\n duration: number;\n error?: string;\n timestamp: number;\n}\n\ninterface EditorTab {\n id: string;\n name: string;\n code: string;\n}\n\n// SelectedUser is now SelectableUser from @rebasepro/core\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst STORAGE_PREFIX = \"rebase_js_\";\nconst MAX_HISTORY = 50;\n\nconst DEFAULT_CODE = `// Available: client (RebaseClient)\n// Press Cmd+Enter (Ctrl+Enter) to run\n//\n// Examples:\n// const result = await client.data.collection(\"your_collection\").find({ limit: 10 });\n// const users = await client.admin.listUsers();\n// const session = client.auth.getSession();\n\nconst result = await client.data.collection(\"your_collection\").find({ limit: 10 });\nreturn result;\n`;\n\n// ─── Helpers ─────────────────────────────────────────────────────────\n\nfunction loadFromStorage<T>(key: string, fallback: T): T {\n try {\n const raw = localStorage.getItem(STORAGE_PREFIX + key);\n return raw ? JSON.parse(raw) : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction saveToStorage<T>(key: string, value: T) {\n try {\n localStorage.setItem(STORAGE_PREFIX + key, JSON.stringify(value));\n } catch { /* quota */ }\n}\n\nfunction formatJSON(value: any): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\n// ─── Helpers: Collection matching for JS results ────────────────────\n\ninterface MatchedJSCollection {\n collectionSlug: string;\n collection: EntityCollection;\n pkColumn: string;\n}\n\n/**\n * Slugs may be camelCase or kebab-case while table/slug data may also be snake_case.\n * Normalise to lowercase with underscores for comparison.\n */\nfunction normaliseSlug(slug: string): string {\n return slug\n .replace(/([a-z])([A-Z])/g, \"$1_$2\")\n .replace(/[-\\s]+/g, \"_\")\n .toLowerCase();\n}\n\n/**\n * Given the raw SDK result, try to detect which collections are present.\n * JS SDK results typically come back as `{ data: [{ id, values }] }` or plain arrays.\n * The heuristic: if the executed code contains `collection(\"<slug>\")` or `client.data.<slug>`,\n * and the result has rows with an \"id\" column, we match those slugs.\n */\nfunction detectCollectionsInResult(\n code: string,\n resultValue: any,\n collections: EntityCollection[]\n): MatchedJSCollection[] {\n if (!resultValue || !collections?.length) return [];\n\n // Extract collection slugs mentioned in the code\n const mentionedSlugs = new Set<string>();\n\n // Match: collection(\"slug\") or collection('slug')\n const collectionCallRegex = /\\.collection\\([\"']([^\"']+)[\"']\\)/g;\n let m: RegExpExecArray | null;\n while ((m = collectionCallRegex.exec(code)) !== null) {\n mentionedSlugs.add(m[1]);\n }\n\n // Match: client.data.<slug>. (dot-access pattern)\n const dotAccessRegex = /client\\.data\\.([a-zA-Z_][a-zA-Z0-9_]*)\\./g;\n while ((m = dotAccessRegex.exec(code)) !== null) {\n if (![\"collection\", \"find\", \"findById\", \"create\", \"update\", \"delete\"].includes(m[1])) {\n mentionedSlugs.add(m[1]);\n }\n }\n\n if (mentionedSlugs.size === 0) return [];\n\n // Check if result has rows with an \"id\" field\n let rows: any[] = [];\n if (resultValue?.data && Array.isArray(resultValue.data)) {\n rows = resultValue.data;\n } else if (Array.isArray(resultValue)) {\n rows = resultValue;\n }\n\n const hasId = rows.length > 0 && rows.some(r => r?.id != null);\n if (!hasId) return [];\n\n const matched: MatchedJSCollection[] = [];\n for (const slug of mentionedSlugs) {\n const normalised = normaliseSlug(slug);\n const col = collections.find(c => {\n const tableName = (c as any).table || normaliseSlug(c.slug);\n return c.slug === slug || tableName === normalised || normaliseSlug(c.slug) === normalised;\n });\n if (col) {\n matched.push({\n collectionSlug: col.slug,\n collection: col,\n pkColumn: \"id\",\n });\n }\n }\n\n return matched;\n}\n\n// ─── Main Component ─────────────────────────────────────────────────\n\nexport function JSEditor() {\n // Contexts\n const rebaseContext = useRebaseContext();\n const rebaseClient = useRebaseClient();\n const apiConfig = useApiConfig();\n const snackbar = useSnackbarController();\n const collectionRegistry = useStudioCollectionRegistry();\n const sideEntityController = useStudioSideEntityController();\n const { t } = useTranslation();\n\n // User management for the \"Run as\" picker\n const userManagement = rebaseContext.userManagement;\n const currentUser = rebaseContext.authController?.user;\n\n // State\n const [tabs, setTabs] = useState<EditorTab[]>(() =>\n loadFromStorage(\"tabs\", [{ id: \"1\", name: \"Script 1\", code: DEFAULT_CODE }])\n );\n const [activeTabId, setActiveTabId] = useState<string>(() =>\n loadFromStorage(\"activeTab\", \"1\")\n );\n const [result, setResult] = useState<ExecutionResult | null>(null);\n const [isRunning, setIsRunning] = useState(false);\n const [snippets, setSnippets] = useState<JSSnippet[]>(() =>\n loadFromStorage(\"snippets\", [])\n );\n const [history, setHistory] = useState<string[]>(() =>\n loadFromStorage(\"history\", [])\n );\n const [showSaveDialog, setShowSaveDialog] = useState(false);\n const [snippetName, setSnippetName] = useState(\"\");\n const [resultView, setResultView] = useState<\"json\" | \"table\" | \"console\">(\"json\");\n\n // \"Run as\" user state — null means \"self\" (current admin)\n const [selectedUser, setSelectedUser] = useState<SelectableUser | null>(null);\n\n const [sidebarSize, setSidebarSize] = useState<number>(() => {\n try {\n const stored = localStorage.getItem(STORAGE_PREFIX + \"sidebar_size\");\n return stored ? Number(stored) : 18;\n } catch { return 18; }\n });\n const [editorHeight, setEditorHeight] = useState<number>(() => {\n try {\n const stored = localStorage.getItem(STORAGE_PREFIX + \"editor_height\");\n return stored ? Number(stored) : 55;\n } catch { return 55; }\n });\n\n // Derived\n const activeTab = tabs.find(t => t.id === activeTabId) ?? tabs[0];\n\n // Collection info for the sidebar and Monaco\n const collectionInfos = useMemo(() => {\n const collections = collectionRegistry?.collections ?? [];\n return collections.map(col => ({\n slug: col.slug,\n name: col.name,\n properties: Object.keys(col.properties ?? {}),\n }));\n }, [collectionRegistry?.collections]);\n\n const collectionSlugs = useMemo(() => collectionInfos.map(c => c.slug), [collectionInfos]);\n\n // Users list for the picker — mapped to SelectableUser shape\n const users = useMemo((): SelectableUser[] => {\n const managed = (userManagement?.users ?? []).map(u => ({\n uid: u.uid,\n displayName: u.displayName,\n email: u.email,\n photoURL: u.photoURL,\n roles: u.roles,\n }));\n // Ensure the current user is in the list\n if (currentUser && !managed.some(u => u.uid === currentUser.uid)) {\n managed.unshift({\n uid: currentUser.uid,\n displayName: currentUser.displayName,\n email: currentUser.email,\n photoURL: currentUser.photoURL,\n roles: currentUser.roles,\n });\n }\n return managed;\n }, [userManagement?.users, currentUser]);\n\n // Current user as SelectableUser for the popover\n const currentSelectableUser = useMemo((): SelectableUser | null => {\n if (!currentUser) return null;\n return {\n uid: currentUser.uid,\n displayName: currentUser.displayName,\n email: currentUser.email,\n photoURL: currentUser.photoURL,\n roles: currentUser.roles,\n };\n }, [currentUser]);\n\n // ─── Persistence ─────────────────────────────────────────────\n\n useEffect(() => { saveToStorage(\"tabs\", tabs); }, [tabs]);\n useEffect(() => { saveToStorage(\"activeTab\", activeTabId); }, [activeTabId]);\n useEffect(() => { saveToStorage(\"snippets\", snippets); }, [snippets]);\n useEffect(() => { saveToStorage(\"history\", history); }, [history]);\n\n useEffect(() => {\n try { localStorage.setItem(STORAGE_PREFIX + \"sidebar_size\", sidebarSize.toString()); } catch { }\n }, [sidebarSize]);\n\n useEffect(() => {\n try { localStorage.setItem(STORAGE_PREFIX + \"editor_height\", editorHeight.toString()); } catch { }\n }, [editorHeight]);\n\n // ─── Tab management ──────────────────────────────────────────\n\n const updateActiveCode = useCallback((code: string | undefined) => {\n setTabs(prev => prev.map(t => t.id === activeTabId ? { ...t, code: code ?? \"\" } : t));\n }, [activeTabId]);\n\n const addTab = useCallback(() => {\n const id = String(Date.now());\n const newTab: EditorTab = { id, name: `Script ${tabs.length + 1}`, code: DEFAULT_CODE };\n setTabs(prev => [...prev, newTab]);\n setActiveTabId(id);\n }, [tabs.length]);\n\n const closeTab = useCallback((tabId: string) => {\n setTabs(prev => {\n const filtered = prev.filter(t => t.id !== tabId);\n if (filtered.length === 0) {\n const fresh = { id: String(Date.now()), name: \"Script 1\", code: DEFAULT_CODE };\n setActiveTabId(fresh.id);\n return [fresh];\n }\n if (activeTabId === tabId) {\n setActiveTabId(filtered[filtered.length - 1].id);\n }\n return filtered;\n });\n }, [activeTabId]);\n\n // ─── Create an authenticated client for execution ────────────\n\n const buildClient = useCallback(async () => {\n // If not running as another user safely reuse the application's global client.\n if (!selectedUser || (currentUser && selectedUser.uid === currentUser.uid)) {\n if (!rebaseClient) {\n throw new Error(\"Application client is not initialized.\");\n }\n return { client: rebaseClient, isScoped: false };\n }\n\n const apiUrl = apiConfig?.apiUrl;\n const getAuthToken = apiConfig?.getAuthToken;\n\n if (!apiUrl) {\n throw new Error(\"API URL not configured. Make sure apiUrl is set.\");\n }\n\n // Get the current auth token\n let token: string | undefined;\n if (getAuthToken) {\n token = (await getAuthToken()) ?? undefined;\n }\n\n if (!token) {\n throw new Error(\"No auth token available. Please sign in first.\");\n }\n\n // Create a fresh 'scoped' client. This enables us to attach custom auth later for this specific execution\n // without mutating the global client.\n const client = createRebaseClient({\n baseUrl: apiUrl,\n token,\n });\n\n return { client, isScoped: true };\n }, [apiConfig, rebaseClient, selectedUser, currentUser]);\n\n // ─── Execution engine ────────────────────────────────────────\n\n const executeCode = useCallback(async (codeOverride?: string) => {\n const code = codeOverride ?? activeTab?.code ?? \"\";\n if (!code.trim()) return;\n\n setIsRunning(true);\n setResult(null);\n\n // Add to history\n setHistory(prev => {\n const deduped = prev.filter(h => h !== code);\n return [...deduped, code].slice(-MAX_HISTORY);\n });\n\n const consoleEntries: ConsoleEntry[] = [];\n const startTime = performance.now();\n let scopedClientToCleanUp: any = null;\n\n // Capture console methods\n const originalConsole = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n info: console.info,\n };\n\n const captureConsole = (type: ConsoleEntry[\"type\"]) => (...args: any[]) => {\n consoleEntries.push({ type, args, timestamp: Date.now() });\n originalConsole[type](...args);\n };\n\n try {\n console.log = captureConsole(\"log\");\n console.warn = captureConsole(\"warn\");\n console.error = captureConsole(\"error\");\n console.info = captureConsole(\"info\");\n\n // Build an authenticated client\n const { client, isScoped } = await buildClient();\n if (isScoped) {\n scopedClientToCleanUp = client;\n }\n\n // Build context object with useful info about selected user\n const context = {\n user: selectedUser ?? (currentUser ? {\n uid: currentUser.uid,\n displayName: currentUser.displayName,\n email: currentUser.email,\n roles: currentUser.roles,\n } : null),\n collections: collectionInfos,\n };\n\n // Create async function with `client` and `context` injected\n // eslint-disable-next-line no-new-func\n const AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;\n const fn = new AsyncFunction(\"client\", \"context\", code);\n\n const value = await fn(client, context);\n const duration = performance.now() - startTime;\n\n setResult({\n value,\n console: consoleEntries,\n duration,\n timestamp: Date.now(),\n });\n\n // Auto-detect best view\n if (value?.data && Array.isArray(value.data)) {\n setResultView(\"table\");\n } else if (consoleEntries.length > 0 && value === undefined) {\n setResultView(\"console\");\n } else {\n setResultView(\"json\");\n }\n } catch (err: any) {\n const duration = performance.now() - startTime;\n setResult({\n value: undefined,\n console: consoleEntries,\n duration,\n error: err?.message || String(err),\n timestamp: Date.now(),\n });\n setResultView(\"json\");\n } finally {\n console.log = originalConsole.log;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n console.info = originalConsole.info;\n setIsRunning(false);\n\n if (scopedClientToCleanUp) {\n // Ensure we disconnect WebSockets to prevent leaking connections\n scopedClientToCleanUp.ws?.disconnect();\n }\n }\n }, [activeTab?.code, buildClient, selectedUser, currentUser, collectionInfos]);\n\n // ─── Snippet management ──────────────────────────────────────\n\n const saveSnippet = useCallback(() => {\n if (!snippetName.trim() || !activeTab?.code.trim()) return;\n const snippet: JSSnippet = {\n id: String(Date.now()),\n name: snippetName.trim(),\n code: activeTab.code,\n createdAt: Date.now(),\n };\n setSnippets(prev => [snippet, ...prev]);\n setShowSaveDialog(false);\n setSnippetName(\"\");\n snackbar.open({ type: \"success\", message: \"Snippet saved\" });\n }, [snippetName, activeTab?.code, snackbar]);\n\n const deleteSnippet = useCallback((id: string) => {\n setSnippets(prev => prev.filter(s => s.id !== id));\n }, []);\n\n // ─── Export ──────────────────────────────────────────────────\n\n const exportResult = useCallback(() => {\n if (!result?.value) return;\n const blob = new Blob([formatJSON(result.value)], { type: \"application/json\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `rebase-result-${Date.now()}.json`;\n a.click();\n URL.revokeObjectURL(url);\n }, [result]);\n\n // ─── Table columns for array data ────────────────────────────\n\n const tableData = useMemo(() => {\n if (!result?.value) return { columns: [] as VirtualTableColumn[], data: [] as Record<string, unknown>[] };\n\n let rows: any[] = [];\n if (result.value?.data && Array.isArray(result.value.data)) {\n rows = result.value.data.map((entity: any) => ({\n id: entity.id,\n ...entity.values,\n ...(entity.values ? {} : entity),\n }));\n } else if (Array.isArray(result.value)) {\n rows = result.value;\n }\n\n if (rows.length === 0) return { columns: [] as VirtualTableColumn[], data: [] as Record<string, unknown>[] };\n\n const keys = new Set<string>();\n rows.slice(0, 20).forEach(row => {\n if (row && typeof row === \"object\") {\n Object.keys(row).forEach(k => keys.add(k));\n }\n });\n\n const columns: VirtualTableColumn[] = Array.from(keys).map(key => ({\n key,\n title: key,\n width: key === \"id\" ? 100 : 200,\n }));\n\n return { columns, data: rows };\n }, [result]);\n\n // ─── Matched collections for entity actions ──────────────────\n\n const matchedCollections = useMemo(() => {\n if (!result?.value || result.error) return [];\n return detectCollectionsInResult(\n activeTab?.code ?? \"\",\n result.value,\n collectionRegistry?.collections ?? []\n );\n }, [result, activeTab?.code, collectionRegistry?.collections]);\n\n const getRowEntityActions = useCallback((rowData: any): { collection: MatchedJSCollection; entityId: string | number }[] => {\n if (!rowData || matchedCollections.length === 0) return [];\n return matchedCollections\n .filter(mc => rowData[mc.pkColumn] != null)\n .map(mc => ({\n collection: mc,\n entityId: rowData[mc.pkColumn],\n }));\n }, [matchedCollections]);\n\n // ─── Export handlers ─────────────────────────────────────────\n\n const handleExportCSV = useCallback(() => {\n if (tableData.data.length === 0) return;\n const headers = tableData.columns.map(c => c.key).join(\",\");\n const rows = tableData.data.map(row =>\n tableData.columns.map(c => {\n const val = row[c.key];\n const str = val === null || val === undefined ? \"\" : String(val);\n return str.includes(\",\") ? `\"${str}\"` : str;\n }).join(\",\")\n );\n const csv = [headers, ...rows].join(\"\\n\");\n const blob = new Blob([csv], { type: \"text/csv\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `js_results_${new Date().toISOString().slice(0, 19)}.csv`;\n a.click();\n URL.revokeObjectURL(url);\n }, [tableData]);\n\n const handleExportMarkdown = useCallback(() => {\n if (tableData.data.length === 0) return;\n const headers = tableData.columns.map(c => c.key);\n const headerRow = `| ${headers.join(\" | \")} |`;\n const dividerRow = `| ${headers.map(() => \"---\").join(\" | \")} |`;\n const dataRows = tableData.data.map(row =>\n `| ${headers.map(h => {\n const val = row[h];\n if (val === null || val === undefined) return \"\";\n return String(val).replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \");\n }).join(\" | \")} |`\n );\n const markdown = [headerRow, dividerRow, ...dataRows].join(\"\\n\");\n navigator.clipboard.writeText(markdown).then(() => {\n snackbar.open({ type: \"success\", message: t(\"studio_sql_markdown_copied\") });\n }).catch(() => {\n snackbar.open({ type: \"error\", message: t(\"studio_sql_markdown_copy_failed\") });\n });\n }, [tableData, snackbar, t]);\n\n // ─── Render ──────────────────────────────────────────────────\n\n return (\n <div className=\"flex flex-col h-full w-full\">\n {/* Main content */}\n <div className=\"flex-grow overflow-hidden\">\n <ResizablePanels\n orientation=\"horizontal\"\n panelSizePercent={sidebarSize}\n onPanelSizeChange={setSidebarSize}\n minPanelSizePx={200}\n firstPanel={\n <JSEditorSidebar\n collections={collectionInfos}\n snippets={snippets}\n history={history}\n onSelectSnippet={(code) => updateActiveCode(code)}\n onDeleteSnippet={deleteSnippet}\n onInsertCode={(code) => updateActiveCode(code)}\n />\n }\n secondPanel={\n <div className=\"flex flex-col h-full overflow-hidden\">\n {/* Toolbar: matching SQL Editor layout */}\n <div className={cls(\"flex items-center justify-between pr-2 border-b bg-white dark:bg-surface-950\", defaultBorderMixin)}>\n <div className=\"flex items-center flex-grow overflow-hidden mr-4\">\n <div className=\"flex items-center no-scrollbar overflow-x-auto min-w-0\">\n <Tabs value={activeTabId} onValueChange={setActiveTabId} variant=\"boxy\" className=\"w-[unset] flex-shrink-0\" innerClassName=\"bg-white dark:bg-surface-950\">\n {tabs.map(tab => (\n <Tab key={tab.id} value={tab.id} className=\"flex items-center justify-between group max-w-[200px]\">\n <TerminalIcon size=\"smallest\" className=\"text-amber-500 mr-1.5 flex-shrink-0\" />\n <span className=\"truncate\">{tab.name}</span>\n {tabs.length > 1 && (\n <IconButton\n size=\"smallest\"\n onClick={(e) => { e.stopPropagation(); closeTab(tab.id); }}\n className=\"ml-1 !p-0.5 opacity-0 group-hover:opacity-100 hover:text-red-500 transition-opacity\"\n >\n <CloseIcon size=\"smallest\" />\n </IconButton>\n )}\n </Tab>\n ))}\n </Tabs>\n <IconButton\n size=\"small\"\n onClick={addTab}\n className=\"ml-2 flex-shrink-0\"\n >\n <AddIcon size=\"small\" />\n </IconButton>\n </div>\n </div>\n <div className=\"flex shrink-0 items-center justify-end gap-1.5\">\n {/* \"Run as\" user picker */}\n <UserSelectPopover\n selectedUser={selectedUser}\n onUserSelected={setSelectedUser}\n users={users}\n loading={userManagement?.loading}\n currentUser={currentSelectableUser}\n className=\"mr-2\"\n />\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\" />\n\n <Tooltip title=\"Save as snippet\">\n <IconButton\n size=\"small\"\n onClick={() => {\n setSnippetName(\"\");\n setShowSaveDialog(true);\n }}\n disabled={!activeTab?.code.trim()}\n >\n <SaveIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n\n {result?.value && (\n <Tooltip title=\"Export result as JSON\">\n <IconButton size=\"small\" onClick={exportResult}>\n <DownloadIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n )}\n\n <Button\n size=\"small\"\n color=\"primary\"\n disabled={isRunning || !activeTab?.code.trim()}\n onClick={() => executeCode()}\n >\n {isRunning ? <CircularProgress size=\"smallest\" className=\"mr-2\" /> : <PlayArrowIcon size=\"small\" className=\"mr-2\" />}\n Run\n </Button>\n </div>\n </div>\n\n {/* Editor + Results split */}\n <div className=\"flex-grow overflow-hidden\">\n <ResizablePanels\n orientation=\"vertical\"\n panelSizePercent={editorHeight}\n onPanelSizeChange={setEditorHeight}\n minPanelSizePx={100}\n firstPanel={\n <div className=\"h-full w-full overflow-hidden\">\n <JSMonacoEditor\n value={activeTab?.code ?? \"\"}\n onChange={updateActiveCode}\n onRun={(selectedText) => executeCode(selectedText)}\n collectionSlugs={collectionSlugs}\n collections={collectionInfos}\n autoFocus\n />\n </div>\n }\n secondPanel={\n <div className=\"h-full w-full flex flex-col bg-surface-50 dark:bg-surface-950 overflow-hidden min-h-0\">\n {/* Result header — matches SQL editor */}\n <div className={cls(\"p-2 px-4 bg-surface-100 dark:bg-surface-900 border-b shrink-0 flex items-center\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold text-text-disabled dark:text-text-disabled-dark uppercase tracking-widest text-[10px]\">\n {t(\"studio_sql_query_results\")}\n </Typography>\n\n {result && (\n <>\n <div className=\"flex-grow\" />\n\n <Tabs value={resultView} onValueChange={(val) => setResultView(val as \"json\" | \"table\" | \"console\")} variant=\"pill\" className=\"w-[unset] mr-2\">\n <Tab value=\"json\">JSON</Tab>\n {tableData.data.length > 0 && <Tab value=\"table\">Table</Tab>}\n {result.console.length > 0 && <Tab value=\"console\">Console ({result.console.length})</Tab>}\n </Tabs>\n\n <Chip size=\"smallest\" colorScheme={result.error ? \"redDarker\" : \"greenDarker\"}>\n {result.error ? \"Error\" : `${result.duration.toFixed(0)}ms`}\n </Chip>\n </>\n )}\n </div>\n\n {/* Result content */}\n <div className=\"flex-grow flex flex-col min-h-0 overflow-hidden\">\n {isRunning && (\n <div className=\"flex-grow flex items-center justify-center\">\n <div className=\"text-center\">\n <CircularProgress size=\"medium\" />\n <Typography variant=\"body2\" className=\"mt-4 text-text-secondary dark:text-text-secondary-dark font-mono tracking-tight animate-pulse\">\n EXECUTING SCRIPT...\n </Typography>\n </div>\n </div>\n )}\n\n {!isRunning && !result && (\n <div className=\"flex-grow flex items-center justify-center text-text-disabled dark:text-text-disabled-dark\">\n <div className=\"text-center\">\n <svg className=\"w-12 h-12 mx-auto mb-4 opacity-50\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1} d=\"M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" /></svg>\n <Typography variant=\"body2\">Write JavaScript and press <kbd className=\"px-1.5 py-0.5 rounded bg-surface-200 dark:bg-surface-700 text-[11px] font-mono\">⌘ Enter</kbd> to run</Typography>\n </div>\n </div>\n )}\n\n {!isRunning && result?.error && (\n <div className=\"flex-grow flex items-center justify-center p-6 overflow-auto\">\n <ErrorView\n title=\"Execution Error\"\n error={result.error}\n />\n </div>\n )}\n\n {!isRunning && result && !result.error && resultView === \"json\" && (\n <pre className=\"flex-grow overflow-auto p-4 text-[13px] font-mono leading-relaxed text-text-primary dark:text-text-primary-dark whitespace-pre-wrap break-words\">\n {result.value === undefined ? (\n <span className=\"text-text-disabled italic\">undefined (no return value)</span>\n ) : (\n <JSONHighlight value={result.value} />\n )}\n </pre>\n )}\n\n {!isRunning && result && !result.error && resultView === \"table\" && tableData.data.length > 0 && (\n <div className=\"flex-grow flex flex-col overflow-hidden min-h-0\">\n {/* Collection badges bar — matching SQL editor */}\n {matchedCollections.length > 0 && (\n <div className={cls(\"px-4 py-1.5 border-b flex items-center gap-2 shrink-0 bg-surface-50 dark:bg-surface-900\", defaultBorderMixin)}>\n <Tooltip title={t(\"studio_sql_cms_collections_tooltip\")}>\n <Typography variant=\"caption\" className=\"text-[10px] font-bold uppercase tracking-widest text-text-disabled dark:text-text-disabled-dark mr-1 shrink-0 cursor-help\">{t(\"studio_sql_cms\")}</Typography>\n </Tooltip>\n <div className=\"flex items-center gap-1.5 overflow-x-auto no-scrollbar\">\n {matchedCollections.map(mc => (\n <Tooltip key={mc.collectionSlug} title={`${mc.collection.name} (${mc.collectionSlug})`}>\n <span className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[11px] font-medium bg-primary/10 dark:bg-primary-dark/15 text-primary dark:text-primary-dark whitespace-nowrap border border-primary/20 dark:border-primary-dark/20\">\n {typeof mc.collection.icon === \"string\" && (\n <IconForView collectionOrView={{ icon: mc.collection.icon } as never} className=\"text-[12px]\" />\n )}\n {mc.collection.name}\n </span>\n </Tooltip>\n ))}\n </div>\n </div>\n )}\n <div className=\"flex-grow relative h-full min-h-0 min-w-0\">\n <VirtualTable\n data={tableData.data}\n columns={\n matchedCollections.length > 0\n ? [{ key: \"__entity_action__\", title: \"\", width: 36, sortable: false, resizable: false }, ...tableData.columns]\n : tableData.columns\n }\n rowHeight={32}\n headerHeight={32}\n cellRenderer={({ rowData, column, rowIndex }: CellRendererParams<Record<string, unknown>>) => {\n // Entity action column\n if (column.key === \"__entity_action__\") {\n const rowActions = getRowEntityActions(rowData);\n if (rowActions.length === 0) return <div className=\"h-full w-full\" />;\n if (rowActions.length === 1) {\n const ra = rowActions[0];\n return (\n <div className=\"h-full flex items-center justify-center\">\n <Tooltip title={t(\"studio_sql_edit_entity\", { name: ra.collection.collection.name, id: String(ra.entityId) })}>\n <IconButton\n size=\"small\"\n className=\"text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300\"\n onClick={(e) => {\n e.stopPropagation();\n sideEntityController.open({\n path: ra.collection.collectionSlug,\n entityId: ra.entityId,\n collection: ra.collection.collection,\n updateUrl: false\n });\n }}\n >\n <EditIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n </div>\n );\n }\n // Multiple matched collections\n return (\n <div className=\"h-full flex items-center justify-center\">\n <Menu\n trigger={\n <IconButton\n size=\"small\"\n className=\"text-surface-400 dark:text-surface-500 hover:text-surface-600 dark:hover:text-surface-300\"\n onClick={(e) => e.stopPropagation()}\n >\n <MoreVertIcon size=\"small\" />\n </IconButton>\n }\n >\n {rowActions.map(ra => (\n <MenuItem\n key={ra.collection.collectionSlug}\n dense\n onClick={() => {\n sideEntityController.open({\n path: ra.collection.collectionSlug,\n entityId: ra.entityId,\n collection: ra.collection.collection,\n updateUrl: false\n });\n }}\n >\n {t(\"studio_sql_edit_entity\", { name: ra.collection.collection.name, id: String(ra.entityId) })}\n </MenuItem>\n ))}\n </Menu>\n </div>\n );\n }\n\n // Regular data cell\n if (!rowData) return null;\n const val = rowData[column.key];\n const displayValue = typeof val === \"object\" && val !== null ? JSON.stringify(val) : String(val ?? \"\");\n return (\n <div className=\"px-4 py-1.5 h-full flex items-center whitespace-nowrap text-[13px] text-text-primary dark:text-text-primary-dark font-mono\">\n <div className=\"truncate flex-grow\" title={displayValue}>\n {displayValue === \"\" ? <span className=\"text-text-disabled dark:text-text-disabled-dark italic text-[11px]\">NULL</span> : displayValue}\n </div>\n </div>\n );\n }}\n />\n </div>\n </div>\n )}\n\n {!isRunning && result && resultView === \"console\" && (\n <div className=\"flex-grow overflow-auto p-2 space-y-1 font-mono text-[12px]\">\n {result.console.length === 0 ? (\n <Typography variant=\"caption\" className=\"text-text-disabled p-2\">No console output</Typography>\n ) : (\n result.console.map((entry, i) => (\n <div\n key={i}\n className={cls(\n \"px-2 py-1 rounded flex items-start gap-2\",\n entry.type === \"error\" && \"bg-red-50 dark:bg-red-950/30 text-red-700 dark:text-red-400\",\n entry.type === \"warn\" && \"bg-amber-50 dark:bg-amber-950/30 text-amber-700 dark:text-amber-400\",\n entry.type === \"log\" && \"text-text-primary dark:text-text-primary-dark\",\n entry.type === \"info\" && \"text-blue-700 dark:text-blue-400\",\n )}\n >\n <span className=\"text-[10px] opacity-50 flex-shrink-0 mt-0.5\">\n {entry.type === \"error\" ? \"❌\" : entry.type === \"warn\" ? \"⚠️\" : entry.type === \"info\" ? \"ℹ️\" : \"›\"}\n </span>\n <span className=\"whitespace-pre-wrap break-words\">\n {entry.args.map(a => typeof a === \"object\" ? JSON.stringify(a, null, 2) : String(a)).join(\" \")}\n </span>\n </div>\n ))\n )}\n\n {result.value !== undefined && (\n <div className={cls(\"px-2 py-1 mt-2 border-t pt-2\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"text-text-disabled text-[10px] uppercase tracking-wider mb-1 block\">Return Value</Typography>\n <pre className=\"text-text-primary dark:text-text-primary-dark whitespace-pre-wrap break-words text-[12px]\">\n {formatJSON(result.value)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Footer bar — matching SQL editor */}\n {!isRunning && result && !result.error && resultView === \"table\" && tableData.data.length > 0 && (\n <div className={cls(\"p-2 px-4 border-t bg-surface-50 dark:bg-surface-900 flex justify-between items-center shrink-0\", defaultBorderMixin)}>\n <div className=\"flex space-x-4\">\n <div className=\"flex items-center text-[11px]\">\n <span className=\"font-bold text-text-disabled dark:text-text-disabled-dark mr-2 uppercase tracking-tighter\">{t(\"studio_sql_rows\")}</span>\n <span className=\"font-mono text-text-secondary dark:text-text-secondary-dark\">{tableData.data.length}</span>\n </div>\n <div className=\"flex items-center text-[11px]\">\n <span className=\"font-bold text-text-disabled dark:text-text-disabled-dark mr-2 uppercase tracking-tighter\">{t(\"studio_sql_time\")}</span>\n <span className=\"font-mono text-text-secondary dark:text-text-secondary-dark\">{result.duration.toFixed(0)}ms</span>\n </div>\n </div>\n <div className=\"flex gap-2 overflow-x-auto no-scrollbar items-center px-2\">\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={handleExportMarkdown}\n >\n {t(\"studio_sql_copy_markdown\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={exportResult}\n >\n {t(\"studio_sql_export_json\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n className=\"text-[10px] uppercase font-bold text-text-secondary dark:text-text-secondary-dark whitespace-nowrap\"\n onClick={handleExportCSV}\n >\n {t(\"studio_sql_export_csv\")}\n </Button>\n </div>\n </div>\n )}\n </div>\n }\n />\n </div>\n </div>\n }\n />\n </div>\n\n {/* Save snippet dialog */}\n <Dialog open={showSaveDialog} onOpenChange={setShowSaveDialog}>\n <DialogTitle>Save Snippet</DialogTitle>\n <DialogContent>\n <TextField\n label=\"Snippet name\"\n value={snippetName}\n onChange={(e) => setSnippetName(e.target.value)}\n placeholder=\"e.g. List all products\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === \"Enter\") saveSnippet();\n }}\n />\n </DialogContent>\n <DialogActions>\n <Button variant=\"text\" onClick={() => setShowSaveDialog(false)}>Cancel</Button>\n <Button variant=\"filled\" color=\"primary\" onClick={saveSnippet} disabled={!snippetName.trim()}>Save</Button>\n </DialogActions>\n </Dialog>\n </div>\n );\n}\n\n// ─── JSON Syntax Highlighting ────────────────────────────────────────\n\nfunction JSONHighlight({ value }: { value: any }) {\n const json = formatJSON(value);\n const { mode } = useModeController();\n\n return (\n <Highlight\n theme={mode === \"dark\" ? themes.vsDark : themes.github}\n code={json}\n language=\"json\"\n >\n {({ style, tokens, getLineProps, getTokenProps }) => (\n <span style={{ ...style, backgroundColor: \"transparent\" }}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </span>\n )}\n </Highlight>\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport {\n Button,\n Paper,\n Typography,\n TextField,\n Select,\n SelectItem,\n MultiSelect,\n MultiSelectItem,\n cls,\n defaultBorderMixin,\n IconButton,\n HelpOutlineIcon,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions\n} from \"@rebasepro/ui\";\nimport { useTranslation } from \"@rebasepro/core\";\nimport { MonacoEditor } from \"../SQLEditor/MonacoEditor\";\nimport { PostgresPolicy } from \"./RLSEditor\";\n\nexport interface PolicyEditorProps {\n policy?: PostgresPolicy;\n schema: string;\n table: string;\n onSave: (policyData: Partial<PostgresPolicy>) => void;\n onCancel: () => void;\n}\n\ntype PolicyCommand = \"ALL\" | \"SELECT\" | \"INSERT\" | \"UPDATE\" | \"DELETE\";\nconst COMMAND_OPTIONS: PolicyCommand[] = [\"ALL\", \"SELECT\", \"INSERT\", \"UPDATE\", \"DELETE\"];\nconst ROLE_OPTIONS = [\"public\", \"authenticated\", \"anon\", \"admin\"];\n\ninterface PolicyPreset {\n id: string;\n label: string;\n description: string;\n policyname: string;\n cmd: PolicyCommand;\n permissive: \"PERMISSIVE\" | \"RESTRICTIVE\";\n roles: string[];\n qual: string;\n with_check: string;\n}\n\nconst POLICY_PRESETS: PolicyPreset[] = [\n {\n id: \"public_read\",\n label: \"Enable read access to everyone\",\n description: \"Anyone can read data, regardless of authentication status.\",\n policyname: \"Enable read access for all users\",\n cmd: \"SELECT\",\n permissive: \"PERMISSIVE\",\n roles: [\"public\"],\n qual: \"true\",\n with_check: \"\"\n },\n {\n id: \"auth_read\",\n label: \"Enable read access for authenticated users only\",\n description: \"Only logged-in users are allowed to read data.\",\n policyname: \"Enable read access for authenticated users\",\n cmd: \"SELECT\",\n permissive: \"PERMISSIVE\",\n roles: [\"authenticated\"],\n qual: \"true\",\n with_check: \"\"\n },\n {\n id: \"auth_insert\",\n label: \"Enable insert for authenticated users only\",\n description: \"Only logged-in users are allowed to insert new data.\",\n policyname: \"Enable insert for authenticated users only\",\n cmd: \"INSERT\",\n permissive: \"PERMISSIVE\",\n roles: [\"authenticated\"],\n qual: \"\",\n with_check: \"true\"\n },\n {\n id: \"user_select_own\",\n label: \"Users can read their own rows\",\n description: \"Users can only read rows where the user_id matches their auth.uid()\",\n policyname: \"Users can select their own data\",\n cmd: \"SELECT\",\n permissive: \"PERMISSIVE\",\n roles: [\"authenticated\"],\n qual: \"auth.uid() = user_id\",\n with_check: \"\"\n },\n {\n id: \"user_update_own\",\n label: \"Users can update their own rows\",\n description: \"Users can only update rows where the user_id matches their auth.uid()\",\n policyname: \"Users can update their own data\",\n cmd: \"UPDATE\",\n permissive: \"PERMISSIVE\",\n roles: [\"authenticated\"],\n qual: \"auth.uid() = user_id\",\n with_check: \"auth.uid() = user_id\"\n },\n {\n id: \"user_delete_own\",\n label: \"Users can delete their own rows\",\n description: \"Users can only delete rows where the user_id matches their auth.uid()\",\n policyname: \"Users can delete their own data\",\n cmd: \"DELETE\",\n permissive: \"PERMISSIVE\",\n roles: [\"authenticated\"],\n qual: \"auth.uid() = user_id\",\n with_check: \"\"\n }\n];\n\nexport const PolicyEditor = ({\n policy,\n schema,\n table,\n onSave,\n onCancel\n}: PolicyEditorProps) => {\n\n const { t } = useTranslation();\n const [name, setName] = useState(\"\");\n const [helpOpen, setHelpOpen] = useState(false);\n const [behavior, setBehavior] = useState<\"PERMISSIVE\" | \"RESTRICTIVE\">(\"PERMISSIVE\");\n const [command, setCommand] = useState<PolicyCommand>(\"ALL\");\n const [roles, setRoles] = useState<string[]>([\"public\"]);\n const [usingExpr, setUsingExpr] = useState<string>(\"\");\n const [checkExpr, setCheckExpr] = useState<string>(\"\");\n\n const [selectedPreset, setSelectedPreset] = useState<string>(\"\");\n\n useEffect(() => {\n if (policy) {\n setName(policy.policyname || \"\");\n setBehavior(policy.permissive || \"PERMISSIVE\");\n setCommand((policy.cmd as PolicyCommand) || \"ALL\");\n\n const initialRoles = policy.roles\n ? (Array.isArray(policy.roles) ? policy.roles : [policy.roles])\n : [\"public\"];\n setRoles(initialRoles as string[]);\n\n setUsingExpr(policy.qual || \"\");\n setCheckExpr(policy.with_check || \"\");\n } else {\n setName(\"\");\n setBehavior(\"PERMISSIVE\");\n setCommand(\"ALL\");\n setRoles([\"public\"]);\n setUsingExpr(\"\");\n setCheckExpr(\"\");\n setSelectedPreset(\"\");\n }\n }, [policy]);\n\n const handlePresetChange = (presetId: string) => {\n const preset = POLICY_PRESETS.find(p => p.id === presetId);\n if (!preset) return;\n\n setSelectedPreset(presetId);\n setName(preset.policyname);\n setBehavior(preset.permissive);\n setCommand(preset.cmd);\n setRoles(preset.roles);\n setUsingExpr(preset.qual);\n setCheckExpr(preset.with_check);\n };\n\n const showCheck = command === \"ALL\" || command === \"INSERT\" || command === \"UPDATE\";\n\n const handleSave = () => {\n onSave({\n policyname: name,\n permissive: behavior,\n cmd: command,\n roles: roles,\n qual: usingExpr,\n with_check: showCheck ? checkExpr : null\n });\n };\n\n return (\n <>\n <DialogTitle className=\"flex justify-between items-center w-full\" variant=\"h6\">\n <div>\n <div>{policy ? t(\"studio_policy_edit\") : t(\"studio_policy_create\")}</div>\n <div className=\"text-sm font-normal text-text-secondary dark:text-text-secondary-dark tracking-wide mt-1\">\n {t(\"studio_policy_defining_rules\")} <span className=\"font-mono text-primary bg-primary-bg dark:bg-primary-bg-dark px-1 py-0.5 rounded\">{schema}.{table}</span>\n </div>\n </div>\n <IconButton size=\"small\" onClick={() => setHelpOpen(true)}>\n <HelpOutlineIcon size=\"small\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent className=\"p-4 md:p-6 border-t dark:border-surface-800 bg-surface-50 dark:bg-surface-950\" includeMargin={false}>\n <div className=\"max-w-4xl mx-auto\">\n <Paper className={cls(\"p-4 md:p-6 flex flex-col gap-6 bg-white dark:bg-surface-900 border-none sm:border-solid rounded-none sm:rounded-xl\", defaultBorderMixin)}>\n\n {/* Presets - only for new policies */}\n {!policy && (\n <div className=\"flex flex-col gap-1.5 bg-primary/5 dark:bg-primary-bg-dark/20 p-3 sm:p-4 rounded-lg border border-primary/10 dark:border-primary/20\">\n <Typography variant=\"caption\" className=\"text-primary dark:text-primary-light uppercase tracking-wider\">{t(\"studio_policy_template\")}</Typography>\n <Select\n size=\"small\"\n value={selectedPreset}\n onValueChange={handlePresetChange}\n position=\"item-aligned\"\n placeholder={t(\"studio_policy_select_template\")}\n className=\"bg-white dark:bg-surface-950\"\n >\n {POLICY_PRESETS.map((preset) => (\n <SelectItem key={preset.id} value={preset.id}>\n <div className=\"flex flex-col text-left\">\n <span className=\"text-sm\">{preset.label}</span>\n <span className=\"text-xs text-text-secondary dark:text-text-secondary-dark\">{preset.description}</span>\n </div>\n </SelectItem>\n ))}\n </Select>\n </div>\n )}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 sm:gap-6\">\n {/* Policy Name */}\n <div className=\"flex flex-col gap-1.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">{t(\"studio_policy_name\")}</Typography>\n <TextField\n // @ts-ignore\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t(\"studio_policy_name_placeholder\")}\n className=\"w-full\"\n />\n </div>\n\n {/* Behavior */}\n <div className=\"flex flex-col gap-1.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">\n {t(\"studio_policy_behavior\")} <code className=\"text-[10px] bg-surface-200 dark:bg-surface-800 text-text-secondary dark:text-text-secondary-dark px-1 py-0.5 rounded ml-1\">AS</code>\n </Typography>\n <Select\n value={behavior}\n onValueChange={(val) => setBehavior(val as \"PERMISSIVE\" | \"RESTRICTIVE\")}\n position=\"item-aligned\"\n >\n <SelectItem value=\"PERMISSIVE\">\n <div className=\"flex flex-col text-left\">\n <span className=\"\">{t(\"studio_policy_permissive\")}</span>\n <span className=\"text-xs text-text-secondary dark:text-text-secondary-dark\">{t(\"studio_policy_permissive_desc\")}</span>\n </div>\n </SelectItem>\n <SelectItem value=\"RESTRICTIVE\">\n <div className=\"flex flex-col text-left\">\n <span className=\"\">{t(\"studio_policy_restrictive\")}</span>\n <span className=\"text-xs text-text-secondary dark:text-text-secondary-dark\">{t(\"studio_policy_restrictive_desc\")}</span>\n </div>\n </SelectItem>\n </Select>\n </div>\n </div>\n\n {/* Command */}\n <div className=\"flex flex-col gap-1.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">\n {t(\"studio_policy_command\")} <code className=\"text-[10px] bg-surface-200 dark:bg-surface-800 text-text-secondary dark:text-text-secondary-dark px-1 py-0.5 rounded ml-1\">FOR</code>\n </Typography>\n <div className=\"flex flex-wrap gap-1.5\">\n {COMMAND_OPTIONS.map(cmd => (\n <Button\n key={cmd}\n size=\"small\"\n variant={command === cmd ? \"filled\" : \"text\"}\n color=\"neutral\"\n onClick={() => setCommand(cmd)}\n className=\"min-w-[80px]\"\n >\n {cmd}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Roles */}\n <div className=\"flex flex-col gap-1.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">\n {t(\"studio_policy_target_roles\")} <code className=\"text-[10px] bg-surface-200 dark:bg-surface-800 text-text-secondary dark:text-text-secondary-dark px-1 py-0.5 rounded ml-1\">TO</code>\n </Typography>\n <MultiSelect\n size=\"small\"\n value={roles}\n onValueChange={setRoles}\n placeholder={t(\"studio_policy_roles_placeholder\")}\n >\n {ROLE_OPTIONS.map(role => (\n <MultiSelectItem key={role} value={role}>\n {role}\n </MultiSelectItem>\n ))}\n </MultiSelect>\n </div>\n\n </Paper>\n\n <div className=\"mt-8 flex flex-col gap-4\">\n {/* USING Expression */}\n {command !== \"INSERT\" && (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex flex-col gap-0.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">{t(\"studio_policy_using_expr\")}</Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary opacity-70\">{t(\"studio_policy_using_expr_desc\")}</Typography>\n </div>\n <div className={cls(\"h-32 border rounded-md overflow-hidden bg-white dark:bg-[#1e1e1e]\", defaultBorderMixin)}>\n <MonacoEditor\n value={usingExpr}\n onChange={(v) => setUsingExpr(v || \"\")}\n readOnly={false}\n autoFocus={true}\n />\n </div>\n </div>\n )}\n\n {/* WITH CHECK Expression */}\n {showCheck && (\n <div className=\"flex flex-col gap-1.5 mt-2\">\n <div className=\"flex flex-col gap-0.5\">\n <Typography variant=\"caption\" className=\"uppercase tracking-wider text-text-secondary\">{t(\"studio_policy_check_expr\")}</Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary opacity-70\">{t(\"studio_policy_check_expr_desc\")}</Typography>\n </div>\n <div className={cls(\"h-32 border rounded-md overflow-hidden bg-white dark:bg-[#1e1e1e]\", defaultBorderMixin)}>\n <MonacoEditor\n value={checkExpr}\n onChange={(v) => setCheckExpr(v || \"\")}\n readOnly={false}\n autoFocus={command === \"INSERT\"}\n />\n </div>\n </div>\n )}\n </div>\n\n </div>\n </DialogContent>\n\n <DialogActions>\n <Button size=\"small\" variant=\"text\" color=\"neutral\" onClick={onCancel}>\n {t(\"studio_policy_cancel\")}\n </Button>\n <Button size=\"small\" variant=\"filled\" color=\"primary\" onClick={handleSave} disabled={!name}>\n {t(\"studio_policy_save\")}\n </Button>\n </DialogActions>\n\n <Dialog open={helpOpen} onOpenChange={setHelpOpen} maxWidth=\"3xl\">\n <DialogContent className=\"p-4 sm:p-6 lg:p-8 flex flex-col gap-6\">\n <div>\n <Typography variant=\"h5\" className=\"mb-2\">{t(\"studio_policy_help_title\")}</Typography>\n <Typography className=\"text-text-secondary dark:text-text-secondary-dark\">\n {t(\"studio_policy_help_intro\")}\n </Typography>\n </div>\n \n <div className=\"flex flex-col gap-4\">\n <Paper className={cls(\"p-4 sm:p-5 flex flex-col gap-1\", defaultBorderMixin)}>\n <Typography variant=\"subtitle2\" className=\"text-primary dark:text-primary-light font-medium\">{t(\"studio_policy_help_step1_title\")}</Typography>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n {t(\"studio_policy_help_step1_desc\")}\n </Typography>\n </Paper>\n \n <Paper className={cls(\"p-4 sm:p-5 flex flex-col gap-1\", defaultBorderMixin)}>\n <Typography variant=\"subtitle2\" className=\"text-primary dark:text-primary-light font-medium\">{t(\"studio_policy_help_step2_title\")}</Typography>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark mb-1\">\n {t(\"studio_policy_help_step2_desc\")}\n </Typography>\n <ul className=\"list-disc pl-5 space-y-1 text-sm text-text-secondary dark:text-text-secondary-dark\">\n <li><strong>public</strong>: {t(\"studio_policy_help_role_public\")}</li>\n <li><strong>authenticated</strong>: {t(\"studio_policy_help_role_authenticated\")}</li>\n <li><strong>anon</strong>: {t(\"studio_policy_help_role_anon\")}</li>\n </ul>\n </Paper>\n\n <Paper className={cls(\"p-4 sm:p-5 flex flex-col gap-1\", defaultBorderMixin)}>\n <Typography variant=\"subtitle2\" className=\"text-primary dark:text-primary-light font-medium\">{t(\"studio_policy_help_step3_title\")}</Typography>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark mb-1\">\n {t(\"studio_policy_help_step3_desc\")}\n </Typography>\n <div className={cls(\"bg-surface-100 dark:bg-surface-800 px-3 py-2 rounded-md font-mono text-sm my-2\", defaultBorderMixin)}>\n Example: auth.uid() = user_id\n </div>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n {t(\"studio_policy_help_step3_example\")}\n </Typography>\n </Paper>\n\n <Paper className={cls(\"p-4 sm:p-5 flex flex-col gap-1\", defaultBorderMixin)}>\n <Typography variant=\"subtitle2\" className=\"text-primary dark:text-primary-light font-medium\">{t(\"studio_policy_help_step4_title\")}</Typography>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark mb-1\">\n {t(\"studio_policy_help_step4_desc\")}\n </Typography>\n <div className={cls(\"bg-surface-100 dark:bg-surface-800 px-3 py-2 rounded-md font-mono text-sm my-2\", defaultBorderMixin)}>\n Example: auth.uid() = user_id\n </div>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n {t(\"studio_policy_help_step4_example\")}\n </Typography>\n </Paper>\n\n <Paper className={cls(\"p-4 sm:p-5 flex flex-col gap-2 bg-primary/5 dark:bg-primary-bg-dark/10\", defaultBorderMixin)}>\n <Typography variant=\"subtitle2\" className=\"text-primary dark:text-primary-light font-medium\">{t(\"studio_policy_help_auth_vars_title\")}</Typography>\n <Typography variant=\"body2\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n {t(\"studio_policy_help_auth_vars_desc\")}\n </Typography>\n <ul className=\"list-disc pl-5 space-y-2 text-sm text-text-secondary dark:text-text-secondary-dark font-normal\">\n <li>\n <code className=\"bg-surface-100 dark:bg-surface-800 px-1.5 py-0.5 rounded mr-1 whitespace-nowrap\">auth.uid()</code>\n <span className=\"block mt-0.5\">Returns the current user's ID as text. Example: <code className=\"bg-surface-100 dark:bg-surface-800 px-1 py-0.5 rounded text-[11px]\">auth.uid() = user_id</code></span>\n </li>\n <li>\n <code className=\"bg-surface-100 dark:bg-surface-800 px-1.5 py-0.5 rounded mr-1 whitespace-nowrap\">auth.jwt()</code>\n <span className=\"block mt-0.5\">Returns the full JWT payload as JSONB so you can check custom claims. Example: <code className=\"bg-surface-100 dark:bg-surface-800 px-1 py-0.5 rounded text-[11px]\">auth.jwt() -&gt;&gt; 'email' = 'admin@example.com'</code></span>\n </li>\n <li>\n <code className=\"bg-surface-100 dark:bg-surface-800 px-1.5 py-0.5 rounded mr-1 whitespace-nowrap\">auth.roles()</code>\n <span className=\"block mt-0.5\">Returns the user's role IDs as a comma-separated string. Best used with: <code className=\"bg-surface-100 dark:bg-surface-800 px-1 py-0.5 rounded text-[11px]\">string_to_array(auth.roles(), ',') @&gt; ARRAY['admin']</code></span>\n </li>\n </ul>\n </Paper>\n </div>\n\n <div className={cls(\"mt-2 flex flex-col sm:flex-row justify-between items-start sm:items-center bg-primary/5 dark:bg-primary-bg-dark/10 p-4 rounded-xl border border-primary/10 dark:border-primary/20\", defaultBorderMixin)}>\n <Typography variant=\"body2\" className=\"text-primary dark:text-primary-light mb-4 sm:mb-0 max-w-md\">\n {t(\"studio_policy_help_docs_cta\")}\n </Typography>\n <Button \n component=\"a\" \n href=\"https://www.postgresql.org/docs/current/sql-createpolicy.html\" \n target=\"_blank\" \n variant=\"outlined\" \n color=\"primary\" \n size=\"small\"\n className=\"whitespace-nowrap flex-shrink-0\"\n >\n {t(\"studio_policy_help_read_docs\")}\n </Button>\n </div>\n </DialogContent>\n <DialogActions className=\"p-4 sm:px-6 sm:pb-6 pt-0 border-t-0\">\n <Button onClick={() => setHelpOpen(false)} variant=\"filled\" color=\"primary\">{t(\"studio_policy_help_got_it\")}</Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n","import { useStudioCollectionRegistry } from \"@rebasepro/core\";\nimport React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport {\n Paper,\n Typography,\n CircularProgress,\n cls,\n Alert,\n defaultBorderMixin,\n Card,\n Chip,\n Button,\n Tooltip,\n ResizablePanels,\n SecurityIcon,\n RefreshIcon,\n WarningIcon,\n KeyIcon,\n DeleteIcon,\n IconButton,\n Tabs,\n Tab\n} from \"@rebasepro/ui\";\nimport { useRebaseContext, useSnackbarController, ErrorView, useTranslation } from \"@rebasepro/core\";\nimport { isPostgresCollection } from \"@rebasepro/types\";\nimport { PolicyEditor } from \"./PolicyEditor\";\n\nexport interface PostgresPolicy {\n policyname: string;\n tablename: string;\n permissive: \"PERMISSIVE\" | \"RESTRICTIVE\";\n roles: string[];\n cmd: \"SELECT\" | \"INSERT\" | \"UPDATE\" | \"DELETE\" | \"ALL\";\n qual: string | null; // USING clause\n with_check: string | null; // WITH CHECK clause\n status?: \"live\" | \"code_only\" | \"both\";\n}\n\nexport interface TableRLSStatus {\n schemaName: string;\n tableName: string;\n rlsEnabled: boolean;\n policies: PostgresPolicy[];\n}\n\nexport const RLSEditor = ({ apiUrl = \"\" }: { apiUrl?: string }) => {\n const { databaseAdmin } = useRebaseContext();\n const snackbarController = useSnackbarController();\n const collectionRegistry = useStudioCollectionRegistry();\n const { t } = useTranslation();\n\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [tables, setTables] = useState<TableRLSStatus[]>([]);\n const [selectedTable, setSelectedTable] = useState<string | null>(null);\n const [activeTab, setActiveTab] = useState(0);\n\n const [editingPolicy, setEditingPolicy] = useState<PostgresPolicy | \"new\" | null>(null);\n\n const [sidebarSize, setSidebarSize] = useState(() => {\n try {\n const saved = localStorage.getItem(\"rebase_rls_editor_sidebar_size\");\n return saved !== null ? parseFloat(saved) : 20;\n } catch (e) {\n return 20;\n }\n });\n\n const [expandedSchemas, setExpandedSchemas] = useState<Record<string, boolean>>({ public: true });\n\n // Sidebar tab: \"tables\" or \"info\"\n const [sidebarTab, setSidebarTab] = useState<\"tables\" | \"info\">(\"tables\");\n\n useEffect(() => {\n try {\n localStorage.setItem(\"rebase_rls_editor_sidebar_size\", sidebarSize.toString());\n } catch (e) { }\n }, [sidebarSize]);\n\n const fetchRLSData = useCallback(async () => {\n if (!databaseAdmin?.executeSql) {\n setError(t(\"studio_sql_sql_not_supported\"));\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n try {\n // 1. Fetch tables and whether RLS is enabled\n const tablesSql = `\n SELECT \n schemaname, \n tablename, \n rowsecurity \n FROM pg_tables \n WHERE schemaname NOT IN ('information_schema', 'pg_catalog')\n ORDER BY schemaname, tablename;\n `;\n const tablesResult = await databaseAdmin!.executeSql!(tablesSql);\n\n // 2. Fetch all policies\n const policiesSql = `\n SELECT \n schemaname,\n tablename,\n policyname,\n permissive,\n roles,\n cmd,\n qual,\n with_check\n FROM pg_policies\n WHERE schemaname NOT IN ('information_schema', 'pg_catalog');\n `;\n const policiesResult = await databaseAdmin!.executeSql!(policiesSql);\n\n const extractRows = (result: unknown): Record<string, unknown>[] => {\n if (result && typeof result === \"object\" && \"rows\" in result && Array.isArray((result as { rows: Record<string, unknown>[] }).rows)) {\n return (result as { rows: Record<string, unknown>[] }).rows;\n }\n if (Array.isArray(result)) return result as Record<string, unknown>[];\n return [];\n };\n\n const tRows = extractRows(tablesResult);\n const pRows = extractRows(policiesResult);\n\n const tableMap: Record<string, TableRLSStatus> = {};\n\n tRows.forEach((tRow: Record<string, unknown>) => {\n const t = tRow as { schemaname?: string, SCHEMANAME?: string, tablename?: string, TABLENAME?: string, rowsecurity?: boolean, ROWSECURITY?: boolean };\n const schema = t.schemaname || t.SCHEMANAME || \"public\";\n const table = t.tablename || t.TABLENAME || \"\";\n const rlsEnabled = t.rowsecurity || t.ROWSECURITY || false;\n\n const key = `${schema}.${table}`;\n tableMap[key] = {\n schemaName: schema,\n tableName: table,\n rlsEnabled: rlsEnabled,\n policies: []\n };\n });\n\n pRows.forEach((pRow: Record<string, unknown>) => {\n const p = pRow as { schemaname?: string, SCHEMANAME?: string, tablename?: string, TABLENAME?: string, roles?: string | string[], ROLES?: string | string[], policyname?: string, POLICYNAME?: string, permissive?: \"PERMISSIVE\" | \"RESTRICTIVE\", PERMISSIVE?: \"PERMISSIVE\" | \"RESTRICTIVE\", cmd?: \"SELECT\" | \"INSERT\" | \"UPDATE\" | \"DELETE\" | \"ALL\", CMD?: \"SELECT\" | \"INSERT\" | \"UPDATE\" | \"DELETE\" | \"ALL\", qual?: string | null, QUAL?: string | null, with_check?: string | null, WITH_CHECK?: string | null };\n const schema = p.schemaname || p.SCHEMANAME || \"public\";\n const table = p.tablename || p.TABLENAME || \"\";\n const key = `${schema}.${table}`;\n\n if (tableMap[key]) {\n // Postgres roles come back as an array string like \"{public}\" or literal array\n let parsedRoles: string[] = [];\n const r = p.roles || p.ROLES;\n if (Array.isArray(r)) {\n parsedRoles = r;\n } else if (typeof r === \"string\") {\n parsedRoles = r.replace(/^{|}$/g, \"\").split(\",\").map(s => s.trim());\n }\n\n tableMap[key].policies.push({\n policyname: p.policyname || p.POLICYNAME || \"\",\n tablename: table,\n permissive: p.permissive || p.PERMISSIVE || \"PERMISSIVE\",\n roles: parsedRoles,\n cmd: p.cmd || p.CMD || \"ALL\",\n qual: p.qual || p.QUAL || null,\n with_check: p.with_check || p.WITH_CHECK || null\n });\n }\n });\n\n const sortedTables = Object.values(tableMap).sort((a, b) => a.tableName.localeCompare(b.tableName));\n setTables(sortedTables);\n\n if (sortedTables.length > 0 && !selectedTable) {\n setSelectedTable(`${sortedTables[0].schemaName}.${sortedTables[0].tableName}`);\n }\n\n } catch (e: unknown) {\n console.error(\"RLS fetch error:\", e);\n setError(\"Failed to fetch RLS policies: \" + (e instanceof Error ? e.message : String(e)));\n } finally {\n setIsLoading(false);\n }\n }, [databaseAdmin, selectedTable]);\n\n useEffect(() => {\n setEditingPolicy(null);\n }, [selectedTable]);\n\n useEffect(() => {\n fetchRLSData();\n }, [fetchRLSData]);\n\n const activeTableData = useMemo(() => {\n if (!selectedTable) return null;\n return tables.find(t => `${t.schemaName}.${t.tableName}` === selectedTable) || null;\n }, [selectedTable, tables]);\n\n const groupedTables = useMemo(() => {\n const groups: Record<string, TableRLSStatus[]> = {};\n tables.forEach(table => {\n if (!groups[table.schemaName]) {\n groups[table.schemaName] = [];\n }\n groups[table.schemaName].push(table);\n });\n return groups;\n }, [tables]);\n\n const activeCollection = useMemo(() => {\n if (!activeTableData) return null;\n return collectionRegistry.collections?.find((c: { id?: string, path?: string, table?: string, slug?: string, collectionId?: string }) =>\n c.id === activeTableData.tableName ||\n c.path === activeTableData.tableName ||\n c.table === activeTableData.tableName ||\n c.slug === activeTableData.tableName ||\n c.collectionId === activeTableData.tableName\n ) || null;\n }, [activeTableData, collectionRegistry.collections]);\n\n const mergedPolicies = useMemo(() => {\n if (!activeTableData) return [];\n\n const policiesMap: Record<string, PostgresPolicy> = {};\n\n // Load live policies\n (activeTableData.policies || []).forEach(p => {\n policiesMap[p.policyname] = { ...p, status: \"live\" };\n });\n\n // Merge code-based policies\n if (activeCollection && isPostgresCollection(activeCollection) && activeCollection.securityRules) {\n activeCollection.securityRules.forEach((rule: { name?: string, mode?: string, operation?: string, roles?: string[], using?: string, withCheck?: string }) => {\n const ruleName = rule.name;\n if (!ruleName) return;\n\n if (policiesMap[ruleName]) {\n // It exists in Postgres, but we have a code definition (potentially edited)\n policiesMap[ruleName] = {\n policyname: ruleName,\n tablename: activeTableData.tableName,\n permissive: (rule.mode || \"permissive\").toUpperCase() as PostgresPolicy[\"permissive\"],\n cmd: (rule.operation || \"ALL\").toUpperCase() as PostgresPolicy[\"cmd\"],\n roles: rule.roles || [\"public\"],\n qual: rule.using || null,\n with_check: rule.withCheck || null,\n status: \"both\"\n };\n } else {\n policiesMap[ruleName] = {\n policyname: ruleName,\n tablename: activeTableData.tableName,\n permissive: (rule.mode || \"permissive\").toUpperCase() as PostgresPolicy[\"permissive\"],\n cmd: (rule.operation || \"ALL\").toUpperCase() as PostgresPolicy[\"cmd\"],\n roles: rule.roles || [\"public\"],\n qual: rule.using || null,\n with_check: rule.withCheck || null,\n status: \"code_only\"\n };\n }\n });\n }\n\n return Object.values(policiesMap).sort((a, b) => a.policyname.localeCompare(b.policyname));\n }, [activeTableData, activeCollection]);\n\n // Stats for the info tab\n const rlsStats = useMemo(() => {\n const total = tables.length;\n const enabled = tables.filter(t => t.rlsEnabled).length;\n const withPolicies = tables.filter(t => t.policies.length > 0).length;\n const totalPolicies = tables.reduce((sum, t) => sum + t.policies.length, 0);\n return { total, enabled, withPolicies, totalPolicies };\n }, [tables]);\n\n const renderPolicyTag = (label: string, value: string) => {\n return (\n <div className=\"flex items-center gap-1.5 px-2 py-1 rounded-md bg-surface-100 dark:bg-surface-800 border border-surface-200 dark:border-surface-700/50\">\n <span className=\"text-[10px] uppercase text-text-secondary dark:text-text-secondary-dark font-medium tracking-wider\">\n {label}:\n </span>\n <span className=\"font-mono text-xs text-text-primary dark:text-text-primary-dark break-all\">\n {value}\n </span>\n </div>\n );\n };\n\n return (\n <div className=\"flex h-full w-full bg-white dark:bg-surface-950 overflow-hidden text-text-primary dark:text-text-primary-dark\">\n <ResizablePanels\n orientation=\"horizontal\"\n panelSizePercent={sidebarSize}\n onPanelSizeChange={setSidebarSize}\n minPanelSizePx={220}\n firstPanel={\n <div className={cls(\"flex flex-col h-full w-full bg-white dark:bg-surface-950 border-r\", defaultBorderMixin)}>\n <Tabs value={sidebarTab} onValueChange={(v) => setSidebarTab(v as \"tables\" | \"info\")} variant=\"boxy\" className=\"border-b border-surface-200 dark:border-surface-800\">\n <Tab value=\"tables\">Tables</Tab>\n <Tab value=\"info\">Info</Tab>\n </Tabs>\n\n <div className=\"flex-grow overflow-hidden relative\">\n {sidebarTab === \"tables\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">\n {t(\"studio_schema_tables\")}\n </Typography>\n <IconButton size=\"small\" onClick={fetchRLSData} title=\"Refresh\">\n <RefreshIcon size=\"small\" />\n </IconButton>\n </div>\n <div className=\"flex-grow overflow-y-auto no-scrollbar p-1\">\n {isLoading && tables.length === 0 ? (\n <div className=\"flex justify-center p-4\"><CircularProgress size=\"small\" /></div>\n ) : Object.keys(groupedTables).length === 0 ? (\n <div className=\"p-4 text-center\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark italic\">{t(\"studio_rls_no_tables\")}</Typography>\n </div>\n ) : (\n Object.entries(groupedTables).map(([schemaName, schemaTables]) => (\n <div key={schemaName} className=\"mb-2\">\n <div\n className=\"flex items-center p-1 cursor-pointer hover:bg-surface-100 dark:hover:bg-surface-800 rounded transition-colors\"\n onClick={() => setExpandedSchemas(prev => ({ ...prev, [schemaName]: !prev[schemaName] }))}\n >\n <svg className={cls(\"w-3 h-3 mr-1 transition-transform\", expandedSchemas[schemaName] ? \"rotate-90\" : \"\")} fill=\"currentColor\" viewBox=\"0 0 20 20\"><path d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\" /></svg>\n <Typography variant=\"body2\" className=\"text-text-primary dark:text-text-primary-dark font-medium text-xs truncate flex-grow\">{schemaName}</Typography>\n </div>\n\n {expandedSchemas[schemaName] && (\n <div className=\"ml-3 mt-1 space-y-0.5\">\n {schemaTables.map(table => {\n const key = `${table.schemaName}.${table.tableName}`;\n const isSelected = selectedTable === key;\n return (\n <div\n key={key}\n onClick={() => setSelectedTable(key)}\n className={cls(\n \"flex items-center p-1 cursor-pointer rounded transition-colors group relative\",\n isSelected\n ? \"bg-primary/10 text-primary dark:bg-primary/20 dark:text-primary-light\"\n : \"hover:bg-surface-100 dark:hover:bg-surface-800 text-text-secondary dark:text-text-secondary-dark\"\n )}\n >\n <svg className=\"w-3.5 h-3.5 mr-1 shrink-0 text-text-disabled dark:text-text-disabled-dark\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 10h18M3 14h18m-9-4v8m-7 0h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\" /></svg>\n <Typography variant=\"body2\" className=\"text-xs truncate flex-1 min-w-0\">{table.tableName}</Typography>\n <div className=\"flex items-center gap-1.5 shrink-0 ml-2\">\n {table.rlsEnabled ? (\n <Tooltip title={t(\"studio_rls_enabled\")}>\n <div className=\"w-1.5 h-1.5 rounded-full bg-green-500\" />\n </Tooltip>\n ) : (\n <Tooltip title={t(\"studio_rls_disabled\")}>\n <div className=\"w-1.5 h-1.5 rounded-full bg-orange-400 opacity-50\" />\n </Tooltip>\n )}\n <span className=\"text-[10px] opacity-40 group-hover:opacity-100 min-w-[1.2rem] text-right font-medium\">\n {table.policies.length}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n ))\n )}\n </div>\n </div>\n )}\n\n {sidebarTab === \"info\" && (\n <div className=\"flex flex-col h-full\">\n <div className={cls(\"flex items-center justify-between px-3 py-2 border-b bg-surface-50 dark:bg-surface-900 min-h-[48px]\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">\n Overview\n </Typography>\n </div>\n <div className=\"flex-grow overflow-y-auto p-3 space-y-3 no-scrollbar\">\n <div className={cls(\"p-3 rounded-lg border bg-white dark:bg-surface-900\", defaultBorderMixin)}>\n <div className=\"flex items-center gap-2 mb-2\">\n <SecurityIcon size=\"small\" className=\"text-primary\" />\n <Typography variant=\"body2\" className=\"font-semibold text-[13px]\">RLS Studio</Typography>\n </div>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[11px] leading-relaxed block\">\n Manage Row Level Security policies for your PostgreSQL tables. Enable RLS and create fine-grained access policies.\n </Typography>\n </div>\n\n <div className=\"space-y-2\">\n <div className={cls(\"p-2.5 rounded border bg-white dark:bg-surface-900 flex items-center justify-between\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[11px]\">Total tables</Typography>\n <Typography variant=\"body2\" className=\"font-mono text-[13px] font-medium\">{rlsStats.total}</Typography>\n </div>\n <div className={cls(\"p-2.5 rounded border bg-white dark:bg-surface-900 flex items-center justify-between\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[11px]\">RLS enabled</Typography>\n <div className=\"flex items-center gap-1.5\">\n <div className=\"w-1.5 h-1.5 rounded-full bg-green-500\" />\n <Typography variant=\"body2\" className=\"font-mono text-[13px] font-medium\">{rlsStats.enabled}</Typography>\n </div>\n </div>\n <div className={cls(\"p-2.5 rounded border bg-white dark:bg-surface-900 flex items-center justify-between\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[11px]\">Tables with policies</Typography>\n <Typography variant=\"body2\" className=\"font-mono text-[13px] font-medium\">{rlsStats.withPolicies}</Typography>\n </div>\n <div className={cls(\"p-2.5 rounded border bg-white dark:bg-surface-900 flex items-center justify-between\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark text-[11px]\">Total policies</Typography>\n <Typography variant=\"body2\" className=\"font-mono text-[13px] font-medium\">{rlsStats.totalPolicies}</Typography>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n }\n secondPanel={\n <div className=\"flex-grow flex flex-col min-w-0 h-full w-full bg-white dark:bg-surface-950\">\n {/* Toolbar Header matching SQL/JS Editor style */}\n <div className={cls(\"flex items-center justify-between pr-2 border-b bg-white dark:bg-surface-950 min-h-[46px]\", defaultBorderMixin)}>\n <div className=\"flex items-center flex-grow overflow-hidden px-4\">\n <Typography variant=\"subtitle2\" className=\"font-mono text-text-secondary dark:text-text-secondary-dark truncate\">\n {activeTableData ? `${activeTableData.schemaName}.${activeTableData.tableName}` : t(\"studio_rls_select_table\")}\n </Typography>\n {activeTableData && (\n <div className=\"ml-3\">\n {activeTableData.rlsEnabled ? (\n <Chip size=\"smallest\" className=\"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400 border-green-200 dark:border-green-800\">{t(\"studio_rls_enabled\")}</Chip>\n ) : (\n <Chip size=\"smallest\" className=\"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400 border-yellow-200 dark:border-yellow-800\">{t(\"studio_rls_disabled\")}</Chip>\n )}\n </div>\n )}\n </div>\n <div className=\"flex shrink-0 items-center justify-end gap-1.5\">\n {activeTableData && (\n <>\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={async () => {\n const table = activeTableData.tableName;\n const action = activeTableData.rlsEnabled ? \"DISABLE\" : \"ENABLE\";\n if (!confirm(`Are you sure you want to ${action.toLowerCase()} Row Level Security on \"${table}\"?`)) return;\n try {\n await databaseAdmin!.executeSql!(`ALTER TABLE \"${table}\" ${action} ROW LEVEL SECURITY`);\n snackbarController.open({ type: \"success\", message: `RLS ${action.toLowerCase()}d on ${table}` });\n fetchRLSData();\n } catch (e: unknown) {\n snackbarController.open({ type: \"error\", message: e instanceof Error ? e.message : String(e) });\n }\n }}\n >\n {activeTableData.rlsEnabled ? t(\"studio_rls_disable_rls\") : t(\"studio_rls_enable_rls\")}\n </Button>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\" />\n\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={fetchRLSData}\n startIcon={<RefreshIcon size=\"smallest\" />}\n >\n Refresh\n </Button>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-1\" />\n\n <Button\n size=\"small\"\n color=\"primary\"\n disabled={!activeCollection}\n onClick={() => setEditingPolicy(\"new\")}\n >\n {t(\"studio_rls_create_policy\")}\n </Button>\n </>\n )}\n </div>\n </div>\n\n {error ? (\n <div className=\"p-6 h-full flex items-center justify-center\">\n <ErrorView title={t(\"studio_rls_error\")} error={error} onRetry={fetchRLSData} />\n </div>\n ) : !activeTableData ? (\n <div className=\"flex-grow flex items-center justify-center text-text-disabled h-full\">\n <div className=\"text-center\">\n <svg className=\"w-12 h-12 mx-auto mb-4 opacity-50\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1} d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\" /></svg>\n <Typography variant=\"body2\">{t(\"studio_rls_select_table\")}</Typography>\n </div>\n </div>\n ) : editingPolicy ? (\n <PolicyEditor\n policy={editingPolicy === \"new\" ? undefined : editingPolicy}\n schema={activeTableData.schemaName}\n table={activeTableData.tableName}\n onSave={async (newPolicy) => {\n if (!activeCollection) return;\n const rule: Record<string, unknown> = {\n name: newPolicy.policyname,\n operation: newPolicy.cmd?.toLowerCase(),\n mode: newPolicy.permissive?.toLowerCase(),\n using: newPolicy.qual || undefined,\n withCheck: newPolicy.with_check || undefined,\n roles: newPolicy.roles\n };\n\n const existingRules = (isPostgresCollection(activeCollection) ? activeCollection.securityRules : undefined) || [];\n let newRules;\n if (editingPolicy === \"new\") {\n newRules = [...existingRules, rule];\n } else {\n newRules = existingRules.map((r: { name?: string }) => r.name === editingPolicy.policyname ? rule : r);\n }\n\n try {\n const response = await fetch(`${apiUrl}/api/schema-editor/collection/save`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n collectionId: (activeCollection as { id?: string, path?: string, alias?: string }).id || (activeCollection as { id?: string, path?: string, alias?: string }).path || (activeCollection as { id?: string, path?: string, alias?: string }).alias || activeTableData.tableName,\n collectionData: { securityRules: newRules }\n })\n });\n if (!response.ok) throw new Error(\"Failed to save policy\");\n\n snackbarController.open({ type: \"success\", message: \"Policy saved successfully\" });\n setEditingPolicy(null);\n fetchRLSData();\n } catch (e: unknown) {\n snackbarController.open({ type: \"error\", message: e instanceof Error ? e.message : String(e) });\n }\n }}\n onCancel={() => setEditingPolicy(null)}\n />\n ) : (\n <div className=\"flex-grow flex flex-col overflow-hidden\">\n <div className=\"p-6 pt-4 flex-grow overflow-auto bg-surface-50 dark:bg-surface-900\">\n <div className=\"max-w-4xl mx-auto flex flex-col gap-6\">\n {activeTableData && !activeCollection && (\n <Alert\n color=\"warning\"\n >\n <Typography variant=\"body2\" className=\"mb-1\">\n Table not managed by Rebase\n </Typography>\n <Typography variant=\"caption\" className=\"opacity-80\">\n This table is not mapped to a Rebase Schema via code. To edit security policies visually, you must first import this table into a Schema configuration file.\n </Typography>\n </Alert>\n )}\n\n {activeTableData && !activeTableData.rlsEnabled && (\n <div className={cls(\"p-4 sm:p-5 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-900/50 rounded-lg flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between\", defaultBorderMixin)}>\n <div className=\"flex gap-3 items-start\">\n <div className=\"mt-1 bg-yellow-100 dark:bg-yellow-900/50 p-1.5 rounded-md shrink-0 flex items-center justify-center\">\n <WarningIcon size=\"small\" />\n </div>\n <div>\n <Typography variant=\"subtitle2\" className=\"text-yellow-800 dark:text-yellow-500\">\n Row Level Security (RLS) is disabled\n </Typography>\n <Typography variant=\"body2\" className=\"text-yellow-700 dark:text-yellow-600/90 mt-1 max-w-2xl\">\n Your table is completely readable and writable by anyone with access privileges. Enable RLS to create policies that restrict access to specific rows.\n </Typography>\n </div>\n </div>\n <Button\n size=\"medium\"\n variant=\"filled\"\n color=\"neutral\"\n onClick={() => setEditingPolicy(\"new\")}\n className=\"shrink-0 whitespace-nowrap\"\n disabled={!activeCollection}\n >\n {t(\"studio_rls_create_policy\")}\n </Button>\n </div>\n )}\n\n {activeTableData && mergedPolicies && mergedPolicies.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"subtitle2\" className=\"text-text-secondary dark:text-text-secondary-dark uppercase tracking-wider mb-1\">{t(\"studio_rls_policies\")}</Typography>\n {mergedPolicies.map(policy => (\n <Paper key={policy.policyname} className={cls(\"p-3 sm:px-4 sm:py-3 flex flex-col sm:flex-row sm:items-center justify-between gap-4 border rounded-lg\", defaultBorderMixin)}>\n <div className=\"flex flex-col gap-2 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <KeyIcon size=\"small\" className=\"text-text-secondary dark:text-text-secondary-dark shrink-0\" />\n <Typography variant=\"body2\" className=\"truncate\">{policy.policyname}</Typography>\n {policy.status === \"code_only\" && (\n <Tooltip title=\"This policy is defined in your code but hasn't been applied to the database yet.\">\n <div className=\"px-1.5 py-0.5 rounded text-[10px] uppercase bg-primary/10 text-primary border border-primary/20 shrink-0\">\n Unapplied\n </div>\n </Tooltip>\n )}\n {policy.status === \"live\" && (\n <Tooltip title=\"This policy is live in the database but missing from your codebase schema.\">\n <div className=\"px-1.5 py-0.5 rounded text-[10px] uppercase bg-orange-500/10 text-orange-600 border border-orange-500/20 shrink-0\">\n DB Only\n </div>\n </Tooltip>\n )}\n </div>\n <div className=\"flex flex-wrap gap-1.5 text-sm\">\n {renderPolicyTag(\"Action\", policy.cmd)}\n {renderPolicyTag(\"Roles\", Array.isArray(policy.roles) ? policy.roles.join(\", \") : policy.roles)}\n </div>\n </div>\n <div className=\"flex gap-2 shrink-0 items-center\">\n {policy.status === \"live\" && activeCollection && (\n <Button\n size=\"small\"\n variant=\"outlined\"\n color=\"primary\"\n onClick={async () => {\n const rule: Record<string, unknown> = {\n name: policy.policyname,\n operation: policy.cmd?.toLowerCase(),\n mode: policy.permissive?.toLowerCase(),\n using: policy.qual || undefined,\n withCheck: policy.with_check || undefined,\n roles: policy.roles\n };\n\n const existingRules = (isPostgresCollection(activeCollection) ? activeCollection.securityRules : undefined) || [];\n const newRules = [...existingRules, rule];\n\n try {\n const response = await fetch(`${apiUrl}/api/schema-editor/collection/save`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n collectionId: (activeCollection as { id?: string, path?: string, alias?: string }).id || (activeCollection as { id?: string, path?: string, alias?: string }).path || (activeCollection as { id?: string, path?: string, alias?: string }).alias || activeTableData!.tableName,\n collectionData: { securityRules: newRules }\n })\n });\n if (!response.ok) throw new Error(\"Failed to save policy\");\n\n snackbarController.open({ type: \"success\", message: \"Policy imported successfully\" });\n fetchRLSData();\n } catch (e: unknown) {\n snackbarController.open({ type: \"error\", message: e instanceof Error ? e.message : String(e) });\n }\n }}\n >\n Import to codebase\n </Button>\n )}\n <Button size=\"small\" variant=\"text\" color=\"primary\" onClick={() => setEditingPolicy(policy)} disabled={!activeCollection}>\n {t(\"studio_rls_edit\")}\n </Button>\n {policy.status !== \"code_only\" && (\n <Tooltip title={t(\"studio_rls_delete\")} asChild={true}>\n <IconButton\n size=\"small\"\n onClick={async () => {\n const table = activeTableData!.tableName;\n if (!confirm(`Drop policy \"${policy.policyname}\" from table \"${table}\"?`)) return;\n try {\n await databaseAdmin!.executeSql!(`DROP POLICY \"${policy.policyname}\" ON \"${table}\"`);\n snackbarController.open({ type: \"success\", message: `Policy \"${policy.policyname}\" dropped` });\n fetchRLSData();\n } catch (e: unknown) {\n snackbarController.open({ type: \"error\", message: e instanceof Error ? e.message : String(e) });\n }\n }}\n >\n <DeleteIcon size=\"small\" />\n </IconButton>\n </Tooltip>\n )}\n </div>\n </Paper>\n ))}\n </div>\n )}\n\n </div>\n </div>\n </div>\n )}\n </div>\n }\n />\n </div>\n );\n};\n","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport {\n Typography,\n cls,\n defaultBorderMixin,\n Button,\n IconButton,\n Tooltip,\n CircularProgress,\n ResizablePanels,\n Chip,\n Dialog,\n DialogContent,\n DialogActions,\n RefreshIcon,\n DeleteIcon,\n CloseIcon,\n AddIcon,\n DownloadIcon,\n CloudUploadIcon,\n FolderIcon,\n DescriptionIcon,\n ImageIcon,\n VideoLibraryIcon,\n AudiotrackIcon,\n ArrowBackIcon,\n Icon,\n FileUpload\n} from \"@rebasepro/ui\";\nimport { useStorageSource, useSnackbarController, ErrorView } from \"@rebasepro/core\";\nimport type { StorageListResult } from \"@rebasepro/types\";\n\n// ──────────────────────────────────────────────\n// Types\n// ──────────────────────────────────────────────\n\ninterface StorageFile {\n name: string;\n fullPath: string;\n isFolder: boolean;\n /** Only populated when metadata is fetched */\n size?: number;\n contentType?: string;\n downloadUrl?: string;\n}\n\n// ──────────────────────────────────────────────\n// Helpers\n// ──────────────────────────────────────────────\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;\n}\n\nfunction getFileIcon(contentType?: string) {\n if (!contentType) return DescriptionIcon;\n if (contentType.startsWith(\"image/\")) return ImageIcon;\n if (contentType.startsWith(\"video/\")) return VideoLibraryIcon;\n if (contentType.startsWith(\"audio/\")) return AudiotrackIcon;\n return DescriptionIcon;\n}\n\nfunction getExtension(name: string): string {\n const parts = name.split(\".\");\n return parts.length > 1 ? parts[parts.length - 1].toUpperCase() : \"\";\n}\n\nfunction breadcrumbSegments(path: string): { label: string; path: string }[] {\n if (!path || path === \"/\") return [{ label: \"Root\", path: \"\" }];\n const parts = path.split(\"/\").filter(Boolean);\n const segments = [{ label: \"Root\", path: \"\" }];\n let accumulated = \"\";\n for (const part of parts) {\n accumulated = accumulated ? `${accumulated}/${part}` : part;\n segments.push({ label: part, path: accumulated });\n }\n return segments;\n}\n\n// ──────────────────────────────────────────────\n// Upload Dialog\n// ──────────────────────────────────────────────\n\nfunction UploadDialog({\n open,\n currentPath,\n onClose,\n onUpload\n}: {\n open: boolean;\n currentPath: string;\n onClose: () => void;\n onUpload: (files: File[]) => Promise<void>;\n}) {\n const [uploading, setUploading] = useState(false);\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n const [error, setError] = useState<string | null>(null);\n\n const handleFilesAdded = useCallback((files: File[]) => {\n setSelectedFiles(prev => [...prev, ...files]);\n }, []);\n\n const handleRemoveFile = useCallback((index: number) => {\n setSelectedFiles(prev => prev.filter((_, i) => i !== index));\n }, []);\n\n const handleUpload = useCallback(async () => {\n if (selectedFiles.length === 0) return;\n setUploading(true);\n setError(null);\n try {\n await onUpload(selectedFiles);\n setSelectedFiles([]);\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Upload failed\");\n } finally {\n setUploading(false);\n }\n }, [selectedFiles, onUpload, onClose]);\n\n const handleClose = useCallback(() => {\n if (!uploading) {\n setSelectedFiles([]);\n setError(null);\n onClose();\n }\n }, [uploading, onClose]);\n\n return (\n <Dialog open={open} onOpenChange={(o) => !o && handleClose()} maxWidth=\"md\">\n <DialogContent className=\"p-0\">\n <div className=\"p-4 border-b border-surface-accent-200 dark:border-surface-accent-700\">\n <Typography variant=\"h6\">Upload Files</Typography>\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark mt-1 block\">\n to <span className=\"font-mono text-primary\">/{currentPath || \"root\"}</span>\n </Typography>\n </div>\n\n <div className=\"p-4\">\n {/* Drop Zone */}\n <FileUpload\n accept={{} as Record<string, string[]>}\n onFilesAdded={handleFilesAdded}\n size=\"large\"\n uploadDescription={\n <div className=\"flex flex-col items-center justify-center pointer-events-none mt-2\">\n <CloudUploadIcon className=\"text-surface-accent-400 mb-2 w-8 h-8\" />\n <Typography variant=\"h6\" className=\"font-bold\">\n Drop files here or click to browse\n </Typography>\n <Typography variant=\"caption\" className=\"text-surface-accent-500 font-medium\">\n Any file type supported\n </Typography>\n </div>\n }\n />\n\n {error && (\n <Typography variant=\"caption\" className=\"text-red-500 mt-2 block whitespace-pre-line\">\n {error}\n </Typography>\n )}\n\n {selectedFiles.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n <Typography variant=\"caption\" className=\"text-surface-accent-500\">\n Selected files ({selectedFiles.length})\n </Typography>\n <div className=\"max-h-40 overflow-auto space-y-1\">\n {selectedFiles.map((file, index) => (\n <div\n key={`${file.name}-${index}`}\n className={cls(\n \"flex items-center justify-between p-2 rounded\",\n \"bg-surface-accent-50 dark:bg-surface-accent-800\"\n )}\n >\n <div className=\"flex-1 min-w-0 mr-2\">\n <Typography variant=\"body2\" className=\"truncate\">\n {file.name}\n </Typography>\n <Typography variant=\"caption\" className=\"text-surface-accent-500\">\n {formatFileSize(file.size)}\n </Typography>\n </div>\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemoveFile(index);\n }}\n disabled={uploading}\n >\n Remove\n </Button>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"text\" onClick={handleClose} disabled={uploading}>\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n onClick={handleUpload}\n disabled={selectedFiles.length === 0 || uploading}\n >\n {uploading ? (\n <>\n <CircularProgress size=\"smallest\" />\n Uploading...\n </>\n ) : (\n `Upload ${selectedFiles.length > 0 ? `(${selectedFiles.length})` : \"\"}`\n )}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\n// ──────────────────────────────────────────────\n// File preview panel\n// ──────────────────────────────────────────────\n\nfunction FilePreviewPanel({\n file,\n onClose,\n onDelete,\n downloadUrl\n}: {\n file: StorageFile;\n onClose: () => void;\n onDelete: () => void;\n downloadUrl: string | null;\n}) {\n const isImage = file.contentType?.startsWith(\"image/\");\n const isVideo = file.contentType?.startsWith(\"video/\");\n const isAudio = file.contentType?.startsWith(\"audio/\");\n const FileIconComponent = getFileIcon(file.contentType);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n\n return (\n <>\n <div className={cls(\n \"flex flex-col h-full border-l\",\n defaultBorderMixin,\n \"bg-white dark:bg-surface-950\"\n )}>\n {/* Header */}\n <div className={cls(\"flex items-center justify-between p-3 border-b shrink-0\", defaultBorderMixin)}>\n <Typography variant=\"body2\" className=\"font-medium truncate flex-1 mr-2\">\n {file.name}\n </Typography>\n <div className=\"flex items-center gap-0.5\">\n {downloadUrl && (\n <Tooltip title=\"Download\">\n <IconButton\n size=\"small\"\n onClick={() => window.open(downloadUrl, \"_blank\")}\n >\n <DownloadIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip title=\"Delete\">\n <IconButton\n size=\"small\"\n onClick={() => setDeleteDialogOpen(true)}\n className=\"text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20\"\n >\n <DeleteIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n <IconButton size=\"small\" onClick={onClose}>\n <CloseIcon size=\"smallest\" />\n </IconButton>\n </div>\n </div>\n\n {/* Preview */}\n <div className=\"flex-1 overflow-auto\">\n <div className=\"flex flex-col items-center justify-center min-h-[200px] p-4 bg-surface-50 dark:bg-surface-900 border-b border-surface-accent-200 dark:border-surface-accent-700\">\n {(() => {\n const ext = getExtension(file.name)?.toLowerCase() || \"\";\n const isImage = file.contentType?.startsWith(\"image/\") || [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"svg\"].includes(ext);\n const isVideo = file.contentType?.startsWith(\"video/\") || [\"mp4\", \"webm\", \"ogg\", \"mov\"].includes(ext);\n const isAudio = file.contentType?.startsWith(\"audio/\") || [\"mp3\", \"wav\", \"ogg\", \"m4a\"].includes(ext);\n const downloadUrl = file.downloadUrl;\n\n if (isImage && downloadUrl) {\n return (\n <img\n src={downloadUrl}\n alt={file.name}\n className=\"max-w-full max-h-[400px] object-contain rounded-md shadow-sm\"\n />\n );\n } else if (isVideo && downloadUrl) {\n return (\n <video\n src={downloadUrl}\n className=\"max-w-full max-h-[400px] rounded-md\"\n controls\n />\n );\n } else if (isAudio && downloadUrl) {\n return (\n <div className=\"flex flex-col items-center gap-4\">\n <AudiotrackIcon className=\"text-surface-accent-400 w-10 h-10\" />\n <audio src={downloadUrl} controls className=\"w-full max-w-xs\" />\n </div>\n );\n } else {\n return (\n <div className=\"flex flex-col items-center gap-3 text-surface-accent-400\">\n <FileIconComponent className=\"w-10 h-10\" />\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">\n No preview available\n </Typography>\n </div>\n );\n }\n })()}\n </div>\n </div>\n\n {/* Metadata */}\n <div className=\"p-4 space-y-3\">\n <div>\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark text-[10px] uppercase tracking-wider font-bold mb-1 block\">\n File Info\n </Typography>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px]\">\n Name\n </Typography>\n <Typography variant=\"body2\" className=\"text-[13px] break-all\">\n {file.name}\n </Typography>\n </div>\n <div>\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px]\">\n Type\n </Typography>\n <Typography variant=\"body2\" className=\"text-[13px]\">\n {file.contentType || \"Unknown\"}\n </Typography>\n </div>\n {file.size !== undefined && (\n <div>\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px]\">\n Size\n </Typography>\n <Typography variant=\"body2\" className=\"text-[13px]\">\n {formatFileSize(file.size)}\n </Typography>\n </div>\n )}\n <div>\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px]\">\n Extension\n </Typography>\n <Typography variant=\"body2\" className=\"text-[13px] font-mono\">\n {getExtension(file.name) || \"—\"}\n </Typography>\n </div>\n <div className=\"col-span-2\">\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px]\">\n Path\n </Typography>\n <Typography variant=\"body2\" className=\"text-[13px] font-mono break-all\">\n {file.fullPath}\n </Typography>\n </div>\n </div>\n\n {downloadUrl && (\n <div className=\"pt-2\">\n <Typography variant=\"caption\" className=\"text-surface-accent-500 text-[11px] block mb-1\">\n URL\n </Typography>\n <div\n className=\"p-2 rounded bg-surface-100 dark:bg-surface-800 cursor-pointer hover:bg-surface-200 dark:hover:bg-surface-700 transition-colors\"\n onClick={() => {\n navigator.clipboard.writeText(downloadUrl);\n }}\n >\n <Typography variant=\"caption\" className=\"font-mono text-[11px] break-all text-primary\">\n {downloadUrl}\n </Typography>\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark text-[10px] block mt-1\">\n Click to copy\n </Typography>\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* Delete Confirmation */}\n <Dialog open={deleteDialogOpen} onOpenChange={setDeleteDialogOpen}>\n <DialogContent>\n <Typography variant=\"subtitle1\" className=\"mb-2\">\n Delete File?\n </Typography>\n <Typography className=\"text-surface-accent-600 dark:text-surface-accent-400\">\n Are you sure you want to delete &quot;{file.name}&quot;?\n This action cannot be undone.\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"text\" onClick={() => setDeleteDialogOpen(false)}>\n Cancel\n </Button>\n <Button\n variant=\"filled\"\n color=\"error\"\n onClick={() => {\n setDeleteDialogOpen(false);\n onDelete();\n }}\n >\n Delete\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n\n// ──────────────────────────────────────────────\n// Sidebar (folder tree)\n// ──────────────────────────────────────────────\n\nfunction StorageSidebar({\n folders,\n currentPath,\n onNavigate,\n loading\n}: {\n folders: StorageFile[];\n currentPath: string;\n onNavigate: (path: string) => void;\n loading: boolean;\n}) {\n const segments = breadcrumbSegments(currentPath);\n\n return (\n <div className={cls(\"flex flex-col h-full w-full bg-white dark:bg-surface-950 border-r\", defaultBorderMixin)}>\n <div className={cls(\"p-3 border-b flex justify-between items-center bg-surface-50 dark:bg-surface-900 shrink-0\", defaultBorderMixin)}>\n <Typography variant=\"caption\" className=\"font-bold uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\">\n Folders\n </Typography>\n </div>\n\n <div className=\"flex-grow overflow-y-auto no-scrollbar p-1\">\n {/* Folder tree */}\n <div\n className={cls(\n \"flex items-center p-1.5 cursor-pointer rounded transition-colors\",\n currentPath === \"\" || !currentPath\n ? \"bg-primary/10 text-primary dark:bg-primary/20 dark:text-primary-light\"\n : \"hover:bg-surface-100 dark:hover:bg-surface-800 text-text-secondary dark:text-text-secondary-dark\"\n )}\n onClick={() => onNavigate(\"\")}\n >\n <Icon iconKey=\"home\" size=\"smallest\" className=\"mr-1.5 shrink-0\" />\n <Typography variant=\"body2\" className=\"text-xs truncate\">Root</Typography>\n </div>\n\n {loading && folders.length === 0 ? (\n <div className=\"flex justify-center p-4\">\n <CircularProgress size=\"small\" />\n </div>\n ) : (\n <div className=\"mt-1 space-y-0.5\">\n {folders.map(folder => {\n const isSelected = currentPath === folder.fullPath;\n return (\n <div\n key={folder.fullPath}\n className={cls(\n \"flex items-center p-1.5 cursor-pointer rounded transition-colors group\",\n isSelected\n ? \"bg-primary/10 text-primary dark:bg-primary/20 dark:text-primary-light\"\n : \"hover:bg-surface-100 dark:hover:bg-surface-800 text-text-secondary dark:text-text-secondary-dark\"\n )}\n onClick={() => onNavigate(folder.fullPath)}\n >\n <FolderIcon size=\"smallest\" className=\"mr-1.5 shrink-0 text-amber-500 dark:text-amber-400\" />\n <Typography variant=\"body2\" className=\"text-xs truncate flex-1 min-w-0\">\n {folder.name}\n </Typography>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ──────────────────────────────────────────────\n// Main StorageView Export\n// ──────────────────────────────────────────────\n\nexport const StorageView = () => {\n const storageSource = useStorageSource();\n const snackbarController = useSnackbarController();\n\n // Navigation\n const [currentPath, setCurrentPath] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n // Contents\n const [folders, setFolders] = useState<StorageFile[]>([]);\n const [files, setFiles] = useState<StorageFile[]>([]);\n\n // Selection and preview\n const [selectedFile, setSelectedFile] = useState<StorageFile | null>(null);\n const [selectedDownloadUrl, setSelectedDownloadUrl] = useState<string | null>(null);\n\n // Upload\n const [uploadDialogOpen, setUploadDialogOpen] = useState(false);\n\n // View mode\n const [viewMode, setViewMode] = useState<\"grid\" | \"list\">(\"grid\");\n\n // Resizable panels\n\n // Resizable panels\n const [sidebarSize, setSidebarSize] = useState(() => {\n try {\n const saved = localStorage.getItem(\"rebase_storage_sidebar_size\");\n return saved !== null ? parseFloat(saved) : 18;\n } catch {\n return 18;\n }\n });\n\n useEffect(() => {\n try {\n localStorage.setItem(\"rebase_storage_sidebar_size\", sidebarSize.toString());\n } catch { /* noop */ }\n }, [sidebarSize]);\n\n // ── Fetch directory contents ──\n const fetchContents = useCallback(async (path: string) => {\n setLoading(true);\n setError(null);\n try {\n const result: StorageListResult = await storageSource.list(path);\n\n const folderItems: StorageFile[] = (result.prefixes ?? []).map(ref => ({\n name: ref.name,\n fullPath: ref.fullPath,\n isFolder: true\n }));\n\n // Build file items and fetch metadata for each\n const fileItems: StorageFile[] = await Promise.all(\n (result.items ?? []).map(async (ref) => {\n try {\n const downloadConfig = await storageSource.getDownloadURL(ref.fullPath);\n return {\n name: ref.name,\n fullPath: ref.fullPath,\n isFolder: false,\n size: downloadConfig.metadata?.size,\n contentType: downloadConfig.metadata?.contentType,\n downloadUrl: downloadConfig.url ?? undefined\n };\n } catch {\n return {\n name: ref.name,\n fullPath: ref.fullPath,\n isFolder: false\n };\n }\n })\n );\n\n setFolders(folderItems);\n setFiles(fileItems);\n } catch (e) {\n console.error(\"Storage list error:\", e);\n setError(e instanceof Error ? e.message : String(e));\n } finally {\n setLoading(false);\n }\n }, [storageSource]);\n\n useEffect(() => {\n fetchContents(currentPath);\n }, [currentPath, fetchContents]);\n\n // Navigate to path\n const handleNavigate = useCallback((path: string) => {\n setCurrentPath(path);\n setSelectedFile(null);\n setSelectedDownloadUrl(null);\n }, []);\n\n // Navigate up one level\n const handleNavigateUp = useCallback(() => {\n const parts = currentPath.split(\"/\").filter(Boolean);\n parts.pop();\n handleNavigate(parts.join(\"/\"));\n }, [currentPath, handleNavigate]);\n\n // Select a file for preview\n const handleSelectFile = useCallback(async (file: StorageFile) => {\n setSelectedFile(file);\n if (file.downloadUrl) {\n setSelectedDownloadUrl(file.downloadUrl);\n } else {\n try {\n const config = await storageSource.getDownloadURL(file.fullPath);\n setSelectedDownloadUrl(config.url);\n } catch {\n setSelectedDownloadUrl(null);\n }\n }\n }, [storageSource]);\n\n // Upload files\n const handleUpload = useCallback(async (uploadFiles: File[]) => {\n for (const file of uploadFiles) {\n await storageSource.uploadFile({\n file,\n fileName: file.name,\n path: currentPath || undefined\n });\n }\n snackbarController.open({\n type: \"success\",\n message: `${uploadFiles.length} file${uploadFiles.length > 1 ? \"s\" : \"\"} uploaded successfully`\n });\n fetchContents(currentPath);\n }, [storageSource, currentPath, snackbarController, fetchContents]);\n\n // Delete a file\n const handleDeleteFile = useCallback(async (file: StorageFile) => {\n try {\n await storageSource.deleteFile(file.fullPath);\n snackbarController.open({ type: \"success\", message: `\"${file.name}\" deleted` });\n setSelectedFile(null);\n setSelectedDownloadUrl(null);\n fetchContents(currentPath);\n } catch (e) {\n snackbarController.open({ type: \"error\", message: e instanceof Error ? e.message : String(e) });\n }\n }, [storageSource, currentPath, snackbarController, fetchContents]);\n\n // Handle refresh\n const handleRefresh = useCallback(() => {\n fetchContents(currentPath);\n }, [currentPath, fetchContents]);\n\n const segments = breadcrumbSegments(currentPath);\n\n // ── Render file grid/list ──\n const renderContents = () => {\n if (loading) {\n return (\n <div className=\"flex-grow flex items-center justify-center\">\n <div className=\"text-center\">\n <CircularProgress size=\"medium\" />\n <Typography variant=\"body2\" className=\"mt-4 text-text-secondary dark:text-text-secondary-dark font-mono tracking-tight animate-pulse\">\n Loading...\n </Typography>\n </div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"flex-grow flex items-center justify-center p-6 overflow-auto\">\n <ErrorView title=\"Error loading storage\" error={error} onRetry={handleRefresh} />\n </div>\n );\n }\n\n const allItems = [...folders, ...files];\n\n if (allItems.length === 0) {\n return (\n <div className=\"flex-grow flex items-center justify-center text-text-disabled dark:text-text-disabled-dark\">\n <div className=\"text-center\">\n <svg className=\"w-12 h-12 mx-auto mb-4 opacity-50\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1} d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\" />\n </svg>\n <Typography variant=\"body2\">\n This folder is empty\n </Typography>\n <Button className=\"mt-3\" onClick={() => setUploadDialogOpen(true)}>\n <AddIcon size=\"small\" />\n Upload files\n </Button>\n </div>\n </div>\n );\n }\n\n if (viewMode === \"list\") {\n return (\n <div className=\"flex-grow overflow-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className={cls(\"border-b text-left text-[10px] uppercase tracking-wider text-text-disabled dark:text-text-disabled-dark\", defaultBorderMixin)}>\n <th className=\"px-4 py-2 font-bold\">Name</th>\n <th className=\"px-4 py-2 font-bold w-24\">Type</th>\n <th className=\"px-4 py-2 font-bold w-24 text-right\">Size</th>\n </tr>\n </thead>\n <tbody>\n {folders.map(folder => (\n <tr\n key={folder.fullPath}\n className=\"hover:bg-surface-100 dark:hover:bg-surface-800 cursor-pointer transition-colors border-b border-surface-100 dark:border-surface-800/50\"\n onClick={() => handleNavigate(folder.fullPath)}\n >\n <td className=\"px-4 py-2.5\">\n <div className=\"flex items-center gap-2\">\n <FolderIcon size=\"smallest\" className=\"text-amber-500 dark:text-amber-400 shrink-0\" />\n <Typography variant=\"body2\" className=\"text-[13px] font-medium truncate\">\n {folder.name}\n </Typography>\n </div>\n </td>\n <td className=\"px-4 py-2.5\">\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n Folder\n </Typography>\n </td>\n <td className=\"px-4 py-2.5 text-right\">\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark\">\n —\n </Typography>\n </td>\n </tr>\n ))}\n {files.map(file => {\n const FileIconComp = getFileIcon(file.contentType);\n const isSelected = selectedFile?.fullPath === file.fullPath;\n return (\n <tr\n key={file.fullPath}\n className={cls(\n \"cursor-pointer transition-colors border-b border-surface-100 dark:border-surface-800/50\",\n isSelected\n ? \"bg-primary/5 dark:bg-primary/10\"\n : \"hover:bg-surface-100 dark:hover:bg-surface-800\"\n )}\n onClick={() => handleSelectFile(file)}\n >\n <td className=\"px-4 py-2.5\">\n <div className=\"flex items-center gap-2\">\n <FileIconComp size=\"smallest\" className=\"text-surface-accent-400 shrink-0\" />\n <Typography variant=\"body2\" className=\"text-[13px] truncate\">\n {file.name}\n </Typography>\n </div>\n </td>\n <td className=\"px-4 py-2.5\">\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark\">\n {getExtension(file.name) || file.contentType?.split(\"/\")[1]?.toUpperCase() || \"—\"}\n </Typography>\n </td>\n <td className=\"px-4 py-2.5 text-right\">\n <Typography variant=\"caption\" className=\"text-text-secondary dark:text-text-secondary-dark font-mono text-[11px]\">\n {file.size !== undefined ? formatFileSize(file.size) : \"—\"}\n </Typography>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n }\n\n // Grid view\n return (\n <div className=\"flex-grow overflow-auto p-4\">\n {/* Folder cards */}\n {folders.length > 0 && (\n <div className=\"mb-4\">\n <Typography variant=\"caption\" className=\"text-[10px] uppercase tracking-wider font-bold text-text-disabled dark:text-text-disabled-dark mb-2 block\">\n Folders\n </Typography>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-3\">\n {folders.map(folder => (\n <div\n key={folder.fullPath}\n className={cls(\n \"rounded-lg p-3 cursor-pointer transition-all duration-150 border\",\n defaultBorderMixin,\n \"hover:bg-surface-100 dark:hover:bg-surface-800 hover:shadow-sm\",\n \"flex items-center gap-2\"\n )}\n onClick={() => handleNavigate(folder.fullPath)}\n >\n <FolderIcon size=\"small\" className=\"text-amber-500 dark:text-amber-400 shrink-0\" />\n <Typography variant=\"body2\" className=\"text-[13px] font-medium truncate\">\n {folder.name}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* File cards */}\n {files.length > 0 && (\n <div>\n <Typography variant=\"caption\" className=\"text-[10px] uppercase tracking-wider font-bold text-text-disabled dark:text-text-disabled-dark mb-2 block\">\n Files ({files.length})\n </Typography>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-3\">\n {files.map(file => {\n const FileIconComp = getFileIcon(file.contentType);\n const ext = getExtension(file.name)?.toLowerCase() || \"\";\n const isImage = file.contentType?.startsWith(\"image/\") || [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"svg\"].includes(ext);\n const isSelected = selectedFile?.fullPath === file.fullPath;\n\n return (\n <div\n key={file.fullPath}\n className={cls(\n \"rounded-lg overflow-hidden cursor-pointer transition-all duration-150 border group\",\n defaultBorderMixin,\n \"hover:shadow-md hover:-translate-y-0.5\",\n isSelected && \"ring-2 ring-primary\"\n )}\n onClick={() => handleSelectFile(file)}\n >\n {/* Thumbnail or icon */}\n <div className=\"aspect-square relative overflow-hidden bg-surface-100 dark:bg-surface-800 flex items-center justify-center\">\n {isImage && file.downloadUrl ? (\n <img\n src={file.downloadUrl}\n alt={file.name}\n className=\"w-full h-full object-cover transition-transform duration-200 group-hover:scale-105\"\n loading=\"lazy\"\n />\n ) : (\n <FileIconComp className=\"text-surface-accent-400 dark:text-surface-accent-500 w-8 h-8\" />\n )}\n\n {/* Extension badge */}\n {getExtension(file.name) && (\n <div className=\"absolute bottom-1.5 right-1.5 px-1.5 py-0.5 rounded text-[9px] font-bold uppercase bg-black/50 text-white backdrop-blur-sm\">\n {getExtension(file.name)}\n </div>\n )}\n\n {/* Hover overlay */}\n <div className={cls(\n \"absolute inset-0 bg-black/0 group-hover:bg-black/10\",\n \"transition-colors duration-200\"\n )} />\n </div>\n\n {/* Name & size */}\n <div className=\"p-2.5\">\n <Typography variant=\"body2\" className=\"text-[12px] font-medium truncate text-surface-900 dark:text-white\">\n {file.name}\n </Typography>\n <Typography variant=\"caption\" color=\"secondary\" className=\"truncate block mt-0.5 text-[11px]\">\n {file.size !== undefined ? formatFileSize(file.size) : \"—\"}\n </Typography>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div className=\"flex h-full w-full bg-white dark:bg-surface-950 overflow-hidden text-text-primary dark:text-text-primary-dark\">\n <ResizablePanels\n orientation=\"horizontal\"\n panelSizePercent={sidebarSize}\n onPanelSizeChange={setSidebarSize}\n minPanelSizePx={180}\n firstPanel={\n <StorageSidebar\n folders={folders}\n currentPath={currentPath}\n onNavigate={handleNavigate}\n loading={loading}\n />\n }\n secondPanel={\n <div className=\"flex h-full w-full\">\n {/* Main content */}\n <div className=\"flex-grow flex flex-col min-w-0 h-full\">\n {/* Toolbar */}\n <div className={cls(\"flex items-center justify-between pr-2 border-b bg-white dark:bg-surface-950 shrink-0\", defaultBorderMixin)}>\n <div className=\"flex items-center gap-1.5 flex-grow overflow-hidden px-3 py-2\">\n {/* Breadcrumbs */}\n {currentPath && (\n <Tooltip title=\"Go up\">\n <IconButton size=\"small\" onClick={handleNavigateUp}>\n <ArrowBackIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n )}\n <div className=\"flex items-center gap-0.5 overflow-x-auto no-scrollbar\">\n {segments.map((seg, i) => (\n <React.Fragment key={seg.path}>\n {i > 0 && (\n <Typography variant=\"caption\" className=\"text-text-disabled dark:text-text-disabled-dark mx-0.5\">/</Typography>\n )}\n <Button\n variant=\"text\"\n size=\"small\"\n className={cls(\n \"px-1.5 py-0.5 min-h-0 min-w-0 h-6 text-xs whitespace-nowrap normal-case font-normal\",\n i === segments.length - 1\n ? \"text-text-primary dark:text-text-primary-dark font-medium\"\n : \"text-text-secondary dark:text-text-secondary-dark\"\n )}\n onClick={() => handleNavigate(seg.path)}\n >\n {seg.label}\n </Button>\n </React.Fragment>\n ))}\n </div>\n\n <div className=\"flex-1\" />\n\n {/* File count */}\n {!loading && (\n <Chip size=\"small\" className=\"shrink-0 text-[10px]\">\n {files.length} file{files.length !== 1 ? \"s\" : \"\"}\n {folders.length > 0 ? `, ${folders.length} folder${folders.length !== 1 ? \"s\" : \"\"}` : \"\"}\n </Chip>\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center justify-end gap-1.5 pr-1\">\n\n <Tooltip title=\"Grid view\">\n <IconButton\n size=\"small\"\n onClick={() => setViewMode(\"grid\")}\n className={cls(viewMode === \"grid\" && \"bg-surface-100 dark:bg-surface-800\")}\n >\n <Icon iconKey=\"apps\" size=\"smallest\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"List view\">\n <IconButton\n size=\"small\"\n onClick={() => setViewMode(\"list\")}\n className={cls(viewMode === \"list\" && \"bg-surface-100 dark:bg-surface-800\")}\n >\n <Icon iconKey=\"list\" size=\"smallest\" />\n </IconButton>\n </Tooltip>\n\n <div className=\"h-4 w-px bg-surface-200 dark:bg-surface-800 mx-0.5\" />\n\n <Tooltip title=\"Refresh\">\n <IconButton size=\"small\" onClick={handleRefresh} disabled={loading}>\n <RefreshIcon size=\"smallest\" />\n </IconButton>\n </Tooltip>\n\n <Button\n size=\"small\"\n color=\"primary\"\n onClick={() => setUploadDialogOpen(true)}\n >\n <CloudUploadIcon size=\"smallest\" className=\"mr-1\" />\n Upload\n </Button>\n </div>\n </div>\n\n {/* File grid / list */}\n <div className=\"flex-grow flex flex-col overflow-hidden min-h-0\">\n {renderContents()}\n </div>\n\n {/* Status bar */}\n <div className={cls(\"px-4 py-1.5 border-t bg-surface-50 dark:bg-surface-900 flex items-center justify-between shrink-0\", defaultBorderMixin)}>\n <div className=\"flex items-center gap-4 text-[11px]\">\n <span className=\"text-text-disabled dark:text-text-disabled-dark font-bold uppercase tracking-tighter\">\n Path\n </span>\n <span className=\"font-mono text-text-secondary dark:text-text-secondary-dark\">\n /{currentPath || \"\"}\n </span>\n </div>\n {selectedFile && (\n <div className=\"text-[11px] text-text-secondary dark:text-text-secondary-dark\">\n Selected: <span className=\"font-mono\">{selectedFile.name}</span>\n </div>\n )}\n </div>\n </div>\n\n {/* Preview panel */}\n {selectedFile && (\n <div className=\"w-80 lg:w-96 shrink-0\">\n <FilePreviewPanel\n file={selectedFile}\n downloadUrl={selectedDownloadUrl}\n onClose={() => {\n setSelectedFile(null);\n setSelectedDownloadUrl(null);\n }}\n onDelete={() => handleDeleteFile(selectedFile)}\n />\n </div>\n )}\n </div>\n }\n />\n\n {/* Upload Dialog */}\n <UploadDialog\n open={uploadDialogOpen}\n currentPath={currentPath}\n onClose={() => setUploadDialogOpen(false)}\n onUpload={handleUpload}\n />\n </div>\n );\n};\n","import type { HomePageSection, PluginGenericProps } from \"@rebasepro/types\";\nimport React, { useEffect } from \"react\";\nimport { ArrowForwardIcon, Card, cls, Container, Typography } from \"@rebasepro/ui\";\nimport { IconForView, useRebaseContext, useRestoreScroll, useSlot } from \"@rebasepro/core\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useStudioBreadcrumbs } from \"@rebasepro/core\";\n\n/* ═══════════════════════════════════════════════════════════════\n Static studio tool definitions\n ═══════════════════════════════════════════════════════════════ */\n\ninterface StudioTool {\n path: string;\n name: string;\n description: string;\n icon: string;\n}\n\ninterface StudioSection {\n label: string;\n dotColor: string;\n iconColor: string;\n tools: StudioTool[];\n}\n\nconst SECTIONS: StudioSection[] = [\n {\n label: \"Database\",\n dotColor: \"bg-blue-400\",\n iconColor: \"text-blue-400\",\n tools: [\n { path: \"/sql\", name: \"SQL Console\", description: \"Execute raw SQL queries directly against your database\", icon: \"terminal\" },\n { path: \"/js\", name: \"JS Console\", description: \"Run JavaScript with the Rebase SDK in a live sandbox\", icon: \"code\" },\n { path: \"/rls\", name: \"RLS Policies\", description: \"Configure Row Level Security for fine-grained data access\", icon: \"security\" },\n { path: \"/branches\", name: \"Database Branching\", description: \"Create instant, isolated database copies for dev, staging, and testing\", icon: \"account_tree\" },\n ],\n },\n {\n label: \"Schema & Data\",\n dotColor: \"bg-violet-400\",\n iconColor: \"text-violet-400\",\n tools: [\n { path: \"/schema\", name: \"Collections\", description: \"Define and manage your data model and collection schemas\", icon: \"view_list\" },\n { path: \"/storage\", name: \"Storage\", description: \"Browse, upload, and manage files in your storage bucket\", icon: \"cloud\" },\n ],\n },\n {\n label: \"Administration\",\n dotColor: \"bg-amber-400\",\n iconColor: \"text-amber-400\",\n tools: [\n { path: \"/users\", name: \"Users\", description: \"Manage developers and assign roles in your workspace\", icon: \"group\" },\n { path: \"/roles\", name: \"Roles\", description: \"Create and configure fine-grained access permissions\", icon: \"admin_panel_settings\" },\n ],\n },\n];\n\n/* ═══════════════════════════════════════════════════════════════ */\n\nexport function StudioHomePage({\n additionalActions,\n additionalChildrenStart,\n additionalChildrenEnd,\n sections,\n hiddenGroups,\n}: {\n additionalActions?: React.ReactNode;\n additionalChildrenStart?: React.ReactNode;\n additionalChildrenEnd?: React.ReactNode;\n sections?: HomePageSection[];\n hiddenGroups?: string[];\n}) {\n const context = useRebaseContext();\n const breadcrumbs = useStudioBreadcrumbs();\n const navigate = useNavigate();\n\n useEffect(() => {\n breadcrumbs.set({ breadcrumbs: [] });\n }, [breadcrumbs.set]);\n\n const { containerRef } = useRestoreScroll();\n\n const sectionProps: PluginGenericProps = { context };\n const pluginChildrenStart = useSlot(\"home.children.start\", sectionProps);\n const pluginChildrenEnd = useSlot(\"home.children.end\", sectionProps);\n const pluginActions = useSlot(\"home.actions\", sectionProps);\n\n return (\n <div ref={containerRef} className=\"py-2 overflow-auto h-full w-full\">\n <Container maxWidth=\"6xl\">\n\n {(additionalActions || pluginActions) && (\n <div className=\"w-full sticky py-4 transition-all duration-400 ease-in-out top-0 z-10 flex flex-row gap-4 justify-end\">\n {additionalActions}\n {pluginActions}\n </div>\n )}\n\n {additionalChildrenStart}\n {pluginChildrenStart}\n\n {/* ── Tool sections ── */}\n <div className=\"flex flex-col gap-8 pt-2\">\n {SECTIONS.map((section) => (\n <section key={section.label} aria-label={section.label}>\n {/* Section header */}\n <Typography\n variant=\"caption\"\n component=\"h2\"\n color=\"secondary\"\n className=\"py-2 font-medium uppercase text-sm text-surface-600 dark:text-surface-400\"\n >\n {section.label}\n </Typography>\n\n {/* Card grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3 mt-2\">\n {section.tools.map((tool) => (\n <Card\n key={tool.path}\n onClick={() => {\n navigate(tool.path);\n context.analyticsController?.onAnalyticsEvent?.(\n \"home_navigate_to_view\",\n { path: tool.path }\n );\n }}\n className={cls(\n \"h-full px-4 py-2.5 cursor-pointer transition-all duration-200 ease-in-out\",\n \"hover:-translate-y-0.5 hover:shadow-md hover:shadow-primary/5\"\n )}\n >\n <div className=\"flex flex-col items-start h-full\">\n <div className=\"grow w-full\">\n {/* Icon */}\n <div className={cls(\"h-6 flex items-center\", section.iconColor)}>\n <IconForView\n collectionOrView={{ slug: tool.path, name: tool.name, icon: tool.icon }}\n size=\"small\"\n />\n </div>\n\n {/* Title */}\n <Typography\n gutterBottom\n variant=\"subtitle1\"\n className=\"mt-1 font-semibold\"\n component=\"h2\"\n >\n {tool.name}\n </Typography>\n\n {/* Description */}\n <Typography variant=\"caption\" color=\"secondary\" component=\"div\">\n {tool.description}\n </Typography>\n </div>\n\n {/* Arrow */}\n <div style={{ alignSelf: \"flex-end\" }}>\n <div className=\"p-2\">\n <ArrowForwardIcon className=\"text-primary\" size=\"small\" />\n </div>\n </div>\n </div>\n </Card>\n ))}\n </div>\n </section>\n ))}\n </div>\n\n {/* ── SDK Quick Start ── */}\n <div className=\"mt-10 mb-6\">\n <div className=\"flex items-center mb-1\">\n <Typography\n variant=\"caption\"\n component=\"h2\"\n color=\"secondary\"\n className=\"py-2 font-medium uppercase text-sm text-surface-600 dark:text-surface-400\"\n >\n Quick Start\n </Typography>\n </div>\n\n <Typography variant=\"body2\" color=\"secondary\" className=\"mb-4 max-w-2xl\">\n Generate a fully-typed SDK from your collections with{\" \"}\n <code className=\"text-emerald-400 font-mono text-xs bg-emerald-400/10 px-1.5 py-0.5 rounded\">\n npx rebase generate-sdk\n </code>\n {\" \"}and start querying your data with full TypeScript autocompletion.\n </Typography>\n\n <div className=\"rounded-lg border border-surface-200/40 dark:border-surface-700/40 bg-white dark:bg-surface-950 overflow-hidden\">\n {/* Title bar */}\n <div className=\"flex items-center justify-between px-4 py-2.5 border-b border-surface-200/40 dark:border-surface-700/40 bg-surface-50 dark:bg-surface-900/80\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"flex gap-1.5\">\n <span className=\"w-2.5 h-2.5 rounded-full bg-red-400/60\" />\n <span className=\"w-2.5 h-2.5 rounded-full bg-amber-400/60\" />\n <span className=\"w-2.5 h-2.5 rounded-full bg-emerald-400/60\" />\n </div>\n <span className=\"text-xs font-mono text-surface-400 dark:text-surface-500 ml-1\">\n app.ts\n </span>\n </div>\n <span className=\"text-xs font-mono text-surface-400 dark:text-surface-500\">\n TypeScript\n </span>\n </div>\n\n {/* Syntax-highlighted code */}\n <div className=\"px-5 py-4 overflow-x-auto text-[13px] leading-6 font-mono\">\n <SyntaxHighlightedSnippet />\n </div>\n </div>\n </div>\n\n {/* ── Extra sections from props ── */}\n {sections?.map((s) => (\n <div key={s.key} className=\"my-10\">\n <Typography\n variant=\"caption\"\n component=\"h2\"\n color=\"secondary\"\n className=\"p-4 py-2 rounded font-medium uppercase text-sm text-surface-600 dark:text-surface-400\"\n >\n {s.title}\n </Typography>\n <div className=\"mt-4\">{s.children}</div>\n </div>\n ))}\n\n {pluginChildrenEnd}\n {additionalChildrenEnd}\n </Container>\n </div>\n );\n}\n\n/* ═══════════════════════════════════════════════════════════════\n Hand-crafted syntax-highlighted code snippet.\n Uses inline spans with Tailwind color classes to avoid\n pulling in a syntax highlighting library.\n ═══════════════════════════════════════════════════════════════ */\n\nfunction SyntaxHighlightedSnippet() {\n const kw = \"text-violet-400\"; // keywords\n const str = \"text-emerald-400\"; // strings\n const typ = \"text-amber-300\"; // types\n const fn = \"text-blue-400\"; // functions\n const cm = \"text-surface-500 italic\"; // comments\n const op = \"text-surface-400\"; // operators / punctuation\n const tx = \"text-surface-200\"; // plain text\n\n return (\n <pre className=\"m-0 whitespace-pre\">\n <span className={kw}>import</span>\n <span className={tx}>{\" { \"}</span>\n <span className={fn}>createRebaseClient</span>\n <span className={tx}>{\" } \"}</span>\n <span className={kw}>from</span>\n <span className={tx}> </span>\n <span className={str}>'@rebasepro/client'</span>\n <span className={op}>;</span>\n {\"\\n\"}\n\n <span className={kw}>import</span>\n <span className={tx}> </span>\n <span className={kw}>type</span>\n <span className={tx}>{\" { \"}</span>\n <span className={typ}>Database</span>\n <span className={tx}>{\" } \"}</span>\n <span className={kw}>from</span>\n <span className={tx}> </span>\n <span className={str}>'./database.types'</span>\n <span className={op}>;</span>\n {\"\\n\\n\"}\n\n <span className={kw}>const</span>\n <span className={tx}> rebase </span>\n <span className={op}>= </span>\n <span className={fn}>createRebaseClient</span>\n <span className={op}>{\"<\"}</span>\n <span className={typ}>Database</span>\n <span className={op}>{\">(\"}</span>\n <span className={tx}>{\"{\"}</span>\n {\"\\n\"}\n <span className={tx}>{\" baseUrl\"}</span>\n <span className={op}>: </span>\n <span className={str}>'http://localhost:3001'</span>\n <span className={op}>,</span>\n {\"\\n\"}\n <span className={tx}>{\"}\"}</span>\n <span className={op}>);</span>\n {\"\\n\\n\"}\n\n <span className={cm}>{\"// Fully typed — autocompletion for tables and columns\"}</span>\n {\"\\n\"}\n <span className={kw}>const</span>\n <span className={tx}>{\" { \"}</span>\n <span className={tx}>data</span>\n <span className={op}>: </span>\n <span className={tx}>users</span>\n <span className={tx}>{\" } \"}</span>\n <span className={op}>= </span>\n <span className={kw}>await</span>\n <span className={tx}> rebase</span>\n <span className={op}>.</span>\n <span className={tx}>data</span>\n <span className={op}>.</span>\n <span className={tx}>users</span>\n <span className={op}>.</span>\n <span className={fn}>find</span>\n <span className={op}>();</span>\n {\"\\n\"}\n\n <span className={kw}>const</span>\n <span className={tx}>{\" { \"}</span>\n <span className={tx}>data</span>\n <span className={op}>: </span>\n <span className={tx}>posts</span>\n <span className={tx}>{\" } \"}</span>\n <span className={op}>= </span>\n <span className={kw}>await</span>\n <span className={tx}> rebase</span>\n <span className={op}>.</span>\n <span className={tx}>data</span>\n <span className={op}>.</span>\n <span className={fn}>collection</span>\n <span className={op}>(</span>\n <span className={str}>'posts'</span>\n <span className={op}>)</span>\n <span className={op}>.</span>\n <span className={fn}>find</span>\n <span className={op}>();</span>\n </pre>\n );\n}\n","import React, { useLayoutEffect, useMemo } from \"react\";\nimport { useRebaseRegistryDispatch } from \"@rebasepro/core\";\nimport type { RebaseStudioConfig, AppView } from \"@rebasepro/types\";\n\nimport { SQLEditor } from \"./SQLEditor/SQLEditor\";\nimport { JSEditor } from \"./JSEditor/JSEditor\";\nimport { RLSEditor } from \"./RLSEditor/RLSEditor\";\nimport { StorageView } from \"./StorageView/StorageView\";\nimport { StudioHomePage } from \"./StudioHomePage\";\n\n/**\n * Declarative component to configure the Studio in Rebase.\n * Renders nothing — purely registers config into the RebaseRegistry.\n *\n * The \"schema\" tool (collection editor view) is now a built-in CMS feature.\n * When `<RebaseCMS collectionEditor={...}>` is used, the schema view is\n * automatically injected into Studio — no manual wiring needed.\n */\nexport function RebaseStudio({ tools, homePage = <StudioHomePage /> }: RebaseStudioConfig) {\n const dispatch = useRebaseRegistryDispatch();\n \n const devViews: AppView[] = useMemo(() => {\n const views: AppView[] = [];\n const activeTools = tools ?? [\"sql\", \"js\", \"rls\", \"storage\"];\n \n if (activeTools.includes(\"sql\")) {\n views.push({ slug: \"sql\", name: \"SQL Console\", group: \"Database\", icon: \"terminal\", description: \"Execute SQL queries\", view: <SQLEditor /> });\n }\n if (activeTools.includes(\"js\")) {\n views.push({ slug: \"js\", name: \"JS Console\", group: \"Database\", icon: \"code\", description: \"Execute JavaScript\", view: <JSEditor /> });\n }\n if (activeTools.includes(\"rls\")) {\n views.push({ slug: \"rls\", name: \"RLS Policies\", group: \"Database\", icon: \"security\", description: \"Row Level Security\", view: <RLSEditor /> });\n }\n if (activeTools.includes(\"storage\")) {\n views.push({ slug: \"storage\", name: \"Storage\", group: \"Storage\", icon: \"cloud\", description: \"Manage storage files\", view: <StorageView /> });\n }\n // Note: \"schema\" tool is auto-injected by RebaseShell when collectionEditor is enabled.\n // It is NOT registered here anymore.\n return views;\n }, [tools]);\n\n useLayoutEffect(() => {\n dispatch.registerStudio({ tools, homePage, devViews });\n return () => dispatch.unregisterStudio();\n }, [dispatch, tools, homePage, devViews]);\n\n return null;\n}\n"],"names":["MonacoEditor","value","onChange","onRun","className","readOnly","autoFocus","schemas","mode","useModeController","editorRef","useRef","monacoRef","onRunRef","current","schemasRef","handleEditorOnMount","editor","monaco","addAction","id","label","keybindings","KeyMod","CtrlCmd","KeyCode","Enter","contextMenuGroupId","contextMenuOrder","run","selection","getSelection","selectedText","undefined","isEmpty","getModel","getValueInRange","trim","sqlKeywords","languages","registerCompletionItemProvider","triggerCharacters","provideCompletionItems","model","position","word","getWordUntilPosition","range","startLineNumber","lineNumber","endLineNumber","startColumn","endColumn","textUntilPosition","column","match","tableNameMatch","suggestions","allSchemas","tables","Object","entries","table","find","t","tableName","columns","forEach","col","push","name","kind","CompletionItemKind","Field","insertText","detail","sortText","sName","Class","keyword","Keyword","fullText","getValue","activeTables","Set","regex","RegExp","test","add","addedColumns","has","focus","jsx","cls","minimap","enabled","fontSize","lineNumbers","scrollBeyondLastLine","automaticLayout","tabSize","wordWrap","SchemaBrowser","onTableClick","isSchemaLoading","schemaError","onRetrySchema","expandedSchemas","setExpandedSchemas","useState","public","expandedTables","setExpandedTables","useTranslation","CircularProgress","ErrorView","jsxs","defaultBorderMixin","Typography","IconButton","RefreshIcon","keys","length","map","schemaName","prev","e","stopPropagation","navigator","clipboard","writeText","ContentCopyIcon","Menu","MoreVertIcon","MenuItem","c","join","Button","dataType","SQLEditorSidebar","onSelectSnippet","snippets","history","onDeleteSnippet","activeTab","setActiveTab","Tabs","v","Tab","favorites","filter","s","isFavorite","others","Fragment","snippet","sql","DeleteIcon","reverse","i","extractTablesFromQuery","sqlString","ast","parseFirst","type","processFrom","fromItems","item","alias","left","right","from","slugToSnakeCase","slug","replace","toLowerCase","resolveQueryCollections","collections","resultColumns","selectColumns","expr","results","matched","tableColumns","schemaEntries","values","tableInfo","pkColumn","tableRef","idSelectCol","sc","includes","tableAlias","collection","determineTableAndPK","columnKey","error","resolvedColumn","actualDbColumnName","columnTableRef","resolvedTableName","matchedTable","matchedTables","schema","ti","some","pkDbColumns","isPrimaryKey","tableEntry","primaryKeys","dbCol","selectCol","dbColumn","resultColumn","console","warn","message","Error","String","ExplainVisualizer","t0","$","_c","plan","isRoot","t1","expanded","setExpanded","hasChildren","Plans","cost","costColor","t2","t3","t4","t5","t6","t7","Symbol","for","t8","t9","t10","t11","t12","Alias","t13","t14","t15","t16","toFixed","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","Filter","t32","t33","t34","t35","Collapse","t36","t37","_temp","t38","childPlan","idx","VirtualTableInput","cms","require","STORAGE_KEY_TABS","STORAGE_KEY_ACTIVE_TAB","SQLEditor","databaseAdmin","useRebaseContext","sideEntityController","useStudioSideEntityController","snackbarController","useSnackbarController","collectionRegistry","useStudioCollectionRegistry","setSchemas","setIsSchemaLoading","schemaFetchedRef","setSchemaError","selectedDatabase","setSelectedDatabase","localStorage","getItem","selectedRole","setSelectedRole","availableDatabases","setAvailableDatabases","availableRoles","setAvailableRoles","isLoadingConfig","setIsLoadingConfig","connectionConfigError","setConnectionConfigError","tabs","setTabs","saved","parsed","JSON","parse","loading","execTime","lastExecutedSql","database","role","activeTabId","setActiveTabId","updateActiveTab","useCallback","update","setSql","newSql","useEffect","mounted","fetchConnectionConfig","fetchAvailableDatabases","fetchAvailableRoles","dbs","roles","currentDbFromApi","Promise","all","fetchCurrentDatabase","resolve","loadedDb","loadedRole","initialActiveTabId","initialTabs","savedTabs","currentActiveTab","actualDb","setItem","actualRole","err","handleDatabaseChange","db","tabId","handleRoleChange","handleTabChange","newTabId","newTab","fetchSchema","executeSql","result","processGrouped","data","grouped","reduce","acc","curr","SCHEMA","table_schema","TABLE","table_name","COLUMN","column_name","data_type","DATA_TYPE","is_pk","Array","isArray","rows","autoLimit","setAutoLimit","isConfirmDialogOpen","setIsConfirmDialogOpen","pendingAction","setPendingAction","editingCell","setEditingCell","handleDoubleClick","rowIndex","initialValue","rowData","open","resolution","missingPKs","pk","handleCellSave","newValue","formatValue","val","resolveDbColumnName","resultColKey","colName","dbColumnName","whereConditions","updateSql","newResults","columnWidths","setColumnWidths","setSnippets","setHistory","isSaveDialogOpen","setIsSaveDialogOpen","newSnippetName","setNewSnippetName","savedSnippets","savedHistory","sanitizedTabs","stringify","saveSnippets","newSnippets","saveHistory","newHistory","slice","handleDeleteSnippet","handleAddTab","newId","Math","random","toString","substring","maxNumber","tab","num","parseInt","handleCloseTab","tabIndex","findIndex","newTabs","nextIndex","min","handleColumnResize","key","width","newWidths","handlePrettify","formatted","handleExplain","explainSql","start","performance","now","round","executeRun","sqlOverride","sqlToRun","toUpperCase","handleRun","sqlTarget","destructiveKeywords","hasDestructive","kw","hasWhere","handleKeyDown","metaKey","ctrlKey","activeElement","document","isInput","tagName","isMonaco","preventDefault","window","addEventListener","removeEventListener","handleSaveSnippet","newSnippet","createdAt","Date","handleExportCSV","headers","row","str","csv","blob","Blob","url","URL","createObjectURL","a","createElement","href","download","toISOString","click","revokeObjectURL","handleExportJSON","json","handleExportMarkdown","headerRow","dividerRow","dataRows","header","markdown","then","catch","renderResults","Plan","savedWidths","resultColumnKeys","matchedCollections","actionableCollections","mc","getRowEntityActions","entityId","dataColumns","title","sortable","resizable","Tooltip","icon","IconForView","VirtualTable","rowActions","ra","path","updateUrl","EditIcon","isEditing","displayValue","target","sidebarSize","setSidebarSize","parseFloat","editorHeight","setEditorHeight","activeSnippet","ResizablePanels","TerminalIcon","CloseIcon","AddIcon","NotesIcon","checked","StorageIcon","PlayArrowIcon","Dialog","DialogTitle","DialogContent","TextField","DialogActions","ConfirmationDialog","REBASE_CLIENT_TYPES","JSMonacoEditor","collectionSlugs","typesRegisteredRef","editorInstance","ts","typescript","typescriptDefaults","setCompilerOptions","ScriptTarget","ESNext","module","ModuleKind","allowJs","checkJs","strict","noEmit","allowNonTsExtensions","setDiagnosticsOptions","diagnosticCodesToIgnore","addExtraLib","lines","ifaceName","propsType","properties","p","collectionHints","suggestOnTriggerCharacters","quickSuggestions","parameterHints","QUICK_REFERENCE","code","description","JSEditorSidebar","onInsertCode","ref","CollectionItem","prop","SnippetItem","onSelect","onDelete","STORAGE_PREFIX","DEFAULT_CODE","loadFromStorage","fallback","raw","saveToStorage","formatJSON","normaliseSlug","detectCollectionsInResult","resultValue","mentionedSlugs","collectionCallRegex","m","exec","dotAccessRegex","size","hasId","r","normalised","collectionSlug","JSEditor","rebaseContext","rebaseClient","useRebaseClient","apiConfig","useApiConfig","snackbar","userManagement","currentUser","authController","user","setResult","isRunning","setIsRunning","showSaveDialog","setShowSaveDialog","snippetName","setSnippetName","resultView","setResultView","selectedUser","setSelectedUser","stored","Number","collectionInfos","useMemo","users","managed","u","uid","displayName","email","photoURL","unshift","currentSelectableUser","updateActiveCode","addTab","closeTab","filtered","fresh","buildClient","client","isScoped","apiUrl","getAuthToken","token","createRebaseClient","baseUrl","executeCode","codeOverride","deduped","h","consoleEntries","startTime","scopedClientToCleanUp","originalConsole","log","info","captureConsole","args","timestamp","context","AsyncFunction","getPrototypeOf","constructor","fn","duration","ws","disconnect","saveSnippet","deleteSnippet","exportResult","tableData","entity","k","UserSelectPopover","SaveIcon","DownloadIcon","Chip","entry","JSONHighlight","themes","vsDark","github","Highlight","style","tokens","getLineProps","getTokenProps","backgroundColor","line","COMMAND_OPTIONS","ROLE_OPTIONS","POLICY_PRESETS","policyname","cmd","permissive","qual","with_check","PolicyEditor","policy","onSave","onCancel","setName","helpOpen","setHelpOpen","behavior","setBehavior","command","setCommand","setRoles","usingExpr","setUsingExpr","checkExpr","setCheckExpr","selectedPreset","setSelectedPreset","initialRoles","presetId","preset","handlePresetChange","showCheck","handleSave","HelpOutlineIcon","Select","SelectItem","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t49","_temp2","t50","MultiSelect","t51","t52","Paper","t53","t54","v_0","t55","t56","t57","t58","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","t70","t71","t72","t73","t74","t75","t76","t77","t78","t79","t80","t81","t82","t83","t84","t85","t86","t87","t88","t89","t90","t91","t92","t93","t94","t95","t96","t97","t98","t99","t100","t101","t102","t103","t104","t105","t106","t107","t108","t109","t110","t111","t112","t113","t114","t115","t116","t117","t118","t119","t120","t121","t122","t123","t124","t125","t126","t127","t128","t129","t130","t131","t132","preset_0","MultiSelectItem","RLSEditor","isLoading","setIsLoading","setError","setTables","selectedTable","setSelectedTable","editingPolicy","setEditingPolicy","sidebarTab","setSidebarTab","fetchRLSData","tablesSql","tablesResult","policiesSql","policiesResult","extractRows","tRows","pRows","tableMap","tRow","schemaname","SCHEMANAME","tablename","TABLENAME","rlsEnabled","rowsecurity","ROWSECURITY","policies","pRow","parsedRoles","ROLES","split","POLICYNAME","PERMISSIVE","CMD","QUAL","WITH_CHECK","sortedTables","sort","b","localeCompare","activeTableData","groupedTables","groups","activeCollection","collectionId","mergedPolicies","policiesMap","status","isPostgresCollection","securityRules","rule","ruleName","operation","using","withCheck","rlsStats","total","withPolicies","totalPolicies","sum","renderPolicyTag","schemaTables","isSelected","SecurityIcon","action","confirm","newPolicy","existingRules","newRules","response","fetch","method","body","collectionData","ok","Alert","WarningIcon","KeyIcon","formatFileSize","bytes","getFileIcon","contentType","DescriptionIcon","startsWith","ImageIcon","VideoLibraryIcon","AudiotrackIcon","getExtension","parts","breadcrumbSegments","Boolean","segments","accumulated","part","UploadDialog","currentPath","onClose","onUpload","uploading","setUploading","selectedFiles","setSelectedFiles","handleFilesAdded","files","handleRemoveFile","index","_","handleUpload","handleClose","o","FileUpload","CloudUploadIcon","file","FilePreviewPanel","downloadUrl","FileIconComponent","deleteDialogOpen","setDeleteDialogOpen","ext","isImage_0","isVideo_0","isAudio_0","downloadUrl_0","isImage","isVideo","isAudio","fullPath","StorageSidebar","folders","onNavigate","Icon","folder","FolderIcon","StorageView","storageSource","useStorageSource","setCurrentPath","setLoading","setFolders","setFiles","selectedFile","setSelectedFile","selectedDownloadUrl","setSelectedDownloadUrl","uploadDialogOpen","setUploadDialogOpen","viewMode","setViewMode","fetchContents","list","folderItems","prefixes","isFolder","fileItems","items","downloadConfig","getDownloadURL","metadata","handleNavigate","handleNavigateUp","pop","handleSelectFile","config","uploadFiles","uploadFile","fileName","handleDeleteFile","deleteFile","handleRefresh","renderContents","allItems","FileIconComp","ArrowBackIcon","seg","SECTIONS","dotColor","iconColor","tools","StudioHomePage","additionalActions","additionalChildrenStart","additionalChildrenEnd","sections","breadcrumbs","useStudioBreadcrumbs","navigate","useNavigate","set","containerRef","useRestoreScroll","sectionProps","pluginChildrenStart","useSlot","pluginChildrenEnd","pluginActions","section","tool","Card","analyticsController","onAnalyticsEvent","alignSelf","ArrowForwardIcon","Container","children","SyntaxHighlightedSnippet","tx","op","typ","cm","RebaseStudio","homePage","dispatch","useRebaseRegistryDispatch","devViews","views","activeTools","group","view","useLayoutEffect","registerStudio","unregisterStudio"],"mappings":"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AER;ACvzCA,QAAMwK,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwPrB,QAAMC,iBAAiBA,CAAC;AAAA,IAC3BriB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,WAAW;AAAA,IACXC,YAAY;AAAA,IACZiiB,kBAAkB,CAAA;AAAA,IAClBtX,cAAc,CAAA;AAAA,EACG,MAAM;AACvB,UAAM;AAAA,MAAEzK;AAAAA,IAAAA,IAASC,uBAAAA;AACjB,UAAMC,YAAYC,MAAAA,OAA4C,IAAI;AAClE,UAAMC,YAAYD,MAAAA,OAAsB,IAAI;AAC5C,UAAME,WAAWF,MAAAA,OAAOR,KAAK;AAC7BU,aAASC,UAAUX;AACnB,UAAMqiB,qBAAqB7hB,MAAAA,OAAO,KAAK;AAEvC,UAAMK,sBAA+BA,CAACyhB,gBAAgBvhB,WAAW;AAC7DR,gBAAUI,UAAU2hB;AACpB7hB,gBAAUE,UAAUI;AAGpBuhB,qBAAethB,UAAU;AAAA,QACrBC,IAAI;AAAA,QACJC,OAAO;AAAA,QACPC,aAAa,CAACJ,OAAOK,OAAOC,UAAUN,OAAOO,QAAQC,KAAK;AAAA,QAC1DC,oBAAoB;AAAA,QACpBC,kBAAkB;AAAA,QAClBC,KAAKA,MAAM;AACP,cAAIhB,SAASC,SAAS;AAClB,kBAAMgB,YAAY2gB,eAAe1gB,aAAAA;AACjC,gBAAIC;AACJ,gBAAIF,aAAa,CAACA,UAAUI,WAAW;AACnCF,6BAAeygB,eAAetgB,SAAAA,GAAYC,gBAAgBN,SAAS,GAAGO,KAAAA;AAAAA,YAC1E;AACAxB,qBAASC,QAAQkB,gBAAgBC,MAAS;AAAA,UAC9C;AAAA,QACJ;AAAA,MAAA,CACH;AAGD,UAAI,CAACugB,mBAAmB1hB,SAAS;AAC7B0hB,2BAAmB1hB,UAAU;AAM7B,cAAM4hB,KAAMxhB,OAAOqB,UAAkBogB;AACrCD,WAAGE,mBAAmBC,mBAAmB;AAAA,UACrC7B,QAAQ0B,GAAGI,aAAaC;AAAAA,UACxBC,QAAQN,GAAGO,WAAWF;AAAAA,UACtBG,SAAS;AAAA,UACTC,SAAS;AAAA,UACTC,QAAQ;AAAA,UACRC,QAAQ;AAAA,UACRC,sBAAsB;AAAA,QAAA,CACzB;AAKDZ,WAAGE,mBAAmBW,sBAAsB;AAAA,UACxCC,yBAAyB,CAAC,MAAM,IAAI;AAAA,QAAA,CACvC;AAGDd,WAAGE,mBAAmBa,YAClBpB,qBACA,uBACJ;AAGA,YAAIpX,YAAYvD,SAAS,GAAG;AACxB,gBAAMgc,QAAkB,CAAA;AACxB,qBAAWtf,OAAO6G,aAAa;AAE3B,kBAAM0Y,YAAYvf,IAAIyG,KAAKC,QAAQ,kBAAkB,GAAG;AACxD,kBAAM8Y,YAAYxf,IAAIyf,WAAWnc,SAAS,IACpC,KAAKtD,IAAIyf,WAAWlc,IAAImc,CAAAA,MAAK,GAAGA,CAAC,OAAO,EAAEtb,KAAK,IAAI,CAAC,OACpD;AACNkb,kBAAMrf,KAAK,mBAAmBD,IAAIE,IAAI,KAAKF,IAAIyG,IAAI,MAAM;AACzD6Y,kBAAMrf,KAAK,aAAasf,SAAS,QAAQC,SAAS,EAAE;AACpDF,kBAAMrf,KAAK,yCAAyCD,IAAIyG,IAAI,sBAAsB8Y,SAAS,UAAU;AAAA,UACzG;AACAjB,aAAGE,mBAAmBa,YAClBC,MAAMlb,KAAK,IAAI,GACf,4BACJ;AAAA,QACJ,WAAW+Z,gBAAgB7a,SAAS,GAAG;AAEnC,gBAAMqc,kBAAkBxB,gBAAgB5a,IAAIkD,CAAAA,SACxC,mBAAmBA,IAAI;AAAA,wCAA8CA,IAAI,uBAC7E,EAAErC,KAAK,IAAI;AACXka,aAAGE,mBAAmBa,YAClBM,iBACA,4BACJ;AAAA,QACJ;AAAA,MACJ;AAEA,UAAIzjB,WAAW;AACXmiB,uBAAe9c,MAAAA;AAAAA,MACnB;AAAA,IACJ;AAEA,WACIC,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,0CAA0CzF,SAAS,GACnE,UAAAwF,2BAAAA,IAAC,QAAA,EACG,QAAO,QACP,iBAAgB,cAChB,MAAK,oBACL,OACA,UACA,SAAS5E,qBACT,OAAOR,SAAS,SAAS,YAAY,MACrC,SAAS;AAAA,MACLsF,SAAS;AAAA,QAAEC,SAAS;AAAA,MAAA;AAAA,MACpBC,UAAU;AAAA,MACVC,aAAa;AAAA,MACbC,sBAAsB;AAAA,MACtBC,iBAAiB;AAAA,MACjB9F;AAAAA,MACA+F,SAAS;AAAA,MACTC,UAAU;AAAA,MACV2d,4BAA4B;AAAA,MAC5BC,kBAAkB;AAAA,MAClBC,gBAAgB;AAAA,QAAEne,SAAS;AAAA,MAAA;AAAA,IAAK,GAClC,EAAA,CAEV;AAAA,EAER;AChWA,QAAMoe,kBAA0E,CAC5E;AAAA,IACI9iB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,GACA;AAAA,IACIhjB,OAAO;AAAA,IACP+iB,MAAM;AAAA;AAAA,IACNC,aAAa;AAAA,EACjB,CAAC;AAGE,QAAMC,kBAAkBA,CAAC;AAAA,IAC5BrZ;AAAAA,IACApC;AAAAA,IACAC;AAAAA,IACAF;AAAAA,IACAG;AAAAA,IACAwb;AAAAA,EACkB,MAAM;AACxB,UAAM,CAACvb,WAAWC,YAAY,IAAIpC,MAAAA,SAA+D,aAAa;AAE9G,2CACK,OAAA,EAAI,WAAWhB,GAAAA,IAAI,qEAAqEwB,GAAAA,kBAAkB,GACvG,UAAA;AAAA,MAAAD,2BAAAA,KAAC8B,GAAAA,MAAA,EAAK,OAAOF,WAAW,eAAgBG,CAAAA,MAAMF,aAAaE,CAAyD,GAAG,SAAQ,QAAO,WAAU,uDAC5I,UAAA;AAAA,QAAAvD,+BAACwD,GAAAA,KAAA,EAAI,OAAM,eACP,UAAAxD,2BAAAA,IAACya,YAAA,EAAQ,OAAM,sBACX,UAAAza,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,cAAA,CAAW,GACzC,GACJ;AAAA,QACAA,+BAACwD,GAAAA,KAAA,EAAI,OAAM,aACP,yCAACiX,YAAA,EAAQ,OAAM,uBACX,UAAAza,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,YAAA,CAAS,GACvC,GACJ;AAAA,QACAA,2BAAAA,IAACwD,GAAAA,OAAI,OAAM,YACP,yCAAC,QAAA,EAAK,WAAU,WAAU,UAAA,WAAA,CAAQ,EAAA,CACtC;AAAA,QACAxD,2BAAAA,IAACwD,GAAAA,OAAI,OAAM,WACP,yCAAC,QAAA,EAAK,WAAU,WAAU,UAAA,UAAA,CAAO,EAAA,CACrC;AAAA,MAAA,GACJ;AAAA,MAEAhC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sCAEV4B,UAAAA;AAAAA,QAAAA,cAAc,iBACX5B,gCAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAAzB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sFAAoF,yBAE5H,GACJ;AAAA,UACA1B,2BAAAA,IAAC,OAAA,EAAI,WAAU,wDACVqF,UAAAA,YAAYvD,WAAW,IACpB9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mBACX,UAAAA,+BAAC0B,GAAAA,cAAW,SAAQ,WAAU,WAAU,mDAAiD,UAAA,uBAAA,CAEzF,EAAA,CACJ,IAEA2D,YAAYtD,IAAIvD,CAAAA,QACZwB,2BAAAA,IAAC,gBAAA,EAEG,YAAYxB,KACZ,aAAA,GAFKA,IAAIyG,KAIhB,EAAA,CAET;AAAA,QAAA,GACJ;AAAA,QAIH7B,cAAc,eACX5B,gCAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAAzB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sFAAoF,2BAE5H,GACJ;AAAA,UACA1B,2BAAAA,IAAC,SAAI,WAAU,wDACVue,0BAAgBxc,IAAI,CAAC6c,KAAKza,MACvB3C,2BAAAA,KAAC,OAAA,EAEG,WAAWvB,GAAAA,IACP,sFACA,8DACAwB,GAAAA,kBACJ,GACA,SAAS,MAAMkd,aAAaC,IAAIJ,IAAI,GAEpC,UAAA;AAAA,YAAAhd,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CACX,UAAA;AAAA,cAAAxB,+BAAC0B,GAAAA,cAAW,SAAQ,SAAQ,WAAU,2EACjCkd,cAAInjB,OACT;AAAA,cACAuE,2BAAAA,IAAC,SAAI,WAAU,6EAA4E,MAAK,QAAO,QAAO,gBAAe,SAAQ,aACjI,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,yHAAuH,EAAA,CAChM;AAAA,YAAA,GACJ;AAAA,2CACC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,6EACnCkd,cAAIH,YAAAA,CACT;AAAA,UAAA,EAAA,GAlBKta,CAmBT,CACH,EAAA,CACL;AAAA,QAAA,GACJ;AAAA,QAIHf,cAAc,eAAe,MAAM;AAChC,gBAAMK,YAAYR,SAASS,OAAOC,CAAAA,MAAKA,EAAEC,UAAU;AACnD,gBAAMC,SAASZ,SAASS,OAAOC,CAAAA,QAAK,CAACA,IAAEC,UAAU;AAEjD,iBACIpC,2BAAAA,KAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,YAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAAzB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sFAAqF,sBAAQ,GACzI;AAAA,YACA1B,2BAAAA,IAAC,SAAI,WAAU,wDACViD,mBAASnB,WAAW,mCAChB,OAAA,EAAI,WAAU,mBACX,UAAA9B,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,mDAAiD,UAAA,qEAAA,CAEzF,EAAA,CACJ,IAEAF,2BAAAA,KAAAsC,WAAAA,UAAA,EACKL,UAAAA;AAAAA,cAAAA,UAAU3B,SAAS,KAChBN,2BAAAA,KAAC,OAAA,EAAI,WAAU,QACX,UAAA;AAAA,gBAAAA,2BAAAA,KAACE,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,8HACpC,UAAA;AAAA,kBAAA1B,2BAAAA,IAAC,OAAA,EAAI,WAAU,+BAA8B,MAAK,gBAAe,SAAQ,aAAY,UAAAA,2BAAAA,IAAC,QAAA,EAAK,GAAE,2VAAA,CAA0V,GAAG;AAAA,kBAAK;AAAA,gBAAA,GAEnc;AAAA,+CACC,OAAA,EAAI,WAAU,aACVyD,UAAAA,UAAU1B,IAAIgC,CAAAA,YACX/D,2BAAAA,IAAC,aAAA,EAA6B,SAAkB,UAAUgD,iBAAiB,UAAUG,mBAAnEY,QAAQvI,GAC7B,EAAA,CACL;AAAA,cAAA,GACJ;AAAA,cAEHqI,OAAO/B,SAAS,KACbN,2BAAAA,KAAC,OAAA,EACIiC,UAAAA;AAAAA,gBAAAA,UAAU3B,SAAS,KAChB9B,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,4GAA0G,UAAA,SAAA,CAElJ;AAAA,+CAEH,OAAA,EAAI,WAAU,aACVmC,UAAAA,OAAO9B,IAAIgC,eACR/D,2BAAAA,IAAC,aAAA,EAA6B,SAAS+D,WAAS,UAAUf,iBAAiB,UAAUG,mBAAnEY,UAAQvI,GAC7B,EAAA,CACL;AAAA,cAAA,EAAA,CACJ;AAAA,YAAA,EAAA,CAER,EAAA,CAER;AAAA,UAAA,GACJ;AAAA,QAER,GAAA;AAAA,QAGC4H,cAAc,aACX5B,gCAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAAzB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sFAAqF,qBAAO,GACxI;AAAA,yCACC,OAAA,EAAI,WAAU,wDACVwB,UAAAA,QAAQpB,WAAW,IAChB9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mBACX,UAAAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,mDAAiD,UAAA,2BAAA,CAEzF,EAAA,CACJ,IAEA,CAAC,GAAGwB,OAAO,EAAEgB,QAAAA,EAAUnC,IAAI,CAACyc,MAAMra,QAC9B3C,gCAAC,SAEG,WAAU,6HACV,SAAS,MAAMwB,gBAAgBwb,IAAI,GAEnC,UAAA;AAAA,YAAAxe,2BAAAA,IAAC,SAAI,WAAU,8HAA6H,MAAK,QAAO,QAAO,gBAAe,SAAQ,aAClL,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,+CAA6C,EAAA,CACtH;AAAA,YACAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sLACnC8c,UAAAA,KAAK1c,SAAS,MAAM0c,KAAKxJ,UAAU,GAAG,GAAG,IAAI,MAAMwJ,KAAAA,CACxD;AAAA,UAAA,EAAA,GATKra,GAUT,CACH,EAAA,CAET;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CAER;AAAA,IAAA,GACJ;AAAA,EAER;AAIA,WAAA0a,eAAA7W,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAA7B;AAAAA,MAAAsY;AAAAA,IAAAA,IAAA3W;AACpB,UAAA,CAAAM,UAAAC,WAAA,IAAgCtH,MAAAA,cAAc;AAAE,QAAAoH;AAAA,QAAAJ,SAAAK,UAAA;AAM3BD,WAAAA,MAAME,YAAW,CAAED,QAAQ;AAACL,aAAAK;AAAAL,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAGmB,UAAAW,KAAAN,YAAY;AAAW,QAAAO;AAAA,QAAAZ,SAAAW,IAAA;AAAhEC,WAAA5I,GAAAA,IAAI,qCAAqC2I,EAAuB;AAACX,aAAAW;AAAAX,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAG5EL,WAAA9I,2BAAAA,IAAA,QAAA,EAAQ,GAAA,qHAAA,CAAoH;AAAGiI,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAAY,IAAA;AAJnIE,WAAA/I,2BAAAA,IAAA,SACe,WAAA6I,IACN,MAAA,gBAAuB,SAAA,aAE5BC,UAAAA,GAAAA,CACJ;AAAMb,aAAAY;AAAAZ,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACNH,mDAAe,WAAA,6EAAiF,MAAA,QAAc,QAAA,gBAAuB,SAAA,aACjI,yCAAA,QAAA,EAAoB,eAAA,SAAuB,gBAAA,SAAqB,gBAAK,GAAA,+GAA6G,EAAA,CACtL;AAAMf,aAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,CAAA,MAAA5B,WAAApB,MAAA;AACNgE,0CAACvH,eAAA,EAAmB,SAAA,SAAkB,WAAA,qFACjC2E,qBAAUpB,KAAAA,CACf;AAAagD,QAAA,CAAA,IAAA5B,WAAApB;AAAAgD,aAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,UAAA5B,WAAApB,QAAAgD,UAAA0W,cAAA;AAKIvV,WAAAlH,CAAAA,MAAA;AACLA,UAACC,gBAAAA;AACDwc,qBAAa,oCAAoCtY,WAAUpB,IAAA;AAAA,eAA4C;AAAA,MAAC;AAC3GgD,QAAA,EAAA,IAAA5B,WAAApB;AAAAgD,cAAA0W;AAAA1W,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoB;AAAA,QAAApB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEDE,0CAACyS,GAAAA,SAAA,EAAa,MAAA,WAAA,CAAU;AAAG7T,cAAAoB;AAAAA,IAAA,OAAA;AAAAA,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAArB,UAAAmB,IAAA;AATnCE,YAAAtJ,2BAAAA,IAACya,GAAAA,SAAA,EAAc,OAAA,yBACX,UAAAza,2BAAAA,IAAC2B,eAAA,EACQ,MAAA,YACK,WAAA,0FACD,SAAAyH,IAKTC,cACJ,GACJ;AAAUpB,cAAAmB;AAAAnB,cAAAqB;AAAAA,IAAA,OAAA;AAAAA,YAAArB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAI,MAAAJ,EAAA,EAAA,MAAAqB,OAAArB,EAAA,EAAA,MAAAc,MAAAd,UAAAgB,IAAA;AA3BdM,YAAA/H,2BAAAA,KAAA,OAAA,EACc,WAAA,gIACD,SAAA6G,IAETU,UAAAA;AAAAA,QAAAA;AAAAA,QAMAC;AAAAA,QAGAC;AAAAA,QAGAK;AAAAA,MAAAA,GAYJ;AAAMrB,cAAAI;AAAAJ,cAAAqB;AAAArB,cAAAc;AAAAd,cAAAgB;AAAAhB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAA5B,WAAA4X,cAAAhW,EAAA,EAAA,MAAAK,YAAAL,EAAA,EAAA,MAAA0W,cAAA;AACLnV,YAAAlB,YAAYjC,WAAU4X,WAAAnc,SAAA,KACnB9B,2BAAAA,IAAA,OAAA,EAAgB,WAAAC,GAAAA,IAAI,kCAAgCwB,GAAAA,kBAAoB,GACnE4E,UAAAA,WAAU4X,WAAAlc,IAAA+c,CAAAA,SACPtd,2BAAAA,KAAA,OAAA,EAEc,WAAA,wJACD,SAAA,MAAMmd,aAAa,IAAIG,IAAI,GAAG,GAEvC,UAAA;AAAA,QAAA9e,2BAAAA,IAAA,SAAe,WAAA,2EAA+E,MAAA,QAAc,QAAA,gBAAuB,SAAA,aAAY,yCAAA,QAAA,EAAoB,eAAA,SAAuB,gBAAA,SAAqB,aAAA,KAAO,GAAA,0KAAwK,EAAA,CAAG;AAAA,uCAChY0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,0FAA0Fod,UAAAA,KAAAA,CAAK;AAAA,MAAA,KALlIA,IAMT,CACH,GACL;AACH7W,QAAA,EAAA,IAAA5B,WAAA4X;AAAAhW,cAAAK;AAAAL,cAAA0W;AAAA1W,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAsB,OAAAtB,UAAAuB,KAAA;AA3CLE,4CAAA,OAAA,EACIH,UAAAA;AAAAA,QAAAA;AAAAA,QA6BCC;AAAAA,MAAAA,GAcL;AAAMvB,cAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WA5CNyB;AAAAA,EA4CM;AAId,WAAAqV,YAAA/W,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAqB,UAAA;AAAA,MAAAnE;AAAAA,MAAAib;AAAAA,MAAAC;AAAAA,IAAAA,IAAAjX;AAAyH,QAAAK;AAAA,QAAAJ,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGvHd,WAAApI,GAAAA,IAAI,uJAAqJwB,qBAAoB;AAACwG,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAW;AAAA,QAAAX,SAAA+W,YAAA/W,EAAA,CAAA,MAAAlE,QAAAya,MAAA;AAChL5V,WAAAA,MAAMoW,SAASjb,QAAOya,IAAK;AAACvW,aAAA+W;AAAA/W,QAAA,CAAA,IAAAlE,QAAAya;AAAAvW,aAAAW;AAAAA,IAAA,OAAA;AAAAA,WAAAX,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAY;AAAA,QAAAZ,EAAA,CAAA,MAAAlE,QAAArF,MAAA;AAErCmK,0CAACnH,eAAA,EAAmB,SAAA,SAAkB,WAAA,uFACjCqC,kBAAOrF,KAAAA,CACZ;AAAauJ,QAAA,CAAA,IAAAlE,QAAArF;AAAAuJ,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAlE,QAAAya,MAAA;AACb1V,0CAACpH,eAAA,EAAmB,SAAA,WAAoB,WAAA,+FACnCqC,kBAAOya,KAAAA,CACZ;AAAavW,QAAA,CAAA,IAAAlE,QAAAya;AAAAvW,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAAgX,YAAAhX,EAAA,CAAA,MAAAlE,QAAAvI,IAAA;AAIAuN,WAAA7G,CAAAA,MAAA;AACLA,UAACC,gBAAAA;AACD8c,iBAASlb,QAAOvI,EAAG;AAAA,MAAC;AACvByM,aAAAgX;AAAAhX,QAAA,CAAA,IAAAlE,QAAAvI;AAAAyM,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEDH,0CAAC/E,GAAAA,YAAA,EAAgB,MAAA,WAAA,CAAU;AAAGgE,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,UAAAc,IAAA;AARlCE,WAAAjJ,2BAAAA,IAAC2B,iBACQ,MAAA,YACK,WAAA,qHACD,SAAAoH,IAKTC,UAAAA,GAAAA,CACJ;AAAaf,cAAAc;AAAAd,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAW,MAAAX,EAAA,EAAA,MAAAY,MAAAZ,EAAA,EAAA,MAAAa,MAAAb,UAAAgB,IAAA;AAnBjBG,WAAA5H,2BAAAA,KAAA,OAAA,EACe,WAAA6G,IACF,SAAAO,IAETC,UAAAA;AAAAA,QAAAA;AAAAA,QAGAC;AAAAA,QAGAG;AAAAA,MAAAA,GAUJ;AAAMhB,cAAAW;AAAAX,cAAAY;AAAAZ,cAAAa;AAAAb,cAAAgB;AAAAhB,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,WApBNmB;AAAAA,EAoBM;ACvRd,QAAM8V,iBAAiB;AAGvB,QAAMC,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcrB,WAASC,gBAAmBxJ,KAAayJ,UAAgB;AACrD,QAAI;AACA,YAAMC,MAAMxS,aAAaC,QAAQmS,iBAAiBtJ,GAAG;AACrD,aAAO0J,MAAMxR,KAAKC,MAAMuR,GAAG,IAAID;AAAAA,IACnC,QAAQ;AACJ,aAAOA;AAAAA,IACX;AAAA,EACJ;AAEA,WAASE,cAAiB3J,KAAavb,OAAU;AAC7C,QAAI;AACAyS,mBAAaiD,QAAQmP,iBAAiBtJ,KAAK9H,KAAKsG,UAAU/Z,KAAK,CAAC;AAAA,IACpE,QAAQ;AAAA,IAAE;AAAA,EACd;AAEA,WAASmlB,WAAWnlB,OAAoB;AACpC,QAAI;AACA,aAAOyT,KAAKsG,UAAU/Z,OAAO,MAAM,CAAC;AAAA,IACxC,QAAQ;AACJ,aAAOyN,OAAOzN,KAAK;AAAA,IACvB;AAAA,EACJ;AAcA,WAASolB,cAAcxa,MAAsB;AACzC,WAAOA,KACFC,QAAQ,mBAAmB,OAAO,EAClCA,QAAQ,WAAW,GAAG,EACtBC,YAAAA;AAAAA,EACT;AAQA,WAASua,0BACLlB,MACAmB,aACAta,aACqB;AACrB,QAAI,CAACsa,eAAe,CAACta,aAAavD,eAAe,CAAA;AAGjD,UAAM8d,qCAAqBpgB,IAAAA;AAG3B,UAAMqgB,sBAAsB;AAC5B,QAAIC;AACJ,YAAQA,IAAID,oBAAoBE,KAAKvB,IAAI,OAAO,MAAM;AAClDoB,qBAAehgB,IAAIkgB,EAAE,CAAC,CAAC;AAAA,IAC3B;AAGA,UAAME,iBAAiB;AACvB,YAAQF,IAAIE,eAAeD,KAAKvB,IAAI,OAAO,MAAM;AAC7C,UAAI,CAAC,CAAC,cAAc,QAAQ,YAAY,UAAU,UAAU,QAAQ,EAAErY,SAAS2Z,EAAE,CAAC,CAAC,GAAG;AAClFF,uBAAehgB,IAAIkgB,EAAE,CAAC,CAAC;AAAA,MAC3B;AAAA,IACJ;AAEA,QAAIF,eAAeK,SAAS,EAAG,QAAO,CAAA;AAGtC,QAAIpO,OAAc,CAAA;AAClB,QAAI8N,aAAa9O,QAAQc,MAAMC,QAAQ+N,YAAY9O,IAAI,GAAG;AACtDgB,aAAO8N,YAAY9O;AAAAA,IACvB,WAAWc,MAAMC,QAAQ+N,WAAW,GAAG;AACnC9N,aAAO8N;AAAAA,IACX;AAEA,UAAMO,QAAQrO,KAAK/P,SAAS,KAAK+P,KAAK5K,KAAKkZ,CAAAA,MAAKA,GAAG3kB,MAAM,IAAI;AAC7D,QAAI,CAAC0kB,MAAO,QAAO,CAAA;AAEnB,UAAMxa,UAAiC,CAAA;AACvC,eAAWT,QAAQ2a,gBAAgB;AAC/B,YAAMQ,aAAaX,cAAcxa,IAAI;AACrC,YAAMzG,MAAM6G,YAAYlH,KAAKwE,CAAAA,MAAK;AAC9B,cAAMtE,YAAasE,EAAUzE,SAASuhB,cAAc9c,EAAEsC,IAAI;AAC1D,eAAOtC,EAAEsC,SAASA,QAAQ5G,cAAc+hB,cAAcX,cAAc9c,EAAEsC,IAAI,MAAMmb;AAAAA,MACpF,CAAC;AACD,UAAI5hB,KAAK;AACLkH,gBAAQjH,KAAK;AAAA,UACT4hB,gBAAgB7hB,IAAIyG;AAAAA,UACpBoB,YAAY7H;AAAAA,UACZuH,UAAU;AAAA,QAAA,CACb;AAAA,MACL;AAAA,IACJ;AAEA,WAAOL;AAAAA,EACX;AAIO,WAAS4a,WAAW;AAEvB,UAAMC,gBAAgBtU,KAAAA,iBAAAA;AACtB,UAAMuU,eAAeC,KAAAA,gBAAAA;AACrB,UAAMC,YAAYC,KAAAA,aAAAA;AAClB,UAAMC,WAAWvU,KAAAA,sBAAAA;AACjB,UAAMC,qBAAqBC,KAAAA,4BAAAA;AAC3B,UAAML,uBAAuBC,KAAAA,8BAAAA;AAC7B,UAAM;AAAA,MAAE/N;AAAAA,IAAAA,IAAMiD,oBAAAA;AAGd,UAAMwf,iBAAiBN,cAAcM;AACrC,UAAMC,cAAcP,cAAcQ,gBAAgBC;AAGlD,UAAM,CAACtT,MAAMC,OAAO,IAAI1M,MAAAA,SAAsB,MAC1Cme,gBAAgB,QAAQ,CAAC;AAAA,MAAE5jB,IAAI;AAAA,MAAKkD,MAAM;AAAA,MAAY8f,MAAMW;AAAAA,IAAAA,CAAc,CAAC,CAC/E;AACA,UAAM,CAAC9Q,aAAaC,cAAc,IAAIrN,MAAAA,SAAiB,MACnDme,gBAAgB,aAAa,GAAG,CACpC;AACA,UAAM,CAACzO,QAAQsQ,SAAS,IAAIhgB,MAAAA,SAAiC,IAAI;AACjE,UAAM,CAACigB,WAAWC,YAAY,IAAIlgB,MAAAA,SAAS,KAAK;AAChD,UAAM,CAACgC,UAAU0Q,WAAW,IAAI1S,MAAAA,SAAsB,MAClDme,gBAAgB,YAAY,CAAA,CAAE,CAClC;AACA,UAAM,CAAClc,SAAS0Q,UAAU,IAAI3S,MAAAA,SAAmB,MAC7Cme,gBAAgB,WAAW,CAAA,CAAE,CACjC;AACA,UAAM,CAACgC,gBAAgBC,iBAAiB,IAAIpgB,MAAAA,SAAS,KAAK;AAC1D,UAAM,CAACqgB,aAAaC,cAAc,IAAItgB,MAAAA,SAAS,EAAE;AACjD,UAAM,CAACugB,YAAYC,aAAa,IAAIxgB,MAAAA,SAAuC,MAAM;AAGjF,UAAM,CAACygB,cAAcC,eAAe,IAAI1gB,MAAAA,SAAgC,IAAI;AAE5E,UAAM,CAACoa,aAAaC,cAAc,IAAIra,MAAAA,SAAiB,MAAM;AACzD,UAAI;AACA,cAAM2gB,SAAS9U,aAAaC,QAAQmS,iBAAiB,cAAc;AACnE,eAAO0C,SAASC,OAAOD,MAAM,IAAI;AAAA,MACrC,QAAQ;AAAE,eAAO;AAAA,MAAI;AAAA,IACzB,CAAC;AACD,UAAM,CAACpG,cAAcC,eAAe,IAAIxa,MAAAA,SAAiB,MAAM;AAC3D,UAAI;AACA,cAAM2gB,WAAS9U,aAAaC,QAAQmS,iBAAiB,eAAe;AACpE,eAAO0C,WAASC,OAAOD,QAAM,IAAI;AAAA,MACrC,QAAQ;AAAE,eAAO;AAAA,MAAI;AAAA,IACzB,CAAC;AAGD,UAAMxe,YAAYsK,KAAKvP,KAAKC,CAAAA,QAAKA,IAAE5C,OAAO6S,WAAW,KAAKX,KAAK,CAAC;AAGhE,UAAMoU,kBAAkBC,MAAAA,QAAQ,MAAM;AAClC,YAAM1c,cAAciH,oBAAoBjH,eAAe,CAAA;AACvD,aAAOA,YAAYtD,IAAIvD,CAAAA,SAAQ;AAAA,QAC3ByG,MAAMzG,IAAIyG;AAAAA,QACVvG,MAAMF,IAAIE;AAAAA,QACVuf,YAAYjgB,OAAO6D,KAAKrD,IAAIyf,cAAc,CAAA,CAAE;AAAA,MAAA,EAC9C;AAAA,IACN,GAAG,CAAC3R,oBAAoBjH,WAAW,CAAC;AAEpC,UAAMsX,kBAAkBoF,MAAAA,QAAQ,MAAMD,gBAAgB/f,IAAIY,CAAAA,MAAKA,EAAEsC,IAAI,GAAG,CAAC6c,eAAe,CAAC;AAGzF,UAAME,QAAQD,MAAAA,QAAQ,MAAwB;AAC1C,YAAME,WAAWpB,gBAAgBmB,SAAS,CAAA,GAAIjgB,IAAImgB,CAAAA,OAAM;AAAA,QACpDC,KAAKD,EAAEC;AAAAA,QACPC,aAAaF,EAAEE;AAAAA,QACfC,OAAOH,EAAEG;AAAAA,QACTC,UAAUJ,EAAEI;AAAAA,QACZpT,OAAOgT,EAAEhT;AAAAA,MAAAA,EACX;AAEF,UAAI4R,eAAe,CAACmB,QAAQhb,KAAKib,SAAKA,IAAEC,QAAQrB,YAAYqB,GAAG,GAAG;AAC9DF,gBAAQM,QAAQ;AAAA,UACZJ,KAAKrB,YAAYqB;AAAAA,UACjBC,aAAatB,YAAYsB;AAAAA,UACzBC,OAAOvB,YAAYuB;AAAAA,UACnBC,UAAUxB,YAAYwB;AAAAA,UACtBpT,OAAO4R,YAAY5R;AAAAA,QAAAA,CACtB;AAAA,MACL;AACA,aAAO+S;AAAAA,IACX,GAAG,CAACpB,gBAAgBmB,OAAOlB,WAAW,CAAC;AAGvC,UAAM0B,wBAAwBT,MAAAA,QAAQ,MAA6B;AAC/D,UAAI,CAACjB,YAAa,QAAO;AACzB,aAAO;AAAA,QACHqB,KAAKrB,YAAYqB;AAAAA,QACjBC,aAAatB,YAAYsB;AAAAA,QACzBC,OAAOvB,YAAYuB;AAAAA,QACnBC,UAAUxB,YAAYwB;AAAAA,QACtBpT,OAAO4R,YAAY5R;AAAAA,MAAAA;AAAAA,IAE3B,GAAG,CAAC4R,WAAW,CAAC;AAIhBlS,UAAAA,UAAU,MAAM;AAAE2Q,oBAAc,QAAQ7R,IAAI;AAAA,IAAG,GAAG,CAACA,IAAI,CAAC;AACxDkB,UAAAA,UAAU,MAAM;AAAE2Q,oBAAc,aAAalR,WAAW;AAAA,IAAG,GAAG,CAACA,WAAW,CAAC;AAC3EO,UAAAA,UAAU,MAAM;AAAE2Q,oBAAc,YAAYtc,QAAQ;AAAA,IAAG,GAAG,CAACA,QAAQ,CAAC;AACpE2L,UAAAA,UAAU,MAAM;AAAE2Q,oBAAc,WAAWrc,OAAO;AAAA,IAAG,GAAG,CAACA,OAAO,CAAC;AAEjE0L,UAAAA,UAAU,MAAM;AACZ,UAAI;AAAE9B,qBAAaiD,QAAQmP,iBAAiB,gBAAgB7D,YAAYtG,UAAU;AAAA,MAAG,QAAQ;AAAA,MAAE;AAAA,IACnG,GAAG,CAACsG,WAAW,CAAC;AAEhBzM,UAAAA,UAAU,MAAM;AACZ,UAAI;AAAE9B,qBAAaiD,QAAQmP,iBAAiB,iBAAiB1D,aAAazG,UAAU;AAAA,MAAG,QAAQ;AAAA,MAAE;AAAA,IACrG,GAAG,CAACyG,YAAY,CAAC;AAIjB,UAAMiH,mBAAmBjU,kBAAY,CAACgQ,SAA6B;AAC/D7Q,cAAQ1L,UAAQA,KAAKF,IAAI3D,CAAAA,QAAKA,IAAE5C,OAAO6S,cAAc;AAAA,QAAE,GAAGjQ;AAAAA,QAAGogB,MAAMA,QAAQ;AAAA,MAAA,IAAOpgB,GAAC,CAAC;AAAA,IACxF,GAAG,CAACiQ,WAAW,CAAC;AAEhB,UAAMqU,SAASlU,MAAAA,YAAY,MAAM;AAC7B,YAAMhT,KAAKsM,OAAOkQ,KAAK3B,IAAAA,CAAK;AAC5B,YAAM7F,SAAoB;AAAA,QAAEhV;AAAAA,QAAIkD,MAAM,UAAUgP,KAAK5L,SAAS,CAAC;AAAA,QAAI0c,MAAMW;AAAAA,MAAAA;AACzExR,cAAQ1L,CAAAA,WAAQ,CAAC,GAAGA,QAAMuO,MAAM,CAAC;AACjClC,qBAAe9S,EAAE;AAAA,IACrB,GAAG,CAACkS,KAAK5L,MAAM,CAAC;AAEhB,UAAM6gB,WAAWnU,kBAAY,CAAC4B,UAAkB;AAC5CzC,cAAQ1L,CAAAA,WAAQ;AACZ,cAAM2gB,WAAW3gB,OAAKyB,OAAOtF,CAAAA,QAAKA,IAAE5C,OAAO4U,KAAK;AAChD,YAAIwS,SAAS9gB,WAAW,GAAG;AACvB,gBAAM+gB,QAAQ;AAAA,YAAErnB,IAAIsM,OAAOkQ,KAAK3B,KAAK;AAAA,YAAG3X,MAAM;AAAA,YAAY8f,MAAMW;AAAAA,UAAAA;AAChE7Q,yBAAeuU,MAAMrnB,EAAE;AACvB,iBAAO,CAACqnB,KAAK;AAAA,QACjB;AACA,YAAIxU,gBAAgB+B,OAAO;AACvB9B,yBAAesU,SAASA,SAAS9gB,SAAS,CAAC,EAAEtG,EAAE;AAAA,QACnD;AACA,eAAOonB;AAAAA,MACX,CAAC;AAAA,IACL,GAAG,CAACvU,WAAW,CAAC;AAIhB,UAAMyU,cAActU,MAAAA,YAAY,YAAY;AAExC,UAAI,CAACkT,gBAAiBZ,eAAeY,aAAaS,QAAQrB,YAAYqB,KAAM;AACxE,YAAI,CAAC3B,cAAc;AACf,gBAAM,IAAI3Y,MAAM,wCAAwC;AAAA,QAC5D;AACA,eAAO;AAAA,UAAEkb,QAAQvC;AAAAA,UAAcwC,UAAU;AAAA,QAAA;AAAA,MAC7C;AAEA,YAAMC,SAASvC,WAAWuC;AAC1B,YAAMC,eAAexC,WAAWwC;AAEhC,UAAI,CAACD,QAAQ;AACT,cAAM,IAAIpb,MAAM,kDAAkD;AAAA,MACtE;AAGA,UAAIsb;AACJ,UAAID,cAAc;AACdC,gBAAS,MAAMD,kBAAmB7mB;AAAAA,MACtC;AAEA,UAAI,CAAC8mB,OAAO;AACR,cAAM,IAAItb,MAAM,gDAAgD;AAAA,MACpE;AAIA,YAAMkb,WAASK,OAAAA,mBAAmB;AAAA,QAC9BC,SAASJ;AAAAA,QACTE;AAAAA,MAAAA,CACH;AAED,aAAO;AAAA,QAAA,QAAEJ;AAAAA,QAAQC,UAAU;AAAA,MAAA;AAAA,IAC/B,GAAG,CAACtC,WAAWF,cAAckB,cAAcZ,WAAW,CAAC;AAIvD,UAAMwC,cAAc9U,kBAAY,OAAO+U,iBAA0B;AAC7D,YAAM/E,SAAO+E,gBAAgBngB,WAAWob,QAAQ;AAChD,UAAI,CAACA,OAAK/hB,OAAQ;AAElB0kB,mBAAa,IAAI;AACjBF,gBAAU,IAAI;AAGdrN,iBAAW3R,CAAAA,WAAQ;AACf,cAAMuhB,UAAUvhB,OAAKyB,OAAO+f,CAAAA,MAAKA,MAAMjF,MAAI;AAC3C,eAAO,CAAC,GAAGgF,SAAShF,MAAI,EAAE/J,MAAM,GAAY;AAAA,MAChD,CAAC;AAED,YAAMiP,iBAAiC,CAAA;AACvC,YAAMC,YAAYvN,YAAYC,IAAAA;AAC9B,UAAIuN,wBAA6B;AAGjC,YAAMC,kBAAkB;AAAA,QACpBC,KAAKpc,QAAQoc;AAAAA,QACbnc,MAAMD,QAAQC;AAAAA,QACdnB,OAAOkB,QAAQlB;AAAAA,QACfud,MAAMrc,QAAQqc;AAAAA,MAAAA;AAGlB,YAAMC,iBAAiBA,CAACxf,SAA+B,IAAIyf,SAAgB;AACvEP,uBAAejlB,KAAK;AAAA,UAAE+F;AAAAA,UAAMyf;AAAAA,UAAMC,WAAWlM,KAAK3B,IAAAA;AAAAA,QAAI,CAAG;AACzDwN,wBAAgBrf,IAAI,EAAE,GAAGyf,IAAI;AAAA,MACjC;AAEA,UAAI;AACAvc,gBAAQoc,MAAME,eAAe,KAAK;AAClCtc,gBAAQC,OAAOqc,eAAe,MAAM;AACpCtc,gBAAQlB,QAAQwd,eAAe,OAAO;AACtCtc,gBAAQqc,OAAOC,eAAe,MAAM;AAGpC,cAAM;AAAA,UAAEjB,QAAAA;AAAAA,UAAQC;AAAAA,QAAAA,IAAa,MAAMF,YAAAA;AACnC,YAAIE,UAAU;AACVY,kCAAwBb;AAAAA,QAC5B;AAGA,cAAMoB,UAAU;AAAA,UACZnD,MAAMU,iBAAiBZ,cAAc;AAAA,YACjCqB,KAAKrB,YAAYqB;AAAAA,YACjBC,aAAatB,YAAYsB;AAAAA,YACzBC,OAAOvB,YAAYuB;AAAAA,YACnBnT,OAAO4R,YAAY5R;AAAAA,UAAAA,IACnB;AAAA,UACJ7J,aAAayc;AAAAA,QAAAA;AAKjB,cAAMsC,gBAAgBpmB,OAAOqmB,eAAe,iBAAkB;AAAA,QAAE,CAAC,EAAEC;AACnE,cAAMC,KAAK,IAAIH,cAAc,UAAU,WAAW5F,MAAI;AAEtD,cAAMnkB,QAAQ,MAAMkqB,GAAGxB,UAAQoB,OAAO;AACtC,cAAMK,aAAWpO,YAAYC,IAAAA,IAAQsN;AAErC1C,kBAAU;AAAA,UACN5mB;AAAAA,UACAqN,SAASgc;AAAAA,UACTc,UAAAA;AAAAA,UACAN,WAAWlM,KAAK3B,IAAAA;AAAAA,QAAI,CACvB;AAGD,YAAIhc,OAAOwW,QAAQc,MAAMC,QAAQvX,MAAMwW,IAAI,GAAG;AAC1C4Q,wBAAc,OAAO;AAAA,QACzB,WAAWiC,eAAe5hB,SAAS,KAAKzH,UAAUgC,QAAW;AACzDolB,wBAAc,SAAS;AAAA,QAC3B,OAAO;AACHA,wBAAc,MAAM;AAAA,QACxB;AAAA,MACJ,SAASxR,KAAU;AACf,cAAMuU,WAAWpO,YAAYC,IAAAA,IAAQsN;AACrC1C,kBAAU;AAAA,UACN5mB,OAAOgC;AAAAA,UACPqL,SAASgc;AAAAA,UACTc;AAAAA,UACAhe,OAAOyJ,KAAKrI,WAAWE,OAAOmI,GAAG;AAAA,UACjCiU,WAAWlM,KAAK3B,IAAAA;AAAAA,QAAI,CACvB;AACDoL,sBAAc,MAAM;AAAA,MACxB,UAAA;AACI/Z,gBAAQoc,MAAMD,gBAAgBC;AAC9Bpc,gBAAQC,OAAOkc,gBAAgBlc;AAC/BD,gBAAQlB,QAAQqd,gBAAgBrd;AAChCkB,gBAAQqc,OAAOF,gBAAgBE;AAC/B5C,qBAAa,KAAK;AAElB,YAAIyC,uBAAuB;AAEvBA,gCAAsBa,IAAIC,WAAAA;AAAAA,QAC9B;AAAA,MACJ;AAAA,IACJ,GAAG,CAACthB,WAAWob,MAAMsE,aAAapB,cAAcZ,aAAagB,eAAe,CAAC;AAI7E,UAAM6C,cAAcnW,MAAAA,YAAY,MAAM;AAClC,UAAI,CAAC8S,YAAY7kB,KAAAA,KAAU,CAAC2G,WAAWob,KAAK/hB,OAAQ;AACpD,YAAMsH,UAAqB;AAAA,QACvBvI,IAAIsM,OAAOkQ,KAAK3B,KAAK;AAAA,QACrB3X,MAAM4iB,YAAY7kB,KAAAA;AAAAA,QAClB+hB,MAAMpb,UAAUob;AAAAA,QAChBzG,WAAWC,KAAK3B,IAAAA;AAAAA,MAAI;AAExB1C,kBAAY1R,CAAAA,WAAQ,CAAC8B,SAAS,GAAG9B,MAAI,CAAC;AACtCof,wBAAkB,KAAK;AACvBE,qBAAe,EAAE;AACjBX,eAASlO,KAAK;AAAA,QAAElO,MAAM;AAAA,QAAWoD,SAAS;AAAA,MAAA,CAAiB;AAAA,IAC/D,GAAG,CAAC0Z,aAAale,WAAWob,MAAMoC,QAAQ,CAAC;AAE3C,UAAMgE,gBAAgBpW,kBAAY,CAAChT,SAAe;AAC9CmY,kBAAY1R,YAAQA,OAAKyB,OAAOC,OAAKA,EAAEnI,OAAOA,IAAE,CAAC;AAAA,IACrD,GAAG,CAAA,CAAE;AAIL,UAAMqpB,eAAerW,MAAAA,YAAY,MAAM;AACnC,UAAI,CAACmC,QAAQtW,MAAO;AACpB,YAAMie,OAAO,IAAIC,KAAK,CAACiH,WAAW7O,OAAOtW,KAAK,CAAC,GAAG;AAAA,QAAEmK,MAAM;AAAA,MAAA,CAAoB;AAC9E,YAAMgU,MAAMC,IAAIC,gBAAgBJ,IAAI;AACpC,YAAMK,IAAItB,SAASuB,cAAc,GAAG;AACpCD,QAAEE,OAAOL;AACTG,QAAEG,WAAW,iBAAiBd,KAAK3B,IAAAA,CAAK;AACxCsC,QAAEK,MAAAA;AACFP,UAAIQ,gBAAgBT,GAAG;AAAA,IAC3B,GAAG,CAAC7H,MAAM,CAAC;AAIX,UAAMmU,YAAY/C,MAAAA,QAAQ,MAAM;AAC5B,UAAI,CAACpR,QAAQtW,MAAO,QAAO;AAAA,QAAEiE,SAAS,CAAA;AAAA,QAA4BuS,MAAM,CAAA;AAAA;AAExE,UAAIgB,OAAc,CAAA;AAClB,UAAIlB,OAAOtW,OAAOwW,QAAQc,MAAMC,QAAQjB,OAAOtW,MAAMwW,IAAI,GAAG;AACxDgB,eAAOlB,OAAOtW,MAAMwW,KAAK9O,IAAI,CAACgjB,YAAiB;AAAA,UAC3CvpB,IAAIupB,OAAOvpB;AAAAA,UACX,GAAGupB,OAAOlf;AAAAA,UACV,GAAIkf,OAAOlf,SAAS,KAAKkf;AAAAA,QAAAA,EAC3B;AAAA,MACN,WAAWpT,MAAMC,QAAQjB,OAAOtW,KAAK,GAAG;AACpCwX,eAAOlB,OAAOtW;AAAAA,MAClB;AAEA,UAAIwX,KAAK/P,WAAW,EAAG,QAAO;AAAA,QAAExD,SAAS,CAAA;AAAA,QAA4BuS,MAAM,CAAA;AAAA;AAE3E,YAAMhP,2BAAWrC,IAAAA;AACjBqS,WAAK4C,MAAM,GAAG,EAAE,EAAElW,QAAQ4Z,CAAAA,QAAO;AAC7B,YAAIA,OAAO,OAAOA,QAAQ,UAAU;AAChCna,iBAAO6D,KAAKsW,GAAG,EAAE5Z,QAAQymB,OAAKnjB,KAAKjC,IAAIolB,CAAC,CAAC;AAAA,QAC7C;AAAA,MACJ,CAAC;AAED,YAAM1mB,UAAgCqT,MAAM5M,KAAKlD,IAAI,EAAEE,IAAI6T,CAAAA,SAAQ;AAAA,QAC/DA;AAAAA,QACA0E,OAAO1E;AAAAA,QACPC,OAAOD,QAAQ,OAAO,MAAM;AAAA,MAAA,EAC9B;AAEF,aAAO;AAAA,QAAEtX;AAAAA,QAASuS,MAAMgB;AAAAA,MAAAA;AAAAA,IAC5B,GAAG,CAAClB,MAAM,CAAC;AAIX,UAAMqJ,qBAAqB+H,MAAAA,QAAQ,MAAM;AACrC,UAAI,CAACpR,QAAQtW,SAASsW,OAAOnK,cAAc,CAAA;AAC3C,aAAOkZ,0BACHtc,WAAWob,QAAQ,IACnB7N,OAAOtW,OACPiS,oBAAoBjH,eAAe,EACvC;AAAA,IACJ,GAAG,CAACsL,QAAQvN,WAAWob,MAAMlS,oBAAoBjH,WAAW,CAAC;AAE7D,UAAM8U,sBAAsB3L,kBAAY,CAACiE,YAAmF;AACxH,UAAI,CAACA,WAAWuH,mBAAmBlY,WAAW,UAAU,CAAA;AACxD,aAAOkY,mBACFtW,OAAOwW,CAAAA,OAAMzH,QAAQyH,GAAGnU,QAAQ,KAAK,IAAI,EACzChE,IAAImY,CAAAA,UAAO;AAAA,QACR7T,YAAY6T;AAAAA,QACZE,UAAU3H,QAAQyH,KAAGnU,QAAQ;AAAA,MAAA,EAC/B;AAAA,IACV,GAAG,CAACiU,kBAAkB,CAAC;AAIvB,UAAM/B,kBAAkBzJ,MAAAA,YAAY,MAAM;AACtC,UAAIsW,UAAUjU,KAAK/O,WAAW,EAAG;AACjC,YAAMoW,UAAU4M,UAAUxmB,QAAQyD,IAAIY,SAAKA,IAAEiT,GAAG,EAAEhT,KAAK,GAAG;AAC1D,YAAMiP,SAAOiT,UAAUjU,KAAK9O,IAAIoW,WAC5B2M,UAAUxmB,QAAQyD,IAAIY,CAAAA,QAAK;AACvB,cAAMsQ,MAAMkF,MAAIxV,IAAEiT,GAAG;AACrB,cAAMwC,MAAMnF,QAAQ,QAAQA,QAAQ5W,SAAY,KAAKyL,OAAOmL,GAAG;AAC/D,eAAOmF,IAAIjS,SAAS,GAAG,IAAI,IAAIiS,GAAG,MAAMA;AAAAA,MAC5C,CAAC,EAAExV,KAAK,GAAG,CACf;AACA,YAAMyV,MAAM,CAACH,SAAS,GAAGrG,MAAI,EAAEjP,KAAK,IAAI;AACxC,YAAM0V,SAAO,IAAIC,KAAK,CAACF,GAAG,GAAG;AAAA,QAAE7T,MAAM;AAAA,MAAA,CAAY;AACjD,YAAMgU,QAAMC,IAAIC,gBAAgBJ,MAAI;AACpC,YAAMK,MAAItB,SAASuB,cAAc,GAAG;AACpCD,UAAEE,OAAOL;AACTG,UAAEG,WAAW,eAAc,oBAAId,KAAAA,GAAOe,cAActE,MAAM,GAAG,EAAE,CAAC;AAChEkE,UAAEK,MAAAA;AACFP,UAAIQ,gBAAgBT,KAAG;AAAA,IAC3B,GAAG,CAACsM,SAAS,CAAC;AAEd,UAAM1L,uBAAuB5K,MAAAA,YAAY,MAAM;AAC3C,UAAIsW,UAAUjU,KAAK/O,WAAW,EAAG;AACjC,YAAMoW,YAAU4M,UAAUxmB,QAAQyD,IAAIY,CAAAA,QAAKA,IAAEiT,GAAG;AAChD,YAAMyD,YAAY,KAAKnB,UAAQtV,KAAK,KAAK,CAAC;AAC1C,YAAM0W,aAAa,KAAKpB,UAAQnW,IAAI,MAAM,KAAK,EAAEa,KAAK,KAAK,CAAC;AAC5D,YAAM2W,WAAWuL,UAAUjU,KAAK9O,IAAIoW,WAChC,KAAKD,UAAQnW,IAAI0hB,CAAAA,QAAK;AAClB,cAAMxQ,QAAMkF,MAAIsL,GAAC;AACjB,YAAIxQ,UAAQ,QAAQA,UAAQ5W,OAAW,QAAO;AAC9C,eAAOyL,OAAOmL,KAAG,EAAE/N,QAAQ,OAAO,KAAK,EAAEA,QAAQ,OAAO,GAAG;AAAA,MAC/D,CAAC,EAAEtC,KAAK,KAAK,CAAC,IAClB;AACA,YAAM6W,WAAW,CAACJ,WAAWC,YAAY,GAAGC,QAAQ,EAAE3W,KAAK,IAAI;AAC/DR,gBAAUC,UAAUC,UAAUmX,QAAQ,EAAEC,KAAK,MAAM;AAC/CkH,iBAASlO,KAAK;AAAA,UAAElO,MAAM;AAAA,UAAWoD,SAASxJ,EAAE,4BAA4B;AAAA,QAAA,CAAG;AAAA,MAC/E,CAAC,EAAEub,MAAM,MAAM;AACXiH,iBAASlO,KAAK;AAAA,UAAElO,MAAM;AAAA,UAASoD,SAASxJ,EAAE,iCAAiC;AAAA,QAAA,CAAG;AAAA,MAClF,CAAC;AAAA,IACL,GAAG,CAAC0mB,WAAWlE,UAAUxiB,CAAC,CAAC;AAI3B,WACIoD,2BAAAA,KAAC,OAAA,EAAI,WAAU,+BAEX,UAAA;AAAA,MAAAxB,+BAAC,SAAI,WAAU,6BACX,UAAAA,+BAAC2b,GAAAA,iBAAA,EACG,aAAY,cACZ,kBAAkBN,aAClB,mBAAmBC,gBACnB,gBAAgB,KAChB,YACItb,2BAAAA,IAAC,mBACG,aAAa8hB,iBACb,UACA,SACA,iBAAkBtD,CAAAA,WAASiE,iBAAiBjE,MAAI,GAChD,iBAAiBoG,eACjB,cAAepG,CAAAA,WAASiE,iBAAiBjE,MAAI,EAAA,CAAE,GAGvD,aACIhd,gCAAC,OAAA,EAAI,WAAU,wCAEX,UAAA;AAAA,QAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,gFAAgFwB,GAAAA,kBAAkB,GAClH,UAAA;AAAA,UAAAzB,2BAAAA,IAAC,SAAI,WAAU,oDACX,UAAAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,0DACX,UAAA;AAAA,YAAAxB,2BAAAA,IAACsD,GAAAA,MAAA,EAAK,OAAO+K,aAAa,eAAeC,gBAAgB,SAAQ,QAAO,WAAU,2BAA0B,gBAAe,gCACtHZ,UAAAA,KAAK3L,IAAImT,SACN1T,2BAAAA,KAACgC,GAAAA,KAAA,EAAiB,OAAO0R,IAAI1Z,IAAI,WAAU,yDACvC,UAAA;AAAA,cAAAwE,2BAAAA,IAAC4b,GAAAA,cAAA,EAAa,MAAK,YAAW,WAAU,uCAAqC;AAAA,cAC7E5b,2BAAAA,IAAC,QAAA,EAAK,WAAU,YAAYkV,cAAIxW,MAAK;AAAA,cACpCgP,KAAK5L,SAAS,KACX9B,+BAAC2B,GAAAA,cACG,MAAK,YACL,SAAUO,CAAAA,MAAM;AAAEA,kBAAEC,gBAAAA;AAAmBwgB,yBAASzN,IAAI1Z,EAAE;AAAA,cAAG,GACzD,WAAU,uFAEV,yCAACqgB,GAAAA,WAAA,EAAU,MAAK,YAAU,EAAA,CAC9B;AAAA,YAAA,EAAA,GAVE3G,IAAI1Z,EAYd,CACH,GACL;AAAA,YACAwE,2BAAAA,IAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,SAAS+gB,QACT,WAAU,sBAEV,UAAA1iB,2BAAAA,IAAC8b,GAAAA,SAAA,EAAQ,MAAK,QAAA,CAAO,EAAA,CACzB;AAAA,UAAA,EAAA,CACJ,EAAA,CACJ;AAAA,UACAta,2BAAAA,KAAC,OAAA,EAAI,WAAU,kDAEX,UAAA;AAAA,YAAAxB,2BAAAA,IAACilB,KAAAA,mBAAA,EACG,cACA,gBAAgBtD,iBAChB,OACA,SAASd,gBAAgB7S,SACzB,aAAawU,uBACb,WAAU,OAAA,CAAM;AAAA,YAGpBxiB,2BAAAA,IAAC,OAAA,EAAI,WAAU,mDAAA,CAAkD;AAAA,YAEjEA,2BAAAA,IAACya,GAAAA,WAAQ,OAAM,mBACX,yCAAC9Y,GAAAA,YAAA,EACG,MAAK,SACL,SAAS,MAAM;AACX4f,6BAAe,EAAE;AACjBF,gCAAkB,IAAI;AAAA,YAC1B,GACA,UAAU,CAACje,WAAWob,KAAK/hB,KAAAA,GAE3B,UAAAuD,2BAAAA,IAACklB,GAAAA,UAAA,EAAS,MAAK,QAAA,CAAO,EAAA,CAC1B,EAAA,CACJ;AAAA,YAECvU,QAAQtW,SACL2F,2BAAAA,IAACya,YAAA,EAAQ,OAAM,yBACX,UAAAza,+BAAC2B,GAAAA,YAAA,EAAW,MAAK,SAAQ,SAASkjB,cAC9B,UAAA7kB,+BAACmlB,GAAAA,gBAAa,MAAK,QAAA,CAAO,GAC9B,GACJ;AAAA,4CAGHtiB,GAAAA,QAAA,EACG,MAAK,SACL,OAAM,WACN,UAAUqe,aAAa,CAAC9d,WAAWob,KAAK/hB,KAAAA,GACxC,SAAS,MAAM6mB,eAEdpC,UAAAA;AAAAA,cAAAA,YAAYlhB,2BAAAA,IAACsB,GAAAA,kBAAA,EAAiB,MAAK,YAAW,WAAU,OAAA,CAAM,IAAMtB,2BAAAA,IAACkc,GAAAA,eAAA,EAAc,MAAK,SAAQ,WAAU,QAAM;AAAA,cAAG;AAAA,YAAA,EAAA,CAExH;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,GACJ;AAAA,uCAGC,OAAA,EAAI,WAAU,6BACX,UAAAlc,2BAAAA,IAAC2b,oBAAA,EACG,aAAY,YACZ,kBAAkBH,cAClB,mBAAmBC,iBACnB,gBAAgB,KAChB,2CACK,OAAA,EAAI,WAAU,iCACX,UAAAzb,2BAAAA,IAAC,gBAAA,EACG,OAAOoD,WAAWob,QAAQ,IAC1B,UAAUiE,kBACV,OAAQrmB,CAAAA,iBAAiBknB,YAAYlnB,YAAY,GACjD,iBACA,aAAa0lB,iBACb,WAAS,MAAA,EAAA,CAEjB,GAEJ,aACItgB,2BAAAA,KAAC,OAAA,EAAI,WAAU,yFAEX,UAAA;AAAA,UAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,mFAAmFwB,GAAAA,kBAAkB,GACrH,UAAA;AAAA,YAAAzB,2BAAAA,IAAC0B,GAAAA,cAAW,SAAQ,WAAU,WAAU,mGACnCtD,UAAAA,EAAE,0BAA0B,GACjC;AAAA,YAECuS,UACGnP,2BAAAA,KAAAsC,qBAAA,EACI,UAAA;AAAA,cAAA9D,2BAAAA,IAAC,OAAA,EAAI,WAAU,YAAA,CAAW;AAAA,cAE1BwB,2BAAAA,KAAC8B,GAAAA,MAAA,EAAK,OAAOke,YAAY,eAAgBvO,CAAAA,UAAQwO,cAAcxO,KAAmC,GAAG,SAAQ,QAAO,WAAU,kBAC1H,UAAA;AAAA,gBAAAjT,2BAAAA,IAACwD,GAAAA,KAAA,EAAI,OAAM,QAAO,UAAA,QAAI;AAAA,gBACrBshB,UAAUjU,KAAK/O,SAAS,oCAAM0B,QAAA,EAAI,OAAM,SAAQ,UAAA,QAAA,CAAK;AAAA,gBACrDmN,OAAOjJ,QAAQ5F,SAAS,KAAKN,2BAAAA,KAACgC,GAAAA,KAAA,EAAI,OAAM,WAAU,UAAA;AAAA,kBAAA;AAAA,kBAAUmN,OAAOjJ,QAAQ5F;AAAAA,kBAAO;AAAA,gBAAA,EAAA,CAAC;AAAA,cAAA,GACxF;AAAA,6CAECsjB,GAAAA,MAAA,EAAK,MAAK,YAAW,aAAazU,OAAOnK,QAAQ,cAAc,eAC3DmK,UAAAA,OAAOnK,QAAQ,UAAU,GAAGmK,OAAO6T,SAAS1a,QAAQ,CAAC,CAAC,KAAA,CAC3D;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,GAER;AAAA,UAGAtI,2BAAAA,KAAC,OAAA,EAAI,WAAU,mDACV0f,UAAAA;AAAAA,YAAAA,4CACI,OAAA,EAAI,WAAU,8CACX,UAAA1f,2BAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,cAAAxB,2BAAAA,IAACsB,GAAAA,kBAAA,EAAiB,MAAK,SAAA,CAAQ;AAAA,6CAC9BI,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,iGAA+F,UAAA,sBAAA,CAErI;AAAA,YAAA,EAAA,CACJ,EAAA,CACJ;AAAA,YAGH,CAACwf,aAAa,CAACvQ,UACZ3Q,2BAAAA,IAAC,OAAA,EAAI,WAAU,8FACX,UAAAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,cAAAxB,2BAAAA,IAAC,SAAI,WAAU,qCAAoC,MAAK,QAAO,QAAO,gBAAe,SAAQ,aAAY,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,wFAAsF,EAAA,CAAG;AAAA,cACvQwB,2BAAAA,KAACE,GAAAA,YAAA,EAAW,SAAQ,SAAQ,UAAA;AAAA,gBAAA;AAAA,gBAA2B1B,2BAAAA,IAAC,OAAA,EAAI,WAAU,kFAAiF,UAAA,WAAO;AAAA,gBAAM;AAAA,cAAA,EAAA,CAAO;AAAA,YAAA,EAAA,CAC/K,EAAA,CACJ;AAAA,YAGH,CAACkhB,aAAavQ,QAAQnK,wCAClB,OAAA,EAAI,WAAU,gEACX,UAAAxG,2BAAAA,IAACuB,KAAAA,aACG,OAAM,mBACN,OAAOoP,OAAOnK,OAAM,GAE5B;AAAA,YAGH,CAAC0a,aAAavQ,UAAU,CAACA,OAAOnK,SAASgb,eAAe,UACrDxhB,2BAAAA,IAAC,OAAA,EAAI,WAAU,mJACV2Q,UAAAA,OAAOtW,UAAUgC,SACd2D,2BAAAA,IAAC,QAAA,EAAK,WAAU,6BAA4B,UAAA,8BAAA,CAA2B,IAEvEA,2BAAAA,IAAC,eAAA,EAAc,OAAO2Q,OAAOtW,MAAAA,CAAM,EAAA,CAE3C;AAAA,YAGH,CAAC6mB,aAAavQ,UAAU,CAACA,OAAOnK,SAASgb,eAAe,WAAWsD,UAAUjU,KAAK/O,SAAS,KACxFN,gCAAC,OAAA,EAAI,WAAU,mDAEVwY,UAAAA;AAAAA,cAAAA,mBAAmBlY,SAAS,KACzBN,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,OAAI,2FAA2FwB,GAAAA,kBAAkB,GAC7H,UAAA;AAAA,gBAAAzB,+BAACya,GAAAA,SAAA,EAAQ,OAAOrc,EAAE,oCAAoC,GAClD,UAAA4B,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,6HAA6HtD,UAAAA,EAAE,gBAAgB,GAAE,GAC7L;AAAA,gBACA4B,2BAAAA,IAAC,SAAI,WAAU,0DACVga,6BAAmBjY,IAAImY,CAAAA,wCACnBO,GAAAA,SAAA,EAAgC,OAAO,GAAGP,KAAG7T,WAAW3H,IAAI,KAAKwb,KAAGmG,cAAc,KAC/E,UAAA7e,2BAAAA,KAAC,QAAA,EAAK,WAAU,oOACX,UAAA;AAAA,kBAAA,OAAO0Y,KAAG7T,WAAWqU,SAAS,YAC3B1a,+BAAC2a,KAAAA,eAAY,kBAAkB;AAAA,oBAAED,MAAMR,KAAG7T,WAAWqU;AAAAA,kBAAAA,GAAiB,WAAU,eAAa;AAAA,kBAEhGR,KAAG7T,WAAW3H;AAAAA,gBAAAA,EAAAA,CACnB,EAAA,GANUwb,KAAGmG,cAOjB,CACH,EAAA,CACL;AAAA,cAAA,GACJ;AAAA,cAEJrgB,2BAAAA,IAAC,OAAA,EAAI,WAAU,6CACX,UAAAA,2BAAAA,IAAC4a,GAAAA,cAAA,EACG,MAAMkK,UAAUjU,MAChB,SACImJ,mBAAmBlY,SAAS,IACtB,CAAC;AAAA,gBAAE8T,KAAK;AAAA,gBAAqB0E,OAAO;AAAA,gBAAIzE,OAAO;AAAA,gBAAI0E,UAAU;AAAA,gBAAOC,WAAW;AAAA,cAAA,GAAS,GAAGsK,UAAUxmB,OAAO,IAC5GwmB,UAAUxmB,SAEpB,WAAW,IACX,cAAc,IACd,cAAc,CAAC;AAAA,gBAAEmU,SAAAA;AAAAA,gBAAS/U;AAAAA,gBAAQ6U;AAAAA,cAAAA,MAA4D;AAE1F,oBAAI7U,OAAOkY,QAAQ,qBAAqB;AACpC,wBAAMiF,aAAaV,oBAAoB1H,SAAO;AAC9C,sBAAIoI,WAAW/Y,WAAW,UAAU9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,iBAAe;AAClE,sBAAI6a,WAAW/Y,WAAW,GAAG;AACzB,0BAAMgZ,KAAKD,WAAW,CAAC;AACvB,2BACI7a,+BAAC,SAAI,WAAU,2CACX,yCAACya,YAAA,EAAQ,OAAOrc,EAAE,0BAA0B;AAAA,sBAAEM,MAAMoc,GAAGzU,WAAWA,WAAW3H;AAAAA,sBAAMlD,IAAIsM,OAAOgT,GAAGV,QAAQ;AAAA,oBAAA,CAAG,GACxG,UAAApa,+BAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,WAAU,6FACV,SAAUO,CAAAA,QAAM;AACZA,0BAAEC,gBAAAA;AACF+J,2CAAqBwG,KAAK;AAAA,wBACtBqI,MAAMD,GAAGzU,WAAWga;AAAAA,wBACpBjG,UAAUU,GAAGV;AAAAA,wBACb/T,YAAYyU,GAAGzU,WAAWA;AAAAA,wBAC1B2U,WAAW;AAAA,sBAAA,CACd;AAAA,oBACL,GAEA,UAAAhb,2BAAAA,IAACib,aAAA,EAAS,MAAK,SAAO,EAAA,CAC1B,GACJ,GACJ;AAAA,kBAER;AAEA,yBACIjb,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CACX,yCAACwC,GAAAA,MAAA,EACG,SACIxC,2BAAAA,IAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,WAAU,6FACV,SAAUO,CAAAA,QAAMA,IAAEC,mBAElB,UAAAnC,2BAAAA,IAACyC,GAAAA,cAAA,EAAa,MAAK,QAAA,CAAO,GAC9B,GAGHoY,UAAAA,WAAW9Y,IAAI+Y,CAAAA,SACZ9a,2BAAAA,IAAC0C,GAAAA,UAAA,EAEG,OAAK,MACL,SAAS,MAAM;AACXwJ,yCAAqBwG,KAAK;AAAA,sBACtBqI,MAAMD,KAAGzU,WAAWga;AAAAA,sBACpBjG,UAAUU,KAAGV;AAAAA,sBACb/T,YAAYyU,KAAGzU,WAAWA;AAAAA,sBAC1B2U,WAAW;AAAA,oBAAA,CACd;AAAA,kBACL,GAEC5c,YAAE,0BAA0B;AAAA,oBAAEM,MAAMoc,KAAGzU,WAAWA,WAAW3H;AAAAA,oBAAMlD,IAAIsM,OAAOgT,KAAGV,QAAQ;AAAA,kBAAA,CAAG,EAAA,GAXxFU,KAAGzU,WAAWga,cAYvB,CACH,GACL,GACJ;AAAA,gBAER;AAGA,oBAAI,CAAC5N,UAAS,QAAO;AACrB,sBAAMQ,QAAMR,UAAQ/U,OAAOkY,GAAG;AAC9B,sBAAMuF,eAAe,OAAOlI,UAAQ,YAAYA,UAAQ,OAAOnF,KAAKsG,UAAUnB,KAAG,IAAInL,OAAOmL,SAAO,EAAE;AACrG,sDACK,OAAA,EAAI,WAAU,8HACX,UAAAjT,2BAAAA,IAAC,OAAA,EAAI,WAAU,sBAAqB,OAAOmb,cACtCA,UAAAA,iBAAiB,oCAAM,QAAA,EAAK,WAAU,sEAAqE,UAAA,OAAA,CAAI,IAAUA,cAC9H,EAAA,CACJ;AAAA,cAER,GAAE,EAAA,CAEV;AAAA,YAAA,GACJ;AAAA,YAGH,CAAC+F,aAAavQ,UAAU6Q,eAAe,aACpChgB,gCAAC,OAAA,EAAI,WAAU,+DACVmP,UAAAA;AAAAA,cAAAA,OAAOjJ,QAAQ5F,WAAW,IACvB9B,2BAAAA,IAAC0B,eAAA,EAAW,SAAQ,WAAU,WAAU,0BAAyB,UAAA,qBAAiB,IAElFiP,OAAOjJ,QAAQ3F,IAAI,CAACsjB,OAAOlhB,MACvB3C,gCAAC,OAAA,EAEG,WAAWvB,GAAAA,IACP,4CACAolB,MAAM7gB,SAAS,WAAW,+DAC1B6gB,MAAM7gB,SAAS,UAAU,uEACzB6gB,MAAM7gB,SAAS,SAAS,iDACxB6gB,MAAM7gB,SAAS,UAAU,kCAC7B,GAEA,UAAA;AAAA,gBAAAxE,+BAAC,QAAA,EAAK,WAAU,+CACXqlB,UAAAA,MAAM7gB,SAAS,UAAU,MAAM6gB,MAAM7gB,SAAS,SAAS,OAAO6gB,MAAM7gB,SAAS,SAAS,OAAO,KAClG;AAAA,gBACAxE,2BAAAA,IAAC,UAAK,WAAU,mCACXqlB,gBAAMpB,KAAKliB,IAAI4W,CAAAA,QAAK,OAAOA,QAAM,WAAW7K,KAAKsG,UAAUuE,KAAG,MAAM,CAAC,IAAI7Q,OAAO6Q,GAAC,CAAC,EAAE/V,KAAK,GAAG,EAAA,CACjG;AAAA,cAAA,EAAA,GAdKuB,CAeT,CACH;AAAA,cAGJwM,OAAOtW,UAAUgC,UACdmF,2BAAAA,KAAC,SAAI,WAAWvB,OAAI,gCAAgCwB,GAAAA,kBAAkB,GAClE,UAAA;AAAA,gBAAAzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sEAAqE,UAAA,gBAAY;AAAA,+CACxH,OAAA,EAAI,WAAU,6FACV8d,UAAAA,WAAW7O,OAAOtW,KAAK,EAAA,CAC5B;AAAA,cAAA,EAAA,CACJ;AAAA,YAAA,EAAA,CAER;AAAA,UAAA,GAER;AAAA,UAGC,CAAC6mB,aAAavQ,UAAU,CAACA,OAAOnK,SAASgb,eAAe,WAAWsD,UAAUjU,KAAK/O,SAAS,KACxFN,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,kGAAkGwB,qBAAkB,GACpI,UAAA;AAAA,YAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACX,UAAA;AAAA,cAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,iCACX,UAAA;AAAA,gBAAAxB,+BAAC,QAAA,EAAK,WAAU,6FAA6F5B,UAAAA,EAAE,iBAAiB,GAAE;AAAA,+CACjI,QAAA,EAAK,WAAU,+DAA+D0mB,UAAAA,UAAUjU,KAAK/O,OAAAA,CAAO;AAAA,cAAA,GACzG;AAAA,cACAN,2BAAAA,KAAC,OAAA,EAAI,WAAU,iCACX,UAAA;AAAA,gBAAAxB,+BAAC,QAAA,EAAK,WAAU,6FAA6F5B,UAAAA,EAAE,iBAAiB,GAAE;AAAA,gBAClIoD,2BAAAA,KAAC,QAAA,EAAK,WAAU,+DAA+DmP,UAAAA;AAAAA,kBAAAA,OAAO6T,SAAS1a,QAAQ,CAAC;AAAA,kBAAE;AAAA,gBAAA,EAAA,CAAE;AAAA,cAAA,EAAA,CAChH;AAAA,YAAA,GACJ;AAAA,YACAtI,2BAAAA,KAAC,OAAA,EAAI,WAAU,6DACX,UAAA;AAAA,cAAAxB,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,MAAK,SACL,SAAQ,QACR,WAAU,uGACV,SAASuW,sBAERhb,UAAAA,EAAE,0BAA0B,EAAA,CACjC;AAAA,cACA4B,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,MAAK,SACL,SAAQ,QACR,WAAU,uGACV,SAASgiB,cAERzmB,UAAAA,EAAE,wBAAwB,EAAA,CAC/B;AAAA,cACA4B,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,MAAK,SACL,SAAQ,QACR,WAAU,uGACV,SAASoV,iBAER7Z,UAAAA,EAAE,uBAAuB,EAAA,CAC9B;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CAER,GACH,EAAA,CAET;AAAA,MAAA,EAAA,CACJ,GACH,GAET;AAAA,MAGAoD,2BAAAA,KAAC2a,GAAAA,QAAA,EAAO,MAAMiF,gBAAgB,cAAcC,mBACxC,UAAA;AAAA,QAAArhB,2BAAAA,IAACoc,GAAAA,eAAY,UAAA,eAAA,CAAY;AAAA,QACzBpc,2BAAAA,IAACqc,GAAAA,iBACG,UAAArc,+BAACsc,GAAAA,WAAA,EACG,OAAM,gBACN,OAAOgF,aACP,UAAWpf,CAAAA,QAAMqf,eAAerf,IAAEkZ,OAAO/gB,KAAK,GAC9C,aAAY,0BACZ,WAAS,MACT,WAAY6H,CAAAA,QAAM;AACd,cAAIA,IAAE0T,QAAQ,QAAS+O,aAAAA;AAAAA,QAC3B,GAAE,EAAA,CAEV;AAAA,wCACCpI,GAAAA,eAAA,EACG,UAAA;AAAA,UAAAvc,2BAAAA,IAAC6C,GAAAA,QAAA,EAAO,SAAQ,QAAO,SAAS,MAAMwe,kBAAkB,KAAK,GAAG,UAAA,SAAA,CAAM;AAAA,UACtErhB,2BAAAA,IAAC6C,GAAAA,QAAA,EAAO,SAAQ,UAAS,OAAM,WAAU,SAAS8hB,aAAa,UAAU,CAACrD,YAAY7kB,KAAAA,GAAQ,UAAA,OAAA,CAAI;AAAA,QAAA,EAAA,CACtG;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA,GACJ;AAAA,EAER;AAIA,WAAA6oB,cAAAtd,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,CAAA;AAAuB,UAAA;AAAA,MAAA7N;AAAAA,IAAAA,IAAA2N;AAAyB,QAAAK;AAAA,QAAAJ,SAAA5N,OAAA;AAC/BgO,WAAAmX,WAAWnlB,KAAK;AAAC4N,aAAA5N;AAAA4N,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAA9B,UAAAkR,OAAa9Q;AACb,UAAA;AAAA,MAAAzN;AAAAA,IAAAA,IAAiBC,uBAAAA;AAIF,UAAA+N,KAAAhO,SAAS,SAAM2qB,mBAAAA,OAAAC,SAAAD,mBAAAA,OAAAE;AAAgC,QAAA5c;AAAA,QAAAZ,EAAA,CAAA,MAAAkR,QAAAlR,SAAAW,IAAA;AAD1DC,WAAA7I,2BAAAA,IAAC0lB,gCACU,OAAA9c,IACDuQ,YACG,UAAA,QAER7N,UAAAA,QAAAA,CAWL;AAAYrD,aAAAkR;AAAAlR,aAAAW;AAAAX,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,WAhBZY;AAAAA,EAgBY;AArBpB,WAAAyC,QAAAtD,IAAA;AAUc,UAAA;AAAA,MAAA2d;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAA9d;AAA8C,WAC5ChI,2BAAAA,IAAA,UAAa,OAAA;AAAA,MAAA,GAAK2lB;AAAAA,MAAKI,iBAAmB;AAAA,IAAA,GACrCH,iBAAM7jB,KAAAikB,MAAA7hB,MACHnE,2CAAiB6lB,aAAY;AAAA,MAAAG;AAAAA,IAAAA,CAAS,GACjCA,UAAAA,KAAIjkB,KAAAohB,OAAAvN,QACD5V,4CAAoB8lB,cAAa;AAAA,MAAA3C;AAAAA,IAAAA,CAAU,EAAA,GAAhCvN,IACd,EAAA,GAHKzR,CAIV,CACH,EAAA,CACL;AAAA,EAAO;ACv+BvB,QAAM8hB,kBAAmC,CAAC,OAAO,UAAU,UAAU,UAAU,QAAQ;AACvF,QAAMC,eAAe,CAAC,UAAU,iBAAiB,QAAQ,OAAO;AAchE,QAAMC,iBAAiC,CACnC;AAAA,IACI3qB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,QAAQ;AAAA,IAChBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,GACA;AAAA,IACIhrB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,eAAe;AAAA,IACvBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,GACA;AAAA,IACIhrB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,eAAe;AAAA,IACvBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,GACA;AAAA,IACIhrB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,eAAe;AAAA,IACvBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,GACA;AAAA,IACIhrB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,eAAe;AAAA,IACvBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,GACA;AAAA,IACIhrB,IAAI;AAAA,IACJC,OAAO;AAAA,IACPgjB,aAAa;AAAA,IACb2H,YAAY;AAAA,IACZC,KAAK;AAAA,IACLC,YAAY;AAAA,IACZpX,OAAO,CAAC,eAAe;AAAA,IACvBqX,MAAM;AAAA,IACNC,YAAY;AAAA,EAChB,CAAC;AAGE,QAAMC,eAAeze,CAAAA,OAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,GAAA;AAAC,UAAA;AAAA,MAAAwe;AAAAA,MAAA3f;AAAAA,MAAA7I;AAAAA,MAAAyoB;AAAAA,MAAAC;AAAAA,IAAAA,IAAA5e;AAQzB,UAAA;AAAA,MAAA5J;AAAAA,IAAAA,IAAciD,oBAAAA;AACd,UAAA,CAAA3C,MAAAmoB,OAAA,IAAwB5lB,MAAAA,SAAS,EAAE;AACnC,UAAA,CAAA6lB,UAAAC,WAAA,IAAgC9lB,MAAAA,cAAc;AAC9C,UAAA,CAAA+lB,UAAAC,WAAA,IAAgChmB,MAAAA,SAAuC,YAAY;AACnF,UAAA,CAAAimB,SAAAC,UAAA,IAA8BlmB,MAAAA,SAAwB,KAAK;AAAE,QAAAoH;AAAA,QAAAJ,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAChBd,YAAC,QAAQ;AAACJ,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAAvD,UAAA,CAAAiH,OAAAkY,QAAA,IAA0BnmB,MAAAA,SAAmBoH,EAAU;AACvD,UAAA,CAAAgf,WAAAC,YAAA,IAAkCrmB,MAAAA,SAAiB,EAAE;AACrD,UAAA,CAAAsmB,WAAAC,YAAA,IAAkCvmB,MAAAA,SAAiB,EAAE;AAErD,UAAA,CAAAwmB,gBAAAC,iBAAA,IAA4CzmB,MAAAA,SAAiB,EAAE;AAAE,QAAA2H;AAAA,QAAAC;AAAA,QAAAZ,SAAAye,QAAA;AAEvD9d,WAAAA,MAAA;AAAA,YACF8d,QAAM;AACNG,kBAAQH,OAAMN,cAAe,EAAE;AAC/Ba,sBAAYP,OAAMJ,cAAe,YAAY;AAC7Ca,qBAAYT,OAAML,OAA0B,KAAK;AAEjD,gBAAAsB,eAAqBjB,OAAMxX,QACpByC,MAAAC,QAAc8U,OAAMxX,KAAM,IAAIwX,OAAMxX,QAAA,CAAUwX,OAAMxX,KAAA,IAAO,CAC3D,QAAQ;AACfkY,mBAASO,YAAwB;AAEjCL,uBAAaZ,OAAMH,QAAS,EAAE;AAC9BiB,uBAAad,OAAMF,cAAe,EAAE;AAAA,QAAC,OAAA;AAErCK,kBAAQ,EAAE;AACVI,sBAAY,YAAY;AACxBE,qBAAW,KAAK;AAChBC,mBAAQ,CAAE,QAAQ,CAAC;AACnBE,uBAAa,EAAE;AACfE,uBAAa,EAAE;AACfE,4BAAkB,EAAE;AAAA,QAAC;AAAA,MAAA;AAE1B7e,YAAC6d,MAAM;AAACze,aAAAye;AAAAze,aAAAW;AAAAX,aAAAY;AAAAA,IAAA,OAAA;AAAAD,WAAAX,EAAA,CAAA;AAAAY,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAtBX2G,UAAAA,UAAUhG,IAsBPC,EAAQ;AAAC,QAAAC;AAAA,QAAAb,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEeL,WAAA8e,CAAAA,aAAA;AACvB,cAAAC,SAAe1B,eAAAhoB,KAAA+f,CAAAA,MAAyBA,EAAC1iB,OAAQosB,QAAQ;AAAE,YAAA,CACtDC,QAAM;AAAA;AAAA,QAAA;AAEXH,0BAAkBE,QAAQ;AAC1Bf,gBAAQgB,OAAMzB,UAAW;AACzBa,oBAAYY,OAAMvB,UAAW;AAC7Ba,mBAAWU,OAAMxB,GAAI;AACrBe,iBAASS,OAAM3Y,KAAM;AACrBoY,qBAAaO,OAAMtB,IAAK;AACxBiB,qBAAaK,OAAMrB,UAAW;AAAA,MAAC;AAClCve,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAXD,UAAA6f,qBAA2Bhf;AAa3B,UAAAif,YAAkBb,YAAY,SAASA,YAAY,YAAYA,YAAY;AAAS,QAAAne;AAAA,QAAAd,EAAA,CAAA,MAAA+e,YAAA/e,EAAA,CAAA,MAAAsf,aAAAtf,EAAA,CAAA,MAAAif,WAAAjf,EAAA,CAAA,MAAAvJ,QAAAuJ,EAAA,CAAA,MAAA0e,UAAA1e,EAAA,EAAA,MAAAiH,SAAAjH,EAAA,EAAA,MAAA8f,aAAA9f,UAAAof,WAAA;AAEjEte,WAAAA,MAAA;AACf4d,eAAM;AAAA,UAAAP,YACU1nB;AAAAA,UAAI4nB,YACJU;AAAAA,UAAQX,KACfa;AAAAA,UAAOhY;AAAAA,UAAAqX,MAENc;AAAAA,UAASb,YACHuB,YAAYR,YAAS;AAAA,QAAA,CACpC;AAAA,MAAC;AACLtf,aAAA+e;AAAA/e,aAAAsf;AAAAtf,aAAAif;AAAAjf,aAAAvJ;AAAAuJ,aAAA0e;AAAA1e,cAAAiH;AAAAjH,cAAA8f;AAAA9f,cAAAof;AAAApf,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AATD,UAAA+f,aAAmBjf;AASjB,QAAAC;AAAA,QAAAf,EAAA,EAAA,MAAAye,UAAAze,UAAA7J,GAAA;AAMoB4K,WAAA0d,SAAStoB,EAAE,oBAAoB,IAAIA,EAAE,sBAAsB;AAAC6J,cAAAye;AAAAze,cAAA7J;AAAA6J,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,UAAAe,IAAA;AAAlEC,mDAAMD,UAAAA,GAAAA,CAA6D;AAAMf,cAAAe;AAAAf,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,UAAA7J,GAAA;AAEpEgL,WAAAhL,EAAE,8BAA8B;AAAC6J,cAAA7J;AAAA6J,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoB;AAAA,QAAApB,EAAA,EAAA,MAAAlB,UAAAkB,UAAA/J,OAAA;AAAEmL,WAAA7H,2BAAAA,KAAA,QAAA,EAAgB,WAAA,oFAAoFuF,UAAAA;AAAAA,QAAAA;AAAAA,QAAO;AAAA,QAAE7I;AAAAA,MAAAA,GAAM;AAAO+J,cAAAlB;AAAAkB,cAAA/J;AAAA+J,cAAAoB;AAAAA,IAAA,OAAA;AAAAA,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAArB,EAAA,EAAA,MAAAmB,MAAAnB,UAAAoB,IAAA;AADlKC,YAAA9H,2BAAAA,KAAA,OAAA,EAAe,WAAA,4FACV4H,UAAAA;AAAAA,QAAAA;AAAAA,QAAkC;AAAA,QAACC;AAAAA,MAAAA,GACxC;AAAMpB,cAAAmB;AAAAnB,cAAAoB;AAAApB,cAAAqB;AAAAA,IAAA,OAAA;AAAAA,YAAArB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAqB,OAAArB,UAAAgB,IAAA;AAJVM,4CAAA,OAAA,EACIN,UAAAA;AAAAA,QAAAA;AAAAA,QACAK;AAAAA,MAAAA,GAGJ;AAAMrB,cAAAqB;AAAArB,cAAAgB;AAAAhB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACNK,YAAAxJ,2BAAAA,IAAC2B,eAAA,EAAgB,MAAA,SAAiB,SAAA,MAAMolB,gBAAgB,GACpD,UAAA/mB,2BAAAA,IAACioB,GAAAA,iBAAA,EAAqB,MAAA,SAAO,GACjC;AAAahgB,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,UAAAsB,KAAA;AATjBG,4CAAC0S,GAAAA,aAAA,EAAsB,WAAA,4CAAmD,SAAA,MACtE7S,UAAAA;AAAAA,QAAAA;AAAAA,QAMAC;AAAAA,MAAAA,GAGJ;AAAcvB,cAAAsB;AAAAtB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAIQQ,YAAA1J,GAAAA,IAAI,sHAAoHwB,qBAAoB;AAACwG,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2B;AAAA,QAAA3B,EAAA,EAAA,MAAAye,UAAAze,UAAAwf,kBAAAxf,EAAA,EAAA,MAAA7J,GAAA;AAG1JwL,YAAA,CAAC8c,UACFllB,2BAAAA,KAAA,OAAA,EAAe,WAAA,uIACX,UAAA;AAAA,QAAAxB,2BAAAA,IAAC0B,GAAAA,cAAmB,SAAA,WAAoB,WAAA,iEAAiEtD,UAAAA,EAAE,wBAAwB,GAAE;AAAA,uCACpI8pB,GAAAA,QAAA,EACQ,MAAA,SACET,OAAAA,gBACQK,mCACN,UAAA,gBACI,aAAA1pB,EAAE,+BAA+B,GACpC,WAAA,gCAET+nB,UAAAA,eAAApkB,IAAAuJ,OAOA,EAAA,CACL;AAAA,MAAA,GACJ;AACCrD,cAAAye;AAAAze,cAAAwf;AAAAxf,cAAA7J;AAAA6J,cAAA2B;AAAAA,IAAA,OAAA;AAAAA,YAAA3B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,UAAA7J,GAAA;AAK+FyL,YAAAzL,EAAE,oBAAoB;AAAC6J,cAAA7J;AAAA6J,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8B;AAAA,QAAA9B,UAAA4B,KAAA;AAA/GE,2CAACrI,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,gDAAgDmI,UAAAA,KAAwB;AAAa5B,cAAA4B;AAAA5B,cAAA8B;AAAAA,IAAA,OAAA;AAAAA,YAAA9B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAA/B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAI/Ga,YAAA9H,CAAAA,MAAO2kB,QAAQ3kB,EAACkZ,OAAA/gB,KAAa;AAAC4N,cAAA+B;AAAAA,IAAA,OAAA;AAAAA,YAAA/B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgC;AAAA,QAAAhC,UAAA7J,GAAA;AAC3B6L,YAAA7L,EAAE,gCAAgC;AAAC6J,cAAA7J;AAAA6J,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiC;AAAA,QAAAjC,EAAA,EAAA,MAAAvJ,QAAAuJ,UAAAgC,KAAA;AAJpDC,YAAAlK,2BAAAA,IAACsc,gBAEU5d,OAAAA,MACG,UAAAsL,KACG,aAAAC,KACH,WAAA,SAAA,CAAQ;AACpBhC,cAAAvJ;AAAAuJ,cAAAgC;AAAAhC,cAAAiC;AAAAA,IAAA,OAAA;AAAAA,YAAAjC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkC;AAAA,QAAAlC,EAAA,EAAA,MAAA8B,OAAA9B,UAAAiC,KAAA;AARNC,YAAA3I,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACXuI,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,MAAAA,GAOJ;AAAMjC,cAAA8B;AAAA9B,cAAAiC;AAAAjC,cAAAkC;AAAAA,IAAA,OAAA;AAAAA,YAAAlC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmC;AAAA,QAAAnC,UAAA7J,GAAA;AAKGgM,YAAAhM,EAAE,wBAAwB;AAAC6J,cAAA7J;AAAA6J,cAAAmC;AAAAA,IAAA,OAAA;AAAAA,YAAAnC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoC;AAAA,QAAApC,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAAEkB,YAAArK,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6HAA4H,UAAA,MAAE;AAAOiI,cAAAoC;AAAAA,IAAA,OAAA;AAAAA,YAAApC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqC;AAAA,QAAArC,UAAAmC,KAAA;AADvLE,YAAA9I,2BAAAA,KAACE,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,gDACnC0I,UAAAA;AAAAA,QAAAA;AAAAA,QAA4B;AAAA,QAACC;AAAAA,MAAAA,GAClC;AAAapC,cAAAmC;AAAAnC,cAAAqC;AAAAA,IAAA,OAAA;AAAAA,YAAArC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsC;AAAA,QAAAtC,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGMoB,YAAA0I,CAAAA,QAASgU,YAAYhU,GAAmC;AAAChL,cAAAsC;AAAAA,IAAA,OAAA;AAAAA,YAAAtC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuC;AAAA,QAAAvC,UAAA7J,GAAA;AAK5CoM,YAAApM,EAAE,0BAA0B;AAAC6J,cAAA7J;AAAA6J,cAAAuC;AAAAA,IAAA,OAAA;AAAAA,YAAAvC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwC;AAAA,QAAAxC,UAAAuC,KAAA;AAAjDC,YAAAzK,2BAAAA,IAAA,QAAA,EAAgB,WAAA,IAAIwK,UAAAA,KAA8B;AAAOvC,cAAAuC;AAAAvC,cAAAwC;AAAAA,IAAA,OAAA;AAAAA,YAAAxC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyC;AAAA,QAAAzC,UAAA7J,GAAA;AACoBsM,YAAAtM,EAAE,+BAA+B;AAAC6J,cAAA7J;AAAA6J,cAAAyC;AAAAA,IAAA,OAAA;AAAAA,YAAAzC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0C;AAAA,QAAA1C,UAAAyC,KAAA;AAA/GC,YAAA3K,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6DAA6D0K,UAAAA,KAAmC;AAAOzC,cAAAyC;AAAAzC,cAAA0C;AAAAA,IAAA,OAAA;AAAAA,YAAA1C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2C;AAAA,QAAA3C,EAAA,EAAA,MAAAwC,OAAAxC,UAAA0C,KAAA;AAH/HC,2CAACud,eAAA,EAAiB,OAAA,cACd,UAAA3mB,2BAAAA,KAAA,OAAA,EAAe,WAAA,2BACXiJ,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,MAAAA,EAAAA,CACJ,EAAA,CACJ;AAAa1C,cAAAwC;AAAAxC,cAAA0C;AAAA1C,cAAA2C;AAAAA,IAAA,OAAA;AAAAA,YAAA3C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4C;AAAA,QAAA5C,UAAA7J,GAAA;AAGeyM,YAAAzM,EAAE,2BAA2B;AAAC6J,cAAA7J;AAAA6J,cAAA4C;AAAAA,IAAA,OAAA;AAAAA,YAAA5C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8C;AAAA,QAAA9C,UAAA4C,KAAA;AAAlDE,YAAA/K,2BAAAA,IAAA,QAAA,EAAgB,WAAA,IAAI6K,UAAAA,KAA+B;AAAO5C,cAAA4C;AAAA5C,cAAA8C;AAAAA,IAAA,OAAA;AAAAA,YAAA9C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+C;AAAA,QAAA/C,UAAA7J,GAAA;AACmB4M,YAAA5M,EAAE,gCAAgC;AAAC6J,cAAA7J;AAAA6J,cAAA+C;AAAAA,IAAA,OAAA;AAAAA,YAAA/C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgD;AAAA,QAAAhD,UAAA+C,KAAA;AAAhHC,YAAAjL,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6DAA6DgL,UAAAA,KAAoC;AAAO/C,cAAA+C;AAAA/C,cAAAgD;AAAAA,IAAA,OAAA;AAAAA,YAAAhD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiD;AAAA,QAAAjD,EAAA,EAAA,MAAA8C,OAAA9C,UAAAgD,KAAA;AAHhIC,2CAACid,eAAA,EAAiB,OAAA,eACd,UAAA3mB,2BAAAA,KAAA,OAAA,EAAe,WAAA,2BACXuJ,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,MAAAA,EAAAA,CACJ,EAAA,CACJ;AAAahD,cAAA8C;AAAA9C,cAAAgD;AAAAhD,cAAAiD;AAAAA,IAAA,OAAA;AAAAA,YAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmD;AAAA,QAAAnD,EAAA,EAAA,MAAA+e,YAAA/e,UAAA2C,OAAA3C,EAAA,EAAA,MAAAiD,KAAA;AAhBjBE,4CAAC8c,WAAA,EACUlB,OAAAA,UACQ,eAAAzc,KACN,UAAA,gBAETK,UAAAA;AAAAA,QAAAA;AAAAA,QAMAM;AAAAA,MAAAA,GAMJ;AAASjD,cAAA+e;AAAA/e,cAAA2C;AAAA3C,cAAAiD;AAAAjD,cAAAmD;AAAAA,IAAA,OAAA;AAAAA,YAAAnD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoD;AAAA,QAAApD,EAAA,EAAA,MAAAqC,OAAArC,UAAAmD,KAAA;AArBbC,YAAA7J,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACX8I,UAAAA;AAAAA,QAAAA;AAAAA,QAGAc;AAAAA,MAAAA,GAkBJ;AAAMnD,cAAAqC;AAAArC,cAAAmD;AAAAnD,cAAAoD;AAAAA,IAAA,OAAA;AAAAA,YAAApD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsD;AAAA,QAAAtD,EAAA,EAAA,MAAAkC,OAAAlC,UAAAoD,KAAA;AApCVE,YAAA/J,2BAAAA,KAAA,OAAA,EAAe,WAAA,kDAEX2I,UAAAA;AAAAA,QAAAA;AAAAA,QAYAkB;AAAAA,MAAAA,GAuBJ;AAAMpD,cAAAkC;AAAAlC,cAAAoD;AAAApD,cAAAsD;AAAAA,IAAA,OAAA;AAAAA,YAAAtD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmgB;AAAA,QAAAngB,UAAA7J,GAAA;AAKGgqB,YAAAhqB,EAAE,uBAAuB;AAAC6J,cAAA7J;AAAA6J,cAAAmgB;AAAAA,IAAA,OAAA;AAAAA,YAAAngB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAogB;AAAA,QAAApgB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAAEkf,YAAAroB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6HAA4H,UAAA,OAAG;AAAOiI,cAAAogB;AAAAA,IAAA,OAAA;AAAAA,YAAApgB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqgB;AAAA,QAAArgB,UAAAmgB,KAAA;AADvLE,YAAA9mB,2BAAAA,KAACE,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,gDACnC0mB,UAAAA;AAAAA,QAAAA;AAAAA,QAA2B;AAAA,QAACC;AAAAA,MAAAA,GACjC;AAAapgB,cAAAmgB;AAAAngB,cAAAqgB;AAAAA,IAAA,OAAA;AAAAA,YAAArgB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsgB;AAAA,QAAAtgB,UAAAif,SAAA;AAERqB,YAAAtC,gBAAAlkB,IAAAskB,CAAAA,QACGrmB,2BAAAA,IAAC6C,aAEQ,MAAA,SACI,SAAAqkB,YAAYb,MAAM,WAAW,QAChC,OAAA,WACG,SAAA,MAAMc,WAAWd,GAAG,GACnB,WAAA,oCAGd,CACH;AAACpe,cAAAif;AAAAjf,cAAAsgB;AAAAA,IAAA,OAAA;AAAAA,YAAAtgB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAugB;AAAA,QAAAvgB,UAAAsgB,KAAA;AAZNC,YAAAxoB,2BAAAA,IAAA,OAAA,EAAe,WAAA,0BACVuoB,UAAAA,KAYL;AAAMtgB,cAAAsgB;AAAAtgB,cAAAugB;AAAAA,IAAA,OAAA;AAAAA,YAAAvgB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwgB;AAAA,QAAAxgB,EAAA,EAAA,MAAAqgB,OAAArgB,UAAAugB,KAAA;AAjBVC,YAAAjnB,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACX8mB,UAAAA;AAAAA,QAAAA;AAAAA,QAGAE;AAAAA,MAAAA,GAcJ;AAAMvgB,cAAAqgB;AAAArgB,cAAAugB;AAAAvgB,eAAAwgB;AAAAA,IAAA,OAAA;AAAAA,YAAAxgB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAygB;AAAA,QAAAzgB,WAAA7J,GAAA;AAKGsqB,YAAAtqB,EAAE,4BAA4B;AAAC6J,eAAA7J;AAAA6J,eAAAygB;AAAAA,IAAA,OAAA;AAAAA,YAAAzgB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0gB;AAAA,QAAA1gB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAAEwf,YAAA3oB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6HAA4H,UAAA,MAAE;AAAOiI,eAAA0gB;AAAAA,IAAA,OAAA;AAAAA,YAAA1gB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2gB;AAAA,QAAA3gB,WAAAygB,KAAA;AAD3LE,YAAApnB,2BAAAA,KAACE,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,gDACnCgnB,UAAAA;AAAAA,QAAAA;AAAAA,QAAgC;AAAA,QAACC;AAAAA,MAAAA,GACtC;AAAa1gB,eAAAygB;AAAAzgB,eAAA2gB;AAAAA,IAAA,OAAA;AAAAA,YAAA3gB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4gB;AAAA,QAAA5gB,WAAA7J,GAAA;AAKIyqB,YAAAzqB,EAAE,iCAAiC;AAAC6J,eAAA7J;AAAA6J,eAAA4gB;AAAAA,IAAA,OAAA;AAAAA,YAAA5gB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6gB;AAAA,QAAA7gB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEhD2f,YAAA5C,aAAAnkB,IAAAgnB,MAIA;AAAC9gB,eAAA6gB;AAAAA,IAAA,OAAA;AAAAA,YAAA7gB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+gB;AAAA,QAAA/gB,EAAA,GAAA,MAAAiH,SAAAjH,WAAA4gB,KAAA;AAVNG,YAAAhpB,2BAAAA,IAACipB,GAAAA,aAAA,EACQ,MAAA,SACE/Z,OAAAA,OACQkY,eAAAA,UACF,aAAAyB,KAEZC,UAAAA,IAAAA,CAKL;AAAc7gB,eAAAiH;AAAAjH,eAAA4gB;AAAA5gB,eAAA+gB;AAAAA,IAAA,OAAA;AAAAA,YAAA/gB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAihB;AAAA,QAAAjhB,EAAA,GAAA,MAAA2gB,OAAA3gB,WAAA+gB,KAAA;AAflBE,YAAA1nB,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACXonB,UAAAA;AAAAA,QAAAA;AAAAA,QAGAI;AAAAA,MAAAA,GAYJ;AAAM/gB,eAAA2gB;AAAA3gB,eAAA+gB;AAAA/gB,eAAAihB;AAAAA,IAAA,OAAA;AAAAA,YAAAjhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkhB;AAAA,QAAAlhB,EAAA,GAAA,MAAA2B,OAAA3B,EAAA,GAAA,MAAAsD,OAAAtD,EAAA,GAAA,MAAAwgB,OAAAxgB,WAAAihB,KAAA;AAvGVC,YAAA3nB,2BAAAA,KAAC4nB,GAAAA,OAAA,EAAiB,WAAAzf,KAGbC,UAAAA;AAAAA,QAAAA;AAAAA,QAuBD2B;AAAAA,QAwCAkd;AAAAA,QAqBAS;AAAAA,MAAAA,GAkBJ;AAAQjhB,eAAA2B;AAAA3B,eAAAsD;AAAAtD,eAAAwgB;AAAAxgB,eAAAihB;AAAAjhB,eAAAkhB;AAAAA,IAAA,OAAA;AAAAA,YAAAlhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAohB;AAAA,QAAAphB,EAAA,GAAA,MAAAif,WAAAjf,WAAA7J,KAAA6J,EAAA,GAAA,MAAAof,WAAA;AAIHgC,YAAAnC,YAAY,YACT1lB,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACX,UAAA;AAAA,QAAAA,2BAAAA,cAAe,WAAA,yBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC0B,GAAAA,cAAmB,SAAA,WAAoB,WAAA,gDAAgDtD,UAAAA,EAAE,0BAA0B,GAAE;AAAA,UACtH4B,+BAAC0B,GAAAA,cAAmB,SAAA,WAAoB,WAAA,kCAAkCtD,UAAAA,EAAE,+BAA+B,EAAA,CAAE;AAAA,QAAA,GACjH;AAAA,QACA4B,2BAAAA,aAAgB,WAAAC,OAAI,qEAAmEwB,GAAAA,kBAAoB,GACvG,yCAAC,cAAA,EACU4lB,OAAAA,WACG,UAAA9jB,CAAAA,MAAO+jB,aAAa/jB,KAAK,EAAE,GAC3B,UAAA,OACC,WAAA,KAAA,CAAI,EAAA,CAEvB;AAAA,MAAA,GACJ;AACH0E,eAAAif;AAAAjf,eAAA7J;AAAA6J,eAAAof;AAAApf,eAAAohB;AAAAA,IAAA,OAAA;AAAAA,YAAAphB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqhB;AAAA,QAAArhB,EAAA,GAAA,MAAAsf,aAAAtf,EAAA,GAAA,MAAAif,WAAAjf,EAAA,GAAA,MAAA8f,aAAA9f,WAAA7J,GAAA;AAGAkrB,YAAAvB,aACGvmB,gCAAA,OAAA,EAAe,WAAA,8BACX,UAAA;AAAA,QAAAA,2BAAAA,KAAA,OAAA,EAAe,WAAA,yBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC0B,GAAAA,cAAmB,SAAA,WAAoB,WAAA,gDAAgDtD,UAAAA,EAAE,0BAA0B,GAAE;AAAA,UACtH4B,+BAAC0B,GAAAA,cAAmB,SAAA,WAAoB,WAAA,kCAAkCtD,UAAAA,EAAE,+BAA+B,EAAA,CAAE;AAAA,QAAA,GACjH;AAAA,QACA4B,2BAAAA,aAAgB,WAAAC,GAAAA,IAAI,qEAAmEwB,qBAAoB,GACvG,UAAAzB,2BAAAA,IAAC,cAAA,EACUunB,kBACG,UAAAgC,CAAAA,QAAO/B,aAAajkB,OAAK,EAAE,GAC3B,UAAA,OACC,WAAA2jB,YAAY,SAAA,CAAQ,EAAA,CAEvC;AAAA,MAAA,GACJ;AACHjf,eAAAsf;AAAAtf,eAAAif;AAAAjf,eAAA8f;AAAA9f,eAAA7J;AAAA6J,eAAAqhB;AAAAA,IAAA,OAAA;AAAAA,YAAArhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAuhB;AAAA,QAAAvhB,EAAA,GAAA,MAAAohB,OAAAphB,WAAAqhB,KAAA;AAnCLE,YAAAhoB,2BAAAA,KAAA,OAAA,EAAe,WAAA,4BAEV6nB,UAAAA;AAAAA,QAAAA;AAAAA,QAkBAC;AAAAA,MAAAA,GAgBL;AAAMrhB,eAAAohB;AAAAphB,eAAAqhB;AAAArhB,eAAAuhB;AAAAA,IAAA,OAAA;AAAAA,YAAAvhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwhB;AAAA,QAAAxhB,EAAA,GAAA,MAAAkhB,OAAAlhB,WAAAuhB,KAAA;AAjJVC,YAAAzpB,2BAAAA,IAACqc,GAAAA,iBAAwB,WAAA,iFAA+F,eAAA,OACpH,UAAA7a,2BAAAA,KAAA,OAAA,EAAe,WAAA,qBACf2nB,UAAAA;AAAAA,QAAAA;AAAAA,QA2GAK;AAAAA,MAAAA,EAAAA,CAsCA,EAAA,CACJ;AAAgBvhB,eAAAkhB;AAAAlhB,eAAAuhB;AAAAvhB,eAAAwhB;AAAAA,IAAA,OAAA;AAAAA,YAAAxhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyhB;AAAA,QAAAzhB,WAAA7J,GAAA;AAIPsrB,YAAAtrB,EAAE,sBAAsB;AAAC6J,eAAA7J;AAAA6J,eAAAyhB;AAAAA,IAAA,OAAA;AAAAA,YAAAzhB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0hB;AAAA,QAAA1hB,EAAA,GAAA,MAAA2e,YAAA3e,WAAAyhB,KAAA;AAD9BC,YAAA3pB,2BAAAA,IAAC6C,GAAAA,QAAA,EAAY,MAAA,SAAgB,SAAA,QAAa,OAAA,WAAmB+jB,SAAAA,UACxD8C,UAAAA,IAAAA,CACL;AAASzhB,eAAA2e;AAAA3e,eAAAyhB;AAAAzhB,eAAA0hB;AAAAA,IAAA,OAAA;AAAAA,YAAA1hB,EAAA,GAAA;AAAA,IAAA;AAC4E,UAAA2hB,OAAClrB;AAAI,QAAAmrB;AAAA,QAAA5hB,WAAA7J,GAAA;AACrFyrB,YAAAzrB,EAAE,oBAAoB;AAAC6J,eAAA7J;AAAA6J,eAAA4hB;AAAAA,IAAA,OAAA;AAAAA,YAAA5hB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6hB;AAAA,QAAA7hB,EAAA,GAAA,MAAA+f,cAAA/f,WAAA2hB,OAAA3hB,EAAA,GAAA,MAAA4hB,KAAA;AAD5BC,YAAA9pB,2BAAAA,IAAC6C,GAAAA,QAAA,EAAY,MAAA,SAAgB,SAAA,UAAe,OAAA,WAAmBmlB,SAAAA,YAAsB,UAAA4B,KAChFC,UAAAA,KACL;AAAS5hB,eAAA+f;AAAA/f,eAAA2hB;AAAA3hB,eAAA4hB;AAAA5hB,eAAA6hB;AAAAA,IAAA,OAAA;AAAAA,YAAA7hB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8hB;AAAA,QAAA9hB,EAAA,GAAA,MAAA0hB,OAAA1hB,WAAA6hB,KAAA;AANbC,4CAACxN,kBAAA,EACGoN,UAAAA;AAAAA,QAAAA;AAAAA,QAGAG;AAAAA,MAAAA,GAGJ;AAAgB7hB,eAAA0hB;AAAA1hB,eAAA6hB;AAAA7hB,eAAA8hB;AAAAA,IAAA,OAAA;AAAAA,YAAA9hB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+hB;AAAA,QAAA/hB,WAAA7J,GAAA;AAKuC4rB,YAAA5rB,EAAE,0BAA0B;AAAC6J,eAAA7J;AAAA6J,eAAA+hB;AAAAA,IAAA,OAAA;AAAAA,YAAA/hB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgiB;AAAA,QAAAhiB,WAAA+hB,KAAA;AAAxEC,2CAACvoB,GAAAA,YAAA,EAAmB,SAAA,MAAe,WAAA,QAAQsoB,UAAAA,KAA8B;AAAa/hB,eAAA+hB;AAAA/hB,eAAAgiB;AAAAA,IAAA,OAAA;AAAAA,YAAAhiB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAiiB;AAAA,QAAAjiB,WAAA7J,GAAA;AAEjF8rB,YAAA9rB,EAAE,0BAA0B;AAAC6J,eAAA7J;AAAA6J,eAAAiiB;AAAAA,IAAA,OAAA;AAAAA,YAAAjiB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkiB;AAAA,QAAAliB,WAAAiiB,KAAA;AADlCC,YAAAnqB,2BAAAA,IAAC0B,eAAA,EAAqB,WAAA,qDACjBwoB,UAAAA,KACL;AAAajiB,eAAAiiB;AAAAjiB,eAAAkiB;AAAAA,IAAA,OAAA;AAAAA,YAAAliB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmiB;AAAA,QAAAniB,EAAA,GAAA,MAAAgiB,OAAAhiB,WAAAkiB,KAAA;AAJjBC,4CAAA,OAAA,EACIH,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,MAAAA,GAGJ;AAAMliB,eAAAgiB;AAAAhiB,eAAAkiB;AAAAliB,eAAAmiB;AAAAA,IAAA,OAAA;AAAAA,YAAAniB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAoiB;AAAA,QAAApiB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGgBkhB,YAAApqB,GAAAA,IAAI,kCAAgCwB,qBAAoB;AAACwG,eAAAoiB;AAAAA,IAAA,OAAA;AAAAA,YAAApiB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqiB;AAAA,QAAAriB,WAAA7J,GAAA;AACuBksB,YAAAlsB,EAAE,gCAAgC;AAAC6J,eAAA7J;AAAA6J,eAAAqiB;AAAAA,IAAA,OAAA;AAAAA,YAAAriB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAsiB;AAAA,QAAAtiB,WAAAqiB,KAAA;AAAjIC,2CAAC7oB,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,oDAAoD4oB,UAAAA,KAAoC;AAAariB,eAAAqiB;AAAAriB,eAAAsiB;AAAAA,IAAA,OAAA;AAAAA,YAAAtiB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAuiB;AAAA,QAAAviB,WAAA7J,GAAA;AAE1IosB,YAAApsB,EAAE,+BAA+B;AAAC6J,eAAA7J;AAAA6J,eAAAuiB;AAAAA,IAAA,OAAA;AAAAA,YAAAviB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwiB;AAAA,QAAAxiB,WAAAuiB,KAAA;AADvCC,2CAAC/oB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,qDACjC8oB,UAAAA,KACL;AAAaviB,eAAAuiB;AAAAviB,eAAAwiB;AAAAA,IAAA,OAAA;AAAAA,YAAAxiB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyiB;AAAA,QAAAziB,EAAA,GAAA,MAAAsiB,OAAAtiB,WAAAwiB,KAAA;AAJjBC,4CAACtB,GAAAA,OAAA,EAAiB,WAAAiB,KACdE,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,MAAAA,GAGJ;AAAQxiB,eAAAsiB;AAAAtiB,eAAAwiB;AAAAxiB,eAAAyiB;AAAAA,IAAA,OAAA;AAAAA,YAAAziB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0iB;AAAA,QAAA1iB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEUwhB,YAAA1qB,GAAAA,IAAI,kCAAgCwB,qBAAoB;AAACwG,eAAA0iB;AAAAA,IAAA,OAAA;AAAAA,YAAA1iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2iB;AAAA,QAAA3iB,WAAA7J,GAAA;AACuBwsB,YAAAxsB,EAAE,gCAAgC;AAAC6J,eAAA7J;AAAA6J,eAAA2iB;AAAAA,IAAA,OAAA;AAAAA,YAAA3iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4iB;AAAA,QAAA5iB,WAAA2iB,KAAA;AAAjIC,2CAACnpB,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,oDAAoDkpB,UAAAA,KAAoC;AAAa3iB,eAAA2iB;AAAA3iB,eAAA4iB;AAAAA,IAAA,OAAA;AAAAA,YAAA5iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6iB;AAAA,QAAA7iB,WAAA7J,GAAA;AAE1I0sB,YAAA1sB,EAAE,+BAA+B;AAAC6J,eAAA7J;AAAA6J,eAAA6iB;AAAAA,IAAA,OAAA;AAAAA,YAAA7iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8iB;AAAA,QAAA9iB,WAAA6iB,KAAA;AADvCC,2CAACrpB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,0DACjCopB,UAAAA,KACL;AAAa7iB,eAAA6iB;AAAA7iB,eAAA8iB;AAAAA,IAAA,OAAA;AAAAA,YAAA9iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+iB;AAAA,QAAA/iB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEL6hB,YAAAhrB,2BAAAA,IAAA,YAAQ,UAAA,SAAA,CAAM;AAASiI,eAAA+iB;AAAAA,IAAA,OAAA;AAAAA,YAAA/iB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgjB;AAAA,QAAAhjB,WAAA7J,GAAA;AAAG6sB,YAAA7sB,EAAE,gCAAgC;AAAC6J,eAAA7J;AAAA6J,eAAAgjB;AAAAA,IAAA,OAAA;AAAAA,YAAAhjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAijB;AAAA,QAAAjjB,WAAAgjB,KAAA;AAAjEC,4CAAA,MAAA,EAAIF,UAAAA;AAAAA,QAAAA;AAAAA,QAAuB;AAAA,QAAGC;AAAAA,MAAAA,GAAoC;AAAKhjB,eAAAgjB;AAAAhjB,eAAAijB;AAAAA,IAAA,OAAA;AAAAA,YAAAjjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkjB;AAAA,QAAAljB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACnEgiB,YAAAnrB,2BAAAA,IAAA,YAAQ,UAAA,gBAAA,CAAa;AAASiI,eAAAkjB;AAAAA,IAAA,OAAA;AAAAA,YAAAljB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmjB;AAAA,QAAAnjB,WAAA7J,GAAA;AAAGgtB,YAAAhtB,EAAE,uCAAuC;AAAC6J,eAAA7J;AAAA6J,eAAAmjB;AAAAA,IAAA,OAAA;AAAAA,YAAAnjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAojB;AAAA,QAAApjB,WAAAmjB,KAAA;AAA/EC,4CAAA,MAAA,EAAIF,UAAAA;AAAAA,QAAAA;AAAAA,QAA8B;AAAA,QAAGC;AAAAA,MAAAA,GAA2C;AAAKnjB,eAAAmjB;AAAAnjB,eAAAojB;AAAAA,IAAA,OAAA;AAAAA,YAAApjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqjB;AAAA,QAAArjB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACjFmiB,YAAAtrB,2BAAAA,IAAA,YAAQ,UAAA,OAAA,CAAI;AAASiI,eAAAqjB;AAAAA,IAAA,OAAA;AAAAA,YAAArjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAsjB;AAAA,QAAAtjB,WAAA7J,GAAA;AAAGmtB,YAAAntB,EAAE,8BAA8B;AAAC6J,eAAA7J;AAAA6J,eAAAsjB;AAAAA,IAAA,OAAA;AAAAA,YAAAtjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAujB;AAAA,QAAAvjB,WAAAsjB,KAAA;AAA7DC,4CAAA,MAAA,EAAIF,UAAAA;AAAAA,QAAAA;AAAAA,QAAqB;AAAA,QAAGC;AAAAA,MAAAA,GAAkC;AAAKtjB,eAAAsjB;AAAAtjB,eAAAujB;AAAAA,IAAA,OAAA;AAAAA,YAAAvjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwjB;AAAA,QAAAxjB,EAAA,GAAA,MAAAijB,OAAAjjB,WAAAojB,OAAApjB,EAAA,GAAA,MAAAujB,KAAA;AAHvEC,oDAAc,WAAA,sFACVP,UAAAA;AAAAA,QAAAA;AAAAA,QACAG;AAAAA,QACAG;AAAAA,MAAAA,GACJ;AAAKvjB,eAAAijB;AAAAjjB,eAAAojB;AAAApjB,eAAAujB;AAAAvjB,eAAAwjB;AAAAA,IAAA,OAAA;AAAAA,YAAAxjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAyjB;AAAA,QAAAzjB,EAAA,GAAA,MAAA4iB,OAAA5iB,WAAA8iB,OAAA9iB,EAAA,GAAA,MAAAwjB,KAAA;AATTC,YAAAlqB,2BAAAA,KAAC4nB,GAAAA,OAAA,EAAiB,WAAAuB,KACdE,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAGAU;AAAAA,MAAAA,GAKJ;AAAQxjB,eAAA4iB;AAAA5iB,eAAA8iB;AAAA9iB,eAAAwjB;AAAAxjB,eAAAyjB;AAAAA,IAAA,OAAA;AAAAA,YAAAzjB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0jB;AAAA,QAAA1jB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEUwiB,YAAA1rB,GAAAA,IAAI,kCAAgCwB,qBAAoB;AAACwG,eAAA0jB;AAAAA,IAAA,OAAA;AAAAA,YAAA1jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2jB;AAAA,QAAA3jB,WAAA7J,GAAA;AACuBwtB,YAAAxtB,EAAE,gCAAgC;AAAC6J,eAAA7J;AAAA6J,eAAA2jB;AAAAA,IAAA,OAAA;AAAAA,YAAA3jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4jB;AAAA,QAAA5jB,WAAA2jB,KAAA;AAAjIC,2CAACnqB,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,oDAAoDkqB,UAAAA,KAAoC;AAAa3jB,eAAA2jB;AAAA3jB,eAAA4jB;AAAAA,IAAA,OAAA;AAAAA,YAAA5jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6jB;AAAA,QAAA7jB,WAAA7J,GAAA;AAE1I0tB,YAAA1tB,EAAE,+BAA+B;AAAC6J,eAAA7J;AAAA6J,eAAA6jB;AAAAA,IAAA,OAAA;AAAAA,YAAA7jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8jB;AAAA,QAAA9jB,WAAA6jB,KAAA;AADvCC,2CAACrqB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,0DACjCoqB,UAAAA,KACL;AAAa7jB,eAAA6jB;AAAA7jB,eAAA8jB;AAAAA,IAAA,OAAA;AAAAA,YAAA9jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+jB;AAAA,QAAA/jB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACb6iB,2CAAA,OAAA,EAAgB,WAAA/rB,GAAAA,IAAI,kFAAgFwB,qBAAoB,GAAG,UAAA,iCAE3H;AAAMwG,eAAA+jB;AAAAA,IAAA,OAAA;AAAAA,YAAA/jB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgkB;AAAA,QAAAhkB,WAAA7J,GAAA;AAED6tB,YAAA7tB,EAAE,kCAAkC;AAAC6J,eAAA7J;AAAA6J,eAAAgkB;AAAAA,IAAA,OAAA;AAAAA,YAAAhkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAikB;AAAA,QAAAjkB,WAAAgkB,KAAA;AAD1CC,2CAACxqB,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,qDACnCuqB,UAAAA,KACL;AAAahkB,eAAAgkB;AAAAhkB,eAAAikB;AAAAA,IAAA,OAAA;AAAAA,YAAAjkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkkB;AAAA,QAAAlkB,EAAA,GAAA,MAAA4jB,OAAA5jB,WAAA8jB,OAAA9jB,EAAA,GAAA,MAAAikB,KAAA;AAVjBC,YAAA3qB,2BAAAA,KAAC4nB,GAAAA,OAAA,EAAiB,WAAAuC,KACdE,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAGAC;AAAAA,QAGAE;AAAAA,MAAAA,GAGJ;AAAQjkB,eAAA4jB;AAAA5jB,eAAA8jB;AAAA9jB,eAAAikB;AAAAjkB,eAAAkkB;AAAAA,IAAA,OAAA;AAAAA,YAAAlkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmkB;AAAA,QAAAnkB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEUijB,YAAAnsB,GAAAA,IAAI,kCAAgCwB,qBAAoB;AAACwG,eAAAmkB;AAAAA,IAAA,OAAA;AAAAA,YAAAnkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAokB;AAAA,QAAApkB,WAAA7J,GAAA;AACuBiuB,aAAAjuB,EAAE,gCAAgC;AAAC6J,eAAA7J;AAAA6J,eAAAokB;AAAAA,IAAA,OAAA;AAAAA,aAAApkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAqkB;AAAA,QAAArkB,WAAAokB,MAAA;AAAjIC,4CAAC5qB,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,oDAAoD2qB,UAAAA,MAAoC;AAAapkB,eAAAokB;AAAApkB,eAAAqkB;AAAAA,IAAA,OAAA;AAAAA,aAAArkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAskB;AAAA,QAAAtkB,WAAA7J,GAAA;AAE1ImuB,aAAAnuB,EAAE,+BAA+B;AAAC6J,eAAA7J;AAAA6J,eAAAskB;AAAAA,IAAA,OAAA;AAAAA,aAAAtkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAukB;AAAA,QAAAvkB,WAAAskB,MAAA;AADvCC,4CAAC9qB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,0DACjC6qB,UAAAA,MACL;AAAatkB,eAAAskB;AAAAtkB,eAAAukB;AAAAA,IAAA,OAAA;AAAAA,aAAAvkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwkB;AAAA,QAAAxkB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AACbsjB,4CAAA,OAAA,EAAgB,WAAAxsB,GAAAA,IAAI,kFAAgFwB,qBAAoB,GAAG,UAAA,iCAE3H;AAAMwG,eAAAwkB;AAAAA,IAAA,OAAA;AAAAA,aAAAxkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAykB;AAAA,QAAAzkB,WAAA7J,GAAA;AAEDsuB,aAAAtuB,EAAE,kCAAkC;AAAC6J,eAAA7J;AAAA6J,eAAAykB;AAAAA,IAAA,OAAA;AAAAA,aAAAzkB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0kB;AAAA,QAAA1kB,WAAAykB,MAAA;AAD1CC,4CAACjrB,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,qDACnCgrB,UAAAA,MACL;AAAazkB,eAAAykB;AAAAzkB,eAAA0kB;AAAAA,IAAA,OAAA;AAAAA,aAAA1kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2kB;AAAA,QAAA3kB,EAAA,GAAA,MAAAqkB,QAAArkB,WAAAukB,QAAAvkB,EAAA,GAAA,MAAA0kB,MAAA;AAVjBC,aAAAprB,2BAAAA,KAAC4nB,GAAAA,OAAA,EAAiB,WAAAgD,KACdE,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAGAC;AAAAA,QAGAE;AAAAA,MAAAA,GAGJ;AAAQ1kB,eAAAqkB;AAAArkB,eAAAukB;AAAAvkB,eAAA0kB;AAAA1kB,eAAA2kB;AAAAA,IAAA,OAAA;AAAAA,aAAA3kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4kB;AAAA,QAAA5kB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEU0jB,aAAA5sB,GAAAA,IAAI,0EAAwEwB,qBAAoB;AAACwG,eAAA4kB;AAAAA,IAAA,OAAA;AAAAA,aAAA5kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6kB;AAAA,QAAA7kB,WAAA7J,GAAA;AACjB0uB,aAAA1uB,EAAE,oCAAoC;AAAC6J,eAAA7J;AAAA6J,eAAA6kB;AAAAA,IAAA,OAAA;AAAAA,aAAA7kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8kB;AAAA,QAAA9kB,WAAA6kB,MAAA;AAArIC,4CAACrrB,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,oDAAoDorB,UAAAA,MAAwC;AAAa7kB,eAAA6kB;AAAA7kB,eAAA8kB;AAAAA,IAAA,OAAA;AAAAA,aAAA9kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+kB;AAAA,QAAA/kB,WAAA7J,GAAA;AAE9I4uB,aAAA5uB,EAAE,mCAAmC;AAAC6J,eAAA7J;AAAA6J,eAAA+kB;AAAAA,IAAA,OAAA;AAAAA,aAAA/kB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAglB;AAAA,QAAAhlB,WAAA+kB,MAAA;AAD3CC,4CAACvrB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,qDACjCsrB,UAAAA,MACL;AAAa/kB,eAAA+kB;AAAA/kB,eAAAglB;AAAAA,IAAA,OAAA;AAAAA,aAAAhlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAilB;AAAA,QAAAjlB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGL+jB,aAAAltB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,mFAAkF,UAAA,cAAU;AAAOiI,eAAAilB;AAAAA,IAAA,OAAA;AAAAA,aAAAjlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAklB;AAAA,QAAAC;AAAA,QAAAnlB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AADvHgkB,6CAAA,MAAA,EACID,UAAAA;AAAAA,QAAAA;AAAAA,QACA1rB,2BAAAA,eAAgB,WAAA,gBAAe,UAAA;AAAA,UAAA;AAAA,UAAgDxB,2BAAAA,cAAgB,WAAA,sEAAqE,UAAA,uBAAA,CAAoB;AAAA,QAAA,EAAA,CAAO;AAAA,MAAA,GACnM;AAEIotB,aAAAptB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,mFAAkF,UAAA,cAAU;AAAOiI,eAAAklB;AAAAllB,eAAAmlB;AAAAA,IAAA,OAAA;AAAAD,aAAAllB,EAAA,GAAA;AAAAmlB,aAAAnlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAolB;AAAA,QAAAC;AAAA,QAAArlB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AADvHkkB,6CAAA,MAAA,EACID,UAAAA;AAAAA,QAAAA;AAAAA,QACA5rB,2BAAAA,KAAA,QAAA,EAAgB,WAAA,gBAAe,UAAA;AAAA,UAAA;AAAA,UAA+ExB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,sEAAqE,UAAA,+CAAA,CAAkD;AAAA,QAAA,EAAA,CAAO;AAAA,MAAA,GAChQ;AAEIstB,aAAAttB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,mFAAkF,UAAA,gBAAY;AAAOiI,eAAAolB;AAAAplB,eAAAqlB;AAAAA,IAAA,OAAA;AAAAD,aAAAplB,EAAA,GAAA;AAAAqlB,aAAArlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAslB;AAAA,QAAAtlB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAV7HokB,qDAAc,WAAA,kGACVJ,UAAAA;AAAAA,QAAAA;AAAAA,QAIAE;AAAAA,wCAIA,MAAA,EACIC,UAAAA;AAAAA,UAAAA;AAAAA,UACA9rB,2BAAAA,eAAgB,WAAA,gBAAe,UAAA;AAAA,YAAA;AAAA,YAAyExB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,sEAAqE,UAAA,uDAAA,CAAuD;AAAA,UAAA,EAAA;WACxP;AAAA,MAAA,GACJ;AAAKiI,eAAAslB;AAAAA,IAAA,OAAA;AAAAA,aAAAtlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAulB;AAAA,QAAAvlB,EAAA,GAAA,MAAA8kB,QAAA9kB,WAAAglB,MAAA;AAlBTO,aAAAhsB,2BAAAA,KAAC4nB,GAAAA,OAAA,EAAiB,WAAAyD,MACdE,UAAAA;AAAAA,QAAAA;AAAAA,QACAE;AAAAA,QAGAM;AAAAA,MAAAA,GAcJ;AAAQtlB,eAAA8kB;AAAA9kB,eAAAglB;AAAAhlB,eAAAulB;AAAAA,IAAA,OAAA;AAAAA,aAAAvlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAwlB;AAAA,QAAAxlB,EAAA,GAAA,MAAA2kB,QAAA3kB,EAAA,GAAA,MAAAulB,QAAAvlB,EAAA,GAAA,MAAAyiB,OAAAziB,EAAA,GAAA,MAAAyjB,OAAAzjB,WAAAkkB,KAAA;AAjEZsB,aAAAjsB,2BAAAA,KAAA,OAAA,EAAe,WAAA,uBACXkpB,UAAAA;AAAAA,QAAAA;AAAAA,QAOAgB;AAAAA,QAYAS;AAAAA,QAaAS;AAAAA,QAaAY;AAAAA,MAAAA,GAoBJ;AAAMvlB,eAAA2kB;AAAA3kB,eAAAulB;AAAAvlB,eAAAyiB;AAAAziB,eAAAyjB;AAAAzjB,eAAAkkB;AAAAlkB,eAAAwlB;AAAAA,IAAA,OAAA;AAAAA,aAAAxlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAylB;AAAA,QAAAzlB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEUukB,aAAAztB,GAAAA,IAAI,qLAAmLwB,qBAAoB;AAACwG,eAAAylB;AAAAA,IAAA,OAAA;AAAAA,aAAAzlB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA0lB;AAAA,QAAA1lB,WAAA7J,GAAA;AAEnNuvB,aAAAvvB,EAAE,6BAA6B;AAAC6J,eAAA7J;AAAA6J,eAAA0lB;AAAAA,IAAA,OAAA;AAAAA,aAAA1lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA2lB;AAAA,QAAA3lB,WAAA0lB,MAAA;AADrCC,4CAAClsB,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,8DACjCisB,UAAAA,MACL;AAAa1lB,eAAA0lB;AAAA1lB,eAAA2lB;AAAAA,IAAA,OAAA;AAAAA,aAAA3lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA4lB;AAAA,QAAA5lB,WAAA7J,GAAA;AAURyvB,aAAAzvB,EAAE,8BAA8B;AAAC6J,eAAA7J;AAAA6J,eAAA4lB;AAAAA,IAAA,OAAA;AAAAA,aAAA5lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA6lB;AAAA,QAAA7lB,WAAA4lB,MAAA;AATtCC,4CAACjrB,GAAAA,QAAA,EACa,WAAA,KACL,MAAA,iEACE,QAAA,UACC,SAAA,YACF,OAAA,WACD,MAAA,SACK,WAAA,mCAETgrB,UAAAA,MACL;AAAS5lB,eAAA4lB;AAAA5lB,eAAA6lB;AAAAA,IAAA,OAAA;AAAAA,aAAA7lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA8lB;AAAA,QAAA9lB,EAAA,GAAA,MAAA2lB,QAAA3lB,WAAA6lB,MAAA;AAdbC,aAAAvsB,2BAAAA,KAAA,OAAA,EAAgB,WAAAksB,MACZE,UAAAA;AAAAA,QAAAA;AAAAA,QAGAE;AAAAA,MAAAA,GAWJ;AAAM7lB,eAAA2lB;AAAA3lB,eAAA6lB;AAAA7lB,eAAA8lB;AAAAA,IAAA,OAAA;AAAAA,aAAA9lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAA+lB;AAAA,QAAA/lB,EAAA,GAAA,MAAAwlB,QAAAxlB,WAAA8lB,QAAA9lB,EAAA,GAAA,MAAAmiB,KAAA;AA3FV4D,6CAAC3R,GAAAA,eAAA,EAAwB,WAAA,yCACrB+N,UAAAA;AAAAA,QAAAA;AAAAA,QAOAqD;AAAAA,QAoEAM;AAAAA,MAAAA,GAgBJ;AAAgB9lB,eAAAwlB;AAAAxlB,eAAA8lB;AAAA9lB,eAAAmiB;AAAAniB,eAAA+lB;AAAAA,IAAA,OAAA;AAAAA,aAAA/lB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAgmB;AAAA,QAAAhmB,EAAA,GAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEK8kB,aAAAA,MAAMlH,iBAAiB;AAAC9e,eAAAgmB;AAAAA,IAAA,OAAA;AAAAA,aAAAhmB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAimB;AAAA,QAAAjmB,WAAA7J,GAAA;AAAoC8vB,aAAA9vB,EAAE,2BAA2B;AAAC6J,eAAA7J;AAAA6J,eAAAimB;AAAAA,IAAA,OAAA;AAAAA,aAAAjmB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAkmB;AAAA,QAAAlmB,WAAAimB,MAAA;AAD/GC,aAAAnuB,2BAAAA,IAACuc,GAAAA,eAAA,EAAwB,WAAA,uCACrB,UAAAvc,2BAAAA,IAAC6C,WAAA,EAAgB,SAAAorB,MAAkC,SAAA,UAAe,OAAA,WAAWC,gBAA+B,GAChH;AAAgBjmB,eAAAimB;AAAAjmB,eAAAkmB;AAAAA,IAAA,OAAA;AAAAA,aAAAlmB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAmmB;AAAA,QAAAnmB,EAAA,GAAA,MAAA6e,YAAA7e,WAAA+lB,QAAA/lB,EAAA,GAAA,MAAAkmB,MAAA;AAhGpBC,6CAACjS,WAAA,EAAa2K,gBAAwBC,cAAAA,aAAsB,UAAA,OACxDiH,UAAAA;AAAAA,QAAAA;AAAAA,QA6FAG;AAAAA,MAAAA,GAGJ;AAASlmB,eAAA6e;AAAA7e,eAAA+lB;AAAA/lB,eAAAkmB;AAAAlmB,eAAAmmB;AAAAA,IAAA,OAAA;AAAAA,aAAAnmB,EAAA,GAAA;AAAA,IAAA;AAAA,QAAAomB;AAAA,QAAApmB,EAAA,GAAA,MAAAyB,OAAAzB,EAAA,GAAA,MAAAmmB,QAAAnmB,EAAA,GAAA,MAAAwhB,OAAAxhB,WAAA8hB,KAAA;AA7QbsE,aAAA7sB,2BAAAA,KAAAsC,qBAAA,EACI4F,UAAAA;AAAAA,QAAAA;AAAAA,QAYA+f;AAAAA,QAsJAM;AAAAA,QASAqE;AAAAA,MAAAA,GAiGS;AACVnmB,eAAAyB;AAAAzB,eAAAmmB;AAAAnmB,eAAAwhB;AAAAxhB,eAAA8hB;AAAA9hB,eAAAomB;AAAAA,IAAA,OAAA;AAAAA,aAAApmB,EAAA,GAAA;AAAA,IAAA;AAAA,WA9QHomB;AAAAA,EA8QG;AApViB,WAAA/iB,QAAAgjB,UAAA;AAAA,WAoGItuB,2BAAAA,IAACmoB,GAAAA,cAAkC,OAAAN,SAAMrsB,IACrC,UAAAgG,2BAAAA,KAAA,OAAA,EAAe,WAAA,2BACX,UAAA;AAAA,MAAAxB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,WAAW6nB,UAAAA,SAAMpsB,OAAO;AAAA,MACxCuE,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6DAA6D6nB,mBAAMpJ,YAAAA,CAAa;AAAA,IAAA,GACpG,EAAA,GAJaoJ,SAAMrsB,EAKvB;AAAA,EAAa;AAzGjB,WAAAutB,OAAA3a,MAAA;AAAA,WAuLIpO,2BAAAA,IAACuuB,GAAAA,iBAAA,EAAkCngB,mCAEnC;AAAA,EAAkB;AChQ3C,QAAMogB,YAAYA,CAAC;AAAA,IAAEvL,SAAS;AAAA,EAAwB,MAAM;AAC/D,UAAM;AAAA,MAAEjX;AAAAA,IAAAA,IAAkBC,sBAAAA;AAC1B,UAAMG,qBAAqBC,KAAAA,sBAAAA;AAC3B,UAAMC,qBAAqBC,KAAAA,4BAAAA;AAC3B,UAAM;AAAA,MAAEnO;AAAAA,IAAAA,IAAMiD,oBAAAA;AAEd,UAAM,CAACotB,WAAWC,YAAY,IAAIztB,MAAAA,SAAS,IAAI;AAC/C,UAAM,CAACuF,OAAOmoB,QAAQ,IAAI1tB,MAAAA,SAAwB,IAAI;AACtD,UAAM,CAAClD,QAAQ6wB,SAAS,IAAI3tB,MAAAA,SAA2B,CAAA,CAAE;AACzD,UAAM,CAAC4tB,eAAeC,gBAAgB,IAAI7tB,MAAAA,SAAwB,IAAI;AACtE,UAAM,CAACmC,WAAWC,YAAY,IAAIpC,MAAAA,SAAS,CAAC;AAE5C,UAAM,CAAC8tB,eAAeC,gBAAgB,IAAI/tB,MAAAA,SAAwC,IAAI;AAEtF,UAAM,CAACoa,aAAaC,cAAc,IAAIra,MAAAA,SAAS,MAAM;AACjD,UAAI;AACA,cAAM2M,QAAQd,aAAaC,QAAQ,gCAAgC;AACnE,eAAOa,UAAU,OAAO2N,WAAW3N,KAAK,IAAI;AAAA,MAChD,SAAS1L,GAAG;AACR,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAED,UAAM,CAACnB,iBAAiBC,kBAAkB,IAAIC,eAAkC;AAAA,MAAEC,QAAQ;AAAA,IAAA,CAAM;AAGhG,UAAM,CAAC+tB,YAAYC,aAAa,IAAIjuB,MAAAA,SAA4B,QAAQ;AAExE2N,UAAAA,UAAU,MAAM;AACZ,UAAI;AACA9B,qBAAaiD,QAAQ,kCAAkCsL,YAAYtG,SAAAA,CAAU;AAAA,MACjF,SAAS7S,KAAG;AAAA,MAAE;AAAA,IAClB,GAAG,CAACmZ,WAAW,CAAC;AAEhB,UAAM8T,eAAe3gB,MAAAA,YAAY,YAAY;AACzC,UAAI,CAACxC,eAAe0E,YAAY;AAC5Bie,iBAASvwB,EAAE,8BAA8B,CAAC;AAC1CswB,qBAAa,KAAK;AAClB;AAAA,MACJ;AAEAA,mBAAa,IAAI;AACjBC,eAAS,IAAI;AACb,UAAI;AAEA,cAAMS,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASlB,cAAMC,eAAe,MAAMrjB,cAAe0E,WAAY0e,SAAS;AAG/D,cAAME,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAapB,cAAMC,iBAAiB,MAAMvjB,cAAe0E,WAAY4e,WAAW;AAEnE,cAAME,cAAcA,CAAC7e,WAA+C;AAChE,cAAIA,UAAU,OAAOA,WAAW,YAAY,UAAUA,UAAUgB,MAAMC,QAASjB,OAA+CkB,IAAI,GAAG;AACjI,mBAAQlB,OAA+CkB;AAAAA,UAC3D;AACA,cAAIF,MAAMC,QAAQjB,MAAM,EAAG,QAAOA;AAClC,iBAAO,CAAA;AAAA,QACX;AAEA,cAAM8e,QAAQD,YAAYH,YAAY;AACtC,cAAMK,QAAQF,YAAYD,cAAc;AAExC,cAAMI,WAA2C,CAAA;AAEjDF,cAAMlxB,QAAQ,CAACqxB,SAAkC;AAC7C,gBAAMxxB,MAAIwxB;AACV,gBAAM7oB,SAAS3I,IAAEyxB,cAAczxB,IAAE0xB,cAAc;AAC/C,gBAAM5xB,QAAQE,IAAE2xB,aAAa3xB,IAAE4xB,aAAa;AAC5C,gBAAMC,aAAa7xB,IAAE8xB,eAAe9xB,IAAE+xB,eAAe;AAErD,gBAAMva,MAAM,GAAG7O,MAAM,IAAI7I,KAAK;AAC9ByxB,mBAAS/Z,GAAG,IAAI;AAAA,YACZ5T,YAAY+E;AAAAA,YACZ1I,WAAWH;AAAAA,YACX+xB;AAAAA,YACAG,UAAU,CAAA;AAAA,UAAA;AAAA,QAElB,CAAC;AAEDV,cAAMnxB,QAAQ,CAAC8xB,SAAkC;AAC7C,gBAAMnS,IAAImS;AACV,gBAAMtpB,WAASmX,EAAE2R,cAAc3R,EAAE4R,cAAc;AAC/C,gBAAM5xB,UAAQggB,EAAE6R,aAAa7R,EAAE8R,aAAa;AAC5C,gBAAMpa,QAAM,GAAG7O,QAAM,IAAI7I,OAAK;AAE9B,cAAIyxB,SAAS/Z,KAAG,GAAG;AAEf,gBAAI0a,cAAwB,CAAA;AAC5B,kBAAMnQ,IAAIjC,EAAEhP,SAASgP,EAAEqS;AACvB,gBAAI5e,MAAMC,QAAQuO,CAAC,GAAG;AAClBmQ,4BAAcnQ;AAAAA,YAClB,WAAW,OAAOA,MAAM,UAAU;AAC9BmQ,4BAAcnQ,EAAEjb,QAAQ,UAAU,EAAE,EAAEsrB,MAAM,GAAG,EAAEzuB,IAAI4B,CAAAA,MAAKA,EAAElH,KAAAA,CAAM;AAAA,YACtE;AAEAkzB,qBAAS/Z,KAAG,EAAEwa,SAAS3xB,KAAK;AAAA,cACxB2nB,YAAYlI,EAAEkI,cAAclI,EAAEuS,cAAc;AAAA,cAC5CV,WAAW7xB;AAAAA,cACXooB,YAAYpI,EAAEoI,cAAcpI,EAAEwS,cAAc;AAAA,cAC5CxhB,OAAOohB;AAAAA,cACPjK,KAAKnI,EAAEmI,OAAOnI,EAAEyS,OAAO;AAAA,cACvBpK,MAAMrI,EAAEqI,QAAQrI,EAAE0S,QAAQ;AAAA,cAC1BpK,YAAYtI,EAAEsI,cAActI,EAAE2S,cAAc;AAAA,YAAA,CAC/C;AAAA,UACL;AAAA,QACJ,CAAC;AAED,cAAMC,eAAe9yB,OAAO6H,OAAO8pB,QAAQ,EAAEoB,KAAK,CAACpY,GAAGqY,MAAMrY,EAAEta,UAAU4yB,cAAcD,EAAE3yB,SAAS,CAAC;AAClGuwB,kBAAUkC,YAAY;AAEtB,YAAIA,aAAahvB,SAAS,KAAK,CAAC+sB,eAAe;AAC3CC,2BAAiB,GAAGgC,aAAa,CAAC,EAAE9uB,UAAU,IAAI8uB,aAAa,CAAC,EAAEzyB,SAAS,EAAE;AAAA,QACjF;AAAA,MAEJ,SAAS6D,KAAY;AACjBwF,gBAAQlB,MAAM,oBAAoBtE,GAAC;AACnCysB,iBAAS,oCAAoCzsB,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC,EAAE;AAAA,MAC5F,UAAA;AACIwsB,qBAAa,KAAK;AAAA,MACtB;AAAA,IACJ,GAAG,CAAC1iB,eAAe6iB,aAAa,CAAC;AAEjCjgB,UAAAA,UAAU,MAAM;AACZogB,uBAAiB,IAAI;AAAA,IACzB,GAAG,CAACH,aAAa,CAAC;AAElBjgB,UAAAA,UAAU,MAAM;AACZugB,mBAAAA;AAAAA,IACJ,GAAG,CAACA,YAAY,CAAC;AAEjB,UAAM+B,kBAAkBnP,MAAAA,QAAQ,MAAM;AAClC,UAAI,CAAC8M,cAAe,QAAO;AAC3B,aAAO9wB,OAAOI,KAAKC,CAAAA,QAAK,GAAGA,IAAE4D,UAAU,IAAI5D,IAAEC,SAAS,OAAOwwB,aAAa,KAAK;AAAA,IACnF,GAAG,CAACA,eAAe9wB,MAAM,CAAC;AAE1B,UAAMozB,gBAAgBpP,MAAAA,QAAQ,MAAM;AAChC,YAAMqP,SAA2C,CAAA;AACjDrzB,aAAOQ,QAAQL,CAAAA,YAAS;AACpB,YAAI,CAACkzB,OAAOlzB,QAAM8D,UAAU,GAAG;AAC3BovB,iBAAOlzB,QAAM8D,UAAU,IAAI,CAAA;AAAA,QAC/B;AACAovB,eAAOlzB,QAAM8D,UAAU,EAAEvD,KAAKP,OAAK;AAAA,MACvC,CAAC;AACD,aAAOkzB;AAAAA,IACX,GAAG,CAACrzB,MAAM,CAAC;AAEX,UAAMszB,mBAAmBtP,MAAAA,QAAQ,MAAM;AACnC,UAAI,CAACmP,gBAAiB,QAAO;AAC7B,aAAO5kB,mBAAmBjH,aAAalH,KAAK,CAACwE,MACzCA,EAAEnH,OAAO01B,gBAAgB7yB,aACzBsE,EAAEoY,SAASmW,gBAAgB7yB,aAC3BsE,EAAEzE,UAAUgzB,gBAAgB7yB,aAC5BsE,EAAEsC,SAASisB,gBAAgB7yB,aAC3BsE,EAAE2uB,iBAAiBJ,gBAAgB7yB,SACvC,KAAK;AAAA,IACT,GAAG,CAAC6yB,iBAAiB5kB,mBAAmBjH,WAAW,CAAC;AAEpD,UAAMksB,iBAAiBxP,MAAAA,QAAQ,MAAM;AACjC,UAAI,CAACmP,gBAAiB,QAAO,CAAA;AAE7B,YAAMM,cAA8C,CAAA;AAGpD,OAACN,gBAAgBd,YAAY,CAAA,GAAI7xB,QAAQ2f,CAAAA,QAAK;AAC1CsT,oBAAYtT,IAAEkI,UAAU,IAAI;AAAA,UAAE,GAAGlI;AAAAA,UAAGuT,QAAQ;AAAA,QAAA;AAAA,MAChD,CAAC;AAGD,UAAIJ,oBAAoBK,MAAAA,qBAAqBL,gBAAgB,KAAKA,iBAAiBM,eAAe;AAC9FN,yBAAiBM,cAAcpzB,QAAQ,CAACqzB,SAAqH;AACzJ,gBAAMC,WAAWD,KAAKlzB;AACtB,cAAI,CAACmzB,SAAU;AAEf,cAAIL,YAAYK,QAAQ,GAAG;AAEvBL,wBAAYK,QAAQ,IAAI;AAAA,cACpBzL,YAAYyL;AAAAA,cACZ9B,WAAWmB,gBAAgB7yB;AAAAA,cAC3BioB,aAAasL,KAAKh3B,QAAQ,cAAc8b,YAAAA;AAAAA,cACxC2P,MAAMuL,KAAKE,aAAa,OAAOpb,YAAAA;AAAAA,cAC/BxH,OAAO0iB,KAAK1iB,SAAS,CAAC,QAAQ;AAAA,cAC9BqX,MAAMqL,KAAKG,SAAS;AAAA,cACpBvL,YAAYoL,KAAKI,aAAa;AAAA,cAC9BP,QAAQ;AAAA,YAAA;AAAA,UAEhB,OAAO;AACHD,wBAAYK,QAAQ,IAAI;AAAA,cACpBzL,YAAYyL;AAAAA,cACZ9B,WAAWmB,gBAAgB7yB;AAAAA,cAC3BioB,aAAasL,KAAKh3B,QAAQ,cAAc8b,YAAAA;AAAAA,cACxC2P,MAAMuL,KAAKE,aAAa,OAAOpb,YAAAA;AAAAA,cAC/BxH,OAAO0iB,KAAK1iB,SAAS,CAAC,QAAQ;AAAA,cAC9BqX,MAAMqL,KAAKG,SAAS;AAAA,cACpBvL,YAAYoL,KAAKI,aAAa;AAAA,cAC9BP,QAAQ;AAAA,YAAA;AAAA,UAEhB;AAAA,QACJ,CAAC;AAAA,MACL;AAEA,aAAOzzB,OAAO6H,OAAO2rB,WAAW,EAAET,KAAK,CAACpY,KAAGqY,QAAMrY,IAAEyN,WAAW6K,cAAcD,IAAE5K,UAAU,CAAC;AAAA,IAC7F,GAAG,CAAC8K,iBAAiBG,gBAAgB,CAAC;AAGtC,UAAMY,WAAWlQ,MAAAA,QAAQ,MAAM;AAC3B,YAAMmQ,QAAQn0B,OAAO+D;AACrB,YAAM3B,UAAUpC,OAAO2F,OAAOtF,CAAAA,QAAKA,IAAE6xB,UAAU,EAAEnuB;AACjD,YAAMqwB,eAAep0B,OAAO2F,OAAOtF,CAAAA,QAAKA,IAAEgyB,SAAStuB,SAAS,CAAC,EAAEA;AAC/D,YAAMswB,gBAAgBr0B,OAAOgT,OAAO,CAACshB,KAAKj0B,QAAMi0B,MAAMj0B,IAAEgyB,SAAStuB,QAAQ,CAAC;AAC1E,aAAO;AAAA,QAAEowB;AAAAA,QAAO/xB;AAAAA,QAASgyB;AAAAA,QAAcC;AAAAA,MAAAA;AAAAA,IAC3C,GAAG,CAACr0B,MAAM,CAAC;AAEX,UAAMu0B,kBAAkBA,CAAC72B,OAAepB,UAAkB;AACtD,aACImH,2BAAAA,KAAC,OAAA,EAAI,WAAU,0IACX,UAAA;AAAA,QAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,sGACX/F,UAAAA;AAAAA,UAAAA;AAAAA,UAAM;AAAA,QAAA,GACX;AAAA,QACAuE,2BAAAA,IAAC,QAAA,EAAK,WAAU,6EACX3F,UAAAA,MAAAA,CACL;AAAA,MAAA,GACJ;AAAA,IAER;AAEA,WACI2F,+BAAC,SAAI,WAAU,iHACX,yCAAC2b,GAAAA,iBAAA,EACG,aAAY,cACZ,kBAAkBN,aAClB,mBAAmBC,gBACnB,gBAAgB,KAChB,YACI9Z,2BAAAA,KAAC,SAAI,WAAWvB,GAAAA,IAAI,qEAAqEwB,GAAAA,kBAAkB,GACvG,UAAA;AAAA,MAAAD,2BAAAA,KAAC8B,GAAAA,MAAA,EAAK,OAAO2rB,YAAY,eAAgB1rB,CAAAA,MAAM2rB,cAAc3rB,CAAsB,GAAG,SAAQ,QAAO,WAAU,uDAC3G,UAAA;AAAA,QAAAvD,2BAAAA,IAACwD,GAAAA,KAAA,EAAI,OAAM,UAAS,UAAA,UAAM;AAAA,QAC1BxD,2BAAAA,IAACwD,GAAAA,KAAA,EAAI,OAAM,QAAO,UAAA,OAAA,CAAI;AAAA,MAAA,GAC1B;AAAA,MAEAhC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sCACVytB,UAAAA;AAAAA,QAAAA,eAAe,YACZztB,gCAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,UAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAA;AAAA,YAAAzB,2BAAAA,IAAC0B,GAAAA,cAAW,SAAQ,WAAU,WAAU,sFACnCtD,UAAAA,EAAE,sBAAsB,GAC7B;AAAA,YACA4B,2BAAAA,IAAC2B,GAAAA,YAAA,EAAW,MAAK,SAAQ,SAASwtB,cAAc,OAAM,WAClD,UAAAnvB,2BAAAA,IAAC4B,GAAAA,aAAA,EAAY,MAAK,QAAA,CAAO,EAAA,CAC7B;AAAA,UAAA,GACJ;AAAA,UACA5B,2BAAAA,IAAC,OAAA,EAAI,WAAU,8CACVyuB,UAAAA,aAAa1wB,OAAO+D,WAAW,IAC5B9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,2BAA0B,yCAACsB,GAAAA,kBAAA,EAAiB,MAAK,QAAA,CAAO,EAAA,CAAG,IAC1EtD,OAAO6D,KAAKsvB,aAAa,EAAErvB,WAAW,IACtC9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mBACX,UAAAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,0DAA0DtD,UAAAA,EAAE,sBAAsB,EAAA,CAAE,EAAA,CAChI,IAEAJ,OAAOC,QAAQkzB,aAAa,EAAEpvB,IAAI,CAAC,CAACC,YAAYuwB,YAAY,MACxD/wB,2BAAAA,KAAC,OAAA,EAAqB,WAAU,QAC5B,UAAA;AAAA,YAAAA,gCAAC,SACG,WAAU,iHACV,SAAS,MAAMR,mBAAmBiB,CAAAA,UAAS;AAAA,cAAE,GAAGA;AAAAA,cAAM,CAACD,UAAU,GAAG,CAACC,KAAKD,UAAU;AAAA,YAAA,EAAI,GAExF,UAAA;AAAA,cAAAhC,+BAAC,SAAI,WAAWC,GAAAA,IAAI,qCAAqCc,gBAAgBiB,UAAU,IAAI,cAAc,EAAE,GAAG,MAAK,gBAAe,SAAQ,aAAY,yCAAC,QAAA,EAAK,GAAE,sHAAoH,GAAG;AAAA,6CAChRN,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,wFAAwFM,UAAAA,WAAAA,CAAW;AAAA,YAAA,GAC7I;AAAA,YAECjB,gBAAgBiB,UAAU,KACvBhC,2BAAAA,IAAC,SAAI,WAAU,yBACVuyB,UAAAA,aAAaxwB,IAAI7D,CAAAA,YAAS;AACvB,oBAAM0X,QAAM,GAAG1X,QAAM8D,UAAU,IAAI9D,QAAMG,SAAS;AAClD,oBAAMm0B,aAAa3D,kBAAkBjZ;AACrC,qBACIpU,2BAAAA,KAAC,OAAA,EAEG,SAAS,MAAMstB,iBAAiBlZ,KAAG,GACnC,WAAW3V,GAAAA,IACP,iFACAuyB,aACM,0EACA,kGACV,GAEA,UAAA;AAAA,gBAAAxyB,2BAAAA,IAAC,SAAI,WAAU,6EAA4E,MAAK,QAAO,QAAO,gBAAe,SAAQ,aAAY,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,6FAA2F,EAAA,CAAG;AAAA,+CACnT0B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,mCAAmCxD,kBAAMG,WAAU;AAAA,gBACzFmD,2BAAAA,KAAC,OAAA,EAAI,WAAU,2CACVtD,UAAAA;AAAAA,kBAAAA,QAAM+xB,4CACFxV,GAAAA,SAAA,EAAQ,OAAOrc,EAAE,oBAAoB,GAClC,UAAA4B,2BAAAA,IAAC,OAAA,EAAI,WAAU,wCAAA,CAAuC,GAC1D,IAEAA,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAOrc,EAAE,qBAAqB,GACnC,UAAA4B,2BAAAA,IAAC,OAAA,EAAI,WAAU,oDAAA,CAAmD,EAAA,CACtE;AAAA,iDAEH,QAAA,EAAK,WAAU,wFACX9B,UAAAA,QAAMkyB,SAAStuB,OAAAA,CACpB;AAAA,gBAAA,EAAA,CACJ;AAAA,cAAA,EAAA,GAxBK8T,KAyBT;AAAA,YAER,CAAC,EAAA,CACL;AAAA,UAAA,EAAA,GA5CE5T,UA8CV,CACH,EAAA,CAET;AAAA,QAAA,GACJ;AAAA,QAGHitB,eAAe,UACZztB,gCAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAWC,GAAAA,IAAI,uGAAuGwB,GAAAA,kBAAkB,GACzI,UAAAzB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,sFAAoF,sBAE5H,GACJ;AAAA,UACAF,2BAAAA,KAAC,OAAA,EAAI,WAAU,wDACX,UAAA;AAAA,YAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,sDAAsDwB,GAAAA,kBAAkB,GACxF,UAAA;AAAA,cAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,gCACX,UAAA;AAAA,gBAAAxB,2BAAAA,IAACyyB,GAAAA,cAAA,EAAa,MAAK,SAAQ,WAAU,gBAAc;AAAA,+CAClD/wB,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,6BAA4B,UAAA,aAAA,CAAU;AAAA,cAAA,GAChF;AAAA,6CACCA,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,uFAAqF,UAAA,qHAAA,CAE7H;AAAA,YAAA,GACJ;AAAA,YAEAF,2BAAAA,KAAC,OAAA,EAAI,WAAU,aACX,UAAA;AAAA,cAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,uFAAuFwB,GAAAA,kBAAkB,GACzH,UAAA;AAAA,gBAAAzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,iEAAgE,UAAA,gBAAY;AAAA,+CACnHA,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,qCAAqCuwB,mBAASC,MAAAA,CAAM;AAAA,cAAA,GAC9F;AAAA,8CACC,OAAA,EAAI,WAAWjyB,GAAAA,IAAI,uFAAuFwB,GAAAA,kBAAkB,GACzH,UAAA;AAAA,gBAAAzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,iEAAgE,UAAA,eAAW;AAAA,gBACnHF,2BAAAA,KAAC,OAAA,EAAI,WAAU,6BACX,UAAA;AAAA,kBAAAxB,2BAAAA,IAAC,OAAA,EAAI,WAAU,wCAAA,CAAuC;AAAA,iDACrD0B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,qCAAqCuwB,mBAAS9xB,QAAAA,CAAQ;AAAA,gBAAA,EAAA,CAChG;AAAA,cAAA,GACJ;AAAA,8CACC,OAAA,EAAI,WAAWF,GAAAA,IAAI,uFAAuFwB,GAAAA,kBAAkB,GACzH,UAAA;AAAA,gBAAAzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,iEAAgE,UAAA,wBAAoB;AAAA,+CAC3HA,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,qCAAqCuwB,mBAASE,aAAAA,CAAa;AAAA,cAAA,GACrG;AAAA,8CACC,OAAA,EAAI,WAAWlyB,GAAAA,IAAI,uFAAuFwB,GAAAA,kBAAkB,GACzH,UAAA;AAAA,gBAAAzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,iEAAgE,UAAA,kBAAc;AAAA,+CACrHA,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,qCAAqCuwB,mBAASG,cAAAA,CAAc;AAAA,cAAA,EAAA,CACtG;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,EAAA,CAER;AAAA,IAAA,EAAA,CACJ,GAEJ,aACI5wB,2BAAAA,KAAC,OAAA,EAAI,WAAU,8EAEX,UAAA;AAAA,MAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,6FAA6FwB,GAAAA,kBAAkB,GAC/H,UAAA;AAAA,QAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,oDACX,UAAA;AAAA,UAAAxB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,aAAY,WAAU,wEACrCwvB,UAAAA,kBAAkB,GAAGA,gBAAgBlvB,UAAU,IAAIkvB,gBAAgB7yB,SAAS,KAAKD,EAAE,yBAAyB,GACjH;AAAA,UACC8yB,mBACGlxB,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACVkxB,UAAAA,gBAAgBjB,aACbjwB,2BAAAA,IAAColB,GAAAA,MAAA,EAAK,MAAK,YAAW,WAAU,+GAA+GhnB,YAAE,oBAAoB,EAAA,CAAE,IAEvK4B,2BAAAA,IAAColB,GAAAA,MAAA,EAAK,MAAK,YAAW,WAAU,qHAAqHhnB,UAAAA,EAAE,qBAAqB,EAAA,CAAE,EAAA,CAEtL;AAAA,QAAA,GAER;AAAA,QACA4B,+BAAC,OAAA,EAAI,WAAU,kDACVkxB,6BACG1vB,2BAAAA,KAAAsC,qBAAA,EACI,UAAA;AAAA,UAAA9D,2BAAAA,IAAC6C,GAAAA,UACG,SAAQ,QACR,MAAK,SACL,SAAS,YAAY;AACjB,kBAAM3E,UAAQgzB,gBAAgB7yB;AAC9B,kBAAMq0B,SAASxB,gBAAgBjB,aAAa,YAAY;AACxD,gBAAI,CAAC0C,QAAQ,4BAA4BD,OAAOvtB,aAAa,2BAA2BjH,OAAK,IAAI,EAAG;AACpG,gBAAI;AACA,oBAAM8N,cAAe0E,WAAY,gBAAgBxS,OAAK,KAAKw0B,MAAM,qBAAqB;AACtFtmB,iCAAmBsG,KAAK;AAAA,gBAAElO,MAAM;AAAA,gBAAWoD,SAAS,OAAO8qB,OAAOvtB,YAAAA,CAAa,QAAQjH,OAAK;AAAA,cAAA,CAAI;AAChGixB,2BAAAA;AAAAA,YACJ,SAASjtB,KAAY;AACjBkK,iCAAmBsG,KAAK;AAAA,gBAAElO,MAAM;AAAA,gBAASoD,SAAS1F,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC;AAAA,cAAA,CAAG;AAAA,YAClG;AAAA,UACJ,GAECgvB,0BAAgBjB,aAAa7xB,EAAE,wBAAwB,IAAIA,EAAE,uBAAuB,GACzF;AAAA,UAEA4B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mDAAA,CAAkD;AAAA,UAEjEA,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,SAAQ,QACR,MAAK,SACL,SAASssB,cACT,WAAWnvB,2BAAAA,IAAC4B,GAAAA,aAAA,EAAY,MAAK,WAAA,CAAU,GAAI,UAAA,WAG/C;AAAA,UAEA5B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mDAAA,CAAkD;AAAA,yCAEhE6C,GAAAA,QAAA,EACG,MAAK,SACL,OAAM,WACN,UAAU,CAACwuB,kBACX,SAAS,MAAMrC,iBAAiB,KAAK,GAEpC5wB,UAAAA,EAAE,0BAA0B,EAAA,CACjC;AAAA,QAAA,EAAA,CACJ,EAAA,CAER;AAAA,MAAA,GACJ;AAAA,MAECoI,QACGxG,2BAAAA,IAAC,OAAA,EAAI,WAAU,+CACX,yCAACuB,KAAAA,WAAA,EAAU,OAAOnD,EAAE,kBAAkB,GAAG,OAAc,SAAS+wB,aAAAA,CAAa,EAAA,CACjF,IACA,CAAC+B,kBACDlxB,2BAAAA,IAAC,OAAA,EAAI,WAAU,wEACX,UAAAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,QAAAxB,2BAAAA,IAAC,SAAI,WAAU,qCAAoC,MAAK,QAAO,QAAO,gBAAe,SAAQ,aAAY,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,wGAAsG,EAAA,CAAG;AAAA,uCACtR0B,GAAAA,YAAA,EAAW,SAAQ,SAAStD,UAAAA,EAAE,yBAAyB,EAAA,CAAE;AAAA,MAAA,GAC9D,GACJ,IACA2wB,+CACC,cAAA,EACG,QAAQA,kBAAkB,QAAQ1yB,SAAY0yB,eAC9C,QAAQmC,gBAAgBlvB,YACxB,OAAOkvB,gBAAgB7yB,WACvB,QAAQ,OAAOu0B,cAAc;AACzB,YAAI,CAACvB,iBAAkB;AACvB,cAAMO,SAAgC;AAAA,UAClClzB,MAAMk0B,UAAUxM;AAAAA,UAChB0L,WAAWc,UAAUvM,KAAKlhB,YAAAA;AAAAA,UAC1BvK,MAAMg4B,UAAUtM,YAAYnhB,YAAAA;AAAAA,UAC5B4sB,OAAOa,UAAUrM,QAAQlqB;AAAAA,UACzB21B,WAAWY,UAAUpM,cAAcnqB;AAAAA,UACnC6S,OAAO0jB,UAAU1jB;AAAAA,QAAAA;AAGrB,cAAM2jB,iBAAiBnB,2BAAqBL,gBAAgB,IAAIA,iBAAiBM,gBAAgBt1B,WAAc,CAAA;AAC/G,YAAIy2B;AACJ,YAAI/D,kBAAkB,OAAO;AACzB+D,qBAAW,CAAC,GAAGD,eAAejB,MAAI;AAAA,QACtC,OAAO;AACHkB,qBAAWD,cAAc9wB,IAAI,CAACoe,QAAyBA,IAAEzhB,SAASqwB,cAAc3I,aAAawL,SAAOzR,GAAC;AAAA,QACzG;AAEA,YAAI;AACA,gBAAM4S,WAAW,MAAMC,MAAM,GAAG/P,MAAM,sCAAsC;AAAA,YACxEgQ,QAAQ;AAAA,YACR/a,SAAS;AAAA,cAAE,gBAAgB;AAAA,YAAA;AAAA,YAC3Bgb,MAAMplB,KAAKsG,UAAU;AAAA,cACjBkd,cAAeD,iBAAoE71B,MAAO61B,iBAAoEtW,QAASsW,iBAAoEzsB,SAASssB,gBAAgB7yB;AAAAA,cACpQ80B,gBAAgB;AAAA,gBAAExB,eAAemB;AAAAA,cAAAA;AAAAA,YAAS,CAC7C;AAAA,UAAA,CACJ;AACD,cAAI,CAACC,SAASK,GAAI,OAAM,IAAIvrB,MAAM,uBAAuB;AAEzDuE,6BAAmBsG,KAAK;AAAA,YAAElO,MAAM;AAAA,YAAWoD,SAAS;AAAA,UAAA,CAA6B;AACjFonB,2BAAiB,IAAI;AACrBG,uBAAAA;AAAAA,QACJ,SAASjtB,KAAY;AACjBkK,6BAAmBsG,KAAK;AAAA,YAAElO,MAAM;AAAA,YAASoD,SAAS1F,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC;AAAA,UAAA,CAAG;AAAA,QAClG;AAAA,MACJ,GACA,UAAU,MAAM8sB,iBAAiB,IAAI,EAAA,KAGzChvB,2BAAAA,IAAC,OAAA,EAAI,WAAU,2CACX,yCAAC,OAAA,EAAI,WAAU,sEACX,UAAAwB,gCAAC,OAAA,EAAI,WAAU,yCACd0vB,UAAAA;AAAAA,QAAAA,mBAAmB,CAACG,oBACjB7vB,2BAAAA,KAAC6xB,GAAAA,OAAA,EACG,OAAM,WAEN,UAAA;AAAA,UAAArzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,QAAM,UAAA,+BAE5C;AAAA,yCACCA,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,cAAY,UAAA,+JAAA,CAEpD;AAAA,QAAA,GACJ;AAAA,QAGHwvB,mBAAmB,CAACA,gBAAgBjB,cACjCzuB,2BAAAA,KAAC,SAAI,WAAWvB,OAAI,2LAA2LwB,GAAAA,kBAAkB,GAC7N,UAAA;AAAA,UAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,0BACX,UAAA;AAAA,YAAAxB,2BAAAA,IAAC,SAAI,WAAU,uGACX,yCAACszB,GAAAA,aAAA,EAAY,MAAK,SAAO,EAAA,CAC7B;AAAA,4CACC,OAAA,EACG,UAAA;AAAA,cAAAtzB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,aAAY,WAAU,wCAAsC,UAAA,wCAEhF;AAAA,6CACCA,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,0DAAwD,UAAA,wJAAA,CAE9F;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,GACJ;AAAA,UACA1B,+BAAC6C,GAAAA,UACG,MAAK,UACL,SAAQ,UACR,OAAM,WACN,SAAS,MAAMmsB,iBAAiB,KAAK,GACrC,WAAU,8BACV,UAAU,CAACqC,kBAEVjzB,UAAAA,EAAE,0BAA0B,EAAA,CACjC;AAAA,QAAA,GACJ;AAAA,QAGH8yB,mBAAmBK,kBAAkBA,eAAezvB,SAAS,KAC1DN,gCAAC,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC0B,GAAAA,cAAW,SAAQ,aAAY,WAAU,mFAAmFtD,UAAAA,EAAE,qBAAqB,GAAE;AAAA,UACrJmzB,eAAexvB,IAAI2kB,CAAAA,WAChBllB,2BAAAA,KAAC4nB,GAAAA,SAA8B,WAAWnpB,OAAI,yGAAyGwB,GAAAA,kBAAkB,GACrK,UAAA;AAAA,YAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,+BACX,UAAA;AAAA,cAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,gBAAAxB,2BAAAA,IAACuzB,GAAAA,SAAA,EAAQ,MAAK,SAAQ,WAAU,8DAA4D;AAAA,+CAC3F7xB,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,YAAYglB,iBAAON,YAAW;AAAA,gBACnEM,OAAO+K,WAAW,eACfzxB,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAM,oFACX,UAAAza,2BAAAA,IAAC,OAAA,EAAI,WAAU,4GAA0G,UAAA,YAAA,CAEzH,GACJ;AAAA,gBAEH0mB,OAAO+K,WAAW,UACfzxB,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAM,8EACX,UAAAza,2BAAAA,IAAC,OAAA,EAAI,WAAU,qHAAmH,UAAA,UAAA,CAElI,EAAA,CACJ;AAAA,cAAA,GAER;AAAA,cACAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,kCACV8wB,UAAAA;AAAAA,gBAAAA,gBAAgB,UAAU5L,OAAOL,GAAG;AAAA,gBACpCiM,gBAAgB,SAAS3gB,MAAMC,QAAQ8U,OAAOxX,KAAK,IAAIwX,OAAOxX,MAAMtM,KAAK,IAAI,IAAI8jB,OAAOxX,KAAK;AAAA,cAAA,EAAA,CAClG;AAAA,YAAA,GACJ;AAAA,YACA1N,2BAAAA,KAAC,OAAA,EAAI,WAAU,oCACVklB,UAAAA;AAAAA,cAAAA,OAAO+K,WAAW,UAAUJ,oBACzBrxB,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,MAAK,SACL,SAAQ,YACR,OAAM,WACN,SAAS,YAAY;AACjB,sBAAM+uB,SAAgC;AAAA,kBAClClzB,MAAMgoB,OAAON;AAAAA,kBACb0L,WAAWpL,OAAOL,KAAKlhB,YAAAA;AAAAA,kBACvBvK,MAAM8rB,OAAOJ,YAAYnhB,YAAAA;AAAAA,kBACzB4sB,OAAOrL,OAAOH,QAAQlqB;AAAAA,kBACtB21B,WAAWtL,OAAOF,cAAcnqB;AAAAA,kBAChC6S,OAAOwX,OAAOxX;AAAAA,gBAAAA;AAGlB,sBAAM2jB,mBAAiBnB,2BAAqBL,gBAAgB,IAAIA,iBAAiBM,gBAAgBt1B,WAAc,CAAA;AAC/G,sBAAMy2B,aAAW,CAAC,GAAGD,iBAAejB,MAAI;AAExC,oBAAI;AACA,wBAAMmB,aAAW,MAAMC,MAAM,GAAG/P,MAAM,sCAAsC;AAAA,oBACxEgQ,QAAQ;AAAA,oBACR/a,SAAS;AAAA,sBAAE,gBAAgB;AAAA,oBAAA;AAAA,oBAC3Bgb,MAAMplB,KAAKsG,UAAU;AAAA,sBACjBkd,cAAeD,iBAAoE71B,MAAO61B,iBAAoEtW,QAASsW,iBAAoEzsB,SAASssB,gBAAiB7yB;AAAAA,sBACrQ80B,gBAAgB;AAAA,wBAAExB,eAAemB;AAAAA,sBAAAA;AAAAA,oBAAS,CAC7C;AAAA,kBAAA,CACJ;AACD,sBAAI,CAACC,WAASK,GAAI,OAAM,IAAIvrB,MAAM,uBAAuB;AAEzDuE,qCAAmBsG,KAAK;AAAA,oBAAElO,MAAM;AAAA,oBAAWoD,SAAS;AAAA,kBAAA,CAAgC;AACpFunB,+BAAAA;AAAAA,gBACJ,SAASjtB,KAAY;AACjBkK,qCAAmBsG,KAAK;AAAA,oBAAElO,MAAM;AAAA,oBAASoD,SAAS1F,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC;AAAA,kBAAA,CAAG;AAAA,gBAClG;AAAA,cACJ,GAAE,UAAA,sBAGN;AAAA,6CAEHW,GAAAA,QAAA,EAAO,MAAK,SAAQ,SAAQ,QAAO,OAAM,WAAU,SAAS,MAAMmsB,iBAAiBtI,MAAM,GAAG,UAAU,CAAC2K,kBACnGjzB,UAAAA,EAAE,iBAAiB,GACxB;AAAA,cACCsoB,OAAO+K,WAAW,eACfzxB,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAOrc,EAAE,mBAAmB,GAAG,SAAS,MAC7C,UAAA4B,+BAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,SAAS,YAAY;AACjB,sBAAMzD,UAAQgzB,gBAAiB7yB;AAC/B,oBAAI,CAACs0B,QAAQ,gBAAgBjM,OAAON,UAAU,iBAAiBloB,OAAK,IAAI,EAAG;AAC3E,oBAAI;AACA,wBAAM8N,cAAe0E,WAAY,gBAAgBgW,OAAON,UAAU,SAASloB,OAAK,GAAG;AACnFkO,qCAAmBsG,KAAK;AAAA,oBAAElO,MAAM;AAAA,oBAAWoD,SAAS,WAAW8e,OAAON,UAAU;AAAA,kBAAA,CAAa;AAC7F+I,+BAAAA;AAAAA,gBACJ,SAASjtB,KAAY;AACjBkK,qCAAmBsG,KAAK;AAAA,oBAAElO,MAAM;AAAA,oBAASoD,SAAS1F,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC;AAAA,kBAAA,CAAG;AAAA,gBAClG;AAAA,cACJ,GAEA,UAAAlC,2BAAAA,IAACiE,GAAAA,YAAA,EAAW,MAAK,QAAA,CAAO,GAC5B,EAAA,CACJ;AAAA,YAAA,EAAA,CAER;AAAA,UAAA,EAAA,GAxFQyiB,OAAON,UAyFnB,CACH;AAAA,QAAA,EAAA,CACL;AAAA,MAAA,EAAA,CAGJ,GACJ,EAAA,CACJ;AAAA,IAAA,EAAA,CAER,GACH,GAET;AAAA,EAER;ACtoBA,WAASoN,eAAeC,OAAuB;AAC3C,QAAIA,QAAQ,KAAM,QAAO,GAAGA,KAAK;AACjC,QAAIA,QAAQ,OAAO,KAAM,QAAO,IAAIA,QAAQ,MAAM3pB,QAAQ,CAAC,CAAC;AAC5D,QAAI2pB,QAAQ,OAAO,OAAO,KAAM,QAAO,IAAIA,SAAS,OAAO,OAAO3pB,QAAQ,CAAC,CAAC;AAC5E,WAAO,IAAI2pB,SAAS,OAAO,OAAO,OAAO3pB,QAAQ,CAAC,CAAC;AAAA,EACvD;AAEA,WAAS4pB,YAAYC,aAAsB;AACvC,QAAI,CAACA,YAAa,QAAOC,GAAAA;AACzB,QAAID,YAAYE,WAAW,QAAQ,EAAG,QAAOC,GAAAA;AAC7C,QAAIH,YAAYE,WAAW,QAAQ,EAAG,QAAOE,GAAAA;AAC7C,QAAIJ,YAAYE,WAAW,QAAQ,EAAG,QAAOG,GAAAA;AAC7C,WAAOJ,GAAAA;AAAAA,EACX;AAEA,WAASK,aAAav1B,MAAsB;AACxC,UAAMw1B,QAAQx1B,KAAK8xB,MAAM,GAAG;AAC5B,WAAO0D,MAAMpyB,SAAS,IAAIoyB,MAAMA,MAAMpyB,SAAS,CAAC,EAAE4U,YAAAA,IAAgB;AAAA,EACtE;AAEA,WAASyd,mBAAmBpZ,MAAiD;AACzE,QAAI,CAACA,QAAQA,SAAS,YAAY,CAAC;AAAA,MAAEtf,OAAO;AAAA,MAAQsf,MAAM;AAAA,IAAA,CAAI;AAC9D,UAAMmZ,QAAQnZ,KAAKyV,MAAM,GAAG,EAAE9sB,OAAO0wB,OAAO;AAC5C,UAAMC,WAAW,CAAC;AAAA,MAAE54B,OAAO;AAAA,MAAQsf,MAAM;AAAA,IAAA,CAAI;AAC7C,QAAIuZ,cAAc;AAClB,eAAWC,QAAQL,OAAO;AACtBI,oBAAcA,cAAc,GAAGA,WAAW,IAAIC,IAAI,KAAKA;AACvDF,eAAS51B,KAAK;AAAA,QAAEhD,OAAO84B;AAAAA,QAAMxZ,MAAMuZ;AAAAA,MAAAA,CAAa;AAAA,IACpD;AACA,WAAOD;AAAAA,EACX;AAMA,WAASG,aAAa;AAAA,IAClB9hB;AAAAA,IACA+hB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EAMJ,GAAG;AACC,UAAM,CAACC,WAAWC,YAAY,IAAI5zB,MAAAA,SAAS,KAAK;AAChD,UAAM,CAAC6zB,eAAeC,gBAAgB,IAAI9zB,MAAAA,SAAiB,CAAA,CAAE;AAC7D,UAAM,CAACuF,OAAOmoB,QAAQ,IAAI1tB,MAAAA,SAAwB,IAAI;AAEtD,UAAM+zB,mBAAmBxmB,kBAAY,CAACymB,UAAkB;AACpDF,uBAAiB9yB,UAAQ,CAAC,GAAGA,MAAM,GAAGgzB,KAAK,CAAC;AAAA,IAChD,GAAG,CAAA,CAAE;AAEL,UAAMC,mBAAmB1mB,kBAAY,CAAC2mB,UAAkB;AACpDJ,uBAAiB9yB,CAAAA,WAAQA,OAAKyB,OAAO,CAAC0xB,GAAGjxB,MAAMA,MAAMgxB,KAAK,CAAC;AAAA,IAC/D,GAAG,CAAA,CAAE;AAEL,UAAME,eAAe7mB,MAAAA,YAAY,YAAY;AACzC,UAAIsmB,cAAchzB,WAAW,EAAG;AAChC+yB,mBAAa,IAAI;AACjBlG,eAAS,IAAI;AACb,UAAI;AACA,cAAMgG,SAASG,aAAa;AAC5BC,yBAAiB,CAAA,CAAE;AACnBL,gBAAAA;AAAAA,MACJ,SAASzkB,KAAK;AACV0e,iBAAS1e,eAAepI,QAAQoI,IAAIrI,UAAU,eAAe;AAAA,MACjE,UAAA;AACIitB,qBAAa,KAAK;AAAA,MACtB;AAAA,IACJ,GAAG,CAACC,eAAeH,UAAUD,OAAO,CAAC;AAErC,UAAMY,cAAc9mB,MAAAA,YAAY,MAAM;AAClC,UAAI,CAAComB,WAAW;AACZG,yBAAiB,CAAA,CAAE;AACnBpG,iBAAS,IAAI;AACb+F,gBAAAA;AAAAA,MACJ;AAAA,IACJ,GAAG,CAACE,WAAWF,OAAO,CAAC;AAEvB,WACIlzB,2BAAAA,KAAC2a,GAAAA,QAAA,EAAO,MAAY,cAAeoZ,CAAAA,MAAM,CAACA,KAAKD,YAAAA,GAAe,UAAS,MACnE,UAAA;AAAA,MAAA9zB,2BAAAA,KAAC6a,GAAAA,eAAA,EAAc,WAAU,OACrB,UAAA;AAAA,QAAA7a,2BAAAA,KAAC,OAAA,EAAI,WAAU,yEACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,MAAK,UAAA,gBAAY;AAAA,UACrCF,2BAAAA,KAACE,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,gEAA8D,UAAA;AAAA,YAAA;AAAA,YAC/FF,2BAAAA,KAAC,QAAA,EAAK,WAAU,0BAAyB,UAAA;AAAA,cAAA;AAAA,cAAEizB,eAAe;AAAA,YAAA,EAAA,CAAO;AAAA,UAAA,EAAA,CACxE;AAAA,QAAA,GACJ;AAAA,QAEAjzB,2BAAAA,KAAC,OAAA,EAAI,WAAU,OAEX,UAAA;AAAA,UAAAxB,2BAAAA,IAACw1B,GAAAA,YAAA,EACG,QAAQ,CAAA,GACR,cAAcR,kBACd,MAAK,SACL,mBACIxzB,2BAAAA,KAAC,OAAA,EAAI,WAAU,sEACX,UAAA;AAAA,YAAAxB,2BAAAA,IAACy1B,GAAAA,iBAAA,EAAgB,WAAU,uCAAA,CAAsC;AAAA,2CAChE/zB,GAAAA,YAAA,EAAW,SAAQ,MAAK,WAAU,aAAW,UAAA,sCAE9C;AAAA,2CACCA,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,uCAAqC,UAAA,0BAAA,CAE7E;AAAA,UAAA,EAAA,CACJ,EAAA,CACH;AAAA,UAGJ8E,SACGxG,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,+CACnC8E,UAAAA,OACL;AAAA,UAGHsuB,cAAchzB,SAAS,KACpBN,2BAAAA,KAAC,OAAA,EAAI,WAAU,kBACX,UAAA;AAAA,YAAAA,2BAAAA,KAACE,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,2BAAyB,UAAA;AAAA,cAAA;AAAA,cAC5CozB,cAAchzB;AAAAA,cAAO;AAAA,YAAA,GAC1C;AAAA,YACA9B,2BAAAA,IAAC,OAAA,EAAI,WAAU,oCACV80B,wBAAc/yB,IAAI,CAAC2zB,MAAMP,4CACrB,OAAA,EAEG,WAAWl1B,GAAAA,IACP,iDACA,iDACJ,GAEA,UAAA;AAAA,cAAAuB,2BAAAA,KAAC,OAAA,EAAI,WAAU,uBACX,UAAA;AAAA,gBAAAxB,+BAAC0B,GAAAA,cAAW,SAAQ,SAAQ,WAAU,YACjCg0B,eAAKh3B,MACV;AAAA,gBACAsB,2BAAAA,IAAC0B,GAAAA,cAAW,SAAQ,WAAU,WAAU,2BACnC8xB,UAAAA,eAAekC,KAAKzV,IAAI,EAAA,CAC7B;AAAA,cAAA,GACJ;AAAA,6CACCpd,GAAAA,QAAA,EACG,SAAQ,QACR,MAAK,SACL,SAAUX,CAAAA,MAAM;AACZA,kBAAEC,gBAAAA;AACF+yB,iCAAiBC,OAAK;AAAA,cAC1B,GACA,UAAUP,WAAU,UAAA,SAAA,CAGxB;AAAA,YAAA,EAAA,GAxBK,GAAGc,KAAKh3B,IAAI,IAAIy2B,OAAK,EAyB9B,CACH,EAAA,CACL;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CAER;AAAA,MAAA,GACJ;AAAA,sCAEC5Y,GAAAA,eAAA,EACG,UAAA;AAAA,QAAAvc,2BAAAA,IAAC6C,GAAAA,UAAO,SAAQ,QAAO,SAASyyB,aAAa,UAAUV,WAAU,UAAA,SAAA,CAEjE;AAAA,QACA50B,2BAAAA,IAAC6C,GAAAA,QAAA,EACG,SAAQ,UACR,SAASwyB,cACT,UAAUP,cAAchzB,WAAW,KAAK8yB,WAEvCA,UAAAA,YACGpzB,gCAAAsC,WAAAA,UAAA,EACI,UAAA;AAAA,UAAA9D,2BAAAA,IAACsB,GAAAA,kBAAA,EAAiB,MAAK,WAAA,CAAU;AAAA,UAAA;AAAA,QAAA,EAAA,CAErC,IAEA,UAAUwzB,cAAchzB,SAAS,IAAI,IAAIgzB,cAAchzB,MAAM,MAAM,EAAE,GAAA,CAE7E;AAAA,MAAA,EAAA,CACJ;AAAA,IAAA,GACJ;AAAA,EAER;AAMA,WAAA6zB,iBAAA3tB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAA0B,UAAA;AAAA,MAAAwtB;AAAAA,MAAAhB;AAAAA,MAAAzV;AAAAA,MAAA2W;AAAAA,IAAAA,IAAA5tB;AAWN0tB,SAAI/B,aAAAE,WAAyB,QAAQ;AACrC6B,SAAI/B,aAAAE,WAAyB,QAAQ;AACrC6B,SAAI/B,aAAAE,WAAyB,QAAQ;AAAA,QAAAxrB;AAAA,QAAAJ,EAAA,CAAA,MAAAytB,KAAA/B,aAAA;AAC3BtrB,WAAAqrB,YAAYgC,KAAI/B,WAAY;AAAC1rB,QAAA,CAAA,IAAAytB,KAAA/B;AAAA1rB,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAAvD,UAAA4tB,oBAA0BxtB;AAC1B,UAAA,CAAAytB,kBAAAC,mBAAA,IAAgD90B,MAAAA,cAAc;AAAE,QAAA2H;AAAA,QAAAC;AAAA,QAAAZ,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAIxCP,WAAA3I,GAAAA,IACZ,iCAA+BwB,GAAAA,oBAE/B,8BACJ;AAEoBoH,WAAA5I,GAAAA,IAAI,2DAAyDwB,qBAAoB;AAACwG,aAAAW;AAAAX,aAAAY;AAAAA,IAAA,OAAA;AAAAD,WAAAX,EAAA,CAAA;AAAAY,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAa;AAAA,QAAAb,EAAA,CAAA,MAAAytB,KAAAh3B,MAAA;AAC9FoK,0CAACpH,eAAA,EAAmB,SAAA,SAAkB,WAAA,oCACjCg0B,eAAIh3B,KAAAA,CACT;AAAauJ,QAAA,CAAA,IAAAytB,KAAAh3B;AAAAuJ,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAA2tB,aAAA;AAER7sB,WAAA6sB,8CACInb,GAAAA,SAAA,EAAc,OAAA,YACX,UAAAza,2BAAAA,IAAC2B,GAAAA,YAAA,EACQ,MAAA,SACI,SAAA,MAAM+V,OAAAhF,KAAYkjB,aAAa,QAAQ,GAEhD,yCAACzQ,GAAAA,cAAA,EAAkB,MAAA,YAAU,EAAA,CACjC,EAAA,CACJ;AACHld,aAAA2tB;AAAA3tB,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAIgBH,WAAAA,MAAM+sB,wBAAwB;AAAC9tB,aAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAHhDF,0CAACwR,YAAA,EAAc,OAAA,UACX,UAAAza,+BAAC2B,GAAAA,cACQ,MAAA,SACI,SAAAqH,IACC,WAAA,yDAEV,UAAAhJ,2BAAAA,IAACiE,iBAAgB,MAAA,eACrB,EAAA,CACJ;AAAUgE,aAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAENC,0CAACyS,GAAAA,WAAA,EAAe,MAAA,WAAA,CAAU;AAAG5T,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoB;AAAA,QAAApB,UAAAysB,SAAA;AADjCrrB,0CAAC1H,GAAAA,YAAA,EAAgB,MAAA,SAAiB+yB,SAAAA,SAC9BtrB,UAAAA,IACJ;AAAanB,cAAAysB;AAAAzsB,cAAAoB;AAAAA,IAAA,OAAA;AAAAA,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAArB,EAAA,EAAA,MAAAc,MAAAd,UAAAoB,IAAA;AAtBjBC,qDAAe,WAAA,6BACVP,UAAAA;AAAAA,QAAAA;AAAAA,QAUDE;AAAAA,QASAI;AAAAA,MAAAA,GAGJ;AAAMpB,cAAAc;AAAAd,cAAAoB;AAAApB,cAAAqB;AAAAA,IAAA,OAAA;AAAAA,YAAArB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,EAAA,EAAA,MAAAqB,OAAArB,UAAAa,IAAA;AA3BVS,YAAA/H,2BAAAA,KAAA,OAAA,EAAgB,WAAAqH,IACZC,UAAAA;AAAAA,QAAAA;AAAAA,QAGAQ;AAAAA,MAAAA,GAwBJ;AAAMrB,cAAAqB;AAAArB,cAAAa;AAAAb,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAMM,UAAAwsB,MAAY/B,aAAayB,KAAIh3B,IAAK,GAACyG,iBAAmB;AACtD,UAAA8wB,YAAgBP,KAAI/B,aAAAE,WAAyB,QAAQ,KAAK,CAAC,OAAO,QAAQ,OAAO,OAAO,QAAQ,KAAK,EAAA1tB,SAAW6vB,GAAG;AACnH,UAAAE,YAAgBR,KAAI/B,aAAAE,WAAyB,QAAQ,KAAK,CAAC,OAAO,QAAQ,OAAO,KAAK,EAAA1tB,SAAW6vB,GAAG;AACpG,UAAAG,YAAgBT,KAAI/B,aAAAE,WAAyB,QAAQ,KAAK,CAAC,OAAO,OAAO,OAAO,KAAK,EAAA1tB,SAAW6vB,GAAG;AACnG,UAAAI,gBAAoBV,KAAIE;AAAa,QAEjCS,aAAWT,eAAW;AAAA,UAAAlsB;AAAA,UAAAzB,UAAAmuB,iBAAAnuB,EAAA,EAAA,MAAAytB,KAAAh3B,MAAA;AAElBgL,uDACSksB,KAAAA,eACA,KAAAF,KAAIh3B,MACC,WAAA,+DAAA,CAA8D;AAC1EuJ,gBAAAmuB;AAAAnuB,UAAA,EAAA,IAAAytB,KAAAh3B;AAAAuJ,gBAAAyB;AAAAA,MAAA,OAAA;AAAAA,eAAAzB,EAAA,EAAA;AAAA,MAAA;AALNuB,YACIE;AAAAA,IAKF,OAAA;AAAA,UACK4sB,aAAWV,eAAW;AAAA,YAAAlsB;AAAA,YAAAzB,UAAAmuB,eAAA;AAEzB1sB,gDAAA,SAAA,EACSksB,oBACK,WAAA,uCACV,UAAA,MAAQ;AACV3tB,kBAAAmuB;AAAAnuB,kBAAAyB;AAAAA,QAAA,OAAA;AAAAA,iBAAAzB,EAAA,EAAA;AAAA,QAAA;AALNuB,cACIE;AAAAA,MAKF,OAAA;AAAA,YACK6sB,aAAWX,eAAW;AAAA,cAAAlsB;AAAA,cAAAzB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGrBO,kDAACsqB,GAAAA,gBAAA,EAAyB,WAAA,oCAAA,CAAmC;AAAG/rB,oBAAAyB;AAAAA,UAAA,OAAA;AAAAA,mBAAAzB,EAAA,EAAA;AAAA,UAAA;AAAA,cAAA0B;AAAA,cAAA1B,UAAAmuB,eAAA;AADpEzsB,mBAAAnI,2BAAAA,KAAA,OAAA,EAAe,WAAA,oCACXkI,UAAAA;AAAAA,cAAAA;AAAAA,6CACA,SAAA,EAAYksB,oBAAa,UAAA,MAAmB,WAAA,kBAAA,CAAiB;AAAA,YAAA,GACjE;AAAM3tB,oBAAAmuB;AAAAnuB,oBAAA0B;AAAAA,UAAA,OAAA;AAAAA,mBAAA1B,EAAA,EAAA;AAAA,UAAA;AAJVuB,gBACIG;AAAAA,QAIF,OAAA;AAAA,cAAAD;AAAA,cAAAzB,UAAA4tB,mBAAA;AAIMnsB,kDAAC,mBAAA,EAA4B,WAAA,YAAA,CAAW;AAAGzB,oBAAA4tB;AAAA5tB,oBAAAyB;AAAAA,UAAA,OAAA;AAAAA,mBAAAzB,EAAA,EAAA;AAAA,UAAA;AAAA,cAAA0B;AAAA,cAAA1B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAC3CQ,mBAAA3J,2BAAAA,IAAC0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,mDAAkD,UAAA,wBAE1F;AAAauG,oBAAA0B;AAAAA,UAAA,OAAA;AAAAA,mBAAA1B,EAAA,EAAA;AAAA,UAAA;AAAA,cAAA2B;AAAA,cAAA3B,UAAAyB,MAAA;AAJjBE,mBAAApI,2BAAAA,KAAA,OAAA,EAAe,WAAA,4DACXkI,UAAAA;AAAAA,cAAAA;AAAAA,cACAC;AAAAA,YAAAA,GAGJ;AAAM1B,oBAAAyB;AAAAzB,oBAAA2B;AAAAA,UAAA,OAAA;AAAAA,mBAAA3B,EAAA,EAAA;AAAA,UAAA;AANVuB,gBACII;AAAAA,QAMF;AAAA,MAAA;AAAA,IAAA;AAAA,QAAAF;AAAA,QAAAzB,UAAAuB,KAAA;AAxClBE,oDAAe,WAAA,wBACX,kDAAe,WAAA,mKACVF,UAAAA,IAAAA,CAyCL,EAAA,CACJ;AAAMvB,cAAAuB;AAAAvB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0B;AAAA,QAAA1B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAIEQ,oDACI,UAAA3J,2BAAAA,IAAC0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,6GAA4G,UAAA,YAAA,CAEpJ,EAAA,CACJ;AAAMuG,cAAA0B;AAAAA,IAAA,OAAA;AAAAA,YAAA1B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2B;AAAA,QAAA3B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAGES,2CAAClI,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uCAAsC,UAAA,QAE9E;AAAauG,cAAA2B;AAAAA,IAAA,OAAA;AAAAA,YAAA3B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4B;AAAA,QAAA5B,EAAA,EAAA,MAAAytB,KAAAh3B,MAAA;AAHjBmL,4CAAA,OAAA,EACID,UAAAA;AAAAA,QAAAA;AAAAA,uCAGClI,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,yBACjCg0B,eAAIh3B,KAAAA,CACT;AAAA,MAAA,GACJ;AAAMuJ,QAAA,EAAA,IAAAytB,KAAAh3B;AAAAuJ,cAAA4B;AAAAA,IAAA,OAAA;AAAAA,YAAA5B,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8B;AAAA,QAAA9B,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEFY,2CAACrI,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uCAAsC,UAAA,QAE9E;AAAauG,cAAA8B;AAAAA,IAAA,OAAA;AAAAA,YAAA9B,EAAA,EAAA;AAAA,IAAA;AAER,UAAA+B,MAAA0rB,KAAI/B,eAAgB;AAAS,QAAA1pB;AAAA,QAAAhC,UAAA+B,KAAA;AALtCC,4CAAA,OAAA,EACIF,UAAAA;AAAAA,QAAAA;AAAAA,uCAGCrI,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,eACjCsI,UAAAA,IAAAA,CACL;AAAA,MAAA,GACJ;AAAM/B,cAAA+B;AAAA/B,cAAAgC;AAAAA,IAAA,OAAA;AAAAA,YAAAhC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiC;AAAA,QAAAjC,EAAA,EAAA,MAAAytB,KAAAzV,MAAA;AACL/V,YAAAwrB,KAAIzV,SAAA5jB,UACDmF,2BAAAA,cACI,UAAA;AAAA,QAAAxB,+BAAC0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uCAAsC,UAAA,QAE9E;AAAA,QACA1B,2BAAAA,IAAC0B,GAAAA,cAAmB,SAAA,SAAkB,WAAA,eACjC8xB,UAAAA,eAAekC,KAAIzV,IAAK,EAAA,CAC7B;AAAA,MAAA,GACJ;AACHhY,QAAA,EAAA,IAAAytB,KAAAzV;AAAAhY,cAAAiC;AAAAA,IAAA,OAAA;AAAAA,YAAAjC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAkC;AAAA,QAAAlC,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEGgB,2CAACzI,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uCAAsC,UAAA,aAE9E;AAAauG,cAAAkC;AAAAA,IAAA,OAAA;AAAAA,YAAAlC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmC;AAAA,QAAAnC,EAAA,EAAA,MAAAytB,KAAAh3B,MAAA;AAER0L,YAAA6pB,aAAayB,KAAIh3B,IAAK,KAAK;AAAGuJ,QAAA,EAAA,IAAAytB,KAAAh3B;AAAAuJ,cAAAmC;AAAAA,IAAA,OAAA;AAAAA,YAAAnC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoC;AAAA,QAAApC,UAAAmC,KAAA;AALvCC,4CAAA,OAAA,EACIF,UAAAA;AAAAA,QAAAA;AAAAA,uCAGCzI,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,yBACjC0I,UAAAA,IAAAA,CACL;AAAA,MAAA,GACJ;AAAMnC,cAAAmC;AAAAnC,cAAAoC;AAAAA,IAAA,OAAA;AAAAA,YAAApC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqC;AAAA,QAAArC,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEFmB,2CAAC5I,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uCAAsC,UAAA,QAE9E;AAAauG,cAAAqC;AAAAA,IAAA,OAAA;AAAAA,YAAArC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsC;AAAA,QAAAtC,EAAA,EAAA,MAAAytB,KAAAc,UAAA;AAHjBjsB,YAAA/I,2BAAAA,KAAA,OAAA,EAAe,WAAA,cACX8I,UAAAA;AAAAA,QAAAA;AAAAA,uCAGC5I,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,mCACjCg0B,eAAIc,SAAAA,CACT;AAAA,MAAA,GACJ;AAAMvuB,QAAA,EAAA,IAAAytB,KAAAc;AAAAvuB,cAAAsC;AAAAA,IAAA,OAAA;AAAAA,YAAAtC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuC;AAAA,QAAAvC,EAAA,EAAA,MAAA4B,OAAA5B,EAAA,EAAA,MAAAgC,OAAAhC,EAAA,EAAA,MAAAiC,OAAAjC,EAAA,EAAA,MAAAoC,OAAApC,UAAAsC,KAAA;AA1CVC,YAAAhJ,2BAAAA,KAAA,OAAA,EAAe,WAAA,0BACXqI,UAAAA;AAAAA,QAAAA;AAAAA,QAQAI;AAAAA,QAQCC;AAAAA,QAUDG;AAAAA,QAQAE;AAAAA,MAAAA,GAQJ;AAAMtC,cAAA4B;AAAA5B,cAAAgC;AAAAhC,cAAAiC;AAAAjC,cAAAoC;AAAApC,cAAAsC;AAAAtC,cAAAuC;AAAAA,IAAA,OAAA;AAAAA,YAAAvC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAwC;AAAA,QAAAxC,UAAA2tB,aAAA;AAELnrB,YAAAmrB,eACGp0B,gCAAA,OAAA,EAAe,WAAA,QACX,UAAA;AAAA,QAAAxB,+BAAC0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,kDAAiD,UAAA,OAEzF;AAAA,QACAF,2BAAAA,KAAA,OAAA,EACc,WAAA,kIACD,SAAA,MAAA;AACLY,oBAAAC,UAAAC,UAA8BszB,WAAW;AAAA,QAAC,GAG9C,UAAA;AAAA,UAAA51B,+BAAC0B,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,uEAExC;AAAA,yCACCA,GAAAA,YAAA,EAAmB,SAAA,WAAoB,WAAA,0EAAyE,UAAA,gBAAA,CAEjH;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,GACJ;AACHuG,cAAA2tB;AAAA3tB,cAAAwC;AAAAA,IAAA,OAAA;AAAAA,YAAAxC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyC;AAAA,QAAAzC,EAAA,EAAA,MAAAuC,OAAAvC,UAAAwC,KAAA;AAtELC,qDAAe,WAAA,iBACXf,UAAAA;AAAAA,QAAAA;AAAAA,QAKAa;AAAAA,QA6CCC;AAAAA,MAAAA,GAoBL;AAAMxC,cAAAuC;AAAAvC,cAAAwC;AAAAxC,cAAAyC;AAAAA,IAAA,OAAA;AAAAA,YAAAzC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA0C;AAAA,QAAA1C,EAAA,EAAA,MAAAsB,OAAAtB,UAAAyB,OAAAzB,EAAA,EAAA,MAAAyC,KAAA;AA3JdC,qDAAgB,WAAA/B,IAMZW,UAAAA;AAAAA,QAAAA;AAAAA,QA+BAG;AAAAA,QA+CIgB;AAAAA,MAAAA,GAwEJ;AAAMzC,cAAAsB;AAAAtB,cAAAyB;AAAAzB,cAAAyC;AAAAzC,cAAA0C;AAAAA,IAAA,OAAA;AAAAA,YAAA1C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2C;AAAA,QAAA3C,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAKFyB,2CAAClJ,GAAAA,YAAA,EAAmB,SAAA,aAAsB,WAAA,QAAO,UAAA,gBAEjD;AAAauG,cAAA2C;AAAAA,IAAA,OAAA;AAAAA,YAAA3C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA4C;AAAA,QAAA5C,EAAA,EAAA,MAAAytB,KAAAh3B,MAAA;AAHjBmM,4CAACwR,kBAAA,EACGzR,UAAAA;AAAAA,QAAAA;AAAAA,QAGApJ,2BAAAA,KAACE,GAAAA,YAAA,EAAqB,WAAA,wDAAuD,UAAA;AAAA,UAAA;AAAA,UAClCg0B,KAAIh3B;AAAAA,UAAM;AAAA,QAAA,EAAA,CAErD;AAAA,MAAA,GACJ;AAAgBuJ,QAAA,EAAA,IAAAytB,KAAAh3B;AAAAuJ,cAAA4C;AAAAA,IAAA,OAAA;AAAAA,YAAA5C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8C;AAAA,QAAA9C,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEZ4B,2CAAClI,aAAe,SAAA,QAAgB,SAAA,MAAMkzB,oBAAmB,KAAM,GAAG,UAAA,SAAA,CAElE;AAAS9tB,cAAA8C;AAAAA,IAAA,OAAA;AAAAA,YAAA9C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+C;AAAA,QAAA/C,UAAAgX,UAAA;AAHbjU,4CAACuR,kBAAA,EACGxR,UAAAA;AAAAA,QAAAA;AAAAA,uCAGClI,GAAAA,QAAA,EACW,SAAA,UACF,OAAA,SACG,SAAA,MAAA;AACLkzB,mCAAyB;AACzB9W,mBAAAA;AAAAA,QAAU,GAEjB,UAAA,SAAA,CAED;AAAA,MAAA,GACJ;AAAgBhX,cAAAgX;AAAAhX,cAAA+C;AAAAA,IAAA,OAAA;AAAAA,YAAA/C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgD;AAAA,QAAAhD,EAAA,EAAA,MAAA6tB,oBAAA7tB,UAAA4C,OAAA5C,EAAA,EAAA,MAAA+C,KAAA;AAxBpBC,YAAAzJ,2BAAAA,KAAC2a,GAAAA,QAAA,EAAa2Z,MAAAA,kBAAgCC,mCAC1ClrB,UAAAA;AAAAA,QAAAA;AAAAA,QASAG;AAAAA,MAAAA,GAeJ;AAAS/C,cAAA6tB;AAAA7tB,cAAA4C;AAAA5C,cAAA+C;AAAA/C,cAAAgD;AAAAA,IAAA,OAAA;AAAAA,YAAAhD,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAiD;AAAA,QAAAjD,EAAA,EAAA,MAAA0C,OAAA1C,UAAAgD,KAAA;AAzLbC,mEACIP,UAAAA;AAAAA,QAAAA;AAAAA,QA+JAM;AAAAA,MAAAA,GAyBS;AACVhD,cAAA0C;AAAA1C,cAAAgD;AAAAhD,cAAAiD;AAAAA,IAAA,OAAA;AAAAA,YAAAjD,EAAA,EAAA;AAAA,IAAA;AAAA,WA1LHiD;AAAAA,EA0LG;AAQX,WAAAurB,eAAAzuB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAAwuB;AAAAA,MAAAjC;AAAAA,MAAAkC;AAAAA,MAAA3oB;AAAAA,IAAAA,IAAAhG;AAWHmsB,uBAAmBM,WAAW;AAAC,QAAApsB;AAAA,QAAAO;AAAA,QAAAX,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAG5Bd,WAAApI,GAAAA,IAAI,qEAAmEwB,qBAAoB;AACvGmH,WAAA5I,2BAAAA,IAAA,OAAA,EAAgB,WAAAC,GAAAA,IAAI,6FAA2FwB,GAAAA,kBAAoB,GAC/H,UAAAzB,2BAAAA,IAAC0B,eAAA,EAAmB,SAAA,WAAoB,WAAA,sFAAqF,qBAE7H,GACJ;AAAMuG,aAAAI;AAAAJ,aAAAW;AAAAA,IAAA,OAAA;AAAAP,WAAAJ,EAAA,CAAA;AAAAW,WAAAX,EAAA,CAAA;AAAA,IAAA;AAOM,UAAAY,KAAA4rB,gBAAgB,OAAOA,cACjB,0EACA;AAAkG,QAAA3rB;AAAA,QAAAb,SAAAY,IAAA;AAJjGC,WAAA7I,GAAAA,IACP,oEACA4I,EAGJ;AAACZ,aAAAY;AAAAZ,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,SAAA0uB,YAAA;AACQ5tB,WAAAA,MAAM4tB,WAAW,EAAE;AAAC1uB,aAAA0uB;AAAA1uB,aAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAC;AAAA,QAAAhB,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAE7BH,0CAAC4tB,GAAAA,MAAA,EAAa,SAAA,QAAY,MAAA,YAAqB,WAAA,mBAAiB;AAChE3tB,0CAACvH,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,oBAAmB,UAAA,QAAI;AAAauG,aAAAe;AAAAf,aAAAgB;AAAAA,IAAA,OAAA;AAAAD,WAAAf,EAAA,CAAA;AAAAgB,WAAAhB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,CAAA,MAAAa,MAAAb,SAAAc,IAAA;AAV9EK,WAAA5H,2BAAAA,KAAA,OAAA,EACe,WAAAsH,IAMF,SAAAC,IAETC,UAAAA;AAAAA,QAAAA;AAAAA,QACAC;AAAAA,MAAAA,GACJ;AAAMhB,aAAAa;AAAAb,aAAAc;AAAAd,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoB;AAAA,QAAApB,EAAA,EAAA,MAAAwsB,eAAAxsB,EAAA,EAAA,MAAAyuB,WAAAzuB,EAAA,EAAA,MAAA+F,WAAA/F,UAAA0uB,YAAA;AAELttB,WAAA2E,WAAW0oB,QAAO50B,WAAA,mCACf,OAAA,EAAe,WAAA,2BACX,UAAA9B,2BAAAA,IAACsB,GAAAA,kBAAA,EAAsB,MAAA,QAAA,CAAO,EAAA,CAClC,IAEAtB,2BAAAA,aAAe,WAAA,oBACV02B,UAAAA,QAAO30B,IAAA80B,CAAAA,WAAA;AACJ,cAAArE,aAAmBiC,gBAAgBoC,OAAML;AAAU,eAE/Ch1B,2BAAAA,KAAA,OAAA,EAEe,WAAAvB,GAAAA,IACP,0EACAuyB,aACM,0EACA,kGACV,GACS,SAAA,MAAMmE,WAAWE,OAAML,QAAS,GAEzC,UAAA;AAAA,UAAAx2B,2BAAAA,IAAC82B,GAAAA,YAAA,EAAgB,MAAA,YAAqB,WAAA,sDAAoD;AAAA,yCACzFp1B,GAAAA,YAAA,EAAmB,SAAA,SAAkB,WAAA,mCACjCm1B,iBAAMn4B,KAAAA,CACX;AAAA,QAAA,EAAA,GAZKm4B,OAAML,QAaf;AAAA,MAAM,CAEb,EAAA,CACL;AACHvuB,cAAAwsB;AAAAxsB,cAAAyuB;AAAAzuB,cAAA+F;AAAA/F,cAAA0uB;AAAA1uB,cAAAoB;AAAAA,IAAA,OAAA;AAAAA,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAArB,EAAA,EAAA,MAAAmB,MAAAnB,UAAAoB,IAAA;AAjDTC,YAAA9H,2BAAAA,KAAA,OAAA,EAAgB,WAAA6G,IACZO,UAAAA;AAAAA,QAAAA;AAAAA,QAMApH,2BAAAA,KAAA,OAAA,EAAe,WAAA,8CAEX4H,UAAAA;AAAAA,UAAAA;AAAAA,UAaCC;AAAAA,QAAAA,EAAAA,CA4BL;AAAA,MAAA,GACJ;AAAMpB,cAAAmB;AAAAnB,cAAAoB;AAAApB,cAAAqB;AAAAA,IAAA,OAAA;AAAAA,YAAArB,EAAA,EAAA;AAAA,IAAA;AAAA,WAnDNqB;AAAAA,EAmDM;AAQP,QAAMytB,cAAcA,MAAM;AAC7B,UAAMC,gBAAgBC,KAAAA,iBAAAA;AACtB,UAAM7qB,qBAAqBC,KAAAA,sBAAAA;AAG3B,UAAM,CAACooB,aAAayC,cAAc,IAAIj2B,MAAAA,SAAS,EAAE;AACjD,UAAM,CAAC+M,SAASmpB,UAAU,IAAIl2B,MAAAA,SAAS,IAAI;AAC3C,UAAM,CAACuF,OAAOmoB,QAAQ,IAAI1tB,MAAAA,SAAwB,IAAI;AAGtD,UAAM,CAACy1B,SAASU,UAAU,IAAIn2B,MAAAA,SAAwB,CAAA,CAAE;AACxD,UAAM,CAACg0B,OAAOoC,QAAQ,IAAIp2B,MAAAA,SAAwB,CAAA,CAAE;AAGpD,UAAM,CAACq2B,cAAcC,eAAe,IAAIt2B,MAAAA,SAA6B,IAAI;AACzE,UAAM,CAACu2B,qBAAqBC,sBAAsB,IAAIx2B,MAAAA,SAAwB,IAAI;AAGlF,UAAM,CAACy2B,kBAAkBC,mBAAmB,IAAI12B,MAAAA,SAAS,KAAK;AAG9D,UAAM,CAAC22B,UAAUC,WAAW,IAAI52B,MAAAA,SAA0B,MAAM;AAKhE,UAAM,CAACoa,aAAaC,cAAc,IAAIra,MAAAA,SAAS,MAAM;AACjD,UAAI;AACA,cAAM2M,QAAQd,aAAaC,QAAQ,6BAA6B;AAChE,eAAOa,UAAU,OAAO2N,WAAW3N,KAAK,IAAI;AAAA,MAChD,QAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAEDgB,UAAAA,UAAU,MAAM;AACZ,UAAI;AACA9B,qBAAaiD,QAAQ,+BAA+BsL,YAAYtG,SAAAA,CAAU;AAAA,MAC9E,QAAQ;AAAA,MAAE;AAAA,IACd,GAAG,CAACsG,WAAW,CAAC;AAGhB,UAAMyc,gBAAgBtpB,kBAAY,OAAOuM,SAAiB;AACtDoc,iBAAW,IAAI;AACfxI,eAAS,IAAI;AACb,UAAI;AACA,cAAMhe,SAA4B,MAAMqmB,cAAce,KAAKhd,IAAI;AAE/D,cAAMid,eAA8BrnB,OAAOsnB,YAAY,CAAA,GAAIl2B,IAAI6c,CAAAA,SAAQ;AAAA,UACnElgB,MAAMkgB,IAAIlgB;AAAAA,UACV83B,UAAU5X,IAAI4X;AAAAA,UACd0B,UAAU;AAAA,QAAA,EACZ;AAGF,cAAMC,YAA2B,MAAM/oB,QAAQC,KAC1CsB,OAAOynB,SAAS,CAAA,GAAIr2B,IAAI,OAAO6c,UAAQ;AACpC,cAAI;AACA,kBAAMyZ,iBAAiB,MAAMrB,cAAcsB,eAAe1Z,MAAI4X,QAAQ;AACtE,mBAAO;AAAA,cACH93B,MAAMkgB,MAAIlgB;AAAAA,cACV83B,UAAU5X,MAAI4X;AAAAA,cACd0B,UAAU;AAAA,cACVjY,MAAMoY,eAAeE,UAAUtY;AAAAA,cAC/B0T,aAAa0E,eAAeE,UAAU5E;AAAAA,cACtCiC,aAAayC,eAAe7f,OAAOnc;AAAAA,YAAAA;AAAAA,UAE3C,QAAQ;AACJ,mBAAO;AAAA,cACHqC,MAAMkgB,MAAIlgB;AAAAA,cACV83B,UAAU5X,MAAI4X;AAAAA,cACd0B,UAAU;AAAA,YAAA;AAAA,UAElB;AAAA,QACJ,CAAC,CACL;AAEAd,mBAAWY,WAAW;AACtBX,iBAASc,SAAS;AAAA,MACtB,SAASj2B,GAAG;AACRwF,gBAAQlB,MAAM,uBAAuBtE,CAAC;AACtCysB,iBAASzsB,aAAa2F,QAAQ3F,EAAE0F,UAAUE,OAAO5F,CAAC,CAAC;AAAA,MACvD,UAAA;AACIi1B,mBAAW,KAAK;AAAA,MACpB;AAAA,IACJ,GAAG,CAACH,aAAa,CAAC;AAElBpoB,UAAAA,UAAU,MAAM;AACZkpB,oBAAcrD,WAAW;AAAA,IAC7B,GAAG,CAACA,aAAaqD,aAAa,CAAC;AAG/B,UAAMU,iBAAiBhqB,kBAAY,CAACuM,WAAiB;AACjDmc,qBAAenc,MAAI;AACnBwc,sBAAgB,IAAI;AACpBE,6BAAuB,IAAI;AAAA,IAC/B,GAAG,CAAA,CAAE;AAGL,UAAMgB,mBAAmBjqB,MAAAA,YAAY,MAAM;AACvC,YAAM0lB,QAAQO,YAAYjE,MAAM,GAAG,EAAE9sB,OAAO0wB,OAAO;AACnDF,YAAMwE,IAAAA;AACNF,qBAAetE,MAAMtxB,KAAK,GAAG,CAAC;AAAA,IAClC,GAAG,CAAC6xB,aAAa+D,cAAc,CAAC;AAGhC,UAAMG,mBAAmBnqB,kBAAY,OAAOknB,SAAsB;AAC9D6B,sBAAgB7B,IAAI;AACpB,UAAIA,KAAKE,aAAa;AAClB6B,+BAAuB/B,KAAKE,WAAW;AAAA,MAC3C,OAAO;AACH,YAAI;AACA,gBAAMgD,SAAS,MAAM5B,cAAcsB,eAAe5C,KAAKc,QAAQ;AAC/DiB,iCAAuBmB,OAAOpgB,GAAG;AAAA,QACrC,QAAQ;AACJif,iCAAuB,IAAI;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ,GAAG,CAACT,aAAa,CAAC;AAGlB,UAAM3B,eAAe7mB,kBAAY,OAAOqqB,gBAAwB;AAC5D,iBAAWnD,UAAQmD,aAAa;AAC5B,cAAM7B,cAAc8B,WAAW;AAAA,UAC3BpD,MAAAA;AAAAA,UACAqD,UAAUrD,OAAKh3B;AAAAA,UACfqc,MAAM0Z,eAAep4B;AAAAA,QAAAA,CACxB;AAAA,MACL;AACA+P,yBAAmBsG,KAAK;AAAA,QACpBlO,MAAM;AAAA,QACNoD,SAAS,GAAGixB,YAAY/2B,MAAM,QAAQ+2B,YAAY/2B,SAAS,IAAI,MAAM,EAAE;AAAA,MAAA,CAC1E;AACDg2B,oBAAcrD,WAAW;AAAA,IAC7B,GAAG,CAACuC,eAAevC,aAAaroB,oBAAoB0rB,aAAa,CAAC;AAGlE,UAAMkB,mBAAmBxqB,kBAAY,OAAOknB,WAAsB;AAC9D,UAAI;AACA,cAAMsB,cAAciC,WAAWvD,OAAKc,QAAQ;AAC5CpqB,2BAAmBsG,KAAK;AAAA,UAAElO,MAAM;AAAA,UAAWoD,SAAS,IAAI8tB,OAAKh3B,IAAI;AAAA,QAAA,CAAa;AAC9E64B,wBAAgB,IAAI;AACpBE,+BAAuB,IAAI;AAC3BK,sBAAcrD,WAAW;AAAA,MAC7B,SAASvyB,KAAG;AACRkK,2BAAmBsG,KAAK;AAAA,UAAElO,MAAM;AAAA,UAASoD,SAAS1F,eAAa2F,QAAQ3F,IAAE0F,UAAUE,OAAO5F,GAAC;AAAA,QAAA,CAAG;AAAA,MAClG;AAAA,IACJ,GAAG,CAAC80B,eAAevC,aAAaroB,oBAAoB0rB,aAAa,CAAC;AAGlE,UAAMoB,gBAAgB1qB,MAAAA,YAAY,MAAM;AACpCspB,oBAAcrD,WAAW;AAAA,IAC7B,GAAG,CAACA,aAAaqD,aAAa,CAAC;AAE/B,UAAMzD,WAAWF,mBAAmBM,WAAW;AAG/C,UAAM0E,iBAAiBA,MAAM;AACzB,UAAInrB,SAAS;AACT,8CACK,OAAA,EAAI,WAAU,8CACX,UAAAxM,2BAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,UAAAxB,2BAAAA,IAACsB,GAAAA,kBAAA,EAAiB,MAAK,SAAA,CAAQ;AAAA,yCAC9BI,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,iGAA+F,UAAA,aAAA,CAErI;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,MAER;AAEA,UAAI8E,OAAO;AACP,eACIxG,2BAAAA,IAAC,OAAA,EAAI,WAAU,gEACX,UAAAA,2BAAAA,IAACuB,KAAAA,WAAA,EAAU,OAAM,yBAAwB,OAAc,SAAS23B,cAAAA,CAAc,GAClF;AAAA,MAER;AAEA,YAAME,WAAW,CAAC,GAAG1C,SAAS,GAAGzB,KAAK;AAEtC,UAAImE,SAASt3B,WAAW,GAAG;AACvB,8CACK,OAAA,EAAI,WAAU,8FACX,UAAAN,2BAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,SAAI,WAAU,qCAAoC,MAAK,QAAO,QAAO,gBAAe,SAAQ,aACzF,yCAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,6EAA2E,EAAA,CACpJ;AAAA,UACAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,SAAO,UAAA,wBAE3B;AAAA,UACAF,gCAACqB,GAAAA,UAAO,WAAU,QAAO,SAAS,MAAM80B,oBAAoB,IAAI,GAC5D,UAAA;AAAA,YAAA33B,2BAAAA,IAAC8b,GAAAA,SAAA,EAAQ,MAAK,QAAA,CAAO;AAAA,YAAA;AAAA,UAAA,EAAA,CAEzB;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,MAER;AAEA,UAAI8b,aAAa,QAAQ;AACrB,8CACK,OAAA,EAAI,WAAU,2BACX,UAAAp2B,2BAAAA,KAAC,SAAA,EAAM,WAAU,UACb,UAAA;AAAA,UAAAxB,2BAAAA,IAAC,WACG,UAAAwB,2BAAAA,KAAC,MAAA,EAAG,WAAWvB,OAAI,2GAA2GwB,GAAAA,kBAAkB,GAC5I,UAAA;AAAA,YAAAzB,2BAAAA,IAAC,MAAA,EAAG,WAAU,uBAAsB,UAAA,QAAI;AAAA,YACxCA,2BAAAA,IAAC,MAAA,EAAG,WAAU,4BAA2B,UAAA,QAAI;AAAA,YAC7CA,2BAAAA,IAAC,MAAA,EAAG,WAAU,uCAAsC,UAAA,OAAA,CAAI;AAAA,UAAA,EAAA,CAC5D,EAAA,CACJ;AAAA,0CACC,SAAA,EACI02B,UAAAA;AAAAA,YAAAA,QAAQ30B,IAAI80B,CAAAA,WACTr1B,2BAAAA,KAAC,MAAA,EAEG,WAAU,0IACV,SAAS,MAAMg3B,eAAe3B,OAAOL,QAAQ,GAE7C,UAAA;AAAA,cAAAx2B,2BAAAA,IAAC,QAAG,WAAU,eACV,UAAAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,gBAAAxB,2BAAAA,IAAC82B,GAAAA,YAAA,EAAW,MAAK,YAAW,WAAU,+CAA6C;AAAA,+CAClFp1B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,oCACjCm1B,iBAAOn4B,KAAAA,CACZ;AAAA,cAAA,EAAA,CACJ,EAAA,CACJ;AAAA,cACAsB,2BAAAA,IAAC,MAAA,EAAG,WAAU,eACV,UAAAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,qDAAmD,UAAA,SAAA,CAE3F,GACJ;AAAA,cACA1B,2BAAAA,IAAC,MAAA,EAAG,WAAU,0BACV,UAAAA,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,mDAAiD,UAAA,IAAA,CAEzF,EAAA,CACJ;AAAA,YAAA,KArBKm1B,OAAOL,QAsBhB,CACH;AAAA,YACAvB,MAAMlzB,IAAI2zB,CAAAA,WAAQ;AACf,oBAAM2D,eAAe3F,YAAYgC,OAAK/B,WAAW;AACjD,oBAAMnB,aAAa8E,cAAcd,aAAad,OAAKc;AACnD,qBACIh1B,2BAAAA,KAAC,MAAA,EAEG,WAAWvB,GAAAA,IACP,2FACAuyB,aACM,oCACA,gDACV,GACA,SAAS,MAAMmG,iBAAiBjD,MAAI,GAEpC,UAAA;AAAA,gBAAA11B,2BAAAA,IAAC,QAAG,WAAU,eACV,UAAAwB,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACX,UAAA;AAAA,kBAAAxB,2BAAAA,IAAC,cAAA,EAAa,MAAK,YAAW,WAAU,oCAAkC;AAAA,iDACzE0B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,wBACjCg0B,iBAAKh3B,KAAAA,CACV;AAAA,gBAAA,EAAA,CACJ,EAAA,CACJ;AAAA,gBACAsB,2BAAAA,IAAC,MAAA,EAAG,WAAU,eACV,UAAAA,2BAAAA,IAAC0B,GAAAA,cAAW,SAAQ,WAAU,WAAU,qDACnCuyB,UAAAA,aAAayB,OAAKh3B,IAAI,KAAKg3B,OAAK/B,aAAanD,MAAM,GAAG,EAAE,CAAC,GAAG9Z,YAAAA,KAAiB,IAAA,CAClF,EAAA,CACJ;AAAA,+CACC,MAAA,EAAG,WAAU,0BACV,UAAA1W,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,2EACnCg0B,UAAAA,OAAKzV,SAAS5jB,SAAYm3B,eAAekC,OAAKzV,IAAI,IAAI,KAC3D,EAAA,CACJ;AAAA,cAAA,EAAA,GA1BKyV,OAAKc,QA2Bd;AAAA,YAER,CAAC;AAAA,UAAA,EAAA,CACL;AAAA,QAAA,EAAA,CACJ,EAAA,CACJ;AAAA,MAER;AAGA,aACIh1B,2BAAAA,KAAC,OAAA,EAAI,WAAU,+BAEVk1B,UAAAA;AAAAA,QAAAA,QAAQ50B,SAAS,KACdN,2BAAAA,KAAC,OAAA,EAAI,WAAU,QACX,UAAA;AAAA,UAAAxB,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,6GAA2G,UAAA,WAEnJ;AAAA,UACA1B,2BAAAA,IAAC,SAAI,WAAU,sFACV02B,kBAAQ30B,IAAI80B,CAAAA,6CACR,OAAA,EAEG,WAAW52B,GAAAA,IACP,oEACAwB,uBACA,kEACA,yBACJ,GACA,SAAS,MAAM+2B,eAAe3B,SAAOL,QAAQ,GAE7C,UAAA;AAAA,YAAAx2B,2BAAAA,IAAC82B,GAAAA,YAAA,EAAW,MAAK,SAAQ,WAAU,+CAA6C;AAAA,2CAC/Ep1B,GAAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,oCACjCm1B,mBAAOn4B,KAAAA,CACZ;AAAA,UAAA,KAZKm4B,SAAOL,QAahB,CACH,EAAA,CACL;AAAA,QAAA,GACJ;AAAA,QAIHvB,MAAMnzB,SAAS,KACZN,2BAAAA,KAAC,OAAA,EACG,UAAA;AAAA,UAAAA,2BAAAA,KAACE,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,6GAA2G,UAAA;AAAA,YAAA;AAAA,YACvIuzB,MAAMnzB;AAAAA,YAAO;AAAA,UAAA,GACzB;AAAA,yCACC,OAAA,EAAI,WAAU,sFACVmzB,UAAAA,MAAMlzB,IAAI2zB,CAAAA,WAAQ;AACf,kBAAM2D,iBAAe3F,YAAYgC,OAAK/B,WAAW;AACjD,kBAAMqC,MAAM/B,aAAayB,OAAKh3B,IAAI,GAAGyG,iBAAiB;AACtD,kBAAMkxB,UAAUX,OAAK/B,aAAaE,WAAW,QAAQ,KAAK,CAAC,OAAO,QAAQ,OAAO,OAAO,QAAQ,KAAK,EAAE1tB,SAAS6vB,GAAG;AACnH,kBAAMxD,eAAa8E,cAAcd,aAAad,OAAKc;AAEnD,mBACIh1B,2BAAAA,KAAC,OAAA,EAEG,WAAWvB,GAAAA,IACP,sFACAwB,uBACA,0CACA+wB,gBAAc,qBAClB,GACA,SAAS,MAAMmG,iBAAiBjD,MAAI,GAGpC,UAAA;AAAA,cAAAl0B,2BAAAA,KAAC,OAAA,EAAI,WAAU,8GACV60B,UAAAA;AAAAA,gBAAAA,WAAWX,OAAKE,cACb51B,+BAAC,SACG,KAAK01B,OAAKE,aACV,KAAKF,OAAKh3B,MACV,WAAU,sFACV,SAAQ,OAAA,CAAM,IAGlBsB,2BAAAA,IAAC,gBAAA,EAAa,WAAU,gEAA8D;AAAA,gBAIzFi0B,aAAayB,OAAKh3B,IAAI,KACnBsB,2BAAAA,IAAC,OAAA,EAAI,WAAU,8HACVi0B,UAAAA,aAAayB,OAAKh3B,IAAI,EAAA,CAC3B;AAAA,+CAIH,OAAA,EAAI,WAAWuB,GAAAA,IACZ,uDACA,gCACJ,EAAA,CAAE;AAAA,cAAA,GACN;AAAA,cAGAuB,2BAAAA,KAAC,OAAA,EAAI,WAAU,SACX,UAAA;AAAA,gBAAAxB,+BAAC0B,GAAAA,cAAW,SAAQ,SAAQ,WAAU,qEACjCg0B,iBAAKh3B,MACV;AAAA,gBACAsB,2BAAAA,IAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,OAAM,aAAY,WAAU,qCACrDg0B,UAAAA,OAAKzV,SAAS5jB,SAAYm3B,eAAekC,OAAKzV,IAAI,IAAI,IAAA,CAC3D;AAAA,cAAA,EAAA,CACJ;AAAA,YAAA,EAAA,GA5CKyV,OAAKc,QA6Cd;AAAA,UAER,CAAC,EAAA,CACL;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,GAER;AAAA,IAER;AAEA,WACIh1B,2BAAAA,KAAC,OAAA,EAAI,WAAU,iHACX,UAAA;AAAA,MAAAxB,2BAAAA,IAAC2b,GAAAA,iBAAA,EACG,aAAY,cACZ,kBAAkBN,aAClB,mBAAmBC,gBACnB,gBAAgB,KAChB,YACItb,2BAAAA,IAAC,kBACG,SACA,aACA,YAAYw4B,gBACZ,QAAA,CAAiB,GAGzB,aACIh3B,2BAAAA,KAAC,OAAA,EAAI,WAAU,sBAEX,UAAA;AAAA,QAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CAEX,UAAA;AAAA,UAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAWvB,GAAAA,IAAI,yFAAyFwB,GAAAA,kBAAkB,GAC3H,UAAA;AAAA,YAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,iEAEVizB,UAAAA;AAAAA,cAAAA,eACGz0B,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAM,SACX,yCAAC9Y,GAAAA,YAAA,EAAW,MAAK,SAAQ,SAAS82B,kBAC9B,UAAAz4B,+BAACs5B,GAAAA,eAAA,EAAc,MAAK,WAAA,CAAU,GAClC,GACJ;AAAA,cAEJt5B,2BAAAA,IAAC,OAAA,EAAI,WAAU,0DACVq0B,UAAAA,SAAStyB,IAAI,CAACw3B,KAAKp1B,MAChB3C,2BAAAA,KAAC,MAAM,UAAN,EACI2C,UAAAA;AAAAA,gBAAAA,IAAI,KACDnE,+BAAC0B,GAAAA,YAAA,EAAW,SAAQ,WAAU,WAAU,0DAAyD,UAAA,IAAA,CAAC;AAAA,gBAEtG1B,2BAAAA,IAAC6C,GAAAA,UACG,SAAQ,QACR,MAAK,SACL,WAAW5C,GAAAA,IACP,uFACAkE,MAAMkwB,SAASvyB,SAAS,IAClB,8DACA,mDACV,GACA,SAAS,MAAM02B,eAAee,IAAIxe,IAAI,GAErCwe,UAAAA,IAAI99B,MAAAA,CACT;AAAA,cAAA,EAAA,GAhBiB89B,IAAIxe,IAiBzB,CACH,GACL;AAAA,cAEA/a,2BAAAA,IAAC,OAAA,EAAI,WAAU,SAAA,CAAQ;AAAA,cAGtB,CAACgO,WACExM,2BAAAA,KAAC4jB,WAAK,MAAK,SAAQ,WAAU,wBACxB6P,UAAAA;AAAAA,gBAAAA,MAAMnzB;AAAAA,gBAAO;AAAA,gBAAMmzB,MAAMnzB,WAAW,IAAI,MAAM;AAAA,gBAC9C40B,QAAQ50B,SAAS,IAAI,KAAK40B,QAAQ50B,MAAM,UAAU40B,QAAQ50B,WAAW,IAAI,MAAM,EAAE,KAAK;AAAA,cAAA,EAAA,CAC3F;AAAA,YAAA,GAER;AAAA,YAEAN,2BAAAA,KAAC,OAAA,EAAI,WAAU,uDAEX,UAAA;AAAA,cAAAxB,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAM,aACX,UAAAza,2BAAAA,IAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,SAAS,MAAMk2B,YAAY,MAAM,GACjC,WAAW53B,GAAAA,IAAI23B,aAAa,UAAU,oCAAoC,GAE1E,UAAA53B,2BAAAA,IAAC42B,GAAAA,MAAA,EAAK,SAAQ,QAAO,MAAK,WAAA,CAAU,EAAA,CACxC,EAAA,CACJ;AAAA,cACA52B,2BAAAA,IAACya,GAAAA,SAAA,EAAQ,OAAM,aACX,UAAAza,2BAAAA,IAAC2B,GAAAA,YAAA,EACG,MAAK,SACL,SAAS,MAAMk2B,YAAY,MAAM,GACjC,WAAW53B,GAAAA,IAAI23B,aAAa,UAAU,oCAAoC,GAE1E,UAAA53B,2BAAAA,IAAC42B,GAAAA,MAAA,EAAK,SAAQ,QAAO,MAAK,WAAA,CAAU,EAAA,CACxC,EAAA,CACJ;AAAA,cAEA52B,2BAAAA,IAAC,OAAA,EAAI,WAAU,qDAAA,CAAoD;AAAA,6CAElEya,GAAAA,SAAA,EAAQ,OAAM,WACX,UAAAza,2BAAAA,IAAC2B,GAAAA,cAAW,MAAK,SAAQ,SAASu3B,eAAe,UAAUlrB,SACvD,UAAAhO,+BAAC4B,GAAAA,eAAY,MAAK,WAAA,CAAU,GAChC,GACJ;AAAA,cAEAJ,2BAAAA,KAACqB,GAAAA,QAAA,EACG,MAAK,SACL,OAAM,WACN,SAAS,MAAM80B,oBAAoB,IAAI,GAEvC,UAAA;AAAA,gBAAA33B,2BAAAA,IAACy1B,GAAAA,iBAAA,EAAgB,MAAK,YAAW,WAAU,QAAM;AAAA,gBAAA;AAAA,cAAA,EAAA,CAErD;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,GACJ;AAAA,UAGAz1B,2BAAAA,IAAC,OAAA,EAAI,WAAU,mDACVm5B,4BACL;AAAA,0CAGC,OAAA,EAAI,WAAWl5B,GAAAA,IAAI,qGAAqGwB,GAAAA,kBAAkB,GACvI,UAAA;AAAA,YAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,uCACX,UAAA;AAAA,cAAAxB,2BAAAA,IAAC,QAAA,EAAK,WAAU,wFAAsF,UAAA,QAEtG;AAAA,cACAwB,2BAAAA,KAAC,QAAA,EAAK,WAAU,+DAA6D,UAAA;AAAA,gBAAA;AAAA,gBACvEizB,eAAe;AAAA,cAAA,EAAA,CACrB;AAAA,YAAA,GACJ;AAAA,YACC6C,gBACG91B,2BAAAA,KAAC,OAAA,EAAI,WAAU,iEAA+D,UAAA;AAAA,cAAA;AAAA,cAChExB,2BAAAA,IAAC,QAAA,EAAK,WAAU,aAAas3B,uBAAa54B,KAAAA,CAAK;AAAA,YAAA,EAAA,CAC7D;AAAA,UAAA,EAAA,CAER;AAAA,QAAA,GACJ;AAAA,QAGC44B,gBACGt3B,2BAAAA,IAAC,OAAA,EAAI,WAAU,yBACX,UAAAA,2BAAAA,IAAC,kBAAA,EACG,MAAMs3B,cACN,aAAaE,qBACb,SAAS,MAAM;AACXD,0BAAgB,IAAI;AACpBE,iCAAuB,IAAI;AAAA,QAC/B,GACA,UAAU,MAAMuB,iBAAiB1B,YAAY,GAAE,EAAA,CAEvD;AAAA,MAAA,EAAA,CAER,EAAA,CACH;AAAA,MAILt3B,2BAAAA,IAAC,cAAA,EACG,MAAM03B,kBACN,aACA,SAAS,MAAMC,oBAAoB,KAAK,GACxC,UAAUtC,aAAAA,CAAa;AAAA,IAAA,GAE/B;AAAA,EAER;ACrgCA,QAAMmE,WAA4B,CAC9B;AAAA,IACI/9B,OAAO;AAAA,IACPg+B,UAAU;AAAA,IACVC,WAAW;AAAA,IACXC,OAAO,CACH;AAAA,MAAE5e,MAAM;AAAA,MAAQrc,MAAM;AAAA,MAAe+f,aAAa;AAAA,MAA0D/D,MAAM;AAAA,IAAA,GAClH;AAAA,MAAEK,MAAM;AAAA,MAAOrc,MAAM;AAAA,MAAc+f,aAAa;AAAA,MAAwD/D,MAAM;AAAA,IAAA,GAC9G;AAAA,MAAEK,MAAM;AAAA,MAAQrc,MAAM;AAAA,MAAgB+f,aAAa;AAAA,MAA6D/D,MAAM;AAAA,IAAA,GACtH;AAAA,MAAEK,MAAM;AAAA,MAAarc,MAAM;AAAA,MAAsB+f,aAAa;AAAA,MAA0E/D,MAAM;AAAA,IAAA,CAAgB;AAAA,EAEtK,GACA;AAAA,IACIjf,OAAO;AAAA,IACPg+B,UAAU;AAAA,IACVC,WAAW;AAAA,IACXC,OAAO,CACH;AAAA,MAAE5e,MAAM;AAAA,MAAWrc,MAAM;AAAA,MAAe+f,aAAa;AAAA,MAA4D/D,MAAM;AAAA,IAAA,GACvH;AAAA,MAAEK,MAAM;AAAA,MAAYrc,MAAM;AAAA,MAAW+f,aAAa;AAAA,MAA2D/D,MAAM;AAAA,IAAA,CAAS;AAAA,EAEpI,GACA;AAAA,IACIjf,OAAO;AAAA,IACPg+B,UAAU;AAAA,IACVC,WAAW;AAAA,IACXC,OAAO,CACH;AAAA,MAAE5e,MAAM;AAAA,MAAUrc,MAAM;AAAA,MAAS+f,aAAa;AAAA,MAAwD/D,MAAM;AAAA,IAAA,GAC5G;AAAA,MAAEK,MAAM;AAAA,MAAUrc,MAAM;AAAA,MAAS+f,aAAa;AAAA,MAAwD/D,MAAM;AAAA,IAAA,CAAwB;AAAA,EAE5I,CAAC;AAKE,WAAAkf,eAAA5xB,IAAA;AAAA,UAAAC,IAAAC,qBAAAA,EAAA,EAAA;AAAwB,UAAA;AAAA,MAAA2xB;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,MAAAC;AAAAA,IAAAA,IAAAhyB;AAa3B,UAAAmc,UAAgBlY,KAAAA,iBAAAA;AAChB,UAAAguB,cAAoBC,KAAAA,qBAAAA;AACpB,UAAAC,WAAiBC,eAAAA,YAAAA;AAAc,QAAA/xB;AAAA,QAAAJ,SAAAgyB,aAAA;AAErB5xB,WAAAA,MAAA;AACN4xB,oBAAWI,IAAA;AAAA,UAAAJ,aAAA,CAAA;AAAA,QAAA,CAAwB;AAAA,MAAC;AACvChyB,aAAAgyB;AAAAhyB,aAAAI;AAAAA,IAAA,OAAA;AAAAA,WAAAJ,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAW;AAAA,QAAAX,EAAA,CAAA,MAAAgyB,YAAAI,KAAA;AAAEzxB,WAAA,CAACqxB,YAAWI,GAAA;AAAKpyB,QAAA,CAAA,IAAAgyB,YAAAI;AAAApyB,aAAAW;AAAAA,IAAA,OAAA;AAAAA,WAAAX,EAAA,CAAA;AAAA,IAAA;AAFpB2G,UAAAA,UAAUvG,IAEPO,EAAiB;AAEpB,UAAA;AAAA,MAAA0xB;AAAAA,IAAAA,IAAyBC,sBAAAA;AAAmB,QAAA1xB;AAAA,QAAAZ,SAAAkc,SAAA;AAEHtb,WAAA;AAAA,QAAAsb;AAAAA,MAAAA;AAAWlc,aAAAkc;AAAAlc,aAAAY;AAAAA,IAAA,OAAA;AAAAA,WAAAZ,EAAA,CAAA;AAAA,IAAA;AAApD,UAAAuyB,eAAyC3xB;AACzC,UAAA4xB,sBAA4BC,KAAAA,QAAQ,uBAAuBF,YAAY;AACvE,UAAAG,oBAA0BD,KAAAA,QAAQ,qBAAqBF,YAAY;AACnE,UAAAI,gBAAsBF,KAAAA,QAAQ,gBAAgBF,YAAY;AAAE,QAAA1xB;AAAA,QAAAb,EAAA,CAAA,MAAA4xB,qBAAA5xB,SAAA2yB,eAAA;AAM/C9xB,YAAC+wB,qBAAqBe,kBACnBp5B,2BAAAA,cAAe,WAAA,yGACVq4B,UAAAA;AAAAA,QAAAA;AAAAA;SAEL;AACH5xB,aAAA4xB;AAAA5xB,aAAA2yB;AAAA3yB,aAAAa;AAAAA,IAAA,OAAA;AAAAA,WAAAb,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAc;AAAA,QAAAd,EAAA,CAAA,MAAAkc,WAAAlc,UAAAkyB,UAAA;AAOIpxB,WAAAywB,SAAAz3B,IAAA84B,CAAAA,4CACG,WAAA,EAAyC,cAAAA,QAAOp/B,OAE5C,UAAA;AAAA,QAAAuE,2BAAAA,IAAC0B,GAAAA,YAAA,EACW,SAAA,WACE,WAAA,MACJ,OAAA,aACI,WAAA,6EAETm5B,UAAAA,QAAOp/B,MAAAA,CACZ;AAAA,QAGAuE,2BAAAA,IAAA,OAAA,EAAe,WAAA,6DACV66B,UAAAA,QAAOlB,MAAA53B,IAAA+4B,CAAAA,SACJ96B,2BAAAA,IAAC+6B,GAAAA,MAAA,EAEY,SAAA,MAAA;AACLZ,mBAASW,KAAI/f,IAAK;AAClBoJ,kBAAO6W,qBAAAC,mBACH,yBAAuB;AAAA,YAAAlgB,MACf+f,KAAI/f;AAAAA,UAAAA,CAAA;AAAA,QAAA,GAGT,WAAA9a,OACP,6EACA,+DACJ,GAEA,UAAAuB,2BAAAA,cAAe,WAAA,oCACX,UAAA;AAAA,UAAAA,2BAAAA,cAAe,WAAA,eAEX,UAAA;AAAA,YAAAxB,2BAAAA,IAAA,OAAA,EAAgB,WAAAC,GAAAA,IAAI,yBAAyB46B,QAAOnB,SAAU,GAC1D,UAAA15B,2BAAAA,IAAC2a,KAAAA,aAAA,EACqB,kBAAA;AAAA,cAAA1V,MAAQ61B,KAAI/f;AAAAA,cAAArc,MAAao8B,KAAIp8B;AAAAA,cAAAgc,MAAaogB,KAAIpgB;AAAAA,YAAAA,GAC3D,MAAA,QAAA,CAAO,GAEpB;AAAA,YAGA1a,2BAAAA,IAAC0B,GAAAA,YAAA,EACG,cAAA,MACQ,SAAA,aACE,WAAA,sBACA,WAAA,MAETo5B,UAAAA,KAAIp8B,KAAAA,CACT;AAAA,YAGAsB,2BAAAA,IAAC0B,GAAAA,cAAmB,SAAA,WAAgB,OAAA,aAAsB,WAAA,OACrDo5B,UAAAA,KAAIrc,YAAAA,CACT;AAAA,UAAA,GACJ;AAAA,UAGAze,+BAAA,SAAY,OAAA;AAAA,YAAAk7B,WAAa;AAAA,UAAA,GACrB,UAAAl7B,2BAAAA,IAAA,OAAA,EAAe,WAAA,OACX,UAAAA,2BAAAA,IAACm7B,GAAAA,kBAAA,EAA2B,WAAA,gBAAoB,MAAA,QAAA,CAAO,EAAA,CAC3D,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ,EAAA,GA7CKL,KAAI/f,IA8Cb,CACH,EAAA,CACL;AAAA,MAAA,KA/DU8f,QAAOp/B,KAgErB,CACH;AAACwM,aAAAkc;AAAAlc,cAAAkyB;AAAAlyB,cAAAc;AAAAA,IAAA,OAAA;AAAAA,WAAAd,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAe;AAAA,QAAAf,UAAAc,IAAA;AAnENC,WAAAhJ,2BAAAA,IAAA,OAAA,EAAe,WAAA,4BACV+I,UAAAA,IAmEL;AAAMd,cAAAc;AAAAd,cAAAe;AAAAA,IAAA,OAAA;AAAAA,WAAAf,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAgB;AAAA,QAAAhB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAIFF,WAAAjJ,2BAAAA,IAAA,OAAA,EAAe,WAAA,0BACX,yCAAC0B,GAAAA,YAAA,EACW,SAAA,WACE,WAAA,MACJ,OAAA,aACI,WAAA,6EACb,yBAED,GACJ;AAAMuG,cAAAgB;AAAAA,IAAA,OAAA;AAAAA,WAAAhB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAmB;AAAA,QAAAnB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAENC,2CAAC1H,eAAA,EAAmB,SAAA,SAAc,OAAA,aAAsB,WAAA,kBAAiB,UAAA;AAAA,QAAA;AAAA,QACf;AAAA,QACtD1B,2BAAAA,IAAA,QAAA,EAAgB,WAAA,8EAA6E,UAAA,2BAE7F;AAAA,QACC;AAAA,QAAI;AAAA,MAAA,GACT;AAAaiI,cAAAmB;AAAAA,IAAA,OAAA;AAAAA,WAAAnB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAoB;AAAA,QAAApB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAITE,WAAA7H,2BAAAA,KAAA,OAAA,EAAe,WAAA,gJACX,UAAA;AAAA,QAAAA,2BAAAA,KAAA,OAAA,EAAe,WAAA,6BACX,UAAA;AAAA,UAAAA,2BAAAA,KAAA,OAAA,EAAe,WAAA,gBACX,UAAA;AAAA,YAAAxB,2BAAAA,IAAA,QAAA,EAAgB,WAAA,yCAAA,CAAwC;AAAA,YACxDA,2BAAAA,IAAA,QAAA,EAAgB,WAAA,2CAAA,CAA0C;AAAA,YAC1DA,2BAAAA,IAAA,QAAA,EAAgB,WAAA,6CAAA,CAA4C;AAAA,UAAA,GAChE;AAAA,UACAA,2BAAAA,IAAA,QAAA,EAAgB,WAAA,iEAAgE,UAAA,SAAA,CAEhF;AAAA,QAAA,GACJ;AAAA,QACAA,2BAAAA,IAAA,QAAA,EAAgB,WAAA,4DAA2D,UAAA,aAAA,CAE3E;AAAA,MAAA,GACJ;AAAMiI,cAAAoB;AAAAA,IAAA,OAAA;AAAAA,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAArB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AApCdG,qDAAe,WAAA,cACXL,UAAAA;AAAAA,QAAAA;AAAAA,QAWAG;AAAAA,QAQA5H,2BAAAA,KAAA,OAAA,EAAe,WAAA,mHAEX6H,UAAAA;AAAAA,UAAAA;AAAAA,yCAiBA,OAAA,EAAe,WAAA,6DACX,UAAArJ,2BAAAA,IAAC,4BAAwB,EAAA,CAC7B;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA,GACJ;AAAMiI,cAAAqB;AAAAA,IAAA,OAAA;AAAAA,YAAArB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAsB;AAAA,QAAAtB,UAAA+xB,UAAA;AAGLzwB,YAAAywB,UAAQj4B,IAAAuJ,KAAA;AAYPrD,cAAA+xB;AAAA/xB,cAAAsB;AAAAA,IAAA,OAAA;AAAAA,YAAAtB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuB;AAAA,QAAAvB,EAAA,EAAA,MAAA8xB,yBAAA9xB,EAAA,EAAA,MAAA6xB,2BAAA7xB,EAAA,EAAA,MAAA0yB,qBAAA1yB,UAAAwyB,uBAAAxyB,EAAA,EAAA,MAAAsB,OAAAtB,EAAA,EAAA,MAAAa,MAAAb,EAAA,EAAA,MAAAe,IAAA;AA9INQ,YAAAhI,2BAAAA,KAAC45B,GAAAA,WAAA,EAAmB,UAAA,OAEftyB,UAAAA;AAAAA,QAAAA;AAAAA,QAOAgxB;AAAAA,QACAW;AAAAA,QAGDzxB;AAAAA,QAuEAM;AAAAA,QA8CCC;AAAAA,QAcAoxB;AAAAA,QACAZ;AAAAA,MAAAA,GACL;AAAY9xB,cAAA8xB;AAAA9xB,cAAA6xB;AAAA7xB,cAAA0yB;AAAA1yB,cAAAwyB;AAAAxyB,cAAAsB;AAAAtB,cAAAa;AAAAb,cAAAe;AAAAf,cAAAuB;AAAAA,IAAA,OAAA;AAAAA,YAAAvB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAyB;AAAA,QAAAzB,EAAA,EAAA,MAAAqyB,gBAAAryB,UAAAuB,KAAA;AAnJhBE,2CAAA,OAAA,EAAU4wB,mBAAwB,WAAA,oCAC9B9wB,UAAAA,KAmJJ;AAAMvB,cAAAqyB;AAAAryB,cAAAuB;AAAAvB,cAAAyB;AAAAA,IAAA,OAAA;AAAAA,YAAAzB,EAAA,EAAA;AAAA,IAAA;AAAA,WApJNyB;AAAAA,EAoJM;AAjLP,WAAA4B,MAAA3H,GAAA;AAAA,WAiKanC,2BAAAA,KAAA,OAAA,EAA2B,WAAA,SACvB,UAAA;AAAA,MAAAxB,2BAAAA,IAAC0B,GAAAA,YAAA,EACW,SAAA,WACE,WAAA,MACJ,OAAA,aACI,WAAA,yFAETiC,UAAAA,EAAC2W,MAAAA,CACN;AAAA,MACAta,2BAAAA,IAAA,OAAA,EAAe,WAAA,QAAQ2D,YAAC03B,SAAAA,CAAU;AAAA,IAAA,EAAA,GAT5B13B,EAACiS,GAUX;AAAA,EAAM;AAgB1B,WAAA0lB,2BAAA;AAAA,UAAArzB,IAAAC,qBAAAA,EAAA,EAAA;AAAA,QAAAF;AAAA,QAAAK;AAAA,QAAAO;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAhB,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAWYnB,WAAAhI,2BAAAA,IAAA,QAAA,EAAiB+W,WAVd,mBAUkB,UAAA,UAAM;AAC3B1O,WAAArI,2BAAAA,IAAA,QAAA,EAAiBu7B,WALd,oBAKmB,UAAA,OAAM;AAC5B3yB,WAAA5I,2BAAAA,IAAA,QAAA,EAAiBukB,WATd,iBASkB,UAAA,sBAAkB;AACvC1b,WAAA7I,2BAAAA,IAAA,QAAA,EAAiBu7B,WAPd,oBAOmB,UAAA,OAAM;AAC5BzyB,WAAA9I,2BAAAA,IAAA,QAAA,EAAiB+W,WAdd,mBAckB,UAAA,QAAI;AACzBhO,WAAA/I,2BAAAA,IAAA,QAAA,EAAiBu7B,WATd,oBASkB,UAAA,KAAC;AACtBvyB,WAAAhJ,2BAAAA,IAAA,QAAA,EAAiBoY,WAfb,oBAekB,UAAA,uBAAmB;AACzCnP,WAAAjJ,2BAAAA,IAAA,QAAA,EAAiBw7B,WAZd,oBAYkB,UAAA,KAAC;AAAOvzB,aAAAD;AAAAC,aAAAI;AAAAJ,aAAAW;AAAAX,aAAAY;AAAAZ,aAAAa;AAAAb,aAAAc;AAAAd,aAAAe;AAAAf,aAAAgB;AAAAA,IAAA,OAAA;AAAAjB,WAAAC,EAAA,CAAA;AAAAI,WAAAJ,EAAA,CAAA;AAAAW,WAAAX,EAAA,CAAA;AAAAY,WAAAZ,EAAA,CAAA;AAAAa,WAAAb,EAAA,CAAA;AAAAc,WAAAd,EAAA,CAAA;AAAAe,WAAAf,EAAA,CAAA;AAAAgB,WAAAhB,EAAA,CAAA;AAAA,IAAA;AAAA,QAAAqB;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAAX;AAAA,QAAAC;AAAA,QAAApB,EAAA,CAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAG7BC,WAAApJ,2BAAAA,IAAA,QAAA,EAAiB+W,WApBd,mBAoBkB,UAAA,UAAM;AAC3B1N,WAAArJ,2BAAAA,IAAA,QAAA,EAAiBu7B,WAfd,oBAekB,UAAA,KAAC;AACtBjyB,YAAAtJ,2BAAAA,IAAA,QAAA,EAAiB+W,WAtBd,mBAsBkB,UAAA,QAAI;AACzBxN,YAAAvJ,2BAAAA,IAAA,QAAA,EAAiBu7B,WAjBd,oBAiBmB,UAAA,OAAM;AAC5B/xB,YAAAxJ,2BAAAA,IAAA,QAAA,EAAiBy7B,WAtBb,kBAsBkB,UAAA,YAAQ;AAC9B/xB,YAAA1J,2BAAAA,IAAA,QAAA,EAAiBu7B,WAnBd,oBAmBmB,UAAA,OAAM;AAC5B5xB,YAAA3J,2BAAAA,IAAA,QAAA,EAAiB+W,WA1Bd,mBA0BkB,UAAA,QAAI;AACzBnN,YAAA5J,2BAAAA,IAAA,QAAA,EAAiBu7B,WArBd,oBAqBkB,UAAA,KAAC;AACtB1xB,YAAA7J,2BAAAA,IAAA,QAAA,EAAiBoY,WA3Bb,oBA2BkB,UAAA,sBAAkB;AACxCrO,YAAA/J,2BAAAA,IAAA,QAAA,EAAiBw7B,WAxBd,oBAwBkB,UAAA,KAAC;AAAOvzB,aAAAqB;AAAArB,aAAAsB;AAAAtB,cAAAuB;AAAAvB,cAAAyB;AAAAzB,cAAA0B;AAAA1B,cAAA2B;AAAA3B,cAAA4B;AAAA5B,cAAA8B;AAAA9B,cAAAmB;AAAAnB,cAAAoB;AAAAA,IAAA,OAAA;AAAAC,YAAArB,EAAA,CAAA;AAAAsB,YAAAtB,EAAA,CAAA;AAAAuB,YAAAvB,EAAA,EAAA;AAAAyB,YAAAzB,EAAA,EAAA;AAAA0B,YAAA1B,EAAA,EAAA;AAAA2B,YAAA3B,EAAA,EAAA;AAAA4B,YAAA5B,EAAA,EAAA;AAAA8B,YAAA9B,EAAA,EAAA;AAAAmB,WAAAnB,EAAA,EAAA;AAAAoB,WAAApB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+B;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAtC,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAG7Ba,YAAAhK,2BAAAA,IAAA,QAAA,EAAiB+W,WAhCd,mBAgCkB,UAAA,SAAK;AAC1B9M,YAAAjK,2BAAAA,IAAA,QAAA,EAAiBu7B,WA3Bd,oBA2BkB,UAAA,YAAQ;AAC7BrxB,YAAAlK,2BAAAA,IAAA,QAAA,EAAiBw7B,WA7Bd,oBA6BkB,UAAA,MAAE;AACvBrxB,YAAAnK,2BAAAA,IAAA,QAAA,EAAiBukB,WAhCd,iBAgCkB,UAAA,sBAAkB;AACvCna,YAAApK,2BAAAA,IAAA,QAAA,EAAiBw7B,WA/Bd,oBA+BmB,UAAA,KAAI;AAC1BnxB,YAAArK,2BAAAA,IAAA,QAAA,EAAiBy7B,WAnCb,kBAmCkB,UAAA,YAAQ;AAC9BnxB,YAAAtK,2BAAAA,IAAA,QAAA,EAAiBw7B,WAjCd,oBAiCmB,UAAA,MAAK;AAC3BjxB,YAAAvK,2BAAAA,IAAA,QAAA,EAAiBu7B,WAjCd,oBAiCmB,UAAA,KAAI;AAAOtzB,cAAA+B;AAAA/B,cAAAgC;AAAAhC,cAAAiC;AAAAjC,cAAAkC;AAAAlC,cAAAmC;AAAAnC,cAAAoC;AAAApC,cAAAqC;AAAArC,cAAAsC;AAAAA,IAAA,OAAA;AAAAP,YAAA/B,EAAA,EAAA;AAAAgC,YAAAhC,EAAA,EAAA;AAAAiC,YAAAjC,EAAA,EAAA;AAAAkC,YAAAlC,EAAA,EAAA;AAAAmC,YAAAnC,EAAA,EAAA;AAAAoC,YAAApC,EAAA,EAAA;AAAAqC,YAAArC,EAAA,EAAA;AAAAsC,YAAAtC,EAAA,EAAA;AAAA,IAAA;AAAA,QAAAuC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAA1C,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEjCqB,YAAAxK,2BAAAA,IAAA,QAAA,EAAiBu7B,WAnCd,oBAmCmB,UAAA,eAAc;AACpC9wB,YAAAzK,2BAAAA,IAAA,QAAA,EAAiBw7B,WArCd,oBAqCkB,UAAA,MAAE;AACvB9wB,YAAA1K,2BAAAA,IAAA,QAAA,EAAiBoY,WA1Cb,oBA0CkB,UAAA,2BAAuB;AAC7CzN,YAAA3K,2BAAAA,IAAA,QAAA,EAAiBw7B,WAvCd,oBAuCkB,UAAA,KAAC;AAAOvzB,cAAAuC;AAAAvC,cAAAwC;AAAAxC,cAAAyC;AAAAzC,cAAA0C;AAAAA,IAAA,OAAA;AAAAH,YAAAvC,EAAA,EAAA;AAAAwC,YAAAxC,EAAA,EAAA;AAAAyC,YAAAzC,EAAA,EAAA;AAAA0C,YAAA1C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA2C;AAAA,QAAAC;AAAA,QAAA5C,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAE7ByB,YAAA5K,2BAAAA,IAAA,QAAA,EAAiBu7B,WAxCd,oBAwCmB,UAAA,KAAI;AAC1B1wB,YAAA7K,2BAAAA,IAAA,QAAA,EAAiBw7B,WA1Cd,oBA0CkB,UAAA,MAAE;AAAOvzB,cAAA2C;AAAA3C,cAAA4C;AAAAA,IAAA,OAAA;AAAAD,YAAA3C,EAAA,EAAA;AAAA4C,YAAA5C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA8C;AAAA,QAAA9C,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAG9B4B,YAAA/K,2BAAAA,IAAA,QAAA,EAAiB07B,WA9Cd,2BA8CmB,UAAA,0DAAyD;AAAOzzB,cAAA8C;AAAAA,IAAA,OAAA;AAAAA,YAAA9C,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA+C;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAAC;AAAA,QAAAE;AAAA,QAAA6c;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAAC;AAAA,QAAA5gB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AAEtF6B,YAAAhL,2BAAAA,IAAA,QAAA,EAAiB+W,WApDd,mBAoDkB,UAAA,SAAK;AAC1B9L,YAAAjL,2BAAAA,IAAA,QAAA,EAAiBu7B,WA/Cd,oBA+CmB,UAAA,OAAM;AAC5BrwB,YAAAlL,2BAAAA,IAAA,QAAA,EAAiBu7B,WAhDd,oBAgDkB,UAAA,QAAI;AACzBnwB,YAAApL,2BAAAA,IAAA,QAAA,EAAiBw7B,WAlDd,oBAkDkB,UAAA,MAAE;AACvBnwB,YAAArL,2BAAAA,IAAA,QAAA,EAAiBu7B,WAlDd,oBAkDkB,UAAA,SAAK;AAC1BhwB,YAAAvL,2BAAAA,IAAA,QAAA,EAAiBu7B,WAnDd,oBAmDmB,UAAA,OAAM;AAC5BnT,YAAApoB,2BAAAA,IAAA,QAAA,EAAiBw7B,WArDd,oBAqDkB,UAAA,MAAE;AACvBnT,YAAAroB,2BAAAA,IAAA,QAAA,EAAiB+W,WA3Dd,mBA2DkB,UAAA,SAAK;AAC1BuR,YAAAtoB,2BAAAA,IAAA,QAAA,EAAiBu7B,WAtDd,oBAsDkB,UAAA,WAAO;AAC5BhT,YAAAvoB,2BAAAA,IAAA,QAAA,EAAiBw7B,WAxDd,oBAwDkB,UAAA,KAAC;AACtBhT,YAAAxoB,2BAAAA,IAAA,QAAA,EAAiBu7B,WAxDd,oBAwDkB,UAAA,QAAI;AACzB9S,YAAAzoB,2BAAAA,IAAA,QAAA,EAAiBw7B,WA1Dd,oBA0DkB,UAAA,KAAC;AACtB9S,YAAA1oB,2BAAAA,IAAA,QAAA,EAAiBu7B,WA1Dd,oBA0DkB,UAAA,SAAK;AAC1B5S,YAAA3oB,2BAAAA,IAAA,QAAA,EAAiBw7B,WA5Dd,oBA4DkB,UAAA,KAAC;AACtB5S,YAAA5oB,2BAAAA,IAAA,QAAA,EAAiBukB,WA/Dd,iBA+DkB,UAAA,QAAI;AACzBsE,YAAA7oB,2BAAAA,IAAA,QAAA,EAAiBw7B,WA9Dd,oBA8DkB,UAAA,OAAG;AAAOvzB,cAAA+C;AAAA/C,cAAAgD;AAAAhD,cAAAiD;AAAAjD,cAAAmD;AAAAnD,cAAAoD;AAAApD,cAAAsD;AAAAtD,cAAAmgB;AAAAngB,cAAAogB;AAAApgB,cAAAqgB;AAAArgB,cAAAsgB;AAAAtgB,cAAAugB;AAAAvgB,cAAAwgB;AAAAxgB,cAAAygB;AAAAzgB,cAAA0gB;AAAA1gB,cAAA2gB;AAAA3gB,cAAA4gB;AAAAA,IAAA,OAAA;AAAA7d,YAAA/C,EAAA,EAAA;AAAAgD,YAAAhD,EAAA,EAAA;AAAAiD,YAAAjD,EAAA,EAAA;AAAAmD,YAAAnD,EAAA,EAAA;AAAAoD,YAAApD,EAAA,EAAA;AAAAsD,YAAAtD,EAAA,EAAA;AAAAmgB,YAAAngB,EAAA,EAAA;AAAAogB,YAAApgB,EAAA,EAAA;AAAAqgB,YAAArgB,EAAA,EAAA;AAAAsgB,YAAAtgB,EAAA,EAAA;AAAAugB,YAAAvgB,EAAA,EAAA;AAAAwgB,YAAAxgB,EAAA,EAAA;AAAAygB,YAAAzgB,EAAA,EAAA;AAAA0gB,YAAA1gB,EAAA,EAAA;AAAA2gB,YAAA3gB,EAAA,EAAA;AAAA4gB,YAAA5gB,EAAA,EAAA;AAAA,IAAA;AAAA,QAAA6gB;AAAA,QAAA7gB,EAAA,EAAA,MAAAiB,uBAAAC,IAAA,2BAAA,GAAA;AA1DnC2f,qDAAe,WAAA,sBACX9gB,UAAAA;AAAAA,QAAAA;AAAAA,QACAK;AAAAA,QACAO;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACC;AAAA,QAEDG;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAE;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAE;AAAAA,QACC;AAAA,QAEDC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACC;AAAA,QACDC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA;QAEAC;AAAAA,QACAC;AAAAA,QACC;AAAA,QAEDE;AAAAA,QACC;AAAA,QACDC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAE;AAAAA,QACAC;AAAAA,QACAE;AAAAA,QACA6c;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA;QAGA7oB,2BAAAA,IAAA,QAAA,EAAiB+W,WAtEd,mBAsEkB,UAAA,SAAK;AAAA,QAC1B/W,2BAAAA,cAAiBu7B,WAjEd,oBAiEmB,UAAA,OAAM;AAAA,QAC5Bv7B,2BAAAA,cAAiBu7B,WAlEd,oBAkEkB,UAAA,QAAI;AAAA,QACzBv7B,2BAAAA,IAAA,QAAA,EAAiBw7B,WApEd,oBAoEkB,UAAA,MAAE;AAAA,QACvBx7B,2BAAAA,IAAA,QAAA,EAAiBu7B,WApEd,oBAoEkB,UAAA,SAAK;AAAA,QAC1Bv7B,2BAAAA,IAAA,QAAA,EAAiBu7B,WArEd,oBAqEmB,UAAA,OAAM;AAAA,QAC5Bv7B,2BAAAA,IAAA,QAAA,EAAiBw7B,WAvEd,oBAuEkB,UAAA,MAAE;AAAA,QACvBx7B,2BAAAA,cAAiB+W,WA7Ed,mBA6EkB,UAAA,SAAK;AAAA,QAC1B/W,2BAAAA,IAAA,QAAA,EAAiBu7B,WAxEd,oBAwEkB,UAAA,WAAO;AAAA,QAC5Bv7B,2BAAAA,cAAiBw7B,WA1Ed,oBA0EkB,UAAA,KAAC;AAAA,QACtBx7B,2BAAAA,IAAA,QAAA,EAAiBu7B,WA1Ed,oBA0EkB,UAAA,QAAI;AAAA,QACzBv7B,2BAAAA,cAAiBw7B,WA5Ed,oBA4EkB,UAAA,KAAC;AAAA,QACtBx7B,2BAAAA,IAAA,QAAA,EAAiBukB,WA/Ed,iBA+EkB,UAAA,cAAU;AAAA,QAC/BvkB,2BAAAA,IAAA,QAAA,EAAiBw7B,WA9Ed,oBA8EkB,UAAA,KAAC;AAAA,QACtBx7B,2BAAAA,IAAA,QAAA,EAAiBoY,WAnFb,oBAmFkB,UAAA,WAAO;AAAA,QAC7BpY,2BAAAA,IAAA,QAAA,EAAiBw7B,WAhFd,oBAgFkB,UAAA,KAAC;AAAA,QACtBx7B,2BAAAA,IAAA,QAAA,EAAiBw7B,WAjFd,oBAiFkB,UAAA,KAAC;AAAA,QACtBx7B,2BAAAA,IAAA,QAAA,EAAiBukB,WApFd,iBAoFkB,UAAA,QAAI;AAAA,QACzBvkB,2BAAAA,IAAA,QAAA,EAAiBw7B,WAnFd,oBAmFkB,UAAA,MAAA,CAAG;AAAA,MAAA,GAC5B;AAAMvzB,cAAA6gB;AAAAA,IAAA,OAAA;AAAAA,YAAA7gB,EAAA,EAAA;AAAA,IAAA;AAAA,WAhFN6gB;AAAAA,EAgFM;AC9TP,WAAS6S,aAAa;AAAA,IAAEhC;AAAAA,IAAOiC,0CAAY,gBAAA,CAAA,CAAc;AAAA,EAAwB,GAAG;AACvF,UAAMC,WAAWC,KAAAA,0BAAAA;AAEjB,UAAMC,WAAsBha,MAAAA,QAAQ,MAAM;AACtC,YAAMia,QAAmB,CAAA;AACzB,YAAMC,cAActC,SAAS,CAAC,OAAO,MAAM,OAAO,SAAS;AAE3D,UAAIsC,YAAY91B,SAAS,KAAK,GAAG;AAC7B61B,cAAMv9B,KAAK;AAAA,UAAEwG,MAAM;AAAA,UAAOvG,MAAM;AAAA,UAAew9B,OAAO;AAAA,UAAYxhB,MAAM;AAAA,UAAY+D,aAAa;AAAA,UAAuB0d,qCAAO,WAAA,CAAA,CAAS;AAAA,QAAA,CAAK;AAAA,MACjJ;AACA,UAAIF,YAAY91B,SAAS,IAAI,GAAG;AAC5B61B,cAAMv9B,KAAK;AAAA,UAAEwG,MAAM;AAAA,UAAMvG,MAAM;AAAA,UAAcw9B,OAAO;AAAA,UAAYxhB,MAAM;AAAA,UAAQ+D,aAAa;AAAA,UAAsB0d,qCAAO,UAAA,CAAA,CAAQ;AAAA,QAAA,CAAK;AAAA,MACzI;AACA,UAAIF,YAAY91B,SAAS,KAAK,GAAG;AAC7B61B,cAAMv9B,KAAK;AAAA,UAAEwG,MAAM;AAAA,UAAOvG,MAAM;AAAA,UAAgBw9B,OAAO;AAAA,UAAYxhB,MAAM;AAAA,UAAY+D,aAAa;AAAA,UAAsB0d,qCAAO,WAAA,CAAA,CAAS;AAAA,QAAA,CAAK;AAAA,MACjJ;AACA,UAAIF,YAAY91B,SAAS,SAAS,GAAG;AACjC61B,cAAMv9B,KAAK;AAAA,UAAEwG,MAAM;AAAA,UAAWvG,MAAM;AAAA,UAAWw9B,OAAO;AAAA,UAAWxhB,MAAM;AAAA,UAAS+D,aAAa;AAAA,UAAwB0d,qCAAO,aAAA,CAAA,CAAW;AAAA,QAAA,CAAK;AAAA,MAChJ;AAGA,aAAOH;AAAAA,IACX,GAAG,CAACrC,KAAK,CAAC;AAEVyC,UAAAA,gBAAgB,MAAM;AAClBP,eAASQ,eAAe;AAAA,QAAE1C;AAAAA,QAAOiC;AAAAA,QAAUG;AAAAA,MAAAA,CAAU;AACrD,aAAO,MAAMF,SAASS,iBAAAA;AAAAA,IAC1B,GAAG,CAACT,UAAUlC,OAAOiC,UAAUG,QAAQ,CAAC;AAExC,WAAO;AAAA,EACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}