adispatchd 0.0.0-stage → 0.1.0

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 (396) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +195 -2
  3. package/dist/api/errors.d.ts +27 -0
  4. package/dist/api/errors.js +80 -0
  5. package/dist/api/errors.js.map +1 -0
  6. package/dist/api/index.d.ts +10 -0
  7. package/dist/api/index.js +11 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/api/logs.d.ts +30 -0
  10. package/dist/api/logs.js +88 -0
  11. package/dist/api/logs.js.map +1 -0
  12. package/dist/api/serialize.d.ts +65 -0
  13. package/dist/api/serialize.js +135 -0
  14. package/dist/api/serialize.js.map +1 -0
  15. package/dist/api/server.d.ts +89 -0
  16. package/dist/api/server.js +751 -0
  17. package/dist/api/server.js.map +1 -0
  18. package/dist/api/sse.d.ts +90 -0
  19. package/dist/api/sse.js +225 -0
  20. package/dist/api/sse.js.map +1 -0
  21. package/dist/app.d.ts +173 -0
  22. package/dist/app.js +488 -0
  23. package/dist/app.js.map +1 -0
  24. package/dist/cli/config-validate.d.ts +6 -0
  25. package/dist/cli/config-validate.js +39 -0
  26. package/dist/cli/config-validate.js.map +1 -0
  27. package/dist/cli/control.d.ts +31 -0
  28. package/dist/cli/control.js +186 -0
  29. package/dist/cli/control.js.map +1 -0
  30. package/dist/cli/http-client.d.ts +57 -0
  31. package/dist/cli/http-client.js +174 -0
  32. package/dist/cli/http-client.js.map +1 -0
  33. package/dist/cli/index.d.ts +14 -0
  34. package/dist/cli/index.js +14 -0
  35. package/dist/cli/index.js.map +1 -0
  36. package/dist/cli/init-templates.d.ts +20 -0
  37. package/dist/cli/init-templates.js +275 -0
  38. package/dist/cli/init-templates.js.map +1 -0
  39. package/dist/cli/init.d.ts +16 -0
  40. package/dist/cli/init.js +107 -0
  41. package/dist/cli/init.js.map +1 -0
  42. package/dist/cli/main.d.ts +2 -0
  43. package/dist/cli/main.js +25 -0
  44. package/dist/cli/main.js.map +1 -0
  45. package/dist/cli/program.d.ts +102 -0
  46. package/dist/cli/program.js +133 -0
  47. package/dist/cli/program.js.map +1 -0
  48. package/dist/cli/service.d.ts +27 -0
  49. package/dist/cli/service.js +252 -0
  50. package/dist/cli/service.js.map +1 -0
  51. package/dist/cli/start.d.ts +22 -0
  52. package/dist/cli/start.js +133 -0
  53. package/dist/cli/start.js.map +1 -0
  54. package/dist/cli/workflow-dry-run.d.ts +13 -0
  55. package/dist/cli/workflow-dry-run.js +144 -0
  56. package/dist/cli/workflow-dry-run.js.map +1 -0
  57. package/dist/config/field-catalog.d.ts +33 -0
  58. package/dist/config/field-catalog.js +172 -0
  59. package/dist/config/field-catalog.js.map +1 -0
  60. package/dist/config/filter-schema.d.ts +15 -0
  61. package/dist/config/filter-schema.js +110 -0
  62. package/dist/config/filter-schema.js.map +1 -0
  63. package/dist/config/index.d.ts +15 -0
  64. package/dist/config/index.js +16 -0
  65. package/dist/config/index.js.map +1 -0
  66. package/dist/config/issues.d.ts +27 -0
  67. package/dist/config/issues.js +37 -0
  68. package/dist/config/issues.js.map +1 -0
  69. package/dist/config/loader.d.ts +32 -0
  70. package/dist/config/loader.js +250 -0
  71. package/dist/config/loader.js.map +1 -0
  72. package/dist/config/manager.d.ts +153 -0
  73. package/dist/config/manager.js +276 -0
  74. package/dist/config/manager.js.map +1 -0
  75. package/dist/config/model.d.ts +334 -0
  76. package/dist/config/model.js +2 -0
  77. package/dist/config/model.js.map +1 -0
  78. package/dist/config/normalize.d.ts +20 -0
  79. package/dist/config/normalize.js +200 -0
  80. package/dist/config/normalize.js.map +1 -0
  81. package/dist/config/parameters.d.ts +37 -0
  82. package/dist/config/parameters.js +71 -0
  83. package/dist/config/parameters.js.map +1 -0
  84. package/dist/config/public.d.ts +6 -0
  85. package/dist/config/public.js +18 -0
  86. package/dist/config/public.js.map +1 -0
  87. package/dist/config/schemas.d.ts +538 -0
  88. package/dist/config/schemas.js +321 -0
  89. package/dist/config/schemas.js.map +1 -0
  90. package/dist/config/snapshot.d.ts +38 -0
  91. package/dist/config/snapshot.js +57 -0
  92. package/dist/config/snapshot.js.map +1 -0
  93. package/dist/config/validate.d.ts +33 -0
  94. package/dist/config/validate.js +346 -0
  95. package/dist/config/validate.js.map +1 -0
  96. package/dist/core/clock.d.ts +59 -0
  97. package/dist/core/clock.js +133 -0
  98. package/dist/core/clock.js.map +1 -0
  99. package/dist/core/duration.d.ts +19 -0
  100. package/dist/core/duration.js +93 -0
  101. package/dist/core/duration.js.map +1 -0
  102. package/dist/core/errors.d.ts +62 -0
  103. package/dist/core/errors.js +72 -0
  104. package/dist/core/errors.js.map +1 -0
  105. package/dist/core/ids.d.ts +57 -0
  106. package/dist/core/ids.js +88 -0
  107. package/dist/core/ids.js.map +1 -0
  108. package/dist/core/index.d.ts +13 -0
  109. package/dist/core/index.js +14 -0
  110. package/dist/core/index.js.map +1 -0
  111. package/dist/core/logger.d.ts +100 -0
  112. package/dist/core/logger.js +207 -0
  113. package/dist/core/logger.js.map +1 -0
  114. package/dist/core/paths.d.ts +84 -0
  115. package/dist/core/paths.js +138 -0
  116. package/dist/core/paths.js.map +1 -0
  117. package/dist/core/template.d.ts +136 -0
  118. package/dist/core/template.js +261 -0
  119. package/dist/core/template.js.map +1 -0
  120. package/dist/core/types.d.ts +544 -0
  121. package/dist/core/types.js +172 -0
  122. package/dist/core/types.js.map +1 -0
  123. package/dist/core/worker-protocol.d.ts +102 -0
  124. package/dist/core/worker-protocol.js +75 -0
  125. package/dist/core/worker-protocol.js.map +1 -0
  126. package/dist/executors/classify.d.ts +25 -0
  127. package/dist/executors/classify.js +54 -0
  128. package/dist/executors/classify.js.map +1 -0
  129. package/dist/executors/dispatcher.d.ts +35 -0
  130. package/dist/executors/dispatcher.js +68 -0
  131. package/dist/executors/dispatcher.js.map +1 -0
  132. package/dist/executors/env.d.ts +43 -0
  133. package/dist/executors/env.js +66 -0
  134. package/dist/executors/env.js.map +1 -0
  135. package/dist/executors/event-parser.d.ts +41 -0
  136. package/dist/executors/event-parser.js +106 -0
  137. package/dist/executors/event-parser.js.map +1 -0
  138. package/dist/executors/index.d.ts +12 -0
  139. package/dist/executors/index.js +13 -0
  140. package/dist/executors/index.js.map +1 -0
  141. package/dist/executors/log-capture.d.ts +57 -0
  142. package/dist/executors/log-capture.js +155 -0
  143. package/dist/executors/log-capture.js.map +1 -0
  144. package/dist/executors/process-identity.d.ts +124 -0
  145. package/dist/executors/process-identity.js +283 -0
  146. package/dist/executors/process-identity.js.map +1 -0
  147. package/dist/executors/shell-executor.d.ts +35 -0
  148. package/dist/executors/shell-executor.js +478 -0
  149. package/dist/executors/shell-executor.js.map +1 -0
  150. package/dist/executors/stream-redactor.d.ts +40 -0
  151. package/dist/executors/stream-redactor.js +89 -0
  152. package/dist/executors/stream-redactor.js.map +1 -0
  153. package/dist/executors/workspace.d.ts +10 -0
  154. package/dist/executors/workspace.js +47 -0
  155. package/dist/executors/workspace.js.map +1 -0
  156. package/dist/filters/evaluate.d.ts +77 -0
  157. package/dist/filters/evaluate.js +187 -0
  158. package/dist/filters/evaluate.js.map +1 -0
  159. package/dist/filters/fields.d.ts +35 -0
  160. package/dist/filters/fields.js +75 -0
  161. package/dist/filters/fields.js.map +1 -0
  162. package/dist/filters/index.d.ts +11 -0
  163. package/dist/filters/index.js +12 -0
  164. package/dist/filters/index.js.map +1 -0
  165. package/dist/filters/iso-date.d.ts +10 -0
  166. package/dist/filters/iso-date.js +42 -0
  167. package/dist/filters/iso-date.js.map +1 -0
  168. package/dist/filters/predicate.d.ts +24 -0
  169. package/dist/filters/predicate.js +178 -0
  170. package/dist/filters/predicate.js.map +1 -0
  171. package/dist/filters/priority.d.ts +51 -0
  172. package/dist/filters/priority.js +91 -0
  173. package/dist/filters/priority.js.map +1 -0
  174. package/dist/filters/pushdown.d.ts +12 -0
  175. package/dist/filters/pushdown.js +52 -0
  176. package/dist/filters/pushdown.js.map +1 -0
  177. package/dist/filters/shell-check.d.ts +110 -0
  178. package/dist/filters/shell-check.js +304 -0
  179. package/dist/filters/shell-check.js.map +1 -0
  180. package/dist/identities/github-app.d.ts +55 -0
  181. package/dist/identities/github-app.js +160 -0
  182. package/dist/identities/github-app.js.map +1 -0
  183. package/dist/identities/index.d.ts +6 -0
  184. package/dist/identities/index.js +7 -0
  185. package/dist/identities/index.js.map +1 -0
  186. package/dist/identities/jwt.d.ts +24 -0
  187. package/dist/identities/jwt.js +56 -0
  188. package/dist/identities/jwt.js.map +1 -0
  189. package/dist/lifecycle/context.d.ts +106 -0
  190. package/dist/lifecycle/context.js +170 -0
  191. package/dist/lifecycle/context.js.map +1 -0
  192. package/dist/lifecycle/engine.d.ts +185 -0
  193. package/dist/lifecycle/engine.js +551 -0
  194. package/dist/lifecycle/engine.js.map +1 -0
  195. package/dist/lifecycle/errors.d.ts +48 -0
  196. package/dist/lifecycle/errors.js +71 -0
  197. package/dist/lifecycle/errors.js.map +1 -0
  198. package/dist/lifecycle/index.d.ts +9 -0
  199. package/dist/lifecycle/index.js +9 -0
  200. package/dist/lifecycle/index.js.map +1 -0
  201. package/dist/lifecycle/performers.d.ts +66 -0
  202. package/dist/lifecycle/performers.js +179 -0
  203. package/dist/lifecycle/performers.js.map +1 -0
  204. package/dist/notifications/index.d.ts +6 -0
  205. package/dist/notifications/index.js +7 -0
  206. package/dist/notifications/index.js.map +1 -0
  207. package/dist/notifications/service.d.ts +115 -0
  208. package/dist/notifications/service.js +364 -0
  209. package/dist/notifications/service.js.map +1 -0
  210. package/dist/persistence/actions.d.ts +101 -0
  211. package/dist/persistence/actions.js +196 -0
  212. package/dist/persistence/actions.js.map +1 -0
  213. package/dist/persistence/blocks.d.ts +85 -0
  214. package/dist/persistence/blocks.js +140 -0
  215. package/dist/persistence/blocks.js.map +1 -0
  216. package/dist/persistence/cron-firings.d.ts +55 -0
  217. package/dist/persistence/cron-firings.js +70 -0
  218. package/dist/persistence/cron-firings.js.map +1 -0
  219. package/dist/persistence/database.d.ts +60 -0
  220. package/dist/persistence/database.js +124 -0
  221. package/dist/persistence/database.js.map +1 -0
  222. package/dist/persistence/errors.d.ts +39 -0
  223. package/dist/persistence/errors.js +67 -0
  224. package/dist/persistence/errors.js.map +1 -0
  225. package/dist/persistence/events.d.ts +72 -0
  226. package/dist/persistence/events.js +83 -0
  227. package/dist/persistence/events.js.map +1 -0
  228. package/dist/persistence/index.d.ts +18 -0
  229. package/dist/persistence/index.js +19 -0
  230. package/dist/persistence/index.js.map +1 -0
  231. package/dist/persistence/instance-lock.d.ts +26 -0
  232. package/dist/persistence/instance-lock.js +117 -0
  233. package/dist/persistence/instance-lock.js.map +1 -0
  234. package/dist/persistence/lock-keys.d.ts +16 -0
  235. package/dist/persistence/lock-keys.js +41 -0
  236. package/dist/persistence/lock-keys.js.map +1 -0
  237. package/dist/persistence/notifications.d.ts +113 -0
  238. package/dist/persistence/notifications.js +213 -0
  239. package/dist/persistence/notifications.js.map +1 -0
  240. package/dist/persistence/persistence.d.ts +46 -0
  241. package/dist/persistence/persistence.js +42 -0
  242. package/dist/persistence/persistence.js.map +1 -0
  243. package/dist/persistence/retention.d.ts +46 -0
  244. package/dist/persistence/retention.js +68 -0
  245. package/dist/persistence/retention.js.map +1 -0
  246. package/dist/persistence/runs.d.ts +215 -0
  247. package/dist/persistence/runs.js +417 -0
  248. package/dist/persistence/runs.js.map +1 -0
  249. package/dist/persistence/schema.d.ts +16 -0
  250. package/dist/persistence/schema.js +183 -0
  251. package/dist/persistence/schema.js.map +1 -0
  252. package/dist/persistence/sqlite.d.ts +49 -0
  253. package/dist/persistence/sqlite.js +131 -0
  254. package/dist/persistence/sqlite.js.map +1 -0
  255. package/dist/runs/controller.d.ts +307 -0
  256. package/dist/runs/controller.js +1078 -0
  257. package/dist/runs/controller.js.map +1 -0
  258. package/dist/runs/errors.d.ts +20 -0
  259. package/dist/runs/errors.js +26 -0
  260. package/dist/runs/errors.js.map +1 -0
  261. package/dist/runs/event-bus.d.ts +106 -0
  262. package/dist/runs/event-bus.js +105 -0
  263. package/dist/runs/event-bus.js.map +1 -0
  264. package/dist/runs/execution.d.ts +39 -0
  265. package/dist/runs/execution.js +146 -0
  266. package/dist/runs/execution.js.map +1 -0
  267. package/dist/runs/index.d.ts +12 -0
  268. package/dist/runs/index.js +13 -0
  269. package/dist/runs/index.js.map +1 -0
  270. package/dist/runs/retention.d.ts +64 -0
  271. package/dist/runs/retention.js +232 -0
  272. package/dist/runs/retention.js.map +1 -0
  273. package/dist/runs/workspace.d.ts +20 -0
  274. package/dist/runs/workspace.js +51 -0
  275. package/dist/runs/workspace.js.map +1 -0
  276. package/dist/scheduler/checks.d.ts +41 -0
  277. package/dist/scheduler/checks.js +111 -0
  278. package/dist/scheduler/checks.js.map +1 -0
  279. package/dist/scheduler/cron.d.ts +32 -0
  280. package/dist/scheduler/cron.js +83 -0
  281. package/dist/scheduler/cron.js.map +1 -0
  282. package/dist/scheduler/dry-run.d.ts +42 -0
  283. package/dist/scheduler/dry-run.js +167 -0
  284. package/dist/scheduler/dry-run.js.map +1 -0
  285. package/dist/scheduler/errors.d.ts +22 -0
  286. package/dist/scheduler/errors.js +22 -0
  287. package/dist/scheduler/errors.js.map +1 -0
  288. package/dist/scheduler/format.d.ts +3 -0
  289. package/dist/scheduler/format.js +73 -0
  290. package/dist/scheduler/format.js.map +1 -0
  291. package/dist/scheduler/index.d.ts +13 -0
  292. package/dist/scheduler/index.js +14 -0
  293. package/dist/scheduler/index.js.map +1 -0
  294. package/dist/scheduler/planner.d.ts +88 -0
  295. package/dist/scheduler/planner.js +255 -0
  296. package/dist/scheduler/planner.js.map +1 -0
  297. package/dist/scheduler/scheduler.d.ts +160 -0
  298. package/dist/scheduler/scheduler.js +680 -0
  299. package/dist/scheduler/scheduler.js.map +1 -0
  300. package/dist/scheduler/state.d.ts +26 -0
  301. package/dist/scheduler/state.js +25 -0
  302. package/dist/scheduler/state.js.map +1 -0
  303. package/dist/scheduler/types.d.ts +197 -0
  304. package/dist/scheduler/types.js +3 -0
  305. package/dist/scheduler/types.js.map +1 -0
  306. package/dist/service/index.d.ts +6 -0
  307. package/dist/service/index.js +7 -0
  308. package/dist/service/index.js.map +1 -0
  309. package/dist/service/install.d.ts +93 -0
  310. package/dist/service/install.js +250 -0
  311. package/dist/service/install.js.map +1 -0
  312. package/dist/service/unit.d.ts +50 -0
  313. package/dist/service/unit.js +171 -0
  314. package/dist/service/unit.js.map +1 -0
  315. package/dist/sources/github/adapter.d.ts +99 -0
  316. package/dist/sources/github/adapter.js +336 -0
  317. package/dist/sources/github/adapter.js.map +1 -0
  318. package/dist/sources/github/fields.d.ts +8 -0
  319. package/dist/sources/github/fields.js +72 -0
  320. package/dist/sources/github/fields.js.map +1 -0
  321. package/dist/sources/github/http.d.ts +100 -0
  322. package/dist/sources/github/http.js +288 -0
  323. package/dist/sources/github/http.js.map +1 -0
  324. package/dist/sources/github/index.d.ts +6 -0
  325. package/dist/sources/github/index.js +7 -0
  326. package/dist/sources/github/index.js.map +1 -0
  327. package/dist/sources/github/pushdown.d.ts +14 -0
  328. package/dist/sources/github/pushdown.js +47 -0
  329. package/dist/sources/github/pushdown.js.map +1 -0
  330. package/dist/sources/github/refs.d.ts +17 -0
  331. package/dist/sources/github/refs.js +61 -0
  332. package/dist/sources/github/refs.js.map +1 -0
  333. package/dist/sources/index.d.ts +6 -0
  334. package/dist/sources/index.js +7 -0
  335. package/dist/sources/index.js.map +1 -0
  336. package/dist/ui/index.d.ts +12 -0
  337. package/dist/ui/index.js +28 -0
  338. package/dist/ui/index.js.map +1 -0
  339. package/dist/ui/public/app.css +239 -0
  340. package/dist/ui/public/favicon.svg +1 -0
  341. package/dist/ui/public/index.html +27 -0
  342. package/dist/ui/public/js/client/api.js +68 -0
  343. package/dist/ui/public/js/client/app.js +146 -0
  344. package/dist/ui/public/js/client/dom.js +34 -0
  345. package/dist/ui/public/js/client/page.js +9 -0
  346. package/dist/ui/public/js/client/pages/actions.js +35 -0
  347. package/dist/ui/public/js/client/pages/blocked.js +58 -0
  348. package/dist/ui/public/js/client/pages/config.js +126 -0
  349. package/dist/ui/public/js/client/pages/dashboard.js +175 -0
  350. package/dist/ui/public/js/client/pages/run.js +367 -0
  351. package/dist/ui/public/js/client/pages/runs.js +72 -0
  352. package/dist/ui/public/js/client/pages/views.js +80 -0
  353. package/dist/ui/public/js/client/pages/workflows.js +291 -0
  354. package/dist/ui/public/js/client/types.js +1 -0
  355. package/dist/ui/public/js/client/ui.js +152 -0
  356. package/dist/ui/public/js/shared/dom.js +77 -0
  357. package/dist/ui/public/js/shared/events.js +88 -0
  358. package/dist/ui/public/js/shared/format.js +213 -0
  359. package/dist/ui/public/js/shared/logs.js +136 -0
  360. package/dist/ui/public/js/shared/params.js +90 -0
  361. package/dist/ui/public/js/shared/route.js +36 -0
  362. package/dist/ui/public/js/shared/sort.js +70 -0
  363. package/dist/ui/public/js/shared/sse.js +193 -0
  364. package/dist/ui/public/js/shared/throttle.js +65 -0
  365. package/dist/views/index.d.ts +6 -0
  366. package/dist/views/index.js +7 -0
  367. package/dist/views/index.js.map +1 -0
  368. package/dist/views/service.d.ts +131 -0
  369. package/dist/views/service.js +264 -0
  370. package/dist/views/service.js.map +1 -0
  371. package/docs/api.md +239 -0
  372. package/docs/configuration-reference.md +1785 -0
  373. package/docs/cron-semantics.md +96 -0
  374. package/docs/manual-tests/github-fixture/config.yaml +30 -0
  375. package/docs/manual-tests/github-fixture/helpers.sh +93 -0
  376. package/docs/manual-tests/github-fixture/identities.yaml +18 -0
  377. package/docs/manual-tests/github-fixture/scripts/test-worker.sh +100 -0
  378. package/docs/manual-tests/github-fixture/sources.yaml +13 -0
  379. package/docs/manual-tests/github-fixture/views/dependencies.yaml +17 -0
  380. package/docs/manual-tests/github-fixture/views/needs-maintainer.yaml +17 -0
  381. package/docs/manual-tests/github-fixture/workflows/coder-test.yaml +76 -0
  382. package/docs/manual-tests/github-fixture/workflows/commenter-test.yaml +63 -0
  383. package/docs/manual-tests/github-fixture/workflows/reviewer-test.yaml +60 -0
  384. package/docs/manual-tests/github.md +1308 -0
  385. package/docs/manual-tests/process-supervision.md +64 -0
  386. package/docs/manual-tests/systemd.md +68 -0
  387. package/docs/operations.md +271 -0
  388. package/docs/worker-protocol.md +145 -0
  389. package/examples/config/config.yaml +35 -0
  390. package/examples/config/identities.yaml +18 -0
  391. package/examples/config/sources.yaml +13 -0
  392. package/examples/config/views/needs-maintainer.yaml +15 -0
  393. package/examples/config/workflows/coder-project-a.yaml +86 -0
  394. package/examples/config/workflows/deploy.yaml +15 -0
  395. package/examples/config/workflows/nightly-maintenance.yaml +13 -0
  396. package/package.json +75 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,GAMb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAmF,MAAM,oBAAoB,CAAC;AACrK,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EACL,YAAY,EACZ,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAsB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAqB,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAoF,MAAM,cAAc,CAAC;AACxK,OAAO,EAAE,eAAe,EAAwB,MAAM,YAAY,CAAC;AACnE,OAAO,EACL,wBAAwB,GAUzB,MAAM,YAAY,CAAC;AAiDpB,8FAA8F;AAC9F,MAAM,kBAAkB,GAAG,EAAE,GAAG,MAAM,CAAC;AACvC,iFAAiF;AACjF,MAAM,eAAe,GAAkC,IAAI,GAAG,CAAmB;IAC/E,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC,CAAC;AACH,4CAA4C;AAC5C,MAAM,aAAa,GAAG,OAAO,CAAC;AAuB9B,8FAA8F;AAC9F,MAAM,OAAO,SAAS;IACH,MAAM,CAAgB;IACtB,KAAK,CAAe;IACpB,UAAU,CAAyB;IACnC,OAAO,CAAe;IACtB,KAAK,CAAkB;IACvB,WAAW,CAAmB;IAC9B,MAAM,CAAkB;IACxB,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,MAAM,CAAS;IACf,kBAAkB,CAAS;IAC3B,iBAAiB,CAAS;IAEnC,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IAChB,SAAS,CAA0B;IACnC,SAAS,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvC,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IACvC,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;IAClE,UAAU,GAA8B,IAAI,CAAC;IACpC,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,iBAAiB,CAA0B;IAEnD,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,4EAA4E;QAC5E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,IAAI,MAAM,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,IAAI,GAAG,CAAC;IACjE,CAAC;IAED,8EAA8E;IAC9E,YAAY;IAEZ;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACtD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO;YACpC,+DAA+D;YAC/D,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvH,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAI,CAAa;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qFAAqF;IAC7E,QAAQ;QACd,IAAI,CAAC,QAAQ,EAAE;aACZ,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAChG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,OAAO,CAAC,OAAe;QAC7B,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAEV,UAAU;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC;QACjC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;YAAE,OAAO,UAAU,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC;IAED,4EAA4E;IACpE,eAAe,CAAC,UAAkB;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,yBAAyB,YAAY,IAAI,SAAS,UAAU,EAAE,CAAC;QAC5G,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,aAAa,IAAI,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,MAAM,IAAI,GAAG;YAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,2BAA2B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QACrH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,0BAA0B;IAE1B;;;;OAIG;IACH,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3D,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,MAAM,GAAuB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YACzH,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAChG,MAAM,SAAS,GAAc,IAAI,GAAG,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkC,CAAC;QAEhE,mFAAmF;QACnF,MAAM,QAAQ,GAAuB,MAAM,OAAO,CAAC,GAAG,CACpD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAA6B,EAAE;YACnD,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,OAAO;oBACL,SAAS,EAAE;wBACT,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;wBACvB,EAAE,EAAE,SAAS;wBACb,MAAM,EAAE,UAAU;wBAClB,KAAK,EAAE,IAAI;wBACX,QAAQ;wBACR,MAAM,EAAE,CAAC;wBACT,QAAQ,EAAE,IAAI;wBACd,UAAU,EAAE,EAAE;wBACd,UAAU,EAAE,EAAE;wBACd,iBAAiB,EAAE,CAAC;wBACpB,aAAa,EAAE,EAAE;qBAClB;oBACD,UAAU,EAAE,EAAE;oBACd,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;YACD,4DAA4D;YAC5D,OAAO,qBAAqB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1G,CAAC,CAAC,CACH,CAAC;QAEF,6EAA6E;QAC7E,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;gBAC1E,IAAI,KAAK;oBAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAC9C,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9I,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;YACzB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,IAAI;gBAAE,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;YAChD,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChH,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;YACzD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7D,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC;YAC1G,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhG,MAAM,MAAM,GAAuB;YACjC,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YAC1C,OAAO,EAAE,IAAI;YACb,aAAa;YACb,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5C,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACtG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+DAA+D;IACvD,KAAK,CAAC,iBAAiB,CAC7B,SAA4B,EAC5B,GAAiB,EACjB,aAAkD;QAElD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,QAA2B,EAAE,MAAc,EAAQ,EAAE;YAChE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,8EAA8E;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,KAAK;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,kBAAkB,EAAE,CAAC,EAAkB,EAAE,EAAE;gBACzC,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBAC1C,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEvC,4EAA4E;QAC5E,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC,aAAa,EAAE,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAClI,OAAO,GAAG,CAAC,sBAAsB,EAAE,oEAAoE,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,QAAQ;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,GAAc,CAAC;QACnB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC5B,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,WAAW,EAAE,QAAQ;gBACrB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;gBACjC,aAAa,EAAE,SAAS,CAAC,OAAO;gBAChC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;gBAC7B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;gBAClE,UAAU,EAAE,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAChD,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;gBAC7B,OAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,WAAW,0CAA0C,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC3B,OAAO,GAAG,CAAC,SAAS,EAAE,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,4EAA4E;QAC5E,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,OAAO,GAAG,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,EAAE,0BAA0B,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,uBAAuB;IAEvB,qFAAqF;IAC7E,QAAQ;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9D,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,EAAE,CAAC,OAAO,CAAC,QAAQ;gBAAE,SAAS;YAC/G,IAAI,QAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9F,SAAS;YACX,CAAC;YACD,IAAI,QAAQ;gBAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,0EAA0E;YAC1E,sEAAsE;YACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,KAAK,GAAc;gBACvB,UAAU,EAAE,EAAE,CAAC,EAAE;gBACjB,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI;gBAC3B,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;gBAC7B,QAAQ;gBACR,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG;gBACzD,OAAO,EAAE,MAAM,KAAK,IAAI;gBACxB,aAAa,EAAE,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAA4B,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAA6B,CAAC,CAAC,CAAC,IAAI;gBAChI,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;gBACxB,cAAc,EAAE,EAAE;gBAClB,OAAO,EAAE,KAAK;aACf,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAgB;QAC7B,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEO,WAAW,CAAC,KAAgB;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,YAAY,CAAC,KAAgB;QACnC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;QACnF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACxF,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACxC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED,wGAAwG;IAChG,KAAK,CAAC,UAAU,CAAC,KAAgB;QACvC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,gFAAgF;YAChF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAgB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3H,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAS,CAAC;YACvD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACzD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACzB,IAAI,MAAM,GAAG,OAAO;oBAClB,CAAC,CAAC,KAAK,CAAC,aAAa;wBACnB,CAAC,CAAC,sEAAsE,KAAK,CAAC,aAAa,GAAG;wBAC9F,CAAC,CAAC,oDAAoD;oBACxD,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3I,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;oBAAE,MAAM,IAAI,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,qCAAqC,CAAC;gBAC3J,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC;YAC/H,CAAC;YACD,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;YAC3B,IAAI,IAAI;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,KAAgB,EAAE,IAAU,EAAE,QAA0B,EAAE,MAAqB;QAClG,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpH,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,yDAAyD,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7G,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/G,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,IAAI,QAAQ;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,0DAA0D;IAClD,KAAK,CAAC,UAAU,CAAC,KAAgB,EAAE,IAAU;QACnD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;YAAE,OAAO,CAAC,0CAA0C;QACpG,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAA0D,CAAC;QACzG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;YACtC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBACzB,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,KAAK,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,GAAG,CAAC;gBAC3E,OAAO,OAAO,CAAC,KAAK,KAAK,KAAK;oBAC5B,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,WAAW,CAAC;oBACzE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,GAAG,IAAI,gBAAgB,CAAC,EAAE,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC;YACtH,CAAC;YACD,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjF,CAAC;QAED,+EAA+E;QAC/E,IAAI,GAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1H,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;oBACvC,UAAU;oBACV,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;oBACxD,UAAU,EAAE,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAChD,aAAa,EAAE,IAAI;iBACpB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,YAAY;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,eAAe,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxH,IAAI,GAAG,YAAY,iBAAiB;gBAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,yBAAyB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACxI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjH,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,iFAAiF;IACzE,gBAAgB,CAAC,UAAkB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QACpI,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3D,IAAI,IAAI;YAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE,EAAE,MAAM,EAAE,kCAAkC,IAAI,GAAG,EAAE,CAAC;QACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,QAAQ;YAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,+BAA+B;IAE/B;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAO,GAAuB,EAAE;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC9C,MAAM,IAAI,cAAc,CAAC,2BAA2B,EAAE,aAAa,UAAU,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,oCAAoC,UAAU,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/H,CAAC;QACD,IAAI,IAAI,GAA0D,IAAI,CAAC;QACvE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,cAAc,CAAC,sBAAsB,EAAE,aAAa,UAAU,uCAAuC,CAAC,CAAC;YAC3H,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,WAAW,QAAQ,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpH,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,cAAc,CAAC,yBAAyB,EAAE,IAAI,GAAG,yCAAyC,QAAQ,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/I,CAAC;YACD,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,MAAM,UAAU,QAAQ,aAAa,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YACtJ,CAAC;YACD,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,cAAc,CAAC,uBAAuB,EAAE,QAAQ,MAAM,yBAAyB,QAAQ,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACxI,IAAI,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACtD,CAAC;QACD,gGAAgG;QAChG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAmC,MAAM,CAAC,MAAM,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,UAAU;YACV,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;YAChC,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI;YAChC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI;YAC5B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;YACxD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC1D,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,0BAA0B,CAAC;YACpH,MAAM,IAAI,cAAc,CAAC,yBAAyB,EAAE,6CAA6C,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,oCAAoC;IAEpC,qGAAqG;IACrG,MAAM,CAAC,UAAkB,EAAE,OAAO,GAA6B,EAAE;QAC/D,OAAO,cAAc,CACnB;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC3B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,EACD,UAAU,CACX,CAAC;IACJ,CAAC;IAED,wFAAwF;IACxF,aAAa,CAAC,UAAkB;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,8EAA8E;IAC9E,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/H,CAAC;IAED,uEAAuE;IACvE,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,oEAAoE;IACpE,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAsB,EAAE;YAC7B,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACpF,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,IAAI,EAAE,CAAC,CAAC,UAAU;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,IAAI,KAAK;gBAChE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,IAAI;gBAC3C,UAAU,EAAE,MAAM;gBAClB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Read access to the persistent scheduling state (active runs, locks, blocks,
3
+ * cron firings). The planning step and the dry-run only read through this
4
+ * interface; reservations go through the repositories directly.
5
+ */
6
+ import type { CronFiringRecord, Repositories } from '../persistence/index.js';
7
+ /** Read-only view on runs/locks/blocks used for planning and dry-runs. */
8
+ export interface SchedulingState {
9
+ /** Active runs (all triggers incl. manual and `recovery_pending`), optionally per workflow. */
10
+ countActive(workflowId?: string): number;
11
+ /** Run holding the item lock of `workflowId`, or `null`. */
12
+ activeRunForItem(workflowId: string, itemKey: string): {
13
+ id: string;
14
+ } | null;
15
+ /** Active retry block for workflow/item (`itemKey = null` → workflow scope), or `null`. */
16
+ activeBlock(workflowId: string, itemKey: string | null): {
17
+ id: number;
18
+ reason: string;
19
+ } | null;
20
+ /** Recent cron firings of a workflow, newest slot first. */
21
+ recentCronFirings(workflowId: string, limit: number): CronFiringRecord[];
22
+ }
23
+ /** {@link SchedulingState} over the repositories. */
24
+ export declare function repositoryState(repos: Pick<Repositories, 'runs' | 'blocks' | 'cronFirings'>): SchedulingState;
25
+ /** Empty state (no database available, e.g. a local CLI dry-run without data dir). */
26
+ export declare function emptyState(): SchedulingState;
@@ -0,0 +1,25 @@
1
+ /** {@link SchedulingState} over the repositories. */
2
+ export function repositoryState(repos) {
3
+ return {
4
+ countActive: (workflowId) => repos.runs.countActive(workflowId),
5
+ activeRunForItem: (workflowId, itemKey) => {
6
+ const run = repos.runs.activeRunForItem(workflowId, itemKey);
7
+ return run ? { id: run.id } : null;
8
+ },
9
+ activeBlock: (workflowId, itemKey) => {
10
+ const block = repos.blocks.activeFor(workflowId, itemKey);
11
+ return block ? { id: block.id, reason: block.reason } : null;
12
+ },
13
+ recentCronFirings: (workflowId, limit) => repos.cronFirings.listForWorkflow(workflowId, limit),
14
+ };
15
+ }
16
+ /** Empty state (no database available, e.g. a local CLI dry-run without data dir). */
17
+ export function emptyState() {
18
+ return {
19
+ countActive: () => 0,
20
+ activeRunForItem: () => null,
21
+ activeBlock: () => null,
22
+ recentCronFirings: () => [],
23
+ };
24
+ }
25
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/scheduler/state.ts"],"names":[],"mappings":"AAmBA,qDAAqD;AACrD,MAAM,UAAU,eAAe,CAAC,KAA4D;IAC1F,OAAO;QACL,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;QAC/D,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,CAAC;QACD,iBAAiB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC;KAC/F,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;QAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;QACvB,iBAAiB,EAAE,GAAG,EAAE,CAAC,EAAE;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Diagnostic types of the scheduler (Spec §7, §19): planning diagnosis per
3
+ * workflow (kept in memory for GUI/API), dry-run results and cron status.
4
+ * All types are plain JSON-serializable data.
5
+ */
6
+ import type { FilterNode } from '../core/index.js';
7
+ import type { TriggerConfig } from '../config/index.js';
8
+ import type { CronFiringRecord } from '../persistence/index.js';
9
+ import type { FilterTrace, TraceValue } from '../filters/index.js';
10
+ /**
11
+ * Decision for one source candidate in a planning step or dry-run.
12
+ *
13
+ * - `started` – reserved and handed to the run controller (planning step only).
14
+ * - `would_start` – dry-run: every check passed and a slot is free.
15
+ * - `pending_checks` – dry-run: declaratively eligible and a slot is free, but
16
+ * shell filter / conditions were not executed (`not_evaluated`).
17
+ * - `filtered` – the declarative filter is `false`.
18
+ * - `filter_unknown` – the declarative filter is `unknown` (not startable, Spec §6).
19
+ * - `shell_filter_rejected` / `shell_filter_unknown` – shell filter exit 1 / check error.
20
+ * - `condition_failed` / `condition_unknown` – a workflow or item condition is false / unknown.
21
+ * - `locked` – an active run of the same workflow holds the item lock.
22
+ * - `blocked` – an active retry block exists for the workflow/item.
23
+ * - `workflow_limit` / `global_limit` – no free slot.
24
+ * - `workflow_unavailable` – the workflow was disabled/removed/changed during the planning step.
25
+ * - `gate_closed` – automatic starts were paused/stopped during the planning step.
26
+ * - `start_failed` – reservation or controller start failed unexpectedly.
27
+ */
28
+ export type CandidateDecision = 'started' | 'would_start' | 'pending_checks' | 'filtered' | 'filter_unknown' | 'shell_filter_rejected' | 'shell_filter_unknown' | 'condition_failed' | 'condition_unknown' | 'locked' | 'blocked' | 'workflow_limit' | 'global_limit' | 'workflow_unavailable' | 'gate_closed' | 'start_failed';
29
+ /** Kind of a shell check. */
30
+ export type CheckKind = 'workflow_condition' | 'item_condition' | 'shell_filter';
31
+ /** Diagnosis of one shell check (shell filter or condition). */
32
+ export interface CheckDiagnosis {
33
+ kind: CheckKind;
34
+ /** Index in `conditions.workflow` / `conditions.item` (0 for the shell filter). */
35
+ index: number;
36
+ command: string;
37
+ /** `not_evaluated` = not executed (dry-run, or skipped because an earlier check already decided). */
38
+ value: TraceValue;
39
+ /** Served from the workflow-condition cache. */
40
+ cached: boolean;
41
+ exitCode: number | null;
42
+ /** Error detail when `value` is `unknown`. */
43
+ error: string | null;
44
+ durationMs: number | null;
45
+ }
46
+ /** Diagnosis of one source candidate. */
47
+ export interface CandidateDiagnosis {
48
+ workflowId: string;
49
+ sourceId: string;
50
+ itemId: string;
51
+ itemKey: string;
52
+ url: string;
53
+ title: string | null;
54
+ createdAt: string | null;
55
+ /** Effective workflow priority (overrides applied). */
56
+ workflowPriority: number;
57
+ itemPriority: number;
58
+ /** Index of the matching `item_priority` rule, `null` = default. */
59
+ matchedPriorityRule: number | null;
60
+ decision: CandidateDecision;
61
+ /** Human-readable explanation. */
62
+ reason: string | null;
63
+ /** Trace of the declarative filter (`null` if the workflow has none). */
64
+ filter: FilterTrace | null;
65
+ shellFilter: CheckDiagnosis | null;
66
+ itemConditions: CheckDiagnosis[];
67
+ /** Started run (`started`) or lock holder (`locked`). */
68
+ runId: string | null;
69
+ /** Active block (`blocked`). */
70
+ blockId: number | null;
71
+ }
72
+ /** Status of a workflow in the last planning step. */
73
+ export type WorkflowPlanningStatus = 'ok' | 'disabled' | 'source_error';
74
+ /** Last planning diagnosis of one source workflow (in memory, Spec §7). */
75
+ export interface WorkflowPlanningDiagnosis {
76
+ workflowId: string;
77
+ /** Planning step start (ISO-8601). */
78
+ at: string;
79
+ status: WorkflowPlanningStatus;
80
+ /** Source problem (`source_error`), e.g. API failure or missing adapter. */
81
+ error: string | null;
82
+ sourceId: string;
83
+ /** Number of items returned by the source (after de-duplication). */
84
+ polled: number;
85
+ /** Pushed-down part of the filter (informational). */
86
+ pushdown: FilterNode | null;
87
+ /** Workflow conditions, evaluated at most once per planning step (`not_evaluated` if no candidate needed them). */
88
+ conditions: CheckDiagnosis[];
89
+ /** Candidates in planning order (startable order first, rejected-by-cheap-filter last). */
90
+ candidates: CandidateDiagnosis[];
91
+ /** Candidate entries dropped because of {@link MAX_DIAGNOSED_CANDIDATES}. */
92
+ omittedCandidates: number;
93
+ /** Runs started for this workflow in the step. */
94
+ startedRunIds: string[];
95
+ }
96
+ /** Why a planning step (or cron slot) could not start anything automatically. */
97
+ export type GateReason = 'not_ready' | 'paused' | 'draining';
98
+ /** Summary of one planning step. */
99
+ export interface PlanningStepReport {
100
+ startedAt: string;
101
+ finishedAt: string;
102
+ /** Set when the step was skipped as a whole (controller gate). */
103
+ skipped: GateReason | null;
104
+ /** Runs started in this step. */
105
+ startedRunIds: string[];
106
+ /** Diagnoses of the source workflows considered in this step. */
107
+ workflows: WorkflowPlanningDiagnosis[];
108
+ }
109
+ /**
110
+ * Decision vocabulary of `cron_firings.decision` (Spec §5.5, §7):
111
+ * - `started` – a run was reserved for the slot (`run_id` set);
112
+ * - `skipped_missed` – slot passed while the orchestrator was down or the
113
+ * slot was handled too late (beyond the misfire tolerance); never caught up;
114
+ * - `skipped_disabled` – workflow disabled (config or override);
115
+ * - `skipped_paused` / `skipped_not_ready` / `skipped_draining` – controller gate;
116
+ * - `skipped_limit` – global or workflow limit reached;
117
+ * - `skipped_blocked` – active workflow-scope retry block;
118
+ * - `skipped_condition` / `skipped_condition_unknown` – a workflow condition is false / unknown;
119
+ * - `skipped_lock` – the slot's lock is held (defensive, should not happen);
120
+ * - `start_failed` – reservation/start failed unexpectedly.
121
+ */
122
+ export type CronSlotDecision = 'started' | 'skipped_missed' | 'skipped_disabled' | 'skipped_paused' | 'skipped_not_ready' | 'skipped_draining' | 'skipped_limit' | 'skipped_blocked' | 'skipped_condition' | 'skipped_condition_unknown' | 'skipped_lock' | 'start_failed';
123
+ /** Cron status of one schedule workflow (for GUI/API). */
124
+ export interface CronWorkflowStatus {
125
+ workflowId: string;
126
+ cron: string;
127
+ timezone: string;
128
+ /** Effective `enabled` (slots of disabled workflows are recorded as `skipped_disabled`). */
129
+ enabled: boolean;
130
+ /** Next slot the timer is armed for (ISO-8601 UTC), `null` if none. */
131
+ nextSlot: string | null;
132
+ /** Latest persisted firing (any decision). */
133
+ lastFiring: CronFiringRecord | null;
134
+ /** Diagnosis of the workflow conditions at the last slot that evaluated them. */
135
+ lastConditions: CheckDiagnosis[];
136
+ }
137
+ /** Capacity numbers (active = all active runs incl. manual and `recovery_pending`). */
138
+ export interface CapacityInfo {
139
+ global: {
140
+ active: number;
141
+ max: number;
142
+ };
143
+ workflow: {
144
+ active: number;
145
+ max: number;
146
+ };
147
+ }
148
+ /** Controller gate as seen by a dry-run (`null` when no controller is available, e.g. CLI). */
149
+ export interface GateInfo {
150
+ canStartAutomatically: boolean;
151
+ reason: GateReason | null;
152
+ }
153
+ /** Dry-run decision for the next cron slot. */
154
+ export type CronSlotForecast = 'would_start' | 'pending_checks' | 'skipped_disabled' | 'skipped_limit' | 'skipped_blocked' | 'skipped_paused' | 'skipped_not_ready' | 'skipped_draining';
155
+ /** Structured dry-run result (CLI / API / GUI), Spec §19. */
156
+ export interface DryRunResult {
157
+ workflowId: string;
158
+ name: string;
159
+ trigger: TriggerConfig;
160
+ generatedAt: string;
161
+ /** Effective values (overrides applied). */
162
+ enabled: boolean;
163
+ workflowPriority: number;
164
+ capacity: CapacityInfo;
165
+ gate: GateInfo | null;
166
+ /** Workflow conditions – never executed in a dry-run (`not_evaluated`). */
167
+ conditions: CheckDiagnosis[];
168
+ /** Source workflows only. */
169
+ source: {
170
+ sourceId: string;
171
+ polled: number;
172
+ pushdown: FilterNode | null;
173
+ error: string | null;
174
+ } | null;
175
+ /** Source workflows only; planning order, cheap-filter rejections last. */
176
+ candidates: CandidateDiagnosis[];
177
+ /** Schedule workflows only. */
178
+ cron: {
179
+ cron: string;
180
+ timezone: string;
181
+ nextSlots: string[];
182
+ nextSlotForecast: CronSlotForecast;
183
+ forecastReason: string | null;
184
+ recentFirings: CronFiringRecord[];
185
+ blockId: number | null;
186
+ } | null;
187
+ /** Notes about the limits of this dry-run (e.g. no database, no controller). */
188
+ notes: string[];
189
+ summary: {
190
+ candidates: number;
191
+ wouldStart: number;
192
+ pendingChecks: number;
193
+ notStartable: number;
194
+ };
195
+ }
196
+ /** Upper bound of candidate entries kept per workflow diagnosis. */
197
+ export declare const MAX_DIAGNOSED_CANDIDATES = 500;
@@ -0,0 +1,3 @@
1
+ /** Upper bound of candidate entries kept per workflow diagnosis. */
2
+ export const MAX_DIAGNOSED_CANDIDATES = 500;
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":"AAsOA,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Component `service` – public API (WI-12): systemd unit generation and
3
+ * install/uninstall plans. Other components import from this module only.
4
+ */
5
+ export { DEFAULT_SERVICE_USER, DEFAULT_STOP_BUFFER_MS, DEFAULT_UNIT_DIR, DEFAULT_UNIT_NAME, EXIT_CONFIG, computeTimeoutStopSec, formatCliDuration, quoteSystemdArg, renderSystemdUnit, validateUnitOptions, type UnitOptions, } from './unit.js';
6
+ export { PROTECTED_PATHS, ServiceError, assertSafeServicePaths, environmentFileTemplate, executePlan, formatPlan, planInstall, planUninstall, systemRunner, unitFilePath, type ExecResult, type InstallPlanInput, type ServicePlan, type ServiceStep, type SystemRunner, } from './install.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Component `service` – public API (WI-12): systemd unit generation and
3
+ * install/uninstall plans. Other components import from this module only.
4
+ */
5
+ export { DEFAULT_SERVICE_USER, DEFAULT_STOP_BUFFER_MS, DEFAULT_UNIT_DIR, DEFAULT_UNIT_NAME, EXIT_CONFIG, computeTimeoutStopSec, formatCliDuration, quoteSystemdArg, renderSystemdUnit, validateUnitOptions, } from './unit.js';
6
+ export { PROTECTED_PATHS, ServiceError, assertSafeServicePaths, environmentFileTemplate, executePlan, formatPlan, planInstall, planUninstall, systemRunner, unitFilePath, } from './install.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,GAMb,MAAM,cAAc,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { OrchestratorError } from '../core/index.js';
2
+ import { type UnitOptions } from './unit.js';
3
+ /** Error of the service commands (`code` = `service_*`). */
4
+ export declare class ServiceError extends OrchestratorError {
5
+ }
6
+ /** One step of a plan. */
7
+ export type ServiceStep = {
8
+ kind: 'exec';
9
+ description: string;
10
+ argv: string[]; /** failure is reported but does not abort */
11
+ optional?: boolean;
12
+ } | {
13
+ kind: 'write';
14
+ description: string;
15
+ path: string;
16
+ content: string;
17
+ mode: number;
18
+ } | {
19
+ kind: 'remove';
20
+ description: string;
21
+ path: string;
22
+ };
23
+ /** A plan plus notes for the operator. */
24
+ export interface ServicePlan {
25
+ steps: ServiceStep[];
26
+ /** Hints printed before/after (e.g. missing user in a dry run). */
27
+ notes: string[];
28
+ }
29
+ /** Input of {@link planInstall}. */
30
+ export interface InstallPlanInput {
31
+ unit: UnitOptions;
32
+ /** Directory of unit files (default `/etc/systemd/system`). */
33
+ unitDir: string;
34
+ /** Create the service user if it does not exist. */
35
+ createUser: boolean;
36
+ /** Whether the user exists (determined by the caller). */
37
+ userExists: boolean;
38
+ /** Whether the environment file exists already (it is never overwritten). */
39
+ envFileExists: boolean;
40
+ /** `systemctl enable --now` instead of only `enable`. */
41
+ startNow: boolean;
42
+ /** Dry run: report a missing user as a note instead of failing. */
43
+ dryRun: boolean;
44
+ }
45
+ /** Path of the unit file. */
46
+ export declare function unitFilePath(unitDir: string, unitName: string): string;
47
+ /** Template of a new environment file (no secrets, only placeholders). */
48
+ export declare function environmentFileTemplate(unitName: string): string;
49
+ /**
50
+ * System directories that must never be config-dir or data-dir (`install`
51
+ * runs `chown -R` / `chmod -R` on both).
52
+ */
53
+ export declare const PROTECTED_PATHS: readonly string[];
54
+ /**
55
+ * Reject config-dir/data-dir values on which a recursive `chown`/`chmod`
56
+ * would be harmful: system directories, top-level directories (depth < 2),
57
+ * user home directories, and config-dir/data-dir that are equal or nested.
58
+ * Throws {@link ServiceError} (`service_unsafe_path`).
59
+ */
60
+ export declare function assertSafeServicePaths(dirs: {
61
+ configDir: string;
62
+ dataDir: string;
63
+ }): void;
64
+ /** Plan `service install`. Throws {@link ServiceError} if the user is missing and `createUser` is false (not in dry runs). */
65
+ export declare function planInstall(input: InstallPlanInput): ServicePlan;
66
+ /** Plan `service uninstall`: stop + disable, remove the unit file, reload. Config, data and user stay. */
67
+ export declare function planUninstall(input: {
68
+ unitName: string;
69
+ unitDir: string;
70
+ }): ServicePlan;
71
+ /** Human-readable listing of a plan (for `--dry-run`). */
72
+ export declare function formatPlan(plan: ServicePlan): string;
73
+ /** Result of one command. */
74
+ export interface ExecResult {
75
+ code: number;
76
+ stdout: string;
77
+ stderr: string;
78
+ }
79
+ /** System side effects (injectable; tests never use the real one for install/uninstall). */
80
+ export interface SystemRunner {
81
+ exec(argv: string[]): Promise<ExecResult>;
82
+ writeFile(file: string, content: string, mode: number): Promise<void>;
83
+ remove(file: string): Promise<void>;
84
+ exists(file: string): boolean;
85
+ }
86
+ /** Real runner (`execFile`, no shell). */
87
+ export declare const systemRunner: SystemRunner;
88
+ /** Apply a plan step by step; stops at the first failing non-optional step. */
89
+ export declare function executePlan(plan: ServicePlan, runner: SystemRunner, log: (line: string) => void): Promise<{
90
+ ok: boolean;
91
+ failedStep?: ServiceStep;
92
+ error?: string;
93
+ }>;