niceeval 0.18.0 → 0.19.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 (679) hide show
  1. package/INDEX.md +4 -2
  2. package/dist/adapter-usage.cjs.map +1 -1
  3. package/dist/adapter-usage.d.cts +1 -1
  4. package/dist/adapter-usage.d.mts +1 -1
  5. package/dist/adapter-usage.d.ts +1 -1
  6. package/dist/adapter.cjs +8 -7
  7. package/dist/adapter.cjs.map +1 -1
  8. package/dist/adapter.d.cts +21 -21
  9. package/dist/adapter.d.mts +21 -21
  10. package/dist/adapter.d.ts +21 -21
  11. package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
  12. package/dist/agents/agent-effects.cjs.map +1 -0
  13. package/dist/agents/agent-effects.d.cts +23 -0
  14. package/dist/agents/agent-effects.d.mts +23 -0
  15. package/dist/agents/agent-effects.d.ts +23 -0
  16. package/dist/agents/agent-effects.js +16 -0
  17. package/dist/agents/agent-effects.js.map +1 -0
  18. package/dist/agents/ai-sdk.cjs +1 -1
  19. package/dist/agents/ai-sdk.cjs.map +1 -1
  20. package/dist/agents/bub.cjs +31 -18
  21. package/dist/agents/bub.cjs.map +1 -1
  22. package/dist/agents/bub.d.cts +9 -12
  23. package/dist/agents/bub.d.mts +9 -12
  24. package/dist/agents/bub.d.ts +9 -12
  25. package/dist/agents/claude-code-native.cjs +2 -2
  26. package/dist/agents/claude-code-native.cjs.map +1 -1
  27. package/dist/agents/claude-code.cjs +17 -11
  28. package/dist/agents/claude-code.cjs.map +1 -1
  29. package/dist/agents/claude-code.d.cts +11 -11
  30. package/dist/agents/claude-code.d.mts +11 -11
  31. package/dist/agents/claude-code.d.ts +11 -11
  32. package/dist/agents/codex-app-server.cjs +2 -2
  33. package/dist/agents/codex-app-server.cjs.map +1 -1
  34. package/dist/agents/codex.cjs +18 -12
  35. package/dist/agents/codex.cjs.map +1 -1
  36. package/dist/agents/codex.d.cts +12 -12
  37. package/dist/agents/codex.d.mts +12 -12
  38. package/dist/agents/codex.d.ts +12 -12
  39. package/dist/agents/deepseek-harness.cjs +2 -2
  40. package/dist/agents/deepseek-harness.cjs.map +1 -1
  41. package/dist/agents/hermes.cjs +3 -3
  42. package/dist/agents/hermes.cjs.map +1 -1
  43. package/dist/agents/index.cjs +3 -3
  44. package/dist/agents/index.cjs.map +1 -1
  45. package/dist/agents/index.d.cts +3 -3
  46. package/dist/agents/index.d.mts +3 -3
  47. package/dist/agents/index.d.ts +3 -3
  48. package/dist/agents/index.js +2 -2
  49. package/dist/agents/index.mjs +2 -2
  50. package/dist/agents/mcp.cjs.map +1 -1
  51. package/dist/agents/mcp.d.cts +2 -2
  52. package/dist/agents/mcp.d.mts +2 -2
  53. package/dist/agents/mcp.d.ts +2 -2
  54. package/dist/agents/omp.cjs +2 -2
  55. package/dist/agents/omp.cjs.map +1 -1
  56. package/dist/agents/openai-compat.cjs +2 -2
  57. package/dist/agents/openai-compat.cjs.map +1 -1
  58. package/dist/agents/openclaw.cjs +3 -3
  59. package/dist/agents/openclaw.cjs.map +1 -1
  60. package/dist/agents/opencode.cjs +16 -4
  61. package/dist/agents/opencode.cjs.map +1 -1
  62. package/dist/agents/plugin-extensions.cjs +71 -0
  63. package/dist/agents/plugin-extensions.cjs.map +1 -0
  64. package/dist/agents/plugin-extensions.d.cts +26 -0
  65. package/dist/agents/plugin-extensions.d.mts +26 -0
  66. package/dist/agents/plugin-extensions.d.ts +26 -0
  67. package/dist/agents/plugin-extensions.js +8 -0
  68. package/dist/agents/plugin-extensions.js.map +1 -0
  69. package/dist/agents/post-setup.cjs +14 -3
  70. package/dist/agents/post-setup.cjs.map +1 -1
  71. package/dist/agents/post-setup.d.cts +4 -2
  72. package/dist/agents/post-setup.d.mts +4 -2
  73. package/dist/agents/post-setup.d.ts +4 -2
  74. package/dist/agents/post-setup.js +8 -6
  75. package/dist/agents/sdk-streams.cjs +3 -3
  76. package/dist/agents/sdk-streams.cjs.map +1 -1
  77. package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
  78. package/dist/agents/session-key.cjs.map +1 -0
  79. package/dist/agents/session-key.d.cts +12 -0
  80. package/dist/agents/session-key.d.mts +12 -0
  81. package/dist/agents/session-key.d.ts +12 -0
  82. package/dist/agents/session-key.js +6 -0
  83. package/dist/agents/session-key.js.map +1 -0
  84. package/dist/agents/shared.cjs +2 -2
  85. package/dist/agents/shared.cjs.map +1 -1
  86. package/dist/agents/shared.d.cts +4 -4
  87. package/dist/agents/shared.d.mts +4 -4
  88. package/dist/agents/shared.d.ts +4 -4
  89. package/dist/agents/skills.cjs.map +1 -1
  90. package/dist/agents/skills.d.cts +3 -3
  91. package/dist/agents/skills.d.mts +3 -3
  92. package/dist/agents/skills.d.ts +3 -3
  93. package/dist/agents/types.cjs.map +1 -1
  94. package/dist/agents/types.d.cts +55 -54
  95. package/dist/agents/types.d.mts +55 -54
  96. package/dist/agents/types.d.ts +55 -54
  97. package/dist/agents/ui-message-stream.cjs +4 -4
  98. package/dist/agents/ui-message-stream.cjs.map +1 -1
  99. package/dist/agents/unrecognized-events.cjs +32 -0
  100. package/dist/agents/unrecognized-events.cjs.map +1 -0
  101. package/dist/agents/unrecognized-events.d.cts +8 -0
  102. package/dist/agents/unrecognized-events.d.mts +8 -0
  103. package/dist/agents/unrecognized-events.d.ts +8 -0
  104. package/dist/agents/unrecognized-events.js +6 -0
  105. package/dist/agents/unrecognized-events.js.map +1 -0
  106. package/dist/assertions/api.cjs.map +1 -1
  107. package/dist/assertions/api.d.cts +3 -0
  108. package/dist/assertions/api.d.mts +3 -0
  109. package/dist/assertions/api.d.ts +3 -0
  110. package/dist/assertions/collection.cjs +1 -1
  111. package/dist/assertions/collection.cjs.map +1 -1
  112. package/dist/assertions/judge.cjs +1 -1
  113. package/dist/assertions/judge.cjs.map +1 -1
  114. package/dist/assertions/match.cjs +52 -21
  115. package/dist/assertions/match.cjs.map +1 -1
  116. package/dist/assertions/match.d.cts +16 -5
  117. package/dist/assertions/match.d.mts +16 -5
  118. package/dist/assertions/match.d.ts +16 -5
  119. package/dist/assertions/match.js +96 -94
  120. package/dist/assertions/measurements.cjs +22 -6
  121. package/dist/assertions/measurements.cjs.map +1 -1
  122. package/dist/assertions/measurements.d.cts +8 -1
  123. package/dist/assertions/measurements.d.mts +8 -1
  124. package/dist/assertions/measurements.d.ts +8 -1
  125. package/dist/assertions/numeric.cjs +2 -0
  126. package/dist/assertions/numeric.cjs.map +1 -1
  127. package/dist/assertions/numeric.d.cts +1 -1
  128. package/dist/assertions/numeric.d.mts +1 -1
  129. package/dist/assertions/numeric.d.ts +1 -1
  130. package/dist/assertions/quantity.cjs +42 -0
  131. package/dist/assertions/quantity.cjs.map +1 -0
  132. package/dist/assertions/quantity.d.cts +18 -0
  133. package/dist/assertions/quantity.d.mts +18 -0
  134. package/dist/assertions/quantity.d.ts +18 -0
  135. package/dist/assertions/quantity.js +22 -0
  136. package/dist/assertions/quantity.js.map +1 -0
  137. package/dist/assertions/record/attachment.cjs +2 -0
  138. package/dist/assertions/record/attachment.cjs.map +1 -1
  139. package/dist/assertions/record/codec.cjs +5 -1
  140. package/dist/assertions/record/codec.cjs.map +1 -1
  141. package/dist/assertions/record/model.cjs.map +1 -1
  142. package/dist/assertions/record/model.d.cts +3 -1
  143. package/dist/assertions/record/model.d.mts +3 -1
  144. package/dist/assertions/record/model.d.ts +3 -1
  145. package/dist/assertions/runtime.cjs +11 -6
  146. package/dist/assertions/runtime.cjs.map +1 -1
  147. package/dist/cli/program.cjs +3 -0
  148. package/dist/cli/program.cjs.map +1 -1
  149. package/dist/context/assert-first.cjs +6 -4
  150. package/dist/context/assert-first.cjs.map +1 -1
  151. package/dist/context/assert-first.d.cts +9 -3
  152. package/dist/context/assert-first.d.mts +9 -3
  153. package/dist/context/assert-first.d.ts +9 -3
  154. package/dist/context/notes.cjs +47 -0
  155. package/dist/context/notes.cjs.map +1 -0
  156. package/dist/context/notes.d.cts +10 -0
  157. package/dist/context/notes.d.mts +10 -0
  158. package/dist/context/notes.d.ts +10 -0
  159. package/dist/context/notes.js +6 -0
  160. package/dist/context/notes.js.map +1 -0
  161. package/dist/context/send-failures.cjs +1 -7
  162. package/dist/context/send-failures.cjs.map +1 -1
  163. package/dist/context/send-failures.d.cts +2 -3
  164. package/dist/context/send-failures.d.mts +2 -3
  165. package/dist/context/send-failures.d.ts +2 -3
  166. package/dist/context/send-retry.cjs +0 -1
  167. package/dist/context/send-retry.cjs.map +1 -1
  168. package/dist/context/send-retry.d.cts +1 -2
  169. package/dist/context/send-retry.d.mts +1 -2
  170. package/dist/context/send-retry.d.ts +1 -2
  171. package/dist/context/session.cjs +10 -17
  172. package/dist/context/session.cjs.map +1 -1
  173. package/dist/context/session.d.cts +4 -10
  174. package/dist/context/session.d.mts +4 -10
  175. package/dist/context/session.d.ts +4 -10
  176. package/dist/define.cjs +88 -65
  177. package/dist/define.cjs.map +1 -1
  178. package/dist/define.d.cts +3 -3
  179. package/dist/define.d.mts +3 -3
  180. package/dist/define.d.ts +3 -3
  181. package/dist/eval/cli/contribution.cjs +1 -1
  182. package/dist/eval/cli/contribution.cjs.map +1 -1
  183. package/dist/eval/host/index.cjs +1 -1
  184. package/dist/eval/host/index.cjs.map +1 -1
  185. package/dist/eval/record/evaluation.cjs +1 -1
  186. package/dist/eval/record/evaluation.cjs.map +1 -1
  187. package/dist/eval/record/membership-provenance.d.cts +3 -3
  188. package/dist/eval/record/membership-provenance.d.mts +3 -3
  189. package/dist/eval/record/membership-provenance.d.ts +3 -3
  190. package/dist/eval/record/score.cjs +2 -2
  191. package/dist/eval/record/score.cjs.map +1 -1
  192. package/dist/eval/record/sealed-assertion.cjs +1 -1
  193. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  194. package/dist/eval/record/verdict.cjs +2 -2
  195. package/dist/eval/record/verdict.cjs.map +1 -1
  196. package/dist/expect/index.cjs +10 -1
  197. package/dist/expect/index.cjs.map +1 -1
  198. package/dist/expect/index.d.cts +3 -1
  199. package/dist/expect/index.d.mts +3 -1
  200. package/dist/expect/index.d.ts +3 -1
  201. package/dist/expect/index.js +92 -76
  202. package/dist/expect/index.mjs +92 -76
  203. package/dist/experiment/host/cli/contribution.cjs +52 -39
  204. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  205. package/dist/experiment/host/cli/contribution.d.cts +18 -4
  206. package/dist/experiment/host/cli/contribution.d.mts +18 -4
  207. package/dist/experiment/host/cli/contribution.d.ts +18 -4
  208. package/dist/experiment/host/cli/contribution.js +2 -2
  209. package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
  210. package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
  211. package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
  212. package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
  213. package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
  214. package/dist/experiment/host/cli/output-protocol.cjs +1 -1
  215. package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
  216. package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
  217. package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
  218. package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
  219. package/dist/experiment/host/current.cjs +2 -2
  220. package/dist/experiment/host/current.cjs.map +1 -1
  221. package/dist/experiment/host/index.cjs +1 -1
  222. package/dist/experiment/host/index.cjs.map +1 -1
  223. package/dist/experiment/host/operations.cjs +21 -22
  224. package/dist/experiment/host/operations.cjs.map +1 -1
  225. package/dist/experiment/host/runtime.cjs +8 -9
  226. package/dist/experiment/host/runtime.cjs.map +1 -1
  227. package/dist/experiment/host/runtime.d.cts +3 -3
  228. package/dist/experiment/host/runtime.d.mts +3 -3
  229. package/dist/experiment/host/runtime.d.ts +3 -3
  230. package/dist/experiment/host/teardown.cjs +3 -3
  231. package/dist/experiment/host/teardown.cjs.map +1 -1
  232. package/dist/experiment/host/teardown.d.cts +3 -3
  233. package/dist/experiment/host/teardown.d.mts +3 -3
  234. package/dist/experiment/host/teardown.d.ts +3 -3
  235. package/dist/experiment/host/types.cjs.map +1 -1
  236. package/dist/experiment/host/types.d.cts +19 -19
  237. package/dist/experiment/host/types.d.mts +19 -19
  238. package/dist/experiment/host/types.d.ts +19 -19
  239. package/dist/index.cjs +3 -3
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +3 -3
  242. package/dist/index.d.mts +3 -3
  243. package/dist/index.d.ts +3 -3
  244. package/dist/index.js +2 -2
  245. package/dist/index.mjs +2 -2
  246. package/dist/inspection/assertions.cjs +1 -1
  247. package/dist/inspection/assertions.cjs.map +1 -1
  248. package/dist/inspection/cli/contribution.cjs +8 -7
  249. package/dist/inspection/cli/contribution.cjs.map +1 -1
  250. package/dist/inspection/facts.cjs +4 -4
  251. package/dist/inspection/facts.cjs.map +1 -1
  252. package/dist/inspection/index.cjs +1 -5
  253. package/dist/inspection/index.cjs.map +1 -1
  254. package/dist/inspection/index.d.cts +1 -2
  255. package/dist/inspection/index.d.mts +1 -2
  256. package/dist/inspection/index.d.ts +1 -2
  257. package/dist/inspection/index.js +20 -26
  258. package/dist/inspection/lifecycle.cjs +7 -0
  259. package/dist/inspection/lifecycle.cjs.map +1 -0
  260. package/dist/inspection/lifecycle.d.cts +4 -0
  261. package/dist/inspection/lifecycle.d.mts +4 -0
  262. package/dist/inspection/lifecycle.d.ts +4 -0
  263. package/dist/inspection/lifecycle.js +6 -0
  264. package/dist/inspection/lifecycle.js.map +1 -0
  265. package/dist/inspection/notes.cjs +40 -0
  266. package/dist/inspection/notes.cjs.map +1 -0
  267. package/dist/inspection/notes.d.cts +12 -0
  268. package/dist/inspection/notes.d.mts +12 -0
  269. package/dist/inspection/notes.d.ts +12 -0
  270. package/dist/inspection/notes.js +8 -0
  271. package/dist/inspection/notes.js.map +1 -0
  272. package/dist/inspection/overview.cjs +12 -15
  273. package/dist/inspection/overview.cjs.map +1 -1
  274. package/dist/inspection/overview.d.cts +8 -6
  275. package/dist/inspection/overview.d.mts +8 -6
  276. package/dist/inspection/overview.d.ts +8 -6
  277. package/dist/inspection/planned-attempt.cjs +45 -0
  278. package/dist/inspection/planned-attempt.cjs.map +1 -0
  279. package/dist/inspection/planned-attempt.d.cts +109 -0
  280. package/dist/inspection/planned-attempt.d.mts +109 -0
  281. package/dist/inspection/planned-attempt.d.ts +109 -0
  282. package/dist/inspection/planned-attempt.js +24 -0
  283. package/dist/inspection/planned-attempt.js.map +1 -0
  284. package/dist/inspection/project-result.cjs +5 -5
  285. package/dist/inspection/project-result.cjs.map +1 -1
  286. package/dist/inspection/project-result.d.cts +58 -57
  287. package/dist/inspection/project-result.d.mts +58 -57
  288. package/dist/inspection/project-result.d.ts +58 -57
  289. package/dist/inspection/project-result.js +4 -4
  290. package/dist/inspection/project.cjs +3 -3
  291. package/dist/inspection/project.cjs.map +1 -1
  292. package/dist/inspection/protocol-values.cjs +1 -1
  293. package/dist/inspection/protocol-values.cjs.map +1 -1
  294. package/dist/inspection/protocol-values.d.cts +1 -1
  295. package/dist/inspection/protocol-values.d.mts +1 -1
  296. package/dist/inspection/protocol-values.d.ts +1 -1
  297. package/dist/inspection/protocol.cjs +8 -8
  298. package/dist/inspection/protocol.cjs.map +1 -1
  299. package/dist/inspection/protocol.d.cts +237 -219
  300. package/dist/inspection/protocol.d.mts +237 -219
  301. package/dist/inspection/protocol.d.ts +237 -219
  302. package/dist/inspection/public.cjs +1 -5
  303. package/dist/inspection/public.cjs.map +1 -1
  304. package/dist/inspection/public.d.cts +1 -2
  305. package/dist/inspection/public.d.mts +1 -2
  306. package/dist/inspection/public.d.ts +1 -2
  307. package/dist/inspection/public.js +14 -20
  308. package/dist/inspection/public.mjs +166 -129
  309. package/dist/inspection/query.cjs +1 -1
  310. package/dist/inspection/query.cjs.map +1 -1
  311. package/dist/inspection/results.cjs +61 -52
  312. package/dist/inspection/results.cjs.map +1 -1
  313. package/dist/inspection/results.d.cts +157 -140
  314. package/dist/inspection/results.d.mts +157 -140
  315. package/dist/inspection/results.d.ts +157 -140
  316. package/dist/inspection/select.cjs +33 -28
  317. package/dist/inspection/select.cjs.map +1 -1
  318. package/dist/inspection/source.cjs +1 -1
  319. package/dist/inspection/source.cjs.map +1 -1
  320. package/dist/inspection/sources.cjs +2 -2
  321. package/dist/inspection/sources.cjs.map +1 -1
  322. package/dist/inspection/trace.cjs +9 -8
  323. package/dist/inspection/trace.cjs.map +1 -1
  324. package/dist/inspection/trace.d.cts +4 -4
  325. package/dist/inspection/trace.d.mts +4 -4
  326. package/dist/inspection/trace.d.ts +4 -4
  327. package/dist/loaders/index.cjs +7 -279
  328. package/dist/loaders/index.cjs.map +1 -1
  329. package/dist/loaders/index.d.cts +2 -95
  330. package/dist/loaders/index.d.mts +2 -95
  331. package/dist/loaders/index.d.ts +2 -95
  332. package/dist/loaders/index.js +10 -12
  333. package/dist/loaders/index.mjs +10 -12
  334. package/dist/loaders/runtime.cjs +283 -0
  335. package/dist/loaders/runtime.cjs.map +1 -0
  336. package/dist/loaders/runtime.d.cts +95 -0
  337. package/dist/loaders/runtime.d.mts +95 -0
  338. package/dist/loaders/runtime.d.ts +95 -0
  339. package/dist/loaders/runtime.js +16 -0
  340. package/dist/loaders/runtime.js.map +1 -0
  341. package/dist/migrations/judge-provider.md +6 -6
  342. package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
  343. package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
  344. package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
  345. package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
  346. package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
  347. package/dist/model-roles.js +14 -0
  348. package/dist/model-roles.js.map +1 -0
  349. package/dist/o11y/adapter-usage-projection.cjs +9 -8
  350. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  351. package/dist/o11y/adapter-usage-projection.d.cts +23 -15
  352. package/dist/o11y/adapter-usage-projection.d.mts +23 -15
  353. package/dist/o11y/adapter-usage-projection.d.ts +23 -15
  354. package/dist/o11y/cache-read.cjs +14 -14
  355. package/dist/o11y/cache-read.cjs.map +1 -1
  356. package/dist/o11y/cache-read.d.cts +5 -5
  357. package/dist/o11y/cache-read.d.mts +5 -5
  358. package/dist/o11y/cache-read.d.ts +5 -5
  359. package/dist/o11y/derive.cjs.map +1 -1
  360. package/dist/o11y/derive.d.cts +2 -2
  361. package/dist/o11y/derive.d.mts +2 -2
  362. package/dist/o11y/derive.d.ts +2 -2
  363. package/dist/o11y/eval-usage.cjs +9 -9
  364. package/dist/o11y/eval-usage.cjs.map +1 -1
  365. package/dist/o11y/eval-usage.d.cts +7 -7
  366. package/dist/o11y/eval-usage.d.mts +7 -7
  367. package/dist/o11y/eval-usage.d.ts +7 -7
  368. package/dist/o11y/parsers/bub.cjs +57 -81
  369. package/dist/o11y/parsers/bub.cjs.map +1 -1
  370. package/dist/o11y/parsers/index.cjs.map +1 -1
  371. package/dist/o11y/parsers/index.d.cts +2 -0
  372. package/dist/o11y/parsers/index.d.mts +2 -0
  373. package/dist/o11y/parsers/index.d.ts +2 -0
  374. package/dist/o11y/parsers/opencode.cjs +129 -217
  375. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  376. package/dist/o11y/parsers/opencode.d.cts +2 -5
  377. package/dist/o11y/parsers/opencode.d.mts +2 -5
  378. package/dist/o11y/parsers/opencode.d.ts +2 -5
  379. package/dist/o11y/types.cjs.map +1 -1
  380. package/dist/o11y/types.d.cts +1 -1
  381. package/dist/o11y/types.d.mts +1 -1
  382. package/dist/o11y/types.d.ts +1 -1
  383. package/dist/plugin/contracts.cjs +170 -120
  384. package/dist/plugin/contracts.cjs.map +1 -1
  385. package/dist/plugin/contracts.d.cts +102 -90
  386. package/dist/plugin/contracts.d.mts +102 -90
  387. package/dist/plugin/contracts.d.ts +102 -90
  388. package/dist/plugin/contracts.js +16 -12
  389. package/dist/plugin/index.cjs.map +1 -1
  390. package/dist/plugin/index.d.cts +1 -1
  391. package/dist/plugin/index.d.mts +1 -1
  392. package/dist/plugin/index.d.ts +1 -1
  393. package/dist/plugin/link.cjs +69 -64
  394. package/dist/plugin/link.cjs.map +1 -1
  395. package/dist/plugin/link.d.cts +5 -3
  396. package/dist/plugin/link.d.mts +5 -3
  397. package/dist/plugin/link.d.ts +5 -3
  398. package/dist/plugin/link.js +12 -8
  399. package/dist/record/codec/seal-manifest.d.cts +3 -3
  400. package/dist/record/codec/seal-manifest.d.mts +3 -3
  401. package/dist/record/codec/seal-manifest.d.ts +3 -3
  402. package/dist/record/family/attempt-note/definition.cjs +12 -0
  403. package/dist/record/family/attempt-note/definition.cjs.map +1 -0
  404. package/dist/record/family/attempt-note/definition.d.cts +6 -0
  405. package/dist/record/family/attempt-note/definition.d.mts +6 -0
  406. package/dist/record/family/attempt-note/definition.d.ts +6 -0
  407. package/dist/record/family/attempt-note/definition.js +6 -0
  408. package/dist/record/family/attempt-note/definition.js.map +1 -0
  409. package/dist/record/family/attempt-note/persistence.cjs +10 -0
  410. package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
  411. package/dist/record/family/attempt-note/persistence.d.cts +6 -0
  412. package/dist/record/family/attempt-note/persistence.d.mts +6 -0
  413. package/dist/record/family/attempt-note/persistence.d.ts +6 -0
  414. package/dist/record/family/attempt-note/persistence.js +6 -0
  415. package/dist/record/family/attempt-note/persistence.js.map +1 -0
  416. package/dist/record/family/attempt-note/schema.cjs +20 -0
  417. package/dist/record/family/attempt-note/schema.cjs.map +1 -0
  418. package/dist/record/family/attempt-note/schema.d.cts +21 -0
  419. package/dist/record/family/attempt-note/schema.d.mts +21 -0
  420. package/dist/record/family/attempt-note/schema.d.ts +21 -0
  421. package/dist/record/family/attempt-note/schema.js +10 -0
  422. package/dist/record/family/attempt-note/schema.js.map +1 -0
  423. package/dist/record/family/catalog.cjs +32 -29
  424. package/dist/record/family/catalog.cjs.map +1 -1
  425. package/dist/record/family/catalog.d.cts +7 -2
  426. package/dist/record/family/catalog.d.mts +7 -2
  427. package/dist/record/family/catalog.d.ts +7 -2
  428. package/dist/record/family/current.cjs +48 -45
  429. package/dist/record/family/current.cjs.map +1 -1
  430. package/dist/record/family/current.d.cts +15 -0
  431. package/dist/record/family/current.d.mts +15 -0
  432. package/dist/record/family/current.d.ts +15 -0
  433. package/dist/record/model/index.js +66 -64
  434. package/dist/record/model/run-context.cjs +9 -3
  435. package/dist/record/model/run-context.cjs.map +1 -1
  436. package/dist/record/model/run-context.d.cts +9 -2
  437. package/dist/record/model/run-context.d.mts +9 -2
  438. package/dist/record/model/run-context.d.ts +9 -2
  439. package/dist/record/model/run-context.js +8 -6
  440. package/dist/record/model/seal-manifest.d.cts +1 -1
  441. package/dist/record/model/seal-manifest.d.mts +1 -1
  442. package/dist/record/model/seal-manifest.d.ts +1 -1
  443. package/dist/run/cli/contribution.cjs +6 -32
  444. package/dist/run/cli/contribution.cjs.map +1 -1
  445. package/dist/run/host/runtime.cjs +1 -1
  446. package/dist/run/host/runtime.cjs.map +1 -1
  447. package/dist/run/storage/sqlite.cjs +7 -7
  448. package/dist/run/storage/sqlite.cjs.map +1 -1
  449. package/dist/runner/adapter-usage.cjs +5 -3
  450. package/dist/runner/adapter-usage.cjs.map +1 -1
  451. package/dist/runner/adapter-usage.d.cts +2 -2
  452. package/dist/runner/adapter-usage.d.mts +2 -2
  453. package/dist/runner/adapter-usage.d.ts +2 -2
  454. package/dist/runner/adoption.cjs +9 -12
  455. package/dist/runner/adoption.cjs.map +1 -1
  456. package/dist/runner/attempt-notes.cjs +8 -0
  457. package/dist/runner/attempt-notes.cjs.map +1 -0
  458. package/dist/runner/attempt-notes.d.cts +4 -0
  459. package/dist/runner/attempt-notes.d.mts +4 -0
  460. package/dist/runner/attempt-notes.d.ts +4 -0
  461. package/dist/runner/attempt-notes.js +8 -0
  462. package/dist/runner/attempt-notes.js.map +1 -0
  463. package/dist/runner/attempt.cjs +61 -73
  464. package/dist/runner/attempt.cjs.map +1 -1
  465. package/dist/runner/attempt.d.cts +3 -3
  466. package/dist/runner/attempt.d.mts +3 -3
  467. package/dist/runner/attempt.d.ts +3 -3
  468. package/dist/runner/command-plan.cjs +21 -26
  469. package/dist/runner/command-plan.cjs.map +1 -1
  470. package/dist/runner/command-plan.d.cts +4 -4
  471. package/dist/runner/command-plan.d.mts +4 -4
  472. package/dist/runner/command-plan.d.ts +4 -4
  473. package/dist/runner/command-plan.js +4 -4
  474. package/dist/runner/config-identity.cjs.map +1 -1
  475. package/dist/runner/config-identity.d.cts +2 -2
  476. package/dist/runner/config-identity.d.mts +2 -2
  477. package/dist/runner/config-identity.d.ts +2 -2
  478. package/dist/runner/discover.cjs +6 -6
  479. package/dist/runner/discover.cjs.map +1 -1
  480. package/dist/runner/eval-selection.cjs +2 -2
  481. package/dist/runner/eval-selection.cjs.map +1 -1
  482. package/dist/runner/eval-selection.d.cts +2 -2
  483. package/dist/runner/eval-selection.d.mts +2 -2
  484. package/dist/runner/eval-selection.d.ts +2 -2
  485. package/dist/runner/feedback/human.cjs +1 -1
  486. package/dist/runner/feedback/human.cjs.map +1 -1
  487. package/dist/runner/feedback/json.cjs +4 -2
  488. package/dist/runner/feedback/json.cjs.map +1 -1
  489. package/dist/runner/feedback/json.d.cts +1 -1
  490. package/dist/runner/feedback/json.d.mts +1 -1
  491. package/dist/runner/feedback/json.d.ts +1 -1
  492. package/dist/runner/feedback/sink.cjs +1 -1
  493. package/dist/runner/feedback/sink.cjs.map +1 -1
  494. package/dist/runner/feedback/sink.d.cts +1 -1
  495. package/dist/runner/feedback/sink.d.mts +1 -1
  496. package/dist/runner/feedback/sink.d.ts +1 -1
  497. package/dist/runner/fingerprint.cjs +1 -1
  498. package/dist/runner/fingerprint.cjs.map +1 -1
  499. package/dist/runner/project-target.cjs.map +1 -1
  500. package/dist/runner/project-target.d.cts +2 -2
  501. package/dist/runner/project-target.d.mts +2 -2
  502. package/dist/runner/project-target.d.ts +2 -2
  503. package/dist/runner/record/attachments.cjs +2 -2
  504. package/dist/runner/record/attachments.cjs.map +1 -1
  505. package/dist/runner/record/planning.cjs +8 -2
  506. package/dist/runner/record/planning.cjs.map +1 -1
  507. package/dist/runner/record.cjs +2 -0
  508. package/dist/runner/record.cjs.map +1 -1
  509. package/dist/runner/report.cjs +3 -3
  510. package/dist/runner/report.cjs.map +1 -1
  511. package/dist/runner/report.d.cts +1 -1
  512. package/dist/runner/report.d.mts +1 -1
  513. package/dist/runner/report.d.ts +1 -1
  514. package/dist/runner/reuse-plan.cjs +2 -2
  515. package/dist/runner/reuse-plan.cjs.map +1 -1
  516. package/dist/runner/run.cjs +10 -45
  517. package/dist/runner/run.cjs.map +1 -1
  518. package/dist/runner/sandbox-pool.cjs +1 -2
  519. package/dist/runner/sandbox-pool.cjs.map +1 -1
  520. package/dist/runner/setup-prefix-preparation.cjs +1 -1
  521. package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
  522. package/dist/runner/teardown-registry.cjs +2 -2
  523. package/dist/runner/teardown-registry.cjs.map +1 -1
  524. package/dist/runner/teardown-registry.d.cts +1 -1
  525. package/dist/runner/teardown-registry.d.mts +1 -1
  526. package/dist/runner/teardown-registry.d.ts +1 -1
  527. package/dist/runner/types.cjs +4 -4
  528. package/dist/runner/types.cjs.map +1 -1
  529. package/dist/runner/types.d.cts +64 -93
  530. package/dist/runner/types.d.mts +64 -93
  531. package/dist/runner/types.d.ts +64 -93
  532. package/dist/runner/types.js +2 -2
  533. package/dist/sandbox/action.cjs +1 -1
  534. package/dist/sandbox/action.cjs.map +1 -1
  535. package/dist/sandbox/cli/contribution.cjs +17 -14
  536. package/dist/sandbox/cli/contribution.cjs.map +1 -1
  537. package/dist/sandbox/cli/contribution.d.cts +1 -1
  538. package/dist/sandbox/cli/contribution.d.mts +1 -1
  539. package/dist/sandbox/cli/contribution.d.ts +1 -1
  540. package/dist/sandbox/commands.cjs +1 -1
  541. package/dist/sandbox/commands.cjs.map +1 -1
  542. package/dist/sandbox/commands.d.cts +1 -1
  543. package/dist/sandbox/commands.d.mts +1 -1
  544. package/dist/sandbox/commands.d.ts +1 -1
  545. package/dist/sandbox/compose.cjs +2 -2
  546. package/dist/sandbox/compose.cjs.map +1 -1
  547. package/dist/sandbox/docker-profile/registry.cjs +5 -9
  548. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  549. package/dist/sandbox/docker-profile/registry.d.cts +0 -3
  550. package/dist/sandbox/docker-profile/registry.d.mts +0 -3
  551. package/dist/sandbox/docker-profile/registry.d.ts +0 -3
  552. package/dist/sandbox/docker-profile/registry.js +6 -12
  553. package/dist/sandbox/docker-profile/runtime.cjs +1 -1
  554. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  555. package/dist/sandbox/docker-profile/schema.cjs +12 -16
  556. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  557. package/dist/sandbox/docker-profile/schema.d.cts +2 -6
  558. package/dist/sandbox/docker-profile/schema.d.mts +2 -6
  559. package/dist/sandbox/docker-profile/schema.d.ts +2 -6
  560. package/dist/sandbox/docker-profile/schema.js +24 -32
  561. package/dist/sandbox/incus.cjs +2 -2
  562. package/dist/sandbox/incus.cjs.map +1 -1
  563. package/dist/sandbox/index.cjs +4 -35
  564. package/dist/sandbox/index.cjs.map +1 -1
  565. package/dist/sandbox/index.d.cts +4 -8
  566. package/dist/sandbox/index.d.mts +4 -8
  567. package/dist/sandbox/index.d.ts +4 -8
  568. package/dist/sandbox/index.js +116 -172
  569. package/dist/sandbox/index.mjs +116 -172
  570. package/dist/sandbox/layer.cjs +3 -3
  571. package/dist/sandbox/layer.cjs.map +1 -1
  572. package/dist/sandbox/link.cjs +5 -0
  573. package/dist/sandbox/link.cjs.map +1 -1
  574. package/dist/sandbox/link.d.cts +3 -0
  575. package/dist/sandbox/link.d.mts +3 -0
  576. package/dist/sandbox/link.d.ts +3 -0
  577. package/dist/sandbox/runtime.cjs +9 -4
  578. package/dist/sandbox/runtime.cjs.map +1 -1
  579. package/dist/shared/failure-class.cjs +5 -5
  580. package/dist/shared/failure-class.cjs.map +1 -1
  581. package/dist/shared/failure-class.d.cts +4 -10
  582. package/dist/shared/failure-class.d.mts +4 -10
  583. package/dist/shared/failure-class.d.ts +4 -10
  584. package/dist/shared/types.cjs.map +1 -1
  585. package/dist/shared/types.d.cts +1 -1
  586. package/dist/shared/types.d.mts +1 -1
  587. package/dist/shared/types.d.ts +1 -1
  588. package/dist/show/contribution.cjs +17 -2
  589. package/dist/show/contribution.cjs.map +1 -1
  590. package/dist/show/contribution.d.cts +14 -0
  591. package/dist/show/contribution.d.mts +14 -0
  592. package/dist/show/contribution.d.ts +14 -0
  593. package/dist/show/model.cjs +8 -5
  594. package/dist/show/model.cjs.map +1 -1
  595. package/dist/show/model.d.cts +11 -8
  596. package/dist/show/model.d.mts +11 -8
  597. package/dist/show/model.d.ts +11 -8
  598. package/dist/show/render.cjs +34 -22
  599. package/dist/show/render.cjs.map +1 -1
  600. package/dist/sources/projector.cjs +1 -1
  601. package/dist/sources/projector.cjs.map +1 -1
  602. package/dist/types.cjs +1 -1
  603. package/dist/types.cjs.map +1 -1
  604. package/dist/types.d.cts +1 -1
  605. package/dist/types.d.mts +1 -1
  606. package/dist/types.d.ts +1 -1
  607. package/dist/types.js +2 -2
  608. package/dist/view/app-dist/.vite/manifest.json +2 -2
  609. package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
  610. package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
  611. package/dist/view/app-dist/index.html +1 -1
  612. package/dist/view/cli/contribution.cjs +1 -1
  613. package/dist/view/cli/contribution.cjs.map +1 -1
  614. package/dist/view/function-runtime.mjs +318 -121
  615. package/dist/view/http-protocol.d.cts +1 -1
  616. package/dist/view/http-protocol.d.mts +1 -1
  617. package/dist/view/http-protocol.d.ts +1 -1
  618. package/dist/view/inspection-host.cjs +2 -2
  619. package/dist/view/inspection-host.cjs.map +1 -1
  620. package/dist/view/inspection-host.d.cts +349 -331
  621. package/dist/view/inspection-host.d.mts +349 -331
  622. package/dist/view/inspection-host.d.ts +349 -331
  623. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
  624. package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
  625. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  626. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  627. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  628. package/docs-site/zh/explanation/adapter.mdx +6 -6
  629. package/docs-site/zh/explanation/assert.mdx +7 -7
  630. package/docs-site/zh/explanation/drive.mdx +4 -4
  631. package/docs-site/zh/explanation/hitl.mdx +2 -2
  632. package/docs-site/zh/explanation/judge.mdx +2 -2
  633. package/docs-site/zh/introduction.mdx +2 -2
  634. package/docs-site/zh/reference/builtin-agents.mdx +46 -49
  635. package/docs-site/zh/reference/cli.mdx +16 -14
  636. package/docs-site/zh/reference/define-agent.mdx +19 -19
  637. package/docs-site/zh/reference/define-config.mdx +7 -15
  638. package/docs-site/zh/reference/define-eval.mdx +20 -14
  639. package/docs-site/zh/reference/define-experiment.mdx +18 -39
  640. package/docs-site/zh/reference/events.mdx +1 -1
  641. package/docs-site/zh/reference/expect.mdx +21 -0
  642. package/docs-site/zh/reference/official-adapters.mdx +12 -5
  643. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  644. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
  645. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  646. package/docs-site/zh/tutorials/authoring.mdx +2 -2
  647. package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
  648. package/docs-site/zh/tutorials/concurrency.mdx +8 -8
  649. package/docs-site/zh/tutorials/configuration.mdx +5 -5
  650. package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
  651. package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
  652. package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
  653. package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
  654. package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
  655. package/docs-site/zh/tutorials/plugins.mdx +49 -143
  656. package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
  657. package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
  658. package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
  659. package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
  660. package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
  661. package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
  662. package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
  663. package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
  664. package/docs-site/zh/tutorials/write-send.mdx +13 -13
  665. package/package.json +1 -1
  666. package/dist/agents/effect-runtime.cjs.map +0 -1
  667. package/dist/agents/effect-runtime.d.cts +0 -29
  668. package/dist/agents/effect-runtime.d.mts +0 -29
  669. package/dist/agents/effect-runtime.d.ts +0 -29
  670. package/dist/agents/effect-runtime.js +0 -16
  671. package/dist/agents/effect-runtime.js.map +0 -1
  672. package/dist/agents/session-slot.cjs.map +0 -1
  673. package/dist/agents/session-slot.d.cts +0 -12
  674. package/dist/agents/session-slot.d.mts +0 -12
  675. package/dist/agents/session-slot.d.ts +0 -12
  676. package/dist/agents/session-slot.js +0 -6
  677. package/dist/agents/session-slot.js.map +0 -1
  678. package/dist/model-slots.js +0 -14
  679. package/dist/model-slots.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"reuse-plan.js","sourceRoot":"","sources":["reuse-plan.ts"],"names":[],"mappings":";;;AA2JA,gEAiBC;AA4DD,wDAKC;AAED,kFA2EC;AAOD,wDAmDC;AAED,oFAuBC;AAqDD,0DA+OC;AAjrBD,qCAAqC;AACrC,wDAAwD;AACxD,gFAAgF;AAChF,qEAAqE;AACrE,mCAAgD;AAChD,0DAAoE;AACpE,0DAA+D;AAC/D,kEAA4H;AAC5H,mEAAkG;AAClG,qDAAmE;AAEnE,sDAAmE;AACnE,6DAAgG;AAEhG,wEAAsF;AAEtF,4DAAwE;AACxE,kEAAoI;AACpI,sFAAiK;AACjK,0DAA2F;AAG3F,mEAAkM;AAIrL,QAAA,0BAA0B,GAAG,gBAAyB,CAAC;AACvD,QAAA,6BAA6B,GAAG,CAAU,CAAC;AAC3C,QAAA,2CAA2C,GAAG,GAAY,CAAC;AAC3D,QAAA,6CAA6C,GAAG,IAAa,CAAC;AAK9D,QAAA,2BAA2B,GAA4B,MAAM,CAAC,MAAM,CAAC;IAC9E,IAAI,EAAE,kCAA0B;IAChC,OAAO,EAAE,qCAA6B;CACzC,CAAC,CAAC;AAUH;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,iBAAiB,EAAE,oBAA6B;CACnD,CAAC,CAAC;AACU,QAAA,kCAAkC,GAAG;IAC9C,GAAG,mDAAwB;IAC3B,6CAAqC,CAAC,iBAAiB;CACjD,CAAC;AAgGX,6EAA6E;AAC7E,SAAgB,0BAA0B,CAAM,IAA0C,EAAE,SAAyC;IACjI,OAAO,eAAM,CAAC,GAAG,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,SAAS,KAAK,SAAS;YACvB,OAAO,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACjH,OAAO,eAAM,CAAC,mBAAmB,CAAC,eAAM,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,4BAAW,EAAE,YAAY,EAAE,mCAAkB,EAAE,SAAS,EAAE,gCAAe;YAChF,aAAa,EAAE,eAAM,CAAC,KAAK,CAAC,kCAAwB,CAAC;SACxD,CAAC,CAAC,CAAC;YACA,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YACrG,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;SACtF,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAA6B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,eAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,kCAAsB,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACxT,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,GAAG,SAAS;QACZ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAChG,CAAC,CAAC,CAAC;AACR,CAAC;AAuDD;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,KAGtC;IACG,OAAO,IAAA,uCAA0B,EAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AACD,uFAAuF;AACvF,SAAgB,mCAAmC,CAAC,KAGnD;IACG,MAAM,YAAY,GAAY,KAAK,CAAC;IACpC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,QAAQ,GAAG,YAGhB,CAAC;IACF,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAGvB,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;WACpC,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,mDAA2C,CAAC;WACxF,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAKvB,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;WAChC,MAAM,CAAC,QAAQ,KAAK,IAAI;WACvB,MAAM,CAAC,QAET,CAAC,IAAI,KAAK,kCAA0B;WAClC,MAAM,CAAC,QAET,CAAC,OAAO,KAAK,qCAA6B,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC;WACvC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;WAC5B,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACjB,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YACrB,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,OAAO,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;gBACxB,OAAO,WAAW,CAAC,0BAA0B,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;gBACzC,OAAO,WAAW,CAAC,iCAAiC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChF,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrB,OAAO,WAAW,CAAC,+BAA+B,CAAC,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;;;GAGG;AACH,qCAAqC;AACrC,wDAAwD;AACxD,SAAgB,sBAAsB,CAAC,KAAkC;IACrE,OAAO,eAAM,CAAC,OAAO,CAAmF,GAAG,EAAE;QACzG,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS;YACrB,OAAO,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAA,sCAAqB,EAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxG,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK;aAC/G,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YAClH,MAAM,aAAa,GAAkB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAkB,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;oBAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;oBAClC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACrE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC,CAAC,CAAC;YACxF,MAAM,KAAK,GAA6B,EAAE,CAAC;YAC3C,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC;gBACnI,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBACjF,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;oBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM;oBACN,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI;oBACJ,OAAO;oBACP,mBAAmB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;oBACrE,qBAAqB,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;oBACtE,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC;iBAC/C,CAAC,CAAC,CAAC;YACR,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,mCAA2B;gBACnC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aAC5B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,0EAA0E;AAC1E,SAAgB,oCAAoC,CAAC,KAGpD;IACG,OAAO,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS;YACrB,OAAO,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;YACxF,MAAM,EAAE,MAAM,CAAC,gBAAgB,IAAI,eAAe;YAClD,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;SAClB,CAAC,CAAC,CAAC,CAAC;QACL,OAAO,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,mCAA2B;YACnC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;YAChD,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI;SACP,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;AACP,CAAC;AACY,QAAA,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACzF,SAAS,cAAc,CAAC,KASvB;IACG,OAAO,uBAAuB,CAAC;QAC3B,GAAG,KAAK;QACR,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,kCAAsB,IAAI,KAAK,YAAY,6BAAiB;YAC1J,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACpG,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,cAAuB;gBAC7C,MAAM,EAAE,IAAA,uCAAoB,EAAC,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI;wBACxG,GAAG,CAAC,KAAK,YAAY,kCAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;YACtF,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChF,KAAK,EAAE,WAAoB;YAC3B,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,SAAS,EAAE;SACnG,CAAC,CAAC;QACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sCAAyB,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;QACrI,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sCAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;QAC1J,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE;YAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACpD,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAE,CAAC,MAAM,CAAC;QAChI,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAQ,IAAuE,EAAE,MAAc;IACtH,OAAO,IAAI,CAAC,IAAI,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,6BAAiB;QACvE,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACpG,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAkB;YACxC,MAAM,EAAE,IAAA,uCAAoB,EAAC,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;QAClG,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAeD,SAAgB,uBAAuB,CAAiI,KAAkE;IACtO,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB;gBACrC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,KAAK,CAAC,qBAAqB,IAAI,QAAQ;gBAC9C,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YAC/B,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS;SAC1C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;eAC7F,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpG,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;YAC5G,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,uBAAuB;gBAC/B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,WAAW,EAAE,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,KAAK,KAAK,QAAQ;oBAC5E,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC5I,CAAC,CAAC,EAAE;aACX,CAAC,CAAC;QACP,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC;gBAC7B,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,gCAAgC;gBACxC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzG,IAAI,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,IAAI,QAAQ,CAAC,uBAAuB,KAAK,cAAc,CAAC,uBAAuB,EAAE,CAAC;YAC3J,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QACzH,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACnE,cAAc,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;gBAC7C,cAAc,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO;gBACtD,IAAA,iDAA4B,EAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,cAAc,CAAC,uBAAuB,CAAC;YAC3H,IAAI,CAAC,UAAU;gBACX,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS;oBAChF,WAAW,EAAE,CAAC,0BAA0B,EAAE,CAAC;iBAC9C,CAAC,CAAC;YACP,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;gBACpF,CAAC,IAAA,+CAA0B,EAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvD,CAAC,IAAA,+CAA0B,EAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;iBACpG,CAAC,CAAC;YACP,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvF,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY;oBACvD,OAAO,KAAK,CAAC;gBACjB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3G,IAAI,IAAI,KAAK,SAAS;oBAClB,OAAO,KAAK,CAAC;gBACjB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU;oBAC5G,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK;oBAChG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;oBAC/F,KAAK,CAAC,eAAe,IAAI,MAAM,CAAC,eAAgB,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,SAAS;gBACrB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;iBACpG,CAAC,CAAC;QACX,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACzH,CAAC,CAAC;QACP,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACnC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;YAC3C,UAAU,EAAE,UAAU,CAAC,KAAK;SAC/B,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,4BAA4B;gBACpC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE;oBACT,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACjH,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC;iBAC3C;aACJ,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAA,mCAAwB,EAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACtH,IAAI,eAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;gBAC7D,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS;oBAC/E,WAAW,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;iBACvH,CAAC,CAAC;QACX,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;aAC1D,CAAC,CAAC;QACP,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACjI,CAAC,CAAC;QACP,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,6CAA4B,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,+BAA+B;gBACvC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;aACtI,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,QAAQ;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,QAAQ,CAAC,OAAO;gBACxB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;aACrC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;eACzB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;aAC1E,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,6BAA6B;gBACrC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;aAC1E,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,KAAK,CAAC,MAAM;YACf,KAAK,EAAE,OAAgB;YACvB,QAAQ,EAAE,SAAkB;YAC5B,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;gBACvB,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,CAAC;gBAC1F,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC;gBAChF,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;gBACnC,QAAQ,CAAC,UAAU;aACtB,CAAC;SACL,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,eAAe,CAAM,IAA0C,EAAE,MAAyB;IAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;QACrF,qEAAqE;QACrE,uEAAuE;WACpE,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;WAC7D,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3H,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAA,yCAAwB,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AAKD,SAAS,sBAAsB,CAAC,OAAwB;IAGpD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC;AACzD,CAAC;AACD,SAAS,YAAY,CAAC,KAQrB;IACG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,SAAS,KAAK,SAAS;QACvB,OAAO,SAAS,CAAC;IACrB,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxG,IAAI,cAAc,KAAK,SAAS;WACzB,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;WACzC,QAAQ,CAAC,uBAAuB,KAAK,cAAc,CAAC,uBAAuB,EAAE,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,wCAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,SAAS,KAAK,SAAS;QACvB,OAAO,SAAS,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/E,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;SAC9C,CAAC;QACF,cAAc;KACjB,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAwB,EAAE,KAAyB;IACzE,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,uBAAuB,KAAK,KAAK,CAAC,uBAAuB,CAAC;AAC1E,CAAC;AACD,kFAAkF;AAClF,SAAS,4BAA4B,CAAC,MAAyB,EAAE,IAAwB;IACrF,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;WAC7B,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc;WACtC,MAAM,CAAC,uBAAuB,KAAK,IAAI,CAAC,uBAAuB,CAAC;AAC3E,CAAC;AACD,SAAS,yBAAyB,CAAC,MAAyB,EAAE,IAAwB;IAClF,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;WACxD,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;WAC7B,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc;WACtC,MAAM,CAAC,uBAAuB,KAAK,IAAI,CAAC,uBAAuB,CAAC;AAC3E,CAAC;AACD,SAAS,2BAA2B,CAAC,KAIpC;IACG,OAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;WAC5D,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC;WAC7D,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,QAAQ,CAAC,IAA6B;IAC3C,OAAO,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,iBAAiB,CAAC,KAK1B;IAKG,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,cAAc;YACf,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,+BAAwC;gBAChD,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,oBAAoB;YACrB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,sCAA+C;gBACvD,KAAK,EAAE,6CAAqC,CAAC,iBAAiB;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,aAAa;YACd,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,+BAAwC;gBAChD,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,SAAS;YACV,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,2BAAoC;gBAC5C,KAAK,EAAE,SAAkB;gBACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5C,CAAC,CAAC;IACX,CAAC;AACL,CAAC;AACD,SAAS,0BAA0B;IAC/B,OAAO,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAClG,CAAC;AACD,SAAS,iBAAiB,CAAC,OAA0B,EAAE,MAAkE;IACrH,OAAO,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;AAC5J,CAAC;AACD,SAAS,kBAAkB,CAAC,KAG3B;IAIG,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC;SACxH,CAAC;IACN,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,0BAA0B,CAAC;YAC/H,OAAO,EAAE,0BAA0B;SACtC,CAAC;IACN,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxD,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC;YACvH,OAAO,EAAE,kBAAkB;SAC9B,CAAC;IACN,CAAC;IACD,OAAO;QACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,yBAAyB,CAAC;KAC9H,CAAC;AACN,CAAC;AACD,SAAS,UAAU,CAAC,UAAyC,EAAE,aAAqC,EAAE,WAA2C,EAAE,MAAiC,EAAE,MAAc;IAChM,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC;AACD,SAAS,OAAO,CAAsG,MAAc,EAAE,KAOrI;IAGG,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,GAAG,MAAM;QACT,KAAK,EAAE,KAAc;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;KACrD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,MAA2B;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;YACnC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK;SACpC,CAAC;KACL,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,MAAuB;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,SAAS,CAAC,YAAoB,EAAE,MAAc,EAAE,OAAgB;IACrE,OAAO,OAAO,KAAK,SAAS;QACxB,CAAC,CAAC,GAAG,YAAY,SAAS,MAAM,EAAE;QAClC,CAAC,CAAC,GAAG,YAAY,SAAS,MAAM,SAAS,OAAO,EAAE,CAAC;AAC3D,CAAC;AACD,SAAS,WAAW,CAAC,MAA2C;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mCAAmC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,CAAC;AACD,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,GAAG,GAAG,KAA2B,CAAC;IACxC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;WAC9B,IAAA,kCAAiB,EAAC,GAAG,CAAC,KAAK,CAAC;WAC5B,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;WACpC,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC;WACzC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;WACjC,IAAA,4BAAW,EAAC,GAAG,CAAC,SAAS,CAAC;WAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,KAA4B,CAAC;IAC1C,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;WAC/B,IAAA,kCAAiB,EAAC,IAAI,CAAC,KAAK,CAAC;WAC7B,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;WAC/B,IAAA,kCAAiB,EAAC,IAAI,CAAC,MAAM,CAAC;WAC9B,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;WACrC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC;WAC1C,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;WAC/B,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;WACpC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;WAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;WAClC,IAAI,CAAC,OAAO,IAAI,CAAC;WACjB,CAAC,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,CAAC;WACnE,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS;eAChC,IAAI,CAAC,gBAAgB,KAAK,oCAAoC,CAAC;WACnE,OAAO,IAAI,CAAC,uBAAuB,KAAK,QAAQ;WAChD,IAAA,+BAAc,EAAC,IAAI,CAAC,uBAAuB,CAAC;WAC5C,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC;WACvC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;WACxC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAa,EAAE,aAAqB;IAC/D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;AAC7D,CAAC;AACD,SAAS,uBAAuB,CAAC,KAAa;IAC1C,OAAO,qBAAqB,CAAC,KAAK,EAAE,qDAA6C,CAAC;WAC3E,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC;AACrE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,KAGhB,CAAC;IACF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;WACnC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC;WACxC,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;WAClC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,KAGhB,CAAC;IACF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;WACnC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC;WACxC,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ;WACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;WACtC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;AACtC,CAAC","sourcesContent":["// @concord-file ne-runner-reuse-plan\n// @concord-implements docs/feature/experiments/cache.md\n// @concord-implements docs/feature/experiments/use-case/cache-explicit-rerun.md\n// @concord-implements docs/feature/experiments/use-case/rerun-all.md\nimport { Effect, Result, Schema } from \"effect\";\nimport { RecordIntegrityFailure } from \"../record/reader/errors.ts\";\nimport { SqliteRecordError } from \"../record/sqlite/errors.ts\";\nimport { detachPlanningReference, selectPlanningSources, type PlanningExactReference } from \"../record/host/sqlite-host.ts\";\nimport { RunIdSchema, ExperimentIdSchema, UtcMillisSchema } from \"../record/codec/identifiers.ts\";\nimport { RecordSlotIdentitySchema } from \"../record/codec/core.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nimport { foldRecordedAttemptScore } from \"../eval/record/score.ts\";\nimport { executionDigestForExperiment, hasProvenNoExperimentHooks } from \"./rename-identity.ts\";\nimport type { RecordIssue } from \"../record/errors/record-errors.ts\";\nimport { nonEmptyRecordIssues, recordIssue } from \"../record/errors/record-errors.ts\";\nimport type { AssertionsAttachment, } from \"../record/family/assertions/definition.ts\";\nimport { NiceEvalRecordAttachments } from \"../record/family/catalog.ts\";\nimport { readAttemptExecutionDuration, type DurationLimit, type AttemptExecutionTimingFacts, } from \"../eval/record/eligibility.ts\";\nimport { COMPARISON_SOURCE_STATES, type ComparisonAttachment, type ComparisonResult, type RecordedAttemptClaim, } from \"../eval/record/membership-provenance.ts\";\nimport { foldRecordedAttemptVerdict, type VerdictState, } from \"../eval/record/verdict.ts\";\nimport type { RecordReadSession, ReadableAttempt, ReadableRun, SelectedAttemptRef, SelectedRunRef, } from \"../record/host/types.ts\";\nimport type { RecordCoreRead, RecordAttachmentRead } from \"../record/model/read-state.ts\";\nimport { compareCanonicalIdentity, isPortableSegment, isSha256Digest, isUtcMillis, type ExecutionIdentityDigest, type RunId, type SlotId, type UtcMillis, } from \"../record/model/identifiers.ts\";\nimport type { AttemptOutcome, AttemptDocument, MemberDocument, RunDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RecordReaderReadError } from \"../record/reader/errors.ts\";\nimport type { EvaluationKind } from \"./types.ts\";\nexport const PROJECT_TARGET_POLICY_NAME = \"project-target\" as const;\nexport const PROJECT_TARGET_POLICY_VERSION = 2 as const;\nexport const PROJECT_TARGET_INVOCATION_ID_MAXIMUM_LENGTH = 255 as const;\nexport const PROJECT_TARGET_RECORD_IDENTITY_MAXIMUM_LENGTH = 4096 as const;\nexport interface ExecutionPolicyIdentity {\n readonly name: typeof PROJECT_TARGET_POLICY_NAME;\n readonly version: typeof PROJECT_TARGET_POLICY_VERSION;\n}\nexport const projectTargetPolicyIdentity: ExecutionPolicyIdentity = Object.freeze({\n name: PROJECT_TARGET_POLICY_NAME,\n version: PROJECT_TARGET_POLICY_VERSION,\n});\n/** Current planner input, kept in memory rather than persisted as an Attachment. */\nexport interface ExecutionIdentity {\n readonly domain: string;\n readonly value: string;\n}\nexport interface ExecutionDurationLimit {\n readonly domain: string;\n readonly milliseconds: number;\n}\n/**\n * Reuse compares current execution identity with the immutable Core Slot,\n * folds Core outcome with Assertions, and reads duration from Runner Activity\n * receipts. None of these facts is a separate eligibility/verdict family.\n */\nexport const EXECUTION_COMPARISON_PROJECTION_STATE = Object.freeze({\n migrationRequired: \"migration-required\" as const,\n});\nexport const EXECUTION_COMPARISON_SOURCE_STATES = [\n ...COMPARISON_SOURCE_STATES,\n EXECUTION_COMPARISON_PROJECTION_STATE.migrationRequired,\n] as const;\nexport type ExecutionComparisonAttachment = ComparisonAttachment;\nexport type ExecutionComparisonSourceState = (typeof EXECUTION_COMPARISON_SOURCE_STATES)[number];\nexport type ExecutionComparisonResult = ComparisonResult;\nexport type ExecutionRecordedClaim = RecordedAttemptClaim;\nexport interface ExecutionComparison {\n readonly attachment: ExecutionComparisonAttachment;\n readonly recordedClaim: ExecutionRecordedClaim;\n readonly sourceState: ExecutionComparisonSourceState;\n readonly result: ExecutionComparisonResult;\n readonly reason: string;\n}\nexport type ExecutionGapReason = \"no-source-run\" | \"source-slot-missing\" | \"source-member-missing\" | \"source-core-invalid\" | \"source-publication-unavailable\" | \"source-attachment-unavailable\" | \"source-attachment-migration-required\" | \"source-attachment-unsupported\" | \"source-attachment-invalid\" | \"reuse-contract-domain-mismatch\" | \"reuse-contract-mismatch\" | \"identity-mismatch\" | \"identity-domain-mismatch\" | \"duration-domain-mismatch\" | \"timeout-exceeded\" | \"attempt-outcome-ineligible\" | \"adoption-unproven\" | \"verdict-ineligible\" | \"score-incomplete\" | \"adapter-behavior-revision-required\" | \"rerun-requested\" | \"sandbox-retention-requested\";\nexport type ExecutionGapScope = \"slot\" | \"experiment\" | \"target\";\n/** Origin identity is read from the immutable Attempt, never reconstructed. */\nexport interface ExecutionSourceOrigin {\n readonly runId: RunId;\n readonly slotId: SlotId;\n}\n/** The selected Run boundary may itself be a reference Run. */\nexport interface ExecutionSourceBarrier {\n readonly runId: RunId;\n readonly startedAt: UtcMillis;\n}\nexport interface ExecutionReuseEffectiveOptions {\n readonly rerun: \"none\" | \"failed\" | \"all\";\n readonly keepSandbox: boolean;\n readonly reuseContract: ExecutionIdentity;\n}\nexport interface ExecutionTarget {\n readonly invocationId: string;\n readonly runs: readonly TargetRun[];\n}\nexport interface TargetRun {\n readonly runId: RunId;\n readonly experimentId: string;\n readonly startedAt: UtcMillis;\n readonly slots: readonly TargetSlot[];\n}\n/**\n * `slotId` and `executionIdentityDigest` are deterministic current planning\n * facts. A carried Member can therefore point at the exact immutable origin\n * Attempt without an out-of-band provenance Attachment.\n */\nexport interface TargetSlot {\n readonly renameFingerprint?: (experimentId: string) => string | undefined;\n readonly runId: RunId;\n readonly slotId: SlotId;\n readonly experimentId: string;\n readonly evalId: string;\n readonly attempt: number;\n readonly evaluationKind: EvaluationKind;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n readonly inputIdentity: ExecutionIdentity;\n readonly configIdentity: ExecutionIdentity;\n readonly timeout?: ExecutionDurationLimit;\n /** Current-only eligibility fact; omitted means behavior identity is reusable. */\n readonly reuseEligibility?: \"adapter-behavior-revision-required\";\n}\n/** Logical current input; evaluating it never allocates durable identities. */\nexport type CurrentTargetSlot = Omit<TargetSlot, \"runId\" | \"slotId\">;\nexport interface CurrentAssessmentRun<Ref> {\n readonly createdRevision?: number;\n readonly lifecycle?: Pick<ReadableRunResource, \"state\" | \"slots\">;\n readonly document: Pick<RunDocument, \"runId\" | \"experimentId\" | \"startedAt\" | \"expectedSlots\"> & {\n readonly context?: RunDocument[\"context\"];\n };\n readonly members: readonly {\n readonly document: MemberDocument;\n readonly bindingRevision?: number;\n readonly attempt: Ref | null;\n }[];\n}\nexport interface CurrentAssessmentSource {\n readonly attemptId: AttemptDocument[\"attemptId\"];\n readonly origin: ExecutionSourceOrigin;\n readonly sourceBarrier: ExecutionSourceBarrier;\n}\nexport type CurrentSlotAssessment<Target extends CurrentTargetSlot, Source extends CurrentAssessmentSource> = Target & ({\n readonly state: \"reuse\";\n readonly adoption: \"carried\";\n readonly source: Source;\n readonly comparisons: readonly ExecutionComparison[];\n} | {\n readonly state: \"gap\";\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: Source;\n readonly comparisons: readonly ExecutionComparison[];\n});\nexport interface CurrentAssessmentAttempt {\n readonly document: AttemptDocument;\n readonly publicationAvailable: boolean;\n}\n/** Both consumers retain every expected lifecycle position at one cutoff. */\nexport function mergeCurrentAssessmentRuns<Ref>(runs: readonly CurrentAssessmentRun<Ref>[], resources: readonly ReadableRunResource[]): Effect.Effect<readonly CurrentAssessmentRun<Ref>[], RecordIntegrityFailure> {\n return Effect.map(Effect.forEach(resources, (resource) => {\n const published = runs.find((run) => run.document.runId === resource.runId);\n const lifecycle = Object.freeze({ state: resource.state, slots: resource.slots });\n if (published !== undefined)\n return Effect.succeed(Object.freeze({ ...published, createdRevision: resource.createdRevision, lifecycle }));\n return Schema.decodeUnknownEffect(Schema.Struct({\n runId: RunIdSchema, experimentId: ExperimentIdSchema, startedAt: UtcMillisSchema,\n expectedSlots: Schema.Array(RecordSlotIdentitySchema),\n }))({\n runId: resource.runId, experimentId: resource.experimentId, startedAt: Date.parse(resource.startedAt),\n expectedSlots: resource.slots.map(({ publication: _publication, ...slot }) => slot),\n }).pipe(Effect.map((document): CurrentAssessmentRun<Ref> => Object.freeze({ createdRevision: resource.createdRevision, lifecycle, document, members: Object.freeze([]) })), Effect.mapError(() => new RecordIntegrityFailure({ code: \"record-integrity-failure\", runId: resource.runId, reason: \"core-invalid\" })));\n }, { concurrency: 1 }), (lifecycle) => Object.freeze([\n ...lifecycle,\n ...runs.filter((run) => !resources.some((resource) => resource.runId === run.document.runId)),\n ]));\n}\nexport type AssertionsVerdict = VerdictState;\n/** Read references are consumed during planning; binding uses the detached proof. */\nexport interface ExecutionReusePlanSource {\n readonly reference: PlanningExactReference;\n readonly attemptId: SelectedAttemptRef[\"attemptId\"];\n readonly attempt: SelectedAttemptRef & {\n readonly publicationIdentity: NonNullable<SelectedAttemptRef[\"publicationIdentity\"]>;\n };\n readonly origin: ExecutionSourceOrigin;\n readonly originRun: SelectedRunRef;\n readonly sourceBarrier: ExecutionSourceBarrier;\n readonly evaluationKind: EvaluationKind;\n}\nexport interface ProjectTargetPolicy {\n readonly identity: ExecutionPolicyIdentity;\n readonly reuseContract: ExecutionIdentity;\n readonly rerun: \"none\" | \"failed\" | \"all\";\n readonly keepSandbox: boolean;\n}\nexport interface ExecutionReusePlanSlotBase extends TargetSlot {\n readonly comparisons: readonly ExecutionComparison[];\n}\nexport interface ReusePlanSlot extends ExecutionReusePlanSlotBase {\n readonly state: \"reuse\";\n readonly adoption: \"carried\";\n readonly source: ExecutionReusePlanSource;\n}\nexport interface ExecutionGapSlot extends ExecutionReusePlanSlotBase {\n readonly state: \"gap\";\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: ExecutionReusePlanSource;\n}\nexport type ExecutionReusePlanSlot = ReusePlanSlot | ExecutionGapSlot;\nexport interface ExecutionReusePlan {\n readonly target: ExecutionTarget;\n readonly policy: ExecutionPolicyIdentity;\n readonly effectiveOptions: ExecutionReuseEffectiveOptions;\n readonly slots: readonly ExecutionReusePlanSlot[];\n readonly reuse: readonly ReusePlanSlot[];\n readonly gaps: readonly ExecutionGapSlot[];\n}\nexport interface ProjectTargetReusePlanInput {\n readonly reader: RecordReadSession;\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}\nexport type ProjectTargetReusePlanInvalidReason = \"invocation-id-invalid\" | \"target-run-invalid\" | \"target-run-duplicate\" | \"target-slot-invalid\" | \"target-slot-duplicate\" | \"target-slot-run-mismatch\" | \"target-slot-experiment-mismatch\" | \"target-slot-ordinal-duplicate\" | \"policy-unsupported\" | \"policy-input-invalid\";\nexport interface ProjectTargetReusePlanInvalid {\n readonly code: \"project-target-reuse-plan-invalid\";\n readonly reason: ProjectTargetReusePlanInvalidReason;\n}\n/**\n * Fold the terminal Verdict from the source Attempt's immutable Core outcome\n * and its fixed Assertions facts. This is a projection, not a second durable\n * Verdict family.\n */\nexport function recordedAttemptVerdict(input: {\n readonly outcome: AttemptOutcome;\n readonly assertions: AssertionsAttachment;\n}): AssertionsVerdict {\n return foldRecordedAttemptVerdict(input);\n}\n/** Input validation is pure; it never invents a target Slot or repairs an identity. */\nexport function validateProjectTargetReusePlanInput(input: {\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}): ProjectTargetReusePlanInvalid | undefined {\n const unknownInput: unknown = input;\n if (typeof unknownInput !== \"object\" || unknownInput === null) {\n return invalidPlan(\"target-run-invalid\");\n }\n const envelope = unknownInput as {\n readonly target?: unknown;\n readonly policy?: unknown;\n };\n if (typeof envelope.target !== \"object\" || envelope.target === null) {\n return invalidPlan(\"target-run-invalid\");\n }\n const target = envelope.target as {\n readonly invocationId?: unknown;\n readonly runs?: unknown;\n };\n if (typeof target.invocationId !== \"string\"\n || !isBoundedNonEmptyText(target.invocationId, PROJECT_TARGET_INVOCATION_ID_MAXIMUM_LENGTH)\n || !Array.isArray(target.runs)) {\n return invalidPlan(\"invocation-id-invalid\");\n }\n if (typeof envelope.policy !== \"object\" || envelope.policy === null) {\n return invalidPlan(\"policy-input-invalid\");\n }\n const policy = envelope.policy as {\n readonly identity?: unknown;\n readonly reuseContract?: unknown;\n readonly rerun?: unknown;\n readonly keepSandbox?: unknown;\n };\n if (typeof policy.identity !== \"object\"\n || policy.identity === null\n || (policy.identity as {\n readonly name?: unknown;\n }).name !== PROJECT_TARGET_POLICY_NAME\n || (policy.identity as {\n readonly version?: unknown;\n }).version !== PROJECT_TARGET_POLICY_VERSION) {\n return invalidPlan(\"policy-unsupported\");\n }\n if (!isExecutionIdentity(policy.reuseContract)\n || !isRerunOption(policy.rerun)\n || typeof policy.keepSandbox !== \"boolean\") {\n return invalidPlan(\"policy-input-invalid\");\n }\n const runIds = new Set<string>();\n const slotIds = new Set<string>();\n const ordinals = new Set<string>();\n for (const run of target.runs) {\n if (!isTargetRun(run))\n return invalidPlan(\"target-run-invalid\");\n if (runIds.has(run.runId))\n return invalidPlan(\"target-run-duplicate\");\n runIds.add(run.runId);\n for (const slot of run.slots) {\n if (!isTargetSlot(slot))\n return invalidPlan(\"target-slot-invalid\");\n if (slot.runId !== run.runId)\n return invalidPlan(\"target-slot-run-mismatch\");\n if (slot.experimentId !== run.experimentId) {\n return invalidPlan(\"target-slot-experiment-mismatch\");\n }\n if (slotIds.has(slot.slotId))\n return invalidPlan(\"target-slot-duplicate\");\n slotIds.add(slot.slotId);\n const ordinal = sourceKey(slot.experimentId, slot.evalId, String(slot.attempt));\n if (ordinals.has(ordinal))\n return invalidPlan(\"target-slot-ordinal-duplicate\");\n ordinals.add(ordinal);\n }\n }\n return undefined;\n}\n/**\n * Plans only from Record Host selection references. It neither reconstructs\n * attempt handles from strings nor reads private Record paths.\n */\n// @concord-code ne-runner-plan-reuse\n// @concord-implements docs/feature/experiments/cache.md\nexport function planProjectTargetReuse(input: ProjectTargetReusePlanInput): Effect.Effect<ExecutionReusePlan, ProjectTargetReusePlanInvalid | RecordReaderReadError> {\n return Effect.suspend<ExecutionReusePlan, ProjectTargetReusePlanInvalid | RecordReaderReadError, never>(() => {\n const invalid = validateProjectTargetReusePlanInput(input);\n if (invalid !== undefined)\n return Effect.fail(invalid);\n return Effect.gen(function* () {\n const selected = yield* selectPlanningSources(input.reader, flattenTargetSlots(input.target).map((slot) => ({\n experimentId: slot.experimentId, evalId: slot.evalId, attemptOrdinal: slot.attempt, excludeRunId: slot.runId,\n })));\n const { selection } = selected;\n const readable = yield* Effect.forEach(selection.runRefs, (ref) => input.reader.readRun(ref), { concurrency: 1 });\n const publishedRuns: ReadableRun[] = [];\n const coreIssues: RecordIssue[] = [];\n for (const read of readable) {\n if (read.state === \"available\")\n publishedRuns.push(read.value);\n else if (read.state === \"core-invalid\")\n coreIssues.push(...read.issues);\n }\n const merged = yield* mergeCurrentAssessmentRuns(publishedRuns, selected.resources);\n const runs = merged.map((run) => selected.members.has(run.document.runId)\n ? Object.freeze({ ...run, members: selected.members.get(run.document.runId)! }) : run);\n const byRunId = new Map(publishedRuns.map((run) => [run.document.runId, run] as const));\n const slots: ExecutionReusePlanSlot[] = [];\n for (const target of flattenTargetSlots(input.target)) {\n const sourceProblems = selection.problems.filter((problem) => selected.experimentByRun.get(problem.runId) === target.experimentId);\n const scopedIssues = [...(selected.issuesByExperiment.get(target.experimentId) ?? []),\n ...sourceProblems.map((problem) => recordIssue(\"record-schema-invalid\", [\"run\", problem.runId, problem.code]))];\n slots.push(yield* planTargetSlot({\n reader: input.reader,\n target,\n policy: input.policy,\n runs,\n byRunId,\n selectionHasProblem: scopedIssues.length > 0 || coreIssues.length > 0,\n selectionProblemScope: coreIssues.length > 0 ? \"target\" : \"experiment\",\n coreIssues: [...coreIssues, ...scopedIssues],\n }));\n }\n const reuse = slots.filter((slot): slot is ReusePlanSlot => slot.state === \"reuse\");\n const gaps = slots.filter((slot): slot is ExecutionGapSlot => slot.state === \"gap\");\n return Object.freeze({\n target: input.target,\n policy: projectTargetPolicyIdentity,\n effectiveOptions: effectiveOptions(input.policy),\n slots: Object.freeze(slots),\n reuse: Object.freeze(reuse),\n gaps: Object.freeze(gaps),\n });\n });\n });\n}\n/** Empty or not-yet-created Record roots produce no source capability. */\nexport function planProjectTargetReuseWithoutSources(input: {\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}): Effect.Effect<ExecutionReusePlan, ProjectTargetReusePlanInvalid> {\n return Effect.suspend(() => {\n const invalid = validateProjectTargetReusePlanInput(input);\n if (invalid !== undefined)\n return Effect.fail(invalid);\n const gaps = Object.freeze(flattenTargetSlots(input.target).map((target) => gapSlot(target, {\n reason: target.reuseEligibility ?? \"no-source-run\",\n scope: \"slot\",\n issues: [],\n comparisons: [],\n })));\n return Effect.succeed(Object.freeze({\n target: input.target,\n policy: projectTargetPolicyIdentity,\n effectiveOptions: effectiveOptions(input.policy),\n slots: gaps,\n reuse: Object.freeze([]),\n gaps,\n }));\n });\n}\nexport const ProjectTargetReusePlanner = Object.freeze({ plan: planProjectTargetReuse });\nfunction planTargetSlot(input: {\n readonly reader: RecordReadSession;\n readonly target: TargetSlot;\n readonly policy: ProjectTargetPolicy;\n readonly runs: readonly CurrentAssessmentRun<SelectedAttemptRef>[];\n readonly byRunId: ReadonlyMap<RunId, ReadableRun>;\n readonly selectionHasProblem: boolean;\n readonly selectionProblemScope?: ExecutionGapScope;\n readonly coreIssues: readonly RecordIssue[];\n}): Effect.Effect<ExecutionReusePlanSlot, RecordReaderReadError> {\n return assessCurrentTargetSlot({\n ...input,\n readAttempt: (ref) => input.reader.readAttempt(ref).pipe(Effect.catch((error) => error instanceof RecordIntegrityFailure || error instanceof SqliteRecordError &&\n [\"record-database-invalid\", \"record-content-invalid\", \"record-seal-incomplete\"].includes(error.code)\n ? Effect.succeed({ state: \"core-invalid\" as const,\n issues: nonEmptyRecordIssues([recordIssue(\"record-schema-invalid\", [\"attempt\", String(ref.attemptId), error.code,\n ...(error instanceof RecordIntegrityFailure ? [error.reason] : [])])])! })\n : Effect.fail(error)), Effect.map((read) => read.state !== \"available\" ? read : {\n state: \"available\" as const,\n value: { ...read.value, publicationAvailable: read.value.ref.publicationIdentity !== undefined },\n })),\n readAssertions: (attempt) => planningAttachment(input.reader.read(attempt.owner, NiceEvalRecordAttachments.assertions), \"assertions\"),\n readActivities: (attempt) => planningAttachment(input.reader.read(attempt.owner, NiceEvalRecordAttachments.runnerActivities.attempt), \"runner-activities\"),\n sourceFor: (attempt, sourceBarrier) => {\n if (!hasPublicationIdentity(attempt))\n throw new Error(\"Expected a published Attempt\");\n return candidateFor({ reader: input.reader, target: input.target, sourceBarrier, attempt, byRunId: input.byRunId })!.source;\n },\n });\n}\nfunction planningAttachment<Value>(read: Effect.Effect<RecordAttachmentRead<Value>, RecordReaderReadError>, family: string): Effect.Effect<RecordAttachmentRead<Value>, RecordReaderReadError> {\n return read.pipe(Effect.catch((error) => error instanceof SqliteRecordError &&\n [\"record-database-invalid\", \"record-content-invalid\", \"record-seal-incomplete\"].includes(error.code)\n ? Effect.succeed({ state: \"invalid\" as const,\n issues: nonEmptyRecordIssues([recordIssue(\"record-schema-invalid\", [family, error.code])])! })\n : Effect.fail(error)));\n}\n/** Both read-only current results and execution planning use this assessment. */\nexport interface CurrentAssessmentInput<Ref, Attempt extends CurrentAssessmentAttempt, Source extends CurrentAssessmentSource, Target extends CurrentTargetSlot, Error> {\n readonly target: Target;\n readonly policy: ProjectTargetPolicy;\n readonly runs: readonly CurrentAssessmentRun<Ref>[];\n readonly byRunId: ReadonlyMap<RunId, CurrentAssessmentRun<Ref>>;\n readonly selectionHasProblem: boolean;\n readonly selectionProblemScope?: ExecutionGapScope;\n readonly coreIssues: readonly RecordIssue[];\n readonly readAttempt: (ref: Ref) => Effect.Effect<RecordCoreRead<Attempt>, Error>;\n readonly readAssertions: (attempt: Attempt) => Effect.Effect<RecordAttachmentRead<AssertionsAttachment>, Error>;\n readonly readActivities: (attempt: Attempt) => Effect.Effect<RecordAttachmentRead<AttemptExecutionTimingFacts>, Error>;\n readonly sourceFor: (attempt: Attempt, barrier: ExecutionSourceBarrier) => Source;\n}\nexport function assessCurrentTargetSlot<Ref, Attempt extends CurrentAssessmentAttempt, Source extends CurrentAssessmentSource, Target extends CurrentTargetSlot, Error>(input: CurrentAssessmentInput<Ref, Attempt, Source, Target, Error>): Effect.Effect<CurrentSlotAssessment<Target, Source>, Error> {\n return Effect.gen(function* () {\n if (input.target.reuseEligibility !== undefined) {\n return gapSlot(input.target, {\n reason: input.target.reuseEligibility,\n scope: \"slot\",\n issues: [],\n comparisons: [],\n });\n }\n if (input.selectionHasProblem) {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: input.selectionProblemScope ?? \"target\",\n issues: input.coreIssues,\n comparisons: [],\n });\n }\n const sourceRun = latestSourceRun(input.runs, input.target);\n if (sourceRun === undefined) {\n return gapSlot(input.target, {\n reason: \"no-source-run\",\n scope: \"slot\",\n issues: [],\n comparisons: [],\n });\n }\n const sourceBarrier = Object.freeze({\n runId: sourceRun.document.runId,\n startedAt: sourceRun.document.startedAt,\n });\n const expected = sourceRun.document.expectedSlots.find((slot) => slot.evalId === input.target.evalId\n && slot.attemptOrdinal === input.target.attempt);\n if (expected === undefined) {\n return gapSlot(input.target, {\n reason: \"source-slot-missing\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const member = sourceRun.members.find((candidate) => candidate.document.slotId === expected.slotId);\n if (member === undefined || member.attempt === null) {\n const publication = sourceRun.lifecycle?.slots.find((slot) => slot.slotId === expected.slotId)?.publication;\n return gapSlot(input.target, {\n reason: \"source-member-missing\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: publication?.state === \"pending\" || publication?.state === \"absent\"\n ? [comparison(\"core\", \"attempt-outcome\", \"unavailable\", \"not-comparable\", publication.state === \"pending\" ? \"pending\" : publication.reason)]\n : [],\n });\n }\n const readAttempt = yield* input.readAttempt(member.attempt);\n if (readAttempt.state !== \"available\") {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: \"slot\",\n issues: issuesOf(readAttempt),\n sourceBarrier,\n comparisons: [],\n });\n }\n if (!readAttempt.value.publicationAvailable) {\n return gapSlot(input.target, {\n reason: \"source-publication-unavailable\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const document = readAttempt.value.document;\n const originRun = input.byRunId.get(document.originRunId);\n const originExpected = originRun?.document.expectedSlots.find((slot) => slot.slotId === document.slotId);\n if (originExpected === undefined || document.evalId !== originExpected.evalId || document.executionIdentityDigest !== originExpected.executionIdentityDigest) {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const candidate = input.sourceFor(readAttempt.value, sourceBarrier);\n const ordinaryIdentity = reusableSlotIdentityMatches({ target: input.target, sourceExpected: expected, originExpected });\n if (!ordinaryIdentity) {\n const originRun = input.byRunId.get(candidate.origin.runId)!;\n const pureRename = targetMatchesLogicalIdentity(input.target, expected) &&\n originExpected.evalId === input.target.evalId &&\n originExpected.attemptOrdinal === input.target.attempt &&\n executionDigestForExperiment(input.target, originRun.document.experimentId) === originExpected.executionIdentityDigest;\n if (!pureRename)\n return gapSlot(input.target, {\n reason: \"identity-mismatch\", scope: \"slot\", issues: [], sourceBarrier, candidate,\n comparisons: [identityMismatchComparison()],\n });\n if (sourceRun.document.context === undefined || originRun.document.context === undefined ||\n !hasProvenNoExperimentHooks(sourceRun.document.context) ||\n !hasProvenNoExperimentHooks(originRun.document.context))\n return gapSlot(input.target, {\n reason: \"adoption-unproven\", scope: \"slot\", issues: [], sourceBarrier, candidate, comparisons: [],\n });\n const witness = member.bindingRevision === undefined ? undefined : input.runs.find((run) => {\n if (run.document.experimentId !== input.target.experimentId)\n return false;\n const slot = run.document.expectedSlots.find((entry) => targetMatchesLogicalIdentity(input.target, entry));\n if (slot === undefined)\n return false;\n return run.members.some((entry) => entry.document.slotId === slot.slotId && entry.document.action === \"accepted\" &&\n entry.document.attempt !== null && entry.document.attempt.originRunId === candidate.origin.runId &&\n entry.document.attempt.attemptId === candidate.attemptId && entry.bindingRevision !== undefined &&\n entry.bindingRevision <= member.bindingRevision!);\n });\n if (witness === undefined)\n return gapSlot(input.target, {\n reason: \"adoption-unproven\", scope: \"slot\", issues: [], sourceBarrier, candidate, comparisons: [],\n });\n }\n const assertions = yield* input.readAssertions(readAttempt.value);\n if (assertions.state !== \"available\") {\n const problem = attachmentProblem(assertions);\n return gapSlot(input.target, {\n reason: problem.reason,\n scope: \"slot\",\n issues: problem.issues,\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.assertions\", \"assertion-verdict\", problem.state, \"not-comparable\", problem.reason)],\n });\n }\n const verdict = recordedAttemptVerdict({\n outcome: readAttempt.value.document.outcome,\n assertions: assertions.value,\n });\n if (readAttempt.value.document.outcome !== \"completed\") {\n return gapSlot(input.target, {\n reason: \"attempt-outcome-ineligible\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [\n comparison(\"core\", \"attempt-outcome\", \"available\", \"ineligible\", `attempt-${readAttempt.value.document.outcome}`),\n verdictComparison(verdict, \"ineligible\"),\n ],\n });\n }\n if (input.target.evaluationKind === \"score\") {\n const score = foldRecordedAttemptScore({ outcome: readAttempt.value.document.outcome, assertions: assertions.value });\n if (Result.isFailure(score) || score.success.state !== \"complete\")\n return gapSlot(input.target, {\n reason: \"score-incomplete\", scope: \"slot\", issues: [], sourceBarrier, candidate,\n comparisons: [comparison(\"niceeval.assertions\", \"assertion-verdict\", \"available\", \"ineligible\", \"score-incomplete\")],\n });\n }\n if (verdict !== \"passed\" && verdict !== \"failed\") {\n return gapSlot(input.target, {\n reason: \"verdict-ineligible\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"ineligible\")],\n });\n }\n const activities = yield* input.readActivities(readAttempt.value);\n if (activities.state !== \"available\") {\n const problem = attachmentProblem(activities);\n return gapSlot(input.target, {\n reason: problem.reason,\n scope: \"slot\",\n issues: problem.issues,\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.runner-activities\", \"execution-duration\", problem.state, \"not-comparable\", problem.reason)],\n });\n }\n const durationRead = readAttemptExecutionDuration(activities.value);\n if (durationRead.state !== \"available\") {\n return gapSlot(input.target, {\n reason: \"source-attachment-unavailable\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.runner-activities\", \"execution-duration\", \"unavailable\", \"not-comparable\", durationRead.reason)],\n });\n }\n const duration = durationComparison({\n source: durationRead.duration,\n target: input.target.timeout,\n });\n if (duration.failure !== undefined) {\n return gapSlot(input.target, {\n reason: duration.failure,\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [duration.comparison],\n });\n }\n if (input.policy.rerun === \"all\"\n || (input.policy.rerun === \"failed\" && verdict === \"failed\")) {\n return gapSlot(input.target, {\n reason: \"rerun-requested\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"match\"), duration.comparison],\n });\n }\n if (input.policy.keepSandbox) {\n return gapSlot(input.target, {\n reason: \"sandbox-retention-requested\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"match\"), duration.comparison],\n });\n }\n return Object.freeze({\n ...input.target,\n state: \"reuse\" as const,\n adoption: \"carried\" as const,\n source: candidate,\n comparisons: Object.freeze([\n comparison(\"core\", \"execution-identity\", \"available\", \"match\", \"execution-identity-match\"),\n comparison(\"core\", \"attempt-outcome\", \"available\", \"match\", \"attempt-completed\"),\n verdictComparison(verdict, \"match\"),\n duration.comparison,\n ]),\n });\n });\n}\nfunction latestSourceRun<Ref>(runs: readonly CurrentAssessmentRun<Ref>[], target: CurrentTargetSlot): CurrentAssessmentRun<Ref> | undefined {\n const candidates = runs.filter((run) => run.document.experimentId === target.experimentId\n // Execution refreshes may see their own already-created pending Run.\n // Logical current targets have no Run identity and keep every barrier.\n && (!(\"runId\" in target) || run.document.runId !== target.runId)\n && run.document.expectedSlots.some((slot) => slot.evalId === target.evalId && slot.attemptOrdinal === target.attempt));\n return candidates.sort((left, right) => {\n const a = left.createdRevision ?? 0, b = right.createdRevision ?? 0;\n return a - b || compareCanonicalIdentity(left.document.runId, right.document.runId);\n }).at(-1);\n}\ninterface CandidateResolution {\n readonly source: ExecutionReusePlanSource;\n readonly originExpected: RecordSlotIdentity;\n}\nfunction hasPublicationIdentity(attempt: ReadableAttempt): attempt is ReadableAttempt & {\n readonly ref: ExecutionReusePlanSource[\"attempt\"];\n} {\n return attempt.ref.publicationIdentity !== undefined;\n}\nfunction candidateFor(input: {\n readonly reader: RecordReadSession;\n readonly target: TargetSlot;\n readonly sourceBarrier: ExecutionSourceBarrier;\n readonly attempt: ReadableAttempt & {\n readonly ref: ExecutionReusePlanSource[\"attempt\"];\n };\n readonly byRunId: ReadonlyMap<RunId, ReadableRun>;\n}): CandidateResolution | undefined {\n const document = input.attempt.document;\n const originRun = input.byRunId.get(document.originRunId);\n if (originRun === undefined)\n return undefined;\n const originExpected = originRun.document.expectedSlots.find((slot) => slot.slotId === document.slotId);\n if (originExpected === undefined\n || document.evalId !== originExpected.evalId\n || document.executionIdentityDigest !== originExpected.executionIdentityDigest) {\n return undefined;\n }\n const reference = detachPlanningReference(input.reader, input.attempt.ref);\n if (reference === undefined)\n return undefined;\n return Object.freeze({\n source: Object.freeze({\n reference,\n attemptId: input.attempt.ref.attemptId,\n attempt: input.attempt.ref,\n origin: Object.freeze({ runId: document.originRunId, slotId: document.slotId }),\n originRun: originRun.ref,\n sourceBarrier: input.sourceBarrier,\n evaluationKind: input.target.evaluationKind,\n }),\n originExpected,\n });\n}\nfunction sameSlotIdentity(left: RecordSlotIdentity, right: RecordSlotIdentity): boolean {\n return left.slotId === right.slotId\n && left.evalId === right.evalId\n && left.attemptOrdinal === right.attemptOrdinal\n && left.executionIdentityDigest === right.executionIdentityDigest;\n}\n/** Slot IDs are exact references within a Run, not cross-Run equivalence keys. */\nfunction targetMatchesLogicalIdentity(target: CurrentTargetSlot, slot: RecordSlotIdentity): boolean {\n return target.evalId === slot.evalId\n && target.attempt === slot.attemptOrdinal\n && target.executionIdentityDigest === slot.executionIdentityDigest;\n}\nfunction targetMatchesSlotIdentity(target: CurrentTargetSlot, slot: RecordSlotIdentity): boolean {\n return (!(\"slotId\" in target) || target.slotId === slot.slotId)\n && target.evalId === slot.evalId\n && target.attempt === slot.attemptOrdinal\n && target.executionIdentityDigest === slot.executionIdentityDigest;\n}\nfunction reusableSlotIdentityMatches(input: {\n readonly target: CurrentTargetSlot;\n readonly sourceExpected: RecordSlotIdentity;\n readonly originExpected: RecordSlotIdentity;\n}): boolean {\n return sameSlotIdentity(input.sourceExpected, input.originExpected)\n && targetMatchesSlotIdentity(input.target, input.sourceExpected)\n && targetMatchesSlotIdentity(input.target, input.originExpected);\n}\nfunction issuesOf(read: RecordCoreRead<unknown>): readonly RecordIssue[] {\n return read.state === \"core-invalid\" ? read.issues : Object.freeze([]);\n}\nfunction attachmentProblem(input: {\n readonly state: \"not-recorded\" | \"migration-required\" | \"unsupported\" | \"invalid\";\n readonly family?: string;\n readonly schemaVersion?: number;\n readonly issues?: readonly RecordIssue[];\n}): {\n readonly reason: Extract<ExecutionGapReason, \"source-attachment-unavailable\" | \"source-attachment-migration-required\" | \"source-attachment-unsupported\" | \"source-attachment-invalid\">;\n readonly state: Exclude<ExecutionComparisonSourceState, \"available\">;\n readonly issues: readonly RecordIssue[];\n} {\n switch (input.state) {\n case \"not-recorded\":\n return Object.freeze({\n reason: \"source-attachment-unavailable\" as const,\n state: \"unavailable\" as const,\n issues: Object.freeze([]),\n });\n case \"migration-required\":\n return Object.freeze({\n reason: \"source-attachment-migration-required\" as const,\n state: EXECUTION_COMPARISON_PROJECTION_STATE.migrationRequired,\n issues: Object.freeze([]),\n });\n case \"unsupported\":\n return Object.freeze({\n reason: \"source-attachment-unsupported\" as const,\n state: \"unsupported\" as const,\n issues: Object.freeze([]),\n });\n case \"invalid\":\n return Object.freeze({\n reason: \"source-attachment-invalid\" as const,\n state: \"invalid\" as const,\n issues: input.issues ?? Object.freeze([]),\n });\n }\n}\nfunction identityMismatchComparison(): ExecutionComparison {\n return comparison(\"core\", \"execution-identity\", \"available\", \"mismatch\", \"identity-mismatch\");\n}\nfunction verdictComparison(verdict: AssertionsVerdict, result: Extract<ExecutionComparisonResult, \"match\" | \"ineligible\">): ExecutionComparison {\n return comparison(\"niceeval.assertions\", \"assertion-verdict\", \"available\", result, verdict === \"errored\" ? \"verdict-ineligible\" : `verdict-${verdict}`);\n}\nfunction durationComparison(input: {\n readonly source: DurationLimit;\n readonly target: ExecutionDurationLimit | undefined;\n}): {\n readonly comparison: ExecutionComparison;\n readonly failure?: \"duration-domain-mismatch\" | \"timeout-exceeded\";\n} {\n if (input.target === undefined) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"match\", \"timeout-unbounded\"),\n };\n }\n if (input.source.domain !== input.target.domain) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"mismatch\", \"duration-domain-mismatch\"),\n failure: \"duration-domain-mismatch\",\n };\n }\n if (input.source.milliseconds > input.target.milliseconds) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"mismatch\", \"timeout-exceeded\"),\n failure: \"timeout-exceeded\",\n };\n }\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"match\", \"duration-within-timeout\"),\n };\n}\nfunction comparison(attachment: ExecutionComparisonAttachment, recordedClaim: ExecutionRecordedClaim, sourceState: ExecutionComparisonSourceState, result: ExecutionComparisonResult, reason: string): ExecutionComparison {\n return Object.freeze({ attachment, recordedClaim, sourceState, result, reason });\n}\nfunction gapSlot<Target extends CurrentTargetSlot, Source extends CurrentAssessmentSource = ExecutionReusePlanSource>(target: Target, input: {\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly comparisons: readonly ExecutionComparison[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: Source;\n}): Extract<CurrentSlotAssessment<Target, Source>, {\n readonly state: \"gap\";\n}> {\n return Object.freeze({\n ...target,\n state: \"gap\" as const,\n reason: input.reason,\n scope: input.scope,\n issues: Object.freeze([...input.issues]),\n ...(input.sourceBarrier === undefined ? {} : { sourceBarrier: input.sourceBarrier }),\n ...(input.candidate === undefined ? {} : { candidate: input.candidate }),\n comparisons: Object.freeze([...input.comparisons]),\n });\n}\nfunction effectiveOptions(policy: ProjectTargetPolicy): ExecutionReuseEffectiveOptions {\n return Object.freeze({\n rerun: policy.rerun,\n keepSandbox: policy.keepSandbox,\n reuseContract: Object.freeze({\n domain: policy.reuseContract.domain,\n value: policy.reuseContract.value,\n }),\n });\n}\nfunction flattenTargetSlots(target: ExecutionTarget): readonly TargetSlot[] {\n return Object.freeze(target.runs.flatMap((run) => run.slots));\n}\nfunction sourceKey(experimentId: string, evalId: string, ordinal?: string): string {\n return ordinal === undefined\n ? `${experimentId}\\u0000${evalId}`\n : `${experimentId}\\u0000${evalId}\\u0000${ordinal}`;\n}\nfunction invalidPlan(reason: ProjectTargetReusePlanInvalidReason): ProjectTargetReusePlanInvalid {\n return Object.freeze({ code: \"project-target-reuse-plan-invalid\", reason });\n}\nfunction isTargetRun(value: unknown): value is TargetRun {\n if (typeof value !== \"object\" || value === null)\n return false;\n const run = value as Partial<TargetRun>;\n return (typeof run.runId === \"string\"\n && isPortableSegment(run.runId)\n && typeof run.experimentId === \"string\"\n && isBoundedRecordIdentity(run.experimentId)\n && typeof run.startedAt === \"number\"\n && isUtcMillis(run.startedAt)\n && Array.isArray(run.slots));\n}\nfunction isTargetSlot(value: unknown): value is TargetSlot {\n if (typeof value !== \"object\" || value === null)\n return false;\n const slot = value as Partial<TargetSlot>;\n return (typeof slot.runId === \"string\"\n && isPortableSegment(slot.runId)\n && typeof slot.slotId === \"string\"\n && isPortableSegment(slot.slotId)\n && typeof slot.experimentId === \"string\"\n && isBoundedRecordIdentity(slot.experimentId)\n && typeof slot.evalId === \"string\"\n && isBoundedRecordIdentity(slot.evalId)\n && typeof slot.attempt === \"number\"\n && Number.isSafeInteger(slot.attempt)\n && slot.attempt >= 0\n && (slot.evaluationKind === \"pass\" || slot.evaluationKind === \"score\")\n && (slot.reuseEligibility === undefined\n || slot.reuseEligibility === \"adapter-behavior-revision-required\")\n && typeof slot.executionIdentityDigest === \"string\"\n && isSha256Digest(slot.executionIdentityDigest)\n && isExecutionIdentity(slot.inputIdentity)\n && isExecutionIdentity(slot.configIdentity)\n && (slot.timeout === undefined || isExecutionDurationLimit(slot.timeout)));\n}\nfunction isBoundedNonEmptyText(value: string, maximumLength: number): boolean {\n return value.length > 0 && value.length <= maximumLength;\n}\nfunction isBoundedRecordIdentity(value: string): boolean {\n return isBoundedNonEmptyText(value, PROJECT_TARGET_RECORD_IDENTITY_MAXIMUM_LENGTH)\n && !value.includes(\"\\u0000\");\n}\nfunction isRerunOption(value: unknown): value is ProjectTargetPolicy[\"rerun\"] {\n return value === \"none\" || value === \"failed\" || value === \"all\";\n}\nfunction isExecutionIdentity(value: unknown): value is ExecutionIdentity {\n if (typeof value !== \"object\" || value === null)\n return false;\n const identity = value as {\n readonly domain?: unknown;\n readonly value?: unknown;\n };\n return typeof identity.domain === \"string\"\n && isBoundedRecordIdentity(identity.domain)\n && typeof identity.value === \"string\"\n && isBoundedRecordIdentity(identity.value);\n}\nfunction isExecutionDurationLimit(value: unknown): value is ExecutionDurationLimit {\n if (typeof value !== \"object\" || value === null)\n return false;\n const duration = value as {\n readonly domain?: unknown;\n readonly milliseconds?: unknown;\n };\n return typeof duration.domain === \"string\"\n && isBoundedRecordIdentity(duration.domain)\n && typeof duration.milliseconds === \"number\"\n && Number.isFinite(duration.milliseconds)\n && duration.milliseconds >= 0;\n}\n"]}
1
+ {"version":3,"file":"reuse-plan.js","sourceRoot":"","sources":["reuse-plan.ts"],"names":[],"mappings":";;;AA2JA,gEAiBC;AA4DD,wDAKC;AAED,kFA2EC;AAOD,wDAmDC;AAED,oFAuBC;AAqDD,0DA+OC;AAjrBD,gBAAgB;AAChB,wDAAwD;AACxD,gFAAgF;AAChF,qEAAqE;AACrE,mCAAgD;AAChD,0DAAoE;AACpE,0DAA+D;AAC/D,kEAA4H;AAC5H,mEAAkG;AAClG,qDAAmE;AAEnE,sDAAmE;AACnE,6DAAgG;AAEhG,wEAAsF;AAEtF,4DAAwE;AACxE,kEAAoI;AACpI,sFAAiK;AACjK,0DAA2F;AAG3F,mEAAkM;AAIrL,QAAA,0BAA0B,GAAG,gBAAyB,CAAC;AACvD,QAAA,6BAA6B,GAAG,CAAU,CAAC;AAC3C,QAAA,2CAA2C,GAAG,GAAY,CAAC;AAC3D,QAAA,6CAA6C,GAAG,IAAa,CAAC;AAK9D,QAAA,2BAA2B,GAA4B,MAAM,CAAC,MAAM,CAAC;IAC9E,IAAI,EAAE,kCAA0B;IAChC,OAAO,EAAE,qCAA6B;CACzC,CAAC,CAAC;AAUH;;;;GAIG;AACU,QAAA,qCAAqC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,iBAAiB,EAAE,oBAA6B;CACnD,CAAC,CAAC;AACU,QAAA,kCAAkC,GAAG;IAC9C,GAAG,mDAAwB;IAC3B,6CAAqC,CAAC,iBAAiB;CACjD,CAAC;AAgGX,6EAA6E;AAC7E,SAAgB,0BAA0B,CAAM,IAA0C,EAAE,SAAyC;IACjI,OAAO,eAAM,CAAC,GAAG,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAClF,IAAI,SAAS,KAAK,SAAS;YACvB,OAAO,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACjH,OAAO,eAAM,CAAC,mBAAmB,CAAC,eAAM,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,4BAAW,EAAE,YAAY,EAAE,mCAAkB,EAAE,SAAS,EAAE,gCAAe;YAChF,aAAa,EAAE,eAAM,CAAC,KAAK,CAAC,kCAAwB,CAAC;SACxD,CAAC,CAAC,CAAC;YACA,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YACrG,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;SACtF,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAA6B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,eAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,kCAAsB,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACxT,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,GAAG,SAAS;QACZ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAChG,CAAC,CAAC,CAAC;AACR,CAAC;AAuDD;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,KAGtC;IACG,OAAO,IAAA,uCAA0B,EAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AACD,uFAAuF;AACvF,SAAgB,mCAAmC,CAAC,KAGnD;IACG,MAAM,YAAY,GAAY,KAAK,CAAC;IACpC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,QAAQ,GAAG,YAGhB,CAAC;IACF,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAGvB,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;WACpC,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,mDAA2C,CAAC;WACxF,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAKvB,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;WAChC,MAAM,CAAC,QAAQ,KAAK,IAAI;WACvB,MAAM,CAAC,QAET,CAAC,IAAI,KAAK,kCAA0B;WAClC,MAAM,CAAC,QAET,CAAC,OAAO,KAAK,qCAA6B,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC;WACvC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;WAC5B,OAAO,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACjB,OAAO,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;YACrB,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,OAAO,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;gBACxB,OAAO,WAAW,CAAC,0BAA0B,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;gBACzC,OAAO,WAAW,CAAC,iCAAiC,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChF,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrB,OAAO,WAAW,CAAC,+BAA+B,CAAC,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;;;GAGG;AACH,gBAAgB;AAChB,wDAAwD;AACxD,SAAgB,sBAAsB,CAAC,KAAkC;IACrE,OAAO,eAAM,CAAC,OAAO,CAAmF,GAAG,EAAE;QACzG,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS;YACrB,OAAO,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAA,sCAAqB,EAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxG,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK;aAC/G,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YAClH,MAAM,aAAa,GAAkB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAkB,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;oBAC1B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;oBAClC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACrE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC,CAAC,CAAC;YACxF,MAAM,KAAK,GAA6B,EAAE,CAAC;YAC3C,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC;gBACnI,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBACjF,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;oBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM;oBACN,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI;oBACJ,OAAO;oBACP,mBAAmB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;oBACrE,qBAAqB,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;oBACtE,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC;iBAC/C,CAAC,CAAC,CAAC;YACR,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,mCAA2B;gBACnC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;aAC5B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,0EAA0E;AAC1E,SAAgB,oCAAoC,CAAC,KAGpD;IACG,OAAO,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS;YACrB,OAAO,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;YACxF,MAAM,EAAE,MAAM,CAAC,gBAAgB,IAAI,eAAe;YAClD,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,EAAE;YACV,WAAW,EAAE,EAAE;SAClB,CAAC,CAAC,CAAC,CAAC;QACL,OAAO,eAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,mCAA2B;YACnC,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;YAChD,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI;SACP,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;AACP,CAAC;AACY,QAAA,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACzF,SAAS,cAAc,CAAC,KASvB;IACG,OAAO,uBAAuB,CAAC;QAC3B,GAAG,KAAK;QACR,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,kCAAsB,IAAI,KAAK,YAAY,6BAAiB;YAC1J,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACpG,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,cAAuB;gBAC7C,MAAM,EAAE,IAAA,uCAAoB,EAAC,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI;wBACxG,GAAG,CAAC,KAAK,YAAY,kCAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;YACtF,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChF,KAAK,EAAE,WAAoB;YAC3B,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,SAAS,EAAE;SACnG,CAAC,CAAC;QACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sCAAyB,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;QACrI,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sCAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;QAC1J,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE;YAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACpD,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAE,CAAC,MAAM,CAAC;QAChI,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAQ,IAAuE,EAAE,MAAc;IACtH,OAAO,IAAI,CAAC,IAAI,CAAC,eAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,6BAAiB;QACvE,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACpG,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAkB;YACxC,MAAM,EAAE,IAAA,uCAAoB,EAAC,CAAC,IAAA,8BAAW,EAAC,uBAAuB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;QAClG,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAeD,SAAgB,uBAAuB,CAAiI,KAAkE;IACtO,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB;gBACrC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,KAAK,CAAC,qBAAqB,IAAI,QAAQ;gBAC9C,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;YAChC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK;YAC/B,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS;SAC1C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;eAC7F,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpG,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;YAC5G,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,uBAAuB;gBAC/B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,WAAW,EAAE,KAAK,KAAK,SAAS,IAAI,WAAW,EAAE,KAAK,KAAK,QAAQ;oBAC5E,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC5I,CAAC,CAAC,EAAE;aACX,CAAC,CAAC;QACP,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC;gBAC7B,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,gCAAgC;gBACxC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzG,IAAI,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,IAAI,QAAQ,CAAC,uBAAuB,KAAK,cAAc,CAAC,uBAAuB,EAAE,CAAC;YAC3J,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,qBAAqB;gBAC7B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;QACP,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QACzH,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;YAC7D,MAAM,UAAU,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACnE,cAAc,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;gBAC7C,cAAc,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,OAAO;gBACtD,IAAA,iDAA4B,EAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,cAAc,CAAC,uBAAuB,CAAC;YAC3H,IAAI,CAAC,UAAU;gBACX,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS;oBAChF,WAAW,EAAE,CAAC,0BAA0B,EAAE,CAAC;iBAC9C,CAAC,CAAC;YACP,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;gBACpF,CAAC,IAAA,+CAA0B,EAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvD,CAAC,IAAA,+CAA0B,EAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;iBACpG,CAAC,CAAC;YACP,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvF,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM,CAAC,YAAY;oBACvD,OAAO,KAAK,CAAC;gBACjB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3G,IAAI,IAAI,KAAK,SAAS;oBAClB,OAAO,KAAK,CAAC;gBACjB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU;oBAC5G,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK;oBAChG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;oBAC/F,KAAK,CAAC,eAAe,IAAI,MAAM,CAAC,eAAgB,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,KAAK,SAAS;gBACrB,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;iBACpG,CAAC,CAAC;QACX,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACzH,CAAC,CAAC;QACP,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACnC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;YAC3C,UAAU,EAAE,UAAU,CAAC,KAAK;SAC/B,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,4BAA4B;gBACpC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE;oBACT,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACjH,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC;iBAC3C;aACJ,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAA,mCAAwB,EAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACtH,IAAI,eAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;gBAC7D,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACzB,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS;oBAC/E,WAAW,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;iBACvH,CAAC,CAAC;QACX,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;aAC1D,CAAC,CAAC;QACP,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACjI,CAAC,CAAC;QACP,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,6CAA4B,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,+BAA+B;gBACvC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;aACtI,CAAC,CAAC;QACP,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,QAAQ;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,QAAQ,CAAC,OAAO;gBACxB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;aACrC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;eACzB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;aAC1E,CAAC,CAAC;QACP,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;gBACzB,MAAM,EAAE,6BAA6B;gBACrC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE;gBACV,aAAa;gBACb,SAAS;gBACT,WAAW,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;aAC1E,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,GAAG,KAAK,CAAC,MAAM;YACf,KAAK,EAAE,OAAgB;YACvB,QAAQ,EAAE,SAAkB;YAC5B,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;gBACvB,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,0BAA0B,CAAC;gBAC1F,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC;gBAChF,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;gBACnC,QAAQ,CAAC,UAAU;aACtB,CAAC;SACL,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,eAAe,CAAM,IAA0C,EAAE,MAAyB;IAC/F,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;QACrF,qEAAqE;QACrE,uEAAuE;WACpE,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;WAC7D,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3H,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAA,yCAAwB,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AAKD,SAAS,sBAAsB,CAAC,OAAwB;IAGpD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,SAAS,CAAC;AACzD,CAAC;AACD,SAAS,YAAY,CAAC,KAQrB;IACG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,SAAS,KAAK,SAAS;QACvB,OAAO,SAAS,CAAC;IACrB,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxG,IAAI,cAAc,KAAK,SAAS;WACzB,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;WACzC,QAAQ,CAAC,uBAAuB,KAAK,cAAc,CAAC,uBAAuB,EAAE,CAAC;QACjF,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,wCAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,SAAS,KAAK,SAAS;QACvB,OAAO,SAAS,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/E,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;SAC9C,CAAC;QACF,cAAc;KACjB,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAwB,EAAE,KAAyB;IACzE,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;WAC5B,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;WAC5C,IAAI,CAAC,uBAAuB,KAAK,KAAK,CAAC,uBAAuB,CAAC;AAC1E,CAAC;AACD,kFAAkF;AAClF,SAAS,4BAA4B,CAAC,MAAyB,EAAE,IAAwB;IACrF,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;WAC7B,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc;WACtC,MAAM,CAAC,uBAAuB,KAAK,IAAI,CAAC,uBAAuB,CAAC;AAC3E,CAAC;AACD,SAAS,yBAAyB,CAAC,MAAyB,EAAE,IAAwB;IAClF,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;WACxD,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;WAC7B,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc;WACtC,MAAM,CAAC,uBAAuB,KAAK,IAAI,CAAC,uBAAuB,CAAC;AAC3E,CAAC;AACD,SAAS,2BAA2B,CAAC,KAIpC;IACG,OAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;WAC5D,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC;WAC7D,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,QAAQ,CAAC,IAA6B;IAC3C,OAAO,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,iBAAiB,CAAC,KAK1B;IAKG,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,cAAc;YACf,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,+BAAwC;gBAChD,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,oBAAoB;YACrB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,sCAA+C;gBACvD,KAAK,EAAE,6CAAqC,CAAC,iBAAiB;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,aAAa;YACd,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,+BAAwC;gBAChD,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5B,CAAC,CAAC;QACP,KAAK,SAAS;YACV,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,2BAAoC;gBAC5C,KAAK,EAAE,SAAkB;gBACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5C,CAAC,CAAC;IACX,CAAC;AACL,CAAC;AACD,SAAS,0BAA0B;IAC/B,OAAO,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAClG,CAAC;AACD,SAAS,iBAAiB,CAAC,OAA0B,EAAE,MAAkE;IACrH,OAAO,UAAU,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;AAC5J,CAAC;AACD,SAAS,kBAAkB,CAAC,KAG3B;IAIG,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,CAAC;SACxH,CAAC;IACN,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,0BAA0B,CAAC;YAC/H,OAAO,EAAE,0BAA0B;SACtC,CAAC;IACN,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACxD,OAAO;YACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC;YACvH,OAAO,EAAE,kBAAkB;SAC9B,CAAC;IACN,CAAC;IACD,OAAO;QACH,UAAU,EAAE,UAAU,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,WAAW,EAAE,OAAO,EAAE,yBAAyB,CAAC;KAC9H,CAAC;AACN,CAAC;AACD,SAAS,UAAU,CAAC,UAAyC,EAAE,aAAqC,EAAE,WAA2C,EAAE,MAAiC,EAAE,MAAc;IAChM,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC;AACD,SAAS,OAAO,CAAsG,MAAc,EAAE,KAOrI;IAGG,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,GAAG,MAAM;QACT,KAAK,EAAE,KAAc;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;QACpF,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;KACrD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,MAA2B;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;YACnC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK;SACpC,CAAC;KACL,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,MAAuB;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,SAAS,CAAC,YAAoB,EAAE,MAAc,EAAE,OAAgB;IACrE,OAAO,OAAO,KAAK,SAAS;QACxB,CAAC,CAAC,GAAG,YAAY,SAAS,MAAM,EAAE;QAClC,CAAC,CAAC,GAAG,YAAY,SAAS,MAAM,SAAS,OAAO,EAAE,CAAC;AAC3D,CAAC;AACD,SAAS,WAAW,CAAC,MAA2C;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,mCAAmC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,CAAC;AACD,SAAS,WAAW,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,GAAG,GAAG,KAA2B,CAAC;IACxC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;WAC9B,IAAA,kCAAiB,EAAC,GAAG,CAAC,KAAK,CAAC;WAC5B,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;WACpC,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC;WACzC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;WACjC,IAAA,4BAAW,EAAC,GAAG,CAAC,SAAS,CAAC;WAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,KAA4B,CAAC;IAC1C,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;WAC/B,IAAA,kCAAiB,EAAC,IAAI,CAAC,KAAK,CAAC;WAC7B,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;WAC/B,IAAA,kCAAiB,EAAC,IAAI,CAAC,MAAM,CAAC;WAC9B,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;WACrC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC;WAC1C,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;WAC/B,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;WACpC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;WAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;WAClC,IAAI,CAAC,OAAO,IAAI,CAAC;WACjB,CAAC,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,CAAC;WACnE,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS;eAChC,IAAI,CAAC,gBAAgB,KAAK,oCAAoC,CAAC;WACnE,OAAO,IAAI,CAAC,uBAAuB,KAAK,QAAQ;WAChD,IAAA,+BAAc,EAAC,IAAI,CAAC,uBAAuB,CAAC;WAC5C,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC;WACvC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;WACxC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAa,EAAE,aAAqB;IAC/D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC;AAC7D,CAAC;AACD,SAAS,uBAAuB,CAAC,KAAa;IAC1C,OAAO,qBAAqB,CAAC,KAAK,EAAE,qDAA6C,CAAC;WAC3E,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC;AACrE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,KAGhB,CAAC;IACF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;WACnC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC;WACxC,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;WAClC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,KAGhB,CAAC;IACF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;WACnC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC;WACxC,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ;WACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;WACtC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;AACtC,CAAC","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/experiments/cache.md\n// @concord-implements docs/feature/experiments/use-case/cache-explicit-rerun.md\n// @concord-implements docs/feature/experiments/use-case/rerun-all.md\nimport { Effect, Result, Schema } from \"effect\";\nimport { RecordIntegrityFailure } from \"../record/reader/errors.ts\";\nimport { SqliteRecordError } from \"../record/sqlite/errors.ts\";\nimport { detachPlanningReference, selectPlanningSources, type PlanningExactReference } from \"../record/host/sqlite-host.ts\";\nimport { RunIdSchema, ExperimentIdSchema, UtcMillisSchema } from \"../record/codec/identifiers.ts\";\nimport { RecordSlotIdentitySchema } from \"../record/codec/core.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nimport { foldRecordedAttemptScore } from \"../eval/record/score.ts\";\nimport { executionDigestForExperiment, hasProvenNoExperimentHooks } from \"./rename-identity.ts\";\nimport type { RecordIssue } from \"../record/errors/record-errors.ts\";\nimport { nonEmptyRecordIssues, recordIssue } from \"../record/errors/record-errors.ts\";\nimport type { AssertionsAttachment, } from \"../record/family/assertions/definition.ts\";\nimport { NiceEvalRecordAttachments } from \"../record/family/catalog.ts\";\nimport { readAttemptExecutionDuration, type DurationLimit, type AttemptExecutionTimingFacts, } from \"../eval/record/eligibility.ts\";\nimport { COMPARISON_SOURCE_STATES, type ComparisonAttachment, type ComparisonResult, type RecordedAttemptClaim, } from \"../eval/record/membership-provenance.ts\";\nimport { foldRecordedAttemptVerdict, type VerdictState, } from \"../eval/record/verdict.ts\";\nimport type { RecordReadSession, ReadableAttempt, ReadableRun, SelectedAttemptRef, SelectedRunRef, } from \"../record/host/types.ts\";\nimport type { RecordCoreRead, RecordAttachmentRead } from \"../record/model/read-state.ts\";\nimport { compareCanonicalIdentity, isPortableSegment, isSha256Digest, isUtcMillis, type ExecutionIdentityDigest, type RunId, type SlotId, type UtcMillis, } from \"../record/model/identifiers.ts\";\nimport type { AttemptOutcome, AttemptDocument, MemberDocument, RunDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RecordReaderReadError } from \"../record/reader/errors.ts\";\nimport type { EvaluationKind } from \"./types.ts\";\nexport const PROJECT_TARGET_POLICY_NAME = \"project-target\" as const;\nexport const PROJECT_TARGET_POLICY_VERSION = 2 as const;\nexport const PROJECT_TARGET_INVOCATION_ID_MAXIMUM_LENGTH = 255 as const;\nexport const PROJECT_TARGET_RECORD_IDENTITY_MAXIMUM_LENGTH = 4096 as const;\nexport interface ExecutionPolicyIdentity {\n readonly name: typeof PROJECT_TARGET_POLICY_NAME;\n readonly version: typeof PROJECT_TARGET_POLICY_VERSION;\n}\nexport const projectTargetPolicyIdentity: ExecutionPolicyIdentity = Object.freeze({\n name: PROJECT_TARGET_POLICY_NAME,\n version: PROJECT_TARGET_POLICY_VERSION,\n});\n/** Current planner input, kept in memory rather than persisted as an Attachment. */\nexport interface ExecutionIdentity {\n readonly domain: string;\n readonly value: string;\n}\nexport interface ExecutionDurationLimit {\n readonly domain: string;\n readonly milliseconds: number;\n}\n/**\n * Reuse compares current execution identity with the immutable Core Slot,\n * folds Core outcome with Assertions, and reads duration from Runner Activity\n * receipts. None of these facts is a separate eligibility/verdict family.\n */\nexport const EXECUTION_COMPARISON_PROJECTION_STATE = Object.freeze({\n migrationRequired: \"migration-required\" as const,\n});\nexport const EXECUTION_COMPARISON_SOURCE_STATES = [\n ...COMPARISON_SOURCE_STATES,\n EXECUTION_COMPARISON_PROJECTION_STATE.migrationRequired,\n] as const;\nexport type ExecutionComparisonAttachment = ComparisonAttachment;\nexport type ExecutionComparisonSourceState = (typeof EXECUTION_COMPARISON_SOURCE_STATES)[number];\nexport type ExecutionComparisonResult = ComparisonResult;\nexport type ExecutionRecordedClaim = RecordedAttemptClaim;\nexport interface ExecutionComparison {\n readonly attachment: ExecutionComparisonAttachment;\n readonly recordedClaim: ExecutionRecordedClaim;\n readonly sourceState: ExecutionComparisonSourceState;\n readonly result: ExecutionComparisonResult;\n readonly reason: string;\n}\nexport type ExecutionGapReason = \"no-source-run\" | \"source-slot-missing\" | \"source-member-missing\" | \"source-core-invalid\" | \"source-publication-unavailable\" | \"source-attachment-unavailable\" | \"source-attachment-migration-required\" | \"source-attachment-unsupported\" | \"source-attachment-invalid\" | \"reuse-contract-domain-mismatch\" | \"reuse-contract-mismatch\" | \"identity-mismatch\" | \"identity-domain-mismatch\" | \"duration-domain-mismatch\" | \"timeout-exceeded\" | \"attempt-outcome-ineligible\" | \"adoption-unproven\" | \"verdict-ineligible\" | \"score-incomplete\" | \"adapter-behavior-revision-required\" | \"rerun-requested\" | \"sandbox-retention-requested\";\nexport type ExecutionGapScope = \"slot\" | \"experiment\" | \"target\";\n/** Origin identity is read from the immutable Attempt, never reconstructed. */\nexport interface ExecutionSourceOrigin {\n readonly runId: RunId;\n readonly slotId: SlotId;\n}\n/** The selected Run boundary may itself be a reference Run. */\nexport interface ExecutionSourceBarrier {\n readonly runId: RunId;\n readonly startedAt: UtcMillis;\n}\nexport interface ExecutionReuseEffectiveOptions {\n readonly rerun: \"none\" | \"failed\" | \"all\";\n readonly keepSandbox: boolean;\n readonly reuseContract: ExecutionIdentity;\n}\nexport interface ExecutionTarget {\n readonly invocationId: string;\n readonly runs: readonly TargetRun[];\n}\nexport interface TargetRun {\n readonly runId: RunId;\n readonly experimentId: string;\n readonly startedAt: UtcMillis;\n readonly slots: readonly TargetSlot[];\n}\n/**\n * `slotId` and `executionIdentityDigest` are deterministic current planning\n * facts. A carried Member can therefore point at the exact immutable origin\n * Attempt without an out-of-band provenance Attachment.\n */\nexport interface TargetSlot {\n readonly renameFingerprint?: (experimentId: string) => string | undefined;\n readonly runId: RunId;\n readonly slotId: SlotId;\n readonly experimentId: string;\n readonly evalId: string;\n readonly attempt: number;\n readonly evaluationKind: EvaluationKind;\n readonly executionIdentityDigest: ExecutionIdentityDigest;\n readonly inputIdentity: ExecutionIdentity;\n readonly configIdentity: ExecutionIdentity;\n readonly timeout?: ExecutionDurationLimit;\n /** Current-only eligibility fact; omitted means behavior identity is reusable. */\n readonly reuseEligibility?: \"adapter-behavior-revision-required\";\n}\n/** Logical current input; evaluating it never allocates durable identities. */\nexport type CurrentTargetSlot = Omit<TargetSlot, \"runId\" | \"slotId\">;\nexport interface CurrentAssessmentRun<Ref> {\n readonly createdRevision?: number;\n readonly lifecycle?: Pick<ReadableRunResource, \"state\" | \"slots\">;\n readonly document: Pick<RunDocument, \"runId\" | \"experimentId\" | \"startedAt\" | \"expectedSlots\"> & {\n readonly context?: RunDocument[\"context\"];\n };\n readonly members: readonly {\n readonly document: MemberDocument;\n readonly bindingRevision?: number;\n readonly attempt: Ref | null;\n }[];\n}\nexport interface CurrentAssessmentSource {\n readonly attemptId: AttemptDocument[\"attemptId\"];\n readonly origin: ExecutionSourceOrigin;\n readonly sourceBarrier: ExecutionSourceBarrier;\n}\nexport type CurrentSlotAssessment<Target extends CurrentTargetSlot, Source extends CurrentAssessmentSource> = Target & ({\n readonly state: \"reuse\";\n readonly adoption: \"carried\";\n readonly source: Source;\n readonly comparisons: readonly ExecutionComparison[];\n} | {\n readonly state: \"gap\";\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: Source;\n readonly comparisons: readonly ExecutionComparison[];\n});\nexport interface CurrentAssessmentAttempt {\n readonly document: AttemptDocument;\n readonly publicationAvailable: boolean;\n}\n/** Both consumers retain every expected lifecycle position at one cutoff. */\nexport function mergeCurrentAssessmentRuns<Ref>(runs: readonly CurrentAssessmentRun<Ref>[], resources: readonly ReadableRunResource[]): Effect.Effect<readonly CurrentAssessmentRun<Ref>[], RecordIntegrityFailure> {\n return Effect.map(Effect.forEach(resources, (resource) => {\n const published = runs.find((run) => run.document.runId === resource.runId);\n const lifecycle = Object.freeze({ state: resource.state, slots: resource.slots });\n if (published !== undefined)\n return Effect.succeed(Object.freeze({ ...published, createdRevision: resource.createdRevision, lifecycle }));\n return Schema.decodeUnknownEffect(Schema.Struct({\n runId: RunIdSchema, experimentId: ExperimentIdSchema, startedAt: UtcMillisSchema,\n expectedSlots: Schema.Array(RecordSlotIdentitySchema),\n }))({\n runId: resource.runId, experimentId: resource.experimentId, startedAt: Date.parse(resource.startedAt),\n expectedSlots: resource.slots.map(({ publication: _publication, ...slot }) => slot),\n }).pipe(Effect.map((document): CurrentAssessmentRun<Ref> => Object.freeze({ createdRevision: resource.createdRevision, lifecycle, document, members: Object.freeze([]) })), Effect.mapError(() => new RecordIntegrityFailure({ code: \"record-integrity-failure\", runId: resource.runId, reason: \"core-invalid\" })));\n }, { concurrency: 1 }), (lifecycle) => Object.freeze([\n ...lifecycle,\n ...runs.filter((run) => !resources.some((resource) => resource.runId === run.document.runId)),\n ]));\n}\nexport type AssertionsVerdict = VerdictState;\n/** Read references are consumed during planning; binding uses the detached proof. */\nexport interface ExecutionReusePlanSource {\n readonly reference: PlanningExactReference;\n readonly attemptId: SelectedAttemptRef[\"attemptId\"];\n readonly attempt: SelectedAttemptRef & {\n readonly publicationIdentity: NonNullable<SelectedAttemptRef[\"publicationIdentity\"]>;\n };\n readonly origin: ExecutionSourceOrigin;\n readonly originRun: SelectedRunRef;\n readonly sourceBarrier: ExecutionSourceBarrier;\n readonly evaluationKind: EvaluationKind;\n}\nexport interface ProjectTargetPolicy {\n readonly identity: ExecutionPolicyIdentity;\n readonly reuseContract: ExecutionIdentity;\n readonly rerun: \"none\" | \"failed\" | \"all\";\n readonly keepSandbox: boolean;\n}\nexport interface ExecutionReusePlanSlotBase extends TargetSlot {\n readonly comparisons: readonly ExecutionComparison[];\n}\nexport interface ReusePlanSlot extends ExecutionReusePlanSlotBase {\n readonly state: \"reuse\";\n readonly adoption: \"carried\";\n readonly source: ExecutionReusePlanSource;\n}\nexport interface ExecutionGapSlot extends ExecutionReusePlanSlotBase {\n readonly state: \"gap\";\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: ExecutionReusePlanSource;\n}\nexport type ExecutionReusePlanSlot = ReusePlanSlot | ExecutionGapSlot;\nexport interface ExecutionReusePlan {\n readonly target: ExecutionTarget;\n readonly policy: ExecutionPolicyIdentity;\n readonly effectiveOptions: ExecutionReuseEffectiveOptions;\n readonly slots: readonly ExecutionReusePlanSlot[];\n readonly reuse: readonly ReusePlanSlot[];\n readonly gaps: readonly ExecutionGapSlot[];\n}\nexport interface ProjectTargetReusePlanInput {\n readonly reader: RecordReadSession;\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}\nexport type ProjectTargetReusePlanInvalidReason = \"invocation-id-invalid\" | \"target-run-invalid\" | \"target-run-duplicate\" | \"target-slot-invalid\" | \"target-slot-duplicate\" | \"target-slot-run-mismatch\" | \"target-slot-experiment-mismatch\" | \"target-slot-ordinal-duplicate\" | \"policy-unsupported\" | \"policy-input-invalid\";\nexport interface ProjectTargetReusePlanInvalid {\n readonly code: \"project-target-reuse-plan-invalid\";\n readonly reason: ProjectTargetReusePlanInvalidReason;\n}\n/**\n * Fold the terminal Verdict from the source Attempt's immutable Core outcome\n * and its fixed Assertions facts. This is a projection, not a second durable\n * Verdict family.\n */\nexport function recordedAttemptVerdict(input: {\n readonly outcome: AttemptOutcome;\n readonly assertions: AssertionsAttachment;\n}): AssertionsVerdict {\n return foldRecordedAttemptVerdict(input);\n}\n/** Input validation is pure; it never invents a target Slot or repairs an identity. */\nexport function validateProjectTargetReusePlanInput(input: {\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}): ProjectTargetReusePlanInvalid | undefined {\n const unknownInput: unknown = input;\n if (typeof unknownInput !== \"object\" || unknownInput === null) {\n return invalidPlan(\"target-run-invalid\");\n }\n const envelope = unknownInput as {\n readonly target?: unknown;\n readonly policy?: unknown;\n };\n if (typeof envelope.target !== \"object\" || envelope.target === null) {\n return invalidPlan(\"target-run-invalid\");\n }\n const target = envelope.target as {\n readonly invocationId?: unknown;\n readonly runs?: unknown;\n };\n if (typeof target.invocationId !== \"string\"\n || !isBoundedNonEmptyText(target.invocationId, PROJECT_TARGET_INVOCATION_ID_MAXIMUM_LENGTH)\n || !Array.isArray(target.runs)) {\n return invalidPlan(\"invocation-id-invalid\");\n }\n if (typeof envelope.policy !== \"object\" || envelope.policy === null) {\n return invalidPlan(\"policy-input-invalid\");\n }\n const policy = envelope.policy as {\n readonly identity?: unknown;\n readonly reuseContract?: unknown;\n readonly rerun?: unknown;\n readonly keepSandbox?: unknown;\n };\n if (typeof policy.identity !== \"object\"\n || policy.identity === null\n || (policy.identity as {\n readonly name?: unknown;\n }).name !== PROJECT_TARGET_POLICY_NAME\n || (policy.identity as {\n readonly version?: unknown;\n }).version !== PROJECT_TARGET_POLICY_VERSION) {\n return invalidPlan(\"policy-unsupported\");\n }\n if (!isExecutionIdentity(policy.reuseContract)\n || !isRerunOption(policy.rerun)\n || typeof policy.keepSandbox !== \"boolean\") {\n return invalidPlan(\"policy-input-invalid\");\n }\n const runIds = new Set<string>();\n const slotIds = new Set<string>();\n const ordinals = new Set<string>();\n for (const run of target.runs) {\n if (!isTargetRun(run))\n return invalidPlan(\"target-run-invalid\");\n if (runIds.has(run.runId))\n return invalidPlan(\"target-run-duplicate\");\n runIds.add(run.runId);\n for (const slot of run.slots) {\n if (!isTargetSlot(slot))\n return invalidPlan(\"target-slot-invalid\");\n if (slot.runId !== run.runId)\n return invalidPlan(\"target-slot-run-mismatch\");\n if (slot.experimentId !== run.experimentId) {\n return invalidPlan(\"target-slot-experiment-mismatch\");\n }\n if (slotIds.has(slot.slotId))\n return invalidPlan(\"target-slot-duplicate\");\n slotIds.add(slot.slotId);\n const ordinal = sourceKey(slot.experimentId, slot.evalId, String(slot.attempt));\n if (ordinals.has(ordinal))\n return invalidPlan(\"target-slot-ordinal-duplicate\");\n ordinals.add(ordinal);\n }\n }\n return undefined;\n}\n/**\n * Plans only from Record Host selection references. It neither reconstructs\n * attempt handles from strings nor reads private Record paths.\n */\n// @concord-code\n// @concord-implements docs/feature/experiments/cache.md\nexport function planProjectTargetReuse(input: ProjectTargetReusePlanInput): Effect.Effect<ExecutionReusePlan, ProjectTargetReusePlanInvalid | RecordReaderReadError> {\n return Effect.suspend<ExecutionReusePlan, ProjectTargetReusePlanInvalid | RecordReaderReadError, never>(() => {\n const invalid = validateProjectTargetReusePlanInput(input);\n if (invalid !== undefined)\n return Effect.fail(invalid);\n return Effect.gen(function* () {\n const selected = yield* selectPlanningSources(input.reader, flattenTargetSlots(input.target).map((slot) => ({\n experimentId: slot.experimentId, evalId: slot.evalId, attemptOrdinal: slot.attempt, excludeRunId: slot.runId,\n })));\n const { selection } = selected;\n const readable = yield* Effect.forEach(selection.runRefs, (ref) => input.reader.readRun(ref), { concurrency: 1 });\n const publishedRuns: ReadableRun[] = [];\n const coreIssues: RecordIssue[] = [];\n for (const read of readable) {\n if (read.state === \"available\")\n publishedRuns.push(read.value);\n else if (read.state === \"core-invalid\")\n coreIssues.push(...read.issues);\n }\n const merged = yield* mergeCurrentAssessmentRuns(publishedRuns, selected.resources);\n const runs = merged.map((run) => selected.members.has(run.document.runId)\n ? Object.freeze({ ...run, members: selected.members.get(run.document.runId)! }) : run);\n const byRunId = new Map(publishedRuns.map((run) => [run.document.runId, run] as const));\n const slots: ExecutionReusePlanSlot[] = [];\n for (const target of flattenTargetSlots(input.target)) {\n const sourceProblems = selection.problems.filter((problem) => selected.experimentByRun.get(problem.runId) === target.experimentId);\n const scopedIssues = [...(selected.issuesByExperiment.get(target.experimentId) ?? []),\n ...sourceProblems.map((problem) => recordIssue(\"record-schema-invalid\", [\"run\", problem.runId, problem.code]))];\n slots.push(yield* planTargetSlot({\n reader: input.reader,\n target,\n policy: input.policy,\n runs,\n byRunId,\n selectionHasProblem: scopedIssues.length > 0 || coreIssues.length > 0,\n selectionProblemScope: coreIssues.length > 0 ? \"target\" : \"experiment\",\n coreIssues: [...coreIssues, ...scopedIssues],\n }));\n }\n const reuse = slots.filter((slot): slot is ReusePlanSlot => slot.state === \"reuse\");\n const gaps = slots.filter((slot): slot is ExecutionGapSlot => slot.state === \"gap\");\n return Object.freeze({\n target: input.target,\n policy: projectTargetPolicyIdentity,\n effectiveOptions: effectiveOptions(input.policy),\n slots: Object.freeze(slots),\n reuse: Object.freeze(reuse),\n gaps: Object.freeze(gaps),\n });\n });\n });\n}\n/** Empty or not-yet-created Record roots produce no source capability. */\nexport function planProjectTargetReuseWithoutSources(input: {\n readonly target: ExecutionTarget;\n readonly policy: ProjectTargetPolicy;\n}): Effect.Effect<ExecutionReusePlan, ProjectTargetReusePlanInvalid> {\n return Effect.suspend(() => {\n const invalid = validateProjectTargetReusePlanInput(input);\n if (invalid !== undefined)\n return Effect.fail(invalid);\n const gaps = Object.freeze(flattenTargetSlots(input.target).map((target) => gapSlot(target, {\n reason: target.reuseEligibility ?? \"no-source-run\",\n scope: \"slot\",\n issues: [],\n comparisons: [],\n })));\n return Effect.succeed(Object.freeze({\n target: input.target,\n policy: projectTargetPolicyIdentity,\n effectiveOptions: effectiveOptions(input.policy),\n slots: gaps,\n reuse: Object.freeze([]),\n gaps,\n }));\n });\n}\nexport const ProjectTargetReusePlanner = Object.freeze({ plan: planProjectTargetReuse });\nfunction planTargetSlot(input: {\n readonly reader: RecordReadSession;\n readonly target: TargetSlot;\n readonly policy: ProjectTargetPolicy;\n readonly runs: readonly CurrentAssessmentRun<SelectedAttemptRef>[];\n readonly byRunId: ReadonlyMap<RunId, ReadableRun>;\n readonly selectionHasProblem: boolean;\n readonly selectionProblemScope?: ExecutionGapScope;\n readonly coreIssues: readonly RecordIssue[];\n}): Effect.Effect<ExecutionReusePlanSlot, RecordReaderReadError> {\n return assessCurrentTargetSlot({\n ...input,\n readAttempt: (ref) => input.reader.readAttempt(ref).pipe(Effect.catch((error) => error instanceof RecordIntegrityFailure || error instanceof SqliteRecordError &&\n [\"record-database-invalid\", \"record-content-invalid\", \"record-seal-incomplete\"].includes(error.code)\n ? Effect.succeed({ state: \"core-invalid\" as const,\n issues: nonEmptyRecordIssues([recordIssue(\"record-schema-invalid\", [\"attempt\", String(ref.attemptId), error.code,\n ...(error instanceof RecordIntegrityFailure ? [error.reason] : [])])])! })\n : Effect.fail(error)), Effect.map((read) => read.state !== \"available\" ? read : {\n state: \"available\" as const,\n value: { ...read.value, publicationAvailable: read.value.ref.publicationIdentity !== undefined },\n })),\n readAssertions: (attempt) => planningAttachment(input.reader.read(attempt.owner, NiceEvalRecordAttachments.assertions), \"assertions\"),\n readActivities: (attempt) => planningAttachment(input.reader.read(attempt.owner, NiceEvalRecordAttachments.runnerActivities.attempt), \"runner-activities\"),\n sourceFor: (attempt, sourceBarrier) => {\n if (!hasPublicationIdentity(attempt))\n throw new Error(\"Expected a published Attempt\");\n return candidateFor({ reader: input.reader, target: input.target, sourceBarrier, attempt, byRunId: input.byRunId })!.source;\n },\n });\n}\nfunction planningAttachment<Value>(read: Effect.Effect<RecordAttachmentRead<Value>, RecordReaderReadError>, family: string): Effect.Effect<RecordAttachmentRead<Value>, RecordReaderReadError> {\n return read.pipe(Effect.catch((error) => error instanceof SqliteRecordError &&\n [\"record-database-invalid\", \"record-content-invalid\", \"record-seal-incomplete\"].includes(error.code)\n ? Effect.succeed({ state: \"invalid\" as const,\n issues: nonEmptyRecordIssues([recordIssue(\"record-schema-invalid\", [family, error.code])])! })\n : Effect.fail(error)));\n}\n/** Both read-only current results and execution planning use this assessment. */\nexport interface CurrentAssessmentInput<Ref, Attempt extends CurrentAssessmentAttempt, Source extends CurrentAssessmentSource, Target extends CurrentTargetSlot, Error> {\n readonly target: Target;\n readonly policy: ProjectTargetPolicy;\n readonly runs: readonly CurrentAssessmentRun<Ref>[];\n readonly byRunId: ReadonlyMap<RunId, CurrentAssessmentRun<Ref>>;\n readonly selectionHasProblem: boolean;\n readonly selectionProblemScope?: ExecutionGapScope;\n readonly coreIssues: readonly RecordIssue[];\n readonly readAttempt: (ref: Ref) => Effect.Effect<RecordCoreRead<Attempt>, Error>;\n readonly readAssertions: (attempt: Attempt) => Effect.Effect<RecordAttachmentRead<AssertionsAttachment>, Error>;\n readonly readActivities: (attempt: Attempt) => Effect.Effect<RecordAttachmentRead<AttemptExecutionTimingFacts>, Error>;\n readonly sourceFor: (attempt: Attempt, barrier: ExecutionSourceBarrier) => Source;\n}\nexport function assessCurrentTargetSlot<Ref, Attempt extends CurrentAssessmentAttempt, Source extends CurrentAssessmentSource, Target extends CurrentTargetSlot, Error>(input: CurrentAssessmentInput<Ref, Attempt, Source, Target, Error>): Effect.Effect<CurrentSlotAssessment<Target, Source>, Error> {\n return Effect.gen(function* () {\n if (input.target.reuseEligibility !== undefined) {\n return gapSlot(input.target, {\n reason: input.target.reuseEligibility,\n scope: \"slot\",\n issues: [],\n comparisons: [],\n });\n }\n if (input.selectionHasProblem) {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: input.selectionProblemScope ?? \"target\",\n issues: input.coreIssues,\n comparisons: [],\n });\n }\n const sourceRun = latestSourceRun(input.runs, input.target);\n if (sourceRun === undefined) {\n return gapSlot(input.target, {\n reason: \"no-source-run\",\n scope: \"slot\",\n issues: [],\n comparisons: [],\n });\n }\n const sourceBarrier = Object.freeze({\n runId: sourceRun.document.runId,\n startedAt: sourceRun.document.startedAt,\n });\n const expected = sourceRun.document.expectedSlots.find((slot) => slot.evalId === input.target.evalId\n && slot.attemptOrdinal === input.target.attempt);\n if (expected === undefined) {\n return gapSlot(input.target, {\n reason: \"source-slot-missing\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const member = sourceRun.members.find((candidate) => candidate.document.slotId === expected.slotId);\n if (member === undefined || member.attempt === null) {\n const publication = sourceRun.lifecycle?.slots.find((slot) => slot.slotId === expected.slotId)?.publication;\n return gapSlot(input.target, {\n reason: \"source-member-missing\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: publication?.state === \"pending\" || publication?.state === \"absent\"\n ? [comparison(\"core\", \"attempt-outcome\", \"unavailable\", \"not-comparable\", publication.state === \"pending\" ? \"pending\" : publication.reason)]\n : [],\n });\n }\n const readAttempt = yield* input.readAttempt(member.attempt);\n if (readAttempt.state !== \"available\") {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: \"slot\",\n issues: issuesOf(readAttempt),\n sourceBarrier,\n comparisons: [],\n });\n }\n if (!readAttempt.value.publicationAvailable) {\n return gapSlot(input.target, {\n reason: \"source-publication-unavailable\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const document = readAttempt.value.document;\n const originRun = input.byRunId.get(document.originRunId);\n const originExpected = originRun?.document.expectedSlots.find((slot) => slot.slotId === document.slotId);\n if (originExpected === undefined || document.evalId !== originExpected.evalId || document.executionIdentityDigest !== originExpected.executionIdentityDigest) {\n return gapSlot(input.target, {\n reason: \"source-core-invalid\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n comparisons: [],\n });\n }\n const candidate = input.sourceFor(readAttempt.value, sourceBarrier);\n const ordinaryIdentity = reusableSlotIdentityMatches({ target: input.target, sourceExpected: expected, originExpected });\n if (!ordinaryIdentity) {\n const originRun = input.byRunId.get(candidate.origin.runId)!;\n const pureRename = targetMatchesLogicalIdentity(input.target, expected) &&\n originExpected.evalId === input.target.evalId &&\n originExpected.attemptOrdinal === input.target.attempt &&\n executionDigestForExperiment(input.target, originRun.document.experimentId) === originExpected.executionIdentityDigest;\n if (!pureRename)\n return gapSlot(input.target, {\n reason: \"identity-mismatch\", scope: \"slot\", issues: [], sourceBarrier, candidate,\n comparisons: [identityMismatchComparison()],\n });\n if (sourceRun.document.context === undefined || originRun.document.context === undefined ||\n !hasProvenNoExperimentHooks(sourceRun.document.context) ||\n !hasProvenNoExperimentHooks(originRun.document.context))\n return gapSlot(input.target, {\n reason: \"adoption-unproven\", scope: \"slot\", issues: [], sourceBarrier, candidate, comparisons: [],\n });\n const witness = member.bindingRevision === undefined ? undefined : input.runs.find((run) => {\n if (run.document.experimentId !== input.target.experimentId)\n return false;\n const slot = run.document.expectedSlots.find((entry) => targetMatchesLogicalIdentity(input.target, entry));\n if (slot === undefined)\n return false;\n return run.members.some((entry) => entry.document.slotId === slot.slotId && entry.document.action === \"accepted\" &&\n entry.document.attempt !== null && entry.document.attempt.originRunId === candidate.origin.runId &&\n entry.document.attempt.attemptId === candidate.attemptId && entry.bindingRevision !== undefined &&\n entry.bindingRevision <= member.bindingRevision!);\n });\n if (witness === undefined)\n return gapSlot(input.target, {\n reason: \"adoption-unproven\", scope: \"slot\", issues: [], sourceBarrier, candidate, comparisons: [],\n });\n }\n const assertions = yield* input.readAssertions(readAttempt.value);\n if (assertions.state !== \"available\") {\n const problem = attachmentProblem(assertions);\n return gapSlot(input.target, {\n reason: problem.reason,\n scope: \"slot\",\n issues: problem.issues,\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.assertions\", \"assertion-verdict\", problem.state, \"not-comparable\", problem.reason)],\n });\n }\n const verdict = recordedAttemptVerdict({\n outcome: readAttempt.value.document.outcome,\n assertions: assertions.value,\n });\n if (readAttempt.value.document.outcome !== \"completed\") {\n return gapSlot(input.target, {\n reason: \"attempt-outcome-ineligible\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [\n comparison(\"core\", \"attempt-outcome\", \"available\", \"ineligible\", `attempt-${readAttempt.value.document.outcome}`),\n verdictComparison(verdict, \"ineligible\"),\n ],\n });\n }\n if (input.target.evaluationKind === \"score\") {\n const score = foldRecordedAttemptScore({ outcome: readAttempt.value.document.outcome, assertions: assertions.value });\n if (Result.isFailure(score) || score.success.state !== \"complete\")\n return gapSlot(input.target, {\n reason: \"score-incomplete\", scope: \"slot\", issues: [], sourceBarrier, candidate,\n comparisons: [comparison(\"niceeval.assertions\", \"assertion-verdict\", \"available\", \"ineligible\", \"score-incomplete\")],\n });\n }\n if (verdict !== \"passed\" && verdict !== \"failed\") {\n return gapSlot(input.target, {\n reason: \"verdict-ineligible\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"ineligible\")],\n });\n }\n const activities = yield* input.readActivities(readAttempt.value);\n if (activities.state !== \"available\") {\n const problem = attachmentProblem(activities);\n return gapSlot(input.target, {\n reason: problem.reason,\n scope: \"slot\",\n issues: problem.issues,\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.runner-activities\", \"execution-duration\", problem.state, \"not-comparable\", problem.reason)],\n });\n }\n const durationRead = readAttemptExecutionDuration(activities.value);\n if (durationRead.state !== \"available\") {\n return gapSlot(input.target, {\n reason: \"source-attachment-unavailable\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [comparison(\"niceeval.runner-activities\", \"execution-duration\", \"unavailable\", \"not-comparable\", durationRead.reason)],\n });\n }\n const duration = durationComparison({\n source: durationRead.duration,\n target: input.target.timeout,\n });\n if (duration.failure !== undefined) {\n return gapSlot(input.target, {\n reason: duration.failure,\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [duration.comparison],\n });\n }\n if (input.policy.rerun === \"all\"\n || (input.policy.rerun === \"failed\" && verdict === \"failed\")) {\n return gapSlot(input.target, {\n reason: \"rerun-requested\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"match\"), duration.comparison],\n });\n }\n if (input.policy.keepSandbox) {\n return gapSlot(input.target, {\n reason: \"sandbox-retention-requested\",\n scope: \"slot\",\n issues: [],\n sourceBarrier,\n candidate,\n comparisons: [verdictComparison(verdict, \"match\"), duration.comparison],\n });\n }\n return Object.freeze({\n ...input.target,\n state: \"reuse\" as const,\n adoption: \"carried\" as const,\n source: candidate,\n comparisons: Object.freeze([\n comparison(\"core\", \"execution-identity\", \"available\", \"match\", \"execution-identity-match\"),\n comparison(\"core\", \"attempt-outcome\", \"available\", \"match\", \"attempt-completed\"),\n verdictComparison(verdict, \"match\"),\n duration.comparison,\n ]),\n });\n });\n}\nfunction latestSourceRun<Ref>(runs: readonly CurrentAssessmentRun<Ref>[], target: CurrentTargetSlot): CurrentAssessmentRun<Ref> | undefined {\n const candidates = runs.filter((run) => run.document.experimentId === target.experimentId\n // Execution refreshes may see their own already-created pending Run.\n // Logical current targets have no Run identity and keep every barrier.\n && (!(\"runId\" in target) || run.document.runId !== target.runId)\n && run.document.expectedSlots.some((slot) => slot.evalId === target.evalId && slot.attemptOrdinal === target.attempt));\n return candidates.sort((left, right) => {\n const a = left.createdRevision ?? 0, b = right.createdRevision ?? 0;\n return a - b || compareCanonicalIdentity(left.document.runId, right.document.runId);\n }).at(-1);\n}\ninterface CandidateResolution {\n readonly source: ExecutionReusePlanSource;\n readonly originExpected: RecordSlotIdentity;\n}\nfunction hasPublicationIdentity(attempt: ReadableAttempt): attempt is ReadableAttempt & {\n readonly ref: ExecutionReusePlanSource[\"attempt\"];\n} {\n return attempt.ref.publicationIdentity !== undefined;\n}\nfunction candidateFor(input: {\n readonly reader: RecordReadSession;\n readonly target: TargetSlot;\n readonly sourceBarrier: ExecutionSourceBarrier;\n readonly attempt: ReadableAttempt & {\n readonly ref: ExecutionReusePlanSource[\"attempt\"];\n };\n readonly byRunId: ReadonlyMap<RunId, ReadableRun>;\n}): CandidateResolution | undefined {\n const document = input.attempt.document;\n const originRun = input.byRunId.get(document.originRunId);\n if (originRun === undefined)\n return undefined;\n const originExpected = originRun.document.expectedSlots.find((slot) => slot.slotId === document.slotId);\n if (originExpected === undefined\n || document.evalId !== originExpected.evalId\n || document.executionIdentityDigest !== originExpected.executionIdentityDigest) {\n return undefined;\n }\n const reference = detachPlanningReference(input.reader, input.attempt.ref);\n if (reference === undefined)\n return undefined;\n return Object.freeze({\n source: Object.freeze({\n reference,\n attemptId: input.attempt.ref.attemptId,\n attempt: input.attempt.ref,\n origin: Object.freeze({ runId: document.originRunId, slotId: document.slotId }),\n originRun: originRun.ref,\n sourceBarrier: input.sourceBarrier,\n evaluationKind: input.target.evaluationKind,\n }),\n originExpected,\n });\n}\nfunction sameSlotIdentity(left: RecordSlotIdentity, right: RecordSlotIdentity): boolean {\n return left.slotId === right.slotId\n && left.evalId === right.evalId\n && left.attemptOrdinal === right.attemptOrdinal\n && left.executionIdentityDigest === right.executionIdentityDigest;\n}\n/** Slot IDs are exact references within a Run, not cross-Run equivalence keys. */\nfunction targetMatchesLogicalIdentity(target: CurrentTargetSlot, slot: RecordSlotIdentity): boolean {\n return target.evalId === slot.evalId\n && target.attempt === slot.attemptOrdinal\n && target.executionIdentityDigest === slot.executionIdentityDigest;\n}\nfunction targetMatchesSlotIdentity(target: CurrentTargetSlot, slot: RecordSlotIdentity): boolean {\n return (!(\"slotId\" in target) || target.slotId === slot.slotId)\n && target.evalId === slot.evalId\n && target.attempt === slot.attemptOrdinal\n && target.executionIdentityDigest === slot.executionIdentityDigest;\n}\nfunction reusableSlotIdentityMatches(input: {\n readonly target: CurrentTargetSlot;\n readonly sourceExpected: RecordSlotIdentity;\n readonly originExpected: RecordSlotIdentity;\n}): boolean {\n return sameSlotIdentity(input.sourceExpected, input.originExpected)\n && targetMatchesSlotIdentity(input.target, input.sourceExpected)\n && targetMatchesSlotIdentity(input.target, input.originExpected);\n}\nfunction issuesOf(read: RecordCoreRead<unknown>): readonly RecordIssue[] {\n return read.state === \"core-invalid\" ? read.issues : Object.freeze([]);\n}\nfunction attachmentProblem(input: {\n readonly state: \"not-recorded\" | \"migration-required\" | \"unsupported\" | \"invalid\";\n readonly family?: string;\n readonly schemaVersion?: number;\n readonly issues?: readonly RecordIssue[];\n}): {\n readonly reason: Extract<ExecutionGapReason, \"source-attachment-unavailable\" | \"source-attachment-migration-required\" | \"source-attachment-unsupported\" | \"source-attachment-invalid\">;\n readonly state: Exclude<ExecutionComparisonSourceState, \"available\">;\n readonly issues: readonly RecordIssue[];\n} {\n switch (input.state) {\n case \"not-recorded\":\n return Object.freeze({\n reason: \"source-attachment-unavailable\" as const,\n state: \"unavailable\" as const,\n issues: Object.freeze([]),\n });\n case \"migration-required\":\n return Object.freeze({\n reason: \"source-attachment-migration-required\" as const,\n state: EXECUTION_COMPARISON_PROJECTION_STATE.migrationRequired,\n issues: Object.freeze([]),\n });\n case \"unsupported\":\n return Object.freeze({\n reason: \"source-attachment-unsupported\" as const,\n state: \"unsupported\" as const,\n issues: Object.freeze([]),\n });\n case \"invalid\":\n return Object.freeze({\n reason: \"source-attachment-invalid\" as const,\n state: \"invalid\" as const,\n issues: input.issues ?? Object.freeze([]),\n });\n }\n}\nfunction identityMismatchComparison(): ExecutionComparison {\n return comparison(\"core\", \"execution-identity\", \"available\", \"mismatch\", \"identity-mismatch\");\n}\nfunction verdictComparison(verdict: AssertionsVerdict, result: Extract<ExecutionComparisonResult, \"match\" | \"ineligible\">): ExecutionComparison {\n return comparison(\"niceeval.assertions\", \"assertion-verdict\", \"available\", result, verdict === \"errored\" ? \"verdict-ineligible\" : `verdict-${verdict}`);\n}\nfunction durationComparison(input: {\n readonly source: DurationLimit;\n readonly target: ExecutionDurationLimit | undefined;\n}): {\n readonly comparison: ExecutionComparison;\n readonly failure?: \"duration-domain-mismatch\" | \"timeout-exceeded\";\n} {\n if (input.target === undefined) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"match\", \"timeout-unbounded\"),\n };\n }\n if (input.source.domain !== input.target.domain) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"mismatch\", \"duration-domain-mismatch\"),\n failure: \"duration-domain-mismatch\",\n };\n }\n if (input.source.milliseconds > input.target.milliseconds) {\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"mismatch\", \"timeout-exceeded\"),\n failure: \"timeout-exceeded\",\n };\n }\n return {\n comparison: comparison(\"niceeval.runner-activities\", \"execution-duration\", \"available\", \"match\", \"duration-within-timeout\"),\n };\n}\nfunction comparison(attachment: ExecutionComparisonAttachment, recordedClaim: ExecutionRecordedClaim, sourceState: ExecutionComparisonSourceState, result: ExecutionComparisonResult, reason: string): ExecutionComparison {\n return Object.freeze({ attachment, recordedClaim, sourceState, result, reason });\n}\nfunction gapSlot<Target extends CurrentTargetSlot, Source extends CurrentAssessmentSource = ExecutionReusePlanSource>(target: Target, input: {\n readonly reason: ExecutionGapReason;\n readonly scope: ExecutionGapScope;\n readonly issues: readonly RecordIssue[];\n readonly comparisons: readonly ExecutionComparison[];\n readonly sourceBarrier?: ExecutionSourceBarrier;\n readonly candidate?: Source;\n}): Extract<CurrentSlotAssessment<Target, Source>, {\n readonly state: \"gap\";\n}> {\n return Object.freeze({\n ...target,\n state: \"gap\" as const,\n reason: input.reason,\n scope: input.scope,\n issues: Object.freeze([...input.issues]),\n ...(input.sourceBarrier === undefined ? {} : { sourceBarrier: input.sourceBarrier }),\n ...(input.candidate === undefined ? {} : { candidate: input.candidate }),\n comparisons: Object.freeze([...input.comparisons]),\n });\n}\nfunction effectiveOptions(policy: ProjectTargetPolicy): ExecutionReuseEffectiveOptions {\n return Object.freeze({\n rerun: policy.rerun,\n keepSandbox: policy.keepSandbox,\n reuseContract: Object.freeze({\n domain: policy.reuseContract.domain,\n value: policy.reuseContract.value,\n }),\n });\n}\nfunction flattenTargetSlots(target: ExecutionTarget): readonly TargetSlot[] {\n return Object.freeze(target.runs.flatMap((run) => run.slots));\n}\nfunction sourceKey(experimentId: string, evalId: string, ordinal?: string): string {\n return ordinal === undefined\n ? `${experimentId}\\u0000${evalId}`\n : `${experimentId}\\u0000${evalId}\\u0000${ordinal}`;\n}\nfunction invalidPlan(reason: ProjectTargetReusePlanInvalidReason): ProjectTargetReusePlanInvalid {\n return Object.freeze({ code: \"project-target-reuse-plan-invalid\", reason });\n}\nfunction isTargetRun(value: unknown): value is TargetRun {\n if (typeof value !== \"object\" || value === null)\n return false;\n const run = value as Partial<TargetRun>;\n return (typeof run.runId === \"string\"\n && isPortableSegment(run.runId)\n && typeof run.experimentId === \"string\"\n && isBoundedRecordIdentity(run.experimentId)\n && typeof run.startedAt === \"number\"\n && isUtcMillis(run.startedAt)\n && Array.isArray(run.slots));\n}\nfunction isTargetSlot(value: unknown): value is TargetSlot {\n if (typeof value !== \"object\" || value === null)\n return false;\n const slot = value as Partial<TargetSlot>;\n return (typeof slot.runId === \"string\"\n && isPortableSegment(slot.runId)\n && typeof slot.slotId === \"string\"\n && isPortableSegment(slot.slotId)\n && typeof slot.experimentId === \"string\"\n && isBoundedRecordIdentity(slot.experimentId)\n && typeof slot.evalId === \"string\"\n && isBoundedRecordIdentity(slot.evalId)\n && typeof slot.attempt === \"number\"\n && Number.isSafeInteger(slot.attempt)\n && slot.attempt >= 0\n && (slot.evaluationKind === \"pass\" || slot.evaluationKind === \"score\")\n && (slot.reuseEligibility === undefined\n || slot.reuseEligibility === \"adapter-behavior-revision-required\")\n && typeof slot.executionIdentityDigest === \"string\"\n && isSha256Digest(slot.executionIdentityDigest)\n && isExecutionIdentity(slot.inputIdentity)\n && isExecutionIdentity(slot.configIdentity)\n && (slot.timeout === undefined || isExecutionDurationLimit(slot.timeout)));\n}\nfunction isBoundedNonEmptyText(value: string, maximumLength: number): boolean {\n return value.length > 0 && value.length <= maximumLength;\n}\nfunction isBoundedRecordIdentity(value: string): boolean {\n return isBoundedNonEmptyText(value, PROJECT_TARGET_RECORD_IDENTITY_MAXIMUM_LENGTH)\n && !value.includes(\"\\u0000\");\n}\nfunction isRerunOption(value: unknown): value is ProjectTargetPolicy[\"rerun\"] {\n return value === \"none\" || value === \"failed\" || value === \"all\";\n}\nfunction isExecutionIdentity(value: unknown): value is ExecutionIdentity {\n if (typeof value !== \"object\" || value === null)\n return false;\n const identity = value as {\n readonly domain?: unknown;\n readonly value?: unknown;\n };\n return typeof identity.domain === \"string\"\n && isBoundedRecordIdentity(identity.domain)\n && typeof identity.value === \"string\"\n && isBoundedRecordIdentity(identity.value);\n}\nfunction isExecutionDurationLimit(value: unknown): value is ExecutionDurationLimit {\n if (typeof value !== \"object\" || value === null)\n return false;\n const duration = value as {\n readonly domain?: unknown;\n readonly milliseconds?: unknown;\n };\n return typeof duration.domain === \"string\"\n && isBoundedRecordIdentity(duration.domain)\n && typeof duration.milliseconds === \"number\"\n && Number.isFinite(duration.milliseconds)\n && duration.milliseconds >= 0;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RunModeConflictError = void 0;
4
4
  exports.runEvals = runEvals;
5
- // @concord-file ne-runner-dispatch
5
+ // @concord-file
6
6
  // @concord-implements docs/feature/experiments/architecture.md
7
7
  // @concord-implements docs/feature/run/lifecycle.md
8
8
  // 运行器主调度:发现产出的 eval × agent × runs → attempt,有界并发调度。
@@ -33,7 +33,7 @@ const cleanup_timeout_ts_1 = require("./cleanup-timeout.cjs");
33
33
  const timeout_ts_1 = require("./timeout.cjs");
34
34
  const node_os_1 = require("node:os");
35
35
  const root_ts_1 = require("../record/platform/root.cjs");
36
- const contracts_ts_1 = require("../plugin/contracts.cjs");
36
+ const link_ts_1 = require("../plugin/link.cjs");
37
37
  const teardown_registry_ts_1 = require("./teardown-registry.cjs");
38
38
  const lock_ts_1 = require("./lock.cjs");
39
39
  const shared_state_lease_ts_1 = require("./shared-state-lease.cjs");
@@ -189,7 +189,7 @@ function runEvals(opts) {
189
189
  // only this projection and its own frozen view; no historic result facade
190
190
  // participates in dispatch or display.
191
191
  const targetPlan = yield* (0, fingerprint_ts_1.planProjectTarget)(opts.evals, opts.agentRuns, opts.config.timeoutMs, {
192
- configJudge: opts.config.judgeRuntime,
192
+ configJudge: opts.config.judgeProvider,
193
193
  ...(opts.keepSandbox === undefined ? {} : { keepSandbox: opts.keepSandbox }),
194
194
  });
195
195
  const { preparedPairsByKey, plannedConfigHashes, resolvedJudgesByKey, plannedFingerprints, renameFingerprintsByKey, } = targetPlan;
@@ -418,7 +418,7 @@ function runEvals(opts) {
418
418
  // prepare VM is released before any ordinary Attempt can acquire a VM.
419
419
  const setupPrefixPreparation = yield* (0, setup_prefix_preparation_ts_1.prepareSetupPrefixes)(attempts, {
420
420
  signal: opts.signal,
421
- maxConcurrency: opts.maxSetupPrefixConcurrency ?? 2,
421
+ maxConcurrency: opts.maxBeforeCacheConcurrency ?? 2,
422
422
  onActivity: (event) => {
423
423
  (0, sink_ts_1.reportRunActivity)({
424
424
  id: event.id,
@@ -575,42 +575,7 @@ function runEvals(opts) {
575
575
  maxConcurrency: opts.maxConcurrency,
576
576
  runIds,
577
577
  };
578
- // eval 级 reporters:实例只观测引用它的 eval(经 scopeReporter 过滤转发)。
579
- // 已经挂在全局 reporters 里的同一实例不重复挂;同一实例被多个 eval 引用时合并观测集
580
- // (共享一个目的地,如同一个 Braintrust 实验)。本次没有任何被观测 eval 要跑时整个跳过。
581
- const scopedSets = new Map();
582
- for (const e of opts.evals) {
583
- for (const r of e.reporters ?? []) {
584
- if (opts.reporters.some((reg) => reg.reporter === r))
585
- continue;
586
- let ids = scopedSets.get(r);
587
- if (!ids)
588
- scopedSets.set(r, (ids = new Set()));
589
- ids.add(e.id);
590
- }
591
- }
592
- const reporters = [...opts.reporters];
593
- // EvalDef.reporters 是用户在单个 eval 上挂的补充观测(如「这个 eval 单独也发一份到某个
594
- // dashboard」),不是 CLI 显式注册的默认/机器出口——与 Config.reporters 同样默认
595
- // best-effort(见 ReporterRegistration 的字段注释:required 只留给 --junit)。name 用「scope 内第几个」编号,足以在诊断里区分「哪一个 eval 级 reporter」,
596
- // 不需要用户自己起名字。
597
- let evalReporterIndex = 0;
598
- for (const [r, ids] of scopedSets) {
599
- const scopedRuns = attempts.filter((a) => ids.has(a.evalDef.id)).length;
600
- if (scopedRuns === 0)
601
- continue;
602
- reporters.push({
603
- reporter: (0, report_ts_1.scopeReporter)(r, ids, {
604
- evals: [...ids].filter((id) => runningIds.has(id)).length,
605
- configs: effectiveAgentRuns.length,
606
- totalAttempts: scopedRuns,
607
- maxConcurrency: opts.maxConcurrency,
608
- runIds,
609
- }),
610
- name: `eval-reporter-${evalReporterIndex++}`,
611
- required: false,
612
- });
613
- }
578
+ const reporters = opts.reporters;
614
579
  for (const reg of reporters) {
615
580
  // reporter 只是结果消费方:单个 reporter 抛错记 diagnostic,不能让整次调度崩,也不阻断
616
581
  // 其它 reporter 的必要收尾(required/best-effort 的判定权重在 runReporter 内部处理)。
@@ -741,7 +706,7 @@ function runEvals(opts) {
741
706
  pool = new sandbox_pool_ts_1.ReusableSandboxPool(a.plan, capacity, {
742
707
  progress: setupContext.progress,
743
708
  diagnostic: setupContext.diagnostic,
744
- }, setupContext, runtime_ts_1.liveSandboxRuntimeServices, agent, runTiming, materializationOwnerId, () => nextReuseSandboxNumber(a.run), a.evalDef.evalGroup === undefined ? Object.freeze([]) : (0, contracts_ts_1.linkPluginLifecycles)(a.evalDef.evalGroup.plugins ?? [], "group"), groupPluginContext);
709
+ }, setupContext, runtime_ts_1.liveSandboxRuntimeServices, agent, runTiming, materializationOwnerId, () => nextReuseSandboxNumber(a.run), (0, link_ts_1.groupPluginLifecycles)(a.evalDef, a.run), groupPluginContext);
745
710
  bySpec.set(key, pool);
746
711
  return pool.managed().pipe(effect_1.Effect.map((managed) => ({ _tag: "Reuse", pool: managed })));
747
712
  }
@@ -961,12 +926,12 @@ function runEvals(opts) {
961
926
  /**
962
927
  * Owner tokens are an explicit inspection capability, not ordinary Runner
963
928
  * feedback. Keep both the live feedback event and the durable Run diagnostic
964
- * limited to the key and recovery obligation; `exp --teardown` is the only
929
+ * limited to the key and recovery obligation; `exp --after` is the only
965
930
  * public surface that renders immutable owner evidence.
966
931
  */
967
932
  const reportSharedStateRecoveryRequired = (input) => {
968
933
  const key = input.run.sharedState?.key ?? "";
969
- const message = `sharedState key ${key} requires explicit recovery before another Invocation can use it. Inspect immutable owner evidence with \`niceeval exp <selector> --teardown --recover-shared-state <key>\`.
934
+ const message = `sharedState key ${key} requires explicit recovery before another Invocation can use it. Inspect immutable owner evidence with \`niceeval exp <selector> --after --recover-shared-state <key>\`.
970
935
  `.trimEnd();
971
936
  (0, sink_ts_1.reportDiagnostic)({
972
937
  key: `state-lease-recovery-required:${key || input.experimentId}`,
@@ -1391,7 +1356,7 @@ function runEvals(opts) {
1391
1356
  host: currentHost,
1392
1357
  startedAt: new Date().toISOString(),
1393
1358
  }).pipe(effect_1.Effect.catch((error) => effect_1.Effect.sync(() => {
1394
- const message = `writing the crash-recovery teardown registration for experiment ${experimentId} failed: ${error instanceof Error ? error.message : String(error)}. The run continues normally, but a SIGKILL during this run cannot be recovered via \`niceeval exp --teardown\` or the startup self-heal — check the canonical ProjectDatabase write failure.
1359
+ const message = `writing the crash-recovery teardown registration for experiment ${experimentId} failed: ${error instanceof Error ? error.message : String(error)}. The run continues normally, but a SIGKILL during this run cannot be recovered via \`niceeval exp --after\` or the startup self-heal — check the canonical ProjectDatabase write failure.
1395
1360
  `.trimEnd();
1396
1361
  (0, sink_ts_1.reportDiagnostic)({
1397
1362
  key: `teardown-registration-write-failed:${experimentId}`,
@@ -2264,7 +2229,7 @@ function runEvals(opts) {
2264
2229
  const leaseError = leased._tag === "Failed" ? (0, attempt_ts_1.errorFromThrown)(leased.error, "sandbox.create") : undefined;
2265
2230
  if (leased._tag === "Failed") {
2266
2231
  cancelReuseAttempt(a, true);
2267
- const declaration = (0, attempt_ts_1.attemptFailureDeclaration)(a.run.classifyFailure, "sandbox.create", leased.error);
2232
+ const declaration = (0, attempt_ts_1.attemptFailureDeclaration)("sandbox.create", leased.error);
2268
2233
  if (declaration)
2269
2234
  closeHaltGate(a, declaration);
2270
2235
  // This Attempt did start its physical acquisition and is therefore recorded below