@shepai/cli 1.76.0 → 1.77.0-pr244.422e487

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 (692) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +21 -0
  2. package/apis/json-schema/Settings.yaml +3 -0
  3. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +1 -0
  4. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +4 -1
  6. package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +5 -2
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  10. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  11. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +7 -2
  13. package/dist/packages/core/src/domain/generated/output.d.ts +21 -0
  14. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/di/container.js +6 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +6 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +17 -0
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +27 -0
  22. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +13 -3
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +220 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -0
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.js +66 -0
  27. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +1 -0
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +3 -0
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +1 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +10 -1
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/lifecycle-context.js +1 -0
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts +21 -0
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -0
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +60 -0
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +1 -2
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts +25 -0
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.d.ts.map +1 -0
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/fast-implement.prompt.js +176 -0
  43. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts +10 -0
  44. package/dist/packages/core/src/infrastructure/services/settings.service.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/settings.service.js +15 -0
  46. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts +1 -1
  47. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +8 -3
  49. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  50. package/dist/src/presentation/cli/commands/feat/new.command.js +2 -0
  51. package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
  52. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  53. package/dist/src/presentation/web/app/actions/create-feature.js +3 -1
  54. package/dist/src/presentation/web/app/actions/load-settings.d.ts +9 -0
  55. package/dist/src/presentation/web/app/actions/load-settings.d.ts.map +1 -0
  56. package/dist/src/presentation/web/app/actions/load-settings.js +33 -0
  57. package/dist/src/presentation/web/app/actions/update-settings.d.ts +11 -0
  58. package/dist/src/presentation/web/app/actions/update-settings.d.ts.map +1 -0
  59. package/dist/src/presentation/web/app/actions/update-settings.js +45 -0
  60. package/dist/src/presentation/web/app/global-error.d.ts +7 -0
  61. package/dist/src/presentation/web/app/global-error.d.ts.map +1 -0
  62. package/dist/src/presentation/web/app/global-error.js +5 -0
  63. package/dist/src/presentation/web/app/settings/page.d.ts +4 -0
  64. package/dist/src/presentation/web/app/settings/page.d.ts.map +1 -0
  65. package/dist/src/presentation/web/app/settings/page.js +12 -0
  66. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
  67. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +5 -1
  69. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +18 -0
  70. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +49 -0
  72. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  73. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +28 -4
  74. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +4 -1
  75. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +6 -3
  77. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +1 -1
  78. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts +1 -0
  79. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.d.ts.map +1 -1
  80. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.stories.js +71 -2
  81. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts +6 -0
  82. package/dist/src/presentation/web/components/features/settings/agent-settings-section.d.ts.map +1 -0
  83. package/dist/src/presentation/web/components/features/settings/agent-settings-section.js +71 -0
  84. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts +16 -0
  85. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.d.ts.map +1 -0
  86. package/dist/src/presentation/web/components/features/settings/agent-settings-section.stories.js +36 -0
  87. package/dist/src/presentation/web/components/features/settings/database-settings-section.d.ts +6 -0
  88. package/dist/src/presentation/web/components/features/settings/database-settings-section.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/features/settings/database-settings-section.js +8 -0
  90. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.d.ts +15 -0
  91. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.d.ts.map +1 -0
  92. package/dist/src/presentation/web/components/features/settings/database-settings-section.stories.js +22 -0
  93. package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts +6 -0
  94. package/dist/src/presentation/web/components/features/settings/environment-settings-section.d.ts.map +1 -0
  95. package/dist/src/presentation/web/components/features/settings/environment-settings-section.js +54 -0
  96. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.d.ts +15 -0
  97. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.d.ts.map +1 -0
  98. package/dist/src/presentation/web/components/features/settings/environment-settings-section.stories.js +27 -0
  99. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts +6 -0
  100. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -0
  101. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +45 -0
  102. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts +16 -0
  103. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -0
  104. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +37 -0
  105. package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts +6 -0
  106. package/dist/src/presentation/web/components/features/settings/notification-settings-section.d.ts.map +1 -0
  107. package/dist/src/presentation/web/components/features/settings/notification-settings-section.js +68 -0
  108. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts +16 -0
  109. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.d.ts.map +1 -0
  110. package/dist/src/presentation/web/components/features/settings/notification-settings-section.stories.js +62 -0
  111. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts +8 -0
  112. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -0
  113. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +21 -0
  114. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts +15 -0
  115. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -0
  116. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +39 -0
  117. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts +6 -0
  118. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -0
  119. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +76 -0
  120. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts +16 -0
  121. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -0
  122. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +55 -0
  123. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  124. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  125. package/dist/src/presentation/web/components/ui/switch.d.ts +7 -0
  126. package/dist/src/presentation/web/components/ui/switch.d.ts.map +1 -0
  127. package/dist/src/presentation/web/components/ui/switch.js +8 -0
  128. package/dist/src/presentation/web/hooks/use-graph-state.d.ts +2 -0
  129. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  130. package/dist/src/presentation/web/hooks/use-graph-state.js +4 -0
  131. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts +1 -0
  132. package/dist/src/presentation/web/hooks/use-viewport-persistence.d.ts.map +1 -1
  133. package/dist/src/presentation/web/lib/feature-flags.d.ts +14 -2
  134. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  135. package/dist/src/presentation/web/lib/feature-flags.js +39 -4
  136. package/dist/tsconfig.build.tsbuildinfo +1 -1
  137. package/package.json +1 -1
  138. package/web/.next/BUILD_ID +1 -1
  139. package/web/.next/app-path-routes-manifest.json +1 -0
  140. package/web/.next/build-manifest.json +6 -6
  141. package/web/.next/cache/.previewinfo +1 -1
  142. package/web/.next/cache/.rscinfo +1 -1
  143. package/web/.next/cache/.tsbuildinfo +1 -1
  144. package/web/.next/cache/config.json +3 -3
  145. package/web/.next/fallback-build-manifest.json +2 -2
  146. package/web/.next/prerender-manifest.json +3 -3
  147. package/web/.next/required-server-files.js +1 -1
  148. package/web/.next/required-server-files.json +1 -1
  149. package/web/.next/routes-manifest.json +6 -0
  150. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  151. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  152. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +8 -7
  153. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  154. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  156. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  157. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +8 -7
  158. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  159. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  161. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  162. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +8 -7
  163. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  164. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  166. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  167. package/web/.next/server/app/(dashboard)/create/page.js +8 -7
  168. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  169. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  171. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  172. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +8 -7
  173. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  174. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  175. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  176. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  177. package/web/.next/server/app/(dashboard)/page.js +8 -7
  178. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  179. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  180. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  181. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  182. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +8 -7
  183. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  184. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  185. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  186. package/web/.next/server/app/_global-error/page.js +4 -3
  187. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  188. package/web/.next/server/app/_global-error.html +2 -2
  189. package/web/.next/server/app/_global-error.rsc +1 -1
  190. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  191. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  192. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  193. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  194. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  195. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  196. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  197. package/web/.next/server/app/_not-found/page.js +9 -7
  198. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  199. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  201. package/web/.next/server/app/settings/page/build-manifest.json +18 -0
  202. package/web/.next/server/app/settings/page/next-font-manifest.json +6 -0
  203. package/web/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  204. package/web/.next/server/app/settings/page/server-reference-manifest.json +50 -0
  205. package/web/.next/server/app/settings/page.js +18 -0
  206. package/web/.next/server/app/settings/page.js.map +5 -0
  207. package/web/.next/server/app/settings/page.js.nft.json +1 -0
  208. package/web/.next/server/app/settings/page_client-reference-manifest.js +2 -0
  209. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  210. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  211. package/web/.next/server/app/skills/page.js +11 -8
  212. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  213. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  215. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  216. package/web/.next/server/app/tools/page.js +9 -7
  217. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  218. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  219. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  220. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  221. package/web/.next/server/app/version/page.js +8 -7
  222. package/web/.next/server/app/version/page.js.nft.json +1 -1
  223. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  224. package/web/.next/server/app-paths-manifest.json +1 -0
  225. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/403f9_next_dist_190bdc35._.js +4 -0
  227. package/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js.map → 403f9_next_dist_190bdc35._.js.map} +1 -1
  228. package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +6 -0
  229. package/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js.map +1 -0
  230. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +6 -0
  231. package/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js +3 -0
  233. package/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js.map +1 -0
  234. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js +3 -0
  235. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js.map +1 -0
  236. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js → 403f9_next_dist_esm_build_templates_app-page_2eacac96.js} +3 -3
  237. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js.map +1 -0
  238. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_c27615b6.js → 403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js} +3 -3
  239. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js.map +1 -0
  240. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js → server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js} +3 -3
  241. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_dbf21e04.js → 403f9_next_dist_esm_build_templates_app-page_6c70ecca.js} +3 -3
  243. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_6c70ecca.js.map +1 -0
  244. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d302115b.js → server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js} +3 -3
  245. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js.map +1 -0
  246. package/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_d302115b.js → 403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js} +3 -3
  247. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js +4 -0
  249. package/web/.next/server/chunks/ssr/{_884ddade._.js.map → 403f9_next_dist_esm_build_templates_app-page_d82f78f0.js.map} +1 -1
  250. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  251. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  253. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  255. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js +3 -0
  257. package/web/.next/server/chunks/ssr/{[root-of-the-server]__8a947500._.js.map → [root-of-the-server]__0880ff0e._.js.map} +1 -1
  258. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js → [root-of-the-server]__09af7f56._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js.map → [root-of-the-server]__09af7f56._.js.map} +1 -1
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +4 -0
  261. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6b17a22d._.js.map → [root-of-the-server]__11033878._.js.map} +1 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js +4 -0
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js.map +1 -0
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +3 -0
  265. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6ee2450e._.js.map → [root-of-the-server]__23b5ca2c._.js.map} +1 -1
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js +3 -0
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js.map +1 -0
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +3 -0
  269. package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js.map → [root-of-the-server]__357d99f9._.js.map} +1 -1
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js +3 -0
  271. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c18f84a4._.js.map → [root-of-the-server]__5edfc56b._.js.map} +1 -1
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +3 -0
  273. package/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js.map +1 -0
  274. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js +3 -0
  275. package/web/.next/server/chunks/ssr/{[root-of-the-server]__fa87595c._.js.map → [root-of-the-server]__8c88ef55._.js.map} +1 -1
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js +3 -0
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js +3 -0
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js.map +1 -0
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3c963c6._.js +3 -0
  283. package/web/.next/server/chunks/ssr/{[root-of-the-server]__2018e25f._.js.map → [root-of-the-server]__c3c963c6._.js.map} +1 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +3 -0
  285. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3b4af5ae._.js.map → [root-of-the-server]__c9777776._.js.map} +1 -1
  286. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js +3 -0
  287. package/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js.map +1 -0
  288. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +4 -0
  289. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js.map +1 -0
  290. package/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js +4 -0
  291. package/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js.map +1 -0
  292. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +4 -0
  293. package/web/.next/server/chunks/ssr/{[root-of-the-server]__804c006d._.js.map → [root-of-the-server]__fdc75809._.js.map} +1 -1
  294. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js → server/chunks/ssr/_16235e5e._.js} +3 -3
  295. package/web/.next/server/chunks/ssr/_16235e5e._.js.map +1 -0
  296. package/web/.next/server/chunks/ssr/_3a4c94e3._.js +3 -0
  297. package/web/.next/server/chunks/ssr/_3a4c94e3._.js.map +1 -0
  298. package/web/.next/server/chunks/ssr/_4b60a2b7._.js +3 -0
  299. package/web/.next/server/chunks/ssr/_4b60a2b7._.js.map +1 -0
  300. package/web/.next/server/chunks/ssr/_6645f218._.js +21 -0
  301. package/web/.next/server/chunks/ssr/_6645f218._.js.map +1 -0
  302. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_ad8a094f._.js → server/chunks/ssr/_6887cba3._.js} +3 -3
  303. package/web/.next/server/chunks/ssr/_6887cba3._.js.map +1 -0
  304. package/web/.next/server/chunks/ssr/_6d5ca3fe._.js +3 -0
  305. package/web/.next/server/chunks/ssr/_6d5ca3fe._.js.map +1 -0
  306. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  307. package/web/.next/server/chunks/ssr/_77989807._.js +3 -0
  308. package/web/.next/server/chunks/ssr/_77989807._.js.map +1 -0
  309. package/web/.next/server/chunks/ssr/_800acf27._.js +3 -0
  310. package/web/.next/server/chunks/ssr/_800acf27._.js.map +1 -0
  311. package/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js → _8eeee4db._.js} +3 -3
  312. package/web/.next/server/chunks/ssr/_8eeee4db._.js.map +1 -0
  313. package/web/.next/server/chunks/ssr/_9025abb8._.js +3 -0
  314. package/web/.next/server/chunks/ssr/_9025abb8._.js.map +1 -0
  315. package/web/.next/server/chunks/ssr/_9603ace6._.js +3 -0
  316. package/web/.next/server/chunks/ssr/_9603ace6._.js.map +1 -0
  317. package/web/.next/server/chunks/ssr/_ad771b49._.js +6 -0
  318. package/web/.next/server/chunks/ssr/_ad771b49._.js.map +1 -0
  319. package/web/.next/server/chunks/ssr/_b11878f5._.js +3 -0
  320. package/web/.next/server/chunks/ssr/_b11878f5._.js.map +1 -0
  321. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_3197d5cb._.js → server/chunks/ssr/_caf236b9._.js} +2 -2
  322. package/web/.next/server/chunks/ssr/_caf236b9._.js.map +1 -0
  323. package/web/.next/server/chunks/ssr/_ce38ef23._.js +9 -0
  324. package/web/.next/server/chunks/ssr/_ce38ef23._.js.map +1 -0
  325. package/web/.next/server/chunks/ssr/_d13defa2._.js +3 -0
  326. package/web/.next/server/chunks/ssr/_d13defa2._.js.map +1 -0
  327. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_884ddade._.js → server/chunks/ssr/_ed11dcd6._.js} +3 -3
  328. package/web/.next/server/chunks/ssr/_ed11dcd6._.js.map +1 -0
  329. package/web/.next/server/chunks/ssr/_f0132aa7._.js +7 -0
  330. package/web/.next/server/chunks/ssr/_f0132aa7._.js.map +1 -0
  331. package/web/.next/server/chunks/ssr/_f38b49fe._.js +3 -0
  332. package/web/.next/server/chunks/ssr/_f38b49fe._.js.map +1 -0
  333. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js → server/chunks/ssr/_f4d222d6._.js} +3 -3
  334. package/web/.next/server/chunks/ssr/_f4d222d6._.js.map +1 -0
  335. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +3 -0
  336. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -0
  337. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +3 -0
  338. package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +1 -0
  339. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  340. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  341. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  342. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  343. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  344. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  345. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  346. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  347. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  348. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  349. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +3 -0
  350. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -0
  351. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +3 -0
  352. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -0
  353. package/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js +3 -0
  354. package/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js.map +1 -0
  355. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  356. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  357. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  358. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  359. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js +3 -0
  360. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js.map +1 -0
  361. package/web/.next/server/middleware-build-manifest.js +4 -4
  362. package/web/.next/server/pages/500.html +2 -2
  363. package/web/.next/server/server-reference-manifest.js +1 -1
  364. package/web/.next/server/server-reference-manifest.json +59 -22
  365. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  366. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  367. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +6 -6
  368. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  369. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  370. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
  371. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  372. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  373. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +8 -7
  374. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  375. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  376. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  377. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  378. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +8 -7
  379. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  380. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  381. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  382. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  383. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +8 -7
  384. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  385. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  386. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  387. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  388. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +8 -7
  389. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  390. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  391. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  392. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  393. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +8 -7
  394. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  395. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  396. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  397. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  398. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +8 -7
  399. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  400. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  401. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  402. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  403. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +8 -7
  404. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  405. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  406. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  407. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js +4 -3
  408. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  409. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  410. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  411. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  412. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  413. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  414. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  415. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  416. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  417. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  418. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js +9 -7
  419. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  420. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  421. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  422. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/build-manifest.json +18 -0
  423. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/next-font-manifest.json +6 -0
  424. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  425. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page/server-reference-manifest.json +50 -0
  426. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js +18 -0
  427. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js.map +5 -0
  428. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page.js.nft.json +1 -0
  429. package/web/.next/standalone/src/presentation/web/.next/server/app/settings/page_client-reference-manifest.js +2 -0
  430. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +4 -4
  431. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  432. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +11 -8
  433. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  434. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  435. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +4 -4
  436. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  437. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +9 -7
  438. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  439. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  440. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +4 -4
  441. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  442. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +8 -7
  443. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  444. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  445. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  446. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_190bdc35._.js +4 -0
  447. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_31ea46d3._.js +6 -0
  448. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_c9d9b4d7._.js +6 -0
  449. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_compiled_dc550646._.js +3 -0
  450. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_3981ee1d._.js +3 -0
  451. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_2eacac96.js +4 -0
  452. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_c27615b6.js → 403f9_next_dist_esm_build_templates_app-page_46d6bf1b.js} +3 -3
  453. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_54b1e179.js +4 -0
  454. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_esm_build_templates_app-page_dbf21e04.js → 403f9_next_dist_esm_build_templates_app-page_6c70ecca.js} +3 -3
  455. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c9978986.js +4 -0
  456. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_ce6dae5d.js +4 -0
  457. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d82f78f0.js +4 -0
  458. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  459. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  460. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  461. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__0880ff0e._.js +3 -0
  462. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__c37779e6._.js → [root-of-the-server]__09af7f56._.js} +2 -2
  463. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +4 -0
  464. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__1e4ddb05._.js +4 -0
  465. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__23b5ca2c._.js +3 -0
  466. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2f487654._.js +3 -0
  467. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +3 -0
  468. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5edfc56b._.js +3 -0
  469. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6eb2a2b0._.js +3 -0
  470. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c88ef55._.js +3 -0
  471. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  472. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ad2b2a3c._.js +3 -0
  473. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c0876a83._.js +3 -0
  474. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c3c963c6._.js +3 -0
  475. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c9777776._.js +3 -0
  476. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c9eacb2e._.js +3 -0
  477. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +4 -0
  478. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fb243197._.js +4 -0
  479. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +4 -0
  480. package/web/.next/{server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js → standalone/src/presentation/web/.next/server/chunks/ssr/_16235e5e._.js} +3 -3
  481. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_3a4c94e3._.js +3 -0
  482. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_4b60a2b7._.js +3 -0
  483. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6645f218._.js +21 -0
  484. package/web/.next/{server/chunks/ssr/_ad8a094f._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_6887cba3._.js} +3 -3
  485. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_6d5ca3fe._.js +3 -0
  486. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_77989807._.js +3 -0
  487. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_800acf27._.js +3 -0
  488. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{403f9_next_dist_6c821c12._.js → _8eeee4db._.js} +3 -3
  489. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9025abb8._.js +3 -0
  490. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9603ace6._.js +3 -0
  491. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ad771b49._.js +6 -0
  492. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_b11878f5._.js +3 -0
  493. package/web/.next/{server/chunks/ssr/_3197d5cb._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_caf236b9._.js} +2 -2
  494. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_ce38ef23._.js +9 -0
  495. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_d13defa2._.js +3 -0
  496. package/web/.next/{server/chunks/ssr/_884ddade._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_ed11dcd6._.js} +3 -3
  497. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_f0132aa7._.js +7 -0
  498. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_f38b49fe._.js +3 -0
  499. package/web/.next/{server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js → standalone/src/presentation/web/.next/server/chunks/ssr/_f4d222d6._.js} +3 -3
  500. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +3 -0
  501. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js +3 -0
  502. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  503. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  504. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  505. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  506. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  507. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +3 -0
  508. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +3 -0
  509. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_app_global-error_tsx_14c389b5._.js +3 -0
  510. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  511. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  512. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_label_tsx_af3b4cd6._.js +3 -0
  513. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +4 -4
  514. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  515. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  516. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +59 -22
  517. package/web/.next/standalone/src/presentation/web/app/actions/create-feature.ts +6 -1
  518. package/web/.next/standalone/src/presentation/web/app/actions/load-settings.ts +43 -0
  519. package/web/.next/standalone/src/presentation/web/app/actions/update-settings.ts +73 -0
  520. package/web/.next/standalone/src/presentation/web/app/global-error.tsx +23 -0
  521. package/web/.next/standalone/src/presentation/web/app/settings/page.tsx +27 -0
  522. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.tsx +57 -0
  523. package/web/.next/standalone/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.tsx +21 -0
  524. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +32 -4
  525. package/web/.next/standalone/src/presentation/web/components/features/control-center/use-control-center-state.ts +9 -4
  526. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.stories.tsx +81 -2
  527. package/web/.next/standalone/src/presentation/web/components/features/features-canvas/features-canvas.tsx +1 -1
  528. package/web/.next/standalone/src/presentation/web/components/features/settings/agent-settings-section.stories.tsx +43 -0
  529. package/web/.next/standalone/src/presentation/web/components/features/settings/agent-settings-section.tsx +176 -0
  530. package/web/.next/standalone/src/presentation/web/components/features/settings/database-settings-section.stories.tsx +28 -0
  531. package/web/.next/standalone/src/presentation/web/components/features/settings/database-settings-section.tsx +43 -0
  532. package/web/.next/standalone/src/presentation/web/components/features/settings/environment-settings-section.stories.tsx +33 -0
  533. package/web/.next/standalone/src/presentation/web/components/features/settings/environment-settings-section.tsx +125 -0
  534. package/web/.next/standalone/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.tsx +44 -0
  535. package/web/.next/standalone/src/presentation/web/components/features/settings/feature-flags-settings-section.tsx +94 -0
  536. package/web/.next/standalone/src/presentation/web/components/features/settings/notification-settings-section.stories.tsx +71 -0
  537. package/web/.next/standalone/src/presentation/web/components/features/settings/notification-settings-section.tsx +178 -0
  538. package/web/.next/standalone/src/presentation/web/components/features/settings/settings-page-client.stories.tsx +46 -0
  539. package/web/.next/standalone/src/presentation/web/components/features/settings/settings-page-client.tsx +60 -0
  540. package/web/.next/standalone/src/presentation/web/components/features/settings/workflow-settings-section.stories.tsx +62 -0
  541. package/web/.next/standalone/src/presentation/web/components/features/settings/workflow-settings-section.tsx +274 -0
  542. package/web/.next/standalone/src/presentation/web/components/layouts/app-sidebar/app-sidebar.tsx +7 -1
  543. package/web/.next/standalone/src/presentation/web/components/ui/switch.tsx +35 -0
  544. package/web/.next/standalone/src/presentation/web/hooks/use-graph-state.ts +7 -0
  545. package/web/.next/standalone/src/presentation/web/hooks/use-viewport-persistence.ts +2 -0
  546. package/web/.next/standalone/src/presentation/web/lib/feature-flags.ts +47 -4
  547. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  548. package/web/.next/static/chunks/0c9c6fa052f30692.js +1 -0
  549. package/web/.next/static/chunks/12c0a9e7b566f998.css +2 -0
  550. package/web/.next/static/chunks/2500bf7056aaeff1.js +1 -0
  551. package/web/.next/static/chunks/27a80588cf4e08df.js +1 -0
  552. package/web/.next/static/chunks/27f7260befce4dea.js +1 -0
  553. package/web/.next/static/chunks/2bbd5c12e2c90c0c.js +1 -0
  554. package/web/.next/static/chunks/356ebc89a2a97627.js +1 -0
  555. package/web/.next/static/chunks/3b37508221559c80.js +1 -0
  556. package/web/.next/static/chunks/3e4dc2cc60a49743.js +1 -0
  557. package/web/.next/static/chunks/{716547ef8d13139d.js → 4d4a4111dec5f70f.js} +1 -1
  558. package/web/.next/static/chunks/700501f5ac2bb320.js +1 -0
  559. package/web/.next/static/chunks/736bef33b328e5e6.js +1 -0
  560. package/web/.next/static/chunks/8857165c23fc8fe5.js +1 -0
  561. package/web/.next/static/chunks/89aac43287d73b02.js +1 -0
  562. package/web/.next/static/chunks/9c74a889605bb2a3.js +1 -0
  563. package/web/.next/static/chunks/a5c6c77b79b9ed9b.js +1 -0
  564. package/web/.next/static/chunks/b1c0e555cf7bb4f8.js +1 -0
  565. package/web/.next/static/chunks/d0732d738a696000.js +1 -0
  566. package/web/.next/static/chunks/{07f00e2e73d322d2.js → d4d8f0a137bd2eb4.js} +3 -3
  567. package/web/.next/static/chunks/d9c55c5f00f6d29b.js +1 -0
  568. package/web/.next/static/chunks/db55ff93af6c8455.js +4 -0
  569. package/web/.next/static/chunks/{00adfce42dbbd5ef.js → f742ff5c1be2ef77.js} +1 -1
  570. package/web/.next/static/chunks/f97fd41212035056.js +11 -0
  571. package/web/.next/static/chunks/fa9742636bdfcce6.js +1 -0
  572. package/web/.next/static/chunks/{turbopack-05820f781f3ffc22.js → turbopack-3bdf15471eef2eec.js} +1 -1
  573. package/web/.next/trace +1 -1
  574. package/web/.next/trace-build +1 -1
  575. package/web/.next/types/link.d.ts +1 -0
  576. package/web/.next/types/routes.d.ts +2 -1
  577. package/web/.next/types/validator.ts +9 -0
  578. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js +0 -3
  579. package/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js.map +0 -1
  580. package/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js +0 -3
  581. package/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js.map +0 -1
  582. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js +0 -4
  583. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js.map +0 -1
  584. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_8e8822d6.js.map +0 -1
  585. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_9d039634.js.map +0 -1
  586. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_bec3d8d3.js.map +0 -1
  587. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_c27615b6.js.map +0 -1
  588. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_d302115b.js.map +0 -1
  589. package/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_dbf21e04.js.map +0 -1
  590. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +0 -4
  591. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +0 -1
  592. package/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +0 -3
  593. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +0 -3
  594. package/web/.next/server/chunks/ssr/[root-of-the-server]__3b4af5ae._.js +0 -3
  595. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +0 -4
  596. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +0 -1
  597. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +0 -3
  598. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +0 -1
  599. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +0 -4
  600. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +0 -4
  601. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +0 -1
  602. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ee2450e._.js +0 -3
  603. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +0 -4
  604. package/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js +0 -3
  605. package/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js.map +0 -1
  606. package/web/.next/server/chunks/ssr/[root-of-the-server]__8a947500._.js +0 -3
  607. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +0 -3
  608. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +0 -1
  609. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +0 -3
  610. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +0 -3
  611. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js.map +0 -1
  612. package/web/.next/server/chunks/ssr/[root-of-the-server]__fa87595c._.js +0 -3
  613. package/web/.next/server/chunks/ssr/_07c2a32a._.js +0 -9
  614. package/web/.next/server/chunks/ssr/_07c2a32a._.js.map +0 -1
  615. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +0 -3
  616. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +0 -1
  617. package/web/.next/server/chunks/ssr/_3197d5cb._.js.map +0 -1
  618. package/web/.next/server/chunks/ssr/_380c6567._.js +0 -6
  619. package/web/.next/server/chunks/ssr/_380c6567._.js.map +0 -1
  620. package/web/.next/server/chunks/ssr/_44cce4e0._.js +0 -4
  621. package/web/.next/server/chunks/ssr/_44cce4e0._.js.map +0 -1
  622. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js +0 -7
  623. package/web/.next/server/chunks/ssr/_5ee4f5a7._.js.map +0 -1
  624. package/web/.next/server/chunks/ssr/_61351ed3._.js +0 -3
  625. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +0 -1
  626. package/web/.next/server/chunks/ssr/_8400c8bb._.js +0 -3
  627. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +0 -1
  628. package/web/.next/server/chunks/ssr/_9f940437._.js +0 -3
  629. package/web/.next/server/chunks/ssr/_9f940437._.js.map +0 -1
  630. package/web/.next/server/chunks/ssr/_a29296f0._.js +0 -3
  631. package/web/.next/server/chunks/ssr/_a29296f0._.js.map +0 -1
  632. package/web/.next/server/chunks/ssr/_a3854150._.js +0 -6
  633. package/web/.next/server/chunks/ssr/_a3854150._.js.map +0 -1
  634. package/web/.next/server/chunks/ssr/_ad8a094f._.js.map +0 -1
  635. package/web/.next/server/chunks/ssr/_dc379243._.js +0 -4
  636. package/web/.next/server/chunks/ssr/_dc379243._.js.map +0 -1
  637. package/web/.next/server/chunks/ssr/_e806976d._.js +0 -3
  638. package/web/.next/server/chunks/ssr/_e806976d._.js.map +0 -1
  639. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +0 -3
  640. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js.map +0 -1
  641. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_client_components_builtin_global-error_5fefc4d7.js +0 -3
  642. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_d738ab66._.js +0 -3
  643. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/403f9_next_dist_esm_build_templates_app-page_0f115902.js +0 -4
  644. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +0 -4
  645. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2018e25f._.js +0 -3
  646. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +0 -3
  647. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__3b4af5ae._.js +0 -3
  648. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +0 -4
  649. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +0 -3
  650. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +0 -4
  651. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +0 -4
  652. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6ee2450e._.js +0 -3
  653. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +0 -4
  654. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__80e5bed2._.js +0 -3
  655. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8a947500._.js +0 -3
  656. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +0 -3
  657. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +0 -3
  658. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +0 -3
  659. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fa87595c._.js +0 -3
  660. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_07c2a32a._.js +0 -9
  661. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +0 -3
  662. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_380c6567._.js +0 -6
  663. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_44cce4e0._.js +0 -4
  664. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_5ee4f5a7._.js +0 -7
  665. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +0 -3
  666. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +0 -3
  667. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +0 -3
  668. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a29296f0._.js +0 -3
  669. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a3854150._.js +0 -6
  670. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_dc379243._.js +0 -4
  671. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e806976d._.js +0 -3
  672. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +0 -3
  673. package/web/.next/static/chunks/11a6c88ffcbac93f.js +0 -1
  674. package/web/.next/static/chunks/1f5c93a8b939416d.js +0 -5
  675. package/web/.next/static/chunks/255140c45a023ff4.js +0 -1
  676. package/web/.next/static/chunks/293231ccc0b144fa.js +0 -1
  677. package/web/.next/static/chunks/3bc2a07d02372939.js +0 -1
  678. package/web/.next/static/chunks/3f205fd6adbfd20a.js +0 -7
  679. package/web/.next/static/chunks/424982cd78174a1a.js +0 -1
  680. package/web/.next/static/chunks/4a3b3cfcc85e7254.js +0 -1
  681. package/web/.next/static/chunks/5d0a6417c4e4e545.js +0 -1
  682. package/web/.next/static/chunks/6931ae67c2484ddf.js +0 -1
  683. package/web/.next/static/chunks/9215b6fb973482c5.js +0 -1
  684. package/web/.next/static/chunks/9a765e022ef2b815.js +0 -1
  685. package/web/.next/static/chunks/b6c507fc42d9a277.js +0 -1
  686. package/web/.next/static/chunks/c1dbeb3307dab443.js +0 -4
  687. package/web/.next/static/chunks/d7786685ec8efe10.js +0 -1
  688. package/web/.next/static/chunks/e12fff3b57456bc2.css +0 -2
  689. package/web/.next/static/chunks/edbd674102e897b4.js +0 -1
  690. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_buildManifest.js +0 -0
  691. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_clientMiddlewareManifest.json +0 -0
  692. /package/web/.next/static/{L6_6jZ4TnQuuDXIF5GZEf → OY9vo9JHlYYnBy-WPoYAQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[71238,a=>{"use strict";let b=(0,a.i(25700).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);a.s(["ExternalLink",()=>b],71238)},50490,5698,a=>{"use strict";var b=a.i(25700);let c=(0,b.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);a.s(["Play",()=>c],50490);let d=(0,b.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);a.s(["Square",()=>d],5698)},69029,5623,a=>{"use strict";var b=a.i(10973),c=a.i(88064),d=a.i(82697),e=a.i(85536),f=a.i(18948),g=a.i(19884);function h({label:a,onClick:h,loading:i,error:j,icon:k,iconOnly:l=!1,variant:m="outline",size:n="sm"}){let o=(0,g.useSoundAction)("click");return(0,b.jsxs)(f.Button,{variant:m,size:n,"aria-label":a,disabled:i,onClick:()=>{o.play(),h()},className:(0,e.cn)("gap-1.5",j&&"text-destructive hover:text-destructive",!j&&l&&"ghost"===m&&"text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500"),children:[i?(0,b.jsx)(c.Loader2,{className:"size-4 animate-spin"}):j?(0,b.jsx)(d.CircleAlert,{className:"size-4"}):(0,b.jsx)(k,{className:"size-4"}),l?null:a]})}a.s(["ActionButton",()=>h],5623),a.s([],69029)},45670,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(71335),e=a.i(89868),e=e,f=a.i(85536);let g=d.Dialog.Root;d.Dialog.Trigger;let h=d.Dialog.Portal,i=d.Dialog.Close,j=c.forwardRef(({className:a,onClick:c,...e},g)=>(0,b.jsx)(d.Dialog.Overlay,{ref:g,className:(0,f.cn)("fixed inset-0 z-50 bg-black/80",a),onClick:a=>{a.stopPropagation(),c?.(a)},...e}));j.displayName=d.Dialog.Overlay.displayName;let k=c.forwardRef(({className:a,children:c,...g},i)=>(0,b.jsxs)(h,{children:[(0,b.jsx)(j,{}),(0,b.jsxs)(d.Dialog.Content,{ref:i,className:(0,f.cn)("bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg",a),...g,children:[c,(0,b.jsxs)(d.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none",children:[(0,b.jsx)(e.default,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));k.displayName=d.Dialog.Content.displayName;let l=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});l.displayName="DialogHeader";let m=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...c});m.displayName="DialogFooter";let n=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Title,{ref:e,className:(0,f.cn)("text-lg leading-none font-semibold tracking-tight",a),...c}));n.displayName=d.Dialog.Title.displayName;let o=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Dialog.Description,{ref:e,className:(0,f.cn)("text-muted-foreground text-sm",a),...c}));o.displayName=d.Dialog.Description.displayName,a.s(["Dialog",()=>g,"DialogClose",()=>i,"DialogContent",()=>k,"DialogDescription",()=>o,"DialogFooter",()=>m,"DialogHeader",()=>l,"DialogTitle",()=>n],45670)},49235,85080,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(88064),e=a.i(71238),f=a.i(63698),g=a.i(46847),h=a.i(58339),i=a.i(45670),j=a.i(25674);let k=(0,j.createServerReference)("40fe122cb65d44fb34c0d166acbecbc13af063e211",j.callServer,void 0,j.findSourceMapURL,"getDeploymentLogs");function l({open:a,onOpenChange:d,targetId:e}){let{logs:f,isConnected:g}=function(a){let[b,d]=(0,c.useState)([]),[e,f]=(0,c.useState)(!1),g=(0,c.useRef)(null),h=(0,c.useCallback)(()=>{g.current&&(g.current.close(),g.current=null),f(!1)},[]);return(0,c.useEffect)(()=>{if(!a){d([]),f(!1);return}k(a).then(a=>{a&&d(a)}).catch(()=>{});let b=new EventSource(`/api/deployment-logs?targetId=${a}`);return g.current=b,b.onopen=()=>{f(!0)},b.addEventListener("log",a=>{let b=JSON.parse(a.data);d(a=>[...a,b])}),b.onerror=()=>{f(!1)},()=>{b.close(),g.current=null}},[a,h]),{logs:b,isConnected:e}}(a?e:null);return(0,b.jsx)(m,{open:a,onOpenChange:d,logs:f,isConnected:g})}function m({open:a,onOpenChange:d,logs:e,isConnected:g}){let h=(0,c.useRef)(null),j=(0,c.useRef)(!0),k=(0,c.useCallback)(()=>{let a=h.current;a&&(j.current=a.scrollTop+a.clientHeight>=a.scrollHeight-50)},[]);return(0,c.useEffect)(()=>{j.current&&h.current&&(h.current.scrollTop=h.current.scrollHeight)},[e]),(0,b.jsx)(i.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(i.DialogContent,{className:"flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg","aria-describedby":void 0,children:[(0,b.jsxs)(i.DialogHeader,{className:"flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(f.Terminal,{className:"h-4 w-4 text-zinc-400"}),(0,b.jsx)(i.DialogTitle,{className:"text-sm font-medium text-zinc-100",children:"Server Logs"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 pr-8",children:[(0,b.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${g?"bg-green-500":"bg-zinc-500"}`}),(0,b.jsx)("span",{className:"text-xs text-zinc-400",children:g?"Connected":"Disconnected"})]})]}),(0,b.jsxs)("div",{ref:h,onScroll:k,className:"flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed",children:[0===e.length?(0,b.jsx)("p",{className:"text-zinc-500",children:"Waiting for log output..."}):e.map(a=>(0,b.jsx)(n,{entry:a},`${a.timestamp}-${a.stream}-${a.line}`)),!g&&e.length>0&&(0,b.jsx)("div",{className:"mt-2 border-t border-zinc-800 pt-2 text-zinc-500",children:"[Server stopped]"})]})]})})}function n({entry:a}){return(0,b.jsx)("div",{"data-stream":a.stream,className:"stderr"===a.stream?"text-red-400":"text-zinc-200",children:(0,b.jsx)("span",{className:"break-all whitespace-pre-wrap",children:a.line})})}function o({status:a,url:i,targetId:j}){let[k,m]=(0,c.useState)(!1),n=j&&(a===g.DeploymentState.Booting||a===g.DeploymentState.Ready);switch(a){case g.DeploymentState.Booting:return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(h.Badge,{className:"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50",children:[(0,b.jsx)(d.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),"Starting...",n?(0,b.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-blue-100",onClick:a=>{a.stopPropagation(),m(!0)},children:(0,b.jsx)(f.Terminal,{className:"h-3 w-3"})}):null]}),n?(0,b.jsx)(l,{open:k,onOpenChange:m,targetId:j}):null]});case g.DeploymentState.Ready:return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(h.Badge,{className:"border-transparent bg-green-50 text-green-700 hover:bg-green-50",children:[(0,b.jsx)("span",{className:"mr-1 inline-block h-2 w-2 rounded-full bg-green-500"}),i?(0,b.jsxs)("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:underline",onClick:a=>a.stopPropagation(),children:[i,(0,b.jsx)(e.ExternalLink,{className:"h-3 w-3"})]}):"Ready",n?(0,b.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-green-100",onClick:a=>{a.stopPropagation(),m(!0)},children:(0,b.jsx)(f.Terminal,{className:"h-3 w-3"})}):null]}),n?(0,b.jsx)(l,{open:k,onOpenChange:m,targetId:j}):null]});default:return null}}a.s(["DeploymentStatusBadge",()=>o],85080),a.s([],49235)},2824,a=>{"use strict";let b;var c=a.i(10973),d=a.i(10568),e=a.i(40093),f=a.i(96960);let g=f.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),h=()=>{let a=f.default.useContext(g);if(!a)throw Error("useDrawerContext must be used within a Drawer.Root");return a};function i(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function j(){return k(/^iPhone/)||k(/^iPad/)||k(/^Mac/)&&navigator.maxTouchPoints>1}function k(a){}!function(a){if(!a||"u"<typeof document)return;let b=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css",b.appendChild(c),c.styleSheet?c.styleSheet.cssText=a:c.appendChild(document.createTextNode(a))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let l=f.useEffect;"u">typeof document&&window.visualViewport;let m=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),n=0;function o(...a){return f.useCallback(function(...a){return b=>a.forEach(a=>{"function"==typeof a?a(b):null!=a&&(a.current=b)})}(...a),a)}let p=new WeakMap;function q(a,b,c=!1){if(!a||!(a instanceof HTMLElement))return;let d={};Object.entries(b).forEach(([b,c])=>{b.startsWith("--")?a.style.setProperty(b,c):(d[b]=a.style[b],a.style[b]=c)}),c||p.set(a,d)}let r=a=>{switch(a){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return a}};function s(a,b){if(!a)return null;let c=window.getComputedStyle(a),d=c.transform||c.webkitTransform||c.mozTransform,e=d.match(/^matrix3d\((.+)\)$/);return e?parseFloat(e[1].split(", ")[r(b)?13:12]):(e=d.match(/^matrix\((.+)\)$/))?parseFloat(e[1].split(", ")[r(b)?5:4]):null}function t(a,b){if(!a)return()=>{};let c=a.style.cssText;return Object.assign(a.style,b),()=>{a.style.cssText=c}}let u=[.32,.72,0,1],v="vaul-dragging";function w(a){let b=f.default.useRef(a);return f.default.useEffect(()=>{b.current=a}),f.default.useMemo(()=>(...a)=>null==b.current?void 0:b.current.call(b,...a),[])}function x({prop:a,defaultProp:b,onChange:c=()=>{}}){let[d,e]=function({defaultProp:a,onChange:b}){let c=f.default.useState(a),[d]=c,e=f.default.useRef(d),g=w(b);return f.default.useEffect(()=>{e.current!==d&&(g(d),e.current=d)},[d,e,g]),c}({defaultProp:b,onChange:c}),g=void 0!==a,h=g?a:d,i=w(c);return[h,f.default.useCallback(b=>{if(g){let c="function"==typeof b?b(a):b;c!==a&&i(c)}else e(b)},[g,a,e,i])]}let y=()=>()=>{},z=null;function A({open:a,onOpenChange:c,children:d,onDrag:h,onRelease:k,snapPoints:o,shouldScaleBackground:t=!1,setBackgroundColorOnScale:w=!0,closeThreshold:y=.25,scrollLockTimeout:A=100,dismissible:B=!0,handleOnly:C=!1,fadeFromIndex:D=o&&o.length-1,activeSnapPoint:E,setActiveSnapPoint:F,fixed:G,modal:H=!0,onClose:I,nested:J,noBodyStyles:K=!1,direction:L="bottom",defaultOpen:M=!1,disablePreventScroll:N=!0,snapToSequentialPoint:O=!1,preventScrollRestoration:P=!1,repositionInputs:Q=!0,onAnimationEnd:R,container:S,autoFocus:T=!1}){var U,V;let[W=!1,X]=x({defaultProp:M,prop:a,onChange:a=>{null==c||c(a),a||J||aA(),setTimeout(()=>{null==R||R(a)},500),a||(document.body.style.pointerEvents="auto")}}),[Y,Z]=f.default.useState(!1),[$,_]=f.default.useState(!1),[aa,ab]=f.default.useState(!1),ac=f.default.useRef(null),ad=f.default.useRef(null),ae=f.default.useRef(null),af=f.default.useRef(null),ag=f.default.useRef(null),ah=f.default.useRef(!1),ai=f.default.useRef(null),aj=f.default.useRef(0),ak=f.default.useRef(!1),al=f.default.useRef(!M),am=f.default.useRef(0),an=f.default.useRef(null),ao=f.default.useRef((null==(U=an.current)?void 0:U.getBoundingClientRect().height)||0),ap=f.default.useRef((null==(V=an.current)?void 0:V.getBoundingClientRect().width)||0),aq=f.default.useRef(0),ar=f.default.useCallback(a=>{o&&a===aw.length-1&&(ad.current=new Date)},[]),{activeSnapPoint:as,activeSnapPointIndex:at,setActiveSnapPoint:au,onRelease:av,snapPointsOffset:aw,onDrag:ax,shouldFade:ay,getPercentageDragged:az}=function({activeSnapPointProp:a,setActiveSnapPointProp:b,snapPoints:c,drawerRef:d,overlayRef:e,fadeFromIndex:g,onSnapPointChange:h,direction:i="bottom",container:j,snapToSequentialPoint:k}){let[l,m]=x({prop:a,defaultProp:null==c?void 0:c[0],onChange:b}),[n,o]=f.default.useState(void 0);f.default.useEffect(()=>{function a(){o({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]);let p=f.default.useMemo(()=>l===(null==c?void 0:c[c.length-1])||null,[c,l]),s=f.default.useMemo(()=>{var a;return null!=(a=null==c?void 0:c.findIndex(a=>a===l))?a:null},[c,l]),t=c&&c.length>0&&(g||0===g)&&!Number.isNaN(g)&&c[g]===l||!c,v=f.default.useMemo(()=>{var a;let b=j?{width:j.getBoundingClientRect().width,height:j.getBoundingClientRect().height}:{width:0,height:0};return null!=(a=null==c?void 0:c.map(a=>{let c="string"==typeof a,d=0;if(c&&(d=parseInt(a,10)),r(i)){let e=c?d:n?a*b.height:0;return n?"bottom"===i?b.height-e:-b.height+e:e}let e=c?d:n?a*b.width:0;return n?"right"===i?b.width-e:-b.width+e:e}))?a:[]},[c,n,j]),w=f.default.useMemo(()=>null!==s?null==v?void 0:v[s]:null,[v,s]),y=f.default.useCallback(a=>{var b;let f=null!=(b=null==v?void 0:v.findIndex(b=>b===a))?b:null;h(f),q(d.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(i)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`}),v&&f!==v.length-1&&void 0!==g&&f!==g&&f<g?q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"0"}):q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"1"}),m(null==c?void 0:c[Math.max(f,0)])},[d.current,c,v,g,e,m]);return f.default.useEffect(()=>{if(l||a){var b;let d=null!=(b=null==c?void 0:c.findIndex(b=>b===a||b===l))?b:-1;v&&-1!==d&&"number"==typeof v[d]&&y(v[d])}},[l,a,c,v,y]),{isLastSnapPoint:p,activeSnapPoint:l,shouldFade:t,getPercentageDragged:function(a,b){if(!c||"number"!=typeof s||!v||void 0===g)return null;let d=s===g-1;if(s>=g&&b)return 0;if(d&&!b)return 1;if(!t&&!d)return null;let e=d?s+1:s-1,f=a/Math.abs(d?v[e]-v[e-1]:v[e+1]-v[e]);return d?1-f:f},setActiveSnapPoint:m,activeSnapPointIndex:s,onRelease:function({draggedDistance:a,closeDrawer:b,velocity:d,dismissible:f}){if(void 0===g)return;let h="bottom"===i||"right"===i?(null!=w?w:0)-a:(null!=w?w:0)+a,j=s===g-1,l=0===s,m=a>0;if(j&&q(e.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`}),!k&&d>2&&!m)return void(f?b():y(v[0]));if(!k&&d>2&&m&&v&&c)return void y(v[c.length-1]);let n=null==v?void 0:v.reduce((a,b)=>"number"!=typeof a||"number"!=typeof b?a:Math.abs(b-h)<Math.abs(a-h)?b:a),o=r(i)?window.innerHeight:window.innerWidth;if(d>.4&&Math.abs(a)<.4*o){let a=m?1:-1;return a>0&&p&&c?void y(v[c.length-1]):void(l&&a<0&&f&&b(),null===s||y(v[s+a]))}y(n)},onDrag:function({draggedDistance:a}){if(null===w)return;let b="bottom"===i||"right"===i?w-a:w+a;("bottom"===i||"right"===i)&&b<v[v.length-1]||("top"===i||"left"===i)&&b>v[v.length-1]||q(d.current,{transform:r(i)?`translate3d(0, ${b}px, 0)`:`translate3d(${b}px, 0, 0)`})},snapPointsOffset:v}}({snapPoints:o,activeSnapPointProp:E,setActiveSnapPointProp:F,drawerRef:an,fadeFromIndex:D,overlayRef:ac,onSnapPointChange:ar,direction:L,container:S,snapToSequentialPoint:O});!function(a={}){let{isDisabled:c}=a;l(()=>{if(!c)return 1==++n&&j(),()=>{0==--n&&(null==b||b())}},[c])}({isDisabled:!W||$||!H||aa||!Y||!Q||!N});let{restorePositionSetting:aA}=function({isOpen:a,modal:b,nested:c,hasBeenOpened:d,preventScrollRestoration:e,noBodyStyles:g}){let[h,j]=f.default.useState(()=>""),k=f.default.useRef(0),l=f.default.useCallback(()=>{if(i()&&null===z&&a&&!g){z={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:a,innerHeight:b}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-k.current}px`,left:`${-a}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let a=b-window.innerHeight;a&&k.current>=b&&(document.body.style.top=`${-(k.current+a)}px`)}),300)}},[a]),m=f.default.useCallback(()=>{if(i()&&null!==z&&!g){let a=-parseInt(document.body.style.top,10),b=-parseInt(document.body.style.left,10);Object.assign(document.body.style,z),window.requestAnimationFrame(()=>{e&&h!==window.location.href?j(window.location.href):window.scrollTo(b,a)}),z=null}},[h]);return f.default.useEffect(()=>{function a(){k.current=window.scrollY}return a(),window.addEventListener("scroll",a),()=>{window.removeEventListener("scroll",a)}},[]),f.default.useEffect(()=>{if(b)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||m()}},[b,m]),f.default.useEffect(()=>{!c&&d&&(a?(window.matchMedia("(display-mode: standalone)").matches||l(),b||window.setTimeout(()=>{m()},500)):m())},[a,d,h,b,c,l,m]),{restorePositionSetting:m}}({isOpen:W,modal:H,nested:null!=J&&J,hasBeenOpened:Y,preventScrollRestoration:P,noBodyStyles:K});function aB(){return(window.innerWidth-26)/window.innerWidth}function aC(a,b){var c;let d=a,e=null==(c=window.getSelection())?void 0:c.toString(),f=an.current?s(an.current,L):null,g=new Date;if("SELECT"===d.tagName||d.hasAttribute("data-vaul-no-drag")||d.closest("[data-vaul-no-drag]"))return!1;if("right"===L||"left"===L)return!0;if(ad.current&&g.getTime()-ad.current.getTime()<500)return!1;if(null!==f&&("bottom"===L?f>0:f<0))return!0;if(e&&e.length>0)return!1;if(ag.current&&g.getTime()-ag.current.getTime()<A&&0===f||b)return ag.current=g,!1;for(;d;){if(d.scrollHeight>d.clientHeight){if(0!==d.scrollTop)return ag.current=new Date,!1;if("dialog"===d.getAttribute("role"))break}d=d.parentNode}return!0}function aD(a){$&&an.current&&(an.current.classList.remove(v),ah.current=!1,_(!1),af.current=new Date),null==I||I(),a||X(!1),setTimeout(()=>{o&&au(o[0])},500)}function aE(){if(!an.current)return;let a=document.querySelector("[data-vaul-drawer-wrapper]"),b=s(an.current,L);q(an.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${u.join(",")})`}),q(ac.current,{transition:`opacity 0.5s cubic-bezier(${u.join(",")})`,opacity:"1"}),t&&b&&b>0&&W&&q(a,{borderRadius:"8px",overflow:"hidden",...r(L)?{transform:`scale(${aB()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${aB()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${u.join(",")})`},!0)}return f.default.useEffect(()=>{window.requestAnimationFrame(()=>{al.current=!0})},[]),f.default.useEffect(()=>{var a;function b(){var a,b;if(an.current&&Q&&((a=document.activeElement)instanceof HTMLInputElement&&!m.has(a.type)||a instanceof HTMLTextAreaElement||a instanceof HTMLElement&&a.isContentEditable||ak.current)){let a=(null==(b=window.visualViewport)?void 0:b.height)||0,c=window.innerHeight,d=c-a,e=an.current.getBoundingClientRect().height||0;aq.current||(aq.current=e);let f=an.current.getBoundingClientRect().top;if(Math.abs(am.current-d)>60&&(ak.current=!ak.current),o&&o.length>0&&aw&&at&&(d+=aw[at]||0),am.current=d,e>a||ak.current){let b=an.current.getBoundingClientRect().height,g=b;b>a&&(g=a-(e>.8*c?f:26)),G?an.current.style.height=`${b-Math.max(d,0)}px`:an.current.style.height=`${Math.max(g,a-f)}px`}else navigator.userAgent,an.current.style.height=`${aq.current}px`;o&&o.length>0&&!ak.current?an.current.style.bottom="0px":an.current.style.bottom=`${Math.max(d,0)}px`}}return null==(a=window.visualViewport)||a.addEventListener("resize",b),()=>{var a;return null==(a=window.visualViewport)?void 0:a.removeEventListener("resize",b)}},[at,o,aw]),f.default.useEffect(()=>(W&&(q(document.documentElement,{scrollBehavior:"auto"}),ad.current=new Date),()=>{!function(a,b){if(!a||!(a instanceof HTMLElement))return;let c=p.get(a);c&&(a.style[b]=c[b])}(document.documentElement,"scrollBehavior")}),[W]),f.default.useEffect(()=>{H||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[H]),f.default.createElement(e.Root,{defaultOpen:M,onOpenChange:a=>{(B||a)&&(a?Z(!0):aD(!0),X(a))},open:W},f.default.createElement(g.Provider,{value:{activeSnapPoint:as,snapPoints:o,setActiveSnapPoint:au,drawerRef:an,overlayRef:ac,onOpenChange:c,onPress:function(a){var b,c;!B&&!o||(!an.current||an.current.contains(a.target))&&(ao.current=(null==(b=an.current)?void 0:b.getBoundingClientRect().height)||0,ap.current=(null==(c=an.current)?void 0:c.getBoundingClientRect().width)||0,_(!0),ae.current=new Date,j(),a.target.setPointerCapture(a.pointerId),aj.current=r(L)?a.pageY:a.pageX)},onRelease:function(a){var b,c;if(!$||!an.current)return;an.current.classList.remove(v),ah.current=!1,_(!1),af.current=new Date;let d=s(an.current,L);if(!a||!aC(a.target,!1)||!d||Number.isNaN(d)||null===ae.current)return;let e=af.current.getTime()-ae.current.getTime(),f=aj.current-(r(L)?a.pageY:a.pageX),g=Math.abs(f)/e;if(g>.05&&(ab(!0),setTimeout(()=>{ab(!1)},200)),o){av({draggedDistance:f*("bottom"===L||"right"===L?1:-1),closeDrawer:aD,velocity:g,dismissible:B}),null==k||k(a,!0);return}if("bottom"===L||"right"===L?f>0:f<0){aE(),null==k||k(a,!0);return}if(g>.4){aD(),null==k||k(a,!1);return}let h=Math.min(null!=(b=an.current.getBoundingClientRect().height)?b:0,window.innerHeight),i=Math.min(null!=(c=an.current.getBoundingClientRect().width)?c:0,window.innerWidth);if(Math.abs(d)>=("left"===L||"right"===L?i:h)*y){aD(),null==k||k(a,!1);return}null==k||k(a,!0),aE()},onDrag:function(a){if(an.current&&$){let b="bottom"===L||"right"===L?1:-1,c=(aj.current-(r(L)?a.pageY:a.pageX))*b,d=c>0,e=o&&!B&&!d;if(e&&0===at)return;let f=Math.abs(c),g=document.querySelector("[data-vaul-drawer-wrapper]"),i=f/("bottom"===L||"top"===L?ao.current:ap.current),j=az(f,d);if(null!==j&&(i=j),e&&i>=1||!ah.current&&!aC(a.target,d))return;if(an.current.classList.add(v),ah.current=!0,q(an.current,{transition:"none"}),q(ac.current,{transition:"none"}),o&&ax({draggedDistance:c}),d&&!o){let a=Math.min(-(8*(Math.log(c+1)-2)*1),0)*b;q(an.current,{transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`});return}let k=1-i;if((ay||D&&at===D-1)&&(null==h||h(a,i),q(ac.current,{opacity:`${k}`,transition:"none"},!0)),g&&ac.current&&t){let a=Math.min(aB()+i*(1-aB()),1),b=8-8*i,c=Math.max(0,14-14*i);q(g,{borderRadius:`${b}px`,transform:r(L)?`scale(${a}) translate3d(0, ${c}px, 0)`:`scale(${a}) translate3d(${c}px, 0, 0)`,transition:"none"},!0)}if(!o){let a=f*b;q(an.current,{transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})}}},dismissible:B,shouldAnimate:al,handleOnly:C,isOpen:W,isDragging:$,shouldFade:ay,closeDrawer:aD,onNestedDrag:function(a,b){if(b<0)return;let c=(window.innerWidth-16)/window.innerWidth,d=c+b*(1-c),e=-16+16*b;q(an.current,{transform:r(L)?`scale(${d}) translate3d(0, ${e}px, 0)`:`scale(${d}) translate3d(${e}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(a){let b=a?(window.innerWidth-16)/window.innerWidth:1,c=a?-16:0;ai.current&&window.clearTimeout(ai.current),q(an.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(L)?`scale(${b}) translate3d(0, ${c}px, 0)`:`scale(${b}) translate3d(${c}px, 0, 0)`}),!a&&an.current&&(ai.current=setTimeout(()=>{let a=s(an.current,L);q(an.current,{transition:"none",transform:r(L)?`translate3d(0, ${a}px, 0)`:`translate3d(${a}px, 0, 0)`})},500))},onNestedRelease:function(a,b){let c=r(L)?window.innerHeight:window.innerWidth,d=b?(c-16)/c:1,e=b?-16:0;b&&q(an.current,{transition:`transform 0.5s cubic-bezier(${u.join(",")})`,transform:r(L)?`scale(${d}) translate3d(0, ${e}px, 0)`:`scale(${d}) translate3d(${e}px, 0, 0)`})},keyboardIsOpen:ak,modal:H,snapPointsOffset:aw,activeSnapPointIndex:at,direction:L,shouldScaleBackground:t,setBackgroundColorOnScale:w,noBodyStyles:K,container:S,autoFocus:T}},d))}let B=f.default.forwardRef(function({...a},b){let{overlayRef:c,snapPoints:d,onRelease:g,shouldFade:i,isOpen:j,modal:k,shouldAnimate:l}=h(),m=o(b,c),n=d&&d.length>0;if(!k)return null;let p=f.default.useCallback(a=>g(a),[g]);return f.default.createElement(e.Overlay,{onMouseUp:p,ref:m,"data-vaul-overlay":"","data-vaul-snap-points":j&&n?"true":"false","data-vaul-snap-points-overlay":j&&i?"true":"false","data-vaul-animate":(null==l?void 0:l.current)?"true":"false",...a})});B.displayName="Drawer.Overlay";let C=f.default.forwardRef(function({onPointerDownOutside:a,style:b,onOpenAutoFocus:c,...d},g){let{drawerRef:i,onPress:j,onRelease:k,onDrag:l,keyboardIsOpen:m,snapPointsOffset:n,activeSnapPointIndex:p,modal:q,isOpen:s,direction:v,snapPoints:w,container:x,handleOnly:z,shouldAnimate:A,autoFocus:B}=h(),[C,D]=f.default.useState(!1),E=o(g,i),F=f.default.useRef(null),G=f.default.useRef(null),H=f.default.useRef(!1),I=w&&w.length>0;function J(a){F.current=null,H.current=!1,k(a)}return!function(){let{direction:a,isOpen:b,shouldScaleBackground:c,setBackgroundColorOnScale:d,noBodyStyles:e}=h(),g=f.default.useRef(null),i=(0,f.useMemo)(()=>document.body.style.backgroundColor,[]);function j(){return(window.innerWidth-26)/window.innerWidth}f.default.useEffect(()=>{if(b&&c){g.current&&clearTimeout(g.current);let b=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!b)return;!function(...a){}(d&&!e?t(document.body,{background:"black"}):y,t(b,{transformOrigin:r(a)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${u.join(",")})`}));let c=t(b,{borderRadius:"8px",overflow:"hidden",...r(a)?{transform:`scale(${j()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${j()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{c(),g.current=window.setTimeout(()=>{i?document.body.style.background=i:document.body.style.removeProperty("background")},500)}}},[b,c,i])}(),f.default.useEffect(()=>{I&&window.requestAnimationFrame(()=>{D(!0)})},[]),f.default.createElement(e.Content,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":C?"true":"false","data-vaul-snap-points":s&&I?"true":"false","data-vaul-custom-container":x?"true":"false","data-vaul-animate":(null==A?void 0:A.current)?"true":"false",...d,ref:E,style:n&&n.length>0?{"--snap-point-height":`${n[null!=p?p:0]}px`,...b}:b,onPointerDown:a=>{z||(null==d.onPointerDown||d.onPointerDown.call(d,a),F.current={x:a.pageX,y:a.pageY},j(a))},onOpenAutoFocus:a=>{null==c||c(a),B||a.preventDefault()},onPointerDownOutside:b=>{(null==a||a(b),!q||b.defaultPrevented)?b.preventDefault():m.current&&(m.current=!1)},onFocusOutside:a=>{if(!q)return void a.preventDefault()},onPointerMove:a=>{if(G.current=a,z||(null==d.onPointerMove||d.onPointerMove.call(d,a),!F.current))return;let b=a.pageY-F.current.y,c=a.pageX-F.current.x,e="touch"===a.pointerType?10:2;((a,b,c=0)=>{if(H.current)return!0;let d=Math.abs(a.y),e=Math.abs(a.x),f=e>d,g=["bottom","right"].includes(b)?1:-1;if("left"===b||"right"===b){if(!(a.x*g<0)&&e>=0&&e<=c)return f}else if(!(a.y*g<0)&&d>=0&&d<=c)return!f;return H.current=!0,!0})({x:c,y:b},v,e)?l(a):(Math.abs(c)>e||Math.abs(b)>e)&&(F.current=null)},onPointerUp:a=>{null==d.onPointerUp||d.onPointerUp.call(d,a),F.current=null,H.current=!1,k(a)},onPointerOut:a=>{null==d.onPointerOut||d.onPointerOut.call(d,a),J(G.current)},onContextMenu:a=>{null==d.onContextMenu||d.onContextMenu.call(d,a),G.current&&J(G.current)}})});C.displayName="Drawer.Content";let D=f.default.forwardRef(function({preventCycle:a=!1,children:b,...c},d){let{closeDrawer:e,isDragging:g,snapPoints:i,activeSnapPoint:j,setActiveSnapPoint:k,dismissible:l,handleOnly:m,isOpen:n,onPress:o,onDrag:p}=h(),q=f.default.useRef(null),r=f.default.useRef(!1);function s(){q.current&&window.clearTimeout(q.current),r.current=!1}return f.default.createElement("div",{onClick:function(){r.current?s():window.setTimeout(()=>{!function(){if(g||a||r.current)return s();if(s(),!i||0===i.length){l||e();return}if(j===i[i.length-1]&&l)return e();let b=i.findIndex(a=>a===j);-1===b||k(i[b+1])}()},120)},onPointerCancel:s,onPointerDown:a=>{m&&o(a),q.current=window.setTimeout(()=>{r.current=!0},250)},onPointerMove:a=>{m&&p(a)},ref:d,"data-vaul-drawer-visible":n?"true":"false","data-vaul-handle":"","aria-hidden":"true",...c},f.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},b))});D.displayName="Drawer.Handle";let E={Root:A,NestedRoot:function({onDrag:a,onOpenChange:b,open:c,...d}){let{onNestedDrag:e,onNestedOpenChange:g,onNestedRelease:i}=h();if(!e)throw Error("Drawer.NestedRoot must be placed in another drawer");return f.default.createElement(A,{nested:!0,open:c,onClose:()=>{g(!1)},onDrag:(b,c)=>{e(b,c),null==a||a(b,c)},onOpenChange:a=>{a&&g(a),null==b||b(a)},onRelease:i,...d})},Content:C,Overlay:B,Trigger:e.Trigger,Portal:function(a){let b=h(),{container:c=b.container,...d}=a;return f.default.createElement(e.Portal,{container:c,...d})},Handle:D,Close:e.Close,Title:e.Title,Description:e.Description};var F=a.i(85536);function G({...a}){return(0,c.jsx)(E.Root,{"data-slot":"drawer",...a})}function H({...a}){return(0,c.jsx)(E.Portal,{"data-slot":"drawer-portal",...a})}function I({className:a,...b}){return(0,c.jsx)(E.Overlay,{"data-slot":"drawer-overlay",className:(0,F.cn)("fixed inset-0 z-50 bg-black/50",a),...b})}function J({className:a,children:b,direction:e="bottom",showCloseButton:f=!0,...g}){return(0,c.jsx)(H,{children:(0,c.jsxs)(E.Content,{"data-slot":"drawer-content",className:(0,F.cn)("bg-background fixed z-50 flex flex-col shadow-lg","bottom"===e&&"inset-x-0 bottom-0 mb-24 rounded-t-lg border-t","top"===e&&"inset-x-0 top-0 mt-24 rounded-b-lg border-b","right"===e&&"inset-y-0 right-0 h-full w-3/4 border-l","left"===e&&"inset-y-0 left-0 h-full w-3/4 border-r",a),style:{"--initial-transform":"right"===e?"calc(100% + 8px)":"left"===e||"top"===e?"calc(-100% - 8px)":"calc(100% + 8px)",userSelect:"text",...g.style??{}},...g,children:[b,f?(0,c.jsxs)(E.Close,{className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,c.jsx)(d.XIcon,{className:"size-4"}),(0,c.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})})}function K({className:a,...b}){return(0,c.jsx)("div",{"data-slot":"drawer-header",className:(0,F.cn)("flex flex-col gap-1.5 p-4",a),...b})}function L({className:a,...b}){return(0,c.jsx)("div",{"data-slot":"drawer-footer",className:(0,F.cn)("mt-auto flex flex-col gap-2 p-4",a),...b})}function M({className:a,...b}){return(0,c.jsx)(E.Title,{"data-slot":"drawer-title",className:(0,F.cn)("text-foreground font-semibold",a),...b})}function N({className:a,...b}){return(0,c.jsx)(E.Description,{"data-slot":"drawer-description",className:(0,F.cn)("text-muted-foreground text-sm",a),...b})}a.s(["Drawer",()=>G,"DrawerContent",()=>J,"DrawerDescription",()=>N,"DrawerFooter",()=>L,"DrawerHeader",()=>K,"DrawerOverlay",()=>I,"DrawerTitle",()=>M],2824)},18662,a=>{"use strict";var b=a.i(96960),c=a.i(87139),d=a.i(25674);let e=(0,d.createServerReference)("40ec8adbbe79c8eda37f954882d8b30b55ea6f7ffe",d.callServer,void 0,d.findSourceMapURL,"deployFeature"),f=(0,d.createServerReference)("405c8f2fdac71c5005feb8998a702b7b4e59fc57d2",d.callServer,void 0,d.findSourceMapURL,"deployRepository"),g=(0,d.createServerReference)("4089edf1e0faa4882df249cd5fcceacc37140a4c34",d.callServer,void 0,d.findSourceMapURL,"stopDeployment"),h=(0,d.createServerReference)("402215691f701f4742d6f1efd251986a71a8946cae",d.callServer,void 0,d.findSourceMapURL,"getDeploymentStatus"),i=(0,c.createLogger)("[useDeployAction]");function j(a){let[c,d]=(0,b.useState)(!1),[j,k]=(0,b.useState)(!1),[l,m]=(0,b.useState)(null),[n,o]=(0,b.useState)(null),[p,q]=(0,b.useState)(null),r=(0,b.useRef)(null),s=(0,b.useRef)(null),t=(0,b.useRef)(!0),u=(0,b.useRef)(n);(0,b.useEffect)(()=>{u.current=n},[n]),(0,b.useEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,b.useEffect)(()=>()=>{r.current&&clearTimeout(r.current),s.current&&clearInterval(s.current)},[]);let v=(0,b.useCallback)(()=>{s.current&&(i.debug("stopping polling"),clearInterval(s.current),s.current=null)},[]),w=(0,b.useCallback)(a=>{v(),i.debug(`starting polling for "${a}" every 3000ms`),s.current=setInterval(async()=>{if(!t.current)return void v();let b=await h(a);t.current&&(b&&"Stopped"!==b.state?(b.state!==u.current&&i.info(`poll state changed: ${u.current} → ${b.state}, url=${b.url}`),o(b.state),q(b.url)):(i.info(`poll result: ${b?`state=${b.state}`:"null (deployment gone)"} — stopping poll`),o(null),q(null),v()))},3e3)},[v]),x=(0,b.useCallback)(async()=>{if(!a)return void i.warn("deploy() called but input is null — no-op");if(c)return void i.warn("deploy() called but already loading — no-op");i.info(`deploy() — targetType="${a.targetType}", targetId="${a.targetId}", repositoryPath="${a.repositoryPath}"`),r.current&&clearTimeout(r.current),d(!0),m(null);try{let b="feature"===a.targetType?await e(a.targetId):await f(a.repositoryPath);if(i.info("server action result:",b),!t.current)return void i.warn("component unmounted after deploy — discarding result");if(b.success)i.info(`deploy succeeded — initial state=${b.state}, starting polling`),o(b.state??null),q(null),w(a.targetId);else{let a=b.error??"An unexpected error occurred";i.error(`deploy failed: ${a}`),m(a),r.current=setTimeout(()=>m(null),5e3)}}catch(b){if(!t.current)return;let a=b instanceof Error?b.message:"An unexpected error occurred";i.error(`deploy threw exception: ${a}`,b),m(a),r.current=setTimeout(()=>m(null),5e3)}finally{t.current&&d(!1)}},[a,c,w]),y=(0,b.useCallback)(async()=>{if(a&&!j){i.info(`stop() — targetId="${a.targetId}"`),k(!0);try{let b=await g(a.targetId);if(i.info("stop result:",b),!t.current)return;b.success&&(v(),o(null),q(null))}catch(a){i.warn("stop error (non-critical):",a)}finally{t.current&&k(!1)}}},[a,j,v]);return{deploy:x,stop:y,deployLoading:c,stopLoading:j,deployError:l,status:n,url:p}}a.s(["useDeployAction",()=>j],18662)},24255,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(10568),e=a.i(50490),f=a.i(5698),g=a.i(42261),h=a.i(85536);a.i(69029);var i=a.i(5623);a.i(49235);var j=a.i(85080),k=a.i(2824),l=a.i(13126),m=a.i(82934),n=a.i(18662),o=a.i(17227);let p=(0,g.cva)("",{variants:{size:{sm:"w-96",md:"w-xl"}},defaultVariants:{size:"sm"}});function q({open:a,onClose:e,modal:f=!1,dismissOnOutsideClick:g=!1,title:i="Drawer",size:j,header:m,children:n,footer:q,className:s,"data-testid":t,deployTarget:u}){let v=(0,c.useRef)(null);return(0,c.useEffect)(()=>{if(!a||f)return;let b=a=>{let b=a.target;!document.body.contains(b)||v.current?.contains(b)||b.closest(g?'[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]':'[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]')||e()};return document.addEventListener("click",b),()=>document.removeEventListener("click",b)},[a,f,e,g]),(0,b.jsxs)(k.Drawer,{direction:"right",modal:f,handleOnly:!0,open:a,onOpenChange:a=>{a||e()},children:[f?(0,b.jsx)(k.DrawerOverlay,{}):null,(0,b.jsxs)(k.DrawerContent,{ref:v,direction:"right",showCloseButton:!1,className:(0,h.cn)(p({size:j}),s),"data-testid":t,onInteractOutside:f?void 0:a=>a.preventDefault(),children:[(0,b.jsx)(k.DrawerTitle,{asChild:!0,children:(0,b.jsx)("span",{className:"sr-only",children:i})}),(0,b.jsx)(k.DrawerDescription,{asChild:!0,children:(0,b.jsx)("span",{className:"sr-only",children:i})}),(0,b.jsxs)("button",{type:"button","aria-label":"Close",onClick:e,className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden","data-testid":t?`${t}-close-button`:void 0,children:[(0,b.jsx)(d.XIcon,{className:"size-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]}),m?(0,b.jsx)(k.DrawerHeader,{className:"shrink-0",children:m}):null,m?(0,b.jsx)(l.Separator,{}):null,o.featureFlags.envDeploy&&u?(0,b.jsx)(r,{deployTarget:u}):null,(0,b.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:n}),q?(0,b.jsx)(k.DrawerFooter,{className:"shrink-0",children:q}):null]})]})}function r({deployTarget:a}){let c=(0,n.useDeployAction)(a),d="Booting"===c.status||"Ready"===c.status;return(0,b.jsxs)("div",{"data-testid":"base-drawer-deploy-bar",className:"flex items-center gap-2 px-4 pb-3",children:[(0,b.jsx)(m.TooltipProvider,{children:(0,b.jsxs)(m.Tooltip,{children:[(0,b.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{children:(0,b.jsx)(i.ActionButton,{label:d?"Stop Dev Server":"Start Dev Server",onClick:d?c.stop:c.deploy,loading:c.deployLoading||c.stopLoading,error:!!c.deployError,icon:d?f.Square:e.Play,iconOnly:!0,variant:"outline",size:"icon-sm"})})}),(0,b.jsx)(m.TooltipContent,{children:d?"Stop Dev Server":"Start Dev Server"})]})}),d?(0,b.jsx)(j.DeploymentStatusBadge,{status:c.status,url:c.url,targetId:a.targetId}):null]})}a.s(["BaseDrawer",()=>q])}];
2
+
3
+ //# sourceMappingURL=_b11878f5._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/external-link.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/square.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/play.ts","../../../../../../../src/presentation/web/components/common/action-button/action-button.tsx","../../../../../../../src/presentation/web/components/ui/dialog.tsx","../../../../../../../src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.tsx","../../../../../../../src/presentation/web/components/common/server-log-viewer/server-log-viewer.tsx","../../../../../../../src/presentation/web/app/actions/data%3Ab3e1a5%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/hooks/use-deployment-logs.ts","../../../../../../../src/presentation/web/components/ui/drawer.tsx","../../../../../../../node_modules/.pnpm/vaul%401.1.2_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%4019.2.10_react-dom_df19df48088b932e5faabe47f4659840/node_modules/vaul/dist/index.mjs","../../../../../../../src/presentation/web/hooks/use-deploy-action.ts","../../../../../../../src/presentation/web/app/actions/data%3A81f63f%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Ad0407e%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A74502c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aecb057%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/common/base-drawer/base-drawer.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 3h6v6', key: '1q9fwt' }],\n ['path', { d: 'M10 14 21 3', key: 'gplh6r' }],\n ['path', { d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6', key: 'a6xqqp' }],\n];\n\n/**\n * @component @name ExternalLink\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgM2g2djYiIC8+CiAgPHBhdGggZD0iTTEwIDE0IDIxIDMiIC8+CiAgPHBhdGggZD0iTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/external-link\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ExternalLink = createLucideIcon('external-link', __iconNode);\n\nexport default ExternalLink;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n];\n\n/**\n * @component @name Square\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/square\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Square = createLucideIcon('square', __iconNode);\n\nexport default Square;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z',\n key: '10ikf1',\n },\n ],\n];\n\n/**\n * @component @name Play\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSA1YTIgMiAwIDAgMSAzLjAwOC0xLjcyOGwxMS45OTcgNi45OThhMiAyIDAgMCAxIC4wMDMgMy40NThsLTEyIDdBMiAyIDAgMCAxIDUgMTl6IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/play\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Play = createLucideIcon('play', __iconNode);\n\nexport default Play;\n","'use client';\n\nimport type { LucideIcon } from 'lucide-react';\nimport { Loader2, CircleAlert } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { useSoundAction } from '@/hooks/use-sound-action';\n\nexport interface ActionButtonProps {\n label: string;\n onClick: () => void;\n loading: boolean;\n error: boolean;\n icon: LucideIcon;\n /** When true, omits label text — label is still used as aria-label. */\n iconOnly?: boolean;\n /** Button variant. @default 'outline' */\n variant?: 'outline' | 'ghost' | 'default' | 'destructive' | 'secondary' | 'link';\n /** Button size. @default 'sm' */\n size?: 'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg';\n}\n\nexport function ActionButton({\n label,\n onClick,\n loading,\n error,\n icon: Icon,\n iconOnly = false,\n variant = 'outline',\n size = 'sm',\n}: ActionButtonProps) {\n const clickSound = useSoundAction('click');\n\n const handleClick = () => {\n clickSound.play();\n onClick();\n };\n\n return (\n <Button\n variant={variant}\n size={size}\n aria-label={label}\n disabled={loading}\n onClick={handleClick}\n className={cn(\n 'gap-1.5',\n error && 'text-destructive hover:text-destructive',\n !error &&\n iconOnly &&\n variant === 'ghost' &&\n 'text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500'\n )}\n >\n {loading ? (\n <Loader2 className=\"size-4 animate-spin\" />\n ) : error ? (\n <CircleAlert className=\"size-4\" />\n ) : (\n <Icon className=\"size-4\" />\n )}\n {iconOnly ? null : label}\n </Button>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, onClick, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn('fixed inset-0 z-50 bg-black/80', className)}\n onClick={(e) => {\n // Prevent overlay clicks from propagating to document-level handlers\n // (e.g. BaseDrawer outside-click) — only the dialog should dismiss.\n e.stopPropagation();\n onClick?.(e);\n }}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg',\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ComponentRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","'use client';\n\nimport { useState } from 'react';\nimport { Loader2, ExternalLink, Terminal } from 'lucide-react';\nimport { DeploymentState } from '@shepai/core/domain/generated/output';\nimport { Badge } from '@/components/ui/badge';\nimport { ServerLogViewer } from '@/components/common/server-log-viewer';\n\nexport interface DeploymentStatusBadgeProps {\n status: DeploymentState | null;\n url?: string | null;\n targetId?: string;\n}\n\nexport function DeploymentStatusBadge({ status, url, targetId }: DeploymentStatusBadgeProps) {\n const [logViewerOpen, setLogViewerOpen] = useState(false);\n const showLogButton =\n targetId && (status === DeploymentState.Booting || status === DeploymentState.Ready);\n\n switch (status) {\n case DeploymentState.Booting:\n return (\n <>\n <Badge className=\"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50\">\n <Loader2 className=\"mr-1 h-3.5 w-3.5 animate-spin\" />\n Starting...\n {showLogButton ? (\n <button\n type=\"button\"\n aria-label=\"View server logs\"\n className=\"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-blue-100\"\n onClick={(e) => {\n e.stopPropagation();\n setLogViewerOpen(true);\n }}\n >\n <Terminal className=\"h-3 w-3\" />\n </button>\n ) : null}\n </Badge>\n {showLogButton ? (\n <ServerLogViewer\n open={logViewerOpen}\n onOpenChange={setLogViewerOpen}\n targetId={targetId}\n />\n ) : null}\n </>\n );\n case DeploymentState.Ready:\n return (\n <>\n <Badge className=\"border-transparent bg-green-50 text-green-700 hover:bg-green-50\">\n <span className=\"mr-1 inline-block h-2 w-2 rounded-full bg-green-500\" />\n {url ? (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {url}\n <ExternalLink className=\"h-3 w-3\" />\n </a>\n ) : (\n 'Ready'\n )}\n {showLogButton ? (\n <button\n type=\"button\"\n aria-label=\"View server logs\"\n className=\"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-green-100\"\n onClick={(e) => {\n e.stopPropagation();\n setLogViewerOpen(true);\n }}\n >\n <Terminal className=\"h-3 w-3\" />\n </button>\n ) : null}\n </Badge>\n {showLogButton ? (\n <ServerLogViewer\n open={logViewerOpen}\n onOpenChange={setLogViewerOpen}\n targetId={targetId}\n />\n ) : null}\n </>\n );\n default:\n return null;\n }\n}\n","'use client';\n\nimport { useRef, useEffect, useCallback } from 'react';\nimport { Terminal } from 'lucide-react';\nimport type { LogEntry } from '@shepai/core/application/ports/output/services/deployment-service.interface';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog';\nimport { useDeploymentLogs } from '@/hooks/use-deployment-logs';\n\nexport interface ServerLogViewerProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n targetId: string;\n}\n\nexport interface ServerLogViewerContentProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n logs: LogEntry[];\n isConnected: boolean;\n}\n\nconst AUTO_SCROLL_THRESHOLD = 50;\n\nexport function ServerLogViewer({ open, onOpenChange, targetId }: ServerLogViewerProps) {\n const { logs, isConnected } = useDeploymentLogs(open ? targetId : null);\n\n return (\n <ServerLogViewerContent\n open={open}\n onOpenChange={onOpenChange}\n logs={logs}\n isConnected={isConnected}\n />\n );\n}\n\nexport function ServerLogViewerContent({\n open,\n onOpenChange,\n logs,\n isConnected,\n}: ServerLogViewerContentProps) {\n const scrollRef = useRef<HTMLDivElement>(null);\n const isAtBottomRef = useRef(true);\n\n const handleScroll = useCallback(() => {\n const el = scrollRef.current;\n if (!el) return;\n isAtBottomRef.current =\n el.scrollTop + el.clientHeight >= el.scrollHeight - AUTO_SCROLL_THRESHOLD;\n }, []);\n\n useEffect(() => {\n if (isAtBottomRef.current && scrollRef.current) {\n scrollRef.current.scrollTop = scrollRef.current.scrollHeight;\n }\n }, [logs]);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className=\"flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg\"\n aria-describedby={undefined}\n >\n <DialogHeader className=\"flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n <Terminal className=\"h-4 w-4 text-zinc-400\" />\n <DialogTitle className=\"text-sm font-medium text-zinc-100\">Server Logs</DialogTitle>\n </div>\n <div className=\"flex items-center gap-2 pr-8\">\n <span\n className={`inline-block h-2 w-2 rounded-full ${isConnected ? 'bg-green-500' : 'bg-zinc-500'}`}\n />\n <span className=\"text-xs text-zinc-400\">\n {isConnected ? 'Connected' : 'Disconnected'}\n </span>\n </div>\n </DialogHeader>\n\n <div\n ref={scrollRef}\n onScroll={handleScroll}\n className=\"flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed\"\n >\n {logs.length === 0 ? (\n <p className=\"text-zinc-500\">Waiting for log output...</p>\n ) : (\n logs.map((entry) => (\n <LogLine key={`${entry.timestamp}-${entry.stream}-${entry.line}`} entry={entry} />\n ))\n )}\n {!isConnected && logs.length > 0 && (\n <div className=\"mt-2 border-t border-zinc-800 pt-2 text-zinc-500\">[Server stopped]</div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction LogLine({ entry }: { entry: LogEntry }) {\n return (\n <div\n data-stream={entry.stream}\n className={entry.stream === 'stderr' ? 'text-red-400' : 'text-zinc-200'}\n >\n <span className=\"break-all whitespace-pre-wrap\">{entry.line}</span>\n </div>\n );\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40fe122cb65d44fb34c0d166acbecbc13af063e211\":\"getDeploymentLogs\"},\"src/presentation/web/app/actions/get-deployment-logs.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40fe122cb65d44fb34c0d166acbecbc13af063e211\",callServer,void 0,findSourceMapURL,\"getDeploymentLogs\");export{$$RSC_SERVER_ACTION_0 as getDeploymentLogs};","'use client';\n\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport type { LogEntry } from '@shepai/core/application/ports/output/services/deployment-service.interface';\nimport { getDeploymentLogs } from '@/app/actions/get-deployment-logs';\n\nexport interface UseDeploymentLogsResult {\n logs: LogEntry[];\n isConnected: boolean;\n}\n\nexport function useDeploymentLogs(targetId: string | null | undefined): UseDeploymentLogsResult {\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const eventSourceRef = useRef<EventSource | null>(null);\n\n const cleanup = useCallback(() => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n setIsConnected(false);\n }, []);\n\n useEffect(() => {\n if (!targetId) {\n setLogs([]);\n setIsConnected(false);\n return;\n }\n\n // Fetch initial logs\n getDeploymentLogs(targetId)\n .then((initialLogs) => {\n if (initialLogs) {\n setLogs(initialLogs);\n }\n })\n .catch(() => {\n // Initial fetch failed — logs stay empty, SSE will still connect\n });\n\n // Connect EventSource for live updates\n const es = new EventSource(`/api/deployment-logs?targetId=${targetId}`);\n eventSourceRef.current = es;\n\n es.onopen = () => {\n setIsConnected(true);\n };\n\n es.addEventListener('log', (event: MessageEvent) => {\n const entry: LogEntry = JSON.parse(event.data);\n setLogs((prev) => [...prev, entry]);\n });\n\n es.onerror = () => {\n setIsConnected(false);\n };\n\n return () => {\n es.close();\n eventSourceRef.current = null;\n };\n }, [targetId, cleanup]);\n\n return { logs, isConnected };\n}\n","'use client';\n\nimport * as React from 'react';\nimport { XIcon } from 'lucide-react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/lib/utils';\n\nfunction Drawer({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn('fixed inset-0 z-50 bg-black/50', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n direction = 'bottom',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n direction?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <DrawerPortal>\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n 'bg-background fixed z-50 flex flex-col shadow-lg',\n direction === 'bottom' && 'inset-x-0 bottom-0 mb-24 rounded-t-lg border-t',\n direction === 'top' && 'inset-x-0 top-0 mt-24 rounded-b-lg border-b',\n direction === 'right' && 'inset-y-0 right-0 h-full w-3/4 border-l',\n direction === 'left' && 'inset-y-0 left-0 h-full w-3/4 border-r',\n className\n )}\n style={\n {\n '--initial-transform':\n direction === 'right'\n ? 'calc(100% + 8px)'\n : direction === 'left'\n ? 'calc(-100% - 8px)'\n : direction === 'top'\n ? 'calc(-100% - 8px)'\n : 'calc(100% + 8px)',\n // Override vaul's user-select:none on [data-vaul-drawer] so text is selectable\n userSelect: 'text',\n ...((props.style as React.CSSProperties) ?? {}),\n } as React.CSSProperties\n }\n {...props}\n >\n {children}\n {showCloseButton ? (\n <DrawerPrimitive.Close className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DrawerPrimitive.Close>\n ) : null}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn('flex flex-col gap-1.5 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('mt-auto flex flex-col gap-2 p-4', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('text-foreground font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerClose,\n DrawerTrigger,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\nimport React__default, { useLayoutEffect, useEffect, useMemo } from 'react';\n\nconst DrawerContext = React__default.createContext({\n drawerRef: {\n current: null\n },\n overlayRef: {\n current: null\n },\n onPress: ()=>{},\n onRelease: ()=>{},\n onDrag: ()=>{},\n onNestedDrag: ()=>{},\n onNestedOpenChange: ()=>{},\n onNestedRelease: ()=>{},\n openProp: undefined,\n dismissible: false,\n isOpen: false,\n isDragging: false,\n keyboardIsOpen: {\n current: false\n },\n snapPointsOffset: null,\n snapPoints: null,\n handleOnly: false,\n modal: false,\n shouldFade: false,\n activeSnapPoint: null,\n onOpenChange: ()=>{},\n setActiveSnapPoint: ()=>{},\n closeDrawer: ()=>{},\n direction: 'bottom',\n shouldAnimate: {\n current: true\n },\n shouldScaleBackground: false,\n setBackgroundColorOnScale: true,\n noBodyStyles: false,\n container: null,\n autoFocus: false\n});\nconst useDrawerContext = ()=>{\n const context = React__default.useContext(DrawerContext);\n if (!context) {\n throw new Error('useDrawerContext must be used within a Drawer.Root');\n }\n return context;\n};\n\n__insertCSS(\"[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\\n[data-state=closed]\\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}\");\n\nfunction isMobileFirefox() {\n const userAgent = navigator.userAgent;\n return typeof window !== 'undefined' && (/Firefox/.test(userAgent) && /Mobile/.test(userAgent) || // Android Firefox\n /FxiOS/.test(userAgent) // iOS Firefox\n );\n}\nfunction isMac() {\n return testPlatform(/^Mac/);\n}\nfunction isIPhone() {\n return testPlatform(/^iPhone/);\n}\nfunction isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\nfunction isIPad() {\n return testPlatform(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n return isIPhone() || isIPad();\n}\nfunction testPlatform(re) {\n return typeof window !== 'undefined' && window.navigator != null ? re.test(window.navigator.platform) : undefined;\n}\n\n// This code comes from https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/usePreventScroll.ts\nconst KEYBOARD_BUFFER = 24;\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction chain$1(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks){\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n// @ts-ignore\nconst visualViewport = typeof document !== 'undefined' && window.visualViewport;\nfunction isScrollable(node) {\n let style = window.getComputedStyle(node);\n return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\nfunction getScrollParent(node) {\n if (isScrollable(node)) {\n node = node.parentElement;\n }\n while(node && !isScrollable(node)){\n node = node.parentElement;\n }\n return node || document.scrollingElement || document.documentElement;\n}\n// HTML input types that do not cause the software keyboard to appear.\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n// The number of active usePreventScroll calls. Used to determine whether to revert back to the original page style/scroll position\nlet preventScrollCount = 0;\nlet restore;\n/**\n * Prevents scrolling on the document body on mount, and\n * restores it on unmount. Also ensures that content does not\n * shift due to the scrollbars disappearing.\n */ function usePreventScroll(options = {}) {\n let { isDisabled } = options;\n useIsomorphicLayoutEffect(()=>{\n if (isDisabled) {\n return;\n }\n preventScrollCount++;\n if (preventScrollCount === 1) {\n if (isIOS()) {\n restore = preventScrollMobileSafari();\n }\n }\n return ()=>{\n preventScrollCount--;\n if (preventScrollCount === 0) {\n restore == null ? void 0 : restore();\n }\n };\n }, [\n isDisabled\n ]);\n}\n// Mobile Safari is a whole different beast. Even with overflow: hidden,\n// it still scrolls the page in many situations:\n//\n// 1. When the bottom toolbar and address bar are collapsed, page scrolling is always allowed.\n// 2. When the keyboard is visible, the viewport does not resize. Instead, the keyboard covers part of\n// it, so it becomes scrollable.\n// 3. When tapping on an input, the page always scrolls so that the input is centered in the visual viewport.\n// This may cause even fixed position elements to scroll off the screen.\n// 4. When using the next/previous buttons in the keyboard to navigate between inputs, the whole page always\n// scrolls, even if the input is inside a nested scrollable element that could be scrolled instead.\n//\n// In order to work around these cases, and prevent scrolling without jankiness, we do a few things:\n//\n// 1. Prevent default on `touchmove` events that are not in a scrollable element. This prevents touch scrolling\n// on the window.\n// 2. Prevent default on `touchmove` events inside a scrollable element when the scroll position is at the\n// top or bottom. This avoids the whole page scrolling instead, but does prevent overscrolling.\n// 3. Prevent default on `touchend` events on input elements and handle focusing the element ourselves.\n// 4. When focusing an input, apply a transform to trick Safari into thinking the input is at the top\n// of the page, which prevents it from scrolling the page. After the input is focused, scroll the element\n// into view ourselves, without scrolling the whole page.\n// 5. Offset the body by the scroll position using a negative margin and scroll to the top. This should appear the\n// same visually, but makes the actual scroll position always zero. This is required to make all of the\n// above work or Safari will still try to scroll the page when focusing an input.\n// 6. As a last resort, handle window scroll events, and scroll back to the top. This can happen when attempting\n// to navigate to an input with the next/previous buttons that's outside a modal.\nfunction preventScrollMobileSafari() {\n let scrollable;\n let lastY = 0;\n let onTouchStart = (e)=>{\n // Store the nearest scrollable parent element from the element that the user touched.\n scrollable = getScrollParent(e.target);\n if (scrollable === document.documentElement && scrollable === document.body) {\n return;\n }\n lastY = e.changedTouches[0].pageY;\n };\n let onTouchMove = (e)=>{\n // Prevent scrolling the window.\n if (!scrollable || scrollable === document.documentElement || scrollable === document.body) {\n e.preventDefault();\n return;\n }\n // Prevent scrolling up when at the top and scrolling down when at the bottom\n // of a nested scrollable area, otherwise mobile Safari will start scrolling\n // the window instead. Unfortunately, this disables bounce scrolling when at\n // the top but it's the best we can do.\n let y = e.changedTouches[0].pageY;\n let scrollTop = scrollable.scrollTop;\n let bottom = scrollable.scrollHeight - scrollable.clientHeight;\n if (bottom === 0) {\n return;\n }\n if (scrollTop <= 0 && y > lastY || scrollTop >= bottom && y < lastY) {\n e.preventDefault();\n }\n lastY = y;\n };\n let onTouchEnd = (e)=>{\n let target = e.target;\n // Apply this change if we're not already focused on the target element\n if (isInput(target) && target !== document.activeElement) {\n e.preventDefault();\n // Apply a transform to trick Safari into thinking the input is at the top of the page\n // so it doesn't try to scroll it into view. When tapping on an input, this needs to\n // be done before the \"focus\" event, so we have to focus the element ourselves.\n target.style.transform = 'translateY(-2000px)';\n target.focus();\n requestAnimationFrame(()=>{\n target.style.transform = '';\n });\n }\n };\n let onFocus = (e)=>{\n let target = e.target;\n if (isInput(target)) {\n // Transform also needs to be applied in the focus event in cases where focus moves\n // other than tapping on an input directly, e.g. the next/previous buttons in the\n // software keyboard. In these cases, it seems applying the transform in the focus event\n // is good enough, whereas when tapping an input, it must be done before the focus event. 🤷‍♂️\n target.style.transform = 'translateY(-2000px)';\n requestAnimationFrame(()=>{\n target.style.transform = '';\n // This will have prevented the browser from scrolling the focused element into view,\n // so we need to do this ourselves in a way that doesn't cause the whole page to scroll.\n if (visualViewport) {\n if (visualViewport.height < window.innerHeight) {\n // If the keyboard is already visible, do this after one additional frame\n // to wait for the transform to be removed.\n requestAnimationFrame(()=>{\n scrollIntoView(target);\n });\n } else {\n // Otherwise, wait for the visual viewport to resize before scrolling so we can\n // measure the correct position to scroll to.\n visualViewport.addEventListener('resize', ()=>scrollIntoView(target), {\n once: true\n });\n }\n }\n });\n }\n };\n let onWindowScroll = ()=>{\n // Last resort. If the window scrolled, scroll it back to the top.\n // It should always be at the top because the body will have a negative margin (see below).\n window.scrollTo(0, 0);\n };\n // Record the original scroll position so we can restore it.\n // Then apply a negative margin to the body to offset it by the scroll position. This will\n // enable us to scroll the window to the top, which is required for the rest of this to work.\n let scrollX = window.pageXOffset;\n let scrollY = window.pageYOffset;\n let restoreStyles = chain$1(setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`));\n // Scroll to the top. The negative margin on the body will make this appear the same.\n window.scrollTo(0, 0);\n let removeEvents = chain$1(addEvent(document, 'touchstart', onTouchStart, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchmove', onTouchMove, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchend', onTouchEnd, {\n passive: false,\n capture: true\n }), addEvent(document, 'focus', onFocus, true), addEvent(window, 'scroll', onWindowScroll));\n return ()=>{\n // Restore styles and scroll the page back to where it was.\n restoreStyles();\n removeEvents();\n window.scrollTo(scrollX, scrollY);\n };\n}\n// Sets a CSS property on an element, and returns a function to revert it to the previous value.\nfunction setStyle(element, style, value) {\n // https://github.com/microsoft/TypeScript/issues/17827#issuecomment-391663310\n // @ts-ignore\n let cur = element.style[style];\n // @ts-ignore\n element.style[style] = value;\n return ()=>{\n // @ts-ignore\n element.style[style] = cur;\n };\n}\n// Adds an event listener to an element, and returns a function to remove it.\nfunction addEvent(target, event, handler, options) {\n // @ts-ignore\n target.addEventListener(event, handler, options);\n return ()=>{\n // @ts-ignore\n target.removeEventListener(event, handler, options);\n };\n}\nfunction scrollIntoView(target) {\n let root = document.scrollingElement || document.documentElement;\n while(target && target !== root){\n // Find the parent scrollable element and adjust the scroll position if the target is not already in view.\n let scrollable = getScrollParent(target);\n if (scrollable !== document.documentElement && scrollable !== document.body && scrollable !== target) {\n let scrollableTop = scrollable.getBoundingClientRect().top;\n let targetTop = target.getBoundingClientRect().top;\n let targetBottom = target.getBoundingClientRect().bottom;\n // Buffer is needed for some edge cases\n const keyboardHeight = scrollable.getBoundingClientRect().bottom + KEYBOARD_BUFFER;\n if (targetBottom > keyboardHeight) {\n scrollable.scrollTop += targetTop - scrollableTop;\n }\n }\n // @ts-ignore\n target = scrollable.parentElement;\n }\n}\nfunction isInput(target) {\n return target instanceof HTMLInputElement && !nonTextInputTypes.has(target.type) || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;\n}\n\n// This code comes from https://github.com/radix-ui/primitives/tree/main/packages/react/compose-refs\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */ function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */ function composeRefs(...refs) {\n return (node)=>refs.forEach((ref)=>setRef(ref, node));\n}\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */ function useComposedRefs(...refs) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nconst cache = new WeakMap();\nfunction set(el, styles, ignoreCache = false) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = {};\n Object.entries(styles).forEach(([key, value])=>{\n if (key.startsWith('--')) {\n el.style.setProperty(key, value);\n return;\n }\n originalStyles[key] = el.style[key];\n el.style[key] = value;\n });\n if (ignoreCache) return;\n cache.set(el, originalStyles);\n}\nfunction reset(el, prop) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = cache.get(el);\n if (!originalStyles) {\n return;\n }\n {\n el.style[prop] = originalStyles[prop];\n }\n}\nconst isVertical = (direction)=>{\n switch(direction){\n case 'top':\n case 'bottom':\n return true;\n case 'left':\n case 'right':\n return false;\n default:\n return direction;\n }\n};\nfunction getTranslate(element, direction) {\n if (!element) {\n return null;\n }\n const style = window.getComputedStyle(element);\n const transform = // @ts-ignore\n style.transform || style.webkitTransform || style.mozTransform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) {\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d\n return parseFloat(mat[1].split(', ')[isVertical(direction) ? 13 : 12]);\n }\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[isVertical(direction) ? 5 : 4]) : null;\n}\nfunction dampenValue(v) {\n return 8 * (Math.log(v + 1) - 2);\n}\nfunction assignStyle(element, style) {\n if (!element) return ()=>{};\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return ()=>{\n element.style.cssText = prevStyle;\n };\n}\n/**\n * Receives functions as arguments and returns a new function that calls all.\n */ function chain(...fns) {\n return (...args)=>{\n for (const fn of fns){\n if (typeof fn === 'function') {\n // @ts-ignore\n fn(...args);\n }\n }\n };\n}\n\nconst TRANSITIONS = {\n DURATION: 0.5,\n EASE: [\n 0.32,\n 0.72,\n 0,\n 1\n ]\n};\nconst VELOCITY_THRESHOLD = 0.4;\nconst CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst BORDER_RADIUS = 8;\nconst NESTED_DISPLACEMENT = 16;\nconst WINDOW_TOP_OFFSET = 26;\nconst DRAG_CLASS = 'vaul-dragging';\n\n// This code comes from https://github.com/radix-ui/primitives/blob/main/packages/react/use-controllable-state/src/useControllableState.tsx\nfunction useCallbackRef(callback) {\n const callbackRef = React__default.useRef(callback);\n React__default.useEffect(()=>{\n callbackRef.current = callback;\n });\n // https://github.com/facebook/react/issues/19240\n return React__default.useMemo(()=>(...args)=>callbackRef.current == null ? void 0 : callbackRef.current.call(callbackRef, ...args), []);\n}\nfunction useUncontrolledState({ defaultProp, onChange }) {\n const uncontrolledState = React__default.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React__default.useRef(value);\n const handleChange = useCallbackRef(onChange);\n React__default.useEffect(()=>{\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [\n value,\n prevValueRef,\n handleChange\n ]);\n return uncontrolledState;\n}\nfunction useControllableState({ prop, defaultProp, onChange = ()=>{} }) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n const setValue = React__default.useCallback((nextValue)=>{\n if (isControlled) {\n const setter = nextValue;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value);\n } else {\n setUncontrolledProp(nextValue);\n }\n }, [\n isControlled,\n prop,\n setUncontrolledProp,\n handleChange\n ]);\n return [\n value,\n setValue\n ];\n}\n\nfunction useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction = 'bottom', container, snapToSequentialPoint }) {\n const [activeSnapPoint, setActiveSnapPoint] = useControllableState({\n prop: activeSnapPointProp,\n defaultProp: snapPoints == null ? void 0 : snapPoints[0],\n onChange: setActiveSnapPointProp\n });\n const [windowDimensions, setWindowDimensions] = React__default.useState(typeof window !== 'undefined' ? {\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n } : undefined);\n React__default.useEffect(()=>{\n function onResize() {\n setWindowDimensions({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n });\n }\n window.addEventListener('resize', onResize);\n return ()=>window.removeEventListener('resize', onResize);\n }, []);\n const isLastSnapPoint = React__default.useMemo(()=>activeSnapPoint === (snapPoints == null ? void 0 : snapPoints[snapPoints.length - 1]) || null, [\n snapPoints,\n activeSnapPoint\n ]);\n const activeSnapPointIndex = React__default.useMemo(()=>{\n var _snapPoints_findIndex;\n return (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : null;\n }, [\n snapPoints,\n activeSnapPoint\n ]);\n const shouldFade = snapPoints && snapPoints.length > 0 && (fadeFromIndex || fadeFromIndex === 0) && !Number.isNaN(fadeFromIndex) && snapPoints[fadeFromIndex] === activeSnapPoint || !snapPoints;\n const snapPointsOffset = React__default.useMemo(()=>{\n const containerSize = container ? {\n width: container.getBoundingClientRect().width,\n height: container.getBoundingClientRect().height\n } : typeof window !== 'undefined' ? {\n width: window.innerWidth,\n height: window.innerHeight\n } : {\n width: 0,\n height: 0\n };\n var _snapPoints_map;\n return (_snapPoints_map = snapPoints == null ? void 0 : snapPoints.map((snapPoint)=>{\n const isPx = typeof snapPoint === 'string';\n let snapPointAsNumber = 0;\n if (isPx) {\n snapPointAsNumber = parseInt(snapPoint, 10);\n }\n if (isVertical(direction)) {\n const height = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.height : 0;\n if (windowDimensions) {\n return direction === 'bottom' ? containerSize.height - height : -containerSize.height + height;\n }\n return height;\n }\n const width = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.width : 0;\n if (windowDimensions) {\n return direction === 'right' ? containerSize.width - width : -containerSize.width + width;\n }\n return width;\n })) != null ? _snapPoints_map : [];\n }, [\n snapPoints,\n windowDimensions,\n container\n ]);\n const activeSnapPointOffset = React__default.useMemo(()=>activeSnapPointIndex !== null ? snapPointsOffset == null ? void 0 : snapPointsOffset[activeSnapPointIndex] : null, [\n snapPointsOffset,\n activeSnapPointIndex\n ]);\n const snapToPoint = React__default.useCallback((dimension)=>{\n var _snapPointsOffset_findIndex;\n const newSnapPointIndex = (_snapPointsOffset_findIndex = snapPointsOffset == null ? void 0 : snapPointsOffset.findIndex((snapPointDim)=>snapPointDim === dimension)) != null ? _snapPointsOffset_findIndex : null;\n onSnapPointChange(newSnapPointIndex);\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `translate3d(0, ${dimension}px, 0)` : `translate3d(${dimension}px, 0, 0)`\n });\n if (snapPointsOffset && newSnapPointIndex !== snapPointsOffset.length - 1 && fadeFromIndex !== undefined && newSnapPointIndex !== fadeFromIndex && newSnapPointIndex < fadeFromIndex) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '0'\n });\n } else {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n }\n setActiveSnapPoint(snapPoints == null ? void 0 : snapPoints[Math.max(newSnapPointIndex, 0)]);\n }, [\n drawerRef.current,\n snapPoints,\n snapPointsOffset,\n fadeFromIndex,\n overlayRef,\n setActiveSnapPoint\n ]);\n React__default.useEffect(()=>{\n if (activeSnapPoint || activeSnapPointProp) {\n var _snapPoints_findIndex;\n const newIndex = (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPointProp || snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : -1;\n if (snapPointsOffset && newIndex !== -1 && typeof snapPointsOffset[newIndex] === 'number') {\n snapToPoint(snapPointsOffset[newIndex]);\n }\n }\n }, [\n activeSnapPoint,\n activeSnapPointProp,\n snapPoints,\n snapPointsOffset,\n snapToPoint\n ]);\n function onRelease({ draggedDistance, closeDrawer, velocity, dismissible }) {\n if (fadeFromIndex === undefined) return;\n const currentPosition = direction === 'bottom' || direction === 'right' ? (activeSnapPointOffset != null ? activeSnapPointOffset : 0) - draggedDistance : (activeSnapPointOffset != null ? activeSnapPointOffset : 0) + draggedDistance;\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isFirst = activeSnapPointIndex === 0;\n const hasDraggedUp = draggedDistance > 0;\n if (isOverlaySnapPoint) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n }\n if (!snapToSequentialPoint && velocity > 2 && !hasDraggedUp) {\n if (dismissible) closeDrawer();\n else snapToPoint(snapPointsOffset[0]); // snap to initial point\n return;\n }\n if (!snapToSequentialPoint && velocity > 2 && hasDraggedUp && snapPointsOffset && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n // Find the closest snap point to the current position\n const closestSnapPoint = snapPointsOffset == null ? void 0 : snapPointsOffset.reduce((prev, curr)=>{\n if (typeof prev !== 'number' || typeof curr !== 'number') return prev;\n return Math.abs(curr - currentPosition) < Math.abs(prev - currentPosition) ? curr : prev;\n });\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n if (velocity > VELOCITY_THRESHOLD && Math.abs(draggedDistance) < dim * 0.4) {\n const dragDirection = hasDraggedUp ? 1 : -1; // 1 = up, -1 = down\n // Don't do anything if we swipe upwards while being on the last snap point\n if (dragDirection > 0 && isLastSnapPoint && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n if (isFirst && dragDirection < 0 && dismissible) {\n closeDrawer();\n }\n if (activeSnapPointIndex === null) return;\n snapToPoint(snapPointsOffset[activeSnapPointIndex + dragDirection]);\n return;\n }\n snapToPoint(closestSnapPoint);\n }\n function onDrag({ draggedDistance }) {\n if (activeSnapPointOffset === null) return;\n const newValue = direction === 'bottom' || direction === 'right' ? activeSnapPointOffset - draggedDistance : activeSnapPointOffset + draggedDistance;\n // Don't do anything if we exceed the last(biggest) snap point\n if ((direction === 'bottom' || direction === 'right') && newValue < snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n if ((direction === 'top' || direction === 'left') && newValue > snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${newValue}px, 0)` : `translate3d(${newValue}px, 0, 0)`\n });\n }\n function getPercentageDragged(absDraggedDistance, isDraggingDown) {\n if (!snapPoints || typeof activeSnapPointIndex !== 'number' || !snapPointsOffset || fadeFromIndex === undefined) return null;\n // If this is true we are dragging to a snap point that is supposed to have an overlay\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isOverlaySnapPointOrHigher = activeSnapPointIndex >= fadeFromIndex;\n if (isOverlaySnapPointOrHigher && isDraggingDown) {\n return 0;\n }\n // Don't animate, but still use this one if we are dragging away from the overlaySnapPoint\n if (isOverlaySnapPoint && !isDraggingDown) return 1;\n if (!shouldFade && !isOverlaySnapPoint) return null;\n // Either fadeFrom index or the one before\n const targetSnapPointIndex = isOverlaySnapPoint ? activeSnapPointIndex + 1 : activeSnapPointIndex - 1;\n // Get the distance from overlaySnapPoint to the one before or vice-versa to calculate the opacity percentage accordingly\n const snapPointDistance = isOverlaySnapPoint ? snapPointsOffset[targetSnapPointIndex] - snapPointsOffset[targetSnapPointIndex - 1] : snapPointsOffset[targetSnapPointIndex + 1] - snapPointsOffset[targetSnapPointIndex];\n const percentageDragged = absDraggedDistance / Math.abs(snapPointDistance);\n if (isOverlaySnapPoint) {\n return 1 - percentageDragged;\n } else {\n return percentageDragged;\n }\n }\n return {\n isLastSnapPoint,\n activeSnapPoint,\n shouldFade,\n getPercentageDragged,\n setActiveSnapPoint,\n activeSnapPointIndex,\n onRelease,\n onDrag,\n snapPointsOffset\n };\n}\n\nconst noop = ()=>()=>{};\nfunction useScaleBackground() {\n const { direction, isOpen, shouldScaleBackground, setBackgroundColorOnScale, noBodyStyles } = useDrawerContext();\n const timeoutIdRef = React__default.useRef(null);\n const initialBackgroundColor = useMemo(()=>document.body.style.backgroundColor, []);\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n React__default.useEffect(()=>{\n if (isOpen && shouldScaleBackground) {\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]') || document.querySelector('[vaul-drawer-wrapper]');\n if (!wrapper) return;\n chain(setBackgroundColorOnScale && !noBodyStyles ? assignStyle(document.body, {\n background: 'black'\n }) : noop, assignStyle(wrapper, {\n transformOrigin: isVertical(direction) ? 'top' : 'left',\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }));\n const wrapperStylesCleanup = assignStyle(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`\n }\n });\n return ()=>{\n wrapperStylesCleanup();\n timeoutIdRef.current = window.setTimeout(()=>{\n if (initialBackgroundColor) {\n document.body.style.background = initialBackgroundColor;\n } else {\n document.body.style.removeProperty('background');\n }\n }, TRANSITIONS.DURATION * 1000);\n };\n }\n }, [\n isOpen,\n shouldScaleBackground,\n initialBackgroundColor\n ]);\n}\n\nlet previousBodyPosition = null;\n/**\n * This hook is necessary to prevent buggy behavior on iOS devices (need to test on Android).\n * I won't get into too much detail about what bugs it solves, but so far I've found that setting the body to `position: fixed` is the most reliable way to prevent those bugs.\n * Issues that this hook solves:\n * https://github.com/emilkowalski/vaul/issues/435\n * https://github.com/emilkowalski/vaul/issues/433\n * And more that I discovered, but were just not reported.\n */ function usePositionFixed({ isOpen, modal, nested, hasBeenOpened, preventScrollRestoration, noBodyStyles }) {\n const [activeUrl, setActiveUrl] = React__default.useState(()=>typeof window !== 'undefined' ? window.location.href : '');\n const scrollPos = React__default.useRef(0);\n const setPositionFixed = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === null && isOpen && !noBodyStyles) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left,\n height: document.body.style.height,\n right: 'unset'\n };\n // Update the dom inside an animation frame\n const { scrollX, innerHeight } = window;\n document.body.style.setProperty('position', 'fixed', 'important');\n Object.assign(document.body.style, {\n top: `${-scrollPos.current}px`,\n left: `${-scrollX}px`,\n right: '0px',\n height: 'auto'\n });\n window.setTimeout(()=>window.requestAnimationFrame(()=>{\n // Attempt to check if the bottom bar appeared due to the position change\n const bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollPos.current >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = `${-(scrollPos.current + bottomBarHeight)}px`;\n }\n }), 300);\n }\n }, [\n isOpen\n ]);\n const restorePositionSetting = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n if (previousBodyPosition !== null && !noBodyStyles) {\n // Convert the position from \"px\" to Int\n const y = -parseInt(document.body.style.top, 10);\n const x = -parseInt(document.body.style.left, 10);\n // Restore styles\n Object.assign(document.body.style, previousBodyPosition);\n window.requestAnimationFrame(()=>{\n if (preventScrollRestoration && activeUrl !== window.location.href) {\n setActiveUrl(window.location.href);\n return;\n }\n window.scrollTo(x, y);\n });\n previousBodyPosition = null;\n }\n }, [\n activeUrl\n ]);\n React__default.useEffect(()=>{\n function onScroll() {\n scrollPos.current = window.scrollY;\n }\n onScroll();\n window.addEventListener('scroll', onScroll);\n return ()=>{\n window.removeEventListener('scroll', onScroll);\n };\n }, []);\n React__default.useEffect(()=>{\n if (!modal) return;\n return ()=>{\n if (typeof document === 'undefined') return;\n // Another drawer is opened, safe to ignore the execution\n const hasDrawerOpened = !!document.querySelector('[data-vaul-drawer]');\n if (hasDrawerOpened) return;\n restorePositionSetting();\n };\n }, [\n modal,\n restorePositionSetting\n ]);\n React__default.useEffect(()=>{\n if (nested || !hasBeenOpened) return;\n // This is needed to force Safari toolbar to show **before** the drawer starts animating to prevent a gnarly shift from happening\n if (isOpen) {\n // avoid for standalone mode (PWA)\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n !isStandalone && setPositionFixed();\n if (!modal) {\n window.setTimeout(()=>{\n restorePositionSetting();\n }, 500);\n }\n } else {\n restorePositionSetting();\n }\n }, [\n isOpen,\n hasBeenOpened,\n activeUrl,\n modal,\n nested,\n setPositionFixed,\n restorePositionSetting\n ]);\n return {\n restorePositionSetting\n };\n}\n\nfunction Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground = false, setBackgroundColorOnScale = true, closeThreshold = CLOSE_THRESHOLD, scrollLockTimeout = SCROLL_LOCK_TIMEOUT, dismissible = true, handleOnly = false, fadeFromIndex = snapPoints && snapPoints.length - 1, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal = true, onClose, nested, noBodyStyles = false, direction = 'bottom', defaultOpen = false, disablePreventScroll = true, snapToSequentialPoint = false, preventScrollRestoration = false, repositionInputs = true, onAnimationEnd, container, autoFocus = false }) {\n var _drawerRef_current, _drawerRef_current1;\n const [isOpen = false, setIsOpen] = useControllableState({\n defaultProp: defaultOpen,\n prop: openProp,\n onChange: (o)=>{\n onOpenChange == null ? void 0 : onOpenChange(o);\n if (!o && !nested) {\n restorePositionSetting();\n }\n setTimeout(()=>{\n onAnimationEnd == null ? void 0 : onAnimationEnd(o);\n }, TRANSITIONS.DURATION * 1000);\n if (o && !modal) {\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }\n if (!o) {\n // This will be removed when the exit animation ends (`500ms`)\n document.body.style.pointerEvents = 'auto';\n }\n }\n });\n const [hasBeenOpened, setHasBeenOpened] = React__default.useState(false);\n const [isDragging, setIsDragging] = React__default.useState(false);\n const [justReleased, setJustReleased] = React__default.useState(false);\n const overlayRef = React__default.useRef(null);\n const openTime = React__default.useRef(null);\n const dragStartTime = React__default.useRef(null);\n const dragEndTime = React__default.useRef(null);\n const lastTimeDragPrevented = React__default.useRef(null);\n const isAllowedToDrag = React__default.useRef(false);\n const nestedOpenChangeTimer = React__default.useRef(null);\n const pointerStart = React__default.useRef(0);\n const keyboardIsOpen = React__default.useRef(false);\n const shouldAnimate = React__default.useRef(!defaultOpen);\n const previousDiffFromInitial = React__default.useRef(0);\n const drawerRef = React__default.useRef(null);\n const drawerHeightRef = React__default.useRef(((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0);\n const drawerWidthRef = React__default.useRef(((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0);\n const initialDrawerHeight = React__default.useRef(0);\n const onSnapPointChange = React__default.useCallback((activeSnapPointIndex)=>{\n // Change openTime ref when we reach the last snap point to prevent dragging for 500ms incase it's scrollable.\n if (snapPoints && activeSnapPointIndex === snapPointsOffset.length - 1) openTime.current = new Date();\n }, []);\n const { activeSnapPoint, activeSnapPointIndex, setActiveSnapPoint, onRelease: onReleaseSnapPoints, snapPointsOffset, onDrag: onDragSnapPoints, shouldFade, getPercentageDragged: getSnapPointsPercentageDragged } = useSnapPoints({\n snapPoints,\n activeSnapPointProp,\n setActiveSnapPointProp,\n drawerRef,\n fadeFromIndex,\n overlayRef,\n onSnapPointChange,\n direction,\n container,\n snapToSequentialPoint\n });\n usePreventScroll({\n isDisabled: !isOpen || isDragging || !modal || justReleased || !hasBeenOpened || !repositionInputs || !disablePreventScroll\n });\n const { restorePositionSetting } = usePositionFixed({\n isOpen,\n modal,\n nested: nested != null ? nested : false,\n hasBeenOpened,\n preventScrollRestoration,\n noBodyStyles\n });\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n function onPress(event) {\n var _drawerRef_current, _drawerRef_current1;\n if (!dismissible && !snapPoints) return;\n if (drawerRef.current && !drawerRef.current.contains(event.target)) return;\n drawerHeightRef.current = ((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0;\n drawerWidthRef.current = ((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0;\n setIsDragging(true);\n dragStartTime.current = new Date();\n // iOS doesn't trigger mouseUp after scrolling so we need to listen to touched in order to disallow dragging\n if (isIOS()) {\n window.addEventListener('touchend', ()=>isAllowedToDrag.current = false, {\n once: true\n });\n }\n // Ensure we maintain correct pointer capture even when going outside of the drawer\n event.target.setPointerCapture(event.pointerId);\n pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;\n }\n function shouldDrag(el, isDraggingInDirection) {\n var _window_getSelection;\n let element = el;\n const highlightedText = (_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString();\n const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;\n const date = new Date();\n // Fixes https://github.com/emilkowalski/vaul/issues/483\n if (element.tagName === 'SELECT') {\n return false;\n }\n if (element.hasAttribute('data-vaul-no-drag') || element.closest('[data-vaul-no-drag]')) {\n return false;\n }\n if (direction === 'right' || direction === 'left') {\n return true;\n }\n // Allow scrolling when animating\n if (openTime.current && date.getTime() - openTime.current.getTime() < 500) {\n return false;\n }\n if (swipeAmount !== null) {\n if (direction === 'bottom' ? swipeAmount > 0 : swipeAmount < 0) {\n return true;\n }\n }\n // Don't drag if there's highlighted text\n if (highlightedText && highlightedText.length > 0) {\n return false;\n }\n // Disallow dragging if drawer was scrolled within `scrollLockTimeout`\n if (lastTimeDragPrevented.current && date.getTime() - lastTimeDragPrevented.current.getTime() < scrollLockTimeout && swipeAmount === 0) {\n lastTimeDragPrevented.current = date;\n return false;\n }\n if (isDraggingInDirection) {\n lastTimeDragPrevented.current = date;\n // We are dragging down so we should allow scrolling\n return false;\n }\n // Keep climbing up the DOM tree as long as there's a parent\n while(element){\n // Check if the element is scrollable\n if (element.scrollHeight > element.clientHeight) {\n if (element.scrollTop !== 0) {\n lastTimeDragPrevented.current = new Date();\n // The element is scrollable and not scrolled to the top, so don't drag\n return false;\n }\n if (element.getAttribute('role') === 'dialog') {\n return true;\n }\n }\n // Move up to the parent element\n element = element.parentNode;\n }\n // No scrollable parents not scrolled to the top found, so drag\n return true;\n }\n function onDrag(event) {\n if (!drawerRef.current) {\n return;\n }\n // We need to know how much of the drawer has been dragged in percentages so that we can transform background accordingly\n if (isDragging) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n const draggedDistance = (pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX)) * directionMultiplier;\n const isDraggingInDirection = draggedDistance > 0;\n // Pre condition for disallowing dragging in the close direction.\n const noCloseSnapPointsPreCondition = snapPoints && !dismissible && !isDraggingInDirection;\n // Disallow dragging down to close when first snap point is the active one and dismissible prop is set to false.\n if (noCloseSnapPointsPreCondition && activeSnapPointIndex === 0) return;\n // We need to capture last time when drag with scroll was triggered and have a timeout between\n const absDraggedDistance = Math.abs(draggedDistance);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const drawerDimension = direction === 'bottom' || direction === 'top' ? drawerHeightRef.current : drawerWidthRef.current;\n // Calculate the percentage dragged, where 1 is the closed position\n let percentageDragged = absDraggedDistance / drawerDimension;\n const snapPointPercentageDragged = getSnapPointsPercentageDragged(absDraggedDistance, isDraggingInDirection);\n if (snapPointPercentageDragged !== null) {\n percentageDragged = snapPointPercentageDragged;\n }\n // Disallow close dragging beyond the smallest snap point.\n if (noCloseSnapPointsPreCondition && percentageDragged >= 1) {\n return;\n }\n if (!isAllowedToDrag.current && !shouldDrag(event.target, isDraggingInDirection)) return;\n drawerRef.current.classList.add(DRAG_CLASS);\n // If shouldDrag gave true once after pressing down on the drawer, we set isAllowedToDrag to true and it will remain true until we let go, there's no reason to disable dragging mid way, ever, and that's the solution to it\n isAllowedToDrag.current = true;\n set(drawerRef.current, {\n transition: 'none'\n });\n set(overlayRef.current, {\n transition: 'none'\n });\n if (snapPoints) {\n onDragSnapPoints({\n draggedDistance\n });\n }\n // Run this only if snapPoints are not defined or if we are at the last snap point (highest one)\n if (isDraggingInDirection && !snapPoints) {\n const dampenedDraggedDistance = dampenValue(draggedDistance);\n const translateValue = Math.min(dampenedDraggedDistance * -1, 0) * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n return;\n }\n const opacityValue = 1 - percentageDragged;\n if (shouldFade || fadeFromIndex && activeSnapPointIndex === fadeFromIndex - 1) {\n onDragProp == null ? void 0 : onDragProp(event, percentageDragged);\n set(overlayRef.current, {\n opacity: `${opacityValue}`,\n transition: 'none'\n }, true);\n }\n if (wrapper && overlayRef.current && shouldScaleBackground) {\n // Calculate percentageDragged as a fraction (0 to 1)\n const scaleValue = Math.min(getScale() + percentageDragged * (1 - getScale()), 1);\n const borderRadiusValue = 8 - percentageDragged * 8;\n const translateValue = Math.max(0, 14 - percentageDragged * 14);\n set(wrapper, {\n borderRadius: `${borderRadiusValue}px`,\n transform: isVertical(direction) ? `scale(${scaleValue}) translate3d(0, ${translateValue}px, 0)` : `scale(${scaleValue}) translate3d(${translateValue}px, 0, 0)`,\n transition: 'none'\n }, true);\n }\n if (!snapPoints) {\n const translateValue = absDraggedDistance * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }\n }\n }\n React__default.useEffect(()=>{\n window.requestAnimationFrame(()=>{\n shouldAnimate.current = true;\n });\n }, []);\n React__default.useEffect(()=>{\n var _window_visualViewport;\n function onVisualViewportChange() {\n if (!drawerRef.current || !repositionInputs) return;\n const focusedElement = document.activeElement;\n if (isInput(focusedElement) || keyboardIsOpen.current) {\n var _window_visualViewport;\n const visualViewportHeight = ((_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.height) || 0;\n const totalHeight = window.innerHeight;\n // This is the height of the keyboard\n let diffFromInitial = totalHeight - visualViewportHeight;\n const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;\n // Adjust drawer height only if it's tall enough\n const isTallEnough = drawerHeight > totalHeight * 0.8;\n if (!initialDrawerHeight.current) {\n initialDrawerHeight.current = drawerHeight;\n }\n const offsetFromTop = drawerRef.current.getBoundingClientRect().top;\n // visualViewport height may change due to somq e subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.\n if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {\n keyboardIsOpen.current = !keyboardIsOpen.current;\n }\n if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {\n const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;\n diffFromInitial += activeSnapPointHeight;\n }\n previousDiffFromInitial.current = diffFromInitial;\n // We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view\n if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {\n const height = drawerRef.current.getBoundingClientRect().height;\n let newDrawerHeight = height;\n if (height > visualViewportHeight) {\n newDrawerHeight = visualViewportHeight - (isTallEnough ? offsetFromTop : WINDOW_TOP_OFFSET);\n }\n // When fixed, don't move the drawer upwards if there's space, but rather only change it's height so it's fully scrollable when the keyboard is open\n if (fixed) {\n drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;\n } else {\n drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;\n }\n } else if (!isMobileFirefox()) {\n drawerRef.current.style.height = `${initialDrawerHeight.current}px`;\n }\n if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {\n drawerRef.current.style.bottom = `0px`;\n } else {\n // Negative bottom value would never make sense\n drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;\n }\n }\n }\n (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.addEventListener('resize', onVisualViewportChange);\n return ()=>{\n var _window_visualViewport;\n return (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.removeEventListener('resize', onVisualViewportChange);\n };\n }, [\n activeSnapPointIndex,\n snapPoints,\n snapPointsOffset\n ]);\n function closeDrawer(fromWithin) {\n cancelDrag();\n onClose == null ? void 0 : onClose();\n if (!fromWithin) {\n setIsOpen(false);\n }\n setTimeout(()=>{\n if (snapPoints) {\n setActiveSnapPoint(snapPoints[0]);\n }\n }, TRANSITIONS.DURATION * 1000); // seconds to ms\n }\n function resetDrawer() {\n if (!drawerRef.current) return;\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const currentSwipeAmount = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transform: 'translate3d(0, 0, 0)',\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n // Don't reset background if swiped upwards\n if (shouldScaleBackground && currentSwipeAmount && currentSwipeAmount > 0 && isOpen) {\n set(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,\n transformOrigin: 'top'\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,\n transformOrigin: 'left'\n },\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }, true);\n }\n }\n function cancelDrag() {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n }\n function onRelease(event) {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n const swipeAmount = getTranslate(drawerRef.current, direction);\n if (!event || !shouldDrag(event.target, false) || !swipeAmount || Number.isNaN(swipeAmount)) return;\n if (dragStartTime.current === null) return;\n const timeTaken = dragEndTime.current.getTime() - dragStartTime.current.getTime();\n const distMoved = pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX);\n const velocity = Math.abs(distMoved) / timeTaken;\n if (velocity > 0.05) {\n // `justReleased` is needed to prevent the drawer from focusing on an input when the drag ends, as it's not the intent most of the time.\n setJustReleased(true);\n setTimeout(()=>{\n setJustReleased(false);\n }, 200);\n }\n if (snapPoints) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n onReleaseSnapPoints({\n draggedDistance: distMoved * directionMultiplier,\n closeDrawer,\n velocity,\n dismissible\n });\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n // Moved upwards, don't do anything\n if (direction === 'bottom' || direction === 'right' ? distMoved > 0 : distMoved < 0) {\n resetDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n if (velocity > VELOCITY_THRESHOLD) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n var _drawerRef_current_getBoundingClientRect_height;\n const visibleDrawerHeight = Math.min((_drawerRef_current_getBoundingClientRect_height = drawerRef.current.getBoundingClientRect().height) != null ? _drawerRef_current_getBoundingClientRect_height : 0, window.innerHeight);\n var _drawerRef_current_getBoundingClientRect_width;\n const visibleDrawerWidth = Math.min((_drawerRef_current_getBoundingClientRect_width = drawerRef.current.getBoundingClientRect().width) != null ? _drawerRef_current_getBoundingClientRect_width : 0, window.innerWidth);\n const isHorizontalSwipe = direction === 'left' || direction === 'right';\n if (Math.abs(swipeAmount) >= (isHorizontalSwipe ? visibleDrawerWidth : visibleDrawerHeight) * closeThreshold) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n resetDrawer();\n }\n React__default.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n if (isOpen) {\n set(document.documentElement, {\n scrollBehavior: 'auto'\n });\n openTime.current = new Date();\n }\n return ()=>{\n reset(document.documentElement, 'scrollBehavior');\n };\n }, [\n isOpen\n ]);\n function onNestedOpenChange(o) {\n const scale = o ? (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth : 1;\n const initialTranslate = o ? -NESTED_DISPLACEMENT : 0;\n if (nestedOpenChangeTimer.current) {\n window.clearTimeout(nestedOpenChangeTimer.current);\n }\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${initialTranslate}px, 0)` : `scale(${scale}) translate3d(${initialTranslate}px, 0, 0)`\n });\n if (!o && drawerRef.current) {\n nestedOpenChangeTimer.current = setTimeout(()=>{\n const translateValue = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transition: 'none',\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }, 500);\n }\n }\n function onNestedDrag(_event, percentageDragged) {\n if (percentageDragged < 0) return;\n const initialScale = (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth;\n const newScale = initialScale + percentageDragged * (1 - initialScale);\n const newTranslate = -NESTED_DISPLACEMENT + percentageDragged * NESTED_DISPLACEMENT;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `scale(${newScale}) translate3d(0, ${newTranslate}px, 0)` : `scale(${newScale}) translate3d(${newTranslate}px, 0, 0)`,\n transition: 'none'\n });\n }\n function onNestedRelease(_event, o) {\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n const scale = o ? (dim - NESTED_DISPLACEMENT) / dim : 1;\n const translate = o ? -NESTED_DISPLACEMENT : 0;\n if (o) {\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${translate}px, 0)` : `scale(${scale}) translate3d(${translate}px, 0, 0)`\n });\n }\n }\n React__default.useEffect(()=>{\n if (!modal) {\n // Need to do this manually unfortunately\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }, [\n modal\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Root, {\n defaultOpen: defaultOpen,\n onOpenChange: (open)=>{\n if (!dismissible && !open) return;\n if (open) {\n setHasBeenOpened(true);\n } else {\n closeDrawer(true);\n }\n setIsOpen(open);\n },\n open: isOpen\n }, /*#__PURE__*/ React__default.createElement(DrawerContext.Provider, {\n value: {\n activeSnapPoint,\n snapPoints,\n setActiveSnapPoint,\n drawerRef,\n overlayRef,\n onOpenChange,\n onPress,\n onRelease,\n onDrag,\n dismissible,\n shouldAnimate,\n handleOnly,\n isOpen,\n isDragging,\n shouldFade,\n closeDrawer,\n onNestedDrag,\n onNestedOpenChange,\n onNestedRelease,\n keyboardIsOpen,\n modal,\n snapPointsOffset,\n activeSnapPointIndex,\n direction,\n shouldScaleBackground,\n setBackgroundColorOnScale,\n noBodyStyles,\n container,\n autoFocus\n }\n }, children));\n}\nconst Overlay = /*#__PURE__*/ React__default.forwardRef(function({ ...rest }, ref) {\n const { overlayRef, snapPoints, onRelease, shouldFade, isOpen, modal, shouldAnimate } = useDrawerContext();\n const composedRef = useComposedRefs(ref, overlayRef);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n // Overlay is the component that is locking scroll, removing it will unlock the scroll without having to dig into Radix's Dialog library\n if (!modal) {\n return null;\n }\n const onMouseUp = React__default.useCallback((event)=>onRelease(event), [\n onRelease\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Overlay, {\n onMouseUp: onMouseUp,\n ref: composedRef,\n \"data-vaul-overlay\": \"\",\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points-overlay\": isOpen && shouldFade ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest\n });\n});\nOverlay.displayName = 'Drawer.Overlay';\nconst Content = /*#__PURE__*/ React__default.forwardRef(function({ onPointerDownOutside, style, onOpenAutoFocus, ...rest }, ref) {\n const { drawerRef, onPress, onRelease, onDrag, keyboardIsOpen, snapPointsOffset, activeSnapPointIndex, modal, isOpen, direction, snapPoints, container, handleOnly, shouldAnimate, autoFocus } = useDrawerContext();\n // Needed to use transition instead of animations\n const [delayedSnapPoints, setDelayedSnapPoints] = React__default.useState(false);\n const composedRef = useComposedRefs(ref, drawerRef);\n const pointerStartRef = React__default.useRef(null);\n const lastKnownPointerEventRef = React__default.useRef(null);\n const wasBeyondThePointRef = React__default.useRef(false);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n useScaleBackground();\n const isDeltaInDirection = (delta, direction, threshold = 0)=>{\n if (wasBeyondThePointRef.current) return true;\n const deltaY = Math.abs(delta.y);\n const deltaX = Math.abs(delta.x);\n const isDeltaX = deltaX > deltaY;\n const dFactor = [\n 'bottom',\n 'right'\n ].includes(direction) ? 1 : -1;\n if (direction === 'left' || direction === 'right') {\n const isReverseDirection = delta.x * dFactor < 0;\n if (!isReverseDirection && deltaX >= 0 && deltaX <= threshold) {\n return isDeltaX;\n }\n } else {\n const isReverseDirection = delta.y * dFactor < 0;\n if (!isReverseDirection && deltaY >= 0 && deltaY <= threshold) {\n return !isDeltaX;\n }\n }\n wasBeyondThePointRef.current = true;\n return true;\n };\n React__default.useEffect(()=>{\n if (hasSnapPoints) {\n window.requestAnimationFrame(()=>{\n setDelayedSnapPoints(true);\n });\n }\n }, []);\n function handleOnPointerUp(event) {\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n }\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Content, {\n \"data-vaul-drawer-direction\": direction,\n \"data-vaul-drawer\": \"\",\n \"data-vaul-delayed-snap-points\": delayedSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-custom-container\": container ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest,\n ref: composedRef,\n style: snapPointsOffset && snapPointsOffset.length > 0 ? {\n '--snap-point-height': `${snapPointsOffset[activeSnapPointIndex != null ? activeSnapPointIndex : 0]}px`,\n ...style\n } : style,\n onPointerDown: (event)=>{\n if (handleOnly) return;\n rest.onPointerDown == null ? void 0 : rest.onPointerDown.call(rest, event);\n pointerStartRef.current = {\n x: event.pageX,\n y: event.pageY\n };\n onPress(event);\n },\n onOpenAutoFocus: (e)=>{\n onOpenAutoFocus == null ? void 0 : onOpenAutoFocus(e);\n if (!autoFocus) {\n e.preventDefault();\n }\n },\n onPointerDownOutside: (e)=>{\n onPointerDownOutside == null ? void 0 : onPointerDownOutside(e);\n if (!modal || e.defaultPrevented) {\n e.preventDefault();\n return;\n }\n if (keyboardIsOpen.current) {\n keyboardIsOpen.current = false;\n }\n },\n onFocusOutside: (e)=>{\n if (!modal) {\n e.preventDefault();\n return;\n }\n },\n onPointerMove: (event)=>{\n lastKnownPointerEventRef.current = event;\n if (handleOnly) return;\n rest.onPointerMove == null ? void 0 : rest.onPointerMove.call(rest, event);\n if (!pointerStartRef.current) return;\n const yPosition = event.pageY - pointerStartRef.current.y;\n const xPosition = event.pageX - pointerStartRef.current.x;\n const swipeStartThreshold = event.pointerType === 'touch' ? 10 : 2;\n const delta = {\n x: xPosition,\n y: yPosition\n };\n const isAllowedToSwipe = isDeltaInDirection(delta, direction, swipeStartThreshold);\n if (isAllowedToSwipe) onDrag(event);\n else if (Math.abs(xPosition) > swipeStartThreshold || Math.abs(yPosition) > swipeStartThreshold) {\n pointerStartRef.current = null;\n }\n },\n onPointerUp: (event)=>{\n rest.onPointerUp == null ? void 0 : rest.onPointerUp.call(rest, event);\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n },\n onPointerOut: (event)=>{\n rest.onPointerOut == null ? void 0 : rest.onPointerOut.call(rest, event);\n handleOnPointerUp(lastKnownPointerEventRef.current);\n },\n onContextMenu: (event)=>{\n rest.onContextMenu == null ? void 0 : rest.onContextMenu.call(rest, event);\n if (lastKnownPointerEventRef.current) {\n handleOnPointerUp(lastKnownPointerEventRef.current);\n }\n }\n });\n});\nContent.displayName = 'Drawer.Content';\nconst LONG_HANDLE_PRESS_TIMEOUT = 250;\nconst DOUBLE_TAP_TIMEOUT = 120;\nconst Handle = /*#__PURE__*/ React__default.forwardRef(function({ preventCycle = false, children, ...rest }, ref) {\n const { closeDrawer, isDragging, snapPoints, activeSnapPoint, setActiveSnapPoint, dismissible, handleOnly, isOpen, onPress, onDrag } = useDrawerContext();\n const closeTimeoutIdRef = React__default.useRef(null);\n const shouldCancelInteractionRef = React__default.useRef(false);\n function handleStartCycle() {\n // Stop if this is the second click of a double click\n if (shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n window.setTimeout(()=>{\n handleCycleSnapPoints();\n }, DOUBLE_TAP_TIMEOUT);\n }\n function handleCycleSnapPoints() {\n // Prevent accidental taps while resizing drawer\n if (isDragging || preventCycle || shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n // Make sure to clear the timeout id if the user releases the handle before the cancel timeout\n handleCancelInteraction();\n if (!snapPoints || snapPoints.length === 0) {\n if (!dismissible) {\n closeDrawer();\n }\n return;\n }\n const isLastSnapPoint = activeSnapPoint === snapPoints[snapPoints.length - 1];\n if (isLastSnapPoint && dismissible) {\n closeDrawer();\n return;\n }\n const currentSnapIndex = snapPoints.findIndex((point)=>point === activeSnapPoint);\n if (currentSnapIndex === -1) return; // activeSnapPoint not found in snapPoints\n const nextSnapPoint = snapPoints[currentSnapIndex + 1];\n setActiveSnapPoint(nextSnapPoint);\n }\n function handleStartInteraction() {\n closeTimeoutIdRef.current = window.setTimeout(()=>{\n // Cancel click interaction on a long press\n shouldCancelInteractionRef.current = true;\n }, LONG_HANDLE_PRESS_TIMEOUT);\n }\n function handleCancelInteraction() {\n if (closeTimeoutIdRef.current) {\n window.clearTimeout(closeTimeoutIdRef.current);\n }\n shouldCancelInteractionRef.current = false;\n }\n return /*#__PURE__*/ React__default.createElement(\"div\", {\n onClick: handleStartCycle,\n onPointerCancel: handleCancelInteraction,\n onPointerDown: (e)=>{\n if (handleOnly) onPress(e);\n handleStartInteraction();\n },\n onPointerMove: (e)=>{\n if (handleOnly) onDrag(e);\n },\n // onPointerUp is already handled by the content component\n ref: ref,\n \"data-vaul-drawer-visible\": isOpen ? 'true' : 'false',\n \"data-vaul-handle\": \"\",\n \"aria-hidden\": \"true\",\n ...rest\n }, /*#__PURE__*/ React__default.createElement(\"span\", {\n \"data-vaul-handle-hitarea\": \"\",\n \"aria-hidden\": \"true\"\n }, children));\n});\nHandle.displayName = 'Drawer.Handle';\nfunction NestedRoot({ onDrag, onOpenChange, open: nestedIsOpen, ...rest }) {\n const { onNestedDrag, onNestedOpenChange, onNestedRelease } = useDrawerContext();\n if (!onNestedDrag) {\n throw new Error('Drawer.NestedRoot must be placed in another drawer');\n }\n return /*#__PURE__*/ React__default.createElement(Root, {\n nested: true,\n open: nestedIsOpen,\n onClose: ()=>{\n onNestedOpenChange(false);\n },\n onDrag: (e, p)=>{\n onNestedDrag(e, p);\n onDrag == null ? void 0 : onDrag(e, p);\n },\n onOpenChange: (o)=>{\n if (o) {\n onNestedOpenChange(o);\n }\n onOpenChange == null ? void 0 : onOpenChange(o);\n },\n onRelease: onNestedRelease,\n ...rest\n });\n}\nfunction Portal(props) {\n const context = useDrawerContext();\n const { container = context.container, ...portalProps } = props;\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Portal, {\n container: container,\n ...portalProps\n });\n}\nconst Drawer = {\n Root,\n NestedRoot,\n Content,\n Overlay,\n Trigger: DialogPrimitive.Trigger,\n Portal,\n Handle,\n Close: DialogPrimitive.Close,\n Title: DialogPrimitive.Title,\n Description: DialogPrimitive.Description\n};\n\nexport { Content, Drawer, Handle, NestedRoot, Overlay, Portal, Root };\n","'use client';\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport { createLogger } from '@/lib/logger';\nimport type { DeploymentState } from '@shepai/core/domain/generated/output';\nimport { deployFeature } from '@/app/actions/deploy-feature';\nimport { deployRepository } from '@/app/actions/deploy-repository';\nimport { stopDeployment } from '@/app/actions/stop-deployment';\nimport { getDeploymentStatus } from '@/app/actions/get-deployment-status';\n\nexport interface DeployActionInput {\n targetId: string;\n targetType: 'feature' | 'repository';\n repositoryPath: string;\n branch?: string;\n}\n\nexport interface DeployActionState {\n deploy: () => Promise<void>;\n stop: () => Promise<void>;\n deployLoading: boolean;\n stopLoading: boolean;\n deployError: string | null;\n status: DeploymentState | null;\n url: string | null;\n}\n\nconst log = createLogger('[useDeployAction]');\n\nconst ERROR_CLEAR_DELAY = 5000;\nconst POLL_INTERVAL = 3000;\n\nexport function useDeployAction(input: DeployActionInput | null): DeployActionState {\n const [deployLoading, setDeployLoading] = useState(false);\n const [stopLoading, setStopLoading] = useState(false);\n const [deployError, setDeployError] = useState<string | null>(null);\n const [status, setStatus] = useState<DeploymentState | null>(null);\n const [url, setUrl] = useState<string | null>(null);\n\n const errorTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const pollIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const mountedRef = useRef(true);\n const statusRef = useRef(status);\n\n // Keep statusRef in sync with latest status\n useEffect(() => {\n statusRef.current = status;\n }, [status]);\n\n // Track mounted state\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (errorTimerRef.current) clearTimeout(errorTimerRef.current);\n if (pollIntervalRef.current) clearInterval(pollIntervalRef.current);\n };\n }, []);\n\n const stopPolling = useCallback(() => {\n if (pollIntervalRef.current) {\n log.debug('stopping polling');\n clearInterval(pollIntervalRef.current);\n pollIntervalRef.current = null;\n }\n }, []);\n\n const startPolling = useCallback(\n (targetId: string) => {\n stopPolling();\n log.debug(`starting polling for \"${targetId}\" every ${POLL_INTERVAL}ms`);\n\n pollIntervalRef.current = setInterval(async () => {\n if (!mountedRef.current) {\n stopPolling();\n return;\n }\n\n const result = await getDeploymentStatus(targetId);\n\n if (!mountedRef.current) return;\n\n if (!result || result.state === 'Stopped') {\n log.info(\n `poll result: ${result ? `state=${result.state}` : 'null (deployment gone)'} — stopping poll`\n );\n setStatus(null);\n setUrl(null);\n stopPolling();\n } else {\n if (result.state !== statusRef.current) {\n log.info(\n `poll state changed: ${statusRef.current} → ${result.state}, url=${result.url}`\n );\n }\n setStatus(result.state as DeploymentState);\n setUrl(result.url);\n }\n }, POLL_INTERVAL);\n },\n [stopPolling]\n );\n\n const handleDeploy = useCallback(async () => {\n if (!input) {\n log.warn('deploy() called but input is null — no-op');\n return;\n }\n if (deployLoading) {\n log.warn('deploy() called but already loading — no-op');\n return;\n }\n\n log.info(\n `deploy() — targetType=\"${input.targetType}\", targetId=\"${input.targetId}\", repositoryPath=\"${input.repositoryPath}\"`\n );\n\n if (errorTimerRef.current) clearTimeout(errorTimerRef.current);\n\n setDeployLoading(true);\n setDeployError(null);\n\n try {\n const result =\n input.targetType === 'feature'\n ? await deployFeature(input.targetId)\n : await deployRepository(input.repositoryPath);\n\n log.info('server action result:', result);\n\n if (!mountedRef.current) {\n log.warn('component unmounted after deploy — discarding result');\n return;\n }\n\n if (!result.success) {\n const errorMessage = result.error ?? 'An unexpected error occurred';\n log.error(`deploy failed: ${errorMessage}`);\n setDeployError(errorMessage);\n errorTimerRef.current = setTimeout(() => setDeployError(null), ERROR_CLEAR_DELAY);\n } else {\n log.info(`deploy succeeded — initial state=${result.state}, starting polling`);\n setStatus(result.state ?? null);\n setUrl(null);\n startPolling(input.targetId);\n }\n } catch (err: unknown) {\n if (!mountedRef.current) return;\n const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';\n log.error(`deploy threw exception: ${errorMessage}`, err);\n setDeployError(errorMessage);\n errorTimerRef.current = setTimeout(() => setDeployError(null), ERROR_CLEAR_DELAY);\n } finally {\n if (mountedRef.current) {\n setDeployLoading(false);\n }\n }\n }, [input, deployLoading, startPolling]);\n\n const handleStop = useCallback(async () => {\n if (!input || stopLoading) return;\n\n log.info(`stop() — targetId=\"${input.targetId}\"`);\n setStopLoading(true);\n\n try {\n const result = await stopDeployment(input.targetId);\n log.info('stop result:', result);\n\n if (!mountedRef.current) return;\n\n if (result.success) {\n stopPolling();\n setStatus(null);\n setUrl(null);\n }\n } catch (err) {\n log.warn('stop error (non-critical):', err);\n } finally {\n if (mountedRef.current) {\n setStopLoading(false);\n }\n }\n }, [input, stopLoading, stopPolling]);\n\n return {\n deploy: handleDeploy,\n stop: handleStop,\n deployLoading,\n stopLoading,\n deployError,\n status,\n url,\n };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"40ec8adbbe79c8eda37f954882d8b30b55ea6f7ffe\":\"deployFeature\"},\"src/presentation/web/app/actions/deploy-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40ec8adbbe79c8eda37f954882d8b30b55ea6f7ffe\",callServer,void 0,findSourceMapURL,\"deployFeature\");export{$$RSC_SERVER_ACTION_0 as deployFeature};","/* __next_internal_action_entry_do_not_use__ [{\"405c8f2fdac71c5005feb8998a702b7b4e59fc57d2\":\"deployRepository\"},\"src/presentation/web/app/actions/deploy-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"405c8f2fdac71c5005feb8998a702b7b4e59fc57d2\",callServer,void 0,findSourceMapURL,\"deployRepository\");export{$$RSC_SERVER_ACTION_0 as deployRepository};","/* __next_internal_action_entry_do_not_use__ [{\"4089edf1e0faa4882df249cd5fcceacc37140a4c34\":\"stopDeployment\"},\"src/presentation/web/app/actions/stop-deployment.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4089edf1e0faa4882df249cd5fcceacc37140a4c34\",callServer,void 0,findSourceMapURL,\"stopDeployment\");export{$$RSC_SERVER_ACTION_0 as stopDeployment};","/* __next_internal_action_entry_do_not_use__ [{\"402215691f701f4742d6f1efd251986a71a8946cae\":\"getDeploymentStatus\"},\"src/presentation/web/app/actions/get-deployment-status.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"402215691f701f4742d6f1efd251986a71a8946cae\",callServer,void 0,findSourceMapURL,\"getDeploymentStatus\");export{$$RSC_SERVER_ACTION_0 as getDeploymentStatus};","'use client';\n\nimport { useRef, useEffect } from 'react';\nimport { XIcon, Play, Square } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { ActionButton } from '@/components/common/action-button';\nimport { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';\nimport {\n Drawer,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerOverlay,\n DrawerTitle,\n DrawerDescription,\n} from '@/components/ui/drawer';\nimport { Separator } from '@/components/ui/separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { useDeployAction, type DeployActionInput } from '@/hooks/use-deploy-action';\nimport { featureFlags } from '@/lib/feature-flags';\n\nconst drawerVariants = cva('', {\n variants: {\n size: {\n sm: 'w-96',\n md: 'w-xl',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n});\n\nexport interface BaseDrawerProps extends VariantProps<typeof drawerVariants> {\n open: boolean;\n onClose: () => void;\n modal?: boolean;\n /** When true, clicking anywhere outside the drawer closes it, ignoring `data-no-drawer-close` guards. */\n dismissOnOutsideClick?: boolean;\n title?: string;\n header?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n className?: string;\n 'data-testid'?: string;\n deployTarget?: DeployActionInput;\n}\n\nexport function BaseDrawer({\n open,\n onClose,\n modal = false,\n dismissOnOutsideClick = false,\n title = 'Drawer',\n size,\n header,\n children,\n footer,\n className,\n 'data-testid': testId,\n deployTarget,\n}: BaseDrawerProps) {\n const contentRef = useRef<HTMLDivElement>(null);\n\n // Close when clicking outside the drawer panel (no overlay needed — canvas stays draggable).\n // Uses `click` (not `pointerdown`) so canvas drags don't trigger this.\n useEffect(() => {\n if (!open || modal) return;\n\n const handleClick = (e: MouseEvent) => {\n const target = e.target as Element;\n // If the clicked element was unmounted by React before the event reached\n // the document (e.g. a \"Next\" button removed on the last step), it is no\n // longer in the DOM tree — treat it as an internal click, not an outside one.\n if (!document.body.contains(target)) return;\n if (contentRef.current?.contains(target)) return;\n // Don't close when clicking inside Radix overlays.\n // When dismissOnOutsideClick is false (default), also respect data-no-drawer-close guards.\n const ignoreSelector = dismissOnOutsideClick\n ? '[role=\"alertdialog\"], [role=\"dialog\"], [role=\"menu\"], [role=\"listbox\"], [data-radix-popper-content-wrapper]'\n : '[data-no-drawer-close], [role=\"alertdialog\"], [role=\"dialog\"], [role=\"menu\"], [role=\"listbox\"], [data-radix-popper-content-wrapper]';\n if (target.closest(ignoreSelector)) return;\n onClose();\n };\n\n document.addEventListener('click', handleClick);\n return () => document.removeEventListener('click', handleClick);\n }, [open, modal, onClose, dismissOnOutsideClick]);\n\n return (\n <Drawer\n direction=\"right\"\n modal={modal}\n handleOnly\n open={open}\n onOpenChange={(isOpen) => {\n if (!isOpen) onClose();\n }}\n >\n {modal ? <DrawerOverlay /> : null}\n <DrawerContent\n ref={contentRef}\n direction=\"right\"\n showCloseButton={false}\n className={cn(drawerVariants({ size }), className)}\n data-testid={testId}\n onInteractOutside={modal ? undefined : (e) => e.preventDefault()}\n >\n {/* Visually hidden title & description required by Radix Dialog for accessibility */}\n <DrawerTitle asChild>\n <span className=\"sr-only\">{title}</span>\n </DrawerTitle>\n <DrawerDescription asChild>\n <span className=\"sr-only\">{title}</span>\n </DrawerDescription>\n\n {/* Close button */}\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden\"\n data-testid={testId ? `${testId}-close-button` : undefined}\n >\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </button>\n\n {/* Header slot */}\n {header ? <DrawerHeader className=\"shrink-0\">{header}</DrawerHeader> : null}\n\n {/* Separator between header and content — matches review drawer style */}\n {header ? <Separator /> : null}\n\n {/* Dev server bar — rendered when deployTarget is provided and env deploy is enabled */}\n {featureFlags.envDeploy && deployTarget ? <DeployBar deployTarget={deployTarget} /> : null}\n\n {/* Scrollable content area. Consumers should add p-4 for consistent spacing. */}\n {/* Footer components like DrawerActionBar typically include border-t. */}\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">{children}</div>\n\n {/* Footer slot */}\n {footer ? <DrawerFooter className=\"shrink-0\">{footer}</DrawerFooter> : null}\n </DrawerContent>\n </Drawer>\n );\n}\n\nfunction DeployBar({ deployTarget }: { deployTarget: DeployActionInput }) {\n const deployAction = useDeployAction(deployTarget);\n const isDeploymentActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';\n\n return (\n <div data-testid=\"base-drawer-deploy-bar\" className=\"flex items-center gap-2 px-4 pb-3\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span>\n <ActionButton\n label={isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n onClick={isDeploymentActive ? deployAction.stop : deployAction.deploy}\n loading={deployAction.deployLoading || deployAction.stopLoading}\n error={!!deployAction.deployError}\n icon={isDeploymentActive ? Square : Play}\n iconOnly\n variant=\"outline\"\n size=\"icon-sm\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {isDeploymentActive ? (\n <DeploymentStatusBadge\n status={deployAction.status}\n url={deployAction.url}\n targetId={deployTarget.targetId}\n />\n ) : null}\n </div>\n );\n}\n"],"names":[],"mappings":"uCAoBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAjBF,CAiBmB,AAhBrD,CAgBqD,AAhBpD,CAgBoD,AAhBpD,CAgBoD,AAhBpD,CAgBoD,AAhBpD,CAAA,AAgBoD,CAAA,AAhBpD,CAAA,AAgBoD,CAhBpD,AAAQ,AAgB4C,CAhB5C,AAgB4C,AAhB1C,CAgBoD,CAAA,AAhBjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAa,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC1C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAe,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC5C,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAA4D,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3F,kFEiBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,CAAA,CAAA,AAAO,CAAP,AAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,AAAjB,CAAiB,AAAjB,CAAiB,AAAjB,CAAiB,AAAjB,CAAiB,AAAjB,CAAiB,CAAA,EAAQ,CAAA,AAnBlC,CAAA,AAmBkC,CAnBlC,AAmBkC,CAnBlC,AAmBkC,CAnBlC,AAmBkC,CAnBlC,AAmBkC,CAnBlC,AAmBkC,CAAA,CAjBhC,AAiBgC,CAAU,AAjB1C,CAAG,AAiBuC,CAjBvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACP,CAEJ,4BDOA,CCbI,ADaJ,CCbI,ADaJ,CCbI,ADaJ,CAAM,EAAA,CAAA,EAAS,CAAT,AAAS,CAAA,AAAT,CAAA,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAjB,AAAiB,CAAA,CAAA,CAAA,CAAA,EAd9B,AAcwC,CAdvC,AAcuC,CAdvC,AAcuC,CAdvC,AAcuC,CAAA,AAdvC,CAcuC,AAdvC,CAcuC,AAdvC,CAcuC,AAdvC,CAAQ,AAc+B,AAdvC,CAAQ,AAAE,AAc6B,CAAU,AAdvC,CAAA,AAcuC,CAdvC,CAAA,CAAA,CAAA,AAAO,CAAA,CAAA,CAAA,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,CAAA,CAAA,CAAA,CAAM,AAAN,CAAM,CAAA,AAAG,CAAA,CAAA,CAAA,CAAA,AAAK,EAAG,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAChF,CCDE,CAAA,yECDF,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAgBO,SAAS,EAAa,CAC3B,OAAK,SACL,CAAO,SACP,CAAO,OACP,CAAK,CACL,KAAM,CAAI,UACV,GAAW,CAAK,SAChB,EAAU,SAAS,MACnB,EAAO,IAAI,CACO,EAClB,IAAM,EAAa,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,SAOlC,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,QAAS,EACT,KAAM,EACN,aAAY,EACZ,SAAU,EACV,QAXgB,CAWP,IAVX,EAAW,IAAI,GACf,GACF,EASI,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,UACA,GAAS,0CACT,CAAC,GACC,GACA,AAAY,aACZ,qGAGH,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,wBACjB,EACF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,UAAU,WAEvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAK,UAAU,WAEjB,EAAW,KAAO,IAGzB,yFC/DA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,wBAGA,EAAA,EAAA,CAAA,CAAA,OAEA,IAAM,EAAS,EAAA,MAAe,CAAC,IAAI,CAEb,EAAA,MAAe,CAAC,OAAO,CAE7C,IAAM,EAAe,EAAA,MAAe,CAAC,MAAM,CAErC,EAAc,EAAA,MAAe,CAAC,KAAK,CAEnC,EAAgB,EAAA,UAAgB,CAGpC,CAAC,CAAE,WAAS,SAAE,CAAO,CAAE,GAAG,EAAO,CAAE,IACnC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAe,CAAC,OAAO,CAAA,CACtB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,iCAAkC,GAChD,QAAS,AAAC,IAGR,EAAE,eAAe,GACjB,IAAU,EACZ,EACC,GAAG,CAAK,GAGb,GAAc,WAAW,CAAG,EAAA,MAAe,CAAC,OAAO,CAAC,WAAW,CAE/D,IAAM,EAAgB,EAAA,UAAgB,CAGpC,CAAC,WAAE,CAAS,UAAE,CAAQ,CAAE,GAAG,EAAO,CAAE,IACpC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,GACD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAe,CAAC,OAAO,CAAA,CACtB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,oJACA,GAED,GAAG,CAAK,WAER,EACD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAe,CAAC,KAAK,CAAA,CAAC,UAAU,0RAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAC,CAAA,CAAC,UAAU,YACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mBAAU,oBAKlC,EAAc,WAAW,CAAG,EAAA,MAAe,CAAC,OAAO,CAAC,WAAW,CAE/D,IAAM,EAAe,CAAC,WAAE,CAAS,CAAE,GAAG,EAA6C,GACjF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,qDAAsD,GAAa,GAAG,CAAK,EAEhG,GAAa,WAAW,CAAG,eAE3B,IAAM,EAAe,CAAC,WAAE,CAAS,CAAE,GAAG,EAA6C,GACjF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gEAAiE,GAC9E,GAAG,CAAK,GAGb,EAAa,WAAW,CAAG,eAE3B,IAAM,EAAc,EAAA,UAAgB,CAGlC,CAAC,WAAE,CAAS,CAAE,GAAG,EAAO,CAAE,IAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAe,CAAC,KAAK,CAAA,CACpB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,oDAAqD,GAClE,GAAG,CAAK,IAGb,EAAY,WAAW,CAAG,EAAA,MAAe,CAAC,KAAK,CAAC,WAAW,CAE3D,IAAM,EAAoB,EAAA,UAAgB,CAGxC,CAAC,WAAE,CAAS,CAAE,GAAG,EAAO,CAAE,IAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAe,CAAC,WAAW,CAAA,CAC1B,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiC,GAC9C,GAAG,CAAK,IAGb,EAAkB,WAAW,CAAG,EAAA,MAAe,CAAC,WAAW,CAAC,WAAW,8MC3FvE,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCAA,EAAA,EAAA,CAAA,CAAA,OCLiN,EAAA,EAAA,CAAA,CAAA,OAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,qBDuB/b,SAAS,EAAgB,MAAE,CAAI,cAAE,CAAY,UAAE,CAAQ,CAAwB,EACpF,GAAM,MAAE,CAAI,aAAE,CAAW,CAAE,CEbtB,AFayB,SEbhB,AAAkB,CAAmC,EACnE,GAAM,CAAC,EAAM,EAAQ,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAa,EAAE,EACzC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,GAAC,GACzC,EAAiB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAqB,MAE5C,EAAU,CAAA,EAAA,EAAA,WAAW,AAAX,EAAY,KACtB,EAAe,OAAO,EAAE,CAC1B,EAAe,OAAO,CAAC,KAAK,GAC5B,EAAe,OAAO,CAAG,MAE3B,GAAe,EACjB,EAAG,EAAE,EA2CL,MAzCA,CAAA,EAAA,EAAA,SAAS,AAAT,EAAU,KACR,GAAI,CAAC,EAAU,CACb,EAAQ,EAAE,EACV,GAAe,GACf,MACF,CAGA,EAAkB,GACf,IAAI,CAAC,AAAC,IACD,GACF,EAAQ,EAEZ,GACC,GAJkB,EAIb,CAAC,KAEP,GAGF,IAAM,EAAK,IAAI,YAAY,CAAC,8BAA8B,EAAE,EAAA,CAAU,EAgBtE,OAfA,EAAe,OAAO,CAAG,EAEzB,EAAG,MAAM,CAAG,KACV,GAAe,EACjB,EAEA,EAAG,gBAAgB,CAAC,MAAO,AAAC,IAC1B,IAAM,EAAkB,KAAK,KAAK,CAAC,EAAM,IAAI,EAC7C,EAAQ,AAAC,GAAS,IAAI,EAAM,EAAM,CACpC,GAEA,EAAG,OAAO,CAAG,KACX,GAAe,EACjB,EAEO,KACL,EAAG,KAAK,GACR,EAAe,OAAO,CAAG,IAC3B,CACF,EAAG,CAAC,EAAU,EAAQ,EAEf,MAAE,cAAM,CAAY,CAC7B,EF1CkD,EAAO,EAAW,MAElE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,EACN,aAAc,EACd,KAAM,EACN,YAAa,GAGnB,CAEO,SAAS,EAAuB,MACrC,CAAI,cACJ,CAAY,MACZ,CAAI,aACJ,CAAW,CACiB,EAC5B,IAAM,EAAY,CAAA,EAAA,EAAA,MAAA,AAAM,EAAiB,MACnC,EAAgB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAC,IAEvB,EAAe,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KAC/B,IAAM,EAAK,EAAU,OAAO,CACvB,IAAI,AACT,EAAc,OAAO,CACnB,EAAG,SAAS,CAAG,EAAG,YAAY,EAAI,EAAG,YAAY,CA5BzB,EA4B4B,CACxD,EAAG,EAAE,EAQL,MANA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACJ,EAAc,OAAO,EAAI,EAAU,OAAO,EAAE,CAC9C,EAAU,OAAO,CAAC,SAAS,CAAG,EAAU,OAAO,CAAC,YAAA,AAAY,CAEhE,EAAG,CAAC,EAAK,EAGP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,MAAM,CAAA,CAAC,KAAM,EAAM,aAAc,WAChC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,CACZ,UAAU,gJACV,wBAAkB,YAElB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,0FACtB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,0BACpB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,UAAU,6CAAoC,mBAE7D,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,yCACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAC,kCAAkC,EAAE,EAAc,eAAiB,cAAA,CAAe,GAEhG,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCACb,EAAc,YAAc,uBAKnC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,IAAK,EACL,SAAU,EACV,UAAU,uEAEO,IAAhB,EAAK,MAAM,CACV,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,yBAAgB,8BAE7B,EAAK,GAAG,CAAC,AAAC,GACR,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAiE,MAAO,GAA3D,CAAA,EAAG,EAAM,SAAS,CAAC,CAAC,EAAE,EAAM,MAAM,CAAC,CAAC,EAAE,EAAM,IAAI,CAAA,CAAE,GAGnE,CAAC,GAAe,EAAK,MAAM,CAAG,GAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,4DAAmD,4BAM9E,CAEA,SAAS,EAAQ,CAAE,OAAK,CAAuB,EAC7C,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,cAAa,EAAM,MAAM,CACzB,UAA4B,AAAjB,aAAM,MAAM,CAAgB,eAAiB,yBAExD,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yCAAiC,EAAM,IAAI,IAGjE,CD/FO,SAAS,EAAsB,QAAE,CAAM,KAAE,CAAG,UAAE,CAAQ,CAA8B,EACzF,GAAM,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GAC7C,EACJ,IAAa,IAAW,EAAA,EAAZ,aAA2B,CAAC,OAAO,EAAI,IAAW,EAAA,eAAe,CAAC,KAAA,AAAK,EAErF,OAAQ,GACN,KAAK,EAAA,eAAe,CAAC,OAAO,CAC1B,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,yEACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,OAAO,CAAA,CAAC,UAAU,kCAAkC,cAEpD,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,aAAW,mBACX,UAAU,qEACV,QAAU,AAAD,IACP,EAAE,eAAe,GACjB,EAAiB,GACnB,WAEA,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,cAEpB,QAEL,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,EACN,aAAc,EACd,SAAU,IAEV,OAGV,MAAK,EAAA,eAAe,CAAC,KAAK,CACxB,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,4EACf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,wDACf,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,IAAA,CACC,KAAM,EACN,OAAO,SACP,IAAI,sBACJ,UAAU,iDACV,QAAS,AAAC,GAAM,EAAE,eAAe,aAEhC,EACD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,eAG1B,QAED,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CACC,KAAK,SACL,aAAW,mBACX,UAAU,sEACV,QAAU,AAAD,IACP,EAAE,eAAe,GACjB,GAAiB,EACnB,WAEA,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,CAAC,UAAU,cAEpB,QAEL,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,KAAM,EACN,aAAc,EACd,SAAU,IAEV,OAGV,SACE,OAAO,IACX,CACF,qFKoCI,mBD/HJ,EAAA,EAAA,CAAA,CAAA,OCOA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAGA,IAAM,EAAgB,EAAA,OAAc,CAAC,aAAa,CAAC,CAC/C,UAAW,CACP,QAAS,IACb,EACA,WAAY,CACR,QAAS,IACb,EACA,QAAS,KAAK,EACd,UAAW,KAAK,EAChB,OAAQ,KAAK,EACb,aAAc,KAAK,EACnB,mBAAoB,KAAK,EACzB,gBAAiB,KAAK,EACtB,cAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAY,GACZ,eAAgB,CACZ,SAAS,CACb,EACA,iBAAkB,KAClB,WAAY,KACZ,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,gBAAiB,KACjB,aAAc,KAAK,EACnB,mBAAoB,KAAK,EACzB,YAAa,KAAK,EAClB,UAAW,SACX,cAAe,CACX,SAAS,CACb,EACA,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,UAAW,KACX,WAAW,CACf,GACM,EAAmB,KACrB,IAAM,EAAU,EAAA,OAAc,CAAC,UAAU,CAAC,GAC1C,GAAI,CAAC,EACD,MAAM,AAAI,CADA,KACM,sDAEpB,OAAO,CACX,EAgBA,SAAS,IACL,MAAO,iCAAiC,IAAI,CAAC,UAAU,SAAS,CACpE,CAKA,SAAS,IACL,OAVO,AAUA,EAVa,YAMb,AAIc,EAJD,UATb,AAUP,EAVoB,AASY,SACrB,UAAU,cAAc,CAAG,CAI1C,CACA,SAAS,EAAa,CAAE,EAExB,EAtFA,AA4DA,SA5DqB,AAAZ,CAAgB,EACvB,GAAI,CAAC,GAAQ,AAAmB,WAAZ,OA6EuG,EA7E9E,OAC7C,IAAI,EAAO,SAAS,IAAI,EAAI,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAChE,EAAQ,SAAS,aAAa,CAAC,SACnC,EAAM,IAAI,CAAG,WACb,EAAK,WAAW,CAAC,GAChB,EAAM,UAAU,CAAI,EAAM,UAAU,CAAC,OAAO,CAAG,EAAQ,EAAM,WAAW,CAAC,SAAS,cAAc,CAAC,GACpG,EAqDY,mgKA8BZ,IAAM,EAA8E,EAAA,SAAS,CAWlD,IAApB,OAAO,GAXI,OAWwB,OAAO,cAAc,CAe/E,IAAM,EAAoB,GA1BwC,CA0BpC,IAAI,CAC9B,WACA,QACA,QACA,QACA,OACA,QACA,SACA,SACA,QACH,EAEG,EAAqB,EAiOrB,SAAS,EAAgB,GAAG,CAAI,EAEhC,OAAO,EAAA,WAAiB,CARxB,AAQyB,SARhB,AAAY,GAAG,CAAI,EAC5B,OAAO,AAAC,GAAO,EAAK,OAAO,CAAE,AAAD,IAVT,EAUgB,UAV/B,AAA2B,OAApB,EACP,IAAI,CACG,QAAQ,EACf,AAOsC,EAPlC,IADmB,GACZ,CAOgC,CAP7B,CAAA,EAQtB,AATuC,KAeK,GAAO,EACnD,CAhBkD,AAkBlD,IAAM,EAAQ,IAAI,QAClB,SAAS,EAAI,CAAE,CAAE,CAAM,CAAE,GAAc,CAAK,EACxC,GAAI,CAAC,GAAM,CAAC,CAAC,aAAc,WAAA,CAAW,CAAG,OACzC,IAAI,EAAiB,CAAC,EACtB,OAAO,OAAO,CAAC,GAAQ,OAAO,CAAC,CAAC,CAAC,EAAK,EAAM,IACxC,AAAI,EAAI,UAAU,CAAC,MACf,CADsB,CACnB,KAAK,CAAC,WAAW,CAAC,EAAK,IAG9B,CAAc,CAAC,EAAI,CAAG,EAAG,KAAK,CAAC,EAAI,CACnC,EAAG,KAAK,CAAC,EAAI,CAAG,EACpB,GACI,GACJ,EAAM,GAAG,CAAC,EAAI,EADG,AAErB,CAWA,IAAM,EAAa,AAAC,IAChB,OAAO,GACH,IAAK,MACL,IAAK,SACD,OAAO,CACX,KAAK,OACL,IAAK,QACD,OAAO,CACX,SACI,OAAO,CACf,CACJ,EACA,SAAS,EAAa,CAAO,CAAE,CAAS,EACpC,GAAI,CAAC,EACD,OADU,AACH,KAEX,IAAM,EAAQ,OAAO,gBAAgB,CAAC,GAChC,EACN,EAAM,SAAS,EAAI,EAAM,eAAe,EAAI,EAAM,YAAY,CAC1D,EAAM,EAAU,KAAK,CAAC,6BAC1B,AAAI,EAEO,GAFF,QAEa,CAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAW,GAAa,GAAK,GAAG,EAIlE,CADP,EAAM,EAAU,KAAK,CAAC,mBAAA,EACT,WAAW,CAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAW,GAAa,EAAI,EAAE,EAAI,IACjF,CAIA,SAAS,EAAY,CAAO,CAAE,CAAK,EAC/B,GAAI,CAAC,EAAS,MAAO,KAAK,EAC1B,IAAM,EAAY,EAAQ,KAAK,CAAC,OAAO,CAEvC,OADA,OAAO,MAAM,CAAC,EAAQ,KAAK,CAAE,GACtB,KACH,EAAQ,KAAK,CAAC,OAAO,CAAG,CAC5B,CACJ,CAcA,MAAM,AAEI,CACF,IACA,IACA,EACA,EACH,CAPe,AAed,EAAa,gBAGnB,SAAS,EAAe,CAAQ,EAC5B,IAAM,EAAc,EAAA,OAAc,CAAC,MAAM,CAAC,GAK1C,OAJA,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,EAAY,OAAO,CAAG,CAC1B,GAEO,EAAA,OAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAA8B,MAAvB,EAAY,OAAO,CAAW,KAAK,EAAI,EAAY,OAAO,CAAC,IAAI,CAAC,KAAgB,GAAO,EAAE,CAC1I,CAkBA,SAAS,EAAqB,CAAE,MAAI,aAAE,CAAW,UAAE,EAAW,KAAK,CAAC,CAAE,EAClE,GAAM,CAAC,EAAkB,EAAoB,CAAG,AAlBpD,SAAS,AAAqB,aAAE,CAAW,UAAE,CAAQ,CAAE,EACnD,IAAM,EAAoB,EAAA,OAAc,CAAC,QAAQ,CAAC,GAC5C,CAAC,EAAM,CAAG,EACV,EAAe,EAAA,OAAc,CAAC,MAAM,CAAC,GACrC,EAAe,EAAe,GAWpC,OAVA,EAAA,OAAc,CAAC,SAAS,CAAC,KACjB,EAAa,OAAO,GAAK,IACzB,EAAa,CADmB,EAEhC,EAAa,OAAO,CAAG,EAE/B,EAAG,CACC,EACA,EACA,EACH,EACM,CACX,EAEyE,aACjE,EACA,UACJ,GACM,OAAwB,IAAT,EACf,EAAQ,EAAe,EAAO,EAC9B,EAAe,EAAe,GAepC,MAAO,CACH,EAfa,EAAA,OAAc,CAAC,WAAW,CAAC,AAAC,IACzC,GAAI,EAAc,CAEd,IAAM,EAA6B,YAArB,OAAO,EAA2B,AADjC,EACwC,GAAQ,EAC3D,IAAU,GAAM,EAAa,EACrC,MACI,CADG,CACiB,EAE5B,EAAG,CACC,EACA,EACA,EACA,EACH,EAIA,AACL,CAgNA,IAAM,EAAO,IAAI,KAAK,EAgDlB,EAAuB,KAqH3B,SAAS,EAAK,CAAE,KAAM,CAAQ,cAAE,CAAY,UAAE,CAAQ,CAAE,OAAQ,CAAU,CAAE,UAAW,CAAa,YAAE,CAAU,uBAAE,EAAwB,EAAK,2BAAE,EAA4B,EAAI,gBAAE,EAhb3J,GAgb2L,YAAf,OAAiB,EA/azL,GA+agO,aAAE,EAArB,CAAmC,CAAI,CAAE,cAAa,CAAK,eAAE,EAAgB,GAAc,EAAW,MAAM,CAAG,CAAC,CAAE,gBAAiB,CAAmB,CAAE,mBAAoB,CAAsB,OAAE,CAAK,OAAE,GAAQ,CAAI,SAAE,CAAO,CAAE,QAAM,cAAE,GAAe,CAAK,WAAE,EAAY,QAAQ,aAAE,GAAc,CAAK,sBAAE,EAAuB,EAAI,uBAAE,GAAwB,CAAK,0BAAE,GAA2B,CAAK,kBAAE,GAAmB,CAAI,gBAAE,CAAc,WAAE,CAAS,WAAE,GAAY,CAAK,CAAE,EACrrB,IAAI,EAAoB,EACxB,GAAM,CAAC,GAAS,CAAK,CAAE,EAAU,CAAG,EAAqB,CACrD,YAAa,EACb,KAAM,EACN,SAAU,AAAC,IACS,MAAhB,CAAuB,EAAS,EAAa,CAAjB,EACxB,AAAC,GAAM,EAAD,CACN,KADe,AAGnB,WAAW,KACP,AAAkB,OAAO,EAAS,EAAe,CAAnB,CAClC,EAAG,KAQC,AAAC,GAAG,CAEJ,GAVW,MAUF,EAVU,EAUN,CAVS,AAUR,KAAK,CAAC,aAAa,CAAG,MAAA,CAE5C,CACJ,GACM,CAAC,EAAe,EAAiB,CAAG,EAAA,OAAc,CAAC,QAAQ,EAAC,GAC5D,CAAC,EAAY,EAAc,CAAG,EAAA,OAAc,CAAC,QAAQ,EAAC,GACtD,CAAC,GAAc,GAAgB,CAAG,EAAA,OAAc,CAAC,QAAQ,EAAC,GAC1D,GAAa,EAAA,OAAc,CAAC,MAAM,CAAC,MACnC,GAAW,EAAA,OAAc,CAAC,MAAM,CAAC,MACjC,GAAgB,EAAA,OAAc,CAAC,MAAM,CAAC,MACtC,GAAc,EAAA,OAAc,CAAC,MAAM,CAAC,MACpC,GAAwB,EAAA,OAAc,CAAC,MAAM,CAAC,MAC9C,GAAkB,EAAA,OAAc,CAAC,MAAM,EAAC,GACxC,GAAwB,EAAA,OAAc,CAAC,MAAM,CAAC,MAC9C,GAAe,EAAA,OAAc,CAAC,MAAM,CAAC,GACrC,GAAiB,EAAA,OAAc,CAAC,MAAM,EAAC,GACvC,GAAgB,EAAA,OAAc,CAAC,MAAM,CAAC,CAAC,GACvC,GAA0B,EAAA,OAAc,CAAC,MAAM,CAAC,GAChD,GAAY,EAAA,OAAc,CAAC,MAAM,CAAC,MAClC,GAAkB,EAAA,OAAc,CAAC,MAAM,CAAC,CAAC,AAA4C,OAA3C,EAAqB,GAAU,OAAA,AAAO,EAAY,KAAK,EAAI,EAAmB,qBAAqB,GAAG,MAAA,AAAM,GAAK,GAC3J,GAAiB,EAAA,OAAc,CAAC,MAAM,CAAC,CAAC,AAA6C,MAA5C,GAAsB,GAAU,OAAA,AAAO,EAAY,KAAK,EAAI,EAAoB,qBAAqB,GAAG,KAAA,AAAK,GAAK,GAC3J,GAAsB,EAAA,OAAc,CAAC,MAAM,CAAC,GAC5C,GAAoB,EAAA,OAAc,CAAC,WAAW,CAAC,AAAC,IAE9C,GAAc,IAAyB,GAAiB,MAAM,CAAG,IAAG,GAAS,OAAO,CAAG,IAAI,IAAA,CACnG,EAAG,EAAE,EACC,iBAAE,EAAe,sBAAE,EAAoB,oBAAE,EAAkB,CAAE,UAAW,EAAmB,kBAAE,EAAgB,CAAE,OAAQ,EAAgB,YAAE,EAAU,CAAE,qBAAsB,EAA8B,CAAE,CAnarN,AAmawN,SAna/M,AAAc,qBAAE,CAAmB,wBAAE,CAAsB,YAAE,CAAU,WAAE,CAAS,YAAE,CAAU,eAAE,CAAa,mBAAE,CAAiB,WAAE,EAAY,QAAQ,WAAE,CAAS,uBAAE,CAAqB,CAAE,EAC/L,GAAM,CAAC,EAAiB,EAAmB,CAAG,EAAqB,CAC/D,KAAM,EACN,YAA2B,MAAd,EAAqB,KAAK,EAAI,CAAU,CAAC,EAAE,CACxD,SAAU,CACd,GACM,CAAC,EAAkB,EAAoB,CAAG,EAAA,OAAc,CAAC,QAAQ,CAAC,KAGpE,GACJ,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,KALoG,IAK3F,IACL,EAAoB,CAChB,WAAY,OAAO,UAAU,CAC7B,YAAa,OAAO,WAAW,AACnC,EACJ,CAEA,OADA,OAAO,gBAAgB,CAAC,SAAU,GAC3B,IAAI,OAAO,mBAAmB,CAAC,SAAU,EACpD,EAAG,EAAE,EACL,IAAM,EAAkB,EAAA,OAAc,CAAC,OAAO,CAAC,IAAI,KAAmC,MAAd,EAAqB,KAAK,EAA3B,AAA+B,CAAU,CAAC,EAAW,MAAM,CAAG,EAAA,AAAE,GAAK,KAAM,CAC9I,EACA,EACH,EACK,EAAuB,EAAA,OAAc,CAAC,OAAO,CAAC,KAChD,IAAI,EACJ,OAAO,AAA4H,OAA3H,EAAsC,MAAd,EAAqB,KAAK,EAAI,EAAW,SAAS,CAAC,AAAC,GAAY,IAAc,EAAA,CAAgB,CAAY,EAAwB,IACtK,EAAG,CACC,EACA,EACH,EACK,EAAa,GAAc,EAAW,MAAM,CAAG,IAAM,CAAD,MAAkB,CAAkB,CAAC,EAAK,CAAC,OAAO,KAAK,CAAC,IAAkB,CAAU,CAAC,EAAc,GAAK,GAAmB,CAAC,EAChL,EAAmB,EAAA,OAAc,CAAC,OAAO,CAAC,SAWxC,EAVJ,IAAM,EAAgB,EAAY,CAC9B,MAAO,EAAU,qBAAqB,GAAG,KAAK,CAC9C,OAAQ,EAAU,qBAAqB,GAAG,MAAM,AACpD,EAGI,CACA,CAJA,KAIO,EACP,OAAQ,CACZ,EAEA,OAAO,AAkBA,OAlBC,EAAgC,KARJ,CAQV,EAAqB,KAAK,EAAI,EAAW,GAAG,CAAC,AAAC,IACpE,IAAM,EAA4B,AAArB,iBAAO,EAChB,EAAoB,EAIxB,GAHI,IACA,EADM,AACc,SAAS,EAAW,GAAA,EAExC,EAAW,GAAY,CACvB,IAAM,EAAS,EAAO,EAAoB,EAAmB,EAAY,EAAc,MAAM,CAAG,SAChG,AAAI,EACqB,WAAd,EAAyB,EAAc,CAD5B,KACkC,CAAG,EAAS,CAAC,EAAc,MAAM,CAAG,EAErF,CACX,CACA,IAAM,EAAQ,EAAO,EAAoB,EAAmB,EAAY,EAAc,KAAK,CAAG,SAC9F,AAAI,EACqB,UAAd,EAAwB,EAAc,EAD3B,GACgC,CAAG,EAAQ,CAAC,EAAc,KAAK,CAAG,EAEjF,CACX,EAAA,CAAE,CAAY,EAAkB,EAAE,AACtC,EAAG,CACC,EACA,EACA,EACH,EACK,EAAwB,EAAA,OAAc,CAAC,OAAO,CAAC,IAAI,AAAyB,SAA2B,MAApB,EAA2B,KAAK,EAAI,CAAgB,CAAC,EAAqB,CAAG,KAAM,CACxK,EACA,EACH,EACK,EAAc,EAAA,OAAc,CAAC,WAAW,CAAC,AAAC,IAC5C,IAAI,EACJ,IAAM,EAAoB,AAA8I,OAA7I,EAAkD,MAApB,EAA2B,KAAK,EAAI,EAAiB,SAAS,CAAC,AAAC,GAAe,IAAiB,EAAA,CAAU,CAAY,EAA8B,KAC7M,EAAkB,GAClB,EAAI,EAAU,OAAO,CAAE,CACnB,WAAY,CAAC,UAAU,EAAE,YAAY,MAA0B,EAAlB,AAAmC,CAAlC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC5F,CAD+E,EAAlB,OAClD,EAAW,GAAa,CAAC,eAAe,EAAE,EAAU,MAAM,CAAC,CAAG,CAAC,YAAY,EAAE,EAAU,SAAS,CAAC,AAChH,GACI,GAAoB,IAAsB,EAAiB,MAAM,CAAG,QAAuB,IAAlB,GAA+B,IAAsB,GAAiB,EAAoB,EACnK,EAAI,EAAW,OAAO,CAAE,CAD0J,AAE9K,WAAY,CAAC,QAAQ,EAAE,YAAY,MAA0B,EAAlB,AAAmC,CAAlC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC1F,CAD6E,EAAlB,KAClD,GACb,GAEA,EAAI,EAAW,OAAO,CAAE,CACpB,WAAY,CAAC,QAAQ,EAAE,YAAY,MAA0B,EAAlB,AAAmC,CAAlC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC1F,CAD6E,EAAlB,KAClD,GACb,GAEJ,EAAiC,MAAd,EAAqB,KAAK,EAAI,CAAU,CAAC,KAAK,GAAG,CAAC,EAAmB,GAAG,CAC/F,EAAG,CACC,EAAU,OAAO,CACjB,EACA,EACA,EACA,EACA,EACH,SACD,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,GAAI,GAAmB,EAAqB,CACxC,IAAI,EACJ,IAAM,EAAW,AAAiK,OAAhK,EAAwB,AAAc,QAAO,KAAK,EAAI,EAAW,SAAS,CAAC,AAAC,GAAY,IAAc,GAAuB,IAAc,EAAA,CAAgB,CAAY,EAAwB,CAAC,EAC9M,GAAiC,CAAC,IAAd,GAAyD,UAAU,AAAhD,OAAO,CAAgB,CAAC,EAAS,EACxE,EAAY,CAAgB,CAAC,EAAS,CAE9C,CACJ,EAAG,CACC,EACA,EACA,EACA,EACA,EACH,EA+EM,iBACH,kBACA,aACA,EACA,qBA1BJ,SAAS,AAAqB,CAAkB,CAAE,CAAc,EAC5D,GAAI,CAAC,GAA8C,UAAhC,OAAO,GAAqC,CAAC,GAAoB,KAAkB,MAAW,OAAO,KAExH,IAAM,EAAqB,IAAyB,EAAgB,EAEpE,GADmC,AAC/B,GADuD,GACzB,EAC9B,OAAO,EAGX,GAAI,EAJ8C,CAIxB,CAAC,EAAgB,OAAO,EAClD,GAAI,CAAC,GAAc,CAAC,EAAoB,OAAO,KAE/C,IAAM,EAAuB,EAAqB,EAAuB,EAAI,EAAuB,EAG9F,EAAoB,EAAqB,KAAK,GAAG,CAAC,AAD9B,EAAqB,CAAgB,CAAC,EAAqB,CAAG,CAAgB,CAAC,EAAuB,EAAE,CAAG,CAAgB,CAAC,EAAuB,EAAE,CAAG,CAAgB,CAAC,EAAqB,SAExN,AAAI,EACO,EAAI,EAEJ,CAEf,aAL4B,QAWxB,uBACA,EACA,UArFJ,SAAS,AAAU,iBAAE,CAAe,aAAE,CAAW,UAAE,CAAQ,aAAE,CAAW,CAAE,EACtE,QAAsB,IAAlB,EAA6B,OACjC,IAAM,EAAgC,WAAd,GAAwC,UAAd,EAAwB,CAA0B,MAAzB,EAAgC,GAAwB,CAAC,CAAI,EAAkB,CAA0B,MAAzB,EAAgC,GAAwB,CAAC,CAAI,EAClN,EAAqB,IAAyB,EAAgB,EAC9D,EAAmC,AAAzB,MACV,EAAe,EAAkB,EAMvC,GALI,GACA,EAAI,EAAW,OAAO,CAAE,CACpB,IAFgB,OAEJ,CAAC,QAAQ,EAAE,YAAY,MAA0B,EAAlB,AAAmC,CAAlC,GAAsC,CAAC,KAAK,AAAf,CAAgB,CAAC,AAC9F,EADiF,CAGjF,CAAC,AAH8D,GAGrC,EAAW,GAAK,CAAC,EAAc,YACrD,EAAa,IACZ,EAAY,CAAgB,CAAC,EAAE,GAAG,AAG3C,GAAI,CAAC,GAAyB,EAAW,GAAK,GAAgB,GAAoB,EAAY,IAH3B,QAI/D,EAAY,CAAgB,CAAC,EAAW,MAAM,CAAG,EAAE,EAIvD,IAAM,EAAuC,MAApB,EAA2B,KAAK,EAAI,EAAiB,MAAM,CAAC,CAAC,EAAM,IACxF,AAAoB,UAAhB,OAAO,GAAqC,UAAhB,AAA0B,OAAnB,EAA0B,EAC1D,KAAK,GAAG,CAAC,EAAO,GAAmB,KAAK,GAAG,CAAC,EAAO,GAAmB,EAAO,GAElF,EAAM,EAAW,GAAa,OAAO,WAAW,CAAG,OAAO,UAAU,CAC1E,GAAI,MAAiC,KAAtB,AAA2B,GAAG,CAAC,GAAyB,GAAN,EAAW,CACxE,IAAM,EAAgB,EAAe,EAAI,CAAC,GAAG,MAE7C,AAAI,EAAgB,GAAK,GAAmB,MAFqB,CAG7D,EAAY,CAAgB,CAAC,CADuB,CACZ,MAAM,CAAG,EAAE,OAGnD,GAAW,EAAgB,GAAK,GAChC,IAEyB,MAHoB,AAGd,CAA/B,GACJ,EAAY,CAAgB,CAAC,EAAuB,EAAc,EAEtE,CACA,EAAY,EAChB,EA6CI,OA5CJ,SAAS,AAAO,iBAAE,CAAe,CAAE,EAC/B,GAA8B,OAA1B,EAAgC,OACpC,IAAM,EAAyB,WAAd,GAAwC,UAAd,EAAwB,EAAwB,EAAkB,EAAwB,CAErI,CAAK,CAAc,EAAf,YAAyC,UAAd,CAAc,CAAO,EAAK,EAAW,CAAgB,CAAC,EAAiB,MAAM,CAAG,EAAE,EAAE,AAG/G,CAAe,QAAd,GAAqC,SAAd,CAAc,CAAM,EAAK,EAAW,CAAgB,CAAC,EAAiB,MAAM,CAAG,EAAE,EAAE,AAG/G,EAAI,EAAU,OAAO,CAAE,CACnB,UAAW,EAAW,GAAa,CAAC,eAAe,EAAE,EAAS,MAAM,CAAC,CAAG,CAAC,YAAY,EAAE,EAAS,SAAS,CAAC,AAC9G,EACJ,mBAgCI,CACJ,CACJ,EAuNsO,YAC9N,sBACA,yBACA,YACA,iBACA,aACA,GACA,+BACA,YACA,wBACA,CACJ,IAlyBA,AAmyBA,SAnyBS,AAAiB,EAAU,CAAC,CAAC,EACtC,GAAI,YAAE,CAAU,CAAE,CAAG,EACrB,EAA0B,KACtB,IAAI,EASJ,OAL2B,AAAvB,GAA0B,AAJd,KAKR,IAID,KAEC,AAAuB,GAAG,MACf,MAAX,CAAkB,EAAS,GAAJ,AAAI,CAEnC,CACJ,EAAG,CACC,EACH,CACL,EA8wBqB,CACb,WAAY,CAAC,GAAU,GAAc,CAAC,GAAS,IAAgB,CAAC,GAAiB,CAAC,GAAoB,CAAC,CAC3G,GACA,GAAM,wBAAE,EAAsB,CAAE,CAAG,AA5KnC,SAAS,AAAiB,QAAE,CAAM,OAAE,CAAK,QAAE,CAAM,eAAE,CAAa,0BAAE,CAAwB,cAAE,CAAY,CAAE,EAC1G,GAAM,CAAC,EAAW,EAAa,CAAG,EAAA,OAAc,CAAC,QAAQ,CAAC,IAA2D,AAAvD,IACxD,EAAY,EAAA,OAAc,CAAC,MAAM,CAAC,GAClC,EAAmB,EAAA,OAAc,CAAC,AAFsD,WAE3C,CAAC,KAEhD,GAAK,CAAD,IAEyB,OAFZ,AAEb,GAAiC,GAAU,CAAC,EAAc,CAC1D,EAAuB,CACnB,SAAU,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtC,IAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAC5B,KAAM,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAC9B,OAAQ,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAClC,MAAO,OACX,EAEA,GAAM,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,OACjC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAY,QAAS,aACrD,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,CAC/B,IAAK,CAAA,EAAG,CAAC,EAAU,OAAO,CAAC,EAAE,CAAC,CAC9B,KAAM,CAAA,EAAG,CAAC,EAAQ,EAAE,CAAC,CACrB,MAAO,MACP,OAAQ,MACZ,GACA,OAAO,UAAU,CAAC,IAAI,OAAO,qBAAqB,CAAC,KAE3C,IAAM,EAAkB,EAAc,OAAO,WAAW,CACpD,GAAmB,EAAU,OAAO,EAAI,IAExC,SAFqD,AAE5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAG,CAAA,EAAG,CAAC,CAAC,EAAU,OAAO,CAAG,CAAA,CAAe,CAAE,GAAE,AAAC,CAE/E,GAAI,IACZ,CACJ,EAAG,CACC,EACH,EACK,EAAyB,EAAA,OAAc,CAAC,WAAW,CAAC,KAEtD,GAAK,CAAD,IACyB,OADZ,AACb,GAAiC,CAAC,EAAc,CAEhD,IAAM,EAAI,CAAC,SAAS,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,IACvC,EAAI,CAAC,SAAS,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,IAE9C,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,GACnC,OAAO,qBAAqB,CAAC,KACrB,AAAJ,GAAgC,IAAc,OAAO,QAAQ,CAAC,IAAI,CAC9D,CADgE,CACnD,OAAO,QAAQ,CAAC,IAAI,EAGrC,OAAO,QAAQ,CAAC,EAAG,EACvB,GACA,EAAuB,IAC3B,CACJ,EAAG,CACC,EACH,EAgDD,OA/CA,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,SAAS,IACL,EAAU,OAAO,CAAG,OAAO,OAAO,AACtC,CAGA,OAFA,IACA,OAAO,gBAAgB,CAAC,SAAU,GAC3B,KACH,OAAO,mBAAmB,CAAC,SAAU,EACzC,CACJ,EAAG,EAAE,EACL,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,GAAK,CAAD,CACJ,KADY,CACL,KACqB,AAAxB,IAAI,OAAO,EAA0B,QAEX,SAAS,aAAa,CAAC,uBAEjD,GACJ,CACJ,EAAG,CACC,EACA,EACH,EACD,EAAA,OAAc,CAAC,SAAS,CAAC,MACjB,GAAW,IAEX,GAFU,AAIW,AACrB,CAAC,IAHO,EAEoB,CAJF,SAIY,CAAC,8BAA8B,OAAO,EAC3D,IACb,AAAC,GACD,IADQ,GACD,UAAU,CAAC,KACd,GACJ,EAAG,MAGP,IAER,EAAG,CACC,EACA,EACA,EACA,EACA,EACA,EACA,EACH,EACM,wBACH,CACJ,CACJ,EAiEwD,QAChD,QACA,EACA,OAAkB,MAAV,GAAiB,SAAS,OAClC,2BACA,eACA,CACJ,GACA,SAAS,KACL,MAAO,CAAC,OAAO,UAAU,GAAG,CAAiB,CAAI,OAAO,UAAU,AACtE,CAmBA,SAAS,GAAW,CAAE,CAAE,CAAqB,EACzC,IAAI,EACJ,IAAI,EAAU,EACR,EAAoE,AAAlD,OAAC,EAAuB,OAAO,YAAY,EAAA,CAAE,CAAY,KAAK,EAAI,EAAqB,QAAQ,GACjH,EAAc,GAAU,OAAO,CAAG,EAAa,GAAU,OAAO,CAAE,GAAa,KAC/E,EAAO,IAAI,KAEjB,GAAwB,UAAU,CAA9B,EAAQ,OAAO,EAGf,EAAQ,YAAY,CAAC,sBAAwB,EAAQ,OAAO,CAAC,uBAF7D,CAEqF,MAF9E,EAKX,GAAI,AAAc,aAAyB,QAAQ,CAAtB,EACzB,MAAO,GAGX,GAAI,GAAS,OAAO,EAAI,EAAK,OAAO,GAAK,GAAS,OAAO,CAAC,OAAO,GAAK,IAClE,CADuE,MAChE,EAEX,GAAoB,MAAM,CAAtB,IACI,AAAc,aAAW,EAAc,EAAI,GAAc,EACzD,CAD4D,MACrD,EAIf,GAAI,GAAmB,EAAgB,MAAM,CAAG,EAC5C,CAD+C,KACxC,GAGX,GAAI,GAAsB,OAAO,EAAI,EAAK,OAAO,GAAK,GAAsB,OAAO,CAAC,OAAO,GAAK,GAAqB,AAAgB,GAAG,IAIpI,EAFA,OADA,GAAsB,OAAO,CAAG,GACzB,AAEgB,EAM3B,KAAM,GAAQ,CAEV,GAAI,EAAQ,YAAY,CAAG,EAAQ,YAAY,CAAE,CAC7C,GAA0B,GAAG,CAAzB,EAAQ,SAAS,CAGjB,OAFA,GAAsB,OAAO,CAAG,IAAI,KAE7B,GAEX,GAAI,AAAiC,UAAU,GAAnC,YAAY,CAAC,QACrB,KAER,CAEA,CAJe,CAIL,EAAQ,UAAU,AAChC,CAEA,OAAO,CACX,CAiJA,SAAS,GAAY,CAAU,EA2CtB,GAAe,GAAU,OAAO,CAAlB,CAAoB,CACvC,GAAU,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GACnC,GAAgB,OAAO,EAAG,EAC1B,GAAc,GACd,GAAY,OAAO,CAAG,IAAI,MA7Cf,MAAX,CAAkB,EAAS,GAAJ,CACnB,AAAC,GACD,GAAU,GAEd,GAHiB,QAGN,KACH,GACA,GAAmB,CAAU,CAAC,EAAE,CAExC,CAHoB,CAGjB,IACP,CACA,OAFmB,EAEV,KACL,CAHuB,EAGnB,CAHsB,AAGrB,GAAU,IAHkB,GAGX,CAAE,OACxB,IAAM,CAJ2C,CAIjC,SAAS,aAAa,CAAC,8BACjC,EAAqB,EAAa,GAAU,OAAO,CAAE,GAC3D,EAAI,GAAU,OAAO,CAAE,CACnB,UAAW,uBACX,WAAY,CAAC,UAAU,EAAE,YAAY,MAA0B,EAAlB,AAAmC,CAAlC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAC/F,AADgG,EAAb,CAEnF,CAFiE,CAE7D,GAAW,OAAO,CAAE,CACpB,WAAY,CAAC,QAAQ,EAAE,YAAY,MAA0B,EAAiB,AAAnC,CAAC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC1F,CAD6E,EAAlB,KAClD,GACb,GAEI,GAAyB,GAAsB,EAAqB,GAAK,GACzE,EAAI,EAAS,CADoE,AAE7E,aAAc,GAAG,GACjB,SAAU,EADqB,EAAE,CAAC,IAElC,GAAG,EAAW,GAAa,CACvB,UAAW,CAAC,MAAM,EAAE,KAAW,0DAA0D,CAAC,CAC1F,gBAAiB,KACrB,EAAI,CACA,UAAW,CAAC,MAAM,EAAE,KAAW,0DAA0D,CAAC,CAC1F,gBAAiB,MACrB,CAAC,CACD,mBAAoB,2BACpB,mBAAoB,GAAG,IACvB,QADmC,QAAQ,CAAC,CAAC,CAAC,MACpB,CAAC,aAAa,EAAE,EAAiB,IAAI,CAAC,KAAV,AAAe,CAAC,CAAC,AAC3E,EAD8D,CAC3D,EAEX,QA3GA,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,OAAO,qBAAqB,CAAC,KACzB,GAAc,OAAO,EAAG,CAC5B,EACJ,EAAG,EAAE,EACL,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,IAAI,EACJ,SAAS,UAIG,EAHR,GAAI,AAAC,GAAU,OAAO,EAAK,EAAD,EAEtB,CAlxBC,EAixBkB,IAjxBZ,CAkxBC,IADoB,EADa,WACA,YAhxB5B,kBAAoB,CAAC,EAAkB,GAAG,CAAC,EAAO,IAAI,GAAK,aAAkB,qBAAuB,aAAkB,aAAe,EAAO,iBAAiB,EAixB/I,GAAe,OAAA,AAAO,EAAE,CAEnD,IAAM,EAAuB,CAAC,AAAoD,OAAnD,EAAyB,OAAO,cAAA,AAAc,EAAY,KAAK,EAAI,EAAuB,MAAA,AAAM,GAAK,EAC9H,EAAc,OAAO,WAAW,CAElC,EAAkB,EAAc,EAC9B,EAAe,GAAU,OAAO,CAAC,qBAAqB,GAAG,MAAM,EAAI,CAGrE,CAAC,GAAoB,OAAO,EAAE,CAC9B,GAAoB,OAAO,CAAG,CAAA,EAElC,IAAM,EAAgB,GAAU,OAAO,CAAC,qBAAqB,GAAG,GAAG,CAWnE,GATI,KAAK,GAAG,CAAC,GAAwB,OAAO,CAAG,GAAmB,IAAI,CAClE,GAAe,OAAO,CAAG,CAAC,GAAe,OAAA,AAAO,EAEhD,GAAc,EAAW,MAAM,CAAG,GAAK,IAAoB,KAE3D,GAD8B,EAAgB,CAAC,GAAqB,EAAI,CACrD,EAEvB,GAJqF,AAI7D,EAFD,KAEQ,CAAG,EAE9B,EAAe,GAAwB,GAAe,OAAO,CAAE,CAC/D,IAAM,EAAS,GAAU,OAAO,CAAC,qBAAqB,GAAG,MAAM,CAC3D,EAAkB,EAClB,EAAS,IACT,EAAkB,GAnBL,AAmB6B,EAnBA,GAAd,EAmB6B,EArrBvD,EAqrBuE,CAAiB,CAD3D,CAI/B,EACA,GAAU,CAJ+B,CAGlC,EAHkE,GAIxD,CAAC,KAAK,CAAC,MAAM,CAAG,CAAA,EAAG,EAAS,KAAK,GAAG,CAAC,EAAiB,GAAG,EAAE,CAAC,CAE7E,GAAU,OAAO,CAAC,KAAK,CAAC,MAAM,CAAG,CAAA,EAAG,KAAK,GAAG,CAAC,EAAiB,EAAuB,GAAe,EAAE,CAAC,AAE/G,MAAW,AA/jCL,CA+jCC,AAAK,SA/jCI,SAAS,CA+jCM,AAC3B,GAAU,OAAO,CAAC,KAAK,CAAC,MAAM,CAAG,CAAA,EAAG,GAAoB,OAAO,CAAC,EAAE,CAAC,CAEnE,GAAc,EAAW,MAAM,CAAG,GAAK,CAAC,GAAe,OAAO,CAC9D,CADgE,EACtD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAG,CAAC,GAAG,CAAC,CAGtC,GAAU,OAAO,CAAC,KAAK,CAAC,MAAM,CAAG,CAAA,EAAG,KAAK,GAAG,CAAC,EAAiB,GAAG,EAAE,CAAC,AAE5E,CACJ,CAEA,OADA,AAAoD,OAAnD,AAA0D,EAAjC,GAAsC,IAA/B,cAAA,AAAc,GAAqB,EAAuB,gBAAgB,CAAC,SAAU,GAC/G,KACH,IAAI,EACJ,OAA2D,AAApD,OAAC,EAAyB,OAAO,cAAA,AAAc,EAAY,KAAK,EAAI,EAAuB,mBAAmB,CAAC,SAAU,EACpI,CACJ,EAAG,CACC,GACA,EACA,GACH,EAwGD,EAAA,OAAc,CAAC,SAAS,CAAC,KAEjB,IACA,EAAI,EADI,OACK,eAAe,CAAE,CAC1B,eAAgB,MACpB,GACA,GAAS,OAAO,CAAG,IAAI,MAEpB,MA74Bf,AA84BY,SA94BH,AAAM,CAAE,CAAE,CAAI,EACnB,GAAI,CAAC,GAAM,CAAC,CAAC,aAAc,WAAA,CAAW,CAAG,OACzC,IAAI,EAAiB,EAAM,GAAG,CAAC,GAC1B,IAID,EAAG,KAAK,CAAC,EAAK,CAAG,CAAc,AAJd,CAIe,EAAA,AAAK,CAE7C,EAq4BkB,SAAS,eAAe,CAAE,iBACpC,GACD,CACC,EACH,EA0CD,EAAA,OAAc,CAAC,SAAS,CAAC,KACjB,AAAC,GAED,IAFQ,GAED,qBAAqB,CAAC,KACzB,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa,CAAG,MACxC,EAER,EAAG,CACC,EACH,EACoB,EAAA,OAAc,CAAC,aAAa,CAAC,EAAA,IAAoB,CAAE,CACpE,YAAa,EACb,aAAc,AAAC,KACP,AAAC,GAAgB,CAAA,GAAM,CACvB,EACA,EAAiB,EADX,CADU,CAIhB,IAAY,GAEhB,EAAU,GACd,EACA,KAAM,CACV,EAAiB,CAAd,CAAc,OAAc,CAAC,EAAlB,WAA+B,CAAC,EAAc,QAAQ,CAAE,CAClE,MAAO,iBACH,cACA,qBACA,GACA,aACA,2BACA,EACA,QAxZR,SAAS,AAAQ,CAAK,EAClB,IAAI,EAAoB,CACxB,AAAI,EAAC,GAAe,CAAC,GACjB,KAAU,IADmB,GACZ,EAAK,EAAD,CAAW,OAAO,CAAC,QAAQ,CAAC,EAAM,OAAM,GAAG,CACpE,GAAgB,OAAO,CAAG,CAA6C,AAA5C,MAAC,GAAqB,GAAU,OAAO,AAAP,EAAmB,KAAK,EAAI,EAAmB,qBAAqB,GAAG,MAAA,AAAM,GAAK,EAC7I,GAAe,OAAO,CAAG,CAAC,AAA6C,OAA5C,EAAsB,GAAU,OAAA,AAAO,EAAY,KAAK,EAAI,EAAoB,qBAAqB,GAAG,KAAA,AAAK,GAAK,EAC7I,EAAc,IACd,GAAc,OAAO,CAAG,IAAI,KAExB,IAMJ,EAAM,MAAM,CAAC,iBAAiB,CAAC,EAAM,SAAS,EAC9C,GAAa,OAAO,CAAG,EAAW,GAAa,EAAM,KAAK,CAAG,EAAM,KAAK,CAC5E,EAwYQ,UA5IR,SAAS,AAAU,CAAK,MAyChB,EAEA,EA1CJ,GAAI,CAAC,GAAc,CAAC,GAAU,OAAO,CAAE,OACvC,GAAU,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GACnC,GAAgB,OAAO,EAAG,EAC1B,GAAc,GACd,GAAY,OAAO,CAAG,IAAI,KAC1B,IAAM,EAAc,EAAa,GAAU,OAAO,CAAE,GACpD,GAAI,CAAC,GAAS,CAAC,GAAW,EAAM,MAAM,EAAE,IAAU,CAAC,GAAe,OAAO,KAAK,CAAC,IACjD,MAAM,CAAhC,GAAc,OAAO,CADoE,OAE7F,IAAM,EAAY,GAAY,OAAO,CAAC,OAAO,GAAK,GAAc,OAAO,CAAC,OAAO,GACzE,EAAY,GAAa,OAAO,EAAI,CAAD,CAAY,GAAa,EAAM,KAAK,CAAG,EAAM,KAAA,AAAK,EACrF,EAAW,KAAK,GAAG,CAAC,GAAa,EAQvC,GAPI,EAAW,MAAM,AAEjB,IAAgB,GAChB,WAAW,KACP,GAAgB,GACpB,EAAG,MAEH,EAAY,CAEZ,GAAoB,CAChB,gBAAiB,GAFqB,SAET,EAFL,GAAwC,UAAd,EAAwB,EAAI,EAAC,cAG/E,YACA,cACA,CACJ,GACiB,MAAjB,CAAwB,EAAS,EAAc,CAAlB,EAAyB,GACtD,MACJ,CAEA,GAAkB,WAAd,GAAwC,UAAd,EAAwB,EAAY,EAAI,EAAY,EAAG,CACjF,KACiB,MAAjB,CAAwB,EAAS,EAAc,CAAlB,CAAyB,IACtD,MACJ,CACA,GAAI,EA5yBe,GA4yBgB,CAC/B,KACiB,AAFN,MAEX,CAAwB,EAAS,EAAc,CAAlB,EAAyB,GACtD,MACJ,CAEA,IAAM,EAAsB,KAAK,GAAG,CAAC,AAAwG,OAAvG,EAAkD,GAAU,OAAO,CAAC,qBAAqB,GAAG,MAAA,AAAM,EAAY,EAAkD,EAAG,OAAO,WAAW,EAErN,EAAqB,KAAK,GAAG,CAAC,AAAsG,OAArG,EAAiD,GAAU,OAAO,CAAC,qBAAqB,GAAG,KAAA,AAAK,EAAY,EAAiD,EAAG,OAAO,UAAU,EAEtN,GAAI,KAAK,GAAG,CAAC,IAAgB,CAAC,AADU,SAAd,GAAsC,UAAd,EACA,EAAqB,CAAA,CAAmB,CAAI,EAAgB,CAC1G,KACiB,MAAjB,CAAwB,EAAS,EAAc,CAAlB,EAAyB,GACtD,MACJ,CACA,AAAiB,OAAO,EAAS,EAAc,CAAlB,EAAyB,GACtD,IACJ,EAwFQ,OA9UR,SAAS,AAAO,CAAK,EACjB,GAAK,CAAD,EAAW,OAAO,EAAE,AAIpB,EAAY,CACZ,IAAM,EAAoC,WAAd,GAAwC,UAAd,EAAwB,EAAI,CAAC,EAC7E,EAAkB,CAAC,GAAa,OAAO,EAAI,CAAD,CAAY,GAAa,EAAM,KAAK,CAAG,EAAM,KAAA,CAAK,CAAC,CAAI,EACjG,EAAwB,EAAkB,EAE1C,EAAgC,GAAc,CAAC,GAAe,CAAC,EAErE,GAAI,GAA0D,IAAzB,GAA4B,OAEjE,IAAM,EAAqB,KAAK,GAAG,CAAC,GAC9B,EAAU,SAAS,aAAa,CAAC,8BAGnC,EAAoB,GAFc,WAAd,GAAwC,IAEnB,IAFK,EAAsB,GAAgB,OAAO,CAAG,GAAe,OAAA,AAAO,EAGlH,EAA6B,GAA+B,EAAoB,GAKtF,GAJmC,MAAM,CAArC,IACA,EAAoB,CAAA,EAGpB,GAAiC,GAAqB,GAAG,AAGzD,CAAC,GAAgB,OAAO,EAAI,CAAC,GAAW,EAAM,MAAM,CAAE,GAFtD,OAkBJ,GAfA,GAAU,OAAO,CADiE,AAChE,SAAS,CAAC,GAAG,CAAC,GAEhC,GAAgB,OAAO,EAAG,EAC1B,EAAI,GAAU,OAAO,CAAE,CACnB,WAAY,MAChB,GACA,EAAI,GAAW,OAAO,CAAE,CACpB,WAAY,MAChB,GACI,GACA,GAAiB,MADL,WAER,CACJ,GAGA,GAAyB,CAAC,EAAY,CAEtC,IAAM,EAAiB,KAAK,GAAG,GAAC,AAppBrC,GAAK,CAAD,IAAM,GAAG,CAAC,AAmpBmC,EAnpB/B,GAAK,CAAC,EAopBuC,CAAC,EAAG,GAAK,EACnE,EAAI,GAAU,OAAO,CAAE,CACnB,UAAW,EAAW,GAAa,CAAC,eAAe,EAAE,EAAe,MAAM,CAAC,CAAG,CAAC,YAAY,EAAE,EAAe,SAAS,CAAC,AAC1H,GACA,MACJ,CACA,IAAM,EAAe,EAAI,EAQzB,IAPI,IAAc,GAAiB,KAAyB,GAAgB,GAAG,CAC7D,MAAd,CAAqB,EAAS,EAAW,CAAf,CAAsB,GAChD,EAAI,GAAW,OAAO,CAAE,CACpB,QAAS,CAAA,EAAG,EAAA,CAAc,CAC1B,WAAY,MAChB,GAAG,IAEH,GAAW,GAAW,OAAO,EAAI,EAAuB,CAExD,IAAM,EAAa,KAAK,GAAG,CAAC,KAAa,GAAqB,EAAI,IAAA,CAAU,CAAG,GACzE,EAAoB,EAAwB,EAApB,AAD+B,EAEvD,EAAiB,KAAK,GAAG,CAAC,EAAG,GAAyB,GAApB,GACxC,EAAI,EAAS,CACT,aAAc,CAAA,EAAG,EAAkB,EAAE,CAAC,CACtC,UAAW,EAAW,GAAa,CAAC,MAAM,EAAE,EAAW,iBAAiB,EAAE,EAAe,MAAM,CAAC,CAAG,CAAC,MAAM,EAAE,EAAW,cAAc,EAAE,EAAe,SAAS,CAAC,CAChK,WAAY,MAChB,GAAG,EACP,CACA,GAAI,CAAC,EAAY,CACb,IAAM,EAAiB,EAAqB,EAC5C,EAAI,GAAU,OAAO,CAAE,CACnB,UAAW,EAAW,GAAa,CAAC,eAAe,EAAE,EAAe,MAAM,CAAC,CAAG,CAAC,YAAY,EAAE,EAAe,SAAS,CAAC,AAC1H,EACJ,CACJ,CACJ,EAkQQ,4BACA,cACA,SACA,aACA,aACA,eACA,GACA,aA7DR,SAAS,AAAa,CAAM,CAAE,CAAiB,EAC3C,GAAI,EAAoB,EAAG,OAC3B,IAAM,EAAe,CAAC,OAAO,UAAU,GAAG,CAAmB,CAAI,OAAO,UAAU,CAC5E,EAAW,EAAe,GAAqB,EAAI,CAAA,CAAY,CAC/D,EAAe,CAAC,MAAsB,EAC5C,CAFoD,CAEhD,GAAU,OAAO,CAAE,CACnB,IAF4D,MAEjD,EAAW,GAAa,CAAC,MAAM,EAAE,EAAS,iBAAiB,EAAE,EAAa,MAAM,CAAC,CAAG,CAAC,MAAM,EAAE,EAAS,cAAc,EAAE,EAAa,SAAS,CAAC,CACxJ,WAAY,MAChB,EACJ,EAqDQ,mBAlFR,SAAS,AAAmB,CAAC,EACzB,IAAM,EAAQ,EAAI,CAAC,OAAO,UAAU,GAAG,CAAmB,CAAI,OAAO,UAAU,CAAG,EAC5E,EAAmB,EAAI,CAAC,GAAsB,EAChD,GAAsB,OAAO,EAAE,AAC/B,OAAO,YAAY,CAAC,GAAsB,OAAO,EAErD,EAAI,GAAU,OAAO,CAAE,CACnB,WAAY,CAAC,UAAU,EAAE,YAAY,MAA0B,EAAiB,AAAnC,CAAC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC5F,CAD+E,EAAlB,OAClD,EAAW,GAAa,CAAC,MAAM,EAAE,EAAM,iBAAiB,EAAE,EAAiB,MAAM,CAAC,CAAG,CAAC,MAAM,EAAE,EAAM,cAAc,EAAE,EAAiB,SAAS,CAAC,AAC9J,GACI,CAAC,GAAK,GAAU,OAAO,EAAE,CACzB,GAAsB,OAAO,CAAG,WAAW,KACvC,IAAM,EAAiB,EAAa,GAAU,OAAO,CAAE,GACvD,EAAI,GAAU,OAAO,CAAE,CACnB,WAAY,OACZ,UAAW,EAAW,GAAa,CAAC,eAAe,EAAE,EAAe,MAAM,CAAC,CAAG,CAAC,YAAY,EAAE,EAAe,SAAS,CAAC,AAC1H,EACJ,EAAG,IAAA,CAEX,EAgEQ,gBArDR,SAAS,AAAgB,CAAM,CAAE,CAAC,EAC9B,IAAM,EAAM,EAAW,GAAa,OAAO,WAAW,CAAG,OAAO,UAAU,CACpE,EAAQ,EAAI,AAAC,GAx2BC,EAw2BK,CAAA,AAAmB,CAAI,EAAM,EAChD,EAAY,EAAI,CAAC,GAAsB,CACzC,GAAG,CACH,EAAI,GAAU,OAAO,CAAE,CACnB,WAAY,CAAC,UAAU,EAAE,YAAY,MAA0B,EAAiB,AAAnC,CAAC,GAAsC,CAAC,KAAV,AAAe,CAAC,CAAC,CAC5F,CAD+E,EAAlB,OAClD,EAAW,GAAa,CAAC,MAAM,EAAE,EAAM,iBAAiB,EAAE,EAAU,MAAM,CAAC,CAAG,CAAC,MAAM,EAAE,EAAM,cAAc,EAAE,EAAU,SAAS,CAAC,AAChJ,EAER,iBA4CQ,SACA,mBACA,wBACA,aACA,wBACA,4BACA,eACA,YACA,YACA,CACJ,CACJ,EAAG,GACP,CACA,IAAM,EAAwB,EAAA,MAAd,CAA4B,CAAC,SAAlB,CAA4B,CAAC,SAAS,CAAE,GAAG,EAAM,CAAE,CAAG,EAC7E,GAAM,YAAE,CAAU,YAAE,CAAU,WAAE,CAAS,YAAE,CAAU,QAAE,CAAM,OAAE,CAAK,CAAE,eAAa,CAAE,CAAG,IAClF,EAAc,EAAgB,EAAK,GACnC,EAAgB,GAAc,EAAW,MAAM,CAAG,EAExD,GAAI,CAAC,EACD,KADQ,EACD,KAEX,IAAM,EAAY,EAAA,OAAc,CAAC,WAAW,CAAC,AAAC,GAAQ,EAAU,GAAQ,CACpE,EACH,EACD,OAAO,AAAc,EAAA,OAAc,CAAC,CAAlB,YAA+B,CAAC,EAAA,OAAuB,CAAE,CACvE,UAAW,EACX,IAAK,EACL,oBAAqB,GACrB,wBAAyB,GAAU,EAAgB,OAAS,QAC5D,gCAAiC,GAAU,EAAa,OAAS,QACjE,oBAAsB,AAAD,CAAkB,QAAO,KAAK,EAAI,EAAc,OAAA,AAAO,EAAI,OAAS,QACzF,GAAG,CAAI,AACX,EACJ,GACA,EAAQ,WAAW,CAAG,iBACtB,IAAM,EAAwB,EAAA,MAAd,CAA4B,CAAC,SAAlB,CAA4B,CAAC,SAAS,sBAAE,CAAoB,OAAE,CAAK,iBAAE,CAAe,CAAE,GAAG,EAAM,CAAE,CAAG,EAC3H,GAAM,WAAE,CAAS,SAAE,CAAO,WAAE,CAAS,QAAE,CAAM,CAAE,gBAAc,kBAAE,CAAgB,sBAAE,CAAoB,OAAE,CAAK,CAAE,QAAM,WAAE,CAAS,YAAE,CAAU,WAAE,CAAS,YAAE,CAAU,eAAE,CAAa,WAAE,CAAS,CAAE,CAAG,IAE3L,CAAC,EAAmB,EAAqB,CAAG,EAAA,OAAc,CAAC,QAAQ,EAAC,GACpE,EAAc,EAAgB,EAAK,GACnC,EAAkB,EAAA,OAAc,CAAC,MAAM,CAAC,MACxC,EAA2B,EAAA,OAAc,CAAC,MAAM,CAAC,MACjD,EAAuB,EAAA,OAAc,CAAC,MAAM,EAAC,GAC7C,EAAgB,GAAc,EAAW,MAAM,CAAG,EAgCxD,SAAS,EAAkB,CAAK,EAC5B,EAAgB,OAAO,CAAG,KAC1B,EAAqB,OAAO,EAAG,EAC/B,EAAU,EACd,CACA,OApCA,AA/rBJ,AAmuBW,SAnuBF,EAmuBa,AAluBlB,GAAM,WAAE,CAAS,QAAE,CAAM,uBAAE,CAAqB,CAAE,2BAAyB,cAAE,CAAY,CAAE,CAAG,IACxF,EAAe,EAAA,OAAc,CAAC,MAAM,CAAC,MACrC,EAAyB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAC,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,eAAe,CAAE,EAAE,EAClF,SAAS,IACL,MAAO,CAAC,OAAO,UAAU,GAAG,CAAiB,CAAI,OAAO,UAAU,AACtE,CACA,EAAA,OAAc,CAAC,SAAS,CAAC,KACrB,GAAI,GAAU,EAAuB,CAC7B,EAAa,OAAO,EAAE,aAAa,EAAa,OAAO,EAC3D,IAAM,EAAU,SAAS,aAAa,CAAC,+BAAiC,SAAS,aAAa,CAAC,yBAC/F,GAAI,CAAC,EAAS,QACd,AA7SR,SAAS,AAAM,GAAG,CAAG,EASzB,EAoSkB,GAA6B,CAAC,EAAe,EAAY,SAAS,IAAI,CAAE,CAC1E,WAAY,OAChB,GAAK,EAAM,EAAY,EAAS,CAC5B,gBAAiB,EAAW,GAAa,MAAQ,OACjD,mBAAoB,2BACpB,mBAAoB,GAAG,IACvB,QADmC,QAAQ,CAAC,CAAC,CAAC,MACpB,CAAC,aAAa,EAAE,EAAiB,IAAI,CAAC,KAAK,AAAf,CAAgB,CAC1E,AAD2E,EAAb,EAE9D,IAAM,EAAuB,EAAY,EAAS,CAC9C,aAAc,GAAG,GACjB,SAAU,EADqB,EAAE,CAAC,IAElC,GAAG,EAAW,GAAa,CACvB,UAAW,CAAC,MAAM,EAAE,IAAW,0DAA0D,CAAC,AAC9F,EAAI,CACA,UAAW,CAAC,MAAM,EAAE,IAAW,0DAA0D,CAAC,AAC9F,CAAC,AACL,GACA,MAAO,KACH,IACA,EAAa,OAAO,CAAG,OAAO,UAAU,CAAC,KACjC,EACA,SAAS,IAAI,CAAC,KAAK,CAAC,EADI,QACM,CAAG,EAEjC,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAE3C,EAAG,IACP,CACJ,CACJ,EAAG,CACC,EACA,CALuB,CAMvB,EACH,CACL,IA0qBI,AAlrBmC,EAkrBnC,CAlrBsC,MAkrBxB,CAAC,SAAS,CAAC,KACjB,GACA,OAAO,KADQ,gBACa,CAAC,KACzB,GAAqB,EACzB,EAER,EAAG,EAAE,EAMgB,EAAA,OAAc,CAAC,aAAa,CAAC,EAAA,OAAuB,CAAE,CACvE,6BAA8B,EAC9B,mBAAoB,GACpB,gCAAiC,EAAoB,OAAS,QAC9D,wBAAyB,GAAU,EAAgB,OAAS,QAC5D,6BAA8B,EAAY,OAAS,QACnD,oBAAqB,CAAkB,MAAjB,EAAwB,KAAK,EAAI,EAAc,OAAA,AAAO,EAAI,OAAS,QACzF,GAAG,CAAI,CACP,IAAK,EACL,MAAO,GAAoB,EAAiB,MAAM,CAAG,EAAI,CACrD,sBAAuB,CAAA,EAAG,CAAgB,CAAC,AAAwB,QAAO,EAAuB,EAAE,CAAC,EAAE,CAAC,CACvG,GAAG,CAAK,AACZ,EAAI,EACJ,cAAe,AAAC,IACR,IACkB,MAAtB,CAA6B,CADb,AACX,IAA6B,SAAhB,EAAoB,EAAK,aAAa,CAAC,IAAI,CAAC,EAAM,GACpE,EAAgB,OAAO,CAAG,CACtB,EAAG,EAAM,KAAK,CACd,EAAG,EAAM,KAAK,AAClB,EACA,EAAQ,GACZ,EACA,gBAAiB,AAAC,IACK,MAAnB,CAA0B,EAAS,EAAgB,CAApB,EAC3B,AAAC,GACD,EAAE,MADU,QACI,EAExB,EACA,qBAAsB,AAAC,IAEnB,CADwB,MAAxB,CAA+B,EAAS,EAAqB,CAAzB,EAChC,CAAC,GAAS,EAAE,gBAAgB,EAAE,AAC9B,EAAE,cAAc,GAGhB,EAAe,OAAO,EAAE,CACxB,EAAe,OAAO,EAAG,CAAA,CAEjC,EACA,eAAgB,AAAC,IACb,GAAI,CAAC,EAAO,YACR,EAAE,cAAc,EAGxB,EACA,cAAe,AAAC,IAEZ,GADA,EAAyB,OAAO,CAAG,EAC/B,IACkB,MAAtB,CAA6B,CAAxB,IAA6B,SAAhB,EAAoB,EAAK,aAAa,CAAC,IAAI,CAAC,EAAM,GAChE,CAAC,EAAgB,OAAO,EAFZ,AAEc,OAC9B,IAAM,EAAY,EAAM,KAAK,CAAG,EAAgB,OAAO,CAAC,CAAC,CACnD,EAAY,EAAM,KAAK,CAAG,EAAgB,OAAO,CAAC,CAAC,CACnD,EAA4C,UAAtB,EAAM,WAAW,CAAe,GAAK,EAKxC,CA3FN,CAAC,EAAO,EAAW,EAAY,CAAC,IACvD,GAAI,EAAqB,CA0FuB,MA1FhB,CAAE,MAAO,GACzC,IAAM,EAAS,KAAK,GAAG,CAAC,EAAM,CAAC,EACzB,EAAS,KAAK,GAAG,CAAC,EAAM,CAAC,EACzB,EAAW,EAAS,EACpB,EAAU,CACZ,SACA,QACH,CAAC,QAAQ,CAAC,GAAa,EAAI,CAAC,EAC7B,GAAI,AAAc,YAAwB,SAAS,CAAvB,GAExB,GAAI,CAAC,CADsB,EAAM,CAAC,CAAG,GAAU,GACpB,GAAU,GAAK,GAAU,EAChD,OAAO,CACX,CAF+D,KAK/D,GAAI,CAAC,CADsB,EAAM,CAAC,CAAG,GAAU,GACpB,GAAU,GAAK,GAAU,EAChD,MAAO,CAAC,EADmD,AAKnE,OADA,EAAqB,OAAO,EAAG,EACxB,EACX,GAiEsB,CACV,EAAG,EACH,EAAG,CACP,EACmD,EAAW,GACxC,EAAO,IACpB,KAAK,GAAG,CAAC,GAAa,GAAuB,KAAK,GAAG,CAAC,GAAa,CAAA,GAAqB,CAC7F,EAAgB,OAAO,CAAG,IAAA,CAElC,EACA,YAAa,AAAC,IACU,MAApB,CAA2B,CAAtB,IAA2B,OAAhB,EAAoB,EAAK,WAAW,CAAC,IAAI,CAAC,EAAM,GAChE,EAAgB,OAAO,CAAG,KAC1B,EAAqB,OAAO,EAAG,EAC/B,EAAU,EACd,EACA,aAAc,AAAC,IACU,MAArB,CAA4B,CAAvB,IAA4B,QAAhB,EAAoB,EAAK,YAAY,CAAC,IAAI,CAAC,EAAM,GAClE,EAAkB,EAAyB,OAAO,CACtD,EACA,cAAe,AAAC,IACU,MAAtB,CAA6B,CAAxB,IAA6B,SAAhB,EAAoB,EAAK,aAAa,CAAC,IAAI,CAAC,EAAM,GAChE,EAAyB,OAAO,EAAE,AAClC,EAAkB,EAAyB,OAAO,CAE1D,CACJ,EACJ,EACA,GAAQ,WAAW,CAAG,iBAGtB,IAAM,EAAuB,EAAA,KAAd,EAA4B,CAAC,QAAlB,EAA4B,CAAC,SAAS,cAAE,GAAe,CAAK,UAAE,CAAQ,CAAE,GAAG,EAAM,CAAE,CAAG,EAC5G,GAAM,aAAE,CAAW,YAAE,CAAU,YAAE,CAAU,iBAAE,CAAe,oBAAE,CAAkB,aAAE,CAAW,YAAE,CAAU,QAAE,CAAM,SAAE,CAAO,QAAE,CAAM,CAAE,CAAG,IACjI,EAAoB,EAAA,OAAc,CAAC,MAAM,CAAC,MAC1C,EAA6B,EAAA,OAAc,CAAC,MAAM,EAAC,GAyCzD,SAAS,IACD,EAAkB,OAAO,EAAE,AAC3B,OAAO,YAAY,CAAC,EAAkB,OAAO,EAEjD,EAA2B,OAAO,EAAG,CACzC,CACA,OAAqB,AAAd,EAAc,OAAc,CAAC,CAAlB,YAA+B,CAAC,MAAO,CACrD,QA/CJ,CA+Ca,QA/CJ,EAEL,AAAI,EAA2B,OAAO,CAClC,CADoC,GAIxC,OAAO,UAAU,CAAC,MACd,AAGR,SAAS,EAEL,GAAI,GAAc,GAAgB,EAA2B,OAAO,CAAE,OAClE,IAKJ,GADA,IACI,CAAC,GAAoC,IAAtB,EAAW,MAAM,CAAQ,CACpC,AAAC,GACD,IAEJ,MAHkB,AAItB,CAEA,GAAI,AADoB,IAAoB,CAAU,CAAC,EAAW,MAAM,CAAG,EAAE,EACtD,EAAa,OAChC,IAGJ,IAAM,EAAmB,EAAW,SAAS,CAAC,AAAC,GAAQ,IAAU,EACjE,CAAyB,CAAC,GAAG,CAAzB,GAEJ,EADsB,CAAU,CAAC,AADI,EACe,EAAE,CAE1D,GAzBI,EAbmB,CAahB,GACP,CAuBuB,CAgBnB,gBAAiB,EACjB,QAnB+E,MAmBhE,AAAC,IACR,GAAY,EAAQ,GAf5B,EAAkB,OAAO,CAAG,OAAO,UAAU,CAAC,KAE1C,EAA2B,OAAO,EAAG,CACzC,EA5C0B,CA4CvB,GAcH,EACA,cAAe,AAAC,IACR,GAAY,EAAO,EAC3B,EAEA,IAAK,EACL,2BAA4B,EAAS,OAAS,QAC9C,mBAAoB,GACpB,cAAe,OACf,GAAG,CAAI,AACX,EAAiB,CAAd,CAAc,OAAc,CAAC,EAAlB,WAA+B,CAAC,OAAQ,CAClD,2BAA4B,GAC5B,cAAe,MACnB,EAAG,GACP,EACA,GAAO,WAAW,CAAG,gBAkCrB,IAAM,EAAS,CACX,OACA,WAnCJ,SAAS,AAAW,QAAE,CAAM,cAAE,CAAY,CAAE,KAAM,CAAY,CAAE,GAAG,EAAM,EACrE,GAAM,CAAE,cAAY,CAAE,oBAAkB,iBAAE,CAAe,CAAE,CAAG,IAC9D,GAAI,CAAC,EACD,MAAM,AAAI,MADK,AACC,sDAEpB,OAAO,AAAc,EAAA,OAAc,CAAC,CAAlB,YAA+B,CAAC,EAAM,CACpD,QAAQ,EACR,KAAM,EACN,QAAS,KACL,GAAmB,EACvB,EACA,OAAQ,CAAC,EAAG,KACR,EAAa,EAAG,GACN,MAAV,CAAiB,EAAS,EAAO,CAAX,CAAc,EACxC,EACA,aAAc,AAAC,IACP,GACA,AADG,EACgB,GAEP,MAAhB,CAAuB,EAAS,EAAa,CAAjB,CAChC,EACA,UAAW,EACX,GAAG,CAAI,AACX,EACJ,UAYI,EACA,UACA,QAAS,EAAA,OAAuB,CAChC,OAdJ,SAAS,AAAO,CAAK,EACjB,IAAM,EAAU,IACV,CAAE,YAAY,EAAQ,SAAS,CAAE,GAAG,EAAa,CAAG,EAC1D,OAAO,AAAc,EAAA,OAAc,CAAC,CAAlB,YAA+B,CAAC,EAAA,MAAsB,CAAE,CACtE,UAAW,EACX,GAAG,CAAW,AAClB,EACJ,SAQI,EACA,MAAO,EAAA,KAAqB,CAC5B,MAAO,EAAA,KAAqB,CAC5B,YAAa,EAAA,WAA2B,AAC5C,ED9mDA,IAAA,EAAA,EAAA,CAAA,CAAA,OAEA,SAAS,EAAO,CAAE,GAAG,EAA0D,EAC7E,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAgB,IAAI,CAAA,CAAC,YAAU,SAAU,GAAG,CAAK,EAC3D,CAMA,SAAS,EAAa,CAAE,GAAG,EAA4D,EACrF,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAgB,MAAM,CAAA,CAAC,YAAU,gBAAiB,GAAG,CAAK,EACpE,CAMA,SAAS,EAAc,WACrB,CAAS,CACT,GAAG,EACkD,EACrD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAgB,OAAO,CAAA,CACtB,YAAU,iBACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,iCAAkC,GAC/C,GAAG,CAAK,EAGf,CAEA,SAAS,EAAc,WACrB,CAAS,UACT,CAAQ,WACR,EAAY,QAAQ,iBACpB,GAAkB,CAAI,CACtB,GAAG,EAIJ,EACC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UACC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAgB,OAAO,CAAA,CACtB,YAAU,iBACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,mDACc,WAAd,GAA0B,iDACZ,QAAd,GAAuB,8CACT,UAAd,GAAyB,0CACX,SAAd,GAAwB,yCACxB,GAEF,MACE,CACE,sBACgB,AAAd,YACI,mBACc,SACZ,AADF,GAEgB,QAAd,EACE,oBACA,mBAEV,WAAY,OACZ,GAAK,EAAM,KAAK,EAA4B,CAAC,CAAC,AAChD,EAED,GAAG,CAAK,WAER,EACA,EACC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAgB,KAAK,CAAA,CAAC,UAAU,wNAC/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,WACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mBAAU,aAE1B,SAIZ,CAEA,SAAS,EAAa,CAAE,WAAS,CAAE,GAAG,EAAoC,EACxE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,4BAA6B,GAC1C,GAAG,CAAK,EAGf,CAEA,SAAS,EAAa,WAAE,CAAS,CAAE,GAAG,EAAoC,EACxE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,YAAU,gBACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,kCAAmC,GAChD,GAAG,CAAK,EAGf,CAEA,SAAS,EAAY,WAAE,CAAS,CAAE,GAAG,EAA2D,EAC9F,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAgB,KAAK,CAAA,CACpB,YAAU,eACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiC,GAC9C,GAAG,CAAK,EAGf,CAEA,SAAS,EAAkB,WACzB,CAAS,CACT,GAAG,EACsD,EACzD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAgB,WAAW,CAAA,CAC1B,YAAU,qBACV,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,gCAAiC,GAC9C,GAAG,CAAK,EAGf,wLE/HA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCHwM,EAAA,EAAA,CAAA,CAAA,OAAsG,IAAM,EAAmC,CAAA,EAAA,EAAA,iBAAb,IAAa,AAAqB,EAAC,KAAxB,wCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,iBCAnI,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,oBCA7I,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,kBCA9H,EAAmC,CAAA,EAAA,EAAA,kBAAb,GAAa,AAAqB,EAAC,MAAxB,uCAAqE,EAAA,UAAU,CAAC,KAAK,EAAE,EAAA,gBAAgB,CAAC,uBJ2Bpc,EAAM,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,qBAKlB,SAAS,EAAgB,CAA+B,EAC7D,GAAM,CAAC,EAAe,EAAiB,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,GAAS,GAC7C,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAC,IACzC,CAAC,EAAa,EAAe,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MACxD,CAAC,EAAQ,EAAU,CAAG,CAAA,EAAA,EAAA,QAAQ,AAAR,EAAiC,MACvD,CAAC,EAAK,EAAO,CAAG,CAAA,EAAA,EAAA,QAAA,AAAQ,EAAgB,MAExC,EAAgB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAuC,MAC7D,EAAkB,CAAA,EAAA,EAAA,MAAA,AAAM,EAAwC,MAChE,EAAa,CAAA,EAAA,EAAA,MAAA,AAAM,EAAC,IACpB,EAAY,CAAA,EAAA,EAAA,MAAA,AAAM,EAAC,GAGzB,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,EAAU,OAAO,CAAG,CACtB,EAAG,CAAC,EAAO,EAGX,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,EAAW,OAAO,EAAG,EACd,KACL,EAAW,OAAO,EAAG,CACvB,GACC,EAAE,EAGL,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,IACD,KACD,EAAc,OAAO,EAAE,aAAa,EAAc,OAAO,EACzD,EAAgB,OAAO,EAAE,cAAc,EAAgB,OAAO,CACpE,EACC,EAAE,EAEL,IAAM,EAAc,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,KAC1B,EAAgB,OAAO,EAAE,CAC3B,EAAI,KAAK,CAAC,oBACV,cAAc,EAAgB,OAAO,EACrC,EAAgB,OAAO,CAAG,KAE9B,EAAG,EAAE,EAEC,EAAe,CAAA,EAAA,EAAA,WAAA,AAAW,EAC9B,AAAC,IACC,IACA,EAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,SAAS,QAAQ,AAAmB,EAAjB,AAEtD,EAAgB,OAAO,CAAG,IAF0C,EAAE,MAEhC,UACpC,GAAI,CAAC,EAAW,OAAO,CAAE,YACvB,IAIF,IAAM,EAAS,MAAM,EAAoB,GAEpC,EAAW,OAAO,EAAE,CAErB,AAAC,GAA2B,WAAW,CAA5B,EAAO,KAAK,EAQrB,EAAO,KAAK,GAAK,EAAU,OAAO,EAAE,AACtC,EAAI,IAAI,CACN,CAAC,oBAAoB,EAAE,EAAU,OAAO,CAAC,GAAG,EAAE,EAAO,KAAK,CAAC,MAAM,EAAE,EAAO,GAAG,CAAA,CAAE,EAGnF,EAAU,EAAO,KAAK,EACtB,EAAO,EAAO,GAAG,IAbjB,EAAI,IAAI,CACN,CAAC,aAAa,EAAE,EAAS,CAAC,MAAM,EAAE,EAAO,KAAK,CAAA,CAAE,CAAG,yBAAyB,gBAAgB,CAAC,EAE/F,EAAU,MACV,EAAO,MACP,KAUJ,EA1EgB,CA0Eb,GACL,EACA,CAAC,EAAY,EAGT,EAAe,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UAC/B,GAAI,CAAC,EAAO,YACV,EAAI,IAAI,CAAC,6CAGX,GAAI,EAAe,YACjB,EAAI,IAAI,CAAC,+CAIX,EAAI,IAAI,CACN,CAAC,uBAAuB,EAAE,EAAM,UAAU,CAAC,aAAa,EAAE,EAAM,QAAQ,CAAC,mBAAmB,EAAE,EAAM,cAAc,CAAC,CAAC,CAAC,EAGnH,EAAc,OAAO,EAAE,aAAa,EAAc,OAAO,EAE7D,GAAiB,GACjB,EAAe,MAEf,GAAI,CACF,IAAM,EACiB,YAArB,EAAM,UAAU,CACZ,MAAM,EAAc,EAAM,QAAQ,EAClC,MAAM,EAAiB,EAAM,cAAc,EAIjD,GAFA,EAAI,IAAI,CAAC,wBAAyB,GAE9B,CAAC,EAAW,OAAO,CAAE,YACvB,EAAI,IAAI,CAAC,wDAIX,GAAK,CAAD,CAAQ,OAAO,CAMjB,EAAI,IAAI,CAAC,CAAC,iCAAiC,EAAE,EAAO,KAAK,CAAC,kBAAkB,CAAC,EAC7E,EAAU,EAAO,KAAK,EAAI,MAC1B,EAAO,MACP,EAAa,EAAM,QAAQ,MATR,CACnB,IAAM,EAAe,EAAO,KAAK,EAAI,+BACrC,EAAI,KAAK,CAAC,CAAC,eAAe,EAAE,EAAA,CAAc,EAC1C,EAAe,GACf,EAAc,OAAO,CAAG,WAAW,IAAM,EAAe,OAAO,GACjE,CAMF,CAAE,KANO,CAMA,EAAc,CACrB,GAAI,CAAC,EAAW,OAAO,CAAE,OACzB,IAAM,EAAe,aAAe,MAAQ,EAAI,OAAO,CAAG,+BAC1D,EAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,EAAA,CAAc,CAAE,GACrD,EAAe,GACf,EAAc,OAAO,CAAG,WAAW,IAAM,EAAe,MAhIpC,CAgI2C,GACjE,QAAU,CACJ,EAAW,OAAO,EAAE,AACtB,EAAiB,GAErB,CACF,EAAG,CAAC,EAAO,EAAe,EAAa,EAEjC,EAAa,CAAA,EAAA,EAAA,WAAA,AAAW,EAAC,UAC7B,GAAK,AAAD,IAAU,GAEd,EAAI,IAAI,CAAC,CAAC,EAFiB,iBAEE,EAAE,EAAM,QAAQ,CAAC,CAAC,CAAC,EAChD,GAAe,GAEf,GAAI,CACF,IAAM,EAAS,MAAM,EAAe,EAAM,QAAQ,EAGlD,GAFA,EAAI,IAAI,CAAC,eAAgB,GAErB,CAAC,EAAW,OAAO,CAAE,OAErB,EAAO,OAAO,EAAE,CAClB,IACA,EAAU,MACV,EAAO,MAEX,CAAE,MAAO,EAAK,CACZ,EAAI,IAAI,CAAC,6BAA8B,EACzC,QAAU,CACJ,EAAW,OAAO,EAAE,AACtB,GAAe,EAEnB,EACF,EAAG,CAAC,EAAO,EAAa,EAAY,EAEpC,MAAO,CACL,OAAQ,EACR,KAAM,gBACN,cACA,cACA,SACA,MACA,CACF,CACF,+EKtMA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MASA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEA,IAAM,EAAiB,CAAA,EAAA,EAAA,GAAA,AAAG,EAAC,GAAI,CAC7B,SAAU,CACR,KAAM,CACJ,GAAI,OACJ,GAAI,MACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,GAiBO,SAAS,EAAW,MACzB,CAAI,SACJ,CAAO,OACP,EAAQ,EAAK,uBACb,GAAwB,CAAK,OAC7B,EAAQ,QAAQ,MAChB,CAAI,QACJ,CAAM,UACN,CAAQ,QACR,CAAM,WACN,CAAS,CACT,cAAe,CAAM,cACrB,CAAY,CACI,EAChB,IAAM,EAAa,CAAA,EAAA,EAAA,MAAA,AAAM,EAAiB,MA2B1C,MAvBA,CAAA,EAAA,EAAA,SAAA,AAAS,EAAC,KACR,GAAI,CAAC,GAAQ,EAAO,OAEpB,IAAM,EAAc,AAAC,IACnB,IAAM,EAAS,EAAE,MAAM,AAIvB,AAAI,EAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,IACxB,EAAW,GADsB,IACf,EAAE,SAAS,IAM7B,EAAO,GAN+B,IAMxB,CAHK,AAGJ,EAFf,eAEgC,+FADhC,wIAEJ,GACF,EAGA,OADA,SAAS,gBAAgB,CAAC,QAAS,GAC5B,IAAM,SAAS,mBAAmB,CAAC,QAAS,EACrD,EAAG,CAAC,EAAM,EAAO,EAAS,EAAsB,EAG9C,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,MAAM,CAAA,CACL,UAAU,QACV,MAAO,EACP,UAAU,CAAA,CAAA,EACV,KAAM,EACN,aAAc,AAAC,IACT,AAAC,GAAQ,GACf,YAEC,EAAQ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,aAAa,CAAA,CAAA,GAAM,KAC7B,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,aAAa,CAAA,CACZ,IAAK,EACL,UAAU,QACV,iBAAiB,EACjB,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,EAAe,CAAE,MAAK,GAAI,GACxC,cAAa,EACb,kBAAmB,OAAQ,EAAY,AAAC,GAAM,EAAE,cAAc,aAG9D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,CAAC,OAAO,CAAA,CAAA,WAClB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mBAAW,MAE7B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,iBAAiB,CAAA,CAAC,OAAO,CAAA,CAAA,WACxB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mBAAW,MAI7B,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,KAAK,SACL,aAAW,QACX,QAAS,EACT,UAAU,iLACV,cAAa,EAAS,CAAA,EAAG,EAAO,aAAa,CAAC,MAAG,YAEjD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,UAAU,WACjB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,mBAAU,aAI3B,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,oBAAY,IAAyB,KAGtE,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,CAAA,GAAM,KAGzB,EAAA,YAAY,CAAC,SAAS,EAAI,EAAe,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAU,aAAc,IAAmB,KAItF,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,wDAAgD,IAG9D,EAAS,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CAAC,UAAU,oBAAY,IAAyB,UAI/E,CAEA,SAAS,EAAU,cAAE,CAAY,CAAuC,EACtE,IAAM,EAAe,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,GAC/B,EAA6C,YAAxB,EAAa,MAAM,EAA0C,AAAxB,YAAa,MAAM,CAEnF,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,yBAAyB,UAAU,8CAClD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,eAAe,CAAA,UACd,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,OAAO,CAAA,WACN,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,CAAC,OAAO,CAAA,CAAA,WACrB,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,UACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,YAAY,CAAA,CACX,MAAO,EAAqB,kBAAoB,mBAChD,QAAS,EAAqB,EAAa,IAAI,CAAG,EAAa,MAAM,CACrE,QAAS,EAAa,aAAa,EAAI,EAAa,WAAW,CAC/D,MAAO,CAAC,CAAC,EAAa,WAAW,CACjC,KAAM,EAAqB,EAAA,MAAM,CAAG,EAAA,IAAI,CACxC,QAAQ,CAAA,CAAA,EACR,QAAQ,UACR,KAAK,gBAIX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,cAAc,CAAA,UACZ,EAAqB,kBAAoB,0BAI/C,EACC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,qBAAqB,CAAA,CACpB,OAAQ,EAAa,MAAM,CAC3B,IAAK,EAAa,GAAG,CACrB,SAAU,EAAa,QAAQ,GAE/B,OAGV","ignoreList":[0,1,2,10]}