niceeval 0.13.4-canary.49 → 0.14.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 (71) hide show
  1. package/INDEX.md +3 -3
  2. package/dist/inspection/overview.cjs +20 -4
  3. package/dist/inspection/overview.cjs.map +1 -1
  4. package/dist/inspection/overview.d.cts +5 -0
  5. package/dist/inspection/overview.d.mts +5 -0
  6. package/dist/inspection/overview.d.ts +5 -0
  7. package/dist/inspection/protocol.d.cts +238 -0
  8. package/dist/inspection/protocol.d.mts +238 -0
  9. package/dist/inspection/protocol.d.ts +238 -0
  10. package/dist/inspection/public.mjs +19 -16
  11. package/dist/inspection/results.cjs +11 -10
  12. package/dist/inspection/results.cjs.map +1 -1
  13. package/dist/inspection/results.d.cts +34 -0
  14. package/dist/inspection/results.d.mts +34 -0
  15. package/dist/inspection/results.d.ts +34 -0
  16. package/dist/show/contribution.cjs +11 -2
  17. package/dist/show/contribution.cjs.map +1 -1
  18. package/dist/show/contribution.d.cts +7 -0
  19. package/dist/show/contribution.d.mts +7 -0
  20. package/dist/show/contribution.d.ts +7 -0
  21. package/dist/show/model.cjs +1 -0
  22. package/dist/show/model.cjs.map +1 -1
  23. package/dist/show/model.d.cts +2 -0
  24. package/dist/show/model.d.mts +2 -0
  25. package/dist/show/model.d.ts +2 -0
  26. package/dist/show/render.cjs +149 -81
  27. package/dist/show/render.cjs.map +1 -1
  28. package/dist/show/render.d.cts +3 -1
  29. package/dist/show/render.d.mts +3 -1
  30. package/dist/show/render.d.ts +3 -1
  31. package/dist/view/app-dist/.vite/manifest.json +18 -18
  32. package/dist/view/app-dist/assets/{AttemptDialog-zlgkBA66.js → AttemptDialog-76dX1VQq.js} +1 -1
  33. package/dist/view/app-dist/assets/{AttemptRoute-DN6R4719.js → AttemptRoute-DRHVh2JA.js} +1 -1
  34. package/dist/view/app-dist/assets/{ResultsPage-BfH9vA6y.js → ResultsPage-9CSI8dvZ.js} +2 -2
  35. package/dist/view/app-dist/assets/{RunPage-XiJvNLB-.js → RunPage-BUF0REv7.js} +1 -1
  36. package/dist/view/app-dist/assets/{TableContentView-V8MYLnmk.js → TableContentView-_Sbg5wDr.js} +1 -1
  37. package/dist/view/app-dist/assets/index-BGr_6pGY.js +19 -0
  38. package/dist/view/app-dist/assets/{quality-cost-scatter-Bxyj_9oc.js → quality-cost-scatter-B5wDa_F1.js} +1 -1
  39. package/dist/view/app-dist/assets/useSuspenseQuery-D3W8Uy33.js +1 -0
  40. package/dist/view/app-dist/index.html +1 -1
  41. package/dist/view/function-runtime.mjs +35 -20
  42. package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
  43. package/docs-site/zh/examples/index.mdx +1 -3
  44. package/docs-site/zh/explanation/evals.mdx +1 -1
  45. package/docs-site/zh/explanation/experiment.mdx +3 -1
  46. package/docs-site/zh/explanation/overview.mdx +6 -4
  47. package/docs-site/zh/explanation/record.mdx +9 -5
  48. package/docs-site/zh/explanation/runner.mdx +3 -3
  49. package/docs-site/zh/index.mdx +4 -8
  50. package/docs-site/zh/introduction.mdx +2 -2
  51. package/docs-site/zh/reference/cli.mdx +8 -7
  52. package/docs-site/zh/troubleshooting/debug-sandbox.mdx +5 -5
  53. package/docs-site/zh/troubleshooting/debugging.mdx +8 -8
  54. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -55
  55. package/docs-site/zh/tutorials/accept-results.mdx +4 -4
  56. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  57. package/docs-site/zh/tutorials/authoring.mdx +1 -1
  58. package/docs-site/zh/tutorials/compare-runs.mdx +3 -3
  59. package/docs-site/zh/tutorials/concurrency.mdx +6 -6
  60. package/docs-site/zh/tutorials/connect-your-agent.mdx +2 -2
  61. package/docs-site/zh/tutorials/docker-in-docker.mdx +1 -1
  62. package/docs-site/zh/tutorials/experiments.mdx +1 -1
  63. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +1 -1
  64. package/docs-site/zh/tutorials/quickstart.mdx +2 -2
  65. package/docs-site/zh/tutorials/reporters.mdx +3 -3
  66. package/docs-site/zh/tutorials/sandbox-agent.mdx +2 -2
  67. package/docs-site/zh/tutorials/sandbox-reuse.mdx +3 -3
  68. package/docs-site/zh/tutorials/viewing-results.mdx +10 -11
  69. package/package.json +1 -1
  70. package/dist/view/app-dist/assets/index-BSJP_UAR.js +0 -19
  71. package/dist/view/app-dist/assets/useSuspenseQuery-Bdi9nQF1.js +0 -1
package/INDEX.md CHANGED
@@ -37,7 +37,7 @@
37
37
  - `docs-site/zh/tutorials/agent-onboarding.mdx` — Coding Agent 从零接入项目:给 Coding Agent 的完整接入流程:探索项目、与用户确认路径、配置 Judge、写出 Adapter、Experiment 与评估用例,并跑通第一个实验。
38
38
  - `docs-site/zh/tutorials/authoring.mdx` — 编写评估用例: 单轮、多轮和测试集模式:用 defineEval 编写评估用例,包括单轮对话、多轮对话、数据驱动测试、Sandbox Workspace 和评估的生命周期与 Fixture。
39
39
  - `docs-site/zh/tutorials/ci-integration.mdx` — 在 CI 中运行 NiceEval:让 CI 使用退出状态判定门禁,保留最后的 receipt,并向平台提供 JUnit 文件。
40
- - `docs-site/zh/tutorials/compare-runs.mdx` — 比较多个固定 Run:用 `runs.compare` operation 比较明确 Run 的闭合事实,并在浏览器中审阅相同的结果。
40
+ - `docs-site/zh/tutorials/compare-runs.mdx` — 比较多个固定 Run:用 `runs.compare` operation 比较明确 Run 的已发布事实,并在浏览器中审阅相同的结果。
41
41
  - `docs-site/zh/tutorials/concurrency.mdx` — 调好并发:吞吐、共享状态与固定执行顺序:全局并发、实验上限与 Provider capacity 共同限制实际吞吐。这一页说明排队状态、共享状态与固定顺序。
42
42
  - `docs-site/zh/tutorials/configuration.mdx` — 把配置和密钥各放到该放的地方:跑几次、超时、并发、judge 这些值写进代码的哪一层,API key 和 provider token 用哪些环境变量。
43
43
  - `docs-site/zh/tutorials/connect-otel.mdx` — OTel 接入:把应用已有的 OTel span 发送给 NiceEval,在 niceeval view 中查看每轮调用瀑布图。评估用例断言仍以 Send 返回的事件和用量为准。
@@ -63,7 +63,7 @@
63
63
  - `docs-site/zh/tutorials/sandbox-reuse.mdx` — 在一批评估中复用 Sandbox:在 Experiment 里声明 sandboxReuse 让多条 Attempt 共用 Sandbox,让 before/after 可安全重放,并配好 lifetimeMs。无法安全保留状态时改用并发。
64
64
  - `docs-site/zh/tutorials/select-and-preview.mdx` — 选择并预览运行范围:先列出 Experiment,再用路径、评估用例前缀和 tag 收窄范围,最后用 --dry 确认计划后再花费模型与 Sandbox 成本。
65
65
  - `docs-site/zh/tutorials/verify-judge.mdx` — 配置并验证 Judge:连接 OpenAI 兼容 Judge 网关,用一条最小评估真实预检和判分,再从结果区分配置缺失、网络失败与低质量输出。
66
- - `docs-site/zh/tutorials/viewing-results.mdx` — 查看已封口的运行结果:在终端用 show 逐层查看结果;在浏览器用 View 审阅,在自动化中用 query 读取 JSON。
66
+ - `docs-site/zh/tutorials/viewing-results.mdx` — 查看运行结果:在终端用 show 逐层查看结果;在浏览器用 View 审阅,在自动化中用 query 读取 JSON。
67
67
  - `docs-site/zh/tutorials/write-experiment.mdx` — 实验与生命周期:如何写好实验。选择 Agent、传递 model 和 flags,设置 attempts、预算、并发与 Sandbox,并用 setup / teardown 起停实验级共享服务。
68
68
  - `docs-site/zh/tutorials/write-send.mdx` — 编写 Send:分七步编写 Adapter 的 send 函数:发送消息、续接会话、记录用量、映射工具事件、处理人工介入(HITL)、接入 OTel trace,并透传 Experiment flags。
69
69
 
@@ -97,7 +97,7 @@
97
97
 
98
98
  - `docs-site/zh/troubleshooting/debug-sandbox.mdx` — 保留 Sandbox 现场排查问题:用 --keep-sandbox 把失败 Attempt 的 Sandbox 保留成可随时唤醒的现场,用 niceeval sandbox enter 进去手动排查,用 sandbox list / stop 查看和清理。
99
99
  - `docs-site/zh/troubleshooting/debugging.mdx` — 排查已封口的结果:根据具名错误和闭合 Inspection result,通过 Show、Query 与 View 排查问题。
100
- - `docs-site/zh/troubleshooting/recover-after-kill.mdx` — 运行被强杀后恢复:进程被 kill -9、CI 超时或断电杀掉后,从已发布结果重跑、收回遗留 Sandbox、补齐实验收尾,并显式恢复共享状态租约。
100
+ - `docs-site/zh/troubleshooting/recover-after-kill.mdx` — 运行被强杀后恢复:进程被 kill -9、CI 超时或断电中断后,保留已发布结果、收口失去 owner 的 Run,并收回遗留 Sandbox
101
101
 
102
102
  ## `docs-site/zh/examples/`
103
103
 
@@ -15,9 +15,9 @@ function selectInspectionOverview(facts, supportingRuns) {
15
15
  const runs = isLoadedInspectionRuns(facts) ? facts : (0, facts_ts_1.loadInspectionRuns)(facts);
16
16
  const selected = selectLatestSlots(runs, supportingRuns ?? runs);
17
17
  const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\u0000${slot.evalId}`)
18
- .map((slots) => makeCell(slots));
18
+ .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));
19
19
  const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)
20
- .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId)));
20
+ .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));
21
21
  return closeOverview({
22
22
  totals: aggregate(selected, scoreFromCells(cells)),
23
23
  experiments,
@@ -155,7 +155,7 @@ function analyzeAttempt(resolved, target, member, slot) {
155
155
  ref,
156
156
  });
157
157
  }
158
- function makeCell(slots) {
158
+ function makeCell(slots, labelKeys) {
159
159
  const first = slots[0];
160
160
  if (first === undefined)
161
161
  throw new Error("Overview cell cannot be empty");
@@ -171,12 +171,13 @@ function makeCell(slots) {
171
171
  slotId: selected.slot.slotId,
172
172
  evalId: selected.slot.evalId,
173
173
  attemptOrdinal: selected.slot.attemptOrdinal,
174
+ labels: inspectionLabels([selected], labelKeys),
174
175
  publication: overviewPublication(selected),
175
176
  });
176
177
  })),
177
178
  });
178
179
  }
179
- function makeExperiment(slots, cells) {
180
+ function makeExperiment(slots, cells, labelKeys) {
180
181
  const first = slots[0];
181
182
  if (first === undefined)
182
183
  throw new Error("Overview Experiment cannot be empty");
@@ -203,6 +204,7 @@ function makeExperiment(slots, cells) {
203
204
  experimentId: first.target.run.experimentId,
204
205
  agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),
205
206
  model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),
207
+ labels: inspectionLabels(slots, labelKeys),
206
208
  ...aggregate(slots, scoreFromCells(cells)),
207
209
  groups: Object.freeze(groups),
208
210
  });
@@ -305,6 +307,7 @@ function overviewPublication(selected) {
305
307
  attemptLocator: resolved.locator,
306
308
  originRunId: member.attempt.originRunId,
307
309
  originSlotId: resolved.attempt.slotId,
310
+ verdict: selected.analysis.verdict,
308
311
  score: scoreForMember(selected),
309
312
  costUSD: costForSlots([selected]),
310
313
  durationMs: metricForSlots([selected], "durationMs", "ms", "average"),
@@ -320,6 +323,19 @@ function executionValue(values) {
320
323
  ? Object.freeze({ state: "unavailable" })
321
324
  : Object.freeze({ state: "available", value });
322
325
  }
326
+ function inspectionLabelKeys(slots) {
327
+ return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));
328
+ }
329
+ function inspectionLabels(slots, keys) {
330
+ const targets = new Map();
331
+ for (const { target } of slots)
332
+ targets.set(target.run.runId, target);
333
+ const runs = [...targets.values()];
334
+ return Object.freeze(Object.fromEntries(keys.map((key) => [
335
+ key,
336
+ executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),
337
+ ])));
338
+ }
323
339
  function costUSDOf(resolved) {
324
340
  const attachment = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.attemptCost.family);
325
341
  if (attachment === undefined ||
@@ -1 +1 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":"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","sourcesContent":["import { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RunSlotPublication } from \"../run/index.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"slot\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"observed\" | \"estimated\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly publication: Exclude<RunSlotPublication, {\n readonly state: \"published\";\n }> | (Extract<RunSlotPublication, {\n readonly state: \"published\";\n }> & {\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly agent: InspectionExecutionValue;\n readonly model: InspectionExecutionValue;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly observed: number | null;\n readonly estimated: number | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\\u0000${slot.evalId}`)\n .map((slots) => makeCell(slots));\n const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = target.members.find((candidate) => candidate.slotId === slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n evalId: first.slot.evalId,\n groupPath: groupPath(first.slot.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.map((selected): InspectionOverviewMember => {\n const resolved = selected.resolved;\n return Object.freeze({\n runId: selected.target.run.runId,\n slotId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n publication: overviewPublication(selected),\n });\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.slot.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),\n model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const usage = projectAttemptUsage(Object.freeze({\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens: Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n }),\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"slot\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originSlotId: resolved.attempt.slotId,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n return Object.freeze({\n observed: observed === undefined ? null : observed.success.observed?.amountUSD ?? null,\n estimated: estimated === undefined || Result.isFailure(estimated)\n ? null\n : estimated.success.estimated?.amountUSD ?? null,\n });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ observed: null, estimated: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}`;\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const observed = subjects.filter(({ analysis }) => analysis.costUSD.observed !== null);\n const estimated = subjects.filter(({ analysis }) => analysis.costUSD.estimated !== null);\n const source = subjects.length > 0 && observed.length === subjects.length\n ? \"observed\" as const\n : subjects.length > 0 && estimated.length === subjects.length\n ? \"estimated\" as const\n : null;\n const valued = source === \"observed\" ? observed : source === \"estimated\" ? estimated : [];\n const value = source === null\n ? null\n : valued.reduce((sum, { analysis }) => sum + (analysis.costUSD[source] ?? 0), 0);\n return Object.freeze({\n value,\n source,\n state: source === null ? \"unavailable\" as const : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"slot\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction isInspectionCodecError(value: InspectionJson | {\n readonly code: string;\n readonly reason: string;\n}): value is {\n readonly code: string;\n readonly reason: string;\n} {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Reflect.get(value, \"code\") === \"inspection-result-invalid\" &&\n typeof Reflect.get(value, \"reason\") === \"string\";\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["overview.ts"],"names":[],"mappings":";;AAiJA,4DAYC;AA7JD,0DAAuE;AAEvE,mCAAmD;AAGnD,4DAA2G;AAC3G,yCAAuE;AACvE,yCAAuN;AAEvN,yCAAwE;AAoIxE;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,KAA4D,EAAE,cAA+C;IAClJ,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,6BAAkB,EAAC,KAAK,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,IAAI,IAAI,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;SAC7G,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1J,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;SACpF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/J,OAAO,aAAa,CAAC;QACjB,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW;QACX,KAAK;KACR,CAAC,CAAC;AACP,CAAC;AACD,SAAS,sBAAsB,CAAC,KAA4D;IACxF,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAoC,EAAE,iBAAiD,IAAI;IAClH,MAAM,MAAM,GAAG,IAAI,GAAG,EAGlB,CAAC;IACL,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;YACzF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;SACpC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/F,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc;QACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAgB,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS;YACjC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAA,yCAA8B,EAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,MAAM;YACN,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;SAC3D,CAAC,CAAC;IACP,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAyB,EAAE,KAA0B;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW;QAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS;QACxC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,cAAc,CAAC,QAA+C,EAAE,MAA2B,EAAE,MAAkC,EAAE,IAAwB;IAC9J,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,MAAM,EAAE,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QAC9E,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,eAAe,EAAE,iBAA0B;YAC3C,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,iBAAiB,EAAE;YAC1B,OAAO,EAAE,sBAAsB,EAAE;YACjC,UAAU,EAAE,4BAA4B,EAAE;YAC1C,MAAM,EAAE,4BAA4B,EAAE;YACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAChI,GAAG,EAAE,IAAI;SACZ,CAAC,CAAC;IACP,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAA,mCAAwB,EAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,eAAe,EAAE,UAAU,CAAC,KAAK;YACjC,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,iBAAiB,EAAE;YAC1B,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC5B,GAAG,WAAW;YACd,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,UAAU,CAAC,KAAK;iBAC1B,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,GAAG;SACN,CAAC,CAAC;IACP,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;YAC9B,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;YAChC,mBAAmB,IAAI,CAAC,CAAC;QAC7B,CAAC;aACI,IAAI,YAAY,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YAC5C,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;YAChC,wBAAwB,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,gCAAgC;gBACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,YAAY,CAAC,MAAM;aAC9B,CAAC,CAAC,CAAC;QACR,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK;YACrC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,UAAU;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC/D,CAAC,CAAC,CAAC;IACR,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,eAAe,EAAE,WAAoB;QACrC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAiB,CAAC,CAAC,CAAC,MAAe;QAC/D,OAAO,EAAE,IAAA,uCAA0B,EAAC;YAChC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;YACjC,UAAU,EAAE,UAAU,CAAC,KAAK;SAC/B,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,MAAM;YACN,QAAQ;YACR,QAAQ,EAAE,mBAAmB,GAAG,CAAC;YACjC,QAAQ,EAAE,SAAS,IAAI,wBAAwB,KAAK,CAAC;SACxD,CAAC;QACF,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC5B,GAAG,WAAW;QACd,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,GAAG;KACN,CAAC,CAAC;AACP,CAAC;AACD,SAAS,QAAQ,CAAC,KAA8B,EAAE,SAA4B;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY;QAC3C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;QACzB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,GAAG,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAA4B,EAAE;YACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACnC,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;gBAChC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC5B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;gBAC5B,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;gBAC5C,MAAM,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;gBAC/C,WAAW,EAAE,mBAAmB,CAAC,QAAQ,CAAC;aAC7C,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;KACN,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,KAA8B,EAAE,KAAwC,EAAE,SAA4B;IAC1H,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,KAAK,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,SAAS;gBACpB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;;gBAE9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAA2B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/D,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,GAAG,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACpH,CAAC,CAAC,CAAC;IACJ,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY;QAC3C,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtF,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QAC1C,GAAG,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAChC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,SAAS,CAAC,KAA8B,EAAE,KAA4B;IAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,cAAc,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACvC,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;SAClD,CAAC;QACF,KAAK;QACL,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;QAC5B,UAAU,EAAE,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;QAChE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;QACxD,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxE,MAAM;KACT,CAAC,CAAC;AACP,CAAC;AACD,SAAS,yBAAyB,CAAC,QAAmC;IAClE,MAAM,MAAM,GAAG,IAAA,+BAAoB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC9C,gBAAgB,EAAE,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC3G,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC7E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,UAAU,EAAE,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,UAAU,CAAC,MAAM,CAAC;KACvF,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;IAC/C,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;gBAC7B,CAAC,CAAC,QAAiB;gBACnB,CAAC,CAAC,UAAU,KAAK,IAAI;oBACjB,CAAC,CAAC,aAAsB;oBACxB,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO;wBAC5C,CAAC,CAAC,WAAoB;wBACtB,CAAC,CAAC,SAAkB;SACnC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,KAAK,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;YAC/F,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;gBAC5B,CAAC,CAAC,QAAiB;gBACnB,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;oBACtB,CAAC,CAAC,aAAsB;oBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW;wBAC1E,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW;wBAC/C,CAAC,CAAC,WAAoB;wBACtB,CAAC,CAAC,SAAkB;SACnC,CAAC;KACL,CAAC,CAAC;AACP,CAAC;AACD,SAAS,4BAA4B;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAsB,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,SAAS,cAAc,CAAC,KAA8B,EAAE,GAA4B,EAAE,IAAqB,EAAE,IAAuB;IAChI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAChH,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAClG,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,mBAAmB,CAAC,QAAsB;IAC/C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,QAAiB;YACxB,MAAM,EAAE,MAAM,CAAC,aAAa;SAC/B,CAAC,CAAC;IACP,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,WAAoB;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACnC,cAAc,EAAE,QAAQ,CAAC,OAAO;QAChC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;QACvC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;QACrC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAClC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;QACrE,MAAM,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;KAChE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,MAAkC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;AAChE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAA8B;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAChI,CAAC;AACD,SAAS,gBAAgB,CAAC,KAA8B,EAAE,IAAuB;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK;QAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACtD,GAAG;QACH,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;KACzE,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AACD,SAAS,SAAS,CAAC,QAAmC;IAClD,MAAM,UAAU,GAAG,IAAA,4BAAiB,EAAC,QAAQ,EAAE,sCAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7F,IAAI,UAAU,KAAK,SAAS;QACxB,UAAU,CAAC,QAAQ,CAAC,cAAc,KAAK,6CAAgC,CAAC,WAAW,CAAC,QAAQ;QAC5F,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;IAC7B,IAAI,CAAC,kBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QACxB,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,eAAM,CAAC,mBAAmB,CAAC,sCAAyB,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtI,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,OAAO,sBAAsB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;QAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI;QACtF,SAAS,EAAE,SAAS,KAAK,SAAS,IAAI,eAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YAC7D,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,IAAI;KACvD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,sBAAsB;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AACD,SAAS,YAAY,CAAC,KAA8B;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACrE,CAAC,CAAC,UAAmB;QACrB,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YACzD,CAAC,CAAC,WAAoB;YACtB,CAAC,CAAC,IAAI,CAAC;IACf,MAAM,MAAM,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI;QACzB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,MAAM;QACN,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,aAAsB,CAAC,CAAC,CAAC,WAAoB;QACtE,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,KAAc;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,aAAa,CAAC,KAA8B;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,MAAM;QACtB,QAAQ;QACR,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ;KACnC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,OAAO,CAAC,KAA8B;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/B,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACT,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM;YACV,KAAK,QAAQ;gBACT,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM;YACV,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM;YACV,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM;YACV,KAAK,IAAI,CAAC,CAAC,MAAM;QACrB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AACD,SAAS,UAAU,CAAC,KAA8B,EAAE,WAA0C,EAAE,KAA6B;IACzH,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,WAAW,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU;QAClF,KAAK,EAAE,WAAW,CAAC;YACf,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,OAAO,EAAE,WAAW,CAAC,UAAU;YAC/B,QAAQ,EAAE,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ;YACzD,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;SAClD,CAAC;QACF,OAAO,EAAE,WAAW,CAAC,UAAU;QAC/B,KAAK,EAAE,WAAW,CAAC,QAAQ;QAC3B,KAAK,EAAE,MAAe;QACtB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;KAC3B,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAC,QAAsB;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAI,QAAQ,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,aAAsB;YAC7B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/E,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrE,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC9C,KAAK,EAAE,QAAQ;YACX,CAAC,CAAC,WAAoB;YACtB,CAAC,CAAC,QAAQ;gBACN,CAAC,CAAC,SAAkB;gBACpB,CAAC,CAAC,WAAW,CAAC;oBACV,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC;oBACV,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACvB,CAAC;QACV,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,UAAU,CAAC;YACf,GAAG,QAAQ,CAAC,MAAM;YAClB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;gBACpD,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC;SACZ,CAAC;QACF,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClE,CAAC,CAAC;AACP,CAAC;AACD,wEAAwE;AACxE,SAAS,YAAY,CAAC,KAA8B;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;IACjF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,aAAsB;YACrE,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC;QACrC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS;QACvE,QAAQ,CAAC,KAAK,CAAC,QAAQ;QACvB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACjG,MAAM,MAAM,GAAG,UAAU,CAAC;QACtB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtD,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;YACtF,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC9D,KAAK,EAAE,WAAW,CAAC;YACf,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;YACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAC7C,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;SACrD,CAAC;QACF,OAAO,EAAE,QAAQ,CAAC,MAAM;QACxB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtB,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;KACnD,CAAC,CAAC;AACP,CAAC;AACD,6EAA6E;AAC7E,SAAS,cAAc,CAAC,KAAwC;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,OAAgB;YACvB,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,aAAsB;YAC7B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAe;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC;YACxD,CAAC,CAAC,WAAoB;YACtB,CAAC,CAAC,SAAkB;QACxB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,KAAK;QACL,KAAK;QACL,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,KAAK,EAAE,MAAe;QACtB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,EAAE,QAAiB;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9E,CAAC;KACL,CAAC,CAAC;AACP,CAAC;AACD,SAAS,WAAW,CAAC,KAKpB;IACG,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QACpB,OAAO,OAAO,CAAC;IACnB,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;QACjB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC7E,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,cAAc,IAAI,eAAe,KAAK,aAAa,CAAC;QACrH,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,KAAK,WAAW,IAAI,eAAe,KAAK,iBAAiB,CAAC,EAAE,CAAC;QAC1H,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC;AACD,SAAS,gBAAgB,CAAC,KAA8B;IACpD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC;IACrF,IAAI,CAAC,SAAS;QACV,OAAO,MAAM,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC;QACnE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC;AACnB,CAAC;AACD,SAAS,MAAM,CAAC,KAA8B;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IACrD,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI;YACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,UAAU,CAAC,MAAuC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,MAAM;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,oBAAoB,CAAC,MAAwC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,OAAO,OAAO,CAAC;IACnB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1C,OAAO,QAAQ,CAAC;IACpB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC;QAChD,OAAO,aAAa,CAAC;IACzB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;QAC3C,OAAO,SAAS,CAAC;IACrB,OAAO,aAAa,CAAC;AACzB,CAAC;AACD,SAAS,iBAAiB,CAAC,QAAyB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;KAClD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,kBAAkB,CAAC,KAA8B,EAAE,KAAqC;IAC7F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;YAExB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,SAAS,CAAC,MAAc;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,cAAc,CAAC,IAAuB,EAAE,MAAyB;IACtE,OAAO,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,UAAU,CAAC,OAAe;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC;KACjE,CAAC,CAAC;AACP,CAAC;AACD,SAAS,iBAAiB;IACtB,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAClB,CAAC,CAAC;AACP,CAAC;AACD,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,IAAwB;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE,IAAI,CAAC,cAAc;KACtC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,UAAU,CAAC,MAAiC;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM;QACtB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,aAAa,CAAC,KAAyB;IAC5C,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,MAAuC,CAAC;AACnD,CAAC;AACD,SAAS,sBAAsB,CAAC,KAG/B;IAIG,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,2BAA2B;QAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC;AACzD,CAAC;AACD,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC5C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC","sourcesContent":["import { foldRecordedAttemptVerdict } from \"../eval/record/verdict.ts\";\nimport type { VerdictState } from \"../eval/record/verdict.ts\";\nimport { Predicate, Result, Schema } from \"effect\";\nimport type { MemberDocument, RecordSlotIdentity } from \"../record/model/core.ts\";\nimport type { RunSlotPublication } from \"../run/index.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport { closeInspectionJson, type InspectionJson, } from \"./codec.ts\";\nimport { attemptAttachment, loadInspectionRuns, readInspectionAssertions, resolveInspectionMemberAttempt, type InspectionAssertionsRead, type LoadedInspectionRun, type ResolvedInspectionAttempt, } from \"./facts.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport { projectAttemptTiming, projectAttemptUsage, } from \"./trace.ts\";\nexport type InspectionMetricState = \"available\" | \"partial\" | \"unavailable\" | \"empty\" | \"unsupported\" | \"failed\";\nexport interface InspectionAttemptRef {\n readonly identity: {\n readonly kind: \"attempt\";\n readonly locator: string;\n };\n}\nexport interface InspectionMetricValue {\n readonly value: number | null;\n readonly state: InspectionMetricState;\n readonly samples: number;\n readonly total: number;\n readonly basis: \"slot\" | \"eval\";\n readonly issues: readonly InspectionJson[];\n readonly refs: readonly InspectionAttemptRef[];\n readonly unit?: \"points\" | \"USD\" | \"ms\" | \"tokens\";\n readonly bounds?: {\n readonly min: number;\n readonly max: number;\n };\n}\nexport interface InspectionCostMetricValue extends InspectionMetricValue {\n readonly source: \"observed\" | \"estimated\" | null;\n}\nexport interface InspectionOverviewDenominator {\n readonly expected: number;\n readonly observed: number;\n readonly classified: number;\n readonly missing: number;\n}\nexport interface InspectionVerdictTally {\n readonly passed: number;\n readonly failed: number;\n readonly errored: number;\n readonly skipped: number;\n}\nexport type InspectionEvaluationKind = \"pass\" | \"points\" | \"mixed\";\nexport interface InspectionOverviewAggregate {\n readonly evaluationKind: InspectionEvaluationKind;\n readonly denominator: InspectionOverviewDenominator;\n readonly verdict: {\n readonly tally: InspectionVerdictTally;\n readonly passRate: InspectionMetricValue;\n };\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n}\nexport interface InspectionOverviewMember {\n readonly runId: string;\n readonly slotId: string;\n readonly evalId: string;\n readonly attemptOrdinal: number;\n readonly labels: InspectionLabels;\n readonly publication: Exclude<RunSlotPublication, {\n readonly state: \"published\";\n }> | (Extract<RunSlotPublication, {\n readonly state: \"published\";\n }> & {\n readonly verdict: VerdictState | null;\n readonly score: InspectionMetricValue;\n readonly costUSD: InspectionCostMetricValue;\n readonly durationMs: InspectionMetricValue;\n readonly tokens: InspectionMetricValue;\n });\n}\nexport interface InspectionOverviewCell extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly evalId: string;\n readonly groupPath: readonly string[];\n readonly members: readonly InspectionOverviewMember[];\n}\nexport interface InspectionOverviewGroup extends InspectionOverviewAggregate {\n readonly groupPath: readonly string[];\n}\nexport interface InspectionOverviewExperiment extends InspectionOverviewAggregate {\n readonly experimentId: string;\n readonly agent: InspectionExecutionValue;\n readonly model: InspectionExecutionValue;\n readonly labels: InspectionLabels;\n readonly groups: readonly InspectionOverviewGroup[];\n}\nexport type InspectionExecutionValue = {\n readonly state: \"available\";\n readonly value: string;\n} | {\n readonly state: \"mixed\";\n} | {\n readonly state: \"unavailable\";\n};\nexport type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;\nexport interface InspectionOverview {\n readonly totals: InspectionOverviewAggregate;\n readonly experiments: readonly InspectionOverviewExperiment[];\n readonly cells: readonly InspectionOverviewCell[];\n}\ninterface SelectedSlot {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n readonly member: MemberDocument | undefined;\n readonly resolved: ResolvedInspectionAttempt | undefined;\n readonly analysis: AttemptAnalysis;\n}\ninterface AttemptAnalysis {\n readonly assertionsState: InspectionAssertionsRead[\"state\"] | \"attempt-missing\";\n readonly evaluationKind: \"pass\" | \"points\" | null;\n readonly verdict: VerdictState | null;\n readonly score: {\n readonly hasPoints: boolean;\n readonly earned: number;\n readonly possible: number;\n readonly hasValue: boolean;\n readonly complete: boolean;\n };\n readonly costUSD: {\n readonly observed: number | null;\n readonly estimated: number | null;\n };\n readonly durationMs: OperationalMetric;\n readonly tokens: OperationalMetric;\n readonly coverage: readonly InspectionJson[];\n readonly issues: readonly InspectionJson[];\n readonly ref: InspectionAttemptRef | null;\n}\ninterface OperationalMetric {\n readonly value: number | null;\n readonly state: \"available\" | \"partial\" | \"unavailable\" | \"failed\";\n}\n/**\n * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot\n * and closes the shared machine/Insight Overview without platform APIs.\n */\nexport function selectInspectionOverview(facts: InspectionFactSource | readonly LoadedInspectionRun[], supportingRuns?: readonly LoadedInspectionRun[]): InspectionOverview {\n const runs = isLoadedInspectionRuns(facts) ? facts : loadInspectionRuns(facts);\n const selected = selectLatestSlots(runs, supportingRuns ?? runs);\n const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\\u0000${slot.evalId}`)\n .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));\n const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)\n .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));\n return closeOverview({\n totals: aggregate(selected, scoreFromCells(cells)),\n experiments,\n cells,\n });\n}\nfunction isLoadedInspectionRuns(facts: InspectionFactSource | readonly LoadedInspectionRun[]): facts is readonly LoadedInspectionRun[] {\n return Array.isArray(facts);\n}\nfunction selectLatestSlots(runs: readonly LoadedInspectionRun[], resolutionRuns: readonly LoadedInspectionRun[] = runs): readonly SelectedSlot[] {\n const latest = new Map<string, {\n readonly target: LoadedInspectionRun;\n readonly slot: RecordSlotIdentity;\n }>();\n for (const target of runs) {\n for (const slot of target.run.expectedSlots) {\n const key = `${target.run.experimentId}\\u0000${slot.evalId}\\u0000${slot.attemptOrdinal}`;\n const current = latest.get(key);\n if (current === undefined || compareOccurrence(target, current.target) > 0) {\n latest.set(key, Object.freeze({ target, slot }));\n }\n }\n }\n return Object.freeze([...latest.values()]\n .sort((left, right) => compareText(left.target.run.experimentId, right.target.run.experimentId) ||\n compareText(left.slot.evalId, right.slot.evalId) ||\n left.slot.attemptOrdinal - right.slot.attemptOrdinal ||\n compareText(left.target.run.runId, right.target.run.runId))\n .map(({ target, slot }): SelectedSlot => {\n const member = target.members.find((candidate) => candidate.slotId === slot.slotId);\n const resolved = member === undefined\n ? undefined\n : resolveInspectionMemberAttempt(resolutionRuns, target, member);\n return Object.freeze({\n target,\n slot,\n member,\n resolved,\n analysis: analyzeAttempt(resolved, target, member, slot),\n });\n }));\n}\nfunction compareOccurrence(left: LoadedInspectionRun, right: LoadedInspectionRun): number {\n return left.run.completedAt - right.run.completedAt ||\n left.run.startedAt - right.run.startedAt ||\n compareText(left.run.runId, right.run.runId);\n}\nfunction analyzeAttempt(resolved: ResolvedInspectionAttempt | undefined, target: LoadedInspectionRun, member: MemberDocument | undefined, slot: RecordSlotIdentity): AttemptAnalysis {\n if (resolved === undefined) {\n const hasReference = member?.attempt !== undefined && member.attempt !== null;\n return Object.freeze({\n assertionsState: \"attempt-missing\" as const,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: unavailableAttemptCost(),\n durationMs: unavailableOperationalMetric(),\n tokens: unavailableOperationalMetric(),\n coverage: Object.freeze([]),\n issues: Object.freeze([overviewIssue(hasReference ? \"attempt-origin-missing\" : \"attempt-not-observed\", target.run.runId, slot)]),\n ref: null,\n });\n }\n const ref = attemptRef(resolved.locator);\n const operational = attemptOperationalMetrics(resolved);\n const assertions = readInspectionAssertions(resolved);\n if (assertions.state !== \"available\") {\n return Object.freeze({\n assertionsState: assertions.state,\n evaluationKind: null,\n verdict: null,\n score: emptyAttemptScore(),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze([Object.freeze({\n identity: ref.identity,\n state: assertions.state,\n })]),\n issues: assertions.issues,\n ref,\n });\n }\n let earned = 0;\n let possible = 0;\n let hasPoints = false;\n let earnedContributions = 0;\n let unavailableContributions = 0;\n const coverage: InspectionJson[] = [];\n const issues: InspectionJson[] = [];\n for (const entry of assertions.value.entries) {\n const contribution = entry.contribution;\n if (contribution.state === \"earned\") {\n hasPoints = true;\n earned += contribution.earned;\n possible += contribution.points;\n earnedContributions += 1;\n }\n else if (contribution.state === \"unavailable\") {\n hasPoints = true;\n possible += contribution.points;\n unavailableContributions += 1;\n issues.push(Object.freeze({\n code: \"score-contribution-unavailable\",\n locator: resolved.locator,\n entryId: entry.entryId,\n reason: contribution.reason,\n }));\n }\n coverage.push(Object.freeze({\n identity: ref.identity,\n entryId: entry.entryId,\n groupPath: Object.freeze([...entry.display.groupPath]),\n state: entry.materials.coverage.state,\n ...(entry.materials.coverage.state === \"complete\"\n ? {}\n : { reason: entry.materials.coverage.reason }),\n limitations: Object.freeze([...entry.materials.limitations]),\n }));\n }\n return Object.freeze({\n assertionsState: \"available\" as const,\n evaluationKind: hasPoints ? \"points\" as const : \"pass\" as const,\n verdict: foldRecordedAttemptVerdict({\n outcome: resolved.attempt.outcome,\n assertions: assertions.value,\n }),\n score: Object.freeze({\n hasPoints,\n earned,\n possible,\n hasValue: earnedContributions > 0,\n complete: hasPoints && unavailableContributions === 0,\n }),\n costUSD: costUSDOf(resolved),\n ...operational,\n coverage: Object.freeze(coverage),\n issues: Object.freeze(issues),\n ref,\n });\n}\nfunction makeCell(slots: readonly SelectedSlot[], labelKeys: readonly string[]): InspectionOverviewCell {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview cell cannot be empty\");\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n evalId: first.slot.evalId,\n groupPath: groupPath(first.slot.evalId),\n ...aggregate(slots, scoreForCell(slots)),\n members: Object.freeze(slots.map((selected): InspectionOverviewMember => {\n const resolved = selected.resolved;\n return Object.freeze({\n runId: selected.target.run.runId,\n slotId: selected.slot.slotId,\n evalId: selected.slot.evalId,\n attemptOrdinal: selected.slot.attemptOrdinal,\n labels: inspectionLabels([selected], labelKeys),\n publication: overviewPublication(selected),\n });\n })),\n });\n}\nfunction makeExperiment(slots: readonly SelectedSlot[], cells: readonly InspectionOverviewCell[], labelKeys: readonly string[]): InspectionOverviewExperiment {\n const first = slots[0];\n if (first === undefined)\n throw new Error(\"Overview Experiment cannot be empty\");\n const prefixes = new Map<string, SelectedSlot[]>();\n for (const selected of slots) {\n const path = groupPath(selected.slot.evalId);\n for (let length = 1; length <= path.length; length += 1) {\n const prefix = path.slice(0, length);\n const key = prefix.join(\"\\u0000\");\n const values = prefixes.get(key);\n if (values === undefined)\n prefixes.set(key, [selected]);\n else\n values.push(selected);\n }\n }\n const groups = [...prefixes.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([key, values]): InspectionOverviewGroup => Object.freeze({\n groupPath: Object.freeze(key.split(\"\\u0000\")),\n ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split(\"\\u0000\"))))),\n }));\n return Object.freeze({\n experimentId: first.target.run.experimentId,\n agent: executionValue(slots.map(({ target }) => target.run.context.execution.agentId)),\n model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),\n labels: inspectionLabels(slots, labelKeys),\n ...aggregate(slots, scoreFromCells(cells)),\n groups: Object.freeze(groups),\n });\n}\nfunction aggregate(slots: readonly SelectedSlot[], score: InspectionMetricValue): InspectionOverviewAggregate {\n const denominator = denominatorOf(slots);\n const tally = tallyOf(slots);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.issues));\n return Object.freeze({\n evaluationKind: evaluationKindOf(slots),\n denominator,\n verdict: Object.freeze({\n tally,\n passRate: passRateOf(slots, denominator, tally),\n }),\n score,\n costUSD: costForSlots(slots),\n durationMs: metricForSlots(slots, \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots(slots, \"tokens\", \"tokens\", \"sum\"),\n coverage: uniqueJson(slots.flatMap(({ analysis }) => analysis.coverage)),\n issues,\n });\n}\nfunction attemptOperationalMetrics(resolved: ResolvedInspectionAttempt): Pick<AttemptAnalysis, \"durationMs\" | \"tokens\"> {\n const timing = projectAttemptTiming(Object.freeze({\n runnerActivities: attemptAttachment(resolved, NiceEvalRecordAttachments.runnerActivities.attempt.family),\n }));\n const durationMs = timing.activities.reduce<number | null>((maximum, activity) => {\n const end = activity.startOffsetMs + activity.durationMs;\n return Math.max(maximum ?? 0, end);\n }, null);\n const usage = projectAttemptUsage(Object.freeze({\n agentTurns: attemptAttachment(resolved, NiceEvalRecordAttachments.agentTurns.family),\n }));\n const input = usage.totals.inputTokens.value;\n const output = usage.totals.outputTokens.value;\n const tokenValues = [input, output].filter((value): value is number => value !== null);\n return Object.freeze({\n durationMs: Object.freeze({\n value: durationMs,\n state: timing.state === \"invalid\"\n ? \"failed\" as const\n : durationMs === null\n ? \"unavailable\" as const\n : timing.state === \"complete\" && !timing.hasMore\n ? \"available\" as const\n : \"partial\" as const,\n }),\n tokens: Object.freeze({\n value: tokenValues.length === 0 ? null : tokenValues.reduce((total, value) => total + value, 0),\n state: usage.state === \"invalid\"\n ? \"failed\" as const\n : tokenValues.length === 0\n ? \"unavailable\" as const\n : usage.state === \"complete\" && usage.totals.inputTokens.state === \"available\" &&\n usage.totals.outputTokens.state === \"available\"\n ? \"available\" as const\n : \"partial\" as const,\n }),\n });\n}\nfunction unavailableOperationalMetric(): OperationalMetric {\n return Object.freeze({ value: null, state: \"unavailable\" as const });\n}\nfunction metricForSlots(slots: readonly SelectedSlot[], key: \"durationMs\" | \"tokens\", unit: \"ms\" | \"tokens\", fold: \"average\" | \"sum\"): InspectionMetricValue {\n const valued = slots.filter(({ analysis }) => analysis[key].value !== null);\n const total = valued.reduce((sum, { analysis }) => sum + (analysis[key].value ?? 0), 0);\n const value = valued.length === 0 ? null : fold === \"average\" ? total / valued.length : total;\n const failed = slots.some(({ analysis }) => analysis[key].state === \"failed\");\n const partial = valued.length < slots.length || slots.some(({ analysis }) => analysis[key].state === \"partial\");\n return Object.freeze({\n value,\n state: failed ? \"failed\" : valued.length === 0 ? \"unavailable\" : partial ? \"partial\" : \"available\",\n samples: valued.length,\n total: slots.length,\n basis: \"slot\",\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction overviewPublication(selected: SelectedSlot): InspectionOverviewMember[\"publication\"] {\n const { member, resolved } = selected;\n if (member === undefined)\n return Object.freeze({ state: \"pending\" as const });\n if (member.attempt === null) {\n return Object.freeze({\n state: \"absent\" as const,\n reason: member.absenceReason,\n });\n }\n if (resolved === undefined) {\n throw new Error(`Published Slot ${selected.slot.slotId} has no readable Attempt`);\n }\n return Object.freeze({\n state: \"published\" as const,\n action: member.action,\n attemptId: member.attempt.attemptId,\n attemptLocator: resolved.locator,\n originRunId: member.attempt.originRunId,\n originSlotId: resolved.attempt.slotId,\n verdict: selected.analysis.verdict,\n score: scoreForMember(selected),\n costUSD: costForSlots([selected]),\n durationMs: metricForSlots([selected], \"durationMs\", \"ms\", \"average\"),\n tokens: metricForSlots([selected], \"tokens\", \"tokens\", \"sum\"),\n });\n}\nfunction executionValue(values: readonly (string | null)[]): InspectionExecutionValue {\n const distinct = new Set(values);\n if (distinct.size !== 1)\n return Object.freeze({ state: \"mixed\" as const });\n const value = values[0];\n return value === null || value === undefined\n ? Object.freeze({ state: \"unavailable\" as const })\n : Object.freeze({ state: \"available\" as const, value });\n}\nfunction inspectionLabelKeys(slots: readonly SelectedSlot[]): readonly string[] {\n return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));\n}\nfunction inspectionLabels(slots: readonly SelectedSlot[], keys: readonly string[]): InspectionLabels {\n const targets = new Map<string, LoadedInspectionRun>();\n for (const { target } of slots)\n targets.set(target.run.runId, target);\n const runs = [...targets.values()];\n return Object.freeze(Object.fromEntries(keys.map((key) => [\n key,\n executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),\n ])));\n}\nfunction costUSDOf(resolved: ResolvedInspectionAttempt): AttemptAnalysis[\"costUSD\"] {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.attemptCost.family);\n if (attachment === undefined ||\n attachment.physical.familyRevision !== NiceEvalCurrentRecordAttachments.attemptCost.revision)\n return unavailableAttemptCost();\n const raw = attachment.value;\n if (!Predicate.isObject(raw))\n return unavailableAttemptCost();\n const decode = Schema.decodeUnknownResult(NiceEvalRecordAttachments.attemptCost.schema, { errors: \"all\", onExcessProperty: \"error\" });\n const observed = Reflect.has(raw, \"observed\")\n ? decode({ observed: Reflect.get(raw, \"observed\") })\n : undefined;\n if (observed !== undefined && Result.isFailure(observed))\n return unavailableAttemptCost();\n const estimated = Reflect.has(raw, \"estimated\")\n ? decode({ estimated: Reflect.get(raw, \"estimated\") })\n : undefined;\n return Object.freeze({\n observed: observed === undefined ? null : observed.success.observed?.amountUSD ?? null,\n estimated: estimated === undefined || Result.isFailure(estimated)\n ? null\n : estimated.success.estimated?.amountUSD ?? null,\n });\n}\nfunction unavailableAttemptCost(): AttemptAnalysis[\"costUSD\"] {\n return Object.freeze({ observed: null, estimated: null });\n}\nfunction costForSlots(slots: readonly SelectedSlot[]): InspectionCostMetricValue {\n const unique = new Map<string, SelectedSlot>();\n for (const slot of slots) {\n const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}`;\n if (!unique.has(key))\n unique.set(key, slot);\n }\n const subjects = [...unique.values()];\n const observed = subjects.filter(({ analysis }) => analysis.costUSD.observed !== null);\n const estimated = subjects.filter(({ analysis }) => analysis.costUSD.estimated !== null);\n const source = subjects.length > 0 && observed.length === subjects.length\n ? \"observed\" as const\n : subjects.length > 0 && estimated.length === subjects.length\n ? \"estimated\" as const\n : null;\n const valued = source === \"observed\" ? observed : source === \"estimated\" ? estimated : [];\n const value = source === null\n ? null\n : valued.reduce((sum, { analysis }) => sum + (analysis.costUSD[source] ?? 0), 0);\n return Object.freeze({\n value,\n source,\n state: source === null ? \"unavailable\" as const : \"available\" as const,\n samples: valued.length,\n total: subjects.length,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: refsOf(valued),\n unit: \"USD\" as const,\n bounds: Object.freeze({ min: 0, max: Math.max(0, value ?? 0) }),\n });\n}\nfunction denominatorOf(slots: readonly SelectedSlot[]): InspectionOverviewDenominator {\n const observed = slots.filter(({ resolved }) => resolved !== undefined).length;\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null).length;\n return Object.freeze({\n expected: slots.length,\n observed,\n classified,\n missing: slots.length - observed,\n });\n}\nfunction tallyOf(slots: readonly SelectedSlot[]): InspectionVerdictTally {\n let passed = 0;\n let failed = 0;\n let errored = 0;\n let skipped = 0;\n for (const { analysis } of slots) {\n switch (analysis.verdict) {\n case \"passed\":\n passed += 1;\n break;\n case \"failed\":\n failed += 1;\n break;\n case \"errored\":\n errored += 1;\n break;\n case \"skipped\":\n skipped += 1;\n break;\n case null: break;\n }\n }\n return Object.freeze({ passed, failed, errored, skipped });\n}\nfunction passRateOf(slots: readonly SelectedSlot[], denominator: InspectionOverviewDenominator, tally: InspectionVerdictTally): InspectionMetricValue {\n const classified = slots.filter(({ analysis }) => analysis.verdict !== null);\n const issues = uniqueJson(slots.flatMap(({ analysis }) => analysis.verdict === null ? analysis.issues : []));\n return Object.freeze({\n value: denominator.classified === 0 ? null : tally.passed / denominator.classified,\n state: metricState({\n expected: denominator.expected,\n samples: denominator.classified,\n complete: denominator.classified === denominator.expected,\n analyses: slots.map(({ analysis }) => analysis),\n }),\n samples: denominator.classified,\n total: denominator.expected,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(classified),\n });\n}\nfunction scoreForMember(selected: SelectedSlot): InspectionMetricValue {\n const { analysis } = selected;\n if (analysis.evaluationKind === \"pass\") {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const hasValue = analysis.score.hasPoints && analysis.score.hasValue;\n const complete = hasValue && analysis.score.complete;\n return Object.freeze({\n value: hasValue ? analysis.score.earned : null,\n state: complete\n ? \"available\" as const\n : hasValue\n ? \"partial\" as const\n : metricState({\n expected: 1,\n samples: 0,\n complete: false,\n analyses: [analysis],\n }),\n samples: complete ? 1 : 0,\n total: 1,\n basis: \"slot\" as const,\n issues: uniqueJson([\n ...analysis.issues,\n ...(analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]),\n refs: analysis.ref === null ? Object.freeze([]) : Object.freeze([analysis.ref]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: analysis.score.possible }),\n });\n}\n/** One Experiment × Eval cell: complete point Attempts are averaged. */\nfunction scoreForCell(slots: readonly SelectedSlot[]): InspectionMetricValue {\n const knownPoints = slots.filter(({ analysis }) => analysis.evaluationKind === \"points\");\n const hasKnownPass = slots.some(({ analysis }) => analysis.evaluationKind === \"pass\");\n const unknown = slots.filter(({ analysis }) => analysis.evaluationKind === null);\n if (knownPoints.length === 0 && (hasKnownPass || unknown.length === 0)) {\n return Object.freeze({\n value: null,\n state: slots.length === 0 ? \"empty\" as const : \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"slot\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n // In mixed historical data, explicit pass Attempts are not point-eligible.\n // Unknown facts remain in the denominator once the cell is known to score.\n const eligible = knownPoints.length === 0\n ? unknown\n : slots.filter(({ analysis }) => analysis.evaluationKind !== \"pass\");\n const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&\n analysis.score.hasValue &&\n analysis.score.complete);\n const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);\n const possible = complete.length === 0\n ? 0\n : complete.reduce((sum, { analysis }) => sum + analysis.score.possible, 0) / complete.length;\n const issues = uniqueJson([\n ...eligible.flatMap(({ analysis }) => analysis.issues),\n ...eligible.flatMap(({ analysis }) => analysis.score.hasPoints && !analysis.score.complete\n ? [scorePartialIssue(analysis)]\n : []),\n ]);\n return Object.freeze({\n value: complete.length === 0 ? null : earned / complete.length,\n state: metricState({\n expected: eligible.length,\n samples: complete.length,\n complete: complete.length === eligible.length,\n analyses: eligible.map(({ analysis }) => analysis),\n }),\n samples: complete.length,\n total: eligible.length,\n basis: \"slot\" as const,\n issues,\n refs: refsOf(eligible),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: possible }),\n });\n}\n/** Experiment, path group, and total scores sum their visible cell means. */\nfunction scoreFromCells(cells: readonly InspectionOverviewCell[]): InspectionMetricValue {\n if (cells.length === 0) {\n return Object.freeze({\n value: null,\n state: \"empty\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const eligible = cells.filter(({ evaluationKind }) => evaluationKind !== \"pass\");\n if (eligible.length === 0) {\n return Object.freeze({\n value: null,\n state: \"unsupported\" as const,\n samples: 0,\n total: 0,\n basis: \"eval\" as const,\n issues: Object.freeze([]),\n refs: Object.freeze([]),\n unit: \"points\" as const,\n bounds: Object.freeze({ min: 0, max: 0 }),\n });\n }\n const valued = eligible.filter(({ score }) => score.value !== null);\n const value = valued.length === 0\n ? null\n : valued.reduce((sum, { score }) => sum + (score.value ?? 0), 0);\n const state = valued.length > 0\n ? eligible.every(({ score }) => score.state === \"available\")\n ? \"available\" as const\n : \"partial\" as const\n : aggregateMetricState(eligible.map(({ score }) => score.state));\n return Object.freeze({\n value,\n state,\n samples: valued.length,\n total: eligible.length,\n basis: \"eval\" as const,\n issues: uniqueJson(eligible.flatMap(({ score }) => score.issues)),\n refs: uniqueRefs(eligible.flatMap(({ score }) => score.refs)),\n unit: \"points\" as const,\n bounds: Object.freeze({\n min: 0,\n max: eligible.reduce((sum, { score }) => sum + (score.bounds?.max ?? 0), 0),\n }),\n });\n}\nfunction metricState(input: {\n readonly expected: number;\n readonly samples: number;\n readonly complete: boolean;\n readonly analyses: readonly AttemptAnalysis[];\n}): InspectionMetricState {\n if (input.expected === 0)\n return \"empty\";\n if (input.samples > 0)\n return input.complete ? \"available\" : \"partial\";\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"failed\")) {\n return \"failed\";\n }\n if (input.analyses.some(({ assertionsState }) => assertionsState === \"not-recorded\" || assertionsState === \"unsupported\") &&\n input.analyses.every(({ assertionsState }) => assertionsState !== \"available\" && assertionsState !== \"attempt-missing\")) {\n return \"unsupported\";\n }\n return \"unavailable\";\n}\nfunction evaluationKindOf(slots: readonly SelectedSlot[]): InspectionEvaluationKind {\n const hasPoints = slots.some(({ analysis }) => analysis.evaluationKind === \"points\");\n if (!hasPoints)\n return \"pass\";\n return slots.some(({ analysis }) => analysis.evaluationKind === \"pass\")\n ? \"mixed\"\n : \"points\";\n}\nfunction refsOf(slots: readonly SelectedSlot[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const { analysis } of slots) {\n if (analysis.ref !== null)\n refs.set(analysis.ref.identity.locator, analysis.ref);\n }\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction uniqueRefs(values: readonly InspectionAttemptRef[]): readonly InspectionAttemptRef[] {\n const refs = new Map<string, InspectionAttemptRef>();\n for (const ref of values)\n refs.set(ref.identity.locator, ref);\n return Object.freeze([...refs.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, ref]) => ref));\n}\nfunction aggregateMetricState(states: readonly InspectionMetricState[]): InspectionMetricState {\n if (states.length === 0)\n return \"empty\";\n if (states.some((state) => state === \"failed\"))\n return \"failed\";\n if (states.every((state) => state === \"unsupported\"))\n return \"unsupported\";\n if (states.some((state) => state === \"partial\"))\n return \"partial\";\n return \"unavailable\";\n}\nfunction scorePartialIssue(analysis: AttemptAnalysis): InspectionJson {\n return Object.freeze({\n code: \"score-partial\",\n locator: analysis.ref?.identity.locator ?? null,\n });\n}\nfunction groupSelectedSlots(slots: readonly SelectedSlot[], keyOf: (slot: SelectedSlot) => string): readonly (readonly SelectedSlot[])[] {\n const groups = new Map<string, SelectedSlot[]>();\n for (const slot of slots) {\n const key = keyOf(slot);\n const values = groups.get(key);\n if (values === undefined)\n groups.set(key, [slot]);\n else\n values.push(slot);\n }\n return Object.freeze([...groups.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, values]) => Object.freeze(values)));\n}\nfunction groupPath(evalId: string): readonly string[] {\n const segments = evalId.split(\"/\").filter((segment) => segment.length > 0);\n return Object.freeze(segments.slice(0, -1));\n}\nfunction hasGroupPrefix(path: readonly string[], prefix: readonly string[]): boolean {\n return prefix.length <= path.length &&\n prefix.every((segment, index) => path[index] === segment);\n}\nfunction attemptRef(locator: string): InspectionAttemptRef {\n return Object.freeze({\n identity: Object.freeze({ kind: \"attempt\" as const, locator }),\n });\n}\nfunction emptyAttemptScore(): AttemptAnalysis[\"score\"] {\n return Object.freeze({\n hasPoints: false,\n earned: 0,\n possible: 0,\n hasValue: false,\n complete: false,\n });\n}\nfunction overviewIssue(code: string, runId: string, slot: RecordSlotIdentity): InspectionJson {\n return Object.freeze({\n code,\n runId,\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n });\n}\nfunction uniqueJson(values: readonly InspectionJson[]): readonly InspectionJson[] {\n const byJson = new Map<string, InspectionJson>();\n for (const value of values)\n byJson.set(JSON.stringify(value), value);\n return Object.freeze([...byJson.entries()]\n .sort(([left], [right]) => compareText(left, right))\n .map(([, value]) => value));\n}\nfunction closeOverview(value: InspectionOverview): InspectionOverview {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed)) {\n throw closed;\n }\n return closed as unknown as InspectionOverview;\n}\nfunction isInspectionCodecError(value: InspectionJson | {\n readonly code: string;\n readonly reason: string;\n}): value is {\n readonly code: string;\n readonly reason: string;\n} {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Reflect.get(value, \"code\") === \"inspection-result-invalid\" &&\n typeof Reflect.get(value, \"reason\") === \"string\";\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { VerdictState } from "../eval/record/verdict.cjs";
1
2
  import type { RunSlotPublication } from "../run/index.cjs";
2
3
  import { type InspectionJson } from "./codec.cjs";
3
4
  import { type LoadedInspectionRun } from "./facts.cjs";
@@ -58,11 +59,13 @@ export interface InspectionOverviewMember {
58
59
  readonly slotId: string;
59
60
  readonly evalId: string;
60
61
  readonly attemptOrdinal: number;
62
+ readonly labels: InspectionLabels;
61
63
  readonly publication: Exclude<RunSlotPublication, {
62
64
  readonly state: "published";
63
65
  }> | (Extract<RunSlotPublication, {
64
66
  readonly state: "published";
65
67
  }> & {
68
+ readonly verdict: VerdictState | null;
66
69
  readonly score: InspectionMetricValue;
67
70
  readonly costUSD: InspectionCostMetricValue;
68
71
  readonly durationMs: InspectionMetricValue;
@@ -82,6 +85,7 @@ export interface InspectionOverviewExperiment extends InspectionOverviewAggregat
82
85
  readonly experimentId: string;
83
86
  readonly agent: InspectionExecutionValue;
84
87
  readonly model: InspectionExecutionValue;
88
+ readonly labels: InspectionLabels;
85
89
  readonly groups: readonly InspectionOverviewGroup[];
86
90
  }
87
91
  export type InspectionExecutionValue = {
@@ -92,6 +96,7 @@ export type InspectionExecutionValue = {
92
96
  } | {
93
97
  readonly state: "unavailable";
94
98
  };
99
+ export type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;
95
100
  export interface InspectionOverview {
96
101
  readonly totals: InspectionOverviewAggregate;
97
102
  readonly experiments: readonly InspectionOverviewExperiment[];
@@ -1,3 +1,4 @@
1
+ import type { VerdictState } from "../eval/record/verdict.mjs";
1
2
  import type { RunSlotPublication } from "../run/index.mjs";
2
3
  import { type InspectionJson } from "./codec.mjs";
3
4
  import { type LoadedInspectionRun } from "./facts.mjs";
@@ -58,11 +59,13 @@ export interface InspectionOverviewMember {
58
59
  readonly slotId: string;
59
60
  readonly evalId: string;
60
61
  readonly attemptOrdinal: number;
62
+ readonly labels: InspectionLabels;
61
63
  readonly publication: Exclude<RunSlotPublication, {
62
64
  readonly state: "published";
63
65
  }> | (Extract<RunSlotPublication, {
64
66
  readonly state: "published";
65
67
  }> & {
68
+ readonly verdict: VerdictState | null;
66
69
  readonly score: InspectionMetricValue;
67
70
  readonly costUSD: InspectionCostMetricValue;
68
71
  readonly durationMs: InspectionMetricValue;
@@ -82,6 +85,7 @@ export interface InspectionOverviewExperiment extends InspectionOverviewAggregat
82
85
  readonly experimentId: string;
83
86
  readonly agent: InspectionExecutionValue;
84
87
  readonly model: InspectionExecutionValue;
88
+ readonly labels: InspectionLabels;
85
89
  readonly groups: readonly InspectionOverviewGroup[];
86
90
  }
87
91
  export type InspectionExecutionValue = {
@@ -92,6 +96,7 @@ export type InspectionExecutionValue = {
92
96
  } | {
93
97
  readonly state: "unavailable";
94
98
  };
99
+ export type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;
95
100
  export interface InspectionOverview {
96
101
  readonly totals: InspectionOverviewAggregate;
97
102
  readonly experiments: readonly InspectionOverviewExperiment[];
@@ -1,3 +1,4 @@
1
+ import type { VerdictState } from "../eval/record/verdict.js";
1
2
  import type { RunSlotPublication } from "../run/index.js";
2
3
  import { type InspectionJson } from "./codec.js";
3
4
  import { type LoadedInspectionRun } from "./facts.js";
@@ -58,11 +59,13 @@ export interface InspectionOverviewMember {
58
59
  readonly slotId: string;
59
60
  readonly evalId: string;
60
61
  readonly attemptOrdinal: number;
62
+ readonly labels: InspectionLabels;
61
63
  readonly publication: Exclude<RunSlotPublication, {
62
64
  readonly state: "published";
63
65
  }> | (Extract<RunSlotPublication, {
64
66
  readonly state: "published";
65
67
  }> & {
68
+ readonly verdict: VerdictState | null;
66
69
  readonly score: InspectionMetricValue;
67
70
  readonly costUSD: InspectionCostMetricValue;
68
71
  readonly durationMs: InspectionMetricValue;
@@ -82,6 +85,7 @@ export interface InspectionOverviewExperiment extends InspectionOverviewAggregat
82
85
  readonly experimentId: string;
83
86
  readonly agent: InspectionExecutionValue;
84
87
  readonly model: InspectionExecutionValue;
88
+ readonly labels: InspectionLabels;
85
89
  readonly groups: readonly InspectionOverviewGroup[];
86
90
  }
87
91
  export type InspectionExecutionValue = {
@@ -92,6 +96,7 @@ export type InspectionExecutionValue = {
92
96
  } | {
93
97
  readonly state: "unavailable";
94
98
  };
99
+ export type InspectionLabels = Readonly<Record<string, InspectionExecutionValue>>;
95
100
  export interface InspectionOverview {
96
101
  readonly totals: InspectionOverviewAggregate;
97
102
  readonly experiments: readonly InspectionOverviewExperiment[];