@mastra/core 1.0.0-beta.5 → 1.0.0-beta.6

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 (384) hide show
  1. package/CHANGELOG.md +273 -0
  2. package/dist/agent/agent-legacy.d.ts +17 -20
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent-types.test-d.d.ts +2 -0
  5. package/dist/agent/agent-types.test-d.d.ts.map +1 -0
  6. package/dist/agent/agent.d.ts +4 -4
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.types.d.ts +1 -1
  9. package/dist/agent/agent.types.d.ts.map +1 -1
  10. package/dist/agent/index.cjs +9 -9
  11. package/dist/agent/index.js +2 -2
  12. package/dist/agent/message-list/index.cjs +3 -3
  13. package/dist/agent/message-list/index.d.ts +49 -0
  14. package/dist/agent/message-list/index.d.ts.map +1 -1
  15. package/dist/agent/message-list/index.js +1 -1
  16. package/dist/agent/save-queue/index.d.ts +3 -1
  17. package/dist/agent/save-queue/index.d.ts.map +1 -1
  18. package/dist/agent/test-utils.d.ts +37 -0
  19. package/dist/agent/test-utils.d.ts.map +1 -1
  20. package/dist/agent/trip-wire.d.ts.map +1 -1
  21. package/dist/agent/types.d.ts +18 -3
  22. package/dist/agent/types.d.ts.map +1 -1
  23. package/dist/agent/utils.d.ts.map +1 -1
  24. package/dist/agent/workflows/prepare-stream/index.d.ts +10 -10
  25. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  26. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +1 -3
  27. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  28. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +4 -4
  29. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  30. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +4 -4
  31. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  32. package/dist/agent/workflows/prepare-stream/schema.d.ts +12 -13
  33. package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -1
  34. package/dist/base.cjs +2 -2
  35. package/dist/base.js +1 -1
  36. package/dist/bundler/index.cjs +2 -2
  37. package/dist/bundler/index.js +1 -1
  38. package/dist/cache/index.cjs +3 -3
  39. package/dist/cache/index.js +1 -1
  40. package/dist/{chunk-OJNJA5ZI.js → chunk-3CKZSDTQ.js} +3 -3
  41. package/dist/{chunk-OJNJA5ZI.js.map → chunk-3CKZSDTQ.js.map} +1 -1
  42. package/dist/{chunk-TQTAMPSC.js → chunk-3N3QE4ZK.js} +3 -3
  43. package/dist/chunk-3N3QE4ZK.js.map +1 -0
  44. package/dist/{chunk-XJQX54QP.cjs → chunk-3TKNXJES.cjs} +56 -15
  45. package/dist/chunk-3TKNXJES.cjs.map +1 -0
  46. package/dist/{chunk-XBO6W7LZ.js → chunk-45NA5ZD3.js} +6114 -4146
  47. package/dist/chunk-45NA5ZD3.js.map +1 -0
  48. package/dist/{chunk-XIDKHXNR.js → chunk-4F6RAJFU.js} +33 -6
  49. package/dist/chunk-4F6RAJFU.js.map +1 -0
  50. package/dist/{chunk-ISMGVGUM.cjs → chunk-4JKEUSCC.cjs} +4 -4
  51. package/dist/{chunk-ISMGVGUM.cjs.map → chunk-4JKEUSCC.cjs.map} +1 -1
  52. package/dist/{chunk-U3VE2EVB.cjs → chunk-4KUOSXJ7.cjs} +30 -16
  53. package/dist/chunk-4KUOSXJ7.cjs.map +1 -0
  54. package/dist/{chunk-CBAB7GOD.cjs → chunk-6BJ7XHRH.cjs} +2 -2
  55. package/dist/{chunk-CBAB7GOD.cjs.map → chunk-6BJ7XHRH.cjs.map} +1 -1
  56. package/dist/{chunk-3B2OPLGG.js → chunk-6GOLI2EY.js} +13 -7
  57. package/dist/chunk-6GOLI2EY.js.map +1 -0
  58. package/dist/{chunk-VYJXTHII.cjs → chunk-6J4NRNT2.cjs} +183 -12
  59. package/dist/chunk-6J4NRNT2.cjs.map +1 -0
  60. package/dist/{chunk-J7O6WENZ.cjs → chunk-6TBWJV35.js} +5 -5
  61. package/dist/chunk-6TBWJV35.js.map +1 -0
  62. package/dist/{chunk-DSNPWVIG.cjs → chunk-AF74UXR5.cjs} +4 -3
  63. package/dist/chunk-AF74UXR5.cjs.map +1 -0
  64. package/dist/{chunk-YDFX3JR2.js → chunk-APMPOYPI.js} +173 -11
  65. package/dist/chunk-APMPOYPI.js.map +1 -0
  66. package/dist/{chunk-X7F4CSGR.cjs → chunk-AQAIS7FH.cjs} +2 -2
  67. package/dist/chunk-AQAIS7FH.cjs.map +1 -0
  68. package/dist/{chunk-KEXGB7FK.cjs → chunk-DGV2FWB4.cjs} +7 -7
  69. package/dist/{chunk-KEXGB7FK.cjs.map → chunk-DGV2FWB4.cjs.map} +1 -1
  70. package/dist/{chunk-5SA2EZ33.js → chunk-DXMSVGJ6.js} +182 -11
  71. package/dist/chunk-DXMSVGJ6.js.map +1 -0
  72. package/dist/{chunk-Y63IFHEZ.cjs → chunk-EOPEDKLG.cjs} +4 -4
  73. package/dist/chunk-EOPEDKLG.cjs.map +1 -0
  74. package/dist/{chunk-NZAXAFI3.js → chunk-F2GAJSBI.js} +3 -3
  75. package/dist/{chunk-NZAXAFI3.js.map → chunk-F2GAJSBI.js.map} +1 -1
  76. package/dist/{chunk-KIZIOFZC.js → chunk-FYP3AT6W.js} +17 -3
  77. package/dist/chunk-FYP3AT6W.js.map +1 -0
  78. package/dist/{chunk-BMAFVZ2D.cjs → chunk-IWTMMUQY.cjs} +4 -4
  79. package/dist/{chunk-BMAFVZ2D.cjs.map → chunk-IWTMMUQY.cjs.map} +1 -1
  80. package/dist/{chunk-PC6EKOWK.js → chunk-KZLP6TPJ.js} +19 -31
  81. package/dist/chunk-KZLP6TPJ.js.map +1 -0
  82. package/dist/{chunk-556MJ7CL.cjs → chunk-LDWBLENZ.cjs} +43 -37
  83. package/dist/chunk-LDWBLENZ.cjs.map +1 -0
  84. package/dist/{chunk-5O52O25J.js → chunk-LEZIKVRQ.js} +2 -2
  85. package/dist/chunk-LEZIKVRQ.js.map +1 -0
  86. package/dist/{chunk-S6URFGCZ.js → chunk-LSHPJWM5.js} +3 -3
  87. package/dist/{chunk-S6URFGCZ.js.map → chunk-LSHPJWM5.js.map} +1 -1
  88. package/dist/{chunk-E7K4FTLN.cjs → chunk-NHNXIYDG.cjs} +18 -2
  89. package/dist/chunk-NHNXIYDG.cjs.map +1 -0
  90. package/dist/{chunk-T2CJRA6E.js → chunk-NIUEWICQ.js} +145 -19
  91. package/dist/chunk-NIUEWICQ.js.map +1 -0
  92. package/dist/{chunk-KP42JLXE.cjs → chunk-NN3NOFRU.cjs} +6121 -4141
  93. package/dist/chunk-NN3NOFRU.cjs.map +1 -0
  94. package/dist/{chunk-KJ2SW6VA.js → chunk-NRUZYMHE.js} +4 -3
  95. package/dist/chunk-NRUZYMHE.js.map +1 -0
  96. package/dist/{chunk-KWWD3U7G.cjs → chunk-OIMB2SNZ.cjs} +155 -29
  97. package/dist/chunk-OIMB2SNZ.cjs.map +1 -0
  98. package/dist/{chunk-ZTTMSCLU.js → chunk-OPALPWAM.js} +47 -8
  99. package/dist/chunk-OPALPWAM.js.map +1 -0
  100. package/dist/{chunk-X7JMA3IY.js → chunk-PSCMWPLC.js} +2 -2
  101. package/dist/{chunk-X7JMA3IY.js.map → chunk-PSCMWPLC.js.map} +1 -1
  102. package/dist/{chunk-IITXXVYI.cjs → chunk-RHTV5C5D.cjs} +4 -4
  103. package/dist/{chunk-IITXXVYI.cjs.map → chunk-RHTV5C5D.cjs.map} +1 -1
  104. package/dist/{chunk-RROQ46B6.cjs → chunk-RTROJFEU.cjs} +31 -47
  105. package/dist/chunk-RTROJFEU.cjs.map +1 -0
  106. package/dist/{chunk-NHP6ZIDG.cjs → chunk-S5FPOCQF.cjs} +17 -163
  107. package/dist/chunk-S5FPOCQF.cjs.map +1 -0
  108. package/dist/{chunk-OUUPUAGA.cjs → chunk-SQAX4OW6.cjs} +163 -10
  109. package/dist/chunk-SQAX4OW6.cjs.map +1 -0
  110. package/dist/{chunk-D7CJ4HIQ.js → chunk-TARWUQG6.js} +8 -154
  111. package/dist/chunk-TARWUQG6.js.map +1 -0
  112. package/dist/{chunk-76K3IYWM.js → chunk-TS7B26US.js} +3 -3
  113. package/dist/{chunk-76K3IYWM.js.map → chunk-TS7B26US.js.map} +1 -1
  114. package/dist/{chunk-Y6ROD72V.cjs → chunk-UIGRFDO6.cjs} +4 -4
  115. package/dist/{chunk-Y6ROD72V.cjs.map → chunk-UIGRFDO6.cjs.map} +1 -1
  116. package/dist/{chunk-GRBGQ2GE.js → chunk-UVHSM2GU.cjs} +9 -3
  117. package/dist/chunk-UVHSM2GU.cjs.map +1 -0
  118. package/dist/{chunk-DQIZ5FFX.cjs → chunk-VRFSEZBA.cjs} +173 -11
  119. package/dist/chunk-VRFSEZBA.cjs.map +1 -0
  120. package/dist/{chunk-B5J5HYDN.js → chunk-WDRA4WKG.js} +159 -7
  121. package/dist/chunk-WDRA4WKG.js.map +1 -0
  122. package/dist/{chunk-3ZQ7LX73.js → chunk-WMAMOYRR.js} +3 -3
  123. package/dist/{chunk-3ZQ7LX73.js.map → chunk-WMAMOYRR.js.map} +1 -1
  124. package/dist/{chunk-KJIQGPQR.js → chunk-XY337TTF.js} +24 -10
  125. package/dist/chunk-XY337TTF.js.map +1 -0
  126. package/dist/{chunk-V537VSV4.cjs → chunk-Y24HI6ND.cjs} +37 -10
  127. package/dist/chunk-Y24HI6ND.cjs.map +1 -0
  128. package/dist/deployer/index.cjs +2 -2
  129. package/dist/deployer/index.js +1 -1
  130. package/dist/di/index.cjs +10 -2
  131. package/dist/di/index.d.ts +1 -1
  132. package/dist/di/index.d.ts.map +1 -1
  133. package/dist/di/index.js +1 -1
  134. package/dist/evals/base.d.ts +9 -1
  135. package/dist/evals/base.d.ts.map +1 -1
  136. package/dist/evals/index.cjs +9 -9
  137. package/dist/evals/index.js +2 -2
  138. package/dist/evals/scoreTraces/index.cjs +5 -5
  139. package/dist/evals/scoreTraces/index.js +2 -2
  140. package/dist/evals/types.d.ts +8 -8
  141. package/dist/index.cjs +2 -2
  142. package/dist/index.js +1 -1
  143. package/dist/integration/index.cjs +2 -2
  144. package/dist/integration/index.js +1 -1
  145. package/dist/llm/index.cjs +11 -11
  146. package/dist/llm/index.js +3 -3
  147. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
  148. package/dist/llm/model/model.d.ts.map +1 -1
  149. package/dist/llm/model/model.loop.d.ts +1 -1
  150. package/dist/llm/model/model.loop.d.ts.map +1 -1
  151. package/dist/llm/model/provider-registry.d.ts.map +1 -1
  152. package/dist/llm/model/provider-types.generated.d.ts +53 -1
  153. package/dist/logger/constants.d.ts +1 -0
  154. package/dist/logger/constants.d.ts.map +1 -1
  155. package/dist/logger/index.cjs +11 -11
  156. package/dist/logger/index.js +2 -2
  157. package/dist/logger/transport.d.ts +1 -1
  158. package/dist/logger/transport.d.ts.map +1 -1
  159. package/dist/loop/index.cjs +2 -2
  160. package/dist/loop/index.js +1 -1
  161. package/dist/loop/loop.d.ts.map +1 -1
  162. package/dist/loop/network/index.d.ts +2 -2
  163. package/dist/loop/network/index.d.ts.map +1 -1
  164. package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
  165. package/dist/loop/types.d.ts +5 -2
  166. package/dist/loop/types.d.ts.map +1 -1
  167. package/dist/loop/workflows/agentic-execution/index.d.ts +96 -96
  168. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +65 -65
  169. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  170. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +32 -32
  171. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  172. package/dist/loop/workflows/agentic-loop/index.d.ts +97 -97
  173. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  174. package/dist/loop/workflows/schema.d.ts +32 -32
  175. package/dist/loop/workflows/stream.d.ts +1 -1
  176. package/dist/loop/workflows/stream.d.ts.map +1 -1
  177. package/dist/mastra/index.cjs +2 -2
  178. package/dist/mastra/index.d.ts +55 -0
  179. package/dist/mastra/index.d.ts.map +1 -1
  180. package/dist/mastra/index.js +1 -1
  181. package/dist/mcp/index.cjs +4 -4
  182. package/dist/mcp/index.js +2 -2
  183. package/dist/memory/index.cjs +21 -382
  184. package/dist/memory/index.cjs.map +1 -1
  185. package/dist/memory/index.js +1 -382
  186. package/dist/memory/index.js.map +1 -1
  187. package/dist/memory/memory.d.ts +22 -18
  188. package/dist/memory/memory.d.ts.map +1 -1
  189. package/dist/memory/mock.d.ts +6 -1
  190. package/dist/memory/mock.d.ts.map +1 -1
  191. package/dist/memory/types.d.ts +69 -11
  192. package/dist/memory/types.d.ts.map +1 -1
  193. package/dist/netlify-C2YBIK7A.js +3 -0
  194. package/dist/{netlify-RX3JXCFQ.js.map → netlify-C2YBIK7A.js.map} +1 -1
  195. package/dist/netlify-XWROOTP4.cjs +12 -0
  196. package/dist/{netlify-MXBOGAJR.cjs.map → netlify-XWROOTP4.cjs.map} +1 -1
  197. package/dist/observability/index.cjs +16 -8
  198. package/dist/observability/index.js +1 -1
  199. package/dist/observability/types/tracing.d.ts +165 -3
  200. package/dist/observability/types/tracing.d.ts.map +1 -1
  201. package/dist/observability/utils.d.ts +47 -1
  202. package/dist/observability/utils.d.ts.map +1 -1
  203. package/dist/processors/index.cjs +35 -11
  204. package/dist/processors/index.d.ts +99 -21
  205. package/dist/processors/index.d.ts.map +1 -1
  206. package/dist/processors/index.js +1 -1
  207. package/dist/processors/memory/index.d.ts +7 -0
  208. package/dist/processors/memory/index.d.ts.map +1 -0
  209. package/dist/processors/memory/message-history.d.ts +43 -0
  210. package/dist/processors/memory/message-history.d.ts.map +1 -0
  211. package/dist/processors/memory/semantic-recall.d.ts +152 -0
  212. package/dist/processors/memory/semantic-recall.d.ts.map +1 -0
  213. package/dist/processors/memory/working-memory.d.ts +65 -0
  214. package/dist/processors/memory/working-memory.d.ts.map +1 -0
  215. package/dist/processors/processors/index.d.ts +2 -1
  216. package/dist/processors/processors/index.d.ts.map +1 -1
  217. package/dist/processors/processors/language-detector.d.ts +14 -0
  218. package/dist/processors/processors/language-detector.d.ts.map +1 -1
  219. package/dist/processors/processors/moderation.d.ts +14 -0
  220. package/dist/processors/processors/moderation.d.ts.map +1 -1
  221. package/dist/processors/processors/pii-detector.d.ts +14 -0
  222. package/dist/processors/processors/pii-detector.d.ts.map +1 -1
  223. package/dist/processors/processors/prompt-injection-detector.d.ts +14 -0
  224. package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
  225. package/dist/processors/processors/structured-output.d.ts +2 -1
  226. package/dist/processors/processors/structured-output.d.ts.map +1 -1
  227. package/dist/processors/processors/token-limiter.d.ts +21 -11
  228. package/dist/processors/processors/token-limiter.d.ts.map +1 -1
  229. package/dist/processors/processors/tool-call-filter.d.ts +28 -0
  230. package/dist/processors/processors/tool-call-filter.d.ts.map +1 -0
  231. package/dist/processors/runner.d.ts +35 -4
  232. package/dist/processors/runner.d.ts.map +1 -1
  233. package/dist/provider-registry-BXX7CA3H.cjs +40 -0
  234. package/dist/{provider-registry-NBRXBOQT.cjs.map → provider-registry-BXX7CA3H.cjs.map} +1 -1
  235. package/dist/provider-registry-GRYJWVEM.js +3 -0
  236. package/dist/{provider-registry-3LUCE7FT.js.map → provider-registry-GRYJWVEM.js.map} +1 -1
  237. package/dist/provider-registry.json +147 -3
  238. package/dist/{registry-generator-DEPPRYYJ.cjs → registry-generator-34SC4TAU.cjs} +2 -2
  239. package/dist/registry-generator-34SC4TAU.cjs.map +1 -0
  240. package/dist/{registry-generator-FLW6NV42.js → registry-generator-UMTNPBJX.js} +2 -2
  241. package/dist/registry-generator-UMTNPBJX.js.map +1 -0
  242. package/dist/relevance/index.cjs +2 -2
  243. package/dist/relevance/index.js +1 -1
  244. package/dist/request-context/index.cjs +10 -2
  245. package/dist/request-context/index.d.ts +26 -0
  246. package/dist/request-context/index.d.ts.map +1 -1
  247. package/dist/request-context/index.js +1 -1
  248. package/dist/server/base.d.ts +51 -0
  249. package/dist/server/base.d.ts.map +1 -0
  250. package/dist/server/index.cjs +81 -2
  251. package/dist/server/index.cjs.map +1 -1
  252. package/dist/server/index.d.ts +3 -0
  253. package/dist/server/index.d.ts.map +1 -1
  254. package/dist/server/index.js +79 -2
  255. package/dist/server/index.js.map +1 -1
  256. package/dist/server/simple-auth.d.ts +27 -0
  257. package/dist/server/simple-auth.d.ts.map +1 -0
  258. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  259. package/dist/storage/index.cjs +37 -29
  260. package/dist/storage/index.js +1 -1
  261. package/dist/storage/types.d.ts +1 -1
  262. package/dist/storage/types.d.ts.map +1 -1
  263. package/dist/storage/utils.d.ts +44 -0
  264. package/dist/storage/utils.d.ts.map +1 -1
  265. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  266. package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
  267. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  268. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  269. package/dist/stream/RunOutput.d.ts +2 -2
  270. package/dist/stream/RunOutput.d.ts.map +1 -1
  271. package/dist/stream/aisdk/v5/output.d.ts +1 -1
  272. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  273. package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
  274. package/dist/stream/base/base.d.ts +1 -1
  275. package/dist/stream/base/base.d.ts.map +1 -1
  276. package/dist/stream/base/output-format-handlers.d.ts +1 -1
  277. package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
  278. package/dist/stream/base/output.d.ts +1 -1
  279. package/dist/stream/base/output.d.ts.map +1 -1
  280. package/dist/stream/index.cjs +11 -11
  281. package/dist/stream/index.js +2 -2
  282. package/dist/stream/types.d.ts +2 -0
  283. package/dist/stream/types.d.ts.map +1 -1
  284. package/dist/test-utils/llm-mock.cjs +36 -2
  285. package/dist/test-utils/llm-mock.cjs.map +1 -1
  286. package/dist/test-utils/llm-mock.d.ts +3 -0
  287. package/dist/test-utils/llm-mock.d.ts.map +1 -1
  288. package/dist/test-utils/llm-mock.js +32 -2
  289. package/dist/test-utils/llm-mock.js.map +1 -1
  290. package/dist/tools/index.cjs +6 -6
  291. package/dist/tools/index.js +2 -2
  292. package/dist/tools/is-vercel-tool.cjs +2 -2
  293. package/dist/tools/is-vercel-tool.js +1 -1
  294. package/dist/tools/stream.d.ts +1 -1
  295. package/dist/tools/stream.d.ts.map +1 -1
  296. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  297. package/dist/tools/tool.d.ts +13 -0
  298. package/dist/tools/tool.d.ts.map +1 -1
  299. package/dist/tools/types.d.ts +22 -1
  300. package/dist/tools/types.d.ts.map +1 -1
  301. package/dist/tools/validation.d.ts +1 -1
  302. package/dist/tools/validation.d.ts.map +1 -1
  303. package/dist/tts/index.cjs +2 -2
  304. package/dist/tts/index.js +1 -1
  305. package/dist/utils.cjs +22 -22
  306. package/dist/utils.d.ts +1 -1
  307. package/dist/utils.d.ts.map +1 -1
  308. package/dist/utils.js +1 -1
  309. package/dist/vector/index.cjs +2 -2
  310. package/dist/vector/index.js +1 -1
  311. package/dist/voice/index.cjs +6 -6
  312. package/dist/voice/index.js +1 -1
  313. package/dist/workflows/default.d.ts +176 -281
  314. package/dist/workflows/default.d.ts.map +1 -1
  315. package/dist/workflows/evented/index.cjs +10 -10
  316. package/dist/workflows/evented/index.js +1 -1
  317. package/dist/workflows/evented/step-executor.d.ts +1 -1
  318. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  319. package/dist/workflows/execution-engine.d.ts +4 -2
  320. package/dist/workflows/execution-engine.d.ts.map +1 -1
  321. package/dist/workflows/handlers/control-flow.d.ts +135 -0
  322. package/dist/workflows/handlers/control-flow.d.ts.map +1 -0
  323. package/dist/workflows/handlers/entry.d.ts +45 -0
  324. package/dist/workflows/handlers/entry.d.ts.map +1 -0
  325. package/dist/workflows/handlers/sleep.d.ts +62 -0
  326. package/dist/workflows/handlers/sleep.d.ts.map +1 -0
  327. package/dist/workflows/handlers/step.d.ts +60 -0
  328. package/dist/workflows/handlers/step.d.ts.map +1 -0
  329. package/dist/workflows/index.cjs +20 -20
  330. package/dist/workflows/index.js +1 -1
  331. package/dist/workflows/step.d.ts +1 -0
  332. package/dist/workflows/step.d.ts.map +1 -1
  333. package/dist/workflows/types.d.ts +157 -3
  334. package/dist/workflows/types.d.ts.map +1 -1
  335. package/dist/workflows/workflow.d.ts +8 -6
  336. package/dist/workflows/workflow.d.ts.map +1 -1
  337. package/package.json +6 -5
  338. package/src/llm/model/provider-types.generated.d.ts +53 -1
  339. package/dist/chunk-3B2OPLGG.js.map +0 -1
  340. package/dist/chunk-3PSWNGBF.js +0 -3
  341. package/dist/chunk-3PSWNGBF.js.map +0 -1
  342. package/dist/chunk-436FFEF6.js +0 -34
  343. package/dist/chunk-436FFEF6.js.map +0 -1
  344. package/dist/chunk-556MJ7CL.cjs.map +0 -1
  345. package/dist/chunk-5O52O25J.js.map +0 -1
  346. package/dist/chunk-5SA2EZ33.js.map +0 -1
  347. package/dist/chunk-B5J5HYDN.js.map +0 -1
  348. package/dist/chunk-D7CJ4HIQ.js.map +0 -1
  349. package/dist/chunk-DQIZ5FFX.cjs.map +0 -1
  350. package/dist/chunk-DSNPWVIG.cjs.map +0 -1
  351. package/dist/chunk-E7K4FTLN.cjs.map +0 -1
  352. package/dist/chunk-GRBGQ2GE.js.map +0 -1
  353. package/dist/chunk-J7O6WENZ.cjs.map +0 -1
  354. package/dist/chunk-KIZIOFZC.js.map +0 -1
  355. package/dist/chunk-KJ2SW6VA.js.map +0 -1
  356. package/dist/chunk-KJIQGPQR.js.map +0 -1
  357. package/dist/chunk-KP42JLXE.cjs.map +0 -1
  358. package/dist/chunk-KWWD3U7G.cjs.map +0 -1
  359. package/dist/chunk-NHP6ZIDG.cjs.map +0 -1
  360. package/dist/chunk-OUUPUAGA.cjs.map +0 -1
  361. package/dist/chunk-PC6EKOWK.js.map +0 -1
  362. package/dist/chunk-PE3V7GUL.cjs +0 -4
  363. package/dist/chunk-PE3V7GUL.cjs.map +0 -1
  364. package/dist/chunk-RROQ46B6.cjs.map +0 -1
  365. package/dist/chunk-T2CJRA6E.js.map +0 -1
  366. package/dist/chunk-TQTAMPSC.js.map +0 -1
  367. package/dist/chunk-U3VE2EVB.cjs.map +0 -1
  368. package/dist/chunk-V3VLOOSW.cjs +0 -36
  369. package/dist/chunk-V3VLOOSW.cjs.map +0 -1
  370. package/dist/chunk-V537VSV4.cjs.map +0 -1
  371. package/dist/chunk-VYJXTHII.cjs.map +0 -1
  372. package/dist/chunk-X7F4CSGR.cjs.map +0 -1
  373. package/dist/chunk-XBO6W7LZ.js.map +0 -1
  374. package/dist/chunk-XIDKHXNR.js.map +0 -1
  375. package/dist/chunk-XJQX54QP.cjs.map +0 -1
  376. package/dist/chunk-Y63IFHEZ.cjs.map +0 -1
  377. package/dist/chunk-YDFX3JR2.js.map +0 -1
  378. package/dist/chunk-ZTTMSCLU.js.map +0 -1
  379. package/dist/netlify-MXBOGAJR.cjs +0 -12
  380. package/dist/netlify-RX3JXCFQ.js +0 -3
  381. package/dist/provider-registry-3LUCE7FT.js +0 -3
  382. package/dist/provider-registry-NBRXBOQT.cjs +0 -40
  383. package/dist/registry-generator-DEPPRYYJ.cjs.map +0 -1
  384. package/dist/registry-generator-FLW6NV42.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/logger/multi-logger.ts","../src/logger/noop-logger.ts","../src/logger/transport.ts"],"names":["Transform"],"mappings":"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","file":"chunk-CBAB7GOD.cjs","sourcesContent":["import type { MastraError } from '../error';\nimport type { LogLevel } from './constants';\nimport type { IMastraLogger } from './logger';\nimport type { LoggerTransport } from './transport';\n\nexport class MultiLogger implements IMastraLogger {\n private loggers: IMastraLogger[];\n\n constructor(loggers: IMastraLogger[]) {\n this.loggers = loggers;\n }\n\n debug(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.debug(message, ...args));\n }\n\n info(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.info(message, ...args));\n }\n\n warn(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.warn(message, ...args));\n }\n\n error(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.error(message, ...args));\n }\n\n trackException(error: MastraError): void {\n this.loggers.forEach(logger => logger.trackException(error));\n }\n\n getTransports(): Map<string, LoggerTransport> {\n const transports: [string, LoggerTransport][] = [];\n this.loggers.forEach(logger => transports.push(...logger.getTransports().entries()));\n return new Map(transports);\n }\n\n async listLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n },\n ) {\n for (const logger of this.loggers) {\n const logs = await logger.listLogs(transportId, params);\n if (logs.total > 0) {\n return logs;\n }\n }\n\n return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n }\n\n async listLogsByRunId(args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n for (const logger of this.loggers) {\n const logs = await logger.listLogsByRunId(args);\n if (logs.total > 0) {\n return logs;\n }\n }\n\n return { logs: [], total: 0, page: args.page ?? 1, perPage: args.perPage ?? 100, hasMore: false };\n }\n}\n","import type { IMastraLogger } from './logger';\n\nexport const noopLogger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n cleanup: async () => {},\n getTransports: () => new Map(),\n trackException: () => {},\n listLogs: async () => ({ logs: [], total: 0, page: 1, perPage: 100, hasMore: false }),\n listLogsByRunId: async () => ({ logs: [], total: 0, page: 1, perPage: 100, hasMore: false }),\n} as IMastraLogger;\n","import { Transform } from 'stream';\nimport type { LogLevel } from './constants';\n\nexport interface BaseLogMessage {\n runId?: string;\n msg: string;\n level: LogLevel;\n time: Date;\n pid: number;\n hostname: string;\n name: string;\n}\n\nexport abstract class LoggerTransport extends Transform {\n constructor(opts: any = {}) {\n super({ ...opts, objectMode: true });\n }\n\n async listLogsByRunId(_args: {\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n async listLogs(_args?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n}\n\nexport const createCustomTransport = (\n stream: Transform,\n listLogs?: LoggerTransport['listLogs'],\n listLogsByRunId?: LoggerTransport['listLogsByRunId'],\n) => {\n let transport = stream as LoggerTransport;\n if (listLogs) {\n transport.listLogs = listLogs;\n }\n if (listLogsByRunId) {\n transport.listLogsByRunId = listLogsByRunId;\n }\n return transport as LoggerTransport;\n};\n"]}
1
+ {"version":3,"sources":["../src/logger/multi-logger.ts","../src/logger/noop-logger.ts","../src/logger/transport.ts"],"names":["Transform"],"mappings":"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","file":"chunk-6BJ7XHRH.cjs","sourcesContent":["import type { MastraError } from '../error';\nimport type { LogLevel } from './constants';\nimport type { IMastraLogger } from './logger';\nimport type { LoggerTransport } from './transport';\n\nexport class MultiLogger implements IMastraLogger {\n private loggers: IMastraLogger[];\n\n constructor(loggers: IMastraLogger[]) {\n this.loggers = loggers;\n }\n\n debug(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.debug(message, ...args));\n }\n\n info(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.info(message, ...args));\n }\n\n warn(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.warn(message, ...args));\n }\n\n error(message: string, ...args: any[]): void {\n this.loggers.forEach(logger => logger.error(message, ...args));\n }\n\n trackException(error: MastraError): void {\n this.loggers.forEach(logger => logger.trackException(error));\n }\n\n getTransports(): Map<string, LoggerTransport> {\n const transports: [string, LoggerTransport][] = [];\n this.loggers.forEach(logger => transports.push(...logger.getTransports().entries()));\n return new Map(transports);\n }\n\n async listLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n },\n ) {\n for (const logger of this.loggers) {\n const logs = await logger.listLogs(transportId, params);\n if (logs.total > 0) {\n return logs;\n }\n }\n\n return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n }\n\n async listLogsByRunId(args: {\n transportId: string;\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n for (const logger of this.loggers) {\n const logs = await logger.listLogsByRunId(args);\n if (logs.total > 0) {\n return logs;\n }\n }\n\n return { logs: [], total: 0, page: args.page ?? 1, perPage: args.perPage ?? 100, hasMore: false };\n }\n}\n","import type { IMastraLogger } from './logger';\n\nexport const noopLogger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n cleanup: async () => {},\n getTransports: () => new Map(),\n trackException: () => {},\n listLogs: async () => ({ logs: [], total: 0, page: 1, perPage: 100, hasMore: false }),\n listLogsByRunId: async () => ({ logs: [], total: 0, page: 1, perPage: 100, hasMore: false }),\n} as IMastraLogger;\n","import { Transform } from 'node:stream';\nimport type { LogLevel } from './constants';\n\nexport interface BaseLogMessage {\n runId?: string;\n msg: string;\n level: LogLevel;\n time: Date;\n pid: number;\n hostname: string;\n name: string;\n}\n\nexport abstract class LoggerTransport extends Transform {\n constructor(opts: any = {}) {\n super({ ...opts, objectMode: true });\n }\n\n async listLogsByRunId(_args: {\n runId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n async listLogs(_args?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n }\n}\n\nexport const createCustomTransport = (\n stream: Transform,\n listLogs?: LoggerTransport['listLogs'],\n listLogsByRunId?: LoggerTransport['listLogsByRunId'],\n) => {\n let transport = stream as LoggerTransport;\n if (listLogs) {\n transport.listLogs = listLogs;\n }\n if (listLogsByRunId) {\n transport.listLogsByRunId = listLogsByRunId;\n }\n return transport as LoggerTransport;\n};\n"]}
@@ -1,10 +1,10 @@
1
- import { validateStepInput, createDeprecationProxy, getStepResult, validateStepSuspendData, runCountDeprecationMessage, createTimeTravelExecutionParams, validateStepResumeData, Workflow, Run, ExecutionEngine } from './chunk-XBO6W7LZ.js';
1
+ import { validateStepInput, createDeprecationProxy, getStepResult, validateStepSuspendData, runCountDeprecationMessage, createTimeTravelExecutionParams, validateStepResumeData, Workflow, Run, ExecutionEngine } from './chunk-45NA5ZD3.js';
2
2
  import { STREAM_FORMAT_SYMBOL, EMITTER_SYMBOL } from './chunk-NLNKQD2T.js';
3
3
  import { getErrorFromUnknown, MastraError } from './chunk-JJ5O45LH.js';
4
- import { Tool } from './chunk-XIDKHXNR.js';
5
- import { RequestContext } from './chunk-GRBGQ2GE.js';
6
- import { MastraBase } from './chunk-S6URFGCZ.js';
7
- import { RegisteredLogger } from './chunk-KJ2SW6VA.js';
4
+ import { Tool } from './chunk-4F6RAJFU.js';
5
+ import { RequestContext } from './chunk-6TBWJV35.js';
6
+ import { MastraBase } from './chunk-LSHPJWM5.js';
7
+ import { RegisteredLogger } from './chunk-NRUZYMHE.js';
8
8
  import EventEmitter from 'events';
9
9
  import { randomUUID } from 'crypto';
10
10
  import z from 'zod';
@@ -39,6 +39,11 @@ var StepExecutor = class extends MastraBase {
39
39
  stepInfo.resumePayload = params.resumeData;
40
40
  stepInfo.resumedAt = Date.now();
41
41
  }
42
+ let suspendDataToUse = params.stepResults[step.id]?.status === "suspended" ? params.stepResults[step.id]?.suspendPayload : void 0;
43
+ if (suspendDataToUse && "__workflow_meta" in suspendDataToUse) {
44
+ const { __workflow_meta, ...userSuspendData } = suspendDataToUse;
45
+ suspendDataToUse = userSuspendData;
46
+ }
42
47
  try {
43
48
  if (validationError) {
44
49
  throw validationError;
@@ -57,6 +62,7 @@ var StepExecutor = class extends MastraBase {
57
62
  },
58
63
  retryCount,
59
64
  resumeData: params.resumeData,
65
+ suspendData: suspendDataToUse,
60
66
  getInitData: () => stepResults?.input,
61
67
  getStepResult: getStepResult.bind(this, stepResults),
62
68
  suspend: async (suspendPayload) => {
@@ -2599,5 +2605,5 @@ var EventedExecutionEngine = class extends ExecutionEngine {
2599
2605
  };
2600
2606
 
2601
2607
  export { EventedExecutionEngine, EventedRun, EventedWorkflow, StepExecutor, WorkflowEventProcessor, cloneStep, cloneWorkflow, createStep, createWorkflow };
2602
- //# sourceMappingURL=chunk-3B2OPLGG.js.map
2603
- //# sourceMappingURL=chunk-3B2OPLGG.js.map
2608
+ //# sourceMappingURL=chunk-6GOLI2EY.js.map
2609
+ //# sourceMappingURL=chunk-6GOLI2EY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/workflows/evented/step-executor.ts","../src/events/processor.ts","../src/workflows/evented/workflow-event-processor/loop.ts","../src/workflows/evented/workflow-event-processor/parallel.ts","../src/workflows/evented/workflow-event-processor/sleep.ts","../src/workflows/evented/workflow-event-processor/index.ts","../src/workflows/evented/workflow.ts","../src/workflows/evented/workflow-event-processor/utils.ts","../src/workflows/evented/execution-engine.ts"],"names":["validationError","EventEmitter","step","randomUUID"],"mappings":";;;;;;;;;;;AAkBO,IAAM,YAAA,GAAN,cAA2B,UAAA,CAAW;AAAA,EACjC,MAAA;AAAA,EACV,WAAA,CAAY,EAAE,MAAA,EAAO,EAAwB;AAC3C,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,gBAAA,CAAiB,UAAU,CAAA;AACpE,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ,MAAA,EAa8B;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,cAAA,EAAgB,UAAA,GAAa,GAAE,GAAI,MAAA;AAErE,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAE5C,IAAA,IAAI,SAAA;AACJ,IAAA,IAAI,MAAA;AACJ,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,IAAA,MAAM,EAAE,SAAA,EAAW,eAAA,EAAgB,GAAI,MAAM,iBAAA,CAAkB;AAAA,MAC7D,UAAA,EAAY,OAAO,MAAA,CAAO,UAAA,KAAe,QAAA,GAAW,OAAO,KAAA,GAAQ,MAAA,CAAO,UAAU,CAAA,GAAI,MAAA,CAAO,KAAA;AAAA,MAC/F,IAAA;AAAA,MACA,cAAA,EAAgB,OAAO,cAAA,IAAkB;AAAA,KAC1C,CAAA;AAED,IAAA,IAAI,QAAA,GAMA;AAAA,MACF,GAAG,WAAA,CAAY,IAAA,CAAK,EAAE,CAAA;AAAA,MACtB,SAAA;AAAA,MACA,OAAA,EAAA,CAAU,OAAO,MAAA,CAAO,UAAA,KAAe,WAAW,MAAA,CAAO,KAAA,GAAQ,cAAc;AAAC,KAClF;AAEA,IAAA,IAAI,OAAO,UAAA,EAAY;AACrB,MAAA,OAAO,QAAA,CAAS,iBAAiB,iBAAiB,CAAA;AAClD,MAAA,QAAA,CAAS,gBAAgB,MAAA,CAAO,UAAA;AAChC,MAAA,QAAA,CAAS,SAAA,GAAY,KAAK,GAAA,EAAI;AAAA,IAChC;AAGA,IAAA,IAAI,gBAAA,GACF,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,EAAE,CAAA,EAAG,MAAA,KAAW,WAAA,GAAc,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,EAAE,GAAG,cAAA,GAAiB,MAAA;AAGtG,IAAA,IAAI,gBAAA,IAAoB,qBAAqB,gBAAA,EAAkB;AAC7D,MAAA,MAAM,EAAE,eAAA,EAAiB,GAAG,eAAA,EAAgB,GAAI,gBAAA;AAChD,MAAA,gBAAA,GAAmB,eAAA;AAAA,IACrB;AAEA,IAAA,IAAI;AACF,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,MAAM,eAAA;AAAA,MACR;AAEA,MAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,OAAA;AAAA,QAC5B,sBAAA;AAAA,UACE;AAAA,YACE,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,KAAA;AAAA,YACA,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,cAAA;AAAA,YACA,SAAA;AAAA,YACA,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,QAAA,EAAU,CAAC,KAAA,KAAe;AAExB,cAAA,MAAA,CAAO,KAAA,GAAQ,KAAA;AAAA,YACjB,CAAA;AAAA,YACA,UAAA;AAAA,YACA,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,WAAA,EAAa,gBAAA;AAAA,YACb,WAAA,EAAa,MAAM,WAAA,EAAa,KAAA;AAAA,YAChC,aAAA,EAAe,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,YACnD,OAAA,EAAS,OAAO,cAAA,KAAsC;AACpD,cAAA,MAAM,EAAE,WAAA,EAAa,eAAA,EAAAA,gBAAAA,EAAgB,GAAI,MAAM,uBAAA,CAAwB;AAAA,gBACrE,WAAA,EAAa,cAAA;AAAA,gBACb;AAAA,eACD,CAAA;AACD,cAAA,IAAIA,gBAAAA,EAAiB;AACnB,gBAAA,MAAMA,gBAAAA;AAAA,cACR;AACA,cAAA,SAAA,GAAY,EAAE,OAAA,EAAS,EAAE,GAAG,aAAa,eAAA,EAAiB,EAAE,KAAA,EAAO,IAAA,EAAM,CAAC,IAAA,CAAK,EAAE,CAAA,IAAI,EAAE;AAAA,YACzF,CAAA;AAAA,YACA,IAAA,EAAM,CAAC,MAAA,KAAgB;AACrB,cAAA,MAAA,GAAS,EAAE,SAAS,MAAA,EAAO;AAAA,YAC7B,CAAA;AAAA;AAAA,YAEA,MAAA,EAAQ,MAAA;AAAA,YACR,OAAO,MAAM;AACX,cAAA,eAAA,EAAiB,KAAA,EAAM;AAAA,YACzB,CAAA;AAAA,YACA,CAAC,cAAc,GAAG,MAAA,CAAO,OAAA;AAAA;AAAA,YACzB,CAAC,oBAAoB,GAAG,MAAA;AAAA;AAAA,YACxB,QAAQ,EAAC;AAAA,YACT,aAAa,eAAA,EAAiB,MAAA;AAAA;AAAA,YAE9B,gBAAgB;AAAC,WACnB;AAAA,UACA;AAAA,YACE,SAAA,EAAW,UAAA;AAAA,YACX,kBAAA,EAAoB,0BAAA;AAAA,YACpB,QAAQ,IAAA,CAAK;AAAA;AACf;AACF,OACF;AAEA,MAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AAEzB,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,WAAA,GAAc;AAAA,UACZ,GAAG,QAAA;AAAA,UACH,MAAA,EAAQ,WAAA;AAAA,UACR,WAAA,EAAa,OAAA;AAAA,UACb,GAAI,UAAA,GAAa,EAAE,aAAA,EAAe,UAAA,KAAe;AAAC,SACpD;AAEA,QAAA,IAAI,UAAU,OAAA,EAAS;AACrB,UAAA,WAAA,CAAY,iBAAiB,SAAA,CAAU,OAAA;AAAA,QACzC;AAAA,MACF,WAAW,MAAA,EAAQ;AACjB,QAAA,WAAA,GAAc;AAAA,UACZ,GAAG,QAAA;AAAA;AAAA,UAEH,MAAA,EAAQ,QAAA;AAAA,UACR,OAAA;AAAA,UACA,QAAQ,MAAA,CAAO;AAAA,SACjB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,WAAA,GAAc;AAAA,UACZ,GAAG,QAAA;AAAA,UACH,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA;AAAA,UACA,MAAA,EAAQ;AAAA,SACV;AAAA,MACF;AAEA,MAAA,OAAO,WAAA;AAAA,IACT,SAAS,KAAA,EAAY;AACnB,MAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AAEzB,MAAA,MAAM,aAAA,GAAgB,oBAAoB,KAAA,EAAO;AAAA,QAC/C,YAAA,EAAc,KAAA;AAAA,QACd,eAAA,EAAiB;AAAA,OAClB,CAAA;AAED,MAAA,OAAO;AAAA,QACL,GAAG,QAAA;AAAA,QACH,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA;AAAA,QACA,KAAA,EAAO,CAAA,OAAA,EAAU,aAAA,CAAc,OAAO,CAAA;AAAA,OACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,mBAAmB,MAAA,EAWH;AACpB,IAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,cAAA,EAAgB,UAAA,GAAa,GAAE,GAAI,MAAA;AAErE,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,IAAA,MAAM,EAAA,GAAK,IAAI,YAAA,EAAa;AAE5B,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA;AAAA,MAC5B,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,CAAA,SAAA,KAAa;AAC/B,QAAA,IAAI;AACF,UAAA,OAAO,KAAK,iBAAA,CAAkB;AAAA,YAC5B,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,SAAA;AAAA,YACA,KAAA;AAAA,YACA,cAAA;AAAA,YACA,WAAW,MAAA,CAAO,KAAA;AAAA,YAClB,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAA;AAAA,YACA,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,eAAA;AAAA,YACA,WAAA;AAAA,YACA,OAAA,EAAS,EAAA;AAAA,YACT,cAAA,EAAgB;AAAA,WACjB,CAAA;AAAA,QACH,SAAS,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,CAAC,CAAA;AAC7C,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF,CAAC;AAAA,KACH;AAEA,IAAA,MAAM,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,EAAK,QAAQ,GAAA,KAAQ;AAChD,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,MACd;AAEA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAc,CAAA;AAEjB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,iBAAA,CAAkB;AAAA,IACtB,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb;AAAA,GACF,EAaqB;AACnB,IAAA,OAAO,SAAA;AAAA,MACL,sBAAA;AAAA,QACE;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,cAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA,EAAU,CAAC,MAAA,KAAgB;AAAA,UAE3B,CAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA,EAAa,MAAM,WAAA,EAAa,KAAA;AAAA,UAChC,aAAA,EAAe,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,UACnD,OAAA,EAAS,OAAO,eAAA,KAAuC;AACrD,YAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,UACnC,CAAA;AAAA,UACA,IAAA,EAAM,CAAC,OAAA,KAAiB;AACtB,YAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,UACnC,CAAA;AAAA;AAAA,UAEA,MAAA,EAAQ,MAAA;AAAA,UACR,OAAO,MAAM;AACX,YAAA,eAAA,EAAiB,KAAA,EAAM;AAAA,UACzB,CAAA;AAAA,UACA,CAAC,cAAc,GAAG,OAAA;AAAA;AAAA,UAClB,CAAC,oBAAoB,GAAG,MAAA;AAAA;AAAA,UACxB,QAAQ,EAAC;AAAA,UACT,aAAa,eAAA,EAAiB,MAAA;AAAA;AAAA,UAE9B,gBAAgB,EAAC;AAAA,UACjB;AAAA,SACF;AAAA,QACA;AAAA,UACE,SAAA,EAAW,UAAA;AAAA,UACX,kBAAA,EAAoB,0BAAA;AAAA,UACpB,QAAQ,IAAA,CAAK;AAAA;AACf;AACF,KACF;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,MAAA,EAUC;AAClB,IAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,cAAA,EAAgB,UAAA,GAAa,GAAE,GAAI,MAAA;AAErE,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,IAAA,MAAM,EAAA,GAAK,IAAI,YAAA,EAAa;AAE5B,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,IAAA,CAAK,QAAA;AAAA,IACd;AAEA,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACZ,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,EAAA;AAAA,QAChB,sBAAA;AAAA,UACE;AAAA,YACE,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,KAAA;AAAA,YACA,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,cAAA;AAAA,YACA,WAAW,MAAA,CAAO,KAAA;AAAA;AAAA,YAElB,OAAO,EAAC;AAAA,YACR,QAAA,EAAU,CAAC,MAAA,KAAgB;AAAA,YAE3B,CAAA;AAAA,YACA,UAAA;AAAA,YACA,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,WAAA,EAAa,MAAM,WAAA,EAAa,KAAA;AAAA,YAChC,aAAA,EAAe,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,YACnD,OAAA,EAAS,OAAO,eAAA,KAAuC;AACrD,cAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,IAAA,EAAM,CAAC,OAAA,KAAiB;AACtB,cAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,OAAO,MAAM;AACX,cAAA,eAAA,EAAiB,KAAA,EAAM;AAAA,YACzB,CAAA;AAAA;AAAA,YAEA,MAAA,EAAQ,MAAA;AAAA,YACR,CAAC,cAAc,GAAG,EAAA;AAAA;AAAA,YAClB,CAAC,oBAAoB,GAAG,MAAA;AAAA;AAAA,YACxB,QAAQ,EAAC;AAAA,YACT,aAAa,eAAA,EAAiB,MAAA;AAAA;AAAA,YAE9B,gBAAgB;AAAC,WACnB;AAAA,UACA;AAAA,YACE,SAAA,EAAW,UAAA;AAAA,YACX,kBAAA,EAAoB,0BAAA;AAAA,YACpB,QAAQ,IAAA,CAAK;AAAA;AACf;AACF,OACF;AAAA,IACF,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,CAAC,CAAA;AAC7C,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAUJ;AAClB,IAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,cAAA,EAAgB,UAAA,GAAa,GAAE,GAAI,MAAA;AAErE,IAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,IAAA,MAAM,EAAA,GAAK,IAAI,YAAA,EAAa;AAE5B,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,OAAO,IAAA,CAAK,IAAA,CAAK,OAAA,EAAQ,GAAI,KAAK,GAAA,EAAI;AAAA,IACxC;AAEA,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACZ,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA;AAAA,QACxB,sBAAA;AAAA,UACE;AAAA,YACE,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,KAAA;AAAA,YACA,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,cAAA;AAAA,YACA,WAAW,MAAA,CAAO,KAAA;AAAA;AAAA,YAElB,OAAO,EAAC;AAAA,YACR,QAAA,EAAU,CAAC,MAAA,KAAgB;AAAA,YAE3B,CAAA;AAAA,YACA,UAAA;AAAA,YACA,YAAY,MAAA,CAAO,UAAA;AAAA,YACnB,WAAA,EAAa,MAAM,WAAA,EAAa,KAAA;AAAA,YAChC,aAAA,EAAe,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,WAAW,CAAA;AAAA,YACnD,OAAA,EAAS,OAAO,eAAA,KAAuC;AACrD,cAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,IAAA,EAAM,CAAC,OAAA,KAAiB;AACtB,cAAA,MAAM,IAAI,MAAM,iBAAiB,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,OAAO,MAAM;AACX,cAAA,eAAA,EAAiB,KAAA,EAAM;AAAA,YACzB,CAAA;AAAA;AAAA,YAEA,MAAA,EAAQ,MAAA;AAAA,YACR,CAAC,cAAc,GAAG,EAAA;AAAA;AAAA,YAClB,CAAC,oBAAoB,GAAG,MAAA;AAAA;AAAA,YACxB,QAAQ,EAAC;AAAA,YACT,aAAa,eAAA,EAAiB,MAAA;AAAA;AAAA,YAE9B,gBAAgB;AAAC,WACnB;AAAA,UACA;AAAA,YACE,SAAA,EAAW,UAAA;AAAA,YACX,kBAAA,EAAoB,0BAAA;AAAA,YACpB,QAAQ,IAAA,CAAK;AAAA;AACf;AACF,OACF;AAEA,MAAA,OAAO,MAAA,CAAO,OAAA,EAAQ,GAAI,IAAA,CAAK,GAAA,EAAI;AAAA,IACrC,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,CAAC,CAAA;AAC7C,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AACF;;;ACxcO,IAAe,iBAAf,MAA8B;AAAA,EACzB,MAAA;AAAA,EAEV,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,WAAA,CAAY,EAAE,MAAA,EAAO,EAAuB;AAC1C,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAGF,CAAA;ACPA,eAAsB,mBAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAMA;AACA,EAAA,MAAM,aAAA,GAAgB,MAAM,YAAA,CAAa,iBAAA,CAAkB;AAAA,IACzD,UAAA;AAAA,IACA,WAAW,IAAA,CAAK,SAAA;AAAA,IAChB,KAAA;AAAA,IACA,WAAA;AAAA;AAAA,IAEA,OAAO,EAAC;AAAA,IACR,OAAA,EAAS,IAAIC,YAAAA,EAAa;AAAA;AAAA,IAC1B,cAAA,EAAgB,IAAI,cAAA,EAAe;AAAA;AAAA,IACnC,SAAA,EAAW,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,IAClE,UAAA;AAAA,IACA,eAAA,EAAiB,IAAI,eAAA,EAAgB;AAAA,IACrC,UAAA;AAAA,IACA,cAAA,EAAgB;AAAA;AAAA,GACjB,CAAA;AAED,EAAA,IAAI,IAAA,CAAK,aAAa,SAAA,EAAW;AAC/B,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,UAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAO;AACL,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,UAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAAA,EACF;AACF;AAEA,eAAsB,sBAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAKA;AACA,EAAA,MAAM,aAAA,GAAgF,WAAA,CACpF,IAAA,CAAK,IAAA,CAAK,EACZ,CAAA;AAEA,EAAA,MAAM,GAAA,GAAM,aAAA,EAAe,MAAA,EAAQ,MAAA,IAAU,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAa,UAAA,EAAoB,MAAA,EAAQ,MAAA,IAAU,CAAA;AAEzD,EAAA,IAAI,GAAA,IAAO,SAAA,IAAa,aAAA,CAAc,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAW,CAAA,KAAM,IAAI,CAAA,CAAE,MAAA,IAAU,SAAA,EAAW;AAC/F,IAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,MAChC,IAAA,EAAM,mBAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,cAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,aAAA,CAAc,aAAA,CAAc,MAAA,GAAS,CAAC,CAAA,GAAK,CAAC,CAAC,CAAA;AAAA,QAC/F,WAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA,EAAY,aAAA;AAAA,QACZ,UAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA;AACF,KACD,CAAA;AAED,IAAA;AAAA,EACF,CAAA,MAAA,IAAW,OAAO,SAAA,EAAW;AAE3B,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,aAAA,CAAc,MAAA,KAAW,CAAA,IAAK,GAAA,KAAQ,CAAA,EAAG;AAE3C,IAAA,MAAM,cAAc,IAAA,CAAK,GAAA,CAAI,KAAK,IAAA,CAAK,WAAA,IAAe,GAAG,SAAS,CAAA;AAClE,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAY,EAAG,MAAM,IAAI,CAAA;AAElE,IAAA,MAAM,MAAA,CAAO,UAAA,EAAW,EAAG,qBAAA,CAAsB;AAAA,MAC/C,YAAA,EAAc,UAAA;AAAA,MACd,KAAA;AAAA,MACA,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,MAClB,MAAA,EAAQ;AAAA,QACN,MAAA,EAAQ,UAAA;AAAA,QACR,MAAA,EAAQ,WAAA;AAAA,QACR,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,SAAU,UAAA,EAAoB;AAAA,OAChC;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,CAAA,EAAA,EAAK;AACpC,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,CAAC,aAAA,CAAc,CAAC,GAAI,CAAC,CAAA;AAAA,UACpC,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA;AAAA,EACF;AAEA,EAAC,aAAA,CAAsB,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,MAAM,MAAA,CAAO,UAAA,EAAW,EAAG,qBAAA,CAAsB;AAAA,IAC/C,YAAA,EAAc,UAAA;AAAA,IACd,KAAA;AAAA,IACA,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,IAClB,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQ,UAAA;AAAA,MACR,QAAS,aAAA,CAAsB,MAAA;AAAA,MAC/B,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,SAAU,UAAA,EAAoB;AAAA,KAChC;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,IAChC,IAAA,EAAM,mBAAA;AAAA,IACN,KAAA;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,cAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA,EAAe,CAAC,aAAA,CAAc,CAAC,GAAI,GAAG,CAAA;AAAA,MACtC,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACD,CAAA;AACH;ACxPA,eAAsB,uBAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA;AACF,CAAA,EAIA;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAC1C,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAC/B,IAAA,IAAI,UAAA,EAAY,SAAS,MAAA,EAAQ;AAC/B,MAAA,WAAA,CAAY,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA,GAAI,IAAA;AAAA,IACpC;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,IACZ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,OAAO,OAAO,GAAA,KAAQ;AACnC,MAAA,OAAO,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QACjC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA;AAAA,UACzC,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAC;AAAA,GACH;AACF;AAEA,eAAsB,0BAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKA;AACA,EAAA,MAAM,IAAA,GAAO,MAAM,YAAA,CAAa,kBAAA,CAAmB;AAAA,IACjD,UAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA;AAAA,IAEA,OAAO,EAAC;AAAA,IACR,OAAA,EAAS,IAAIA,YAAAA,EAAa;AAAA;AAAA,IAC1B,cAAA,EAAgB,IAAI,cAAA,EAAe;AAAA;AAAA,IACnC,KAAA,EAAO,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,IAC9D;AAAA,GACD,CAAA;AAED,EAAA,MAAM,aAAsC,EAAC;AAC7C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,UAAA,CAAW,IAAA,CAAK,CAAC,CAAE,CAAA,GAAI,IAAA;AAAA,EACzB;AAEA,EAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,IACZ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,OAAOC,OAAM,GAAA,KAAQ;AAClC,MAAA,IAAI,UAAA,CAAW,GAAG,CAAA,EAAG;AACnB,QAAA,IAAIA,KAAAA,EAAM,SAAS,MAAA,EAAQ;AACzB,UAAA,WAAA,CAAYA,KAAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,IAAA;AAAA,QAC9B;AACA,QAAA,OAAO,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,UACjC,IAAA,EAAM,mBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,UAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA,EAAe,aAAA,CAAc,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA;AAAA,YACzC,WAAA;AAAA,YACA,WAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,cAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAO,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,UACjC,IAAA,EAAM,mBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,UAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA,EAAe,aAAA,CAAc,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA;AAAA,YACzC,WAAA;AAAA,YACA,WAAA;AAAA,YACA,UAAA,EAAY,EAAE,MAAA,EAAQ,SAAA,EAAU;AAAA,YAChC,UAAA;AAAA,YACA,cAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH;AAAA,IACF,CAAC;AAAA,GACH;AACF;ACxIA,eAAsB,4BACpB,YAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAKA;AACA,EAAA,MAAM,aAAA,GAAgB,YAAA,EAAc,YAAA,CAAa,SAAS,CAAA;AAC1D,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,YAAA,CAAa,QAAA,EAAU,aAAa,CAAA;AAChE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,MAAA,EAAQ,SAAA;AAAA,IACR,QAAQ,YAAA,EAAc,OAAA,CAAQ,WAAA,EAAa,EAAA,IAAM,OAAO,CAAA,EAAG;AAAA,GAC7D;AAEA,EAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,IAChC,IAAA,EAAM,mBAAA;AAAA,IACN,OAAO,YAAA,CAAa,KAAA;AAAA,IACpB,IAAA,EAAM;AAAA,MACJ,YAAY,YAAA,CAAa,UAAA;AAAA,MACzB,OAAO,YAAA,CAAa,KAAA;AAAA,MACpB,aAAA;AAAA,MACA,aAAa,EAAC;AAAA,MACd,YAAY,YAAA,CAAa,UAAA;AAAA,MACzB,gBAAgB,YAAA,CAAa,cAAA;AAAA,MAC7B,aAAa,YAAA,EAAc,OAAA;AAAA,MAC3B,UAAA;AAAA,MACA,aAAa,EAAC;AAAA,MACd,gBAAgB,YAAA,EAAc;AAAA;AAChC,GACD,CAAA;AACH;AAEA,eAAsB,oBAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKA;AACA,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,EAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,IAClD,IAAA,EAAM,OAAA;AAAA,IACN,KAAA;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,QAC/D;AAAA;AACF;AACF,GACD,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,YAAA,CAAa;AAAA,IAC/C,UAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,EAAS,IAAID,YAAAA,EAAa;AAAA;AAAA,IAC1B,cAAA,EAAgB,IAAI,cAAA,EAAe;AAAA;AAAA,IACnC,KAAA,EAAO,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,IAC9D;AAAA,GACD,CAAA;AAED,EAAA,UAAA;AAAA,IACE,YAAY;AACV,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAClD,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,MAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,YAC/D,MAAA,EAAQ,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,YAC9D,SAAA;AAAA,YACA,OAAA,EAAS,KAAK,GAAA;AAAI;AACpB;AACF,OACD,CAAA;AAED,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAClD,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,UAAU;AAAC;AACb;AACF,OACD,CAAA;AAED,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,aAAA,CAAc,aAAA,CAAc,MAAA,GAAS,CAAC,CAAA,GAAK,CAAC,CAAC,CAAA;AAAA,UAC/F,WAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,QAAA,GAAW,IAAI,CAAA,GAAI;AAAA,GACrB;AACF;AAEA,eAAsB,yBAAA,CACpB;AAAA,EACE,UAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EACA;AAAA,EACE,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAKA;AACA,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,iBAAA,CAAkB;AAAA,IACpD,UAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,EAAS,IAAIA,YAAAA,EAAa;AAAA;AAAA,IAC1B,cAAA,EAAgB,IAAI,cAAA,EAAe;AAAA;AAAA,IACnC,KAAA,EAAO,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,IAC9D;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,IAClD,IAAA,EAAM,OAAA;AAAA,IACN,KAAA;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,QACP,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,MAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAS,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,QAC/D;AAAA;AACF;AACF,GACD,CAAA;AAED,EAAA,UAAA;AAAA,IACE,YAAY;AACV,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAClD,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,MAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,YAC/D,MAAA,EAAQ,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,YAC9D,SAAA;AAAA,YACA,OAAA,EAAS,KAAK,GAAA;AAAI;AACpB;AACF,OACD,CAAA;AAED,MAAA,MAAM,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAClD,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,UAAU;AAAC;AACb;AACF,OACD,CAAA;AAED,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,aAAA,CAAc,aAAA,CAAc,MAAA,GAAS,CAAC,CAAA,GAAK,CAAC,CAAC,CAAA;AAAA,UAC/F,WAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,QAAA,GAAW,IAAI,CAAA,GAAI;AAAA,GACrB;AACF;;;AC5MO,IAAM,sBAAA,GAAN,cAAqC,cAAA,CAAe;AAAA,EACjD,YAAA;AAAA,EAER,WAAA,CAAY,EAAE,MAAA,EAAO,EAAuB;AAC1C,IAAA,KAAA,CAAM,EAAE,QAAQ,CAAA;AAChB,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,YAAA,CAAa,EAAE,QAAQ,CAAA;AAAA,EACjD;AAAA,EAEA,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,KAAA,CAAM,iBAAiB,MAAM,CAAA;AAC7B,IAAA,IAAA,CAAK,YAAA,CAAa,iBAAiB,MAAM,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAc,aAAA,CACZ;AAAA,IACE,cAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,KAEF,CAAA,EACA;AACA,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,MAC5C,IAAA,EAAM,eAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,UAAA;AAAA,QACA,KAAA;AAAA,QACA,eAAe,EAAC;AAAA,QAChB,WAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA,CAAE,KAAA,IAAS,EAAE,OAAA,EAAQ;AAAA,QAC5D,cAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAa,EAAC;AAAA,QACd;AAAA;AACF,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,qBAAA,CAAsB,EAAE,UAAA,EAAY,OAAM,EAAkB;AAC1E,IAAA,MAAM,eAAe,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,mBAAA,CAAoB;AAAA,MACvE,YAAA,EAAc,UAAA;AAAA,MACd,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ;AAAA;AACV,KACD,CAAA;AAED,IAAA,MAAM,KAAK,WAAA,CAAY;AAAA,MACrB,QAAA,EAAU,MAAA;AAAA,MACV,UAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAa,YAAA,EAAc,OAAA;AAAA,MAC3B,UAAA,EAAY,EAAE,MAAA,EAAQ,UAAA,EAAW;AAAA,MACjC,gBAAgB,YAAA,EAAc,cAAA;AAAA,MAC9B,eAAe,EAAC;AAAA,MAChB,aAAa,EAAC;AAAA,MACd,aAAa,EAAC;AAAA,MACd,UAAA,EAAY,MAAA;AAAA,MACZ,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,oBAAA,CAAqB;AAAA,IACnC,QAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,EAAkB;AAChB,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,EAAW,EAAG,uBAAA,CAAwB;AAAA,MACtD,cAAc,QAAA,CAAS,EAAA;AAAA,MACvB,KAAA;AAAA,MACA,QAAA,EAAU;AAAA,QACR,aAAa,EAAC;AAAA,QACd,gBAAgB,EAAC;AAAA,QACjB,cAAc,EAAC;AAAA,QACf,cAAc,EAAC;AAAA,QACf,iBAAiB,EAAC;AAAA,QAClB,qBAAqB,QAAA,CAAS,mBAAA;AAAA,QAC9B,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,KAAA;AAAA,QACA,SAAS,WAAA,IAAe;AAAA,UACtB,KAAA,EAAO,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS;AAAA,SAChE;AAAA,QACA,MAAA,EAAQ,SAAA;AAAA,QACR,OAAO;AAAC;AACV,KACD,CAAA;AAED,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,MAC5C,IAAA,EAAM,mBAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,cAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA,EAAe,aAAA,IAAiB,CAAC,CAAC,CAAA;AAAA,QAClC,WAAA;AAAA,QACA,aAAa,WAAA,IAAe;AAAA,UAC1B,KAAA,EAAO,UAAA,EAAY,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS;AAAA,SAChE;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAa;AAAC;AAChB,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,YAAY,IAAA,EAAqB;AAC/C,IAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAO,UAAA,EAAW,GAAI,IAAA;AAC1C,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,EAAW,EAAG,mBAAA,CAAoB;AAAA,MAClD,YAAA,EAAc,UAAA;AAAA,MACd,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ,SAAA;AAAA,QACR,MAAA,EAAQ;AAAA;AACV,KACD,CAAA;AAED,IAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,MAC9D,IAAA,EAAM,OAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,iBAAA;AAAA,QACN,OAAA,EAAS;AAAA,UACP;AAAA;AACF;AACF,KACD,CAAA;AAED,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,MAC5C,IAAA,EAAM,cAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,UAAU,MAAA;AAAU,KACtC,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,mBAAmB,IAAA,EAAqB;AACtD,IAAA,MAAM,EAAE,aAAa,UAAA,EAAY,UAAA,EAAY,gBAAgB,WAAA,EAAa,cAAA,EAAgB,KAAA,EAAO,UAAA,EAAW,GAC1G,IAAA;AAGF,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,YAAY,cAAA,CAAe,UAAA;AAAA,UAC3B,OAAO,cAAA,CAAe,KAAA;AAAA,UACtB,eAAe,cAAA,CAAe,aAAA;AAAA,UAC9B,WAAA;AAAA,UACA,aAAa,cAAA,CAAe,WAAA;AAAA,UAC5B,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,gBAAgB,cAAA,CAAe,cAAA;AAAA,UAC/B,aAAA,EAAe,cAAA;AAAA,UACf,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,kBAAA,EAAoB;AAAA,MACnD,IAAA,EAAM,cAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,UAAU,MAAA;AAAU,KACtC,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,uBAAuB,IAAA,EAAqB;AAC1D,IAAA,MAAM,EAAE,aAAa,UAAA,EAAY,UAAA,EAAY,gBAAgB,WAAA,EAAa,KAAA,EAAO,cAAA,EAAgB,UAAA,EAAW,GAC1G,IAAA;AAIF,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,YAAY,cAAA,CAAe,UAAA;AAAA,UAC3B,OAAO,cAAA,CAAe,KAAA;AAAA,UACtB,eAAe,cAAA,CAAe,aAAA;AAAA,UAC9B,WAAA;AAAA,UACA,aAAa,cAAA,CAAe,WAAA;AAAA,UAC5B,UAAA,EAAY;AAAA,YACV,GAAG,UAAA;AAAA,YACH,cAAA,EAAgB;AAAA,cACd,GAAG,UAAA,CAAW,cAAA;AAAA,cACd,eAAA,EAAiB;AAAA,gBACf,KAAA;AAAA,gBACA,MAAM,cAAA,EAAgB,MAAA,GAClB,CAAC,cAAA,CAAe,MAAM,EAAE,MAAA,CAAO,UAAA,CAAW,gBAAgB,eAAA,EAAiB,IAAA,IAAQ,EAAE,CAAA,GACpF,WAAW,cAAA,EAAgB,eAAA,EAAiB,QAAQ;AAAC;AAC5D;AACF,WACF;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA,gBAAgB,cAAA,CAAe,cAAA;AAAA,UAC/B,aAAA,EAAe;AAAA;AACjB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,kBAAA,EAAoB;AAAA,MACnD,IAAA,EAAM,kBAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,UAAU,MAAA;AAAU,KACtC,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,oBAAoB,IAAA,EAAqB;AACvD,IAAA,MAAM;AAAA,MACJ,UAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,KACF,GAAI,IAAA;AAEJ,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,EAAW,EAAG,mBAAA,CAAoB;AAAA,MAClD,YAAA,EAAc,UAAA;AAAA,MACd,KAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ,QAAA;AAAA,QACR,OAAQ,UAAA,CAAmB;AAAA;AAC7B,KACD,CAAA;AAGD,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,YAAY,cAAA,CAAe,UAAA;AAAA,UAC3B,OAAO,cAAA,CAAe,KAAA;AAAA,UACtB,eAAe,cAAA,CAAe,aAAA;AAAA,UAC9B,WAAA;AAAA,UACA,aAAa,cAAA,CAAe,WAAA;AAAA,UAC5B,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA,gBAAgB,cAAA,CAAe,cAAA;AAAA,UAC/B,aAAA,EAAe;AAAA;AACjB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,kBAAA,EAAoB;AAAA,MACnD,IAAA,EAAM,eAAA;AAAA,MACN,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,GAAG,IAAA,EAAM,UAAU,MAAA;AAAU,KACtC,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,sBAAA,CAAuB;AAAA,IACrC,QAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,EAAkB;AAChB,IAAA,IAAI,YAA6B,QAAA,CAAS,SAAA;AAE1C,IAAA,IAAI,CAAC,eAAe,MAAA,EAAQ;AAC1B,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACV;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAI,WAAA,CAAY;AAAA,UACd,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,CAAA,yBAAA,EAA4B,IAAA,CAAK,SAAA,CAAU,aAAa,CAAC,CAAA,CAAA;AAAA,UAC/D,MAAA,EAAA,iBAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,GAAkC,SAAA,CAAU,aAAA,CAAc,CAAC,CAAE,CAAA;AAEjE,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACV;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAI,WAAA,CAAY;AAAA,UACd,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,CAAA,8BAAA,EAAiC,IAAA,CAAK,SAAA,CAAU,aAAa,CAAC,CAAA,CAAA;AAAA,UACpE,MAAA,EAAA,iBAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,IAAA,CAAK,SAAS,UAAA,IAAc,IAAA,CAAK,SAAS,aAAA,KAAkB,aAAA,CAAc,SAAS,CAAA,EAAG;AACzF,MAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc,CAAC,CAAE,CAAA;AAAA,IACrC,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,UAAA,EAAY;AACnC,MAAA,OAAO,uBAAA;AAAA,QACL;AAAA,UAEE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB;AAAA;AACF,OACF;AAAA,IACF,CAAA,MAAA,IAAW,IAAA,EAAM,IAAA,KAAS,aAAA,EAAe;AACvC,MAAA,OAAO,0BAAA;AAAA,QACL;AAAA,UAEE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB;AAAA;AACF,OACF;AAAA,IACF,CAAA,MAAA,IAAW,IAAA,EAAM,IAAA,KAAS,OAAA,EAAS;AACjC,MAAA,OAAO,oBAAA;AAAA,QACL;AAAA,UAEE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB;AAAA;AACF,OACF;AAAA,IACF,CAAA,MAAA,IAAW,IAAA,EAAM,IAAA,KAAS,YAAA,EAAc;AACtC,MAAA,OAAO,yBAAA;AAAA,QACL;AAAA,UAEE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB;AAAA;AACF,OACF;AAAA,IACF,WAAW,IAAA,EAAM,IAAA,KAAS,SAAA,IAAa,aAAA,CAAc,WAAW,CAAA,EAAG;AACjE,MAAA,OAAO,sBAAA;AAAA,QACL;AAAA,UAEE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb;AAAA;AACF,OACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACV;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAI,WAAA,CAAY;AAAA,UACd,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,2BAA2B,IAAA,EAAM,IAAI,OAAO,IAAA,CAAK,SAAA,CAAU,aAAa,CAAC,CAAA,CAAA;AAAA,UAC/E,MAAA,EAAA,iBAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,IAAA;AAG5B,IAAA,IAAI,IAAA,CAAK,gBAAgB,eAAA,EAAiB;AACxC,MAAA,IAAI,WAAA,EAAa,SAAS,CAAA,EAAG;AAC3B,QAAA,MAAM,QAAA,GAAW,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AACzC,QAAA,MAAM,WAAA,GAAc,QAAA,EAAU,cAAA,EAAgB,eAAA,EAAiB,KAAA;AAC/D,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,OAAO,IAAA,CAAK,aAAA;AAAA,YACV;AAAA,cACE,UAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAA;AAAA,cACA,UAAA;AAAA,cACA,UAAA;AAAA,cACA,cAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,IAAI,WAAA,CAAY;AAAA,cACd,EAAA,EAAI,iBAAA;AAAA,cACJ,IAAA,EAAM,CAAA,kCAAA,EAAqC,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC,CAAA,CAAA;AAAA,cACtE,MAAA,EAAA,iBAAA;AAAA,cACA,QAAA,EAAA,QAAA;AAAA,aACD;AAAA,WACH;AAAA,QACF;AAEA,QAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,IAAc,oBAAA,CAAqB;AAAA,UACrE,YAAA,EAAc,KAAK,IAAA,CAAK,EAAA;AAAA,UACxB,KAAA,EAAO;AAAA,SACR,CAAA;AAED,QAAA,MAAM,oBAAoB,QAAA,EAAU,OAAA;AACpC,QAAA,MAAM,WAAA,GAAc,WAAA,CAAY,KAAA,CAAM,CAAC,CAAA;AAEvC,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UAC5C,IAAA,EAAM,iBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,UAAA,EAAY,KAAK,IAAA,CAAK,EAAA;AAAA,YACtB,cAAA,EAAgB;AAAA,cACd,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,cAClB,UAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAA;AAAA,cACA,KAAA,EAAO,UAAA;AAAA,cACP;AAAA,aACF;AAAA,YACA,aAAA,EAAe,QAAA,EAAU,cAAA,GAAiB,WAAA,CAAY,CAAC,CAAE,CAAA;AAAA,YACzD,KAAA,EAAO,WAAA;AAAA,YACP,WAAA,EAAa,WAAA;AAAA,YACb,WAAA,EAAa,iBAAA;AAAA,YACb,UAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH,CAAA,MAAA,IAAW,UAAA,IAAc,UAAA,CAAW,KAAA,EAAO,MAAA,GAAS,CAAA,IAAK,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,KAAM,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI;AAC7F,QAAA,MAAM,WACH,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,IAAc,oBAAA,CAAqB;AAAA,UACrD,YAAA,EAAc,KAAK,IAAA,CAAK,EAAA;AAAA,UACxB;AAAA,SACD,CAAA,IAAO,EAAE,OAAA,EAAS,EAAC,EAAE;AAExB,QAAA,MAAM,mBAAmB,+BAAA,CAAgC;AAAA,UACvD,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,UAC/B,WAAW,UAAA,CAAW,SAAA;AAAA,UACtB,YAAY,UAAA,CAAW,UAAA;AAAA,UACvB,SAAU,UAAA,CAAW,iBAAA,GAAoB,KAAK,IAAA,CAAK,EAAE,KAAK,EAAC;AAAA,UAC3D,kBAAA,EAAqB,UAAA,CAAW,iBAAA,IAAqB,EAAC;AAAA,UACtD,QAAA;AAAA,UACA,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,mBAAA;AAAoB,SACtC,CAAA;AAED,QAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,iBAAiB,aAAa,CAAA;AACxE,QAAA,MAAM,gBAAA,GAAmB,gBAAA,CAAiB,WAAA,CAAY,cAAA,EAAgB,MAAM,OAAO,CAAA;AAEnF,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UAC5C,IAAA,EAAM,gBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,UAAA,EAAY,KAAK,IAAA,CAAK,EAAA;AAAA,YACtB,cAAA,EAAgB;AAAA,cACd,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,cAClB,UAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAA;AAAA,cACA,UAAA;AAAA,cACA,KAAA,EAAO,UAAA;AAAA,cACP;AAAA,aACF;AAAA,YACA,eAAe,gBAAA,CAAiB,aAAA;AAAA,YAChC,OAAO,UAAA,EAAW;AAAA,YAClB,aAAa,gBAAA,CAAiB,WAAA;AAAA,YAC9B,YAAY,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,kBAAkB,OAAA,EAAQ;AAAA,YACnE,UAAA,EAAY,gBAAA;AAAA,YACZ,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UAC5C,IAAA,EAAM,gBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,UAAA,EAAY,KAAK,IAAA,CAAK,EAAA;AAAA,YACtB,cAAA,EAAgB;AAAA,cACd,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,cAClB,UAAA;AAAA,cACA,KAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAA;AAAA,cACA,KAAA,EAAO,UAAA;AAAA,cACP;AAAA,aACF;AAAA,YACA,aAAA,EAAe,CAAC,CAAC,CAAA;AAAA,YACjB,OAAO,UAAA,EAAW;AAAA,YAClB,WAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,MAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAC9D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,qBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,EAAA,EAAI,KAAK,IAAA,CAAK,EAAA;AAAA,YACd,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,YACpB,OAAA,EAAS,UAAA,CAAW,MAAA,KAAW,SAAA,GAAY,WAAW,MAAA,GAAS,MAAA;AAAA,YAC/D,MAAA,EAAQ;AAAA;AACV;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,EAAA,GAAK,IAAIA,YAAAA,EAAa;AAC5B,IAAA,EAAA,CAAG,EAAA,CAAG,OAAA,EAAS,OAAO,KAAA,KAAe;AACnC,MAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAC9D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,MAAM,EAAA,GAAK,IAAI,cAAA,EAAe;AAC9B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAG;AACzD,MAAA,EAAA,CAAG,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,IACnB;AACA,IAAA,MAAM,EAAE,UAAA,EAAY,oBAAA,EAAsB,iBAAiB,+BAAA,EAAgC,GACzF,MAAM,sBAAA,CAAuB;AAAA,MAC3B,UAAA,EAAY,UAAA,EAAY,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EAAG,MAAA,KAAW,WAAA,GAAc,UAAA,EAAY,UAAA,GAAa,MAAA;AAAA,MACrG,MAAM,IAAA,CAAK;AAAA,KACZ,CAAA;AAEH,IAAA,IAAI,eAAA;AACJ,IAAA,IAAI,oBAAA,IAAwB,CAAC,+BAAA,EAAiC;AAC5D,MAAA,eAAA,GAAkB,oBAAA;AAAA,IACpB,CAAA,MAAA,IAAW,wBAAwB,+BAAA,EAAiC;AAClE,MAAA,IAAA,CAAK,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA,CAAK,2CAAA,EAA6C;AAAA,QACzE,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,QAClB,OAAO,+BAAA,CAAgC;AAAA,OACxC,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,aAAa,MAAA,GAAS,CAAA,IAAK,cAAc,CAAC,CAAA,KAAM,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI;AACvE,MAAA,eAAA,GAAkB,UAAA;AAAA,IACpB;AAEA,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,OAAA,CAAQ;AAAA,MACjD,UAAA;AAAA,MACA,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA;AAAA,MACA,WAAA;AAAA;AAAA,MAEA,OAAO,EAAC;AAAA,MACR,OAAA,EAAS,EAAA;AAAA,MACT,cAAA,EAAgB,EAAA;AAAA,MAChB,OAAQ,UAAA,EAAoB,MAAA;AAAA,MAC5B,UAAA,EAAY,eAAA;AAAA,MACZ,UAAA;AAAA,MACA,YAAY,IAAA,CAAK,IAAA,KAAS,SAAA,GAAY,aAAA,CAAc,CAAC,CAAA,GAAI,MAAA;AAAA,MACzD,cAAA,EAAgB,SAAS,OAAA,CAAQ;AAAA,KAClC,CAAA;AACD,IAAA,cAAA,GAAiB,MAAA,CAAO,WAAA,CAAY,EAAA,CAAG,OAAA,EAAS,CAAA;AAGhD,IAAA,IAAI,UAAA,CAAW,WAAW,QAAA,EAAU;AAElC,MAAA,UAAA,CAAW,MAAA,GAAS,SAAA;AAEpB,MAAA,MAAM,KAAK,WAAA,CAAY;AAAA,QACrB,QAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA,EAAa;AAAA,UACX,GAAG,WAAA;AAAA,UACH,CAAC,IAAA,CAAK,IAAA,CAAK,EAAE,GAAG;AAAA,SAClB;AAAA,QACA,UAAA,EAAY,UAAA;AAAA,QACZ,WAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,UAAA,CAAW,WAAW,QAAA,EAAU;AAClC,MAAA,IAAI,UAAA,KAAe,QAAA,CAAS,WAAA,CAAY,QAAA,IAAY,CAAA,CAAA,EAAI;AACtD,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UAC5C,IAAA,EAAM,mBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,cAAA;AAAA,YACA,UAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,UAAA,EAAY,UAAA;AAAA,YACZ,WAAA;AAAA,YACA;AAAA;AACF,SACD,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,UAC7C,IAAA,EAAM,mBAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,cAAA;AAAA,YACA,UAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA,cAAA;AAAA,YACA,YAAY,UAAA,GAAa;AAAA;AAC3B,SACD,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AAGxB,MAAA,MAAM,mBAAA;AAAA,QACJ;AAAA,UAEE,UAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA;AAAA,UACA,YAAY,UAAA,GAAa;AAAA,SAC3B;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB,IAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,UAAA;AAAA,UACZ,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAgB,sBAAA,CAAuB;AAAA,IACrC,QAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,EAAkB;AAChB,IAAA,IAAI,IAAA,GAAO,QAAA,CAAS,SAAA,CAAU,aAAA,CAAc,CAAC,CAAE,CAAA;AAE/C,IAAA,IAAA,CAAK,IAAA,EAAM,SAAS,UAAA,IAAc,IAAA,EAAM,SAAS,aAAA,KAAkB,aAAA,CAAc,SAAS,CAAA,EAAG;AAC3F,MAAA,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc,CAAC,CAAE,CAAA;AAAA,IACrC;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACV;AAAA,UACE,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAI,WAAA,CAAY;AAAA,UACd,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,CAAA,gBAAA,EAAmB,IAAA,CAAK,SAAA,CAAU,aAAa,CAAC,CAAA,CAAA;AAAA,UACtD,MAAA,EAAA,iBAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,oBAAA,CAAqB;AAAA,QACpE,YAAA,EAAc,UAAA;AAAA,QACd;AAAA,OACD,CAAA;AAED,MAAA,MAAM,UAAA,GAAa,cAAc,CAAC,CAAA;AAClC,MAAA,MAAM,gBAAiB,QAAA,EAAU,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EAAW,MAAA;AAElE,MAAA,IAAI,SAAA,GAAY,UAAA;AAChB,MAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,aAAA,CAAc,UAAU,IAAK,UAAA,CAAmB,MAAA;AAChD,UAAA,SAAA,GAAY,EAAE,GAAG,UAAA,EAAY,MAAA,EAAQ,aAAA,EAAc;AAAA,QACrD,CAAA,MAAO;AACL,UAAA,SAAA,GAAY,EAAE,GAAG,UAAA,EAAY,QAAQ,CAAE,UAAA,CAAmB,MAAM,CAAA,EAAE;AAAA,QACpE;AAAA,MACF;AACA,MAAA,MAAM,iBAAiB,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,qBAAA,CAAsB;AAAA,QAC3E,cAAc,QAAA,CAAS,EAAA;AAAA,QACvB,KAAA;AAAA,QACA,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,QAClB,MAAA,EAAQ,SAAA;AAAA,QACR;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,cAAA;AAAA,IAChB,CAAA,MAAA,IAAW,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAEjC,MAAA,OAAO,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AAG/B,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,UAAA,GAAa,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI;AAAA,UACvC,GAAG,UAAA;AAAA,UACH,OAAA,EAAS,aAAA,CAAc,KAAA,EAAO,MAAA,IAAU;AAAC,SAC3C;AAAA,MACF;AAEA,MAAA,MAAM,iBAAiB,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,qBAAA,CAAsB;AAAA,QAC3E,cAAc,QAAA,CAAS,EAAA;AAAA,QACvB,KAAA;AAAA,QACA,MAAA,EAAQ,KAAK,IAAA,CAAK,EAAA;AAAA,QAClB,MAAA,EAAQ,UAAA;AAAA,QACR;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA;AAAA,MACF;AAEA,MAAA,WAAA,GAAc,cAAA;AAAA,IAChB;AAEA,IAAA,IAAI,CAAC,UAAA,EAAY,MAAA,IAAU,UAAA,CAAW,WAAW,QAAA,EAAU;AACzD,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,eAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAED,MAAA;AAAA,IACF,CAAA,MAAA,IAAW,UAAA,CAAW,MAAA,KAAW,WAAA,EAAa;AAC5C,MAAA,MAAM,iBAA2C,EAAC;AAClD,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,QAAA,EAAU,aAAa,CAAA;AACrD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,cAAA,CAAe,aAAA,CAAc,EAAE,CAAA,GAAI,aAAA;AAAA,MACrC;AAEA,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,EAAW,EAAG,mBAAA,CAAoB;AAAA,QAClD,YAAA,EAAc,UAAA;AAAA,QACd,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,MAAA,EAAQ,WAAA;AAAA,UACR,MAAA,EAAQ,UAAA;AAAA,UACR;AAAA;AACF,OACD,CAAA;AAED,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,kBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAED,MAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAC9D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,yBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,EAAA,EAAK,MAAc,IAAA,EAAM,EAAA;AAAA,YACzB,GAAG,UAAA;AAAA,YACH,WAAA,EAAa,KAAK,GAAA,EAAI;AAAA,YACtB,gBAAgB,UAAA,CAAW;AAAA;AAC7B;AACF,OACD,CAAA;AAED,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,EAAM,SAAS,MAAA,EAAQ;AACzB,MAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAC9D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,sBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP,EAAA,EAAI,KAAK,IAAA,CAAK,EAAA;AAAA,YACd,GAAG;AAAA;AACL;AACF,OACD,CAAA;AAED,MAAA,IAAI,UAAA,CAAW,WAAW,SAAA,EAAW;AACnC,QAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,UAC9D,IAAA,EAAM,OAAA;AAAA,UACN,KAAA;AAAA,UACA,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,sBAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,EAAA,EAAI,KAAK,IAAA,CAAK,EAAA;AAAA,cACd,UAAU;AAAC;AACb;AACF,SACD,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,IAAA,GAAO,QAAA,CAAS,SAAA,CAAU,aAAA,CAAc,CAAC,CAAE,CAAA;AAC3C,IAAA,IAAA,CAAK,IAAA,EAAM,SAAS,UAAA,IAAc,IAAA,EAAM,SAAS,aAAA,KAAkB,aAAA,CAAc,SAAS,CAAA,EAAG;AAC3F,MAAA,IAAI,YAAA,GAAe,CAAA;AACnB,MAAA,MAAM,UAAA,GAAkC,KAAK,KAAA,CAAM,MAAA;AAAA,QACjD,CAAC,KAAKC,KAAAA,KAAS;AACb,UAAA,IAAI,gBAAA,CAAiBA,KAAI,CAAA,EAAG;AAC1B,YAAA,MAAM,GAAA,GAAM,WAAA,GAAcA,KAAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AACtC,YAAA,IAAI,GAAA,IAAO,GAAA,CAAI,MAAA,KAAW,SAAA,EAAW;AACnC,cAAA,GAAA,CAAIA,KAAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,GAAA,EAAK,MAAA;AAAA,YAE3B,CAAA,MAAA,IAAW,GAAA,EAAK,MAAA,KAAW,SAAA,EAAW;AACpC,cAAA,YAAA,EAAA;AAAA,YACF;AAAA,UACF;AAEA,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA,QACA;AAAC,OACH;AAEA,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AACnC,MAAA,IAAI,IAAA,CAAK,MAAA,GAAS,YAAA,GAAe,IAAA,CAAK,MAAM,MAAA,EAAQ;AAClD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAA;AAAA,UACA,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,UACxC,WAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAQ,UAAA,EAAW;AAAA,UACpD,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,IAAA,EAAM,IAAA,KAAS,SAAA,EAAW;AACnC,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,UACxC,WAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA,YAAY,EAAE,GAAG,UAAA,EAAY,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,UACzD,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH,WAAW,aAAA,CAAc,CAAC,KAAM,QAAA,CAAS,SAAA,CAAU,SAAS,CAAA,EAAG;AAC7D,MAAA,MAAM,KAAK,WAAA,CAAY;AAAA,QACrB,QAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,QAC5C,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,UAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA,EAAe,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,MAAA,CAAO,CAAC,aAAA,CAAc,aAAA,CAAc,MAAA,GAAS,CAAC,CAAA,GAAK,CAAC,CAAC,CAAA;AAAA,UAC/F,WAAA;AAAA,UACA,cAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,cAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,QAAA,CAAS;AAAA,IACb,UAAA;AAAA,IACA;AAAA,GACF,EAGiD;AAC/C,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,CAAO,UAAA,IAAc,oBAAA,CAAqB;AAAA,MACpE,YAAA,EAAc,UAAA;AAAA,MACd;AAAA,KACD,CAAA;AAED,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEA,MAAM,OAAA,CAAQ,KAAA,EAAc,GAAA,EAA2B;AACrD,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,KAAA;AAEvB,IAAA,MAAM,YAAA,GAAe,IAAA;AAErB,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,QAAA,CAAS;AAAA,MACvC,YAAY,YAAA,CAAa,UAAA;AAAA,MACzB,OAAO,YAAA,CAAa;AAAA,KACrB,CAAA;AAED,IAAA,IAAI,YAAA,EAAc,MAAA,KAAW,UAAA,IAAc,IAAA,KAAS,cAAA,EAAgB;AAClE,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,sBAAsB,CAAA,EAAG;AAC3C,MAAA,MAAM,2BAAA;AAAA,QACJ;AAAA,UACE,GAAG,YAAA;AAAA,UACH,QAAA,EAAU,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,aAAa,UAAU;AAAA,SAC3D;AAAA,QACA;AAAA,UACE,MAAA,EAAQ,KAAK,MAAA,CAAO,MAAA;AAAA,UACpB,SAAA,EAAW,KAAK,KAAA,CAAM,GAAG,EAAE,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,UAC5C;AAAA;AACF,OACF;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,IAAA,CAAK,MAAA,CAAO,qBAAA,CAAsB,YAAA,CAAa,UAAU,CAAA,EAAG;AAC9D,MAAA,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,qBAAA,CAAsB,YAAA,CAAa,UAAU,CAAA;AAAA,IACtE,CAAA,MAAA,IAAW,aAAa,cAAA,EAAgB;AACtC,MAAA,QAAA,GAAW,iBAAA,CAAkB,IAAA,CAAK,MAAA,EAAQ,YAAA,CAAa,cAAc,CAAA;AAAA,IACvE,CAAA,MAAO;AACL,MAAA,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,YAAA,CAAa,UAAU,CAAA;AAAA,IAC5D;AAEA,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,IAAA,CAAK,aAAA;AAAA,QACV,YAAA;AAAA,QACA,IAAI,WAAA,CAAY;AAAA,UACd,EAAA,EAAI,iBAAA;AAAA,UACJ,IAAA,EAAM,CAAA,oBAAA,EAAuB,YAAA,CAAa,UAAU,CAAA,CAAA;AAAA,UACpD,MAAA,EAAA,iBAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,KAAS,gBAAA,IAAoB,IAAA,KAAS,iBAAA,EAAmB;AAC3D,MAAA,MAAM,EAAE,OAAM,GAAI,YAAA;AAClB,MAAA,MAAM,KAAK,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI;AAAA,QAC9D,IAAA,EAAM,OAAA;AAAA,QACN,KAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,gBAAA;AAAA,UACN,OAAA,EAAS;AAAA,YACP;AAAA;AACF;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,iBAAA;AACH,QAAA,MAAM,KAAK,qBAAA,CAAsB;AAAA,UAC/B,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,gBAAA;AACH,QAAA,MAAM,KAAK,oBAAA,CAAqB;AAAA,UAC9B,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,iBAAA;AACH,QAAA,MAAM,KAAK,oBAAA,CAAqB;AAAA,UAC9B,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,cAAA;AACH,QAAA,MAAM,KAAK,kBAAA,CAAmB;AAAA,UAC5B,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,mBAAA;AACH,QAAA,MAAM,KAAK,sBAAA,CAAuB;AAAA,UAChC,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,mBAAA;AACH,QAAA,MAAM,KAAK,sBAAA,CAAuB;AAAA,UAChC,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,kBAAA;AACH,QAAA,MAAM,KAAK,sBAAA,CAAuB;AAAA,UAChC,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,MAAM,KAAK,mBAAA,CAAoB;AAAA,UAC7B,QAAA;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AACD,QAAA;AAEA;AAGJ,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,IAAM;AAAA,IACd,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,sBAAsB,CAAC,CAAA;AAAA,IACvC;AAAA,EACF;AACF;;;ACptCO,SAAS,aAAA,CAgBd,UACA,IAAA,EACwF;AACxF,EAAA,MAAM,EAAA,GAA6F,IAAI,QAAA,CAAS;AAAA,IAC9G,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,aAAa,QAAA,CAAS,WAAA;AAAA,IACtB,cAAc,QAAA,CAAS,YAAA;AAAA,IACvB,OAAO,QAAA,CAAS,QAAA;AAAA,IAChB,QAAQ,QAAA,CAAS,MAAA;AAAA,IACjB,SAAS,QAAA,CAAS;AAAA,GACnB,CAAA;AAED,EAAA,EAAA,CAAG,WAAA,CAAY,SAAS,SAAS,CAAA;AACjC,EAAA,EAAA,CAAG,MAAA,EAAO;AACV,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,SAAA,CACd,MACA,IAAA,EAC2D;AAC3D,EAAA,OAAO;AAAA,IACL,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,eAAe,IAAA,CAAK,aAAA;AAAA,IACpB,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,WAAW,IAAA,CAAK;AAAA,GAClB;AACF;AAEA,SAAS,QAAQ,MAAA,EAAwC;AACvD,EAAA,OAAO,QAAQ,SAAA,KAAc,OAAA;AAC/B;AAEA,SAAS,OAAO,MAAA,EAA4C;AAC1D,EAAA,OAAO,MAAA,YAAkB,IAAA;AAC3B;AAmDO,SAAS,WAQd,MAAA,EA0BkG;AAClG,EAAA,IAAI,OAAA,CAAQ,MAAM,CAAA,EAAG;AACnB,IAAA,OAAO;AAAA,MACL,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,WAAA,EAAa,OAAO,cAAA,EAAe;AAAA;AAAA,MAEnC,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,QACpB,MAAA,EAAQ,EAAE,MAAA;AAAO;AAAA;AAAA,OAGlB,CAAA;AAAA;AAAA,MAED,YAAA,EAAc,EAAE,MAAA,CAAO;AAAA,QACrB,IAAA,EAAM,EAAE,MAAA;AAAO,OAChB,CAAA;AAAA,MACD,OAAA,EAAS,OAAO,EAAE,SAAA,EAAW,CAAC,iBAAiB,OAAA,EAAS,cAAA,EAAgB,WAAA,EAAa,KAAA,EAAM,KAAM;AAE/F,QAAA,IAAI,gBAAgB,EAAC;AAMrB,QAAA,aAAA,CAAc,OAAA,GAAU,IAAI,OAAA,CAAQ,CAAC,SAAS,MAAA,KAAW;AACvD,UAAA,aAAA,CAAc,OAAA,GAAU,OAAA;AACxB,UAAA,aAAA,CAAc,MAAA,GAAS,MAAA;AAAA,QACzB,CAAC,CAAA;AAED,QAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,MAAA,CAAO,YAAA,CAAa,UAAU,MAAA,EAAQ;AAAA;AAAA;AAAA,UAGjE,cAAA;AAAA,UACA,UAAU,CAAA,MAAA,KAAU;AAClB,YAAA,aAAA,CAAc,OAAA,CAAQ,OAAO,IAAI,CAAA;AAAA,UACnC,CAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,YAAY,OAAA,EAAS;AACvB,UAAA,OAAO,KAAA,EAAM;AAAA,QACf;AAEA,QAAA,MAAM,QAAA,GAAW;AAAA,UACf,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM;AAAA,SACR;AAEA,QAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,UAC1B,IAAA,EAAM,2BAAA;AAAA,UACN,GAAI,YAAY;AAAC,SAClB,CAAA;AACD,QAAA,WAAA,MAAiB,SAAS,UAAA,EAAY;AACpC,UAAA,IAAI,KAAA,CAAM,SAAS,YAAA,EAAc;AAC/B,YAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,cAC1B,IAAA,EAAM,iBAAA;AAAA,cACN,GAAI,YAAY,EAAC;AAAA,cACjB,eAAe,KAAA,CAAM;AAAA,aACtB,CAAA;AAAA,UACH;AAAA,QACF;AACA,QAAA,MAAM,OAAA,CAAQ,KAAK,OAAA,EAAS;AAAA,UAC1B,IAAA,EAAM,4BAAA;AAAA,UACN,GAAI,YAAY;AAAC,SAClB,CAAA;AAED,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAM,aAAA,CAAc;AAAA,SAC5B;AAAA,MACF,CAAA;AAAA,MACA,WAAW,MAAA,CAAO;AAAA,KACpB;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,CAAO,MAAM,CAAA,EAAG;AAClB,IAAA,IAAI,CAAC,MAAA,CAAO,WAAA,IAAe,CAAC,OAAO,YAAA,EAAc;AAC/C,MAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,IACnE;AAEA,IAAA,OAAO;AAAA,MACL,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,SAAS,OAAO;AAAA,QACd,SAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF,KAAM;AAEJ,QAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,KAAA,EAAQ,MAAA,CAAO,EAAE,CAAA,kCAAA,CAAoC,CAAA;AAAA,QACvE;AAGA,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,MAAA;AAAA,UACA,cAAA;AAAA,UACA,cAAA,EAAgB,EAAE,WAAA,EAAa,MAAA,EAAU;AAAA;AAAA,UACzC,QAAA,EAAU;AAAA,YACR,KAAA;AAAA,YACA,UAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AACF,SACF;AAGA,QAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AAAA,MAC1C,CAAA;AAAA,MACA,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAI,MAAA,CAAO,EAAA;AAAA,IACX,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,SAAS,MAAA,CAAO;AAAA,GAClB;AACF;AAEO,SAAS,eAcd,MAAA,EAAsE;AACtE,EAAA,MAAM,iBAAiB,IAAI,sBAAA,CAAuB,EAAE,MAAA,EAAQ,MAAA,CAAO,QAAS,CAAA;AAC5E,EAAA,MAAM,eAAA,GAAkB,IAAI,sBAAA,CAAuB;AAAA,IACjD,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,cAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,MAAA,CAAO,OAAA,EAAS,cAAA,IAAkB,IAAA;AAAA,MAClD,qBAAA,EAAuB,MAAA,CAAO,OAAA,EAAS,qBAAA,KAA0B,MAAM,IAAA,CAAA;AAAA,MACvE,aAAA,EAAe,OAAO,OAAA,EAAS;AAAA;AACjC,GACD,CAAA;AACD,EAAA,OAAO,IAAI,eAAA,CAAyF;AAAA,IAClG,GAAG,MAAA;AAAA,IACH;AAAA,GACD,CAAA;AACH;AAEO,IAAM,eAAA,GAAN,cAQG,QAAA,CAAiF;AAAA,EACzF,YAAY,MAAA,EAAsE;AAChF,IAAA,KAAA,CAAM,MAAM,CAAA;AACZ,IAAA,IAAA,CAAK,UAAA,GAAa,SAAA;AAAA,EACpB;AAAA,EAEA,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,KAAA,CAAM,iBAAiB,MAAM,CAAA;AAC7B,IAAA,IAAA,CAAK,eAAA,CAAgB,iBAAiB,MAAM,CAAA;AAAA,EAC9C;AAAA,EAEA,MAAM,UAAU,OAAA,EAA0F;AACxG,IAAA,MAAM,UAAA,GAAa,OAAA,EAAS,KAAA,IAASC,UAAAA,EAAW;AAGhD,IAAA,MAAM,MACJ,IAAA,CAAK,IAAA,CAAK,IAAI,UAAU,CAAA,IACxB,IAAI,UAAA,CAAW;AAAA,MACb,YAAY,IAAA,CAAK,EAAA;AAAA,MACjB,KAAA,EAAO,UAAA;AAAA,MACP,iBAAiB,IAAA,CAAK,eAAA;AAAA,MACtB,gBAAgB,IAAA,CAAK,cAAA;AAAA,MACrB,qBAAqB,IAAA,CAAK,mBAAA;AAAA,MAC1B,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,OAAA,EAAS,MAAM,IAAA,CAAK,IAAA,CAAK,OAAO,UAAU,CAAA;AAAA,MAC1C,eAAe,IAAA,CAAK,KAAA;AAAA,MACpB,cAAA,EAAgB,KAAK,OAAA,EAAS,cAAA;AAAA,MAC9B,oBAAoB,IAAA,CAAK;AAAA,KAC1B,CAAA;AAEH,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,UAAA,EAAY,GAAG,CAAA;AAE7B,IAAA,MAAM,qBAAA,GAAwB,IAAA,CAAK,OAAA,EAAS,qBAAA,GAAwB;AAAA,MAClE,gBAAgB,GAAA,CAAI,iBAAA;AAAA,MACpB,aAAa;AAAC,KACf,CAAA;AAED,IAAA,MAAM,yBAAA,GAA4B,MAAM,IAAA,CAAK,6BAAA,CAA8B,YAAY,KAAK,CAAA;AAE5F,IAAA,IAAI,CAAC,6BAA6B,qBAAA,EAAuB;AACvD,MAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,EAAW,EAAG,uBAAA,CAAwB;AAAA,QACvD,cAAc,IAAA,CAAK,EAAA;AAAA,QACnB,KAAA,EAAO,UAAA;AAAA,QACP,QAAA,EAAU;AAAA,UACR,KAAA,EAAO,UAAA;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAO,EAAC;AAAA,UACR,SAAS,EAAC;AAAA,UACV,aAAa,EAAC;AAAA,UACd,qBAAqB,IAAA,CAAK,mBAAA;AAAA,UAC1B,iBAAiB,EAAC;AAAA,UAClB,gBAAgB,EAAC;AAAA,UACjB,cAAc,EAAC;AAAA,UACf,cAAc,EAAC;AAAA,UACf,MAAA,EAAQ,MAAA;AAAA,UACR,KAAA,EAAO,MAAA;AAAA;AAAA,UAEP,SAAA,EAAW,KAAK,GAAA;AAAI;AACtB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAEO,IAAM,UAAA,GAAN,cAMG,GAAA,CAAkD;AAAA,EAC1D,YAAY,MAAA,EAeT;AACD,IAAA,KAAA,CAAM,MAAM,CAAA;AACZ,IAAA,IAAA,CAAK,sBAAsB,MAAA,CAAO,mBAAA;AAAA,EACpC;AAAA,EAEA,MAAM,KAAA,CAAM;AAAA,IACV,SAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF,EAI6D;AAE3D,IAAA,IAAI,IAAA,CAAK,mBAAA,CAAoB,MAAA,KAAW,CAAA,EAAG;AACzC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,KAAA,EAAO;AAC9B,MAAA,MAAM,IAAI,MAAM,+EAA+E,CAAA;AAAA,IACjG;AAEA,IAAA,cAAA,GAAiB,cAAA,IAAkB,IAAI,cAAA,EAAe;AAEtD,IAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,EAAW,EAAG,uBAAA,CAAwB;AAAA,MACvD,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,QAAA,EAAU;AAAA,QACR,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,QAC1B,MAAA,EAAQ,SAAA;AAAA,QACR,OAAO,EAAC;AAAA,QACR,SAAS,EAAC;AAAA,QACV,cAAA,EAAgB,MAAA,CAAO,WAAA,CAAY,cAAA,CAAe,SAAS,CAAA;AAAA,QAC3D,aAAa,EAAC;AAAA,QACd,iBAAiB,EAAC;AAAA,QAClB,gBAAgB,EAAC;AAAA,QACjB,cAAc,EAAC;AAAA,QACf,cAAc,EAAC;AAAA,QACf,SAAA,EAAW,KAAK,GAAA;AAAI;AACtB,KACD,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,cAAA,CAAe,SAAS,CAAA;AAC1D,IAAA,MAAM,oBAAoB,MAAM,IAAA,CAAK,qBAAA,CAAsB,YAAA,IAAgB,EAAE,CAAA;AAE7E,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,eAAA,CAAgB,OAAA,CAIxC;AAAA,MACA,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,OAAO,IAAA,CAAK,cAAA;AAAA,MACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,MAC1B,KAAA,EAAO,cAAA;AAAA,MACP,YAAA,EAAc,iBAAA;AAAA,MACd,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,OAAO,KAAA,EAAe,IAAA,KAAc;AACxC,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,IAAI,CAAA;AAAA,QAC/B,CAAA;AAAA,QACA,EAAA,EAAI,CAAC,KAAA,EAAe,QAAA,KAAkC;AACpD,UAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,QACjC,CAAA;AAAA,QACA,GAAA,EAAK,CAAC,KAAA,EAAe,QAAA,KAAkC;AACrD,UAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AAAA,QAClC,CAAA;AAAA,QACA,IAAA,EAAM,CAAC,KAAA,EAAe,QAAA,KAAkC;AACtD,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,QAAQ,CAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,cAAA;AAAA,MACA,iBAAiB,IAAA,CAAK;AAAA,KACvB,CAAA;AAID,IAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,MAAA,IAAA,CAAK,OAAA,IAAU;AAAA,IACjB;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA,EAIA,MAAM,OAA6C,MAAA,EAWU;AAC3D,IAAA,IAAI,QAAkB,EAAC;AACvB,IAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,MAAA,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,KAAA,GAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,GAAI,OAAO,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG,GAAA;AAAA,QAAI,CAAA,IAAA,KACrE,OAAO,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,EAAM;AAAA,OAC1C;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA,IAC/C;AAEA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,MAAA,EAAQ,UAAA,IAAc,oBAAA,CAAqB;AAAA,MACrE,cAAc,IAAA,CAAK,UAAA;AAAA,MACnB,OAAO,IAAA,CAAK;AAAA,KACb,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,QAAA,EAAU,cAAA,GAAiB,KAAA,CAAM,CAAC,CAAE,CAAA;AACvD,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,8BAAA,EAAiC,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,mCAAmC,IAAA,CAAK,SAAA,CAAU,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,OACnI;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,GAAA;AAAA,MACN,EAAE,QAAQ,EAAE,iBAAA,EAAmB,UAAU,cAAA,EAAgB,cAAA,EAAgB,MAAA,CAAO,cAAA,EAAe,EAAE;AAAA,MACjG,EAAE,OAAO,IAAA;AAAK,KAChB;AAEA,IAAA,MAAM,iBAAA,GAAoB,QAAA,EAAU,cAAA,IAAkB,EAAC;AACvD,IAAA,MAAM,cAAA,GAAiB,IAAI,cAAA,EAAe;AAG1C,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AAC5D,MAAA,cAAA,CAAe,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,IAC/B;AAGA,IAAA,IAAI,OAAO,cAAA,EAAgB;AACzB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,cAAA,CAAe,SAAQ,EAAG;AAC1D,QAAA,cAAA,CAAe,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,MAC/B;AAAA,IACF;AAEA,IAAA,MAAM,gBAAgB,IAAA,CAAK,aAAA,CAAc,KAAA,GAAQ,CAAC,KAAK,EAAE,CAAA;AAEzD,IAAA,MAAM,kBAAkB,MAAM,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,YAAY,aAAa,CAAA;AAEvF,IAAA,MAAM,sBAAA,GAAyB,IAAA,CAAK,eAAA,CACjC,OAAA,CAA2F;AAAA,MAC1F,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,OAAO,IAAA,CAAK,cAAA;AAAA,MACZ,qBAAqB,IAAA,CAAK,mBAAA;AAAA,MAC1B,KAAA,EAAO,eAAA;AAAA,MACP,MAAA,EAAQ;AAAA,QACN,KAAA;AAAA,QACA,aAAa,QAAA,EAAU,OAAA;AAAA,QACvB,aAAA,EAAe,eAAA;AAAA,QACf;AAAA,OACF;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,CAAC,KAAA,EAAe,IAAA,KAAc;AAClC,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,IAAI,CAAA;AAC7B,UAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,QACzB,CAAA;AAAA,QACA,EAAA,EAAI,CAAC,KAAA,EAAe,QAAA,KAAkC;AACpD,UAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,QACjC,CAAA;AAAA,QACA,GAAA,EAAK,CAAC,KAAA,EAAe,QAAA,KAAkC;AACrD,UAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA;AAAA,QAClC,CAAA;AAAA,QACA,IAAA,EAAM,CAAC,KAAA,EAAe,QAAA,KAAkC;AACtD,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,QAAQ,CAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,cAAA;AAAA,MACA,iBAAiB,IAAA,CAAK;AAAA,KACvB,CAAA,CACA,IAAA,CAAK,CAAA,MAAA,KAAU;AACd,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,IAAA,CAAK,iBAAA,IAAoB,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MAC3C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAEH,IAAA,IAAA,CAAK,gBAAA,GAAmB,sBAAA;AAExB,IAAA,OAAO,sBAAA;AAAA,EACT;AAAA,EAEA,MAAM,EAAA,EAAsD;AAC1D,IAAA,MAAM,OAAA,GAAU,OAAO,KAAA,EAAc,GAAA,KAA8B;AACjE,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,EAAA,CAAG,MAAM,IAAI,CAAA;AACb,MAAA,MAAM,GAAA,IAAM;AAAA,IACd,CAAA;AAEA,IAAA,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,SAAA,CAAU,CAAA,mBAAA,EAAsB,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAEzF,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,WAAA,CAAY,CAAA,mBAAA,EAAsB,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IAC7F,CAAA;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,EAAA,EAA+D;AAC9E,IAAA,MAAM,OAAA,GAAU,OAAO,KAAA,EAAc,GAAA,KAA8B;AACjE,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,EAAA,CAAG,MAAM,IAAI,CAAA;AACb,MAAA,MAAM,GAAA,IAAM;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,SAAA,CAAU,CAAA,mBAAA,EAAsB,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,IAAC,CAAC,CAAA;AAE/F,IAAA,OAAO,YAAY;AACjB,MAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,WAAA,CAAY,CAAA,mBAAA,EAAsB,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IACnG,CAAA;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,GAAS;AACb,IAAA,MAAM,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAAA,MAC7C,IAAA,EAAM,iBAAA;AAAA,MACN,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,IAAA,EAAM;AAAA,QACJ,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,OAAO,IAAA,CAAK;AAAA;AACd,KACD,CAAA;AAAA,EACH;AACF;;;ACvpBO,SAAS,kBACd,MAAA,EACA,EAAE,UAAA,EAAY,aAAA,EAAe,gBAAe,EAC3B;AACjB,EAAA,IAAI,QAAA,GAA4B,IAAA;AAEhC,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,MAAA,EAAQ,cAAc,CAAA;AAC/D,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,QAAA,GAAW,cAAA;AAAA,EACb;AAEA,EAAA,QAAA,GAAW,QAAA,IAAY,MAAA,CAAO,WAAA,CAAY,UAAU,CAAA;AACpD,EAAA,MAAM,YAAY,QAAA,CAAS,SAAA;AAC3B,EAAA,IAAI,UAAA,GAAa,SAAA,CAAU,aAAA,CAAc,CAAC,CAAE,CAAA;AAC5C,EAAA,IAAI,UAAA,EAAY,IAAA,KAAS,UAAA,IAAc,UAAA,EAAY,SAAS,aAAA,EAAe;AACzE,IAAA,UAAA,GAAa,UAAA,CAAW,KAAA,CAAM,aAAA,CAAc,CAAC,CAAE,CAAA;AAAA,EACjD;AAEA,EAAA,IAAI,UAAA,EAAY,IAAA,KAAS,MAAA,IAAU,UAAA,EAAY,SAAS,MAAA,EAAQ;AAC9D,IAAA,OAAO,UAAA,CAAW,IAAA;AAAA,EACpB;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,OAAA,CAAQ,UAAoB,aAAA,EAAuE;AACjH,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,MAAM,YAAY,QAAA,CAAS,SAAA;AAC3B,EAAA,IAAI,UAAA,GAAa,SAAA,CAAU,aAAA,CAAc,CAAC,CAAE,CAAA;AAC5C,EAAA,IAAI,UAAA,EAAY,IAAA,KAAS,UAAA,IAAc,UAAA,EAAY,SAAS,aAAA,EAAe;AACzE,IAAA,UAAA,GAAa,UAAA,CAAW,KAAA,CAAM,aAAA,CAAc,CAAC,CAAE,CAAA;AAC/C,IAAA,GAAA,EAAA;AAAA,EACF,CAAA,MAAA,IAAW,UAAA,EAAY,IAAA,KAAS,SAAA,EAAW;AACzC,IAAA,OAAO,UAAA,CAAW,IAAA;AAAA,EACpB;AAEA,EAAA,IAAI,EAAE,UAAA,EAAY,IAAA,KAAS,MAAA,IAAU,UAAA,EAAY,SAAS,MAAA,CAAA,EAAS;AACjE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,sBAAsB,eAAA,EAAiB;AACzC,IAAA,OAAO,QAAQ,UAAA,EAAY,aAAA,CAAc,KAAA,CAAM,GAAA,GAAM,CAAC,CAAC,CAAA;AAAA,EACzD;AAEA,EAAA,OAAO,UAAA,CAAW,IAAA;AACpB;AAEO,SAAS,iBAAiB,IAAA,EAA0B;AACzD,EAAA,OAAO,KAAK,IAAA,KAAS,MAAA,IAAU,KAAK,IAAA,KAAS,MAAA,IAAU,KAAK,IAAA,KAAS,SAAA;AACvE;;;AC3CO,IAAM,sBAAA,GAAN,cAAqC,eAAA,CAAgB;AAAA,EAChD,cAAA;AAAA,EAEV,WAAA,CAAY;AAAA,IACV,MAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF,EAIG;AACD,IAAA,KAAA,CAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AACzB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AAAA,EACxB;AAAA,EAEA,iBAAiB,MAAA,EAAgB;AAC/B,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,MAAM,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,QAAyB,MAAA,EAsBV;AACnB,IAAA,MAAM,MAAA,GAAS,KAAK,MAAA,EAAQ,MAAA;AAC5B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,IACvE;AAEA,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAQ,WAAA,CAAY,OAAO,UAAU,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAC9F,MAAA,MAAM,aAAa,MAAA,CAAO,MAAA,CAAO,WAAA,CAAY,QAAA,EAAU,MAAM,OAAO,CAAA;AAEpE,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,iBAAA;AAAA,QACN,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,aAAA,EAAe,OAAO,MAAA,CAAO,UAAA;AAAA,UAC7B,WAAA,EAAa,OAAO,MAAA,CAAO,WAAA;AAAA,UAC3B,WAAA,EAAa,OAAO,MAAA,CAAO,KAAA;AAAA,UAC3B,YAAY,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,UAC7D,UAAA,EAAY,OAAO,MAAA,CAAO,aAAA;AAAA,UAC1B,gBAAgB,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AAAA,UAClE,QAAQ,MAAA,CAAO;AAAA;AACjB,OACD,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,OAAO,UAAA,EAAY;AAC5B,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAQ,WAAA,CAAY,OAAO,UAAU,CAAA,EAAG,MAAA,CAAO,UAAA,CAAW,aAAa,CAAA;AACrG,MAAA,MAAM,aAAa,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,QAAA,EAAU,MAAM,OAAO,CAAA;AACxE,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,gBAAA;AAAA,QACN,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,aAAA,EAAe,OAAO,UAAA,CAAW,aAAA;AAAA,UACjC,WAAA,EAAa,OAAO,UAAA,CAAW,WAAA;AAAA,UAC/B,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,YAAY,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,YAAY,OAAA,EAAQ;AAAA,UAC7D,gBAAgB,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AAAA,UAClE,QAAQ,MAAA,CAAO;AAAA;AACjB,OACD,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,CAAO,QAAQ,WAAA,EAAa;AAAA,QAChC,IAAA,EAAM,gBAAA;AAAA,QACN,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ,YAAY,MAAA,CAAO,UAAA;AAAA,UACnB,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,YAAY,EAAE,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,OAAO,KAAA,EAAM;AAAA,UACtD,gBAAgB,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,cAAA,CAAe,SAAS,CAAA;AAAA,UAClE,QAAQ,MAAA,CAAO;AAAA;AACjB,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW;AACnD,MAAA,MAAM,QAAA,GAAW,OAAO,KAAA,EAAc,GAAA,KAA8B;AAClE,QAAA,IAAI,KAAA,CAAM,KAAA,KAAU,MAAA,CAAO,KAAA,EAAO;AAChC,UAAA,MAAM,GAAA,IAAM;AACZ,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,eAAA,EAAiB,kBAAkB,EAAE,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG;AAC9E,UAAA,MAAM,GAAA,IAAM;AACZ,UAAA,MAAM,MAAA,CAAO,WAAA,CAAY,kBAAA,EAAoB,QAAQ,CAAA;AACrD,UAAA,OAAA,CAAQ,MAAM,IAAI,CAAA;AAClB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,GAAA,IAAM;AAAA,MACd,CAAA;AAEA,MAAA,MAAA,CAAO,SAAA,CAAU,kBAAA,EAAoB,QAAQ,CAAA,CAAE,MAAM,MAAM;AAAA,MAAC,CAAC,CAAA;AAAA,IAC/D,CAAC,CAAA;AAED,IAAA,IAAI,UAAA,CAAW,UAAA,CAAW,MAAA,KAAW,QAAA,EAAU;AAC7C,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,QAAA;AAAA,QACR,KAAA,EAAO,WAAW,UAAA,CAAW,KAAA;AAAA,QAC7B,OAAO,UAAA,CAAW;AAAA,OACpB;AAAA,IACF,CAAA,MAAA,IAAW,UAAA,CAAW,UAAA,CAAW,MAAA,KAAW,WAAA,EAAa;AACvD,MAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,CACzD,GAAA,CAAI,CAAC,CAAC,OAAA,EAAS,UAAU,CAAA,KAAqB;AAC7C,QAAA,IAAI,UAAA,CAAW,WAAW,WAAA,EAAa;AACrC,UAAA,OAAO,UAAA,CAAW,cAAA,EAAgB,eAAA,EAAiB,IAAA,IAAQ,EAAC;AAAA,QAC9D;AAEA,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA;AACjB,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,WAAA;AAAA,QACR,OAAO,UAAA,CAAW,WAAA;AAAA,QAClB,SAAA,EAAW;AAAA,OACb;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,WAAW,UAAA,CAAW,MAAA;AAAA,MAC9B,MAAA,EAAQ,WAAW,UAAA,EAAY,MAAA;AAAA,MAC/B,OAAO,UAAA,CAAW;AAAA,KACpB;AAAA,EACF;AACF","file":"chunk-6GOLI2EY.js","sourcesContent":["import EventEmitter from 'node:events';\nimport { MastraBase } from '../../base';\nimport type { RequestContext } from '../../di';\nimport { getErrorFromUnknown } from '../../error/utils.js';\nimport type { PubSub } from '../../events';\nimport { RegisteredLogger } from '../../logger';\nimport type { Mastra } from '../../mastra';\nimport { EMITTER_SYMBOL, STREAM_FORMAT_SYMBOL } from '../constants';\nimport { getStepResult } from '../step';\nimport type { LoopConditionFunction, Step } from '../step';\nimport type { Emitter, StepFlowEntry, StepResult } from '../types';\nimport {\n validateStepInput,\n createDeprecationProxy,\n runCountDeprecationMessage,\n validateStepSuspendData,\n} from '../utils';\n\nexport class StepExecutor extends MastraBase {\n protected mastra?: Mastra;\n constructor({ mastra }: { mastra?: Mastra }) {\n super({ name: 'StepExecutor', component: RegisteredLogger.WORKFLOW });\n this.mastra = mastra;\n }\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n }\n\n async execute(params: {\n workflowId: string;\n step: Step<any, any, any, any>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n state: Record<string, any>;\n emitter: EventEmitter;\n requestContext: RequestContext;\n retryCount?: number;\n foreachIdx?: number;\n validateInputs?: boolean;\n }): Promise<StepResult<any, any, any, any>> {\n const { step, stepResults, runId, requestContext, retryCount = 0 } = params;\n\n const abortController = new AbortController();\n\n let suspended: { payload: any } | undefined;\n let bailed: { payload: any } | undefined;\n const startedAt = Date.now();\n const { inputData, validationError } = await validateStepInput({\n prevOutput: typeof params.foreachIdx === 'number' ? params.input?.[params.foreachIdx] : params.input,\n step,\n validateInputs: params.validateInputs ?? true,\n });\n\n let stepInfo: {\n startedAt: number;\n payload: any;\n resumePayload?: any;\n resumedAt?: number;\n [key: string]: any;\n } = {\n ...stepResults[step.id],\n startedAt,\n payload: (typeof params.foreachIdx === 'number' ? params.input : inputData) ?? {},\n };\n\n if (params.resumeData) {\n delete stepInfo.suspendPayload?.['__workflow_meta'];\n stepInfo.resumePayload = params.resumeData;\n stepInfo.resumedAt = Date.now();\n }\n\n // Extract suspend data if this step was previously suspended\n let suspendDataToUse =\n params.stepResults[step.id]?.status === 'suspended' ? params.stepResults[step.id]?.suspendPayload : undefined;\n\n // Filter out internal workflow metadata before exposing to step code\n if (suspendDataToUse && '__workflow_meta' in suspendDataToUse) {\n const { __workflow_meta, ...userSuspendData } = suspendDataToUse;\n suspendDataToUse = userSuspendData;\n }\n\n try {\n if (validationError) {\n throw validationError;\n }\n\n const stepResult = await step.execute(\n createDeprecationProxy(\n {\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n requestContext,\n inputData,\n state: params.state,\n setState: (state: any) => {\n // TODO\n params.state = state;\n },\n retryCount,\n resumeData: params.resumeData,\n suspendData: suspendDataToUse,\n getInitData: () => stepResults?.input as any,\n getStepResult: getStepResult.bind(this, stepResults),\n suspend: async (suspendPayload: any): Promise<any> => {\n const { suspendData, validationError } = await validateStepSuspendData({\n suspendData: suspendPayload,\n step,\n });\n if (validationError) {\n throw validationError;\n }\n suspended = { payload: { ...suspendData, __workflow_meta: { runId, path: [step.id] } } };\n },\n bail: (result: any) => {\n bailed = { payload: result };\n },\n // TODO\n writer: undefined as any,\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: params.emitter as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n [STREAM_FORMAT_SYMBOL]: undefined, // TODO\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n },\n {\n paramName: 'runCount',\n deprecationMessage: runCountDeprecationMessage,\n logger: this.logger,\n },\n ),\n );\n\n const endedAt = Date.now();\n\n let finalResult: StepResult<any, any, any, any>;\n if (suspended) {\n finalResult = {\n ...stepInfo,\n status: 'suspended',\n suspendedAt: endedAt,\n ...(stepResult ? { suspendOutput: stepResult } : {}),\n };\n\n if (suspended.payload) {\n finalResult.suspendPayload = suspended.payload;\n }\n } else if (bailed) {\n finalResult = {\n ...stepInfo,\n // @ts-ignore\n status: 'bailed',\n endedAt,\n output: bailed.payload,\n };\n } else {\n finalResult = {\n ...stepInfo,\n status: 'success',\n endedAt,\n output: stepResult,\n };\n }\n\n return finalResult;\n } catch (error: any) {\n const endedAt = Date.now();\n\n const errorInstance = getErrorFromUnknown(error, {\n includeStack: false,\n fallbackMessage: 'Unknown step execution error',\n });\n\n return {\n ...stepInfo,\n status: 'failed',\n endedAt,\n error: `Error: ${errorInstance.message}`,\n };\n }\n }\n\n async evaluateConditions(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'conditional' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n state: Record<string, any>;\n emitter: { runtime: PubSub; events: PubSub };\n requestContext: RequestContext;\n retryCount?: number;\n }): Promise<number[]> {\n const { step, stepResults, runId, requestContext, retryCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n const results = await Promise.all(\n step.conditions.map(condition => {\n try {\n return this.evaluateCondition({\n workflowId: params.workflowId,\n condition,\n runId,\n requestContext,\n inputData: params.input,\n state: params.state,\n retryCount,\n resumeData: params.resumeData,\n abortController,\n stepResults,\n emitter: ee,\n iterationCount: 0,\n });\n } catch (e) {\n console.error('error evaluating condition', e);\n return false;\n }\n }),\n );\n\n const idxs = results.reduce((acc, result, idx) => {\n if (result) {\n acc.push(idx);\n }\n\n return acc;\n }, [] as number[]);\n\n return idxs;\n }\n\n async evaluateCondition({\n workflowId,\n condition,\n runId,\n inputData,\n resumeData,\n stepResults,\n state,\n requestContext,\n emitter,\n abortController,\n retryCount = 0,\n iterationCount,\n }: {\n workflowId: string;\n condition: LoopConditionFunction<any, any, any, any, any>;\n runId: string;\n inputData?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n state: Record<string, any>;\n emitter: EventEmitter;\n requestContext: RequestContext;\n abortController: AbortController;\n retryCount?: number;\n iterationCount: number;\n }): Promise<boolean> {\n return condition(\n createDeprecationProxy(\n {\n workflowId,\n runId,\n mastra: this.mastra!,\n requestContext,\n inputData,\n state,\n setState: (_state: any) => {\n // TODO\n },\n retryCount,\n resumeData: resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: getStepResult.bind(this, stepResults),\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n // TODO\n writer: undefined as any,\n abort: () => {\n abortController?.abort();\n },\n [EMITTER_SYMBOL]: emitter as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n [STREAM_FORMAT_SYMBOL]: undefined, // TODO\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n iterationCount,\n },\n {\n paramName: 'runCount',\n deprecationMessage: runCountDeprecationMessage,\n logger: this.logger,\n },\n ),\n );\n }\n\n async resolveSleep(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'sleep' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: { runtime: PubSub; events: PubSub };\n requestContext: RequestContext;\n retryCount?: number;\n }): Promise<number> {\n const { step, stepResults, runId, requestContext, retryCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n if (step.duration) {\n return step.duration;\n }\n\n if (!step.fn) {\n return 0;\n }\n\n try {\n return await step.fn(\n createDeprecationProxy(\n {\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n requestContext,\n inputData: params.input,\n // TODO: implement state\n state: {},\n setState: (_state: any) => {\n // TODO\n },\n retryCount,\n resumeData: params.resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: getStepResult.bind(this, stepResults),\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n abort: () => {\n abortController?.abort();\n },\n // TODO\n writer: undefined as any,\n [EMITTER_SYMBOL]: ee as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n [STREAM_FORMAT_SYMBOL]: undefined, // TODO\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n },\n {\n paramName: 'runCount',\n deprecationMessage: runCountDeprecationMessage,\n logger: this.logger,\n },\n ),\n );\n } catch (e) {\n console.error('error evaluating condition', e);\n return 0;\n }\n }\n\n async resolveSleepUntil(params: {\n workflowId: string;\n step: Extract<StepFlowEntry, { type: 'sleepUntil' }>;\n runId: string;\n input?: any;\n resumeData?: any;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n emitter: { runtime: PubSub; events: PubSub };\n requestContext: RequestContext;\n retryCount?: number;\n }): Promise<number> {\n const { step, stepResults, runId, requestContext, retryCount = 0 } = params;\n\n const abortController = new AbortController();\n const ee = new EventEmitter();\n\n if (step.date) {\n return step.date.getTime() - Date.now();\n }\n\n if (!step.fn) {\n return 0;\n }\n\n try {\n const result = await step.fn(\n createDeprecationProxy(\n {\n workflowId: params.workflowId,\n runId,\n mastra: this.mastra!,\n requestContext,\n inputData: params.input,\n // TODO: implement state\n state: {},\n setState: (_state: any) => {\n // TODO\n },\n retryCount,\n resumeData: params.resumeData,\n getInitData: () => stepResults?.input as any,\n getStepResult: getStepResult.bind(this, stepResults),\n suspend: async (_suspendPayload: any): Promise<any> => {\n throw new Error('Not implemented');\n },\n bail: (_result: any) => {\n throw new Error('Not implemented');\n },\n abort: () => {\n abortController?.abort();\n },\n // TODO\n writer: undefined as any,\n [EMITTER_SYMBOL]: ee as unknown as Emitter, // TODO: refactor this to use our PubSub actually\n [STREAM_FORMAT_SYMBOL]: undefined, // TODO\n engine: {},\n abortSignal: abortController?.signal,\n // TODO\n tracingContext: {},\n },\n {\n paramName: 'runCount',\n deprecationMessage: runCountDeprecationMessage,\n logger: this.logger,\n },\n ),\n );\n\n return result.getTime() - Date.now();\n } catch (e) {\n console.error('error evaluating condition', e);\n return 0;\n }\n }\n}\n","import type { Mastra } from '../mastra';\nimport type { Event } from './types';\n\nexport abstract class EventProcessor {\n protected mastra: Mastra;\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n }\n\n constructor({ mastra }: { mastra: Mastra }) {\n this.mastra = mastra;\n }\n\n protected abstract process(event: Event): Promise<void>;\n}\n","import EventEmitter from 'node:events';\nimport type { StepFlowEntry, StepResult } from '../..';\nimport { RequestContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { Mastra } from '../../../mastra';\nimport type { StepExecutor } from '../step-executor';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowLoop(\n {\n workflowId,\n prevResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n resumeData,\n parentWorkflow,\n requestContext,\n retryCount = 0,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n stepResult,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'loop' }>;\n stepResult: StepResult<any, any, any, any>;\n },\n) {\n const loopCondition = await stepExecutor.evaluateCondition({\n workflowId,\n condition: step.condition,\n runId,\n stepResults,\n // TODO: implement state\n state: {},\n emitter: new EventEmitter() as any, // TODO\n requestContext: new RequestContext(), // TODO\n inputData: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n abortController: new AbortController(),\n retryCount,\n iterationCount: 0, //TODO: implement\n });\n\n if (step.loopType === 'dountil') {\n if (loopCondition) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n requestContext,\n retryCount,\n },\n });\n }\n } else {\n if (loopCondition) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n requestContext,\n retryCount,\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n }\n }\n}\n\nexport async function processWorkflowForEach(\n {\n workflowId,\n prevResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n resumeData,\n parentWorkflow,\n requestContext,\n }: ProcessorArgs,\n {\n pubsub,\n mastra,\n step,\n }: {\n pubsub: PubSub;\n mastra: Mastra;\n step: Extract<StepFlowEntry, { type: 'foreach' }>;\n },\n) {\n const currentResult: Extract<StepResult<any, any, any, any>, { status: 'success' }> = stepResults[\n step.step.id\n ] as any;\n\n const idx = currentResult?.output?.length ?? 0;\n const targetLen = (prevResult as any)?.output?.length ?? 0;\n\n if (idx >= targetLen && currentResult.output.filter((r: any) => r !== null).length >= targetLen) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n stepResults,\n timeTravel,\n prevResult: currentResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n\n return;\n } else if (idx >= targetLen) {\n // wait for the 'null' values to be filled from the concurrent run\n return;\n }\n\n if (executionPath.length === 1 && idx === 0) {\n // on first iteratation we need to kick off up to the set concurrency\n const concurrency = Math.min(step.opts.concurrency ?? 1, targetLen);\n const dummyResult = Array.from({ length: concurrency }, () => null);\n\n await mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflowId,\n runId,\n stepId: step.step.id,\n result: {\n status: 'succcess',\n output: dummyResult as any,\n startedAt: Date.now(),\n payload: (prevResult as any)?.output,\n } as any,\n requestContext,\n });\n\n for (let i = 0; i < concurrency; i++) {\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: [executionPath[0]!, i],\n resumeSteps,\n stepResults,\n timeTravel,\n prevResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n }\n\n return;\n }\n\n (currentResult as any).output.push(null);\n await mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflowId,\n runId,\n stepId: step.step.id,\n result: {\n status: 'succcess',\n output: (currentResult as any).output,\n startedAt: Date.now(),\n payload: (prevResult as any)?.output,\n } as any,\n requestContext,\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: [executionPath[0]!, idx],\n resumeSteps,\n timeTravel,\n stepResults,\n prevResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n}\n","import EventEmitter from 'node:events';\nimport type { StepFlowEntry } from '../..';\nimport { RequestContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { StepExecutor } from '../step-executor';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowParallel(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n }: ProcessorArgs,\n {\n pubsub,\n step,\n }: {\n pubsub: PubSub;\n step: Extract<StepFlowEntry, { type: 'parallel' }>;\n },\n) {\n for (let i = 0; i < step.steps.length; i++) {\n const nestedStep = step.steps[i];\n if (nestedStep?.type === 'step') {\n activeSteps[nestedStep.step.id] = true;\n }\n }\n\n await Promise.all(\n step.steps.map(async (_step, idx) => {\n return pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n prevResult,\n resumeData,\n timeTravel,\n parentWorkflow,\n activeSteps,\n requestContext,\n },\n });\n }),\n );\n}\n\nexport async function processWorkflowConditional(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'conditional' }>;\n },\n) {\n const idxs = await stepExecutor.evaluateConditions({\n workflowId,\n step,\n runId,\n stepResults,\n // TODO: implement state\n state: {},\n emitter: new EventEmitter() as any, // TODO\n requestContext: new RequestContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n const truthyIdxs: Record<number, boolean> = {};\n for (let i = 0; i < idxs.length; i++) {\n truthyIdxs[idxs[i]!] = true;\n }\n\n await Promise.all(\n step.steps.map(async (step, idx) => {\n if (truthyIdxs[idx]) {\n if (step?.type === 'step') {\n activeSteps[step.step.id] = true;\n }\n return pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n requestContext,\n },\n });\n } else {\n return pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.concat([idx]),\n resumeSteps,\n stepResults,\n prevResult: { status: 'skipped' },\n resumeData,\n parentWorkflow,\n activeSteps,\n requestContext,\n },\n });\n }\n }),\n );\n}\n","import EventEmitter from 'node:events';\nimport type { StepFlowEntry, WorkflowRunState } from '../..';\nimport { RequestContext } from '../../../di';\nimport type { PubSub } from '../../../events';\nimport type { StepExecutor } from '../step-executor';\nimport { getStep } from './utils';\nimport type { ProcessorArgs } from '.';\n\nexport async function processWorkflowWaitForEvent(\n workflowData: ProcessorArgs,\n {\n pubsub,\n eventName,\n currentState,\n }: {\n pubsub: PubSub;\n eventName: string;\n currentState: WorkflowRunState;\n },\n) {\n const executionPath = currentState?.waitingPaths[eventName];\n if (!executionPath) {\n return;\n }\n\n const currentStep = getStep(workflowData.workflow, executionPath);\n const prevResult = {\n status: 'success',\n output: currentState?.context[currentStep?.id ?? 'input']?.payload,\n };\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId: workflowData.runId,\n data: {\n workflowId: workflowData.workflowId,\n runId: workflowData.runId,\n executionPath,\n resumeSteps: [],\n resumeData: workflowData.resumeData,\n parentWorkflow: workflowData.parentWorkflow,\n stepResults: currentState?.context,\n prevResult,\n activeSteps: [],\n requestContext: currentState?.requestContext,\n },\n });\n}\n\nexport async function processWorkflowSleep(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'sleep' }>;\n },\n) {\n const startedAt = Date.now();\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-waiting',\n payload: {\n id: step.id,\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n },\n },\n });\n\n const duration = await stepExecutor.resolveSleep({\n workflowId,\n step,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n requestContext: new RequestContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n setTimeout(\n async () => {\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-result',\n payload: {\n id: step.id,\n status: 'success',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n output: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n endedAt: Date.now(),\n },\n },\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n },\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n timeTravel,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n requestContext,\n },\n });\n },\n duration < 0 ? 0 : duration,\n );\n}\n\nexport async function processWorkflowSleepUntil(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n }: ProcessorArgs,\n {\n pubsub,\n stepExecutor,\n step,\n }: {\n pubsub: PubSub;\n stepExecutor: StepExecutor;\n step: Extract<StepFlowEntry, { type: 'sleepUntil' }>;\n },\n) {\n const startedAt = Date.now();\n const duration = await stepExecutor.resolveSleepUntil({\n workflowId,\n step,\n runId,\n stepResults,\n emitter: new EventEmitter() as any, // TODO\n requestContext: new RequestContext(), // TODO\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n resumeData,\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-waiting',\n payload: {\n id: step.id,\n status: 'waiting',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n },\n },\n });\n\n setTimeout(\n async () => {\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-result',\n payload: {\n id: step.id,\n status: 'success',\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n output: prevResult.status === 'success' ? prevResult.output : undefined,\n startedAt,\n endedAt: Date.now(),\n },\n },\n });\n\n await pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-finish',\n payload: {\n id: step.id,\n metadata: {},\n },\n },\n });\n\n await pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n timeTravel,\n stepResults,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n requestContext,\n },\n });\n },\n duration < 0 ? 0 : duration,\n );\n}\n","import { randomUUID } from 'node:crypto';\nimport EventEmitter from 'node:events';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../../../error';\nimport { EventProcessor } from '../../../events/processor';\nimport type { Event } from '../../../events/types';\nimport type { Mastra } from '../../../mastra';\nimport { RequestContext } from '../../../request-context/';\nimport type { StepFlowEntry, StepResult, TimeTravelExecutionParams, WorkflowRunState } from '../../../workflows/types';\nimport type { Workflow } from '../../../workflows/workflow';\nimport { createTimeTravelExecutionParams, validateStepResumeData } from '../../utils';\nimport { StepExecutor } from '../step-executor';\nimport { EventedWorkflow } from '../workflow';\nimport { processWorkflowForEach, processWorkflowLoop } from './loop';\nimport { processWorkflowConditional, processWorkflowParallel } from './parallel';\nimport { processWorkflowSleep, processWorkflowSleepUntil, processWorkflowWaitForEvent } from './sleep';\nimport { getNestedWorkflow, getStep, isExecutableStep } from './utils';\n\nexport type ProcessorArgs = {\n activeSteps: Record<string, boolean>;\n workflow: Workflow;\n workflowId: string;\n runId: string;\n executionPath: number[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumeSteps: string[];\n prevResult: StepResult<any, any, any, any>;\n requestContext: Record<string, any>;\n timeTravel?: TimeTravelExecutionParams;\n resumeData?: any;\n parentWorkflow?: ParentWorkflow;\n parentContext?: {\n workflowId: string;\n input: any;\n };\n retryCount?: number;\n};\n\nexport type ParentWorkflow = {\n workflowId: string;\n runId: string;\n executionPath: number[];\n resume: boolean;\n stepResults: Record<string, StepResult<any, any, any, any>>;\n parentWorkflow?: ParentWorkflow;\n stepId: string;\n};\n\nexport class WorkflowEventProcessor extends EventProcessor {\n private stepExecutor: StepExecutor;\n\n constructor({ mastra }: { mastra: Mastra }) {\n super({ mastra });\n this.stepExecutor = new StepExecutor({ mastra });\n }\n\n __registerMastra(mastra: Mastra) {\n super.__registerMastra(mastra);\n this.stepExecutor.__registerMastra(mastra);\n }\n\n private async errorWorkflow(\n {\n parentWorkflow,\n workflowId,\n runId,\n resumeSteps,\n stepResults,\n resumeData,\n requestContext,\n }: Omit<ProcessorArgs, 'workflow'>,\n e: Error,\n ) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.fail',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: [],\n resumeSteps,\n stepResults,\n prevResult: { status: 'failed', error: e.stack ?? e.message },\n requestContext,\n resumeData,\n activeSteps: {},\n parentWorkflow: parentWorkflow,\n },\n });\n }\n\n protected async processWorkflowCancel({ workflowId, runId }: ProcessorArgs) {\n const currentState = await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'canceled',\n },\n });\n\n await this.endWorkflow({\n workflow: undefined as any,\n workflowId,\n runId,\n stepResults: currentState?.context as any,\n prevResult: { status: 'canceled' } as any,\n requestContext: currentState?.requestContext as any,\n executionPath: [],\n activeSteps: {},\n resumeSteps: [],\n resumeData: undefined,\n parentWorkflow: undefined,\n });\n }\n\n protected async processWorkflowStart({\n workflow,\n parentWorkflow,\n workflowId,\n runId,\n resumeSteps,\n prevResult,\n resumeData,\n timeTravel,\n executionPath,\n stepResults,\n requestContext,\n }: ProcessorArgs) {\n await this.mastra.getStorage()?.persistWorkflowSnapshot({\n workflowName: workflow.id,\n runId,\n snapshot: {\n activePaths: [],\n suspendedPaths: {},\n resumeLabels: {},\n waitingPaths: {},\n activeStepsPath: {},\n serializedStepGraph: workflow.serializedStepGraph,\n timestamp: Date.now(),\n runId,\n context: stepResults ?? {\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n },\n status: 'running',\n value: {},\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath ?? [0],\n resumeSteps,\n stepResults: stepResults ?? {\n input: prevResult?.status === 'success' ? prevResult.output : undefined,\n },\n prevResult,\n timeTravel,\n requestContext,\n resumeData,\n activeSteps: {},\n },\n });\n }\n\n protected async endWorkflow(args: ProcessorArgs) {\n const { workflowId, runId, prevResult } = args;\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'success',\n result: prevResult,\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-finish',\n payload: {\n runId,\n },\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.end',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowEnd(args: ProcessorArgs) {\n const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, requestContext, runId, timeTravel } =\n args;\n\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult,\n resumeData,\n activeSteps,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n requestContext,\n timeTravel,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.end',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowSuspend(args: ProcessorArgs) {\n const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runId, requestContext, timeTravel } =\n args;\n\n // TODO: if there are still active paths don't end the workflow yet\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult: {\n ...prevResult,\n suspendPayload: {\n ...prevResult.suspendPayload,\n __workflow_meta: {\n runId: runId,\n path: parentWorkflow?.stepId\n ? [parentWorkflow.stepId].concat(prevResult.suspendPayload?.__workflow_meta?.path ?? [])\n : (prevResult.suspendPayload?.__workflow_meta?.path ?? []),\n },\n },\n },\n timeTravel,\n resumeData,\n activeSteps,\n requestContext,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.suspend',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowFail(args: ProcessorArgs) {\n const {\n workflowId,\n runId,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n activeSteps,\n requestContext,\n timeTravel,\n } = args;\n\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'failed',\n error: (prevResult as any).error,\n },\n });\n\n // handle nested workflow\n if (parentWorkflow) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n workflowId: parentWorkflow.workflowId,\n runId: parentWorkflow.runId,\n executionPath: parentWorkflow.executionPath,\n resumeSteps,\n stepResults: parentWorkflow.stepResults,\n prevResult,\n timeTravel,\n resumeData,\n activeSteps,\n requestContext,\n parentWorkflow: parentWorkflow.parentWorkflow,\n parentContext: parentWorkflow,\n },\n });\n }\n\n await this.mastra.pubsub.publish('workflows-finish', {\n type: 'workflow.fail',\n runId,\n data: { ...args, workflow: undefined },\n });\n }\n\n protected async processWorkflowStepRun({\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n retryCount = 0,\n }: ProcessorArgs) {\n let stepGraph: StepFlowEntry[] = workflow.stepGraph;\n\n if (!executionPath?.length) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Execution path is empty: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n let step: StepFlowEntry | undefined = stepGraph[executionPath[0]!];\n\n if (!step) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step not found in step graph: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if ((step.type === 'parallel' || step.type === 'conditional') && executionPath.length > 1) {\n step = step.steps[executionPath[1]!] as StepFlowEntry;\n } else if (step.type === 'parallel') {\n return processWorkflowParallel(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n {\n pubsub: this.mastra.pubsub,\n step,\n },\n );\n } else if (step?.type === 'conditional') {\n return processWorkflowConditional(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'sleep') {\n return processWorkflowSleep(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'sleepUntil') {\n return processWorkflowSleepUntil(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n },\n );\n } else if (step?.type === 'foreach' && executionPath.length === 1) {\n return processWorkflowForEach(\n {\n workflow,\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n timeTravel,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n {\n pubsub: this.mastra.pubsub,\n mastra: this.mastra,\n step,\n },\n );\n }\n\n if (!isExecutableStep(step)) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step is not executable: ${step?.type} -- ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n activeSteps[step.step.id] = true;\n\n // Run nested workflow\n if (step.step instanceof EventedWorkflow) {\n if (resumeSteps?.length > 1) {\n const stepData = stepResults[step.step.id];\n const nestedRunId = stepData?.suspendPayload?.__workflow_meta?.runId;\n if (!nestedRunId) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n prevResult,\n resumeData,\n parentWorkflow,\n requestContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Nested workflow run id not found: ${JSON.stringify(stepResults)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n const snapshot = await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.step.id,\n runId: nestedRunId,\n });\n\n const nestedStepResults = snapshot?.context;\n const nestedSteps = resumeSteps.slice(1);\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.resume',\n runId,\n data: {\n workflowId: step.step.id,\n parentWorkflow: {\n stepId: step.step.id,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n input: prevResult,\n parentWorkflow,\n },\n executionPath: snapshot?.suspendedPaths?.[nestedSteps[0]!] as any,\n runId: nestedRunId,\n resumeSteps: nestedSteps,\n stepResults: nestedStepResults,\n prevResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n } else if (timeTravel && timeTravel.steps?.length > 1 && timeTravel.steps[0] === step.step.id) {\n const snapshot =\n (await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: step.step.id,\n runId,\n })) ?? ({ context: {} } as WorkflowRunState);\n\n const timeTravelParams = createTimeTravelExecutionParams({\n steps: timeTravel.steps.slice(1),\n inputData: timeTravel.inputData,\n resumeData: timeTravel.resumeData,\n context: (timeTravel.nestedStepResults?.[step.step.id] ?? {}) as any,\n nestedStepsContext: (timeTravel.nestedStepResults ?? {}) as any,\n snapshot,\n graph: step.step.buildExecutionGraph(),\n });\n\n const nestedPrevStep = getStep(step.step, timeTravelParams.executionPath);\n const nestedPrevResult = timeTravelParams.stepResults[nestedPrevStep?.id ?? 'input'];\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.start',\n runId,\n data: {\n workflowId: step.step.id,\n parentWorkflow: {\n stepId: step.step.id,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n timeTravel,\n input: prevResult,\n parentWorkflow,\n },\n executionPath: timeTravelParams.executionPath,\n runId: randomUUID(),\n stepResults: timeTravelParams.stepResults,\n prevResult: { status: 'success', output: nestedPrevResult?.payload },\n timeTravel: timeTravelParams,\n activeSteps,\n requestContext,\n },\n });\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.start',\n runId,\n data: {\n workflowId: step.step.id,\n parentWorkflow: {\n stepId: step.step.id,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n input: prevResult,\n parentWorkflow,\n },\n executionPath: [0],\n runId: randomUUID(),\n resumeSteps,\n prevResult,\n resumeData,\n activeSteps,\n requestContext,\n },\n });\n }\n\n return;\n }\n\n if (step.type === 'step') {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-start',\n payload: {\n id: step.step.id,\n startedAt: Date.now(),\n payload: prevResult.status === 'success' ? prevResult.output : undefined,\n status: 'running',\n },\n },\n });\n }\n\n const ee = new EventEmitter();\n ee.on('watch', async (event: any) => {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: event,\n });\n });\n const rc = new RequestContext();\n for (const [key, value] of Object.entries(requestContext)) {\n rc.set(key, value);\n }\n const { resumeData: timeTravelResumeData, validationError: timeTravelResumeValidationError } =\n await validateStepResumeData({\n resumeData: timeTravel?.stepResults[step.step.id]?.status === 'suspended' ? timeTravel?.resumeData : undefined,\n step: step.step,\n });\n\n let resumeDataToUse;\n if (timeTravelResumeData && !timeTravelResumeValidationError) {\n resumeDataToUse = timeTravelResumeData;\n } else if (timeTravelResumeData && timeTravelResumeValidationError) {\n this.mastra.getLogger()?.warn('Time travel resume data validation failed', {\n stepId: step.step.id,\n error: timeTravelResumeValidationError.message,\n });\n } else if (resumeSteps?.length > 0 && resumeSteps?.[0] === step.step.id) {\n resumeDataToUse = resumeData;\n }\n\n const stepResult = await this.stepExecutor.execute({\n workflowId,\n step: step.step,\n runId,\n stepResults,\n // TODO: implement state\n state: {},\n emitter: ee,\n requestContext: rc,\n input: (prevResult as any)?.output,\n resumeData: resumeDataToUse,\n retryCount,\n foreachIdx: step.type === 'foreach' ? executionPath[1] : undefined,\n validateInputs: workflow.options.validateInputs,\n });\n requestContext = Object.fromEntries(rc.entries());\n\n // @ts-ignore\n if (stepResult.status === 'bailed') {\n // @ts-ignore\n stepResult.status = 'success';\n\n await this.endWorkflow({\n workflow,\n resumeData,\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults: {\n ...stepResults,\n [step.step.id]: stepResult,\n },\n prevResult: stepResult,\n activeSteps,\n requestContext,\n });\n return;\n }\n\n if (stepResult.status === 'failed') {\n if (retryCount >= (workflow.retryConfig.attempts ?? 0)) {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult: stepResult,\n activeSteps,\n requestContext,\n },\n });\n } else {\n return this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n timeTravel,\n prevResult,\n activeSteps,\n requestContext,\n retryCount: retryCount + 1,\n },\n });\n }\n }\n\n if (step.type === 'loop') {\n //timeTravel is not passed to the processWorkflowLoop function becuase the step already ran the first time\n // with whatever information it needs from timeTravel, subsequent loop runs use the previous loop run result as it's input.\n await processWorkflowLoop(\n {\n workflow,\n workflowId,\n prevResult: stepResult,\n runId,\n executionPath,\n stepResults,\n activeSteps,\n resumeSteps,\n resumeData,\n parentWorkflow,\n requestContext,\n retryCount: retryCount + 1,\n },\n {\n pubsub: this.mastra.pubsub,\n stepExecutor: this.stepExecutor,\n step,\n stepResult,\n },\n );\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n timeTravel, //timeTravel is passed in as workflow.step.end ends the step, not the workflow, the timeTravel info is passed to the next step to run.\n stepResults,\n prevResult: stepResult,\n activeSteps,\n requestContext,\n },\n });\n }\n }\n\n protected async processWorkflowStepEnd({\n workflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n timeTravel,\n prevResult,\n parentWorkflow,\n stepResults,\n activeSteps,\n parentContext,\n requestContext,\n }: ProcessorArgs) {\n let step = workflow.stepGraph[executionPath[0]!];\n\n if ((step?.type === 'parallel' || step?.type === 'conditional') && executionPath.length > 1) {\n step = step.steps[executionPath[1]!];\n }\n\n if (!step) {\n return this.errorWorkflow(\n {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n prevResult,\n stepResults,\n activeSteps,\n requestContext,\n },\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Step not found: ${JSON.stringify(executionPath)}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if (step.type === 'foreach') {\n const snapshot = await this.mastra.getStorage()?.loadWorkflowSnapshot({\n workflowName: workflowId,\n runId,\n });\n\n const currentIdx = executionPath[1];\n const currentResult = (snapshot?.context?.[step.step.id] as any)?.output;\n\n let newResult = prevResult;\n if (currentIdx !== undefined) {\n if (currentResult) {\n currentResult[currentIdx] = (prevResult as any).output;\n newResult = { ...prevResult, output: currentResult } as any;\n } else {\n newResult = { ...prevResult, output: [(prevResult as any).output] } as any;\n }\n }\n const newStepResults = await this.mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflow.id,\n runId,\n stepId: step.step.id,\n result: newResult,\n requestContext,\n });\n\n if (!newStepResults) {\n return;\n }\n\n stepResults = newStepResults;\n } else if (isExecutableStep(step)) {\n // clear from activeSteps\n delete activeSteps[step.step.id];\n\n // handle nested workflow\n if (parentContext) {\n prevResult = stepResults[step.step.id] = {\n ...prevResult,\n payload: parentContext.input?.output ?? {},\n };\n }\n\n const newStepResults = await this.mastra.getStorage()?.updateWorkflowResults({\n workflowName: workflow.id,\n runId,\n stepId: step.step.id,\n result: prevResult,\n requestContext,\n });\n\n if (!newStepResults) {\n return;\n }\n\n stepResults = newStepResults;\n }\n\n if (!prevResult?.status || prevResult.status === 'failed') {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.fail',\n runId,\n data: {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n parentWorkflow,\n stepResults,\n timeTravel,\n prevResult,\n activeSteps,\n requestContext,\n },\n });\n\n return;\n } else if (prevResult.status === 'suspended') {\n const suspendedPaths: Record<string, number[]> = {};\n const suspendedStep = getStep(workflow, executionPath);\n if (suspendedStep) {\n suspendedPaths[suspendedStep.id] = executionPath;\n }\n\n await this.mastra.getStorage()?.updateWorkflowState({\n workflowName: workflowId,\n runId,\n opts: {\n status: 'suspended',\n result: prevResult,\n suspendedPaths,\n },\n });\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.suspend',\n runId,\n data: {\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult,\n activeSteps,\n requestContext,\n timeTravel,\n },\n });\n\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-suspended',\n payload: {\n id: (step as any)?.step?.id,\n ...prevResult,\n suspendedAt: Date.now(),\n suspendPayload: prevResult.suspendPayload,\n },\n },\n });\n\n return;\n }\n\n if (step?.type === 'step') {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-result',\n payload: {\n id: step.step.id,\n ...prevResult,\n },\n },\n });\n\n if (prevResult.status === 'success') {\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-step-finish',\n payload: {\n id: step.step.id,\n metadata: {},\n },\n },\n });\n }\n }\n\n step = workflow.stepGraph[executionPath[0]!];\n if ((step?.type === 'parallel' || step?.type === 'conditional') && executionPath.length > 1) {\n let skippedCount = 0;\n const allResults: Record<string, any> = step.steps.reduce(\n (acc, step) => {\n if (isExecutableStep(step)) {\n const res = stepResults?.[step.step.id];\n if (res && res.status === 'success') {\n acc[step.step.id] = res?.output;\n // @ts-ignore\n } else if (res?.status === 'skipped') {\n skippedCount++;\n }\n }\n\n return acc;\n },\n {} as Record<string, StepResult<any, any, any, any>>,\n );\n\n const keys = Object.keys(allResults);\n if (keys.length + skippedCount < step.steps.length) {\n return;\n }\n\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.end',\n runId,\n data: {\n parentWorkflow,\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1),\n resumeSteps,\n stepResults,\n prevResult: { status: 'success', output: allResults },\n activeSteps,\n requestContext,\n timeTravel,\n },\n });\n } else if (step?.type === 'foreach') {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1),\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult: { ...prevResult, output: prevResult?.payload },\n activeSteps,\n requestContext,\n timeTravel,\n },\n });\n } else if (executionPath[0]! >= workflow.stepGraph.length - 1) {\n await this.endWorkflow({\n workflow,\n parentWorkflow,\n workflowId,\n runId,\n executionPath,\n resumeSteps,\n stepResults,\n prevResult,\n activeSteps,\n requestContext,\n });\n } else {\n await this.mastra.pubsub.publish('workflows', {\n type: 'workflow.step.run',\n runId,\n data: {\n workflowId,\n runId,\n executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1]! + 1]),\n resumeSteps,\n parentWorkflow,\n stepResults,\n prevResult,\n activeSteps,\n requestContext,\n timeTravel,\n },\n });\n }\n }\n\n async loadData({\n workflowId,\n runId,\n }: {\n workflowId: string;\n runId: string;\n }): Promise<WorkflowRunState | null | undefined> {\n const snapshot = await this.mastra.getStorage()?.loadWorkflowSnapshot({\n workflowName: workflowId,\n runId,\n });\n\n return snapshot;\n }\n\n async process(event: Event, ack?: () => Promise<void>) {\n const { type, data } = event;\n\n const workflowData = data as Omit<ProcessorArgs, 'workflow'>;\n\n const currentState = await this.loadData({\n workflowId: workflowData.workflowId,\n runId: workflowData.runId,\n });\n\n if (currentState?.status === 'canceled' && type !== 'workflow.end') {\n return;\n }\n\n if (type.startsWith('workflow.user-event.')) {\n await processWorkflowWaitForEvent(\n {\n ...workflowData,\n workflow: this.mastra.getWorkflow(workflowData.workflowId),\n },\n {\n pubsub: this.mastra.pubsub,\n eventName: type.split('.').slice(2).join('.'),\n currentState: currentState!,\n },\n );\n return;\n }\n\n let workflow;\n if (this.mastra.__hasInternalWorkflow(workflowData.workflowId)) {\n workflow = this.mastra.__getInternalWorkflow(workflowData.workflowId);\n } else if (workflowData.parentWorkflow) {\n workflow = getNestedWorkflow(this.mastra, workflowData.parentWorkflow);\n } else {\n workflow = this.mastra.getWorkflow(workflowData.workflowId);\n }\n\n if (!workflow) {\n return this.errorWorkflow(\n workflowData,\n new MastraError({\n id: 'MASTRA_WORKFLOW',\n text: `Workflow not found: ${workflowData.workflowId}`,\n domain: ErrorDomain.MASTRA_WORKFLOW,\n category: ErrorCategory.SYSTEM,\n }),\n );\n }\n\n if (type === 'workflow.start' || type === 'workflow.resume') {\n const { runId } = workflowData;\n await this.mastra.pubsub.publish(`workflow.events.v2.${runId}`, {\n type: 'watch',\n runId,\n data: {\n type: 'workflow-start',\n payload: {\n runId,\n },\n },\n });\n }\n\n switch (type) {\n case 'workflow.cancel':\n await this.processWorkflowCancel({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.start':\n await this.processWorkflowStart({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.resume':\n await this.processWorkflowStart({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.end':\n await this.processWorkflowEnd({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.step.end':\n await this.processWorkflowStepEnd({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.step.run':\n await this.processWorkflowStepRun({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.suspend':\n await this.processWorkflowSuspend({\n workflow,\n ...workflowData,\n });\n break;\n case 'workflow.fail':\n await this.processWorkflowFail({\n workflow,\n ...workflowData,\n });\n break;\n default:\n break;\n }\n\n try {\n await ack?.();\n } catch (e) {\n console.error('Error acking event', e);\n }\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport z from 'zod';\nimport type { Agent } from '../../agent';\nimport { RequestContext } from '../../di';\nimport type { Event } from '../../events';\nimport type { Mastra } from '../../mastra';\nimport { Tool } from '../../tools';\nimport type { ToolExecutionContext } from '../../tools/types';\nimport { Workflow, Run } from '../../workflows';\nimport type { ExecutionEngine, ExecutionGraph } from '../../workflows/execution-engine';\nimport type { ExecuteFunction, Step } from '../../workflows/step';\nimport type {\n SerializedStepFlowEntry,\n WorkflowConfig,\n WorkflowResult,\n StepWithComponent,\n WorkflowStreamEvent,\n WorkflowEngineType,\n} from '../../workflows/types';\nimport { EMITTER_SYMBOL } from '../constants';\nimport { EventedExecutionEngine } from './execution-engine';\nimport { WorkflowEventProcessor } from './workflow-event-processor';\n\nexport type EventedEngineType = {};\n\nexport function cloneWorkflow<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any, EventedEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n any,\n EventedEngineType\n >[],\n TPrevSchema extends z.ZodType<any> = TInput,\n>(\n workflow: Workflow<EventedEngineType, TSteps, string, TState, TInput, TOutput, TPrevSchema>,\n opts: { id: TWorkflowId },\n): Workflow<EventedEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema> {\n const wf: Workflow<EventedEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema> = new Workflow({\n id: opts.id,\n inputSchema: workflow.inputSchema,\n outputSchema: workflow.outputSchema,\n steps: workflow.stepDefs,\n mastra: workflow.mastra,\n options: workflow.options,\n });\n\n wf.setStepFlow(workflow.stepGraph);\n wf.commit();\n return wf;\n}\n\nexport function cloneStep<TStepId extends string>(\n step: Step<string, any, any, any, any, any, EventedEngineType>,\n opts: { id: TStepId },\n): Step<TStepId, any, any, any, any, any, EventedEngineType> {\n return {\n id: opts.id,\n description: step.description,\n inputSchema: step.inputSchema,\n outputSchema: step.outputSchema,\n suspendSchema: step.suspendSchema,\n resumeSchema: step.resumeSchema,\n stateSchema: step.stateSchema,\n execute: step.execute,\n retries: step.retries,\n scorers: step.scorers,\n component: step.component,\n };\n}\n\nfunction isAgent(params: any): params is Agent<any, any> {\n return params?.component === 'AGENT';\n}\n\nfunction isTool(params: any): params is Tool<any, any, any> {\n return params instanceof Tool;\n}\n\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(params: {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TState>,\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n EventedEngineType\n >;\n}): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType>;\n\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\n TStepInput extends z.ZodObject<{ prompt: z.ZodString }>,\n TStepOutput extends z.ZodObject<{ text: z.ZodString }>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n agent: Agent<TStepId, any>,\n): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType>;\n\nexport function createStep<\n TSchemaIn extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSchemaOut extends z.ZodType<any>,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema>,\n>(\n tool: Tool<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (input: z.infer<TSchemaIn>, context?: TContext) => Promise<any>;\n },\n): Step<string, any, TSchemaIn, TSchemaOut, z.ZodType<any>, z.ZodType<any>, EventedEngineType>;\n\nexport function createStep<\n TStepId extends string,\n TState extends z.ZodObject<any>,\n TStepInput extends z.ZodType<any>,\n TStepOutput extends z.ZodType<any>,\n TResumeSchema extends z.ZodType<any>,\n TSuspendSchema extends z.ZodType<any>,\n>(\n params:\n | {\n id: TStepId;\n description?: string;\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n resumeSchema?: TResumeSchema;\n suspendSchema?: TSuspendSchema;\n execute: ExecuteFunction<\n z.infer<TState>,\n z.infer<TStepInput>,\n z.infer<TStepOutput>,\n z.infer<TResumeSchema>,\n z.infer<TSuspendSchema>,\n EventedEngineType\n >;\n }\n | Agent<any, any>\n | (Tool<TStepInput, TStepOutput, TSuspendSchema, TResumeSchema, any> & {\n inputSchema: TStepInput;\n outputSchema: TStepOutput;\n execute: (\n input: z.infer<TStepInput>,\n context?: ToolExecutionContext<TSuspendSchema, TResumeSchema>,\n ) => Promise<any>;\n }),\n): Step<TStepId, TState, TStepInput, TStepOutput, TResumeSchema, TSuspendSchema, EventedEngineType> {\n if (isAgent(params)) {\n return {\n id: params.id,\n description: params.getDescription(),\n // @ts-ignore\n inputSchema: z.object({\n prompt: z.string(),\n // resourceId: z.string().optional(),\n // threadId: z.string().optional(),\n }),\n // @ts-ignore\n outputSchema: z.object({\n text: z.string(),\n }),\n execute: async ({ inputData, [EMITTER_SYMBOL]: emitter, requestContext, abortSignal, abort }) => {\n // TODO: support stream\n let streamPromise = {} as {\n promise: Promise<string>;\n resolve: (value: string) => void;\n reject: (reason?: any) => void;\n };\n\n streamPromise.promise = new Promise((resolve, reject) => {\n streamPromise.resolve = resolve;\n streamPromise.reject = reject;\n });\n // TODO: should use regular .stream()\n const { fullStream } = await params.streamLegacy(inputData.prompt, {\n // resourceId: inputData.resourceId,\n // threadId: inputData.threadId,\n requestContext,\n onFinish: result => {\n streamPromise.resolve(result.text);\n },\n abortSignal,\n });\n\n if (abortSignal.aborted) {\n return abort();\n }\n\n const toolData = {\n name: params.name,\n args: inputData,\n };\n\n await emitter.emit('watch', {\n type: 'tool-call-streaming-start',\n ...(toolData ?? {}),\n });\n for await (const chunk of fullStream) {\n if (chunk.type === 'text-delta') {\n await emitter.emit('watch', {\n type: 'tool-call-delta',\n ...(toolData ?? {}),\n argsTextDelta: chunk.textDelta,\n });\n }\n }\n await emitter.emit('watch', {\n type: 'tool-call-streaming-finish',\n ...(toolData ?? {}),\n });\n\n return {\n text: await streamPromise.promise,\n };\n },\n component: params.component,\n };\n }\n\n if (isTool(params)) {\n if (!params.inputSchema || !params.outputSchema) {\n throw new Error('Tool must have input and output schemas defined');\n }\n\n return {\n id: params.id as TStepId,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n suspendSchema: params.suspendSchema,\n resumeSchema: params.resumeSchema,\n execute: async ({\n inputData,\n mastra,\n requestContext,\n suspend,\n resumeData,\n runId,\n workflowId,\n state,\n setState,\n }) => {\n // Tools receive (input, context) - just call the tool's execute\n if (!params.execute) {\n throw new Error(`Tool ${params.id} does not have an execute function`);\n }\n\n // Build context matching ToolExecutionContext structure\n const context = {\n mastra,\n requestContext,\n tracingContext: { currentSpan: undefined }, // TODO: Pass proper tracing context when evented workflows support tracing\n workflow: {\n runId,\n workflowId,\n state,\n setState,\n suspend,\n resumeData,\n },\n };\n\n // Tool.execute already handles the v1.0 signature properly\n return params.execute(inputData, context);\n },\n component: 'TOOL',\n };\n }\n\n return {\n id: params.id as TStepId,\n description: params.description,\n inputSchema: params.inputSchema,\n outputSchema: params.outputSchema,\n resumeSchema: params.resumeSchema,\n suspendSchema: params.suspendSchema,\n execute: params.execute,\n };\n}\n\nexport function createWorkflow<\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TSteps extends Step<string, any, any, any, any, any, EventedEngineType>[] = Step<\n string,\n any,\n any,\n any,\n any,\n any,\n EventedEngineType\n >[],\n>(params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>) {\n const eventProcessor = new WorkflowEventProcessor({ mastra: params.mastra! });\n const executionEngine = new EventedExecutionEngine({\n mastra: params.mastra!,\n eventProcessor,\n options: {\n validateInputs: params.options?.validateInputs ?? true,\n shouldPersistSnapshot: params.options?.shouldPersistSnapshot ?? (() => true),\n tracingPolicy: params.options?.tracingPolicy,\n },\n });\n return new EventedWorkflow<EventedEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TInput>({\n ...params,\n executionEngine,\n });\n}\n\nexport class EventedWorkflow<\n TEngineType = EventedEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TWorkflowId extends string = string,\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n TPrevSchema extends z.ZodType<any> = TInput,\n> extends Workflow<TEngineType, TSteps, TWorkflowId, TState, TInput, TOutput, TPrevSchema> {\n constructor(params: WorkflowConfig<TWorkflowId, TState, TInput, TOutput, TSteps>) {\n super(params);\n this.engineType = 'evented';\n }\n\n __registerMastra(mastra: Mastra) {\n super.__registerMastra(mastra);\n this.executionEngine.__registerMastra(mastra);\n }\n\n async createRun(options?: { runId?: string }): Promise<Run<TEngineType, TSteps, TState, TInput, TOutput>> {\n const runIdToUse = options?.runId || randomUUID();\n\n // Return a new Run instance with object parameters\n const run: Run<TEngineType, TSteps, TState, TInput, TOutput> =\n this.runs.get(runIdToUse) ??\n new EventedRun({\n workflowId: this.id,\n runId: runIdToUse,\n executionEngine: this.executionEngine,\n executionGraph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n mastra: this.mastra,\n retryConfig: this.retryConfig,\n cleanup: () => this.runs.delete(runIdToUse),\n workflowSteps: this.steps,\n validateInputs: this.options?.validateInputs,\n workflowEngineType: this.engineType,\n });\n\n this.runs.set(runIdToUse, run);\n\n const shouldPersistSnapshot = this.options?.shouldPersistSnapshot?.({\n workflowStatus: run.workflowRunStatus,\n stepResults: {},\n });\n\n const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse, false);\n\n if (!workflowSnapshotInStorage && shouldPersistSnapshot) {\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.id,\n runId: runIdToUse,\n snapshot: {\n runId: runIdToUse,\n status: 'pending',\n value: {},\n context: {},\n activePaths: [],\n serializedStepGraph: this.serializedStepGraph,\n activeStepsPath: {},\n suspendedPaths: {},\n resumeLabels: {},\n waitingPaths: {},\n result: undefined,\n error: undefined,\n // @ts-ignore\n timestamp: Date.now(),\n },\n });\n }\n\n return run;\n }\n}\n\nexport class EventedRun<\n TEngineType = EventedEngineType,\n TSteps extends Step<string, any, any>[] = Step<string, any, any>[],\n TState extends z.ZodObject<any> = z.ZodObject<any>,\n TInput extends z.ZodType<any> = z.ZodType<any>,\n TOutput extends z.ZodType<any> = z.ZodType<any>,\n> extends Run<TEngineType, TSteps, TState, TInput, TOutput> {\n constructor(params: {\n workflowId: string;\n runId: string;\n executionEngine: ExecutionEngine;\n executionGraph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n mastra?: Mastra;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n cleanup?: () => void;\n workflowSteps: Record<string, StepWithComponent>;\n validateInputs?: boolean;\n workflowEngineType: WorkflowEngineType;\n }) {\n super(params);\n this.serializedStepGraph = params.serializedStepGraph;\n }\n\n async start({\n inputData,\n initialState,\n requestContext,\n }: {\n inputData?: z.infer<TInput>;\n requestContext?: RequestContext;\n initialState?: z.infer<TState>;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n // Add validation checks\n if (this.serializedStepGraph.length === 0) {\n throw new Error(\n 'Execution flow of workflow is not defined. Add steps to the workflow via .then(), .branch(), etc.',\n );\n }\n if (!this.executionGraph.steps) {\n throw new Error('Uncommitted step flow changes detected. Call .commit() to register the steps.');\n }\n\n requestContext = requestContext ?? new RequestContext();\n\n await this.mastra?.getStorage()?.persistWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n snapshot: {\n runId: this.runId,\n serializedStepGraph: this.serializedStepGraph,\n status: 'running',\n value: {},\n context: {} as any,\n requestContext: Object.fromEntries(requestContext.entries()),\n activePaths: [],\n activeStepsPath: {},\n suspendedPaths: {},\n resumeLabels: {},\n waitingPaths: {},\n timestamp: Date.now(),\n },\n });\n\n const inputDataToUse = await this._validateInput(inputData);\n const initialStateToUse = await this._validateInitialState(initialState ?? {});\n\n const result = await this.executionEngine.execute<\n z.infer<TState>,\n z.infer<TInput>,\n WorkflowResult<TState, TInput, TOutput, TSteps>\n >({\n workflowId: this.workflowId,\n runId: this.runId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: inputDataToUse,\n initialState: initialStateToUse,\n emitter: {\n emit: async (event: string, data: any) => {\n this.emitter.emit(event, data);\n },\n on: (event: string, callback: (data: any) => void) => {\n this.emitter.on(event, callback);\n },\n off: (event: string, callback: (data: any) => void) => {\n this.emitter.off(event, callback);\n },\n once: (event: string, callback: (data: any) => void) => {\n this.emitter.once(event, callback);\n },\n },\n retryConfig: this.retryConfig,\n requestContext,\n abortController: this.abortController,\n });\n\n // console.dir({ startResult: result }, { depth: null });\n\n if (result.status !== 'suspended') {\n this.cleanup?.();\n }\n\n return result;\n }\n\n // TODO: stream\n\n async resume<TResumeSchema extends z.ZodType<any>>(params: {\n resumeData?: z.infer<TResumeSchema>;\n step:\n | Step<string, any, any, TResumeSchema, any, any, TEngineType>\n | [\n ...Step<string, any, any, any, any, any, TEngineType>[],\n Step<string, any, any, TResumeSchema, any, any, TEngineType>,\n ]\n | string\n | string[];\n requestContext?: RequestContext;\n }): Promise<WorkflowResult<TState, TInput, TOutput, TSteps>> {\n let steps: string[] = [];\n if (typeof params.step === 'string') {\n steps = params.step.split('.');\n } else {\n steps = (Array.isArray(params.step) ? params.step : [params.step]).map(step =>\n typeof step === 'string' ? step : step?.id,\n );\n }\n\n if (steps.length === 0) {\n throw new Error('No steps provided to resume');\n }\n\n const snapshot = await this.mastra?.getStorage()?.loadWorkflowSnapshot({\n workflowName: this.workflowId,\n runId: this.runId,\n });\n\n const resumePath = snapshot?.suspendedPaths?.[steps[0]!] as any;\n if (!resumePath) {\n throw new Error(\n `No resume path found for step ${JSON.stringify(steps)}, currently suspended paths are ${JSON.stringify(snapshot?.suspendedPaths)}`,\n );\n }\n\n console.dir(\n { resume: { requestContextObj: snapshot?.requestContext, requestContext: params.requestContext } },\n { depth: null },\n );\n // Start with the snapshot's request context (old values)\n const requestContextObj = snapshot?.requestContext ?? {};\n const requestContext = new RequestContext();\n\n // First, set values from the snapshot\n for (const [key, value] of Object.entries(requestContextObj)) {\n requestContext.set(key, value);\n }\n\n // Then, override with any values from the passed request context (new values take precedence)\n if (params.requestContext) {\n for (const [key, value] of params.requestContext.entries()) {\n requestContext.set(key, value);\n }\n }\n\n const suspendedStep = this.workflowSteps[steps?.[0] ?? ''];\n\n const resumeDataToUse = await this._validateResumeData(params.resumeData, suspendedStep);\n\n const executionResultPromise = this.executionEngine\n .execute<z.infer<TState>, z.infer<TInput>, WorkflowResult<TState, TInput, TOutput, TSteps>>({\n workflowId: this.workflowId,\n runId: this.runId,\n graph: this.executionGraph,\n serializedStepGraph: this.serializedStepGraph,\n input: resumeDataToUse,\n resume: {\n steps,\n stepResults: snapshot?.context as any,\n resumePayload: resumeDataToUse,\n resumePath,\n },\n emitter: {\n emit: (event: string, data: any) => {\n this.emitter.emit(event, data);\n return Promise.resolve();\n },\n on: (event: string, callback: (data: any) => void) => {\n this.emitter.on(event, callback);\n },\n off: (event: string, callback: (data: any) => void) => {\n this.emitter.off(event, callback);\n },\n once: (event: string, callback: (data: any) => void) => {\n this.emitter.once(event, callback);\n },\n },\n requestContext,\n abortController: this.abortController,\n })\n .then(result => {\n if (result.status !== 'suspended') {\n this.closeStreamAction?.().catch(() => {});\n }\n\n return result;\n });\n\n this.executionResults = executionResultPromise;\n\n return executionResultPromise;\n }\n\n watch(cb: (event: WorkflowStreamEvent) => void): () => void {\n const watchCb = async (event: Event, ack?: () => Promise<void>) => {\n if (event.runId !== this.runId) {\n return;\n }\n\n cb(event.data);\n await ack?.();\n };\n\n this.mastra?.pubsub.subscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n\n return () => {\n this.mastra?.pubsub.unsubscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n };\n }\n\n async watchAsync(cb: (event: WorkflowStreamEvent) => void): Promise<() => void> {\n const watchCb = async (event: Event, ack?: () => Promise<void>) => {\n if (event.runId !== this.runId) {\n return;\n }\n\n cb(event.data);\n await ack?.();\n };\n\n await this.mastra?.pubsub.subscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n\n return async () => {\n await this.mastra?.pubsub.unsubscribe(`workflow.events.v2.${this.runId}`, watchCb).catch(() => {});\n };\n }\n\n async cancel() {\n await this.mastra?.pubsub.publish('workflows', {\n type: 'workflow.cancel',\n runId: this.runId,\n data: {\n workflowId: this.workflowId,\n runId: this.runId,\n },\n });\n }\n}\n","import type { Step, StepFlowEntry, Workflow } from '../..';\nimport type { Mastra } from '../../../mastra';\nimport { EventedWorkflow } from '../workflow';\nimport type { ParentWorkflow } from '.';\n\nexport function getNestedWorkflow(\n mastra: Mastra,\n { workflowId, executionPath, parentWorkflow }: ParentWorkflow,\n): Workflow | null {\n let workflow: Workflow | null = null;\n\n if (parentWorkflow) {\n const nestedWorkflow = getNestedWorkflow(mastra, parentWorkflow);\n if (!nestedWorkflow) {\n return null;\n }\n\n workflow = nestedWorkflow;\n }\n\n workflow = workflow ?? mastra.getWorkflow(workflowId);\n const stepGraph = workflow.stepGraph;\n let parentStep = stepGraph[executionPath[0]!];\n if (parentStep?.type === 'parallel' || parentStep?.type === 'conditional') {\n parentStep = parentStep.steps[executionPath[1]!];\n }\n\n if (parentStep?.type === 'step' || parentStep?.type === 'loop') {\n return parentStep.step as Workflow;\n }\n\n return null;\n}\n\nexport function getStep(workflow: Workflow, executionPath: number[]): Step<string, any, any, any, any, any> | null {\n let idx = 0;\n const stepGraph = workflow.stepGraph;\n let parentStep = stepGraph[executionPath[0]!];\n if (parentStep?.type === 'parallel' || parentStep?.type === 'conditional') {\n parentStep = parentStep.steps[executionPath[1]!];\n idx++;\n } else if (parentStep?.type === 'foreach') {\n return parentStep.step;\n }\n\n if (!(parentStep?.type === 'step' || parentStep?.type === 'loop')) {\n return null;\n }\n\n if (parentStep instanceof EventedWorkflow) {\n return getStep(parentStep, executionPath.slice(idx + 1));\n }\n\n return parentStep.step;\n}\n\nexport function isExecutableStep(step: StepFlowEntry<any>) {\n return step.type === 'step' || step.type === 'loop' || step.type === 'foreach';\n}\n","import type { RequestContext } from '../../di';\nimport type { Event } from '../../events/types';\nimport type { Mastra } from '../../mastra';\nimport { ExecutionEngine } from '../../workflows/execution-engine';\nimport type { ExecutionEngineOptions, ExecutionGraph } from '../../workflows/execution-engine';\nimport type {\n Emitter,\n SerializedStepFlowEntry,\n StepResult,\n RestartExecutionParams,\n TimeTravelExecutionParams,\n} from '../types';\nimport type { WorkflowEventProcessor } from './workflow-event-processor';\nimport { getStep } from './workflow-event-processor/utils';\n\nexport class EventedExecutionEngine extends ExecutionEngine {\n protected eventProcessor: WorkflowEventProcessor;\n\n constructor({\n mastra,\n eventProcessor,\n options,\n }: {\n mastra?: Mastra;\n eventProcessor: WorkflowEventProcessor;\n options: ExecutionEngineOptions;\n }) {\n super({ mastra, options });\n this.eventProcessor = eventProcessor;\n }\n\n __registerMastra(mastra: Mastra) {\n this.mastra = mastra;\n this.eventProcessor.__registerMastra(mastra);\n }\n\n /**\n * Executes a workflow run with the provided execution graph and input\n * @param graph The execution graph to execute\n * @param input The input data for the workflow\n * @returns A promise that resolves to the workflow output\n */\n async execute<TInput, TOutput>(params: {\n workflowId: string;\n runId: string;\n graph: ExecutionGraph;\n serializedStepGraph: SerializedStepFlowEntry[];\n input?: TInput;\n restart?: RestartExecutionParams;\n timeTravel?: TimeTravelExecutionParams;\n resume?: {\n steps: string[];\n stepResults: Record<string, StepResult<any, any, any, any>>;\n resumePayload: any;\n resumePath: number[];\n };\n emitter: Emitter;\n requestContext: RequestContext;\n retryConfig?: {\n attempts?: number;\n delay?: number;\n };\n abortController: AbortController;\n format?: 'legacy' | 'vnext' | undefined;\n }): Promise<TOutput> {\n const pubsub = this.mastra?.pubsub;\n if (!pubsub) {\n throw new Error('No Pubsub adapter configured on the Mastra instance');\n }\n\n if (params.resume) {\n const prevStep = getStep(this.mastra!.getWorkflow(params.workflowId), params.resume.resumePath);\n const prevResult = params.resume.stepResults[prevStep?.id ?? 'input'];\n\n await pubsub.publish('workflows', {\n type: 'workflow.resume',\n runId: params.runId,\n data: {\n workflowId: params.workflowId,\n runId: params.runId,\n executionPath: params.resume.resumePath,\n stepResults: params.resume.stepResults,\n resumeSteps: params.resume.steps,\n prevResult: { status: 'success', output: prevResult?.payload },\n resumeData: params.resume.resumePayload,\n requestContext: Object.fromEntries(params.requestContext.entries()),\n format: params.format,\n },\n });\n } else if (params.timeTravel) {\n const prevStep = getStep(this.mastra!.getWorkflow(params.workflowId), params.timeTravel.executionPath);\n const prevResult = params.timeTravel.stepResults[prevStep?.id ?? 'input'];\n await pubsub.publish('workflows', {\n type: 'workflow.start',\n runId: params.runId,\n data: {\n workflowId: params.workflowId,\n runId: params.runId,\n executionPath: params.timeTravel.executionPath,\n stepResults: params.timeTravel.stepResults,\n timeTravel: params.timeTravel,\n prevResult: { status: 'success', output: prevResult?.payload },\n requestContext: Object.fromEntries(params.requestContext.entries()),\n format: params.format,\n },\n });\n } else {\n await pubsub.publish('workflows', {\n type: 'workflow.start',\n runId: params.runId,\n data: {\n workflowId: params.workflowId,\n runId: params.runId,\n prevResult: { status: 'success', output: params.input },\n requestContext: Object.fromEntries(params.requestContext.entries()),\n format: params.format,\n },\n });\n }\n\n const resultData: any = await new Promise(resolve => {\n const finishCb = async (event: Event, ack?: () => Promise<void>) => {\n if (event.runId !== params.runId) {\n await ack?.();\n return;\n }\n\n if (['workflow.end', 'workflow.fail', 'workflow.suspend'].includes(event.type)) {\n await ack?.();\n await pubsub.unsubscribe('workflows-finish', finishCb);\n resolve(event.data);\n return;\n }\n\n await ack?.();\n };\n\n pubsub.subscribe('workflows-finish', finishCb).catch(() => {});\n });\n\n if (resultData.prevResult.status === 'failed') {\n return {\n status: 'failed',\n error: resultData.prevResult.error,\n steps: resultData.stepResults,\n } as TOutput;\n } else if (resultData.prevResult.status === 'suspended') {\n const suspendedSteps = Object.entries(resultData.stepResults)\n .map(([_stepId, stepResult]: [string, any]) => {\n if (stepResult.status === 'suspended') {\n return stepResult.suspendPayload?.__workflow_meta?.path ?? [];\n }\n\n return null;\n })\n .filter(Boolean);\n return {\n status: 'suspended',\n steps: resultData.stepResults,\n suspended: suspendedSteps,\n } as TOutput;\n }\n\n return {\n status: resultData.prevResult.status,\n result: resultData.prevResult?.output,\n steps: resultData.stepResults,\n } as TOutput;\n }\n}\n"]}