@getpaseo/server 0.1.37 → 0.1.38

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 (295) hide show
  1. package/dist/scripts/dev-runner.js +1 -1
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/scripts/{daemon-runner.js → supervisor-entrypoint.js} +7 -9
  4. package/dist/scripts/supervisor-entrypoint.js.map +1 -0
  5. package/dist/scripts/supervisor.js +17 -1
  6. package/dist/scripts/supervisor.js.map +1 -1
  7. package/dist/server/server/bootstrap.d.ts +0 -4
  8. package/dist/server/server/bootstrap.d.ts.map +1 -1
  9. package/dist/server/server/bootstrap.js +8 -22
  10. package/dist/server/server/bootstrap.js.map +1 -1
  11. package/dist/server/server/index.js +0 -4
  12. package/dist/server/server/index.js.map +1 -1
  13. package/dist/server/server/pid-lock.d.ts +7 -2
  14. package/dist/server/server/pid-lock.d.ts.map +1 -1
  15. package/dist/server/server/pid-lock.js +21 -0
  16. package/dist/server/server/pid-lock.js.map +1 -1
  17. package/dist/server/server/session.d.ts.map +1 -1
  18. package/dist/server/server/session.js +2 -2
  19. package/dist/server/server/session.js.map +1 -1
  20. package/dist/src/server/pid-lock.js +21 -0
  21. package/dist/src/server/pid-lock.js.map +1 -1
  22. package/package.json +3 -3
  23. package/dist/scripts/daemon-runner.js.map +0 -1
  24. package/dist/src/server/agent/activity-curator.js +0 -243
  25. package/dist/src/server/agent/activity-curator.js.map +0 -1
  26. package/dist/src/server/agent/agent-manager.js +0 -1855
  27. package/dist/src/server/agent/agent-manager.js.map +0 -1
  28. package/dist/src/server/agent/agent-metadata-generator.js +0 -161
  29. package/dist/src/server/agent/agent-metadata-generator.js.map +0 -1
  30. package/dist/src/server/agent/agent-projections.js +0 -254
  31. package/dist/src/server/agent/agent-projections.js.map +0 -1
  32. package/dist/src/server/agent/agent-response-loop.js +0 -304
  33. package/dist/src/server/agent/agent-response-loop.js.map +0 -1
  34. package/dist/src/server/agent/agent-sdk-types.js +0 -12
  35. package/dist/src/server/agent/agent-sdk-types.js.map +0 -1
  36. package/dist/src/server/agent/agent-storage.js +0 -302
  37. package/dist/src/server/agent/agent-storage.js.map +0 -1
  38. package/dist/src/server/agent/agent-title-limits.js +0 -3
  39. package/dist/src/server/agent/agent-title-limits.js.map +0 -1
  40. package/dist/src/server/agent/audio-utils.js +0 -19
  41. package/dist/src/server/agent/audio-utils.js.map +0 -1
  42. package/dist/src/server/agent/dictation-debug.js +0 -50
  43. package/dist/src/server/agent/dictation-debug.js.map +0 -1
  44. package/dist/src/server/agent/mcp-server.js +0 -754
  45. package/dist/src/server/agent/mcp-server.js.map +0 -1
  46. package/dist/src/server/agent/orchestrator-instructions.js +0 -51
  47. package/dist/src/server/agent/orchestrator-instructions.js.map +0 -1
  48. package/dist/src/server/agent/pcm16-resampler.js +0 -63
  49. package/dist/src/server/agent/pcm16-resampler.js.map +0 -1
  50. package/dist/src/server/agent/provider-launch-config.js +0 -213
  51. package/dist/src/server/agent/provider-launch-config.js.map +0 -1
  52. package/dist/src/server/agent/provider-manifest.js +0 -127
  53. package/dist/src/server/agent/provider-manifest.js.map +0 -1
  54. package/dist/src/server/agent/provider-registry.js +0 -45
  55. package/dist/src/server/agent/provider-registry.js.map +0 -1
  56. package/dist/src/server/agent/providers/claude/partial-json.js +0 -306
  57. package/dist/src/server/agent/providers/claude/partial-json.js.map +0 -1
  58. package/dist/src/server/agent/providers/claude/sdk-model-resolver.js +0 -104
  59. package/dist/src/server/agent/providers/claude/sdk-model-resolver.js.map +0 -1
  60. package/dist/src/server/agent/providers/claude/sidechain-tracker.js +0 -230
  61. package/dist/src/server/agent/providers/claude/sidechain-tracker.js.map +0 -1
  62. package/dist/src/server/agent/providers/claude/task-notification-tool-call.js +0 -267
  63. package/dist/src/server/agent/providers/claude/task-notification-tool-call.js.map +0 -1
  64. package/dist/src/server/agent/providers/claude/tool-call-detail-parser.js +0 -121
  65. package/dist/src/server/agent/providers/claude/tool-call-detail-parser.js.map +0 -1
  66. package/dist/src/server/agent/providers/claude/tool-call-mapper.js +0 -252
  67. package/dist/src/server/agent/providers/claude/tool-call-mapper.js.map +0 -1
  68. package/dist/src/server/agent/providers/claude-agent.js +0 -3166
  69. package/dist/src/server/agent/providers/claude-agent.js.map +0 -1
  70. package/dist/src/server/agent/providers/codex/tool-call-detail-parser.js +0 -104
  71. package/dist/src/server/agent/providers/codex/tool-call-detail-parser.js.map +0 -1
  72. package/dist/src/server/agent/providers/codex/tool-call-mapper.js +0 -758
  73. package/dist/src/server/agent/providers/codex/tool-call-mapper.js.map +0 -1
  74. package/dist/src/server/agent/providers/codex-app-server-agent.js +0 -2949
  75. package/dist/src/server/agent/providers/codex-app-server-agent.js.map +0 -1
  76. package/dist/src/server/agent/providers/codex-rollout-timeline.js +0 -544
  77. package/dist/src/server/agent/providers/codex-rollout-timeline.js.map +0 -1
  78. package/dist/src/server/agent/providers/opencode/tool-call-detail-parser.js +0 -39
  79. package/dist/src/server/agent/providers/opencode/tool-call-detail-parser.js.map +0 -1
  80. package/dist/src/server/agent/providers/opencode/tool-call-mapper.js +0 -144
  81. package/dist/src/server/agent/providers/opencode/tool-call-mapper.js.map +0 -1
  82. package/dist/src/server/agent/providers/opencode-agent.js +0 -1193
  83. package/dist/src/server/agent/providers/opencode-agent.js.map +0 -1
  84. package/dist/src/server/agent/providers/tool-call-detail-primitives.js +0 -686
  85. package/dist/src/server/agent/providers/tool-call-detail-primitives.js.map +0 -1
  86. package/dist/src/server/agent/providers/tool-call-mapper-utils.js +0 -115
  87. package/dist/src/server/agent/providers/tool-call-mapper-utils.js.map +0 -1
  88. package/dist/src/server/agent/recordings-debug.js +0 -19
  89. package/dist/src/server/agent/recordings-debug.js.map +0 -1
  90. package/dist/src/server/agent/stt-debug.js +0 -33
  91. package/dist/src/server/agent/stt-debug.js.map +0 -1
  92. package/dist/src/server/agent/stt-manager.js +0 -232
  93. package/dist/src/server/agent/stt-manager.js.map +0 -1
  94. package/dist/src/server/agent/timeline-append.js +0 -27
  95. package/dist/src/server/agent/timeline-append.js.map +0 -1
  96. package/dist/src/server/agent/timeline-projection.js +0 -215
  97. package/dist/src/server/agent/timeline-projection.js.map +0 -1
  98. package/dist/src/server/agent/tool-name-normalization.js +0 -45
  99. package/dist/src/server/agent/tool-name-normalization.js.map +0 -1
  100. package/dist/src/server/agent/tts-debug.js +0 -24
  101. package/dist/src/server/agent/tts-debug.js.map +0 -1
  102. package/dist/src/server/agent/tts-manager.js +0 -374
  103. package/dist/src/server/agent/tts-manager.js.map +0 -1
  104. package/dist/src/server/agent/wait-for-agent-tracker.js +0 -53
  105. package/dist/src/server/agent/wait-for-agent-tracker.js.map +0 -1
  106. package/dist/src/server/agent-attention-policy.js +0 -40
  107. package/dist/src/server/agent-attention-policy.js.map +0 -1
  108. package/dist/src/server/allowed-hosts.js +0 -94
  109. package/dist/src/server/allowed-hosts.js.map +0 -1
  110. package/dist/src/server/bootstrap.js +0 -620
  111. package/dist/src/server/bootstrap.js.map +0 -1
  112. package/dist/src/server/chat/chat-mentions.js +0 -71
  113. package/dist/src/server/chat/chat-mentions.js.map +0 -1
  114. package/dist/src/server/chat/chat-rpc-schemas.js +0 -103
  115. package/dist/src/server/chat/chat-rpc-schemas.js.map +0 -1
  116. package/dist/src/server/chat/chat-service.js +0 -330
  117. package/dist/src/server/chat/chat-service.js.map +0 -1
  118. package/dist/src/server/chat/chat-types.js +0 -22
  119. package/dist/src/server/chat/chat-types.js.map +0 -1
  120. package/dist/src/server/checkout-diff-manager.js +0 -272
  121. package/dist/src/server/checkout-diff-manager.js.map +0 -1
  122. package/dist/src/server/checkout-git-utils.js +0 -37
  123. package/dist/src/server/checkout-git-utils.js.map +0 -1
  124. package/dist/src/server/client-message-id.js +0 -12
  125. package/dist/src/server/client-message-id.js.map +0 -1
  126. package/dist/src/server/config.js +0 -73
  127. package/dist/src/server/config.js.map +0 -1
  128. package/dist/src/server/connection-offer.js +0 -59
  129. package/dist/src/server/connection-offer.js.map +0 -1
  130. package/dist/src/server/daemon-keypair.js +0 -40
  131. package/dist/src/server/daemon-keypair.js.map +0 -1
  132. package/dist/src/server/daemon-version.js +0 -22
  133. package/dist/src/server/daemon-version.js.map +0 -1
  134. package/dist/src/server/dictation/dictation-stream-manager.js +0 -571
  135. package/dist/src/server/dictation/dictation-stream-manager.js.map +0 -1
  136. package/dist/src/server/file-download/token-store.js +0 -40
  137. package/dist/src/server/file-download/token-store.js.map +0 -1
  138. package/dist/src/server/file-explorer/service.js +0 -180
  139. package/dist/src/server/file-explorer/service.js.map +0 -1
  140. package/dist/src/server/json-utils.js +0 -45
  141. package/dist/src/server/json-utils.js.map +0 -1
  142. package/dist/src/server/loop/rpc-schemas.js +0 -159
  143. package/dist/src/server/loop/rpc-schemas.js.map +0 -1
  144. package/dist/src/server/loop-service.js +0 -741
  145. package/dist/src/server/loop-service.js.map +0 -1
  146. package/dist/src/server/messages.js +0 -29
  147. package/dist/src/server/messages.js.map +0 -1
  148. package/dist/src/server/package-version.js +0 -46
  149. package/dist/src/server/package-version.js.map +0 -1
  150. package/dist/src/server/pairing-offer.js +0 -45
  151. package/dist/src/server/pairing-offer.js.map +0 -1
  152. package/dist/src/server/pairing-qr.js +0 -45
  153. package/dist/src/server/pairing-qr.js.map +0 -1
  154. package/dist/src/server/path-utils.js +0 -20
  155. package/dist/src/server/path-utils.js.map +0 -1
  156. package/dist/src/server/persisted-config.js +0 -265
  157. package/dist/src/server/persisted-config.js.map +0 -1
  158. package/dist/src/server/persistence-hooks.js +0 -60
  159. package/dist/src/server/persistence-hooks.js.map +0 -1
  160. package/dist/src/server/push/push-service.js +0 -68
  161. package/dist/src/server/push/push-service.js.map +0 -1
  162. package/dist/src/server/push/token-store.js +0 -70
  163. package/dist/src/server/push/token-store.js.map +0 -1
  164. package/dist/src/server/relay-transport.js +0 -461
  165. package/dist/src/server/relay-transport.js.map +0 -1
  166. package/dist/src/server/schedule/cron.js +0 -103
  167. package/dist/src/server/schedule/cron.js.map +0 -1
  168. package/dist/src/server/schedule/rpc-schemas.js +0 -112
  169. package/dist/src/server/schedule/rpc-schemas.js.map +0 -1
  170. package/dist/src/server/schedule/service.js +0 -397
  171. package/dist/src/server/schedule/service.js.map +0 -1
  172. package/dist/src/server/schedule/store.js +0 -56
  173. package/dist/src/server/schedule/store.js.map +0 -1
  174. package/dist/src/server/schedule/types.js +0 -73
  175. package/dist/src/server/schedule/types.js.map +0 -1
  176. package/dist/src/server/server-id.js +0 -63
  177. package/dist/src/server/server-id.js.map +0 -1
  178. package/dist/src/server/session.js +0 -6381
  179. package/dist/src/server/session.js.map +0 -1
  180. package/dist/src/server/speech/audio.js +0 -101
  181. package/dist/src/server/speech/audio.js.map +0 -1
  182. package/dist/src/server/speech/provider-resolver.js +0 -7
  183. package/dist/src/server/speech/provider-resolver.js.map +0 -1
  184. package/dist/src/server/speech/providers/local/config.js +0 -74
  185. package/dist/src/server/speech/providers/local/config.js.map +0 -1
  186. package/dist/src/server/speech/providers/local/models.js +0 -17
  187. package/dist/src/server/speech/providers/local/models.js.map +0 -1
  188. package/dist/src/server/speech/providers/local/pocket/pocket-tts-onnx.js +0 -436
  189. package/dist/src/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +0 -1
  190. package/dist/src/server/speech/providers/local/runtime.js +0 -238
  191. package/dist/src/server/speech/providers/local/runtime.js.map +0 -1
  192. package/dist/src/server/speech/providers/local/sherpa/model-catalog.js +0 -166
  193. package/dist/src/server/speech/providers/local/sherpa/model-catalog.js.map +0 -1
  194. package/dist/src/server/speech/providers/local/sherpa/model-downloader.js +0 -165
  195. package/dist/src/server/speech/providers/local/sherpa/model-downloader.js.map +0 -1
  196. package/dist/src/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +0 -73
  197. package/dist/src/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +0 -1
  198. package/dist/src/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +0 -84
  199. package/dist/src/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +0 -1
  200. package/dist/src/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +0 -11
  201. package/dist/src/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +0 -1
  202. package/dist/src/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +0 -102
  203. package/dist/src/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +0 -1
  204. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +0 -135
  205. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +0 -1
  206. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +0 -130
  207. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +0 -1
  208. package/dist/src/server/speech/providers/local/sherpa/sherpa-realtime-session.js +0 -110
  209. package/dist/src/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +0 -1
  210. package/dist/src/server/speech/providers/local/sherpa/sherpa-stt.js +0 -138
  211. package/dist/src/server/speech/providers/local/sherpa/sherpa-stt.js.map +0 -1
  212. package/dist/src/server/speech/providers/local/sherpa/sherpa-tts.js +0 -98
  213. package/dist/src/server/speech/providers/local/sherpa/sherpa-tts.js.map +0 -1
  214. package/dist/src/server/speech/providers/local/sherpa/silero-vad-provider.js +0 -23
  215. package/dist/src/server/speech/providers/local/sherpa/silero-vad-provider.js.map +0 -1
  216. package/dist/src/server/speech/providers/local/sherpa/silero-vad-session.js +0 -107
  217. package/dist/src/server/speech/providers/local/sherpa/silero-vad-session.js.map +0 -1
  218. package/dist/src/server/speech/providers/openai/config.js +0 -80
  219. package/dist/src/server/speech/providers/openai/config.js.map +0 -1
  220. package/dist/src/server/speech/providers/openai/realtime-transcription-session.js +0 -168
  221. package/dist/src/server/speech/providers/openai/realtime-transcription-session.js.map +0 -1
  222. package/dist/src/server/speech/providers/openai/runtime.js +0 -112
  223. package/dist/src/server/speech/providers/openai/runtime.js.map +0 -1
  224. package/dist/src/server/speech/providers/openai/stt.js +0 -206
  225. package/dist/src/server/speech/providers/openai/stt.js.map +0 -1
  226. package/dist/src/server/speech/providers/openai/tts.js +0 -46
  227. package/dist/src/server/speech/providers/openai/tts.js.map +0 -1
  228. package/dist/src/server/speech/speech-config-resolver.js +0 -102
  229. package/dist/src/server/speech/speech-config-resolver.js.map +0 -1
  230. package/dist/src/server/speech/speech-provider.js +0 -2
  231. package/dist/src/server/speech/speech-provider.js.map +0 -1
  232. package/dist/src/server/speech/speech-runtime.js +0 -530
  233. package/dist/src/server/speech/speech-runtime.js.map +0 -1
  234. package/dist/src/server/speech/speech-types.js +0 -8
  235. package/dist/src/server/speech/speech-types.js.map +0 -1
  236. package/dist/src/server/speech/turn-detection-provider.js +0 -2
  237. package/dist/src/server/speech/turn-detection-provider.js.map +0 -1
  238. package/dist/src/server/utils/diff-highlighter.js +0 -257
  239. package/dist/src/server/utils/diff-highlighter.js.map +0 -1
  240. package/dist/src/server/voice/fixed-duration-pcm-ring-buffer.js +0 -35
  241. package/dist/src/server/voice/fixed-duration-pcm-ring-buffer.js.map +0 -1
  242. package/dist/src/server/voice/voice-turn-controller.js +0 -159
  243. package/dist/src/server/voice/voice-turn-controller.js.map +0 -1
  244. package/dist/src/server/voice-config.js +0 -51
  245. package/dist/src/server/voice-config.js.map +0 -1
  246. package/dist/src/server/voice-mcp-bridge-command.js +0 -31
  247. package/dist/src/server/voice-mcp-bridge-command.js.map +0 -1
  248. package/dist/src/server/voice-mcp-bridge.js +0 -109
  249. package/dist/src/server/voice-mcp-bridge.js.map +0 -1
  250. package/dist/src/server/voice-permission-policy.js +0 -13
  251. package/dist/src/server/voice-permission-policy.js.map +0 -1
  252. package/dist/src/server/voice-types.js +0 -2
  253. package/dist/src/server/voice-types.js.map +0 -1
  254. package/dist/src/server/websocket-server.js +0 -1048
  255. package/dist/src/server/websocket-server.js.map +0 -1
  256. package/dist/src/server/workspace-registry-bootstrap.js +0 -98
  257. package/dist/src/server/workspace-registry-bootstrap.js.map +0 -1
  258. package/dist/src/server/workspace-registry-model.js +0 -175
  259. package/dist/src/server/workspace-registry-model.js.map +0 -1
  260. package/dist/src/server/workspace-registry.js +0 -151
  261. package/dist/src/server/workspace-registry.js.map +0 -1
  262. package/dist/src/server/worktree-bootstrap.js +0 -508
  263. package/dist/src/server/worktree-bootstrap.js.map +0 -1
  264. package/dist/src/shared/agent-attention-notification.js +0 -130
  265. package/dist/src/shared/agent-attention-notification.js.map +0 -1
  266. package/dist/src/shared/agent-lifecycle.js +0 -8
  267. package/dist/src/shared/agent-lifecycle.js.map +0 -1
  268. package/dist/src/shared/connection-offer.js +0 -17
  269. package/dist/src/shared/connection-offer.js.map +0 -1
  270. package/dist/src/shared/daemon-endpoints.js +0 -122
  271. package/dist/src/shared/daemon-endpoints.js.map +0 -1
  272. package/dist/src/shared/messages.js +0 -2107
  273. package/dist/src/shared/messages.js.map +0 -1
  274. package/dist/src/shared/path-utils.js +0 -16
  275. package/dist/src/shared/path-utils.js.map +0 -1
  276. package/dist/src/shared/terminal-stream-protocol.js +0 -99
  277. package/dist/src/shared/terminal-stream-protocol.js.map +0 -1
  278. package/dist/src/shared/tool-call-display.js +0 -122
  279. package/dist/src/shared/tool-call-display.js.map +0 -1
  280. package/dist/src/terminal/terminal-manager.js +0 -136
  281. package/dist/src/terminal/terminal-manager.js.map +0 -1
  282. package/dist/src/terminal/terminal.js +0 -333
  283. package/dist/src/terminal/terminal.js.map +0 -1
  284. package/dist/src/utils/checkout-git.js +0 -1518
  285. package/dist/src/utils/checkout-git.js.map +0 -1
  286. package/dist/src/utils/directory-suggestions.js +0 -671
  287. package/dist/src/utils/directory-suggestions.js.map +0 -1
  288. package/dist/src/utils/path.js +0 -15
  289. package/dist/src/utils/path.js.map +0 -1
  290. package/dist/src/utils/project-icon.js +0 -389
  291. package/dist/src/utils/project-icon.js.map +0 -1
  292. package/dist/src/utils/worktree-metadata.js +0 -116
  293. package/dist/src/utils/worktree-metadata.js.map +0 -1
  294. package/dist/src/utils/worktree.js +0 -744
  295. package/dist/src/utils/worktree.js.map +0 -1
@@ -1,103 +0,0 @@
1
- function buildValueSet(values) {
2
- return new Set(values);
3
- }
4
- function createRange(start, end, step) {
5
- const values = [];
6
- for (let value = start; value <= end; value += step) {
7
- values.push(value);
8
- }
9
- return values;
10
- }
11
- function parseField(source, bounds) {
12
- const trimmed = source.trim();
13
- if (!trimmed) {
14
- throw new Error(`Invalid cron ${bounds.name} field`);
15
- }
16
- const values = new Set();
17
- for (const rawPart of trimmed.split(",")) {
18
- const part = rawPart.trim();
19
- if (!part) {
20
- throw new Error(`Invalid cron ${bounds.name} field`);
21
- }
22
- const [base, stepSource] = part.split("/");
23
- const step = stepSource === undefined ? 1 : Number.parseInt(stepSource, 10);
24
- if (!Number.isInteger(step) || step <= 0) {
25
- throw new Error(`Invalid cron ${bounds.name} step`);
26
- }
27
- if (base === "*") {
28
- for (const value of createRange(bounds.min, bounds.max, step)) {
29
- values.add(value);
30
- }
31
- continue;
32
- }
33
- const rangeMatch = base.match(/^(\d+)-(\d+)$/);
34
- if (rangeMatch) {
35
- const start = Number.parseInt(rangeMatch[1], 10);
36
- const end = Number.parseInt(rangeMatch[2], 10);
37
- if (start > end || start < bounds.min || end > bounds.max) {
38
- throw new Error(`Invalid cron ${bounds.name} range`);
39
- }
40
- for (const value of createRange(start, end, step)) {
41
- values.add(value);
42
- }
43
- continue;
44
- }
45
- const value = Number.parseInt(base, 10);
46
- if (!Number.isInteger(value) || value < bounds.min || value > bounds.max) {
47
- throw new Error(`Invalid cron ${bounds.name} value`);
48
- }
49
- values.add(value);
50
- }
51
- const allowed = buildValueSet(values);
52
- return {
53
- matches(value) {
54
- return allowed.has(value);
55
- },
56
- };
57
- }
58
- function parseCronExpression(expression) {
59
- const parts = expression.trim().split(/\s+/);
60
- if (parts.length !== 5) {
61
- throw new Error("Cron expressions must have 5 fields");
62
- }
63
- return {
64
- minute: parseField(parts[0], { min: 0, max: 59, name: "minute" }),
65
- hour: parseField(parts[1], { min: 0, max: 23, name: "hour" }),
66
- dayOfMonth: parseField(parts[2], { min: 1, max: 31, name: "day-of-month" }),
67
- month: parseField(parts[3], { min: 1, max: 12, name: "month" }),
68
- dayOfWeek: parseField(parts[4], { min: 0, max: 6, name: "day-of-week" }),
69
- };
70
- }
71
- function startOfNextMinute(date) {
72
- return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes() + 1, 0, 0));
73
- }
74
- export function validateScheduleCadence(cadence) {
75
- if (cadence.type === "cron") {
76
- parseCronExpression(cadence.expression);
77
- }
78
- }
79
- export function computeNextRunAt(cadence, after) {
80
- if (cadence.type === "every") {
81
- return new Date(after.getTime() + cadence.everyMs);
82
- }
83
- const cron = parseCronExpression(cadence.expression);
84
- const limit = 366 * 24 * 60;
85
- let cursor = startOfNextMinute(after);
86
- for (let index = 0; index < limit; index += 1) {
87
- const minute = cursor.getUTCMinutes();
88
- const hour = cursor.getUTCHours();
89
- const dayOfMonth = cursor.getUTCDate();
90
- const month = cursor.getUTCMonth() + 1;
91
- const dayOfWeek = cursor.getUTCDay();
92
- if (cron.minute.matches(minute) &&
93
- cron.hour.matches(hour) &&
94
- cron.dayOfMonth.matches(dayOfMonth) &&
95
- cron.month.matches(month) &&
96
- cron.dayOfWeek.matches(dayOfWeek)) {
97
- return cursor;
98
- }
99
- cursor = new Date(cursor.getTime() + 60000);
100
- }
101
- throw new Error(`Unable to compute next run time for cron expression: ${cadence.expression}`);
102
- }
103
- //# sourceMappingURL=cron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../../src/server/schedule/cron.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- import { z } from "zod";
2
- import { ScheduleCadenceSchema, ScheduleRunSchema, ScheduleSummarySchema, StoredScheduleSchema, ScheduleTargetSchema, } from "./types.js";
3
- const ScheduleCreateTargetSchema = z.discriminatedUnion("type", [
4
- z.object({
5
- type: z.literal("self"),
6
- agentId: z.string().uuid(),
7
- }),
8
- z.object({
9
- type: z.literal("agent"),
10
- agentId: z.string().uuid(),
11
- }),
12
- z.object({
13
- type: z.literal("new-agent"),
14
- config: ScheduleTargetSchema.options[1].shape.config,
15
- }),
16
- ]);
17
- export const ScheduleCreateRequestSchema = z.object({
18
- type: z.literal("schedule/create"),
19
- requestId: z.string(),
20
- prompt: z.string().min(1),
21
- name: z.string().optional(),
22
- cadence: ScheduleCadenceSchema,
23
- target: ScheduleCreateTargetSchema,
24
- maxRuns: z.number().int().positive().optional(),
25
- expiresAt: z.string().optional(),
26
- });
27
- export const ScheduleListRequestSchema = z.object({
28
- type: z.literal("schedule/list"),
29
- requestId: z.string(),
30
- });
31
- export const ScheduleInspectRequestSchema = z.object({
32
- type: z.literal("schedule/inspect"),
33
- requestId: z.string(),
34
- scheduleId: z.string(),
35
- });
36
- export const ScheduleLogsRequestSchema = z.object({
37
- type: z.literal("schedule/logs"),
38
- requestId: z.string(),
39
- scheduleId: z.string(),
40
- });
41
- export const SchedulePauseRequestSchema = z.object({
42
- type: z.literal("schedule/pause"),
43
- requestId: z.string(),
44
- scheduleId: z.string(),
45
- });
46
- export const ScheduleResumeRequestSchema = z.object({
47
- type: z.literal("schedule/resume"),
48
- requestId: z.string(),
49
- scheduleId: z.string(),
50
- });
51
- export const ScheduleDeleteRequestSchema = z.object({
52
- type: z.literal("schedule/delete"),
53
- requestId: z.string(),
54
- scheduleId: z.string(),
55
- });
56
- export const ScheduleCreateResponseSchema = z.object({
57
- type: z.literal("schedule/create/response"),
58
- payload: z.object({
59
- requestId: z.string(),
60
- schedule: ScheduleSummarySchema.nullable(),
61
- error: z.string().nullable(),
62
- }),
63
- });
64
- export const ScheduleListResponseSchema = z.object({
65
- type: z.literal("schedule/list/response"),
66
- payload: z.object({
67
- requestId: z.string(),
68
- schedules: z.array(ScheduleSummarySchema),
69
- error: z.string().nullable(),
70
- }),
71
- });
72
- export const ScheduleInspectResponseSchema = z.object({
73
- type: z.literal("schedule/inspect/response"),
74
- payload: z.object({
75
- requestId: z.string(),
76
- schedule: StoredScheduleSchema.nullable(),
77
- error: z.string().nullable(),
78
- }),
79
- });
80
- export const ScheduleLogsResponseSchema = z.object({
81
- type: z.literal("schedule/logs/response"),
82
- payload: z.object({
83
- requestId: z.string(),
84
- runs: z.array(ScheduleRunSchema),
85
- error: z.string().nullable(),
86
- }),
87
- });
88
- export const SchedulePauseResponseSchema = z.object({
89
- type: z.literal("schedule/pause/response"),
90
- payload: z.object({
91
- requestId: z.string(),
92
- schedule: ScheduleSummarySchema.nullable(),
93
- error: z.string().nullable(),
94
- }),
95
- });
96
- export const ScheduleResumeResponseSchema = z.object({
97
- type: z.literal("schedule/resume/response"),
98
- payload: z.object({
99
- requestId: z.string(),
100
- schedule: ScheduleSummarySchema.nullable(),
101
- error: z.string().nullable(),
102
- }),
103
- });
104
- export const ScheduleDeleteResponseSchema = z.object({
105
- type: z.literal("schedule/delete/response"),
106
- payload: z.object({
107
- requestId: z.string(),
108
- scheduleId: z.string(),
109
- error: z.string().nullable(),
110
- }),
111
- });
112
- //# sourceMappingURL=rpc-schemas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-schemas.js","sourceRoot":"","sources":["../../../../src/server/schedule/rpc-schemas.ts"],"names":[],"mappings":"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"}
@@ -1,397 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { join } from "node:path";
3
- import { curateAgentActivity } from "../agent/activity-curator.js";
4
- import { buildConfigOverrides, buildSessionConfig, extractTimestamps } from "../persistence-hooks.js";
5
- import { ScheduleStore } from "./store.js";
6
- import { computeNextRunAt, validateScheduleCadence } from "./cron.js";
7
- const SCHEDULE_TICK_INTERVAL_MS = 1000;
8
- const pendingAgentInitializations = new Map();
9
- function trimOptionalName(value) {
10
- if (typeof value !== "string") {
11
- return null;
12
- }
13
- const trimmed = value.trim();
14
- return trimmed.length > 0 ? trimmed : null;
15
- }
16
- function normalizePrompt(prompt) {
17
- const trimmed = prompt.trim();
18
- if (!trimmed) {
19
- throw new Error("Schedule prompt is required");
20
- }
21
- return trimmed;
22
- }
23
- function normalizeMaxRuns(value) {
24
- if (value == null) {
25
- return null;
26
- }
27
- if (!Number.isInteger(value) || value <= 0) {
28
- throw new Error("maxRuns must be a positive integer");
29
- }
30
- return value;
31
- }
32
- function countCompletedRuns(schedule) {
33
- return schedule.runs.filter((run) => run.status !== "running").length;
34
- }
35
- function shouldCompleteSchedule(schedule, now) {
36
- if (schedule.expiresAt && new Date(schedule.expiresAt).getTime() <= now.getTime()) {
37
- return true;
38
- }
39
- if (schedule.maxRuns == null) {
40
- return false;
41
- }
42
- return countCompletedRuns(schedule) >= schedule.maxRuns;
43
- }
44
- function completeSchedule(schedule, now) {
45
- return {
46
- ...schedule,
47
- status: "completed",
48
- nextRunAt: null,
49
- pausedAt: null,
50
- updatedAt: now.toISOString(),
51
- };
52
- }
53
- function buildRunOutput(params) {
54
- if (params.output && params.output.trim().length > 0) {
55
- return params.output;
56
- }
57
- if (params.finalText.trim().length > 0) {
58
- return params.finalText.trim();
59
- }
60
- if (params.timelineText.trim().length > 0) {
61
- return params.timelineText.trim();
62
- }
63
- return null;
64
- }
65
- function buildAgentPrompt(text) {
66
- return text;
67
- }
68
- export class ScheduleService {
69
- constructor(options) {
70
- this.runningScheduleIds = new Set();
71
- this.tickTimer = null;
72
- this.store = new ScheduleStore(join(options.paseoHome, "schedules"));
73
- this.logger = options.logger.child({ module: "schedule-service" });
74
- this.agentManager = options.agentManager;
75
- this.agentStorage = options.agentStorage;
76
- this.now = options.now ?? (() => new Date());
77
- this.runner = options.runner ?? ((schedule) => this.executeSchedule(schedule));
78
- }
79
- async start() {
80
- await this.recoverInterruptedRuns();
81
- if (this.tickTimer) {
82
- return;
83
- }
84
- const timer = setInterval(() => {
85
- void this.tick().catch((error) => {
86
- this.logger.error({ err: error }, "Failed to process schedule tick");
87
- });
88
- }, SCHEDULE_TICK_INTERVAL_MS);
89
- timer.unref?.();
90
- this.tickTimer = timer;
91
- }
92
- async stop() {
93
- if (this.tickTimer) {
94
- clearInterval(this.tickTimer);
95
- this.tickTimer = null;
96
- }
97
- }
98
- async create(input) {
99
- const now = this.now();
100
- const prompt = normalizePrompt(input.prompt);
101
- validateScheduleCadence(input.cadence);
102
- const schedule = await this.store.create({
103
- name: trimOptionalName(input.name),
104
- prompt,
105
- cadence: input.cadence,
106
- target: input.target,
107
- status: "active",
108
- createdAt: now.toISOString(),
109
- updatedAt: now.toISOString(),
110
- nextRunAt: computeNextRunAt(input.cadence, now).toISOString(),
111
- lastRunAt: null,
112
- pausedAt: null,
113
- expiresAt: input.expiresAt ?? null,
114
- maxRuns: normalizeMaxRuns(input.maxRuns),
115
- runs: [],
116
- });
117
- return schedule;
118
- }
119
- async list() {
120
- return this.store.list();
121
- }
122
- async inspect(id) {
123
- const schedule = await this.store.get(id);
124
- if (!schedule) {
125
- throw new Error(`Schedule not found: ${id}`);
126
- }
127
- return schedule;
128
- }
129
- async logs(id) {
130
- const schedule = await this.inspect(id);
131
- return [...schedule.runs].sort((left, right) => left.startedAt.localeCompare(right.startedAt));
132
- }
133
- async pause(id) {
134
- const schedule = await this.inspect(id);
135
- if (schedule.status === "completed") {
136
- throw new Error(`Schedule ${id} is already completed`);
137
- }
138
- if (schedule.status === "paused") {
139
- return schedule;
140
- }
141
- const now = this.now();
142
- const paused = {
143
- ...schedule,
144
- status: "paused",
145
- nextRunAt: null,
146
- pausedAt: now.toISOString(),
147
- updatedAt: now.toISOString(),
148
- };
149
- await this.store.put(paused);
150
- return paused;
151
- }
152
- async resume(id) {
153
- const schedule = await this.inspect(id);
154
- if (schedule.status === "completed") {
155
- throw new Error(`Schedule ${id} is already completed`);
156
- }
157
- if (schedule.status === "active") {
158
- return schedule;
159
- }
160
- const now = this.now();
161
- const resumed = {
162
- ...schedule,
163
- status: "active",
164
- pausedAt: null,
165
- nextRunAt: computeNextRunAt(schedule.cadence, now).toISOString(),
166
- updatedAt: now.toISOString(),
167
- };
168
- await this.store.put(resumed);
169
- return resumed;
170
- }
171
- async delete(id) {
172
- await this.store.delete(id);
173
- }
174
- async tick() {
175
- const now = this.now();
176
- const schedules = await this.store.list();
177
- for (const schedule of schedules) {
178
- if (schedule.status !== "active" || !schedule.nextRunAt) {
179
- continue;
180
- }
181
- if (this.runningScheduleIds.has(schedule.id)) {
182
- continue;
183
- }
184
- if (shouldCompleteSchedule(schedule, now)) {
185
- await this.store.put(completeSchedule(schedule, now));
186
- continue;
187
- }
188
- if (new Date(schedule.nextRunAt).getTime() > now.getTime()) {
189
- continue;
190
- }
191
- await this.runSchedule(schedule, now);
192
- }
193
- }
194
- async recoverInterruptedRuns() {
195
- const schedules = await this.store.list();
196
- const now = this.now();
197
- for (const schedule of schedules) {
198
- const runningIndex = schedule.runs.findIndex((run) => run.status === "running");
199
- if (runningIndex === -1) {
200
- continue;
201
- }
202
- const runs = [...schedule.runs];
203
- runs[runningIndex] = {
204
- ...runs[runningIndex],
205
- status: "failed",
206
- endedAt: now.toISOString(),
207
- error: "Daemon restarted before the scheduled run completed",
208
- };
209
- const nextSchedule = {
210
- ...schedule,
211
- runs,
212
- updatedAt: now.toISOString(),
213
- };
214
- await this.store.put(nextSchedule);
215
- }
216
- }
217
- async runSchedule(schedule, now) {
218
- this.runningScheduleIds.add(schedule.id);
219
- const runId = randomUUID();
220
- const runningRun = {
221
- id: runId,
222
- scheduledFor: schedule.nextRunAt ?? now.toISOString(),
223
- startedAt: now.toISOString(),
224
- endedAt: null,
225
- status: "running",
226
- agentId: null,
227
- output: null,
228
- error: null,
229
- };
230
- const scheduleWithRun = {
231
- ...schedule,
232
- updatedAt: now.toISOString(),
233
- runs: [...schedule.runs, runningRun],
234
- };
235
- await this.store.put(scheduleWithRun);
236
- try {
237
- const result = await this.runner(scheduleWithRun);
238
- await this.finishRun({
239
- scheduleId: schedule.id,
240
- runId,
241
- status: "succeeded",
242
- agentId: result.agentId,
243
- output: result.output,
244
- error: null,
245
- });
246
- }
247
- catch (error) {
248
- await this.finishRun({
249
- scheduleId: schedule.id,
250
- runId,
251
- status: "failed",
252
- agentId: null,
253
- output: null,
254
- error: error instanceof Error ? error.message : String(error),
255
- });
256
- }
257
- finally {
258
- this.runningScheduleIds.delete(schedule.id);
259
- }
260
- }
261
- async finishRun(params) {
262
- const schedule = await this.inspect(params.scheduleId);
263
- const now = this.now();
264
- const completedRuns = schedule.runs.map((run) => run.id === params.runId
265
- ? {
266
- ...run,
267
- status: params.status,
268
- endedAt: now.toISOString(),
269
- agentId: params.agentId,
270
- output: params.output,
271
- error: params.error,
272
- }
273
- : run);
274
- let updated = {
275
- ...schedule,
276
- runs: completedRuns,
277
- lastRunAt: now.toISOString(),
278
- updatedAt: now.toISOString(),
279
- };
280
- if (shouldCompleteSchedule(updated, now)) {
281
- updated = completeSchedule(updated, now);
282
- }
283
- else if (updated.status === "paused") {
284
- updated = {
285
- ...updated,
286
- nextRunAt: null,
287
- };
288
- }
289
- else {
290
- const after = new Date(schedule.nextRunAt ?? now.toISOString());
291
- let nextRunAt = computeNextRunAt(updated.cadence, after);
292
- while (nextRunAt.getTime() <= now.getTime()) {
293
- nextRunAt = computeNextRunAt(updated.cadence, nextRunAt);
294
- }
295
- updated = {
296
- ...updated,
297
- nextRunAt: nextRunAt.toISOString(),
298
- };
299
- }
300
- await this.store.put(updated);
301
- }
302
- async executeSchedule(schedule) {
303
- if (schedule.target.type === "agent") {
304
- const agent = await this.ensureAgentLoaded(schedule.target.agentId);
305
- if (this.agentManager.hasInFlightRun(agent.id)) {
306
- throw new Error(`Agent ${agent.id} already has an active run`);
307
- }
308
- this.agentManager.recordUserMessage(agent.id, schedule.prompt, { emitState: false });
309
- const result = await this.agentManager.runAgent(agent.id, buildAgentPrompt(schedule.prompt));
310
- const timelineText = curateAgentActivity(result.timeline);
311
- return {
312
- agentId: agent.id,
313
- output: buildRunOutput({
314
- output: null,
315
- timelineText,
316
- finalText: result.finalText,
317
- }),
318
- };
319
- }
320
- const config = {
321
- provider: schedule.target.config.provider,
322
- cwd: schedule.target.config.cwd,
323
- modeId: schedule.target.config.modeId,
324
- model: schedule.target.config.model,
325
- thinkingOptionId: schedule.target.config.thinkingOptionId,
326
- title: schedule.target.config.title,
327
- approvalPolicy: schedule.target.config.approvalPolicy,
328
- sandboxMode: schedule.target.config.sandboxMode,
329
- networkAccess: schedule.target.config.networkAccess,
330
- webSearch: schedule.target.config.webSearch,
331
- extra: schedule.target.config.extra,
332
- systemPrompt: schedule.target.config.systemPrompt,
333
- mcpServers: schedule.target.config.mcpServers,
334
- };
335
- const labels = {
336
- "paseo.schedule-id": schedule.id,
337
- "paseo.schedule-run": randomUUID(),
338
- };
339
- const agent = await this.agentManager.createAgent(config, undefined, { labels });
340
- this.agentManager.recordUserMessage(agent.id, schedule.prompt, { emitState: false });
341
- const result = await this.agentManager.runAgent(agent.id, buildAgentPrompt(schedule.prompt));
342
- const timelineText = curateAgentActivity(result.timeline);
343
- return {
344
- agentId: agent.id,
345
- output: buildRunOutput({
346
- output: null,
347
- timelineText,
348
- finalText: result.finalText,
349
- }),
350
- };
351
- }
352
- async ensureAgentLoaded(agentId) {
353
- const existing = this.agentManager.getAgent(agentId);
354
- if (existing) {
355
- return existing;
356
- }
357
- const inflight = pendingAgentInitializations.get(agentId);
358
- if (inflight) {
359
- return inflight;
360
- }
361
- const initPromise = (async () => {
362
- const record = await this.agentStorage.get(agentId);
363
- if (!record) {
364
- throw new Error(`Agent not found: ${agentId}`);
365
- }
366
- if (record.archivedAt) {
367
- throw new Error(`Agent ${agentId} is archived`);
368
- }
369
- let snapshot;
370
- if (record.persistence?.provider && record.persistence?.sessionId) {
371
- snapshot = await this.agentManager.resumeAgentFromPersistence({
372
- provider: record.persistence.provider,
373
- sessionId: record.persistence.sessionId,
374
- nativeHandle: record.persistence.nativeHandle,
375
- metadata: record.persistence.metadata,
376
- }, buildConfigOverrides(record), agentId, extractTimestamps(record));
377
- }
378
- else {
379
- snapshot = await this.agentManager.createAgent(buildSessionConfig(record), agentId, {
380
- labels: record.labels,
381
- });
382
- }
383
- await this.agentManager.hydrateTimelineFromProvider(agentId);
384
- return this.agentManager.getAgent(agentId) ?? snapshot;
385
- })();
386
- pendingAgentInitializations.set(agentId, initPromise);
387
- try {
388
- return await initPromise;
389
- }
390
- finally {
391
- if (pendingAgentInitializations.get(agentId) === initPromise) {
392
- pendingAgentInitializations.delete(agentId);
393
- }
394
- }
395
- }
396
- }
397
- //# sourceMappingURL=service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/server/schedule/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAQtE,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE7E,SAAS,gBAAgB,CAAC,KAAgC;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgC;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAwB;IAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;AACxE,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAwB,EAAE,GAAS;IACjE,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC;AAC1D,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAwB,EAAE,GAAS;IAC3D,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAIvB;IACC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,OAAO,eAAe;IAU1B,YAAY,OAA+B;QAH1B,uBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAChD,cAAS,GAA0C,IAAI,CAAC;QAG9D,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,iCAAiC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC7B,KAA2C,CAAC,KAAK,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA0B;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;YAC7D,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YAClC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;YACxC,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAU;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG;YACb,GAAG,QAAQ;YACX,MAAM,EAAE,QAAiB;YACzB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;YAC3B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;SAC7B,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG;YACd,GAAG,QAAQ;YACX,MAAM,EAAE,QAAiB;YACzB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;YAChE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;SAC7B,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACX,CAAC;YACD,IAAI,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAChF,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG;gBACnB,GAAG,IAAI,CAAC,YAAY,CAAC;gBACrB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC1B,KAAK,EAAE,qDAAqD;aAC7D,CAAC;YACF,MAAM,YAAY,GAAG;gBACnB,GAAG,QAAQ;gBACX,IAAI;gBACJ,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;aAC7B,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAwB,EAAE,GAAS;QAC3D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAgB;YAC9B,EAAE,EAAE,KAAK;YACT,YAAY,EAAE,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,EAAE;YACrD,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,MAAM,eAAe,GAAG;YACtB,GAAG,QAAQ;YACX,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;SACrC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK;gBACL,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK;gBACL,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,MAOvB;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9C,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK;YACrB,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;YACH,CAAC,CAAC,GAAG,CACR,CAAC;QACF,IAAI,OAAO,GAAmB;YAC5B,GAAG,QAAQ;YACX,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;SAC7B,CAAC;QAEF,IAAI,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAChE,IAAI,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5C,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;aACnC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAwB;QACpD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7F,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,MAAM,EAAE,cAAc,CAAC;oBACrB,MAAM,EAAE,IAAI;oBACZ,YAAY;oBACZ,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAuB;YACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;YACzC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;YAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;YACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YACnC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB;YACzD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YACnC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc;YACrD,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW;YAC/C,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa;YACnD,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;YAC3C,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YACnC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY;YACjD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAA8C;SAClF,CAAC;QACF,MAAM,MAAM,GAAG;YACb,mBAAmB,EAAE,QAAQ,CAAC,EAAE;YAChC,oBAAoB,EAAE,UAAU,EAAE;SACnC,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7F,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,MAAM,EAAE,cAAc,CAAC;gBACrB,MAAM,EAAE,IAAI;gBACZ,YAAY;gBACZ,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;SACH,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAe;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,cAAc,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,QAAsB,CAAC;YAC3B,IAAI,MAAM,CAAC,WAAW,EAAE,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;gBAClE,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAC3D;oBACE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAA0C;oBACvE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS;oBACvC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY;oBAC7C,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ;iBACtC,EACD,oBAAoB,CAAC,MAAM,CAAC,EAC5B,OAAO,EACP,iBAAiB,CAAC,MAAM,CAAC,CAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;oBAClF,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;QACzD,CAAC,CAAC,EAAE,CAAC;QAEL,2BAA2B,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,OAAO,MAAM,WAAW,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,IAAI,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC7D,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;CACF"}