opencode-plugin-flow 6.3.1 → 6.4.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.
- package/CHANGELOG.md +30 -0
- package/README.md +25 -17
- package/dist/index.js +62 -32
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,36 @@ One short entry per release, written for users deciding whether to upgrade.
|
|
|
6
6
|
|
|
7
7
|
No changes yet.
|
|
8
8
|
|
|
9
|
+
## [6.4.0] - 2026-07-21
|
|
10
|
+
|
|
11
|
+
Continuous-flow lore keeps an authorized goal inside Flow while preserving the
|
|
12
|
+
small, single-run architecture:
|
|
13
|
+
|
|
14
|
+
- `/flow-auto` is the normal end-to-end driver. An active session remains
|
|
15
|
+
authoritative until explicit completed, deferred, or abandoned closure, and
|
|
16
|
+
existing implementation authority carries across plan approval, feature
|
|
17
|
+
outcomes, qualifying worker waves, and in-scope failed-review repair.
|
|
18
|
+
- Direct `/flow-run` remains a one-feature advanced or recovery control. Work
|
|
19
|
+
stays inside the active feature, serial execution remains the default, and
|
|
20
|
+
bounded parallel waves still add no scheduler, durable wave state, telemetry,
|
|
21
|
+
or concurrent active features.
|
|
22
|
+
- Reviewers now receive every applicable passing validation while final review
|
|
23
|
+
still requires a broad gate. Reviewer guidance explicitly permits
|
|
24
|
+
workspace-local non-shell inspection, removing an ambiguity that could block
|
|
25
|
+
valid reviews.
|
|
26
|
+
- Deterministic coverage now exercises concurrent completion replay,
|
|
27
|
+
configuration collisions and warnings, the documented 1-through-1000 review
|
|
28
|
+
step range, temporary-workspace cleanup, and release-version derivation.
|
|
29
|
+
- Real-provider evidence completed an overlapping two-worker wave, a serial
|
|
30
|
+
integration feature, failed-review reset and repair, and ten ordinary
|
|
31
|
+
`/flow-auto` sessions through explicit closure.
|
|
32
|
+
|
|
33
|
+
Install or update:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
opencode plugin opencode-plugin-flow@6.4.0 --global --force
|
|
37
|
+
```
|
|
38
|
+
|
|
9
39
|
## [6.3.1] - 2026-07-21
|
|
10
40
|
|
|
11
41
|
Read-only retry lore closes the recovery and documentation gaps in 6.3.0:
|
package/README.md
CHANGED
|
@@ -11,16 +11,20 @@ Flow keeps one durable active feature run at a time. When implementation divides
|
|
|
11
11
|
cleanly, the manager may ask a small host-native worker cohort to contribute in
|
|
12
12
|
parallel before it validates and reviews the combined result.
|
|
13
13
|
|
|
14
|
+
Once a Flow session starts, it remains the workflow for that goal until Flow
|
|
15
|
+
records completed, deferred, or abandoned closure. It never silently falls back
|
|
16
|
+
to ordinary non-Flow coding.
|
|
17
|
+
|
|
14
18
|
## Install
|
|
15
19
|
|
|
16
20
|
Install the exact npm release through OpenCode:
|
|
17
21
|
|
|
18
22
|
```bash
|
|
19
|
-
opencode plugin opencode-plugin-flow@6.
|
|
23
|
+
opencode plugin opencode-plugin-flow@6.4.0 --global --force
|
|
20
24
|
```
|
|
21
25
|
|
|
22
26
|
Omit `--global` for project scope. Exact version pins do not update
|
|
23
|
-
automatically. To update, replace `6.
|
|
27
|
+
automatically. To update, replace `6.4.0` with the new release and rerun the
|
|
24
28
|
command.
|
|
25
29
|
|
|
26
30
|
Before upgrading from Flow v5 or earlier, finish or explicitly close any active
|
|
@@ -32,7 +36,7 @@ The equivalent manual project configuration is:
|
|
|
32
36
|
```json
|
|
33
37
|
{
|
|
34
38
|
"$schema": "https://opencode.ai/config.json",
|
|
35
|
-
"plugin": ["opencode-plugin-flow@6.
|
|
39
|
+
"plugin": ["opencode-plugin-flow@6.4.0"]
|
|
36
40
|
}
|
|
37
41
|
```
|
|
38
42
|
|
|
@@ -53,9 +57,11 @@ Start a complete workflow:
|
|
|
53
57
|
Flow inspects the worktree, proposes a feature plan, and asks for approval
|
|
54
58
|
unless your request already authorized implementation. It then runs one
|
|
55
59
|
runnable feature at a time, validates the actual workspace, obtains an
|
|
56
|
-
independent review, and repeats until it can close the session.
|
|
60
|
+
independent review, and repeats until it can close the session. Existing
|
|
61
|
+
implementation authority carries across approval, feature outcomes, and
|
|
62
|
+
in-scope failed-review repairs; Flow does not ask for the same permission again.
|
|
57
63
|
|
|
58
|
-
For
|
|
64
|
+
For plan-only or advanced use, plan first:
|
|
59
65
|
|
|
60
66
|
```text
|
|
61
67
|
/flow-plan add rate limiting to the public API
|
|
@@ -63,9 +69,10 @@ For more control, plan first:
|
|
|
63
69
|
|
|
64
70
|
Review the proposed plan and approve it conversationally. `/flow-plan` does not
|
|
65
71
|
silently grant permission to implement, commit, push, or publish. After
|
|
66
|
-
approval,
|
|
72
|
+
approval of a plan-only request, `/flow-run` can run or recover one feature.
|
|
67
73
|
|
|
68
|
-
|
|
74
|
+
`/flow-run` and `/flow-status` are advanced/recovery controls. At any point,
|
|
75
|
+
`/flow-status` reports the durable state and next action.
|
|
69
76
|
|
|
70
77
|
## How Flow works
|
|
71
78
|
|
|
@@ -86,7 +93,8 @@ action after a restart or context change.
|
|
|
86
93
|
Parallel contribution is optional and local to one active feature. The manager
|
|
87
94
|
may launch two or three `flow-worker` instances only for exact,
|
|
88
95
|
non-overlapping slices, then inspect and integrate their work. At most one
|
|
89
|
-
targeted follow-up wave may address a concrete gap.
|
|
96
|
+
targeted follow-up wave may address a concrete gap. Once implementation is
|
|
97
|
+
authorized, a qualifying wave needs no separate approval.
|
|
90
98
|
|
|
91
99
|
Workers cannot delegate, call Flow lifecycle tools, or approve their own work.
|
|
92
100
|
Flow persists no wave state: the manager remains responsible for the combined
|
|
@@ -97,20 +105,20 @@ integration-heavy tasks stay serial.
|
|
|
97
105
|
|
|
98
106
|
| Command | Purpose |
|
|
99
107
|
| --- | --- |
|
|
100
|
-
| `/flow-auto <goal>` |
|
|
101
|
-
| `/flow-plan <goal>` |
|
|
102
|
-
| `/flow-run` |
|
|
108
|
+
| `/flow-auto <goal>` | Normal end-to-end driver for the authorized lifecycle; stop after planning if implementation was not authorized. |
|
|
109
|
+
| `/flow-plan <goal>` | Plan-only/advanced creation, revision, and approval. |
|
|
110
|
+
| `/flow-run` | Advanced/recovery execution of one approved feature. |
|
|
103
111
|
| `/flow-review` | Internal/recovery dispatch for a runtime-created reviewer assignment. |
|
|
104
|
-
| `/flow-status` |
|
|
112
|
+
| `/flow-status` | Advanced/recovery inspection of the active session and next action. |
|
|
105
113
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
but it is not an ordinary starting point.
|
|
114
|
+
Use `/flow-auto` for the ordinary end-to-end workflow. The other commands expose
|
|
115
|
+
plan-only, advanced, internal, or recovery controls.
|
|
109
116
|
|
|
110
117
|
## Recovery
|
|
111
118
|
|
|
112
|
-
Start with `/flow-status`; its next action is authoritative
|
|
113
|
-
|
|
119
|
+
Start with `/flow-status`; its next action is authoritative workflow state, not
|
|
120
|
+
permission to exceed the user's authority. Do not hand-edit `.flow/session.json`
|
|
121
|
+
to bypass a gate. If validation, review, locking,
|
|
114
122
|
fingerprinting, or archive publication fails, follow the focused steps in
|
|
115
123
|
[troubleshooting](docs/troubleshooting.md).
|
|
116
124
|
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
// skills/flow/SKILL.md
|
|
2
2
|
var SKILL_default = `---
|
|
3
3
|
name: flow
|
|
4
|
-
description:
|
|
4
|
+
description: Drive a Flow goal from planning through implementation, validation, independent review, and explicit closure. Use flow-auto as the normal end-to-end interface; use flow-plan for plan-only work and flow-run or flow-status for advanced recovery.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Flow
|
|
8
8
|
|
|
9
|
-
Flow is a small state ledger around
|
|
9
|
+
Flow is a small state ledger around coding work. An active Flow session is
|
|
10
|
+
authoritative for its goal until completed, deferred, or abandoned closure; do
|
|
11
|
+
not silently fall back to ordinary non-Flow coding. The root manager owns
|
|
10
12
|
the session, integration, validation, review dispatch, reset, closure, and every
|
|
11
13
|
lifecycle mutation except review submission. Bounded \`flow-worker\`
|
|
12
14
|
instances may contribute disjoint work inside the active feature. The reserved
|
|
@@ -17,7 +19,9 @@ lifecycle mutation.
|
|
|
17
19
|
## Route from status
|
|
18
20
|
|
|
19
21
|
1. Call \`flow_status { request: { view: "compact" } }\` first. Trust its
|
|
20
|
-
projection over conversation memory.
|
|
22
|
+
projection over conversation memory. Treat \`nextAction\` as authoritative
|
|
23
|
+
workflow state, not permission to exceed or a reason to discard existing
|
|
24
|
+
user authority.
|
|
21
25
|
2. If there is no session or the plan is still a draft, call
|
|
22
26
|
\`flow_guidance { id: "flow-plan" }\` and follow that contract. Stop after
|
|
23
27
|
planning when the user asked for a plan only.
|
|
@@ -25,8 +29,15 @@ lifecycle mutation.
|
|
|
25
29
|
\`flow_guidance { id: "flow-run" }\` and follow that contract for exactly that
|
|
26
30
|
feature.
|
|
27
31
|
4. After the feature outcome, read compact status again. Start the next ready
|
|
28
|
-
feature, report
|
|
29
|
-
\`flow_session_close\` request.
|
|
32
|
+
feature, repair an in-scope failed review, report a real blocker, or close a
|
|
33
|
+
completed session with one \`flow_session_close\` request.
|
|
34
|
+
|
|
35
|
+
Within existing implementation authority, continue after approval, every
|
|
36
|
+
feature outcome, and an in-scope failed-review reset and repair without asking
|
|
37
|
+
again. Pause only for a material product or scope choice, missing authority for
|
|
38
|
+
an external Git or release action, a hard operational failure, or the user's
|
|
39
|
+
explicit selection of deferred or abandoned closure. Only the user may choose
|
|
40
|
+
either non-completed closure kind.
|
|
30
41
|
|
|
31
42
|
Core contracts are bundled in the plugin; load them through \`flow_guidance\` and
|
|
32
43
|
do not depend on native skill discovery. If a required Flow tool is unavailable,
|
|
@@ -34,8 +45,10 @@ report that the plugin is not fully loaded instead of simulating state changes.
|
|
|
34
45
|
|
|
35
46
|
## Invariants
|
|
36
47
|
|
|
37
|
-
- Approved plans do not change.
|
|
38
|
-
|
|
48
|
+
- Approved plans do not change. If implementation requires material scope
|
|
49
|
+
outside the plan, stop editing. Finish the approved plan or have the user
|
|
50
|
+
explicitly choose deferred or abandoned closure before starting a new plan;
|
|
51
|
+
do not replan in place.
|
|
39
52
|
- Only one durable feature run is active at a time. Conversation-local worker
|
|
40
53
|
waves do not create additional runs or Flow state.
|
|
41
54
|
- Work stays inside the active feature and preserves unrelated user changes.
|
|
@@ -141,14 +154,15 @@ description: Independently review one runtime-owned Flow assignment. Reserved fo
|
|
|
141
154
|
# Flow Review
|
|
142
155
|
|
|
143
156
|
You are the independent \`flow-reviewer\`. Review the assigned work; do not fix
|
|
144
|
-
it.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
157
|
+
it. Use workspace-local, non-shell inspection tools to read relevant files and
|
|
158
|
+
supplied evidence, but do not edit files, read outside the workspace, run
|
|
159
|
+
commands, or launch workers. Among Flow lifecycle tools, call only \`flow_status\`
|
|
160
|
+
to read this assignment and \`flow_feature_complete\` to submit its exact result.
|
|
161
|
+
The latter is your sole lifecycle mutation.
|
|
148
162
|
|
|
149
163
|
## Recover the assignment
|
|
150
164
|
|
|
151
|
-
When given an assignment id, call
|
|
165
|
+
When given an assignment id, first call
|
|
152
166
|
\`flow_status { request: { view: "reviewer", assignmentId: "..." } }\`. Use its
|
|
153
167
|
bounded packet, assignment-linked validations, approved-plan context, and
|
|
154
168
|
completed feature IDs instead of reconstructing feature, source,
|
|
@@ -231,7 +245,7 @@ a reason to lower the bar.
|
|
|
231
245
|
// skills/flow-run/SKILL.md
|
|
232
246
|
var SKILL_default4 = `---
|
|
233
247
|
name: flow-run
|
|
234
|
-
description: Implement, validate, independently review, and record one approved Flow feature. Use
|
|
248
|
+
description: Implement, validate, independently review, and record one approved Flow feature. Use after plan approval as an advanced or recovery control; flow-auto is the normal end-to-end driver.
|
|
235
249
|
---
|
|
236
250
|
|
|
237
251
|
# Flow Run
|
|
@@ -244,17 +258,21 @@ independent review and submits its own result.
|
|
|
244
258
|
|
|
245
259
|
## Start and scope
|
|
246
260
|
|
|
247
|
-
1. Call \`flow_status { request: { view: "compact" } }\` first.
|
|
261
|
+
1. Call \`flow_status { request: { view: "compact" } }\` first. Treat
|
|
262
|
+
\`nextAction\` as authoritative workflow state, not as a permission grant.
|
|
248
263
|
2. Call \`flow_run_start\` when a ready feature is not already running.
|
|
249
264
|
3. Read \`flow_status { request: { view: "execution" } }\` and use that
|
|
250
265
|
projection as the active scope and source of revision guards.
|
|
251
266
|
4. Read the feature summary, targets, validation, dependencies, requirements,
|
|
252
267
|
and decisions before editing.
|
|
253
268
|
|
|
254
|
-
Preserve unrelated worktree changes
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
269
|
+
Preserve unrelated worktree changes and stay inside the active feature. Leave
|
|
270
|
+
changes owned by another planned feature for that feature. If implementation
|
|
271
|
+
needs material scope outside the approved plan, stop editing. Finish the
|
|
272
|
+
approved plan or have the user explicitly choose deferred or abandoned closure
|
|
273
|
+
before starting a new plan; never replan the active approved session in place.
|
|
274
|
+
Use \`flow_feature_reset\` when a wrong design or invalid assumption requires a
|
|
275
|
+
fresh run within the active feature; do not layer a retry onto a bad execution.
|
|
258
276
|
|
|
259
277
|
## Implement
|
|
260
278
|
|
|
@@ -268,8 +286,10 @@ that separate action.
|
|
|
268
286
|
|
|
269
287
|
## Bounded worker waves
|
|
270
288
|
|
|
271
|
-
Work serially by default.
|
|
272
|
-
|
|
289
|
+
Work serially by default. Existing implementation authority covers a qualifying
|
|
290
|
+
worker wave; do not ask for separate approval. After manager orientation, fan
|
|
291
|
+
out only when two or three genuinely independent, non-overlapping slices can be
|
|
292
|
+
named and parallel execution has clear benefit. Run one cohort of two or three
|
|
273
293
|
\`flow-worker\` instances at a time. Issue every cohort Task call in the same
|
|
274
294
|
assistant tool-use turn before consuming any result. If the host or model
|
|
275
295
|
serializes those calls, treat and report that execution as serial instead of
|
|
@@ -320,6 +340,12 @@ secrets. Raw output is deliberately neither persisted nor projected: the
|
|
|
320
340
|
durable evidence is the command, exit code, output completeness, and output
|
|
321
341
|
digest, while the manager must inspect the live output.
|
|
322
342
|
|
|
343
|
+
Every host-observed validation advances the session revision through the
|
|
344
|
+
after-hook. Immediately refresh
|
|
345
|
+
\`flow_status { request: { view: "compact" } }\` after the command and before the
|
|
346
|
+
next \`flow_validation_start\` or \`flow_review_start\` mutation; the revision used
|
|
347
|
+
to arm the command is stale.
|
|
348
|
+
|
|
323
349
|
Use focused validation for ordinary features. For the final feature, run the
|
|
324
350
|
repository's broad applicable gate after the last relevant edit. A source edit
|
|
325
351
|
invalidates earlier applicability. Failed or unavailable checks are blockers,
|
|
@@ -352,11 +378,14 @@ source-stale assignment; start a fresh run and repeat full validation and
|
|
|
352
378
|
review. Never fabricate a verdict. A submitted pass completes the feature; a
|
|
353
379
|
submitted blocking finding records a blocked outcome.
|
|
354
380
|
|
|
355
|
-
|
|
356
|
-
repeat full validation and full
|
|
381
|
+
When implementation is already authorized, an in-scope failed review needs no
|
|
382
|
+
new permission: reset the feature, fix it, and repeat full validation and full
|
|
383
|
+
review in a fresh run.
|
|
357
384
|
|
|
358
|
-
Read compact status after every recorded outcome.
|
|
359
|
-
|
|
385
|
+
Read compact status after every recorded outcome. When invoked directly through
|
|
386
|
+
\`/flow-run\`, report that one feature's outcome and \`nextAction\`, then stop. When
|
|
387
|
+
the active driver is \`/flow-auto\`, return to its loop so it can start the next
|
|
388
|
+
feature, report a blocker, or close the completed session.
|
|
360
389
|
`;
|
|
361
390
|
|
|
362
391
|
// src/guidance/ids.ts
|
|
@@ -525,17 +554,17 @@ var FLOW_CORE_AGENTS = {
|
|
|
525
554
|
};
|
|
526
555
|
var FLOW_CORE_COMMANDS = {
|
|
527
556
|
"flow-auto": {
|
|
528
|
-
description: "Drive
|
|
557
|
+
description: "Drive one authorized Flow goal end to end",
|
|
529
558
|
subtask: false,
|
|
530
559
|
template: compileFlowPromptSurface("flow-auto")
|
|
531
560
|
},
|
|
532
561
|
"flow-plan": {
|
|
533
|
-
description: "
|
|
562
|
+
description: "Plan-only or advanced Flow planning",
|
|
534
563
|
subtask: false,
|
|
535
564
|
template: compileFlowPromptSurface("flow-plan")
|
|
536
565
|
},
|
|
537
566
|
"flow-run": {
|
|
538
|
-
description: "
|
|
567
|
+
description: "Advanced or recovery execution of one Flow feature",
|
|
539
568
|
subtask: false,
|
|
540
569
|
template: compileFlowPromptSurface("flow-run")
|
|
541
570
|
},
|
|
@@ -546,7 +575,7 @@ var FLOW_CORE_COMMANDS = {
|
|
|
546
575
|
template: compileFlowPromptSurface("flow-review")
|
|
547
576
|
},
|
|
548
577
|
"flow-status": {
|
|
549
|
-
description: "
|
|
578
|
+
description: "Advanced or recovery inspection of Flow state",
|
|
550
579
|
subtask: false,
|
|
551
580
|
template: compileFlowPromptSurface("flow-status")
|
|
552
581
|
}
|
|
@@ -559,7 +588,7 @@ function reviewerSteps(env, onWarning) {
|
|
|
559
588
|
const raw = envValue(env, "OPENCODE_FLOW_REVIEWER_STEPS");
|
|
560
589
|
if (!raw)
|
|
561
590
|
return;
|
|
562
|
-
if (!/^[1-9][0-9]
|
|
591
|
+
if (!/^[1-9][0-9]*$/.test(raw) || Number(raw) > 1000) {
|
|
563
592
|
onWarning?.("OPENCODE_FLOW_REVIEWER_STEPS must be an integer from 1 through 1000; ignoring it.");
|
|
564
593
|
return;
|
|
565
594
|
}
|
|
@@ -1087,8 +1116,9 @@ function startReview(session, input, environment) {
|
|
|
1087
1116
|
fail("Reset the feature before starting another full review.");
|
|
1088
1117
|
}
|
|
1089
1118
|
const kind = isFinalFeatureRun(session, run) ? "final" : "feature";
|
|
1090
|
-
const applicable = run.validations.filter((validation) => validation.exitCode === 0 && validation.outputComplete && validation.sourceDigest === input.sourceDigest
|
|
1091
|
-
|
|
1119
|
+
const applicable = run.validations.filter((validation) => validation.exitCode === 0 && validation.outputComplete && validation.sourceDigest === input.sourceDigest);
|
|
1120
|
+
const hasRequiredValidation = kind === "feature" ? applicable.length > 0 : applicable.some((validation) => validation.scope === "broad");
|
|
1121
|
+
if (!hasRequiredValidation) {
|
|
1092
1122
|
fail(kind === "final" ? "Final review requires passing broad validation for the current workspace content." : "Review requires passing validation for the current workspace content.");
|
|
1093
1123
|
}
|
|
1094
1124
|
const assignmentId = environment.newId("review");
|
|
@@ -3448,4 +3478,4 @@ export {
|
|
|
3448
3478
|
plugin_default as default
|
|
3449
3479
|
};
|
|
3450
3480
|
|
|
3451
|
-
//# debugId=
|
|
3481
|
+
//# debugId=57F2808662DBAC8E64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
"export const FLOW_GUIDANCE_TOPICS = [\n\t\"flow\",\n\t\"flow-plan\",\n\t\"flow-run\",\n\t\"flow-review\",\n] as const;\n\nexport type FlowGuidanceTopic = (typeof FLOW_GUIDANCE_TOPICS)[number];\n\nexport const FLOW_GUIDANCE_IDS = FLOW_GUIDANCE_TOPICS;\n\nexport type FlowGuidanceId = (typeof FLOW_GUIDANCE_IDS)[number];\n",
|
|
6
6
|
"import flowSkill from \"../../skills/flow/SKILL.md\" with { type: \"text\" };\nimport flowPlanSkill from \"../../skills/flow-plan/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewSkill from \"../../skills/flow-review/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowRunSkill from \"../../skills/flow-run/SKILL.md\" with { type: \"text\" };\nimport {\n\tFLOW_GUIDANCE_IDS,\n\tFLOW_GUIDANCE_TOPICS,\n\ttype FlowGuidanceId,\n\ttype FlowGuidanceTopic,\n} from \"./ids.js\";\n\nexport {\n\tFLOW_GUIDANCE_IDS,\n\tFLOW_GUIDANCE_TOPICS,\n\ttype FlowGuidanceId,\n\ttype FlowGuidanceTopic,\n} from \"./ids.js\";\n\nexport type FlowGuidanceFile = {\n\trelativePath: \"SKILL.md\";\n\tcontent: string;\n};\n\nconst GUIDANCE_CONTENT: Record<FlowGuidanceTopic, string> = {\n\tflow: flowSkill,\n\t\"flow-plan\": flowPlanSkill,\n\t\"flow-run\": flowRunSkill,\n\t\"flow-review\": flowReviewSkill,\n};\n\nexport type FlowGuidanceDocument = FlowGuidanceFile & {\n\tid: FlowGuidanceId;\n\ttopic: FlowGuidanceTopic;\n};\n\nexport const FLOW_GUIDANCE_DOCUMENTS: readonly FlowGuidanceDocument[] =\n\tFLOW_GUIDANCE_TOPICS.map((name) => ({\n\t\trelativePath: \"SKILL.md\",\n\t\tcontent: GUIDANCE_CONTENT[name],\n\t\tid: name,\n\t\ttopic: name,\n\t}));\n\nconst FLOW_GUIDANCE_BY_ID = new Map(\n\tFLOW_GUIDANCE_DOCUMENTS.map((document) => [document.id, document]),\n);\n\nexport function getFlowGuidance(id: FlowGuidanceId): FlowGuidanceDocument {\n\tconst document = FLOW_GUIDANCE_BY_ID.get(id);\n\tif (!document) throw new Error(`Missing bundled Flow guidance '${id}'.`);\n\treturn document;\n}\n\nif (FLOW_GUIDANCE_BY_ID.size !== FLOW_GUIDANCE_IDS.length) {\n\tthrow new Error(\"Bundled Flow guidance ids and documents are out of sync.\");\n}\n",
|
|
7
7
|
"import { type FlowGuidanceId, getFlowGuidance } from \"./guidance/catalog.js\";\n\nexport type FlowPromptSurfaceName =\n\t| \"flow-auto\"\n\t| \"flow-plan\"\n\t| \"flow-run\"\n\t| \"flow-review\"\n\t| \"flow-status\"\n\t| \"flow-reviewer\"\n\t| \"flow-worker\";\n\nconst FLOW_WORKER_PROMPT = `# Flow bounded worker\n\nYou are one hidden Flow worker supporting the root manager inside one active feature. Own only the single slice explicitly assigned by that manager. Preserve all unrelated work and do not broaden the assignment.\n\nYou may run concurrently with sibling workers. Do not enter their scopes, assume their results, or revert changes you did not make.\n\n## Scope and authority\n\n- Use the manager assignment as your only source of Flow lifecycle context. Do not call any \\`flow_*\\` tool, including \\`flow_status\\`.\n- Do not delegate, spawn subtasks, or load skills.\n- Do not stage, commit, push, publish, or create a release.\n- Do not run Bash commands. The manager owns every executable check.\n- Never edit .flow or .git metadata paths; the host denies those paths.\n- A read-only evidence slice must not edit files.\n- An implementation slice may edit only the exact, non-overlapping write paths explicitly assigned by the manager. If required work would escape those paths, stop and return a partial or blocked handoff instead of expanding scope.\n- Use only non-shell inspection relevant to the assigned slice. The manager owns integration, focused checks, and authoritative combined validation after all workers have stopped.\n\n## Handoff\n\nReturn exactly one concise handoff using this structure:\n\n## Status\nsuccess | partial | blocked\n\n## Scope & coverage\n- Assigned slice and what was covered\n\n## Findings / changed paths\n- Evidence found or exact paths changed\n\n## Recommended manager checks\n- Exact checks the manager should run, or none\n\n## Gaps & risks\n- Missing coverage, blockers, conflicts, or none\n\n## Integration notes\n- What the manager must verify or integrate, or none`;\n\nfunction skillBody(id: FlowGuidanceId): string {\n\treturn getFlowGuidance(id)\n\t\t.content.replace(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n/, \"\")\n\t\t.trim();\n}\n\nconst MANAGER_COMMANDS = {\n\t\"flow-auto\": {\n\t\tguidance: \"flow\",\n\t\taction:\n\t\t\t\"Drive the Flow lifecycle only within the user's authorized scope. Stop after planning when implementation was not authorized: $ARGUMENTS\",\n\t},\n\t\"flow-plan\": {\n\t\tguidance: \"flow-plan\",\n\t\taction: \"Create or revise the Flow plan for: $ARGUMENTS\",\n\t},\n\t\"flow-run\": {\n\t\tguidance: \"flow-run\",\n\t\taction: \"Execute exactly one approved Flow feature: $ARGUMENTS\",\n\t},\n} as const satisfies Record<\n\t\"flow-auto\" | \"flow-plan\" | \"flow-run\",\n\t{ guidance: FlowGuidanceId; action: string }\n>;\n\nfunction managerCommand(surface: keyof typeof MANAGER_COMMANDS): string {\n\tconst command = MANAGER_COMMANDS[surface];\n\treturn `${skillBody(command.guidance)}\\n\\n## Command\\n\\n${command.action}`;\n}\n\nexport function compileFlowPromptSurface(\n\tsurface: FlowPromptSurfaceName,\n): string {\n\tswitch (surface) {\n\t\tcase \"flow-auto\":\n\t\tcase \"flow-plan\":\n\t\tcase \"flow-run\":\n\t\t\treturn managerCommand(surface);\n\t\tcase \"flow-status\":\n\t\t\treturn 'Call `flow_status { request: { view: \"compact\" } }` and report the runtime projection plus its next action.';\n\t\tcase \"flow-review\":\n\t\t\treturn [\n\t\t\t\t\"# Flow review command\",\n\t\t\t\t\"\",\n\t\t\t\t\"Run this assignment only as the reserved `flow-reviewer`. The reviewer is independent and workspace-read-only; it may read reviewer status and submit only its own result through `flow_feature_complete`.\",\n\t\t\t\t\"\",\n\t\t\t\t\"Assignment: $ARGUMENTS\",\n\t\t\t].join(\"\\n\");\n\t\tcase \"flow-reviewer\":\n\t\t\treturn skillBody(\"flow-review\");\n\t\tcase \"flow-worker\":\n\t\t\treturn FLOW_WORKER_PROMPT;\n\t\tdefault: {\n\t\t\tconst unsupported: never = surface;\n\t\t\tthrow new Error(`Unsupported Flow prompt surface '${unsupported}'.`);\n\t\t}\n\t}\n}\n",
|
|
8
|
-
"import { compileFlowPromptSurface } from \"./prompt-surfaces.js\";\n\nexport type FlowPermissionConfig = {\n\tedit?: string | Record<string, string>;\n\tbash?: string | Record<string, string>;\n\tskill?: string | Record<string, string>;\n\ttask?: Record<string, string>;\n\t[toolPattern: string]: string | Record<string, string> | undefined;\n};\n\nexport type FlowAgentConfig = {\n\tmode: \"subagent\";\n\tdescription: string;\n\tprompt: string;\n\thidden?: boolean;\n\tmodel?: string;\n\tsteps?: number;\n\tpermission?: FlowPermissionConfig;\n};\n\ntype CommandBase = { description: string; template: string };\nexport type FlowCommandConfig =\n\t| (CommandBase & { subtask: false; agent?: never })\n\t| (CommandBase & { subtask: true; agent: string });\n\nexport type MutableFlowConfig = {\n\tagent?: Record<string, unknown>;\n\tcommand?: Record<string, unknown>;\n};\n\ntype FlowEnvironment = Readonly<Record<string, string | undefined>>;\n\nexport const FLOW_CORE_AGENTS = {\n\t\"flow-reviewer\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Independent workspace-read-only reviewer that submits one Flow result.\",\n\t\tprompt: compileFlowPromptSurface(\"flow-reviewer\"),\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\texternal_directory: \"deny\",\n\t\t\tskill: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t\tflow_feature_complete: \"allow\",\n\t\t},\n\t},\n\t\"flow-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Bounded worker for one read-only evidence or exact-scope implementation slice.\",\n\t\tprompt: compileFlowPromptSurface(\"flow-worker\"),\n\t\tpermission: {\n\t\t\tedit: {\n\t\t\t\t\"*\": \"allow\",\n\t\t\t\t\".flow\": \"deny\",\n\t\t\t\t\".flow/**\": \"deny\",\n\t\t\t\t\".git\": \"deny\",\n\t\t\t\t\".git/**\": \"deny\",\n\t\t\t},\n\t\t\tbash: \"deny\",\n\t\t\texternal_directory: \"deny\",\n\t\t\tskill: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t},\n\t},\n} satisfies Record<string, FlowAgentConfig>;\n\nexport const FLOW_CORE_COMMANDS = {\n\t\"flow-auto\": {\n\t\tdescription: \"Drive
|
|
8
|
+
"import { compileFlowPromptSurface } from \"./prompt-surfaces.js\";\n\nexport type FlowPermissionConfig = {\n\tedit?: string | Record<string, string>;\n\tbash?: string | Record<string, string>;\n\tskill?: string | Record<string, string>;\n\ttask?: Record<string, string>;\n\t[toolPattern: string]: string | Record<string, string> | undefined;\n};\n\nexport type FlowAgentConfig = {\n\tmode: \"subagent\";\n\tdescription: string;\n\tprompt: string;\n\thidden?: boolean;\n\tmodel?: string;\n\tsteps?: number;\n\tpermission?: FlowPermissionConfig;\n};\n\ntype CommandBase = { description: string; template: string };\nexport type FlowCommandConfig =\n\t| (CommandBase & { subtask: false; agent?: never })\n\t| (CommandBase & { subtask: true; agent: string });\n\nexport type MutableFlowConfig = {\n\tagent?: Record<string, unknown>;\n\tcommand?: Record<string, unknown>;\n};\n\ntype FlowEnvironment = Readonly<Record<string, string | undefined>>;\n\nexport const FLOW_CORE_AGENTS = {\n\t\"flow-reviewer\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Independent workspace-read-only reviewer that submits one Flow result.\",\n\t\tprompt: compileFlowPromptSurface(\"flow-reviewer\"),\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\texternal_directory: \"deny\",\n\t\t\tskill: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t\tflow_feature_complete: \"allow\",\n\t\t},\n\t},\n\t\"flow-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Bounded worker for one read-only evidence or exact-scope implementation slice.\",\n\t\tprompt: compileFlowPromptSurface(\"flow-worker\"),\n\t\tpermission: {\n\t\t\tedit: {\n\t\t\t\t\"*\": \"allow\",\n\t\t\t\t\".flow\": \"deny\",\n\t\t\t\t\".flow/**\": \"deny\",\n\t\t\t\t\".git\": \"deny\",\n\t\t\t\t\".git/**\": \"deny\",\n\t\t\t},\n\t\t\tbash: \"deny\",\n\t\t\texternal_directory: \"deny\",\n\t\t\tskill: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t},\n\t},\n} satisfies Record<string, FlowAgentConfig>;\n\nexport const FLOW_CORE_COMMANDS = {\n\t\"flow-auto\": {\n\t\tdescription: \"Drive one authorized Flow goal end to end\",\n\t\tsubtask: false,\n\t\ttemplate: compileFlowPromptSurface(\"flow-auto\"),\n\t},\n\t\"flow-plan\": {\n\t\tdescription: \"Plan-only or advanced Flow planning\",\n\t\tsubtask: false,\n\t\ttemplate: compileFlowPromptSurface(\"flow-plan\"),\n\t},\n\t\"flow-run\": {\n\t\tdescription: \"Advanced or recovery execution of one Flow feature\",\n\t\tsubtask: false,\n\t\ttemplate: compileFlowPromptSurface(\"flow-run\"),\n\t},\n\t\"flow-review\": {\n\t\tdescription: \"Run one independent workspace-read-only Flow review\",\n\t\tagent: \"flow-reviewer\",\n\t\tsubtask: true,\n\t\ttemplate: compileFlowPromptSurface(\"flow-review\"),\n\t},\n\t\"flow-status\": {\n\t\tdescription: \"Advanced or recovery inspection of Flow state\",\n\t\tsubtask: false,\n\t\ttemplate: compileFlowPromptSurface(\"flow-status\"),\n\t},\n} satisfies Record<string, FlowCommandConfig>;\n\nfunction envValue(env: FlowEnvironment, name: string): string | undefined {\n\tconst value = env[name]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction reviewerSteps(\n\tenv: FlowEnvironment,\n\tonWarning?: (message: string) => void,\n) {\n\tconst raw = envValue(env, \"OPENCODE_FLOW_REVIEWER_STEPS\");\n\tif (!raw) return undefined;\n\tif (!/^[1-9][0-9]*$/.test(raw) || Number(raw) > 1000) {\n\t\tonWarning?.(\n\t\t\t\"OPENCODE_FLOW_REVIEWER_STEPS must be an integer from 1 through 1000; ignoring it.\",\n\t\t);\n\t\treturn undefined;\n\t}\n\treturn Number(raw);\n}\n\nexport function createFlowCoreConfigEntries(options?: {\n\tenv?: FlowEnvironment;\n\tonWarning?: (warning: string) => void;\n}) {\n\tconst env = options?.env ?? process.env;\n\tconst model = envValue(env, \"OPENCODE_FLOW_REVIEWER_MODEL\");\n\tconst steps = reviewerSteps(env, options?.onWarning);\n\treturn {\n\t\tagent: {\n\t\t\t\"flow-reviewer\": {\n\t\t\t\t...FLOW_CORE_AGENTS[\"flow-reviewer\"],\n\t\t\t\t...(model ? { model } : {}),\n\t\t\t\t...(steps ? { steps } : {}),\n\t\t\t\tpermission: {\n\t\t\t\t\t...FLOW_CORE_AGENTS[\"flow-reviewer\"].permission,\n\t\t\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"flow-worker\": {\n\t\t\t\t...FLOW_CORE_AGENTS[\"flow-worker\"],\n\t\t\t\tpermission: {\n\t\t\t\t\t...FLOW_CORE_AGENTS[\"flow-worker\"].permission,\n\t\t\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcommand: Object.fromEntries(\n\t\t\tObject.entries(FLOW_CORE_COMMANDS).map(([name, value]) => [\n\t\t\t\tname,\n\t\t\t\t{ ...value },\n\t\t\t]),\n\t\t),\n\t};\n}\n\nexport function applyFlowConfig(\n\tconfig: MutableFlowConfig,\n\toptions?: {\n\t\tonCollision?: (kind: \"agent\" | \"command\", name: string) => void;\n\t\tonWarning?: (warning: string) => void;\n\t},\n): void {\n\tconst entries = createFlowCoreConfigEntries({\n\t\t...(options?.onWarning ? { onWarning: options.onWarning } : {}),\n\t});\n\tfor (const name of Object.keys(entries.agent)) {\n\t\tif (config.agent && name in config.agent)\n\t\t\toptions?.onCollision?.(\"agent\", name);\n\t}\n\tfor (const name of Object.keys(entries.command)) {\n\t\tif (config.command && name in config.command)\n\t\t\toptions?.onCollision?.(\"command\", name);\n\t}\n\tconfig.agent = { ...(config.agent ?? {}), ...entries.agent };\n\tconfig.command = { ...(config.command ?? {}), ...entries.command };\n}\n",
|
|
9
9
|
"export const MAX_SESSION_ID_LENGTH = 128;\nexport const MAX_PLAN_FEATURES = 64;\nexport const MAX_PLAN_BYTES = 256 * 1024;\nexport const MAX_TEXT_BYTES = 32 * 1024;\nexport const MAX_ARTIFACTS = 128;\nexport const MAX_PATH_BYTES = 4 * 1024;\nexport const MAX_VALIDATIONS_PER_RUN = 16;\nexport const MAX_REVIEW_FINDINGS = 100;\nexport const MAX_SESSION_BYTES = 4 * 1024 * 1024;\nexport const MAX_SOURCE_FILES = 50_000;\nexport const MAX_SOURCE_FILE_BYTES = 16 * 1024 * 1024;\nexport const MAX_SOURCE_TOTAL_BYTES = 256 * 1024 * 1024;\n",
|
|
10
10
|
"import { MAX_ARTIFACTS, MAX_PATH_BYTES } from \"./limits.js\";\nimport type { Artifact } from \"./session.js\";\n\nexport const ARTIFACT_PATH_MESSAGE =\n\t\"Artifact paths must be normalized workspace-relative paths.\";\n\nexport function isArtifactPath(value: string): boolean {\n\tif (!value || value !== value.trim() || value.includes(\"\\0\")) return false;\n\tif (value.startsWith(\"/\") || /^[A-Za-z]:/.test(value)) return false;\n\tif (value.includes(\"\\\\\")) return false;\n\treturn value\n\t\t.split(\"/\")\n\t\t.every((part) => part !== \"\" && part !== \".\" && part !== \"..\");\n}\n\nexport function artifactIssues(artifacts: readonly Artifact[]): string[] {\n\tconst issues: string[] = [];\n\tif (artifacts.length > MAX_ARTIFACTS) {\n\t\tissues.push(`Artifact lists may contain at most ${MAX_ARTIFACTS} paths.`);\n\t}\n\tfor (const artifact of artifacts) {\n\t\tif (!isArtifactPath(artifact.path)) {\n\t\t\tissues.push(ARTIFACT_PATH_MESSAGE);\n\t\t} else if (Buffer.byteLength(artifact.path, \"utf8\") > MAX_PATH_BYTES) {\n\t\t\tissues.push(\n\t\t\t\t`Artifact paths may contain at most ${MAX_PATH_BYTES} UTF-8 bytes.`,\n\t\t\t);\n\t\t}\n\t}\n\treturn issues;\n}\n",
|
|
11
11
|
"import { createHash } from \"node:crypto\";\nimport type { Session, SourceDigest } from \"./session.js\";\n\nexport type ClosureRetryRequest = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tsessionId: string;\n\tkind: \"completed\" | \"deferred\" | \"abandoned\";\n\tsummary: string;\n}>;\n\nfunction stableJson(value: unknown): string {\n\tif (value === null || typeof value !== \"object\") return JSON.stringify(value);\n\tif (Array.isArray(value)) return `[${value.map(stableJson).join(\",\")}]`;\n\tconst record = value as Record<string, unknown>;\n\treturn `{${Object.keys(record)\n\t\t.sort()\n\t\t.map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`)\n\t\t.join(\",\")}}`;\n}\n\nexport function operationInputDigest(value: unknown): SourceDigest {\n\treturn `sha256:${createHash(\"sha256\").update(stableJson(value)).digest(\"hex\")}`;\n}\n\nfunction reconstructedClosureRequest(session: Session): ClosureRetryRequest {\n\tconst closure = session.closure;\n\tif (!closure) throw new Error(\"Session has no closure.\");\n\treturn {\n\t\toperationId: closure.operationId,\n\t\texpectedRevision: closure.recordedRevision - 1,\n\t\tsessionId: session.id,\n\t\tkind: closure.kind,\n\t\tsummary: closure.summary,\n\t};\n}\n\nexport function closureOperationIssue(session: Session): string | null {\n\tconst closure = session.closure;\n\tif (!closure) return null;\n\tif (\n\t\tclosure.recordedRevision < 1 ||\n\t\tclosure.recordedRevision > session.revision\n\t) {\n\t\treturn \"Closure has an invalid recorded revision.\";\n\t}\n\tconst operation = session.operations.find(\n\t\t(candidate) => candidate.id === closure.operationId,\n\t);\n\tif (!operation)\n\t\treturn \"Closure operation is missing from the operation ledger.\";\n\tif (operation.kind !== \"session-close\") {\n\t\treturn \"Closure operation must be a session-close operation.\";\n\t}\n\tif (operation.committedRevision !== closure.recordedRevision) {\n\t\treturn \"Closure revision does not match its operation.\";\n\t}\n\tif (\n\t\toperation.inputDigest !==\n\t\toperationInputDigest(reconstructedClosureRequest(session))\n\t) {\n\t\treturn \"Closure payload does not match its operation.\";\n\t}\n\treturn null;\n}\n\nexport function closureRetryRequest(\n\tsession: Session,\n): ClosureRetryRequest | null {\n\tif (!session.closure || closureOperationIssue(session)) return null;\n\treturn reconstructedClosureRequest(session);\n}\n",
|
|
12
12
|
"export const FEATURE_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nexport const FEATURE_ID_MESSAGE = \"Feature ids must be lowercase kebab-case\";\n\nexport function isFeatureId(value: string): boolean {\n\treturn FEATURE_ID_PATTERN.test(value);\n}\n",
|
|
13
13
|
"import { isFeatureId } from \"./feature-id.js\";\nimport { MAX_PLAN_BYTES, MAX_PLAN_FEATURES } from \"./limits.js\";\nimport type { Plan } from \"./session.js\";\n\nexport function planIssue(plan: Plan): string | null {\n\tif (Buffer.byteLength(JSON.stringify(plan), \"utf8\") > MAX_PLAN_BYTES) {\n\t\treturn `A plan may contain at most ${MAX_PLAN_BYTES} UTF-8 bytes.`;\n\t}\n\tif (plan.features.length < 1 || plan.features.length > MAX_PLAN_FEATURES) {\n\t\treturn `A plan must contain 1-${MAX_PLAN_FEATURES} features.`;\n\t}\n\tconst ids = new Set<string>();\n\tfor (const feature of plan.features) {\n\t\tif (!isFeatureId(feature.id)) return `Invalid feature id '${feature.id}'.`;\n\t\tif (ids.has(feature.id)) return `Duplicate feature id '${feature.id}'.`;\n\t\tids.add(feature.id);\n\t}\n\tfor (const feature of plan.features) {\n\t\tfor (const dependency of feature.dependsOn) {\n\t\t\tif (!ids.has(dependency)) {\n\t\t\t\treturn `Feature '${feature.id}' depends on unknown feature '${dependency}'.`;\n\t\t\t}\n\t\t\tif (dependency === feature.id) {\n\t\t\t\treturn `Feature '${feature.id}' cannot depend on itself.`;\n\t\t\t}\n\t\t}\n\t}\n\tconst indegree = new Map(plan.features.map((feature) => [feature.id, 0]));\n\tconst children = new Map(\n\t\tplan.features.map((feature) => [feature.id, [] as string[]]),\n\t);\n\tfor (const feature of plan.features) {\n\t\tfor (const dependency of new Set(feature.dependsOn)) {\n\t\t\tindegree.set(feature.id, (indegree.get(feature.id) ?? 0) + 1);\n\t\t\tchildren.get(dependency)?.push(feature.id);\n\t\t}\n\t}\n\tconst queue = [...indegree.entries()]\n\t\t.filter(([, degree]) => degree === 0)\n\t\t.map(([id]) => id);\n\tlet visited = 0;\n\twhile (queue.length > 0) {\n\t\tconst id = queue.shift();\n\t\tif (!id) continue;\n\t\tvisited += 1;\n\t\tfor (const child of children.get(id) ?? []) {\n\t\t\tconst next = (indegree.get(child) ?? 0) - 1;\n\t\t\tindegree.set(child, next);\n\t\t\tif (next === 0) queue.push(child);\n\t\t}\n\t}\n\treturn visited === plan.features.length\n\t\t? null\n\t\t: \"The plan dependency graph is cyclic.\";\n}\n",
|
|
14
14
|
"export type SessionStatus =\n\t| \"planning\"\n\t| \"ready\"\n\t| \"running\"\n\t| \"blocked\"\n\t| \"completed\"\n\t| \"closed\";\n\nexport type FeatureId = string;\nexport type SessionId = string;\nexport type SourceDigest = `sha256:${string}`;\n\nexport type Artifact = Readonly<{ path: string }>;\n\nexport type PlanFeature = Readonly<{\n\tid: FeatureId;\n\ttitle: string;\n\tsummary: string;\n\ttargets: string[];\n\tvalidation: string[];\n\tdependsOn: FeatureId[];\n}>;\n\nexport type Plan = Readonly<{\n\tsummary: string;\n\toverview: string;\n\trequirements: string[];\n\tdecisions: string[];\n\tfeatures: PlanFeature[];\n}>;\n\nexport type ValidationScope = \"focused\" | \"broad\";\n\nexport type ValidationObservation = Readonly<{\n\tid: string;\n\tfeatureId: FeatureId;\n\trunId: string;\n\tscope: ValidationScope;\n\tcommand: string;\n\tsourceDigest: SourceDigest;\n\texitCode: number;\n\toutputDigest: SourceDigest;\n\toutputComplete: boolean;\n\trecordedRevision: number;\n}>;\n\nexport type ReviewFinding = Readonly<{\n\tseverity: \"blocking\" | \"advisory\";\n\tsummary: string;\n\tevidence?: string | undefined;\n}>;\n\nexport type ReviewResult = Readonly<{\n\tverdict: \"passed\" | \"failed\";\n\tfindings: ReviewFinding[];\n\tterminalDisposition: \"submitted\" | \"observed_unsubmitted\";\n\trecordedRevision: number;\n}>;\n\nexport function reviewResultSemanticIssues(\n\tresult: Pick<ReviewResult, \"verdict\" | \"findings\" | \"terminalDisposition\">,\n) {\n\tconst issues: Array<{\n\t\tpath: Array<string | number>;\n\t\tmessage: string;\n\t}> = [];\n\tconst blocking = result.findings.some(\n\t\t(finding) => finding.severity === \"blocking\",\n\t);\n\tfor (const [index, finding] of result.findings.entries()) {\n\t\tif (finding.severity === \"blocking\" && !finding.evidence?.trim()) {\n\t\t\tissues.push({\n\t\t\t\tpath: [\"findings\", index, \"evidence\"],\n\t\t\t\tmessage: \"A blocking finding requires concrete evidence.\",\n\t\t\t});\n\t\t}\n\t}\n\tif (result.verdict === \"failed\" && !blocking) {\n\t\tissues.push({\n\t\t\tpath: [\"findings\"],\n\t\t\tmessage: \"A failed review requires a blocking finding.\",\n\t\t});\n\t}\n\tif (result.verdict === \"passed\" && blocking) {\n\t\tissues.push({\n\t\t\tpath: [\"findings\"],\n\t\t\tmessage: \"A passed review cannot contain blocking findings.\",\n\t\t});\n\t}\n\tif (\n\t\tresult.terminalDisposition === \"observed_unsubmitted\" &&\n\t\tresult.verdict !== \"failed\"\n\t) {\n\t\tissues.push({\n\t\t\tpath: [\"terminalDisposition\"],\n\t\t\tmessage: \"Observed-but-unsubmitted review work must fail closed.\",\n\t\t});\n\t}\n\treturn issues;\n}\n\nexport type ReviewAssignment = Readonly<{\n\tid: string;\n\toperationId: string;\n\tfeatureId: FeatureId;\n\trunId: string;\n\tkind: \"feature\" | \"final\";\n\tsourceDigest: SourceDigest;\n\tvalidationIds: string[];\n\tpacket: Readonly<{\n\t\tsummary: string;\n\t\triskLenses: string[];\n\t}>;\n\tcreatedRevision: number;\n\tresult: ReviewResult | null;\n}>;\n\n/**\n * The run is the canonical execution aggregate. Feature status, active work,\n * validation, review, and completion are derived from this one record instead\n * of being copied into parallel histories and counters.\n */\nexport type FeatureRun = Readonly<{\n\tid: string;\n\tfeatureId: FeatureId;\n\tattempt: number;\n\tstate: \"active\" | \"completed\" | \"blocked\" | \"superseded\";\n\tstartedRevision: number;\n\tsummary: string | null;\n\tartifactsChanged: Artifact[];\n\tvalidations: ValidationObservation[];\n\treviews: ReviewAssignment[];\n}>;\n\nexport type OperationKind =\n\t| \"plan-save\"\n\t| \"plan-approve\"\n\t| \"run-start\"\n\t| \"review-start\"\n\t| \"feature-complete\"\n\t| \"feature-reset\"\n\t| \"session-close\";\n\nexport type OperationRecord = Readonly<{\n\tid: string;\n\tkind: OperationKind;\n\tinputDigest: SourceDigest;\n\tcommittedRevision: number;\n\tentityId?: string | undefined;\n}>;\n\nexport type SessionClosure = Readonly<{\n\tkind: \"completed\" | \"deferred\" | \"abandoned\";\n\tsummary: string;\n\toperationId: string;\n\trecordedRevision: number;\n}>;\n\n/**\n * Session v5 is a deliberate hard cutover. Older active sessions must be\n * closed before upgrading; archived documents are inert history.\n *\n * Revision/order carries lifecycle truth. There are deliberately no clocks in\n * the correctness model.\n */\nexport type Session = Readonly<{\n\tversion: 5;\n\tid: SessionId;\n\trevision: number;\n\tgoal: string;\n\tapproval: \"pending\" | \"approved\";\n\tplan: Plan | null;\n\truns: FeatureRun[];\n\toperations: OperationRecord[];\n\tclosure: SessionClosure | null;\n}>;\n",
|
|
15
|
-
"import { artifactIssues } from \"./artifact.js\";\nimport {\n\tMAX_REVIEW_FINDINGS,\n\tMAX_SESSION_ID_LENGTH,\n\tMAX_VALIDATIONS_PER_RUN,\n} from \"./limits.js\";\nimport { closureOperationIssue, operationInputDigest } from \"./operation.js\";\nimport { planIssue } from \"./plan.js\";\nimport type {\n\tArtifact,\n\tFeatureId,\n\tFeatureRun,\n\tOperationKind,\n\tOperationRecord,\n\tPlan,\n\tReviewAssignment,\n\tReviewFinding,\n\tReviewResult,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tSourceDigest,\n\tValidationObservation,\n\tValidationScope,\n} from \"./session.js\";\nimport { reviewResultSemanticIssues } from \"./session.js\";\n\nexport type TransitionEnvironment = Readonly<{\n\tnewId: (kind: \"session\" | \"run\" | \"validation\" | \"review\") => string;\n}>;\n\nexport class FlowTransitionError extends Error {\n\treadonly code = \"FLOW_TRANSITION_REJECTED\";\n}\n\nexport type MutationResult<T> = Readonly<{\n\tsession: Session;\n\tvalue: T;\n\treplayed: boolean;\n}>;\n\nexport type PlanSaveInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tgoal: string;\n\tplan: Plan;\n}>;\n\nexport type GuardedFeatureInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tfeatureId: FeatureId;\n}>;\n\nexport type ReviewStartInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tsourceDigest: SourceDigest;\n\t\tartifactsChanged: Artifact[];\n\t\tpacket: Readonly<{\n\t\t\tsummary: string;\n\t\t\triskLenses: string[];\n\t\t}>;\n\t}>;\n\nexport type FeatureCompleteInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tassignmentId: string;\n\t\tsummary: string;\n\t\tresult: Omit<ReviewResult, \"recordedRevision\">;\n\t}>;\n\nexport type SessionCloseInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tsessionId: string;\n\tkind: SessionClosure[\"kind\"];\n\tsummary: string;\n}>;\n\nfunction fail(message: string): never {\n\tthrow new FlowTransitionError(message);\n}\n\nfunction copy<T>(value: T): T {\n\treturn structuredClone(value);\n}\n\nfunction assertOperationId(operationId: string): void {\n\tif (!/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/.test(operationId)) {\n\t\tfail(\"operationId must be 1-128 stable identifier characters.\");\n\t}\n}\n\nfunction existingOperation(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n): OperationRecord | null {\n\tassertOperationId(operationId);\n\tconst existing = session.operations.find((item) => item.id === operationId);\n\tif (!existing) return null;\n\tif (\n\t\texisting.kind !== kind ||\n\t\texisting.inputDigest !== operationInputDigest(input)\n\t) {\n\t\tfail(\"operationId was already used for different work.\");\n\t}\n\treturn existing;\n}\n\nfunction assertRevision(session: Session, expectedRevision: number): void {\n\tif (expectedRevision !== session.revision) {\n\t\tfail(\n\t\t\t`Stale revision ${expectedRevision}; refresh Flow status and use revision ${session.revision}.`,\n\t\t);\n\t}\n}\n\nfunction commit(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n\tchange: (draft: Session, revision: number) => Session,\n\tentityId?: string,\n): Session {\n\tconst revision = session.revision + 1;\n\tconst draft = copy(session);\n\tconst changed = change(draft, revision);\n\treturn {\n\t\t...changed,\n\t\trevision,\n\t\toperations: [\n\t\t\t...changed.operations,\n\t\t\t{\n\t\t\t\tid: operationId,\n\t\t\t\tkind,\n\t\t\t\tinputDigest: operationInputDigest(input),\n\t\t\t\tcommittedRevision: revision,\n\t\t\t\t...(entityId ? { entityId } : {}),\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction assertMutable(session: Session): void {\n\tif (session.closure) fail(\"This Flow session is closed and archive-only.\");\n}\n\nfunction assertPlan(plan: Plan): void {\n\tconst issue = planIssue(plan);\n\tif (issue) fail(issue);\n}\n\nfunction assertArtifacts(artifacts: readonly Artifact[]): void {\n\tconst issue = artifactIssues(artifacts)[0];\n\tif (issue) fail(issue);\n}\n\nfunction currentRun(session: Session, featureId: string): FeatureRun | null {\n\treturn (\n\t\t[...session.runs]\n\t\t\t.reverse()\n\t\t\t.find(\n\t\t\t\t(run) => run.featureId === featureId && run.state !== \"superseded\",\n\t\t\t) ?? null\n\t);\n}\n\nexport function activeRun(session: Session): FeatureRun | null {\n\treturn session.runs.find((run) => run.state === \"active\") ?? null;\n}\n\nexport function isFeatureComplete(\n\tsession: Session,\n\tfeatureId: string,\n): boolean {\n\treturn currentRun(session, featureId)?.state === \"completed\";\n}\n\nexport function sessionStatus(session: Session): SessionStatus {\n\tif (session.closure) return \"closed\";\n\tif (!session.plan || session.approval === \"pending\") return \"planning\";\n\tif (activeRun(session)) return \"running\";\n\tif (\n\t\tsession.plan.features.some(\n\t\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t\t)\n\t) {\n\t\treturn \"blocked\";\n\t}\n\tif (\n\t\tsession.plan.features.every((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t)\n\t) {\n\t\treturn \"completed\";\n\t}\n\treturn \"ready\";\n}\n\nexport function savePlan(\n\tsession: Session | null,\n\tinput: PlanSaveInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<null> {\n\tassertPlan(input.plan);\n\tif (!session) {\n\t\tif (input.expectedRevision !== 0) {\n\t\t\tfail(\"A new Flow session must start from expectedRevision 0.\");\n\t\t}\n\t\tconst sessionId = environment.newId(\"session\");\n\t\tif (sessionId.length > MAX_SESSION_ID_LENGTH)\n\t\t\tfail(\"Generated session id is too long.\");\n\t\tconst initial: Session = {\n\t\t\tversion: 5,\n\t\t\tid: sessionId,\n\t\t\trevision: 0,\n\t\t\tgoal: input.goal,\n\t\t\tapproval: \"pending\",\n\t\t\tplan: null,\n\t\t\truns: [],\n\t\t\toperations: [],\n\t\t\tclosure: null,\n\t\t};\n\t\treturn {\n\t\t\tsession: commit(\n\t\t\t\tinitial,\n\t\t\t\t\"plan-save\",\n\t\t\t\tinput.operationId,\n\t\t\t\tinput,\n\t\t\t\t(draft) => ({\n\t\t\t\t\t...draft,\n\t\t\t\t\tplan: copy(input.plan),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvalue: null,\n\t\t\treplayed: false,\n\t\t};\n\t}\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-save\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (session.approval === \"approved\") fail(\"An approved plan is immutable.\");\n\tif (session.goal !== input.goal) {\n\t\tfail(\"Close the active session before starting a different goal.\");\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-save\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tplan: copy(input.plan),\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nexport function approvePlan(\n\tsession: Session,\n\tinput: Readonly<{ operationId: string; expectedRevision: number }>,\n): MutationResult<null> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-approve\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan) fail(\"Save a plan before approving it.\");\n\tif (session.approval === \"approved\") fail(\"The plan is already approved.\");\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-approve\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tapproval: \"approved\",\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nfunction nextRunnableFeature(session: Session): FeatureId | null {\n\tif (!session.plan) return null;\n\tfor (const feature of session.plan.features) {\n\t\tconst state = currentRun(session, feature.id)?.state;\n\t\tif (state === \"completed\") continue;\n\t\tif (state === \"blocked\") continue;\n\t\tif (feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\t\treturn feature.id;\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function startRun(\n\tsession: Session,\n\tinput: Readonly<{\n\t\toperationId: string;\n\t\texpectedRevision: number;\n\t\tfeatureId?: FeatureId | undefined;\n\t}>,\n\tenvironment: TransitionEnvironment,\n): MutationResult<FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Approve a plan before starting execution.\");\n\t}\n\tif (activeRun(session)) fail(\"Only one feature run may be active.\");\n\tconst blocked = session.plan.features.find(\n\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t);\n\tif (blocked) {\n\t\tfail(`Reset blocked feature '${blocked.id}' before starting another run.`);\n\t}\n\tconst featureId = input.featureId ?? nextRunnableFeature(session);\n\tif (!featureId) fail(\"No runnable feature is available.\");\n\tconst feature = session.plan.features.find((item) => item.id === featureId);\n\tif (!feature) fail(`Unknown feature '${featureId}'.`);\n\tconst existing = currentRun(session, featureId);\n\tif (existing?.state === \"completed\")\n\t\tfail(`Feature '${featureId}' is complete.`);\n\tif (existing?.state === \"blocked\") {\n\t\tfail(`Reset blocked feature '${featureId}' before retrying it.`);\n\t}\n\tif (!feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\tfail(`Feature '${featureId}' has incomplete dependencies.`);\n\t}\n\tconst runId = environment.newId(\"run\");\n\tconst attempt =\n\t\tsession.runs.filter((run) => run.featureId === featureId).length + 1;\n\tlet created: FeatureRun | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: runId,\n\t\t\t\tfeatureId,\n\t\t\t\tattempt,\n\t\t\t\tstate: \"active\",\n\t\t\t\tstartedRevision: revision,\n\t\t\t\tsummary: null,\n\t\t\t\tartifactsChanged: [],\n\t\t\t\tvalidations: [],\n\t\t\t\treviews: [],\n\t\t\t};\n\t\t\treturn { ...draft, runs: [...draft.runs, created] };\n\t\t},\n\t\trunId,\n\t);\n\tif (!created) fail(\"Flow could not create the feature run.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nexport function recordValidation(\n\tsession: Session,\n\tinput: Readonly<{\n\t\tcaptureId: string;\n\t\tfeatureId: FeatureId;\n\t\trunId: string;\n\t\tscope: ValidationScope;\n\t\tcommand: string;\n\t\tsourceDigest: SourceDigest;\n\t\texitCode: number;\n\t\toutputDigest: SourceDigest;\n\t\toutputComplete: boolean;\n\t}>,\n): MutationResult<ValidationObservation> {\n\tif (input.captureId.length < 1 || input.captureId.length > 256) {\n\t\tfail(\"Validation capture id must contain 1-256 characters.\");\n\t}\n\tconst prior = session.runs\n\t\t.flatMap((run) => run.validations)\n\t\t.find((validation) => validation.id === input.captureId);\n\tif (prior) {\n\t\tif (\n\t\t\tprior.featureId !== input.featureId ||\n\t\t\tprior.runId !== input.runId ||\n\t\t\tprior.scope !== input.scope ||\n\t\t\tprior.command !== input.command ||\n\t\t\tprior.sourceDigest !== input.sourceDigest ||\n\t\t\tprior.exitCode !== input.exitCode ||\n\t\t\tprior.outputDigest !== input.outputDigest ||\n\t\t\tprior.outputComplete !== input.outputComplete\n\t\t) {\n\t\t\tfail(\n\t\t\t\t\"Validation capture id was already used for a different observation.\",\n\t\t\t);\n\t\t}\n\t\treturn { session, value: prior, replayed: true };\n\t}\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.id !== input.runId || run.featureId !== input.featureId) {\n\t\tfail(\"Validation no longer belongs to the active feature run.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Validation cannot be recorded after review has begun.\");\n\t}\n\tif (run.validations.length >= MAX_VALIDATIONS_PER_RUN) {\n\t\tfail(\n\t\t\t`A feature run may contain at most ${MAX_VALIDATIONS_PER_RUN} validation observations.`,\n\t\t);\n\t}\n\tconst revision = session.revision + 1;\n\tconst observation: ValidationObservation = {\n\t\tid: input.captureId,\n\t\tfeatureId: input.featureId,\n\t\trunId: input.runId,\n\t\tscope: input.scope,\n\t\tcommand: input.command,\n\t\tsourceDigest: input.sourceDigest,\n\t\texitCode: input.exitCode,\n\t\toutputDigest: input.outputDigest,\n\t\toutputComplete: input.outputComplete,\n\t\trecordedRevision: revision,\n\t};\n\tconst draft = copy(session);\n\tconst runs = draft.runs.map((item) =>\n\t\titem.id === run.id\n\t\t\t? { ...item, validations: [...item.validations, observation] }\n\t\t\t: item,\n\t);\n\treturn {\n\t\tsession: { ...draft, revision, runs },\n\t\tvalue: observation,\n\t\treplayed: false,\n\t};\n}\n\nfunction isFinalFeatureRun(session: Session, run: FeatureRun): boolean {\n\tif (!session.plan) return false;\n\treturn session.plan.features.every(\n\t\t(feature) =>\n\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t);\n}\n\nexport function startReview(\n\tsession: Session,\n\tinput: ReviewStartInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<ReviewAssignment> {\n\tassertArtifacts(input.artifactsChanged);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst assignment = session.runs\n\t\t\t.flatMap((run) => run.reviews)\n\t\t\t.find((review) => review.id === replay.entityId);\n\t\tif (!assignment) fail(\"The replayed review assignment no longer exists.\");\n\t\treturn { session, value: assignment, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Review must target the active feature run.\");\n\t}\n\tif (run.reviews.some((review) => review.result === null)) {\n\t\tfail(\"The active run already has a pending review assignment.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Reset the feature before starting another full review.\");\n\t}\n\tconst kind = isFinalFeatureRun(session, run) ? \"final\" : \"feature\";\n\tconst applicable = run.validations.filter(\n\t\t(validation) =>\n\t\t\tvalidation.exitCode === 0 &&\n\t\t\tvalidation.outputComplete &&\n\t\t\tvalidation.sourceDigest === input.sourceDigest &&\n\t\t\t(kind === \"feature\" || validation.scope === \"broad\"),\n\t);\n\tif (applicable.length === 0) {\n\t\tfail(\n\t\t\tkind === \"final\"\n\t\t\t\t? \"Final review requires passing broad validation for the current workspace content.\"\n\t\t\t\t: \"Review requires passing validation for the current workspace content.\",\n\t\t);\n\t}\n\tconst assignmentId = environment.newId(\"review\");\n\tlet created: ReviewAssignment | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: assignmentId,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\tfeatureId: input.featureId,\n\t\t\t\trunId: run.id,\n\t\t\t\tkind,\n\t\t\t\tsourceDigest: input.sourceDigest,\n\t\t\t\tvalidationIds: applicable.map((validation) => validation.id),\n\t\t\t\tpacket: {\n\t\t\t\t\tsummary: input.packet.summary,\n\t\t\t\t\triskLenses: [...input.packet.riskLenses],\n\t\t\t\t},\n\t\t\t\tcreatedRevision: revision,\n\t\t\t\tresult: null,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((item) =>\n\t\t\t\t\titem.id === run.id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\tartifactsChanged: input.artifactsChanged.map((artifact) => ({\n\t\t\t\t\t\t\t\t\t...artifact,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\treviews: [...item.reviews, created as ReviewAssignment],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: item,\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\tassignmentId,\n\t);\n\tif (!created) fail(\"Flow could not create the review assignment.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction assertReviewResult(\n\tresult: Omit<ReviewResult, \"recordedRevision\">,\n): void {\n\tif (result.findings.length > MAX_REVIEW_FINDINGS) {\n\t\tfail(`A review may contain at most ${MAX_REVIEW_FINDINGS} findings.`);\n\t}\n\tconst issue = reviewResultSemanticIssues(result)[0];\n\tif (issue) fail(issue.message);\n}\n\nexport function completeFeature(\n\tsession: Session,\n\tinput: FeatureCompleteInput,\n): MutationResult<FeatureRun> {\n\tassertReviewResult(input.result);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed feature run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Completion must target the active feature run.\");\n\t}\n\tconst assignment = run.reviews.find(\n\t\t(review) => review.id === input.assignmentId,\n\t);\n\tif (!assignment || assignment.result) {\n\t\tfail(\"Completion requires the active pending review assignment.\");\n\t}\n\tconst next = commit(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => ({\n\t\t\t...draft,\n\t\t\truns: draft.runs.map((item) => {\n\t\t\t\tif (item.id !== run.id) return item;\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tstate: input.result.verdict === \"passed\" ? \"completed\" : \"blocked\",\n\t\t\t\t\tsummary: input.summary,\n\t\t\t\t\treviews: item.reviews.map((review) =>\n\t\t\t\t\t\treview.id === assignment.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...review,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t...input.result,\n\t\t\t\t\t\t\t\t\t\tfindings: input.result.findings.map(\n\t\t\t\t\t\t\t\t\t\t\t(finding: ReviewFinding) => ({ ...finding }),\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\trecordedRevision: revision,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: review,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t}),\n\t\trun.id,\n\t);\n\tconst completed = next.runs.find((item) => item.id === run.id);\n\tif (!completed) fail(\"Flow could not update the feature run.\");\n\treturn { session: next, value: completed, replayed: false };\n}\n\nfunction dependentClosure(plan: Plan, featureId: string): Set<string> {\n\tconst affected = new Set([featureId]);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const feature of plan.features) {\n\t\t\tif (\n\t\t\t\t!affected.has(feature.id) &&\n\t\t\t\tfeature.dependsOn.some((dependency) => affected.has(dependency))\n\t\t\t) {\n\t\t\t\taffected.add(feature.id);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn affected;\n}\n\nexport function resetFeature(\n\tsession: Session,\n\tinput: GuardedFeatureInput,\n): MutationResult<string[]> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-reset\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.plan) fail(\"The replayed reset has no approved plan.\");\n\t\treturn {\n\t\t\tsession,\n\t\t\tvalue: [...dependentClosure(session.plan, input.featureId)],\n\t\t\treplayed: true,\n\t\t};\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Reset requires an approved plan.\");\n\t}\n\tif (\n\t\t!session.plan.features.some((feature) => feature.id === input.featureId)\n\t) {\n\t\tfail(`Unknown feature '${input.featureId}'.`);\n\t}\n\tconst selected = currentRun(session, input.featureId);\n\tif (\n\t\t!selected ||\n\t\t(selected.state !== \"active\" && selected.state !== \"blocked\")\n\t) {\n\t\tfail(\"Reset requires an active or blocked feature run.\");\n\t}\n\tconst affected = dependentClosure(session.plan, input.featureId);\n\tconst ids = [...affected];\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"feature-reset\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\taffected.has(run.featureId) && run.state !== \"superseded\"\n\t\t\t\t\t\t? { ...run, state: \"superseded\" }\n\t\t\t\t\t\t: run,\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tvalue: ids,\n\t\treplayed: false,\n\t};\n}\n\nexport function closeSession(\n\tsession: Session,\n\tinput: SessionCloseInput,\n): MutationResult<SessionClosure> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.closure) fail(\"The replayed closure is missing.\");\n\t\treturn { session, value: session.closure, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tif (session.id !== input.sessionId)\n\t\tfail(\"sessionId does not match active state.\");\n\tassertMutable(session);\n\tif (input.kind === \"completed\" && sessionStatus(session) !== \"completed\") {\n\t\tfail(\"A completed close requires every planned feature to pass review.\");\n\t}\n\tlet closure: SessionClosure | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tclosure = {\n\t\t\t\tkind: input.kind,\n\t\t\t\tsummary: input.summary,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\trecordedRevision: revision,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\trun.state === \"active\" ? { ...run, state: \"superseded\" } : run,\n\t\t\t\t),\n\t\t\t\tclosure,\n\t\t\t};\n\t\t},\n\t);\n\tif (!closure) fail(\"Flow could not record the closure.\");\n\treturn { session: next, value: closure, replayed: false };\n}\n\nfunction featurePassedBefore(\n\tsession: Session,\n\tfeatureId: string,\n\trevision: number,\n): boolean {\n\treturn session.runs.some(\n\t\t(run) =>\n\t\t\trun.featureId === featureId &&\n\t\t\trun.reviews.some(\n\t\t\t\t(review) =>\n\t\t\t\t\treview.result?.verdict === \"passed\" &&\n\t\t\t\t\treview.result.recordedRevision < revision,\n\t\t\t),\n\t);\n}\n\nexport function sessionInvariantIssues(session: Session): string[] {\n\tconst issues: string[] = [];\n\tif (session.version !== 5) issues.push(\"Session version must be 5.\");\n\tif (!Number.isSafeInteger(session.revision) || session.revision < 0) {\n\t\tissues.push(\"Session revision must be a nonnegative safe integer.\");\n\t}\n\tconst operationIds = new Set<string>();\n\tfor (const operation of session.operations) {\n\t\tif (operationIds.has(operation.id)) {\n\t\t\tissues.push(`Duplicate operation id '${operation.id}'.`);\n\t\t}\n\t\toperationIds.add(operation.id);\n\t\tif (\n\t\t\toperation.committedRevision < 1 ||\n\t\t\toperation.committedRevision > session.revision\n\t\t) {\n\t\t\tissues.push(`Operation '${operation.id}' has an invalid revision.`);\n\t\t}\n\t}\n\tif (session.closure) {\n\t\tconst closureIssue = closureOperationIssue(session);\n\t\tif (closureIssue) issues.push(closureIssue);\n\t\tif (session.closure.kind === \"completed\" && !session.plan) {\n\t\t\tissues.push(\"A completed closure requires a plan.\");\n\t\t}\n\t}\n\tif (!session.plan) {\n\t\tif (session.approval === \"approved\")\n\t\t\tissues.push(\"Approval requires a plan.\");\n\t\tif (session.runs.length > 0) issues.push(\"Runs require a plan.\");\n\t\treturn issues;\n\t}\n\ttry {\n\t\tassertPlan(session.plan);\n\t} catch (error) {\n\t\tissues.push(error instanceof Error ? error.message : String(error));\n\t}\n\tconst featureIds = new Set(\n\t\tsession.plan.features.map((feature) => feature.id),\n\t);\n\tconst runIds = new Set<string>();\n\tconst validationIds = new Set<string>();\n\tconst reviewIds = new Set<string>();\n\tlet activeCount = 0;\n\tfor (const run of session.runs) {\n\t\tif (runIds.has(run.id)) issues.push(`Duplicate run id '${run.id}'.`);\n\t\trunIds.add(run.id);\n\t\tif (!featureIds.has(run.featureId))\n\t\t\tissues.push(`Run '${run.id}' has unknown feature.`);\n\t\tif (run.startedRevision < 1 || run.startedRevision > session.revision) {\n\t\t\tissues.push(`Run '${run.id}' has an invalid start revision.`);\n\t\t}\n\t\tif (run.reviews.length > 1) {\n\t\t\tissues.push(`Run '${run.id}' has more than one review.`);\n\t\t}\n\t\tif (run.validations.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\tissues.push(\n\t\t\t\t`Run '${run.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validations.`,\n\t\t\t);\n\t\t}\n\t\tfor (const issue of artifactIssues(run.artifactsChanged)) {\n\t\t\tissues.push(`Run '${run.id}': ${issue}`);\n\t\t}\n\t\tif (run.state === \"active\") activeCount += 1;\n\t\tconst runValidationIds = new Set<string>();\n\t\tfor (const validation of run.validations) {\n\t\t\tif (validationIds.has(validation.id)) {\n\t\t\t\tissues.push(`Duplicate validation id '${validation.id}'.`);\n\t\t\t}\n\t\t\tvalidationIds.add(validation.id);\n\t\t\trunValidationIds.add(validation.id);\n\t\t\tif (\n\t\t\t\tvalidation.runId !== run.id ||\n\t\t\t\tvalidation.featureId !== run.featureId\n\t\t\t) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Validation '${validation.id}' is attached to the wrong run.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (validation.recordedRevision > session.revision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' is from a future revision.`);\n\t\t\t}\n\t\t\tif (validation.recordedRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' predates its run.`);\n\t\t\t}\n\t\t}\n\t\tfor (const review of run.reviews) {\n\t\t\tif (reviewIds.has(review.id))\n\t\t\t\tissues.push(`Duplicate review id '${review.id}'.`);\n\t\t\treviewIds.add(review.id);\n\t\t\tif (review.runId !== run.id || review.featureId !== run.featureId) {\n\t\t\t\tissues.push(`Review '${review.id}' is attached to the wrong run.`);\n\t\t\t}\n\t\t\tconst uniqueReferences = new Set(review.validationIds);\n\t\t\tif (review.validationIds.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Review '${review.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validation references.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (uniqueReferences.size !== review.validationIds.length) {\n\t\t\t\tissues.push(`Review '${review.id}' repeats validation references.`);\n\t\t\t}\n\t\t\tif (review.validationIds.some((id) => !runValidationIds.has(id))) {\n\t\t\t\tissues.push(`Review '${review.id}' references unknown validation.`);\n\t\t\t}\n\t\t\tconst referenced = run.validations.filter((validation) =>\n\t\t\t\tuniqueReferences.has(validation.id),\n\t\t\t);\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) =>\n\t\t\t\t\t\tvalidation.exitCode !== 0 ||\n\t\t\t\t\t\t!validation.outputComplete ||\n\t\t\t\t\t\tvalidation.sourceDigest !== review.sourceDigest,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' uses inapplicable validation.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treview.kind === \"final\" &&\n\t\t\t\t!referenced.some((validation) => validation.scope === \"broad\")\n\t\t\t) {\n\t\t\t\tissues.push(`Final review '${review.id}' lacks broad validation.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treview.createdRevision < 1 ||\n\t\t\t\treview.createdRevision > session.revision\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' has an invalid creation revision.`);\n\t\t\t}\n\t\t\tif (review.createdRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Review '${review.id}' predates its run.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) => validation.recordedRevision >= review.createdRevision,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' references later validation.`);\n\t\t\t}\n\t\t\tconst expectedKind = session.plan.features.every(\n\t\t\t\t(feature) =>\n\t\t\t\t\tfeature.id === run.featureId ||\n\t\t\t\t\tfeaturePassedBefore(session, feature.id, review.createdRevision),\n\t\t\t)\n\t\t\t\t? \"final\"\n\t\t\t\t: \"feature\";\n\t\t\tif (review.kind !== expectedKind) {\n\t\t\t\tissues.push(`Review '${review.id}' has the wrong derived kind.`);\n\t\t\t}\n\t\t\tif (review.result) {\n\t\t\t\tif (\n\t\t\t\t\treview.result.recordedRevision <= review.createdRevision ||\n\t\t\t\t\treview.result.recordedRevision > session.revision\n\t\t\t\t) {\n\t\t\t\t\tissues.push(`Review '${review.id}' has an invalid result revision.`);\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tassertReviewResult(review.result);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tissues.push(error instanceof Error ? error.message : String(error));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst last = run.reviews.at(-1);\n\t\tif (run.state === \"active\" && (run.summary !== null || last?.result)) {\n\t\t\tissues.push(`Active run '${run.id}' contains a recorded outcome.`);\n\t\t}\n\t\tif (run.state === \"completed\" && last?.result?.verdict !== \"passed\") {\n\t\t\tissues.push(`Completed run '${run.id}' lacks a passing review.`);\n\t\t}\n\t\tif (run.state === \"blocked\" && last?.result?.verdict !== \"failed\") {\n\t\t\tissues.push(`Blocked run '${run.id}' lacks a failed review.`);\n\t\t}\n\t\tif (run.state === \"superseded\" && last?.result?.verdict === \"passed\") {\n\t\t\tissues.push(`Superseded run '${run.id}' cannot retain a passing review.`);\n\t\t}\n\t}\n\tif (activeCount > 1) issues.push(\"Only one run may be active.\");\n\tif (session.closure) {\n\t\tif (activeCount > 0)\n\t\t\tissues.push(\"A closed session cannot retain active work.\");\n\t\tif (\n\t\t\tsession.closure.kind === \"completed\" &&\n\t\t\tsession.plan.features.some(\n\t\t\t\t(feature) => !isFeatureComplete(session, feature.id),\n\t\t\t)\n\t\t) {\n\t\t\tissues.push(\"A completed closure requires every feature to be complete.\");\n\t\t}\n\t}\n\treturn issues;\n}\n",
|
|
15
|
+
"import { artifactIssues } from \"./artifact.js\";\nimport {\n\tMAX_REVIEW_FINDINGS,\n\tMAX_SESSION_ID_LENGTH,\n\tMAX_VALIDATIONS_PER_RUN,\n} from \"./limits.js\";\nimport { closureOperationIssue, operationInputDigest } from \"./operation.js\";\nimport { planIssue } from \"./plan.js\";\nimport type {\n\tArtifact,\n\tFeatureId,\n\tFeatureRun,\n\tOperationKind,\n\tOperationRecord,\n\tPlan,\n\tReviewAssignment,\n\tReviewFinding,\n\tReviewResult,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tSourceDigest,\n\tValidationObservation,\n\tValidationScope,\n} from \"./session.js\";\nimport { reviewResultSemanticIssues } from \"./session.js\";\n\nexport type TransitionEnvironment = Readonly<{\n\tnewId: (kind: \"session\" | \"run\" | \"validation\" | \"review\") => string;\n}>;\n\nexport class FlowTransitionError extends Error {\n\treadonly code = \"FLOW_TRANSITION_REJECTED\";\n}\n\nexport type MutationResult<T> = Readonly<{\n\tsession: Session;\n\tvalue: T;\n\treplayed: boolean;\n}>;\n\nexport type PlanSaveInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tgoal: string;\n\tplan: Plan;\n}>;\n\nexport type GuardedFeatureInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tfeatureId: FeatureId;\n}>;\n\nexport type ReviewStartInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tsourceDigest: SourceDigest;\n\t\tartifactsChanged: Artifact[];\n\t\tpacket: Readonly<{\n\t\t\tsummary: string;\n\t\t\triskLenses: string[];\n\t\t}>;\n\t}>;\n\nexport type FeatureCompleteInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tassignmentId: string;\n\t\tsummary: string;\n\t\tresult: Omit<ReviewResult, \"recordedRevision\">;\n\t}>;\n\nexport type SessionCloseInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tsessionId: string;\n\tkind: SessionClosure[\"kind\"];\n\tsummary: string;\n}>;\n\nfunction fail(message: string): never {\n\tthrow new FlowTransitionError(message);\n}\n\nfunction copy<T>(value: T): T {\n\treturn structuredClone(value);\n}\n\nfunction assertOperationId(operationId: string): void {\n\tif (!/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/.test(operationId)) {\n\t\tfail(\"operationId must be 1-128 stable identifier characters.\");\n\t}\n}\n\nfunction existingOperation(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n): OperationRecord | null {\n\tassertOperationId(operationId);\n\tconst existing = session.operations.find((item) => item.id === operationId);\n\tif (!existing) return null;\n\tif (\n\t\texisting.kind !== kind ||\n\t\texisting.inputDigest !== operationInputDigest(input)\n\t) {\n\t\tfail(\"operationId was already used for different work.\");\n\t}\n\treturn existing;\n}\n\nfunction assertRevision(session: Session, expectedRevision: number): void {\n\tif (expectedRevision !== session.revision) {\n\t\tfail(\n\t\t\t`Stale revision ${expectedRevision}; refresh Flow status and use revision ${session.revision}.`,\n\t\t);\n\t}\n}\n\nfunction commit(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n\tchange: (draft: Session, revision: number) => Session,\n\tentityId?: string,\n): Session {\n\tconst revision = session.revision + 1;\n\tconst draft = copy(session);\n\tconst changed = change(draft, revision);\n\treturn {\n\t\t...changed,\n\t\trevision,\n\t\toperations: [\n\t\t\t...changed.operations,\n\t\t\t{\n\t\t\t\tid: operationId,\n\t\t\t\tkind,\n\t\t\t\tinputDigest: operationInputDigest(input),\n\t\t\t\tcommittedRevision: revision,\n\t\t\t\t...(entityId ? { entityId } : {}),\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction assertMutable(session: Session): void {\n\tif (session.closure) fail(\"This Flow session is closed and archive-only.\");\n}\n\nfunction assertPlan(plan: Plan): void {\n\tconst issue = planIssue(plan);\n\tif (issue) fail(issue);\n}\n\nfunction assertArtifacts(artifacts: readonly Artifact[]): void {\n\tconst issue = artifactIssues(artifacts)[0];\n\tif (issue) fail(issue);\n}\n\nfunction currentRun(session: Session, featureId: string): FeatureRun | null {\n\treturn (\n\t\t[...session.runs]\n\t\t\t.reverse()\n\t\t\t.find(\n\t\t\t\t(run) => run.featureId === featureId && run.state !== \"superseded\",\n\t\t\t) ?? null\n\t);\n}\n\nexport function activeRun(session: Session): FeatureRun | null {\n\treturn session.runs.find((run) => run.state === \"active\") ?? null;\n}\n\nexport function isFeatureComplete(\n\tsession: Session,\n\tfeatureId: string,\n): boolean {\n\treturn currentRun(session, featureId)?.state === \"completed\";\n}\n\nexport function sessionStatus(session: Session): SessionStatus {\n\tif (session.closure) return \"closed\";\n\tif (!session.plan || session.approval === \"pending\") return \"planning\";\n\tif (activeRun(session)) return \"running\";\n\tif (\n\t\tsession.plan.features.some(\n\t\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t\t)\n\t) {\n\t\treturn \"blocked\";\n\t}\n\tif (\n\t\tsession.plan.features.every((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t)\n\t) {\n\t\treturn \"completed\";\n\t}\n\treturn \"ready\";\n}\n\nexport function savePlan(\n\tsession: Session | null,\n\tinput: PlanSaveInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<null> {\n\tassertPlan(input.plan);\n\tif (!session) {\n\t\tif (input.expectedRevision !== 0) {\n\t\t\tfail(\"A new Flow session must start from expectedRevision 0.\");\n\t\t}\n\t\tconst sessionId = environment.newId(\"session\");\n\t\tif (sessionId.length > MAX_SESSION_ID_LENGTH)\n\t\t\tfail(\"Generated session id is too long.\");\n\t\tconst initial: Session = {\n\t\t\tversion: 5,\n\t\t\tid: sessionId,\n\t\t\trevision: 0,\n\t\t\tgoal: input.goal,\n\t\t\tapproval: \"pending\",\n\t\t\tplan: null,\n\t\t\truns: [],\n\t\t\toperations: [],\n\t\t\tclosure: null,\n\t\t};\n\t\treturn {\n\t\t\tsession: commit(\n\t\t\t\tinitial,\n\t\t\t\t\"plan-save\",\n\t\t\t\tinput.operationId,\n\t\t\t\tinput,\n\t\t\t\t(draft) => ({\n\t\t\t\t\t...draft,\n\t\t\t\t\tplan: copy(input.plan),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvalue: null,\n\t\t\treplayed: false,\n\t\t};\n\t}\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-save\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (session.approval === \"approved\") fail(\"An approved plan is immutable.\");\n\tif (session.goal !== input.goal) {\n\t\tfail(\"Close the active session before starting a different goal.\");\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-save\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tplan: copy(input.plan),\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nexport function approvePlan(\n\tsession: Session,\n\tinput: Readonly<{ operationId: string; expectedRevision: number }>,\n): MutationResult<null> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-approve\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan) fail(\"Save a plan before approving it.\");\n\tif (session.approval === \"approved\") fail(\"The plan is already approved.\");\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-approve\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tapproval: \"approved\",\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nfunction nextRunnableFeature(session: Session): FeatureId | null {\n\tif (!session.plan) return null;\n\tfor (const feature of session.plan.features) {\n\t\tconst state = currentRun(session, feature.id)?.state;\n\t\tif (state === \"completed\") continue;\n\t\tif (state === \"blocked\") continue;\n\t\tif (feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\t\treturn feature.id;\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function startRun(\n\tsession: Session,\n\tinput: Readonly<{\n\t\toperationId: string;\n\t\texpectedRevision: number;\n\t\tfeatureId?: FeatureId | undefined;\n\t}>,\n\tenvironment: TransitionEnvironment,\n): MutationResult<FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Approve a plan before starting execution.\");\n\t}\n\tif (activeRun(session)) fail(\"Only one feature run may be active.\");\n\tconst blocked = session.plan.features.find(\n\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t);\n\tif (blocked) {\n\t\tfail(`Reset blocked feature '${blocked.id}' before starting another run.`);\n\t}\n\tconst featureId = input.featureId ?? nextRunnableFeature(session);\n\tif (!featureId) fail(\"No runnable feature is available.\");\n\tconst feature = session.plan.features.find((item) => item.id === featureId);\n\tif (!feature) fail(`Unknown feature '${featureId}'.`);\n\tconst existing = currentRun(session, featureId);\n\tif (existing?.state === \"completed\")\n\t\tfail(`Feature '${featureId}' is complete.`);\n\tif (existing?.state === \"blocked\") {\n\t\tfail(`Reset blocked feature '${featureId}' before retrying it.`);\n\t}\n\tif (!feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\tfail(`Feature '${featureId}' has incomplete dependencies.`);\n\t}\n\tconst runId = environment.newId(\"run\");\n\tconst attempt =\n\t\tsession.runs.filter((run) => run.featureId === featureId).length + 1;\n\tlet created: FeatureRun | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: runId,\n\t\t\t\tfeatureId,\n\t\t\t\tattempt,\n\t\t\t\tstate: \"active\",\n\t\t\t\tstartedRevision: revision,\n\t\t\t\tsummary: null,\n\t\t\t\tartifactsChanged: [],\n\t\t\t\tvalidations: [],\n\t\t\t\treviews: [],\n\t\t\t};\n\t\t\treturn { ...draft, runs: [...draft.runs, created] };\n\t\t},\n\t\trunId,\n\t);\n\tif (!created) fail(\"Flow could not create the feature run.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nexport function recordValidation(\n\tsession: Session,\n\tinput: Readonly<{\n\t\tcaptureId: string;\n\t\tfeatureId: FeatureId;\n\t\trunId: string;\n\t\tscope: ValidationScope;\n\t\tcommand: string;\n\t\tsourceDigest: SourceDigest;\n\t\texitCode: number;\n\t\toutputDigest: SourceDigest;\n\t\toutputComplete: boolean;\n\t}>,\n): MutationResult<ValidationObservation> {\n\tif (input.captureId.length < 1 || input.captureId.length > 256) {\n\t\tfail(\"Validation capture id must contain 1-256 characters.\");\n\t}\n\tconst prior = session.runs\n\t\t.flatMap((run) => run.validations)\n\t\t.find((validation) => validation.id === input.captureId);\n\tif (prior) {\n\t\tif (\n\t\t\tprior.featureId !== input.featureId ||\n\t\t\tprior.runId !== input.runId ||\n\t\t\tprior.scope !== input.scope ||\n\t\t\tprior.command !== input.command ||\n\t\t\tprior.sourceDigest !== input.sourceDigest ||\n\t\t\tprior.exitCode !== input.exitCode ||\n\t\t\tprior.outputDigest !== input.outputDigest ||\n\t\t\tprior.outputComplete !== input.outputComplete\n\t\t) {\n\t\t\tfail(\n\t\t\t\t\"Validation capture id was already used for a different observation.\",\n\t\t\t);\n\t\t}\n\t\treturn { session, value: prior, replayed: true };\n\t}\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.id !== input.runId || run.featureId !== input.featureId) {\n\t\tfail(\"Validation no longer belongs to the active feature run.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Validation cannot be recorded after review has begun.\");\n\t}\n\tif (run.validations.length >= MAX_VALIDATIONS_PER_RUN) {\n\t\tfail(\n\t\t\t`A feature run may contain at most ${MAX_VALIDATIONS_PER_RUN} validation observations.`,\n\t\t);\n\t}\n\tconst revision = session.revision + 1;\n\tconst observation: ValidationObservation = {\n\t\tid: input.captureId,\n\t\tfeatureId: input.featureId,\n\t\trunId: input.runId,\n\t\tscope: input.scope,\n\t\tcommand: input.command,\n\t\tsourceDigest: input.sourceDigest,\n\t\texitCode: input.exitCode,\n\t\toutputDigest: input.outputDigest,\n\t\toutputComplete: input.outputComplete,\n\t\trecordedRevision: revision,\n\t};\n\tconst draft = copy(session);\n\tconst runs = draft.runs.map((item) =>\n\t\titem.id === run.id\n\t\t\t? { ...item, validations: [...item.validations, observation] }\n\t\t\t: item,\n\t);\n\treturn {\n\t\tsession: { ...draft, revision, runs },\n\t\tvalue: observation,\n\t\treplayed: false,\n\t};\n}\n\nfunction isFinalFeatureRun(session: Session, run: FeatureRun): boolean {\n\tif (!session.plan) return false;\n\treturn session.plan.features.every(\n\t\t(feature) =>\n\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t);\n}\n\nexport function startReview(\n\tsession: Session,\n\tinput: ReviewStartInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<ReviewAssignment> {\n\tassertArtifacts(input.artifactsChanged);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst assignment = session.runs\n\t\t\t.flatMap((run) => run.reviews)\n\t\t\t.find((review) => review.id === replay.entityId);\n\t\tif (!assignment) fail(\"The replayed review assignment no longer exists.\");\n\t\treturn { session, value: assignment, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Review must target the active feature run.\");\n\t}\n\tif (run.reviews.some((review) => review.result === null)) {\n\t\tfail(\"The active run already has a pending review assignment.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Reset the feature before starting another full review.\");\n\t}\n\tconst kind = isFinalFeatureRun(session, run) ? \"final\" : \"feature\";\n\tconst applicable = run.validations.filter(\n\t\t(validation) =>\n\t\t\tvalidation.exitCode === 0 &&\n\t\t\tvalidation.outputComplete &&\n\t\t\tvalidation.sourceDigest === input.sourceDigest,\n\t);\n\tconst hasRequiredValidation =\n\t\tkind === \"feature\"\n\t\t\t? applicable.length > 0\n\t\t\t: applicable.some((validation) => validation.scope === \"broad\");\n\tif (!hasRequiredValidation) {\n\t\tfail(\n\t\t\tkind === \"final\"\n\t\t\t\t? \"Final review requires passing broad validation for the current workspace content.\"\n\t\t\t\t: \"Review requires passing validation for the current workspace content.\",\n\t\t);\n\t}\n\tconst assignmentId = environment.newId(\"review\");\n\tlet created: ReviewAssignment | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: assignmentId,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\tfeatureId: input.featureId,\n\t\t\t\trunId: run.id,\n\t\t\t\tkind,\n\t\t\t\tsourceDigest: input.sourceDigest,\n\t\t\t\tvalidationIds: applicable.map((validation) => validation.id),\n\t\t\t\tpacket: {\n\t\t\t\t\tsummary: input.packet.summary,\n\t\t\t\t\triskLenses: [...input.packet.riskLenses],\n\t\t\t\t},\n\t\t\t\tcreatedRevision: revision,\n\t\t\t\tresult: null,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((item) =>\n\t\t\t\t\titem.id === run.id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\tartifactsChanged: input.artifactsChanged.map((artifact) => ({\n\t\t\t\t\t\t\t\t\t...artifact,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\treviews: [...item.reviews, created as ReviewAssignment],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: item,\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\tassignmentId,\n\t);\n\tif (!created) fail(\"Flow could not create the review assignment.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction assertReviewResult(\n\tresult: Omit<ReviewResult, \"recordedRevision\">,\n): void {\n\tif (result.findings.length > MAX_REVIEW_FINDINGS) {\n\t\tfail(`A review may contain at most ${MAX_REVIEW_FINDINGS} findings.`);\n\t}\n\tconst issue = reviewResultSemanticIssues(result)[0];\n\tif (issue) fail(issue.message);\n}\n\nexport function completeFeature(\n\tsession: Session,\n\tinput: FeatureCompleteInput,\n): MutationResult<FeatureRun> {\n\tassertReviewResult(input.result);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed feature run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Completion must target the active feature run.\");\n\t}\n\tconst assignment = run.reviews.find(\n\t\t(review) => review.id === input.assignmentId,\n\t);\n\tif (!assignment || assignment.result) {\n\t\tfail(\"Completion requires the active pending review assignment.\");\n\t}\n\tconst next = commit(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => ({\n\t\t\t...draft,\n\t\t\truns: draft.runs.map((item) => {\n\t\t\t\tif (item.id !== run.id) return item;\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tstate: input.result.verdict === \"passed\" ? \"completed\" : \"blocked\",\n\t\t\t\t\tsummary: input.summary,\n\t\t\t\t\treviews: item.reviews.map((review) =>\n\t\t\t\t\t\treview.id === assignment.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...review,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t...input.result,\n\t\t\t\t\t\t\t\t\t\tfindings: input.result.findings.map(\n\t\t\t\t\t\t\t\t\t\t\t(finding: ReviewFinding) => ({ ...finding }),\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\trecordedRevision: revision,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: review,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t}),\n\t\trun.id,\n\t);\n\tconst completed = next.runs.find((item) => item.id === run.id);\n\tif (!completed) fail(\"Flow could not update the feature run.\");\n\treturn { session: next, value: completed, replayed: false };\n}\n\nfunction dependentClosure(plan: Plan, featureId: string): Set<string> {\n\tconst affected = new Set([featureId]);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const feature of plan.features) {\n\t\t\tif (\n\t\t\t\t!affected.has(feature.id) &&\n\t\t\t\tfeature.dependsOn.some((dependency) => affected.has(dependency))\n\t\t\t) {\n\t\t\t\taffected.add(feature.id);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn affected;\n}\n\nexport function resetFeature(\n\tsession: Session,\n\tinput: GuardedFeatureInput,\n): MutationResult<string[]> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-reset\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.plan) fail(\"The replayed reset has no approved plan.\");\n\t\treturn {\n\t\t\tsession,\n\t\t\tvalue: [...dependentClosure(session.plan, input.featureId)],\n\t\t\treplayed: true,\n\t\t};\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Reset requires an approved plan.\");\n\t}\n\tif (\n\t\t!session.plan.features.some((feature) => feature.id === input.featureId)\n\t) {\n\t\tfail(`Unknown feature '${input.featureId}'.`);\n\t}\n\tconst selected = currentRun(session, input.featureId);\n\tif (\n\t\t!selected ||\n\t\t(selected.state !== \"active\" && selected.state !== \"blocked\")\n\t) {\n\t\tfail(\"Reset requires an active or blocked feature run.\");\n\t}\n\tconst affected = dependentClosure(session.plan, input.featureId);\n\tconst ids = [...affected];\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"feature-reset\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\taffected.has(run.featureId) && run.state !== \"superseded\"\n\t\t\t\t\t\t? { ...run, state: \"superseded\" }\n\t\t\t\t\t\t: run,\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tvalue: ids,\n\t\treplayed: false,\n\t};\n}\n\nexport function closeSession(\n\tsession: Session,\n\tinput: SessionCloseInput,\n): MutationResult<SessionClosure> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.closure) fail(\"The replayed closure is missing.\");\n\t\treturn { session, value: session.closure, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tif (session.id !== input.sessionId)\n\t\tfail(\"sessionId does not match active state.\");\n\tassertMutable(session);\n\tif (input.kind === \"completed\" && sessionStatus(session) !== \"completed\") {\n\t\tfail(\"A completed close requires every planned feature to pass review.\");\n\t}\n\tlet closure: SessionClosure | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tclosure = {\n\t\t\t\tkind: input.kind,\n\t\t\t\tsummary: input.summary,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\trecordedRevision: revision,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\trun.state === \"active\" ? { ...run, state: \"superseded\" } : run,\n\t\t\t\t),\n\t\t\t\tclosure,\n\t\t\t};\n\t\t},\n\t);\n\tif (!closure) fail(\"Flow could not record the closure.\");\n\treturn { session: next, value: closure, replayed: false };\n}\n\nfunction featurePassedBefore(\n\tsession: Session,\n\tfeatureId: string,\n\trevision: number,\n): boolean {\n\treturn session.runs.some(\n\t\t(run) =>\n\t\t\trun.featureId === featureId &&\n\t\t\trun.reviews.some(\n\t\t\t\t(review) =>\n\t\t\t\t\treview.result?.verdict === \"passed\" &&\n\t\t\t\t\treview.result.recordedRevision < revision,\n\t\t\t),\n\t);\n}\n\nexport function sessionInvariantIssues(session: Session): string[] {\n\tconst issues: string[] = [];\n\tif (session.version !== 5) issues.push(\"Session version must be 5.\");\n\tif (!Number.isSafeInteger(session.revision) || session.revision < 0) {\n\t\tissues.push(\"Session revision must be a nonnegative safe integer.\");\n\t}\n\tconst operationIds = new Set<string>();\n\tfor (const operation of session.operations) {\n\t\tif (operationIds.has(operation.id)) {\n\t\t\tissues.push(`Duplicate operation id '${operation.id}'.`);\n\t\t}\n\t\toperationIds.add(operation.id);\n\t\tif (\n\t\t\toperation.committedRevision < 1 ||\n\t\t\toperation.committedRevision > session.revision\n\t\t) {\n\t\t\tissues.push(`Operation '${operation.id}' has an invalid revision.`);\n\t\t}\n\t}\n\tif (session.closure) {\n\t\tconst closureIssue = closureOperationIssue(session);\n\t\tif (closureIssue) issues.push(closureIssue);\n\t\tif (session.closure.kind === \"completed\" && !session.plan) {\n\t\t\tissues.push(\"A completed closure requires a plan.\");\n\t\t}\n\t}\n\tif (!session.plan) {\n\t\tif (session.approval === \"approved\")\n\t\t\tissues.push(\"Approval requires a plan.\");\n\t\tif (session.runs.length > 0) issues.push(\"Runs require a plan.\");\n\t\treturn issues;\n\t}\n\ttry {\n\t\tassertPlan(session.plan);\n\t} catch (error) {\n\t\tissues.push(error instanceof Error ? error.message : String(error));\n\t}\n\tconst featureIds = new Set(\n\t\tsession.plan.features.map((feature) => feature.id),\n\t);\n\tconst runIds = new Set<string>();\n\tconst validationIds = new Set<string>();\n\tconst reviewIds = new Set<string>();\n\tlet activeCount = 0;\n\tfor (const run of session.runs) {\n\t\tif (runIds.has(run.id)) issues.push(`Duplicate run id '${run.id}'.`);\n\t\trunIds.add(run.id);\n\t\tif (!featureIds.has(run.featureId))\n\t\t\tissues.push(`Run '${run.id}' has unknown feature.`);\n\t\tif (run.startedRevision < 1 || run.startedRevision > session.revision) {\n\t\t\tissues.push(`Run '${run.id}' has an invalid start revision.`);\n\t\t}\n\t\tif (run.reviews.length > 1) {\n\t\t\tissues.push(`Run '${run.id}' has more than one review.`);\n\t\t}\n\t\tif (run.validations.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\tissues.push(\n\t\t\t\t`Run '${run.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validations.`,\n\t\t\t);\n\t\t}\n\t\tfor (const issue of artifactIssues(run.artifactsChanged)) {\n\t\t\tissues.push(`Run '${run.id}': ${issue}`);\n\t\t}\n\t\tif (run.state === \"active\") activeCount += 1;\n\t\tconst runValidationIds = new Set<string>();\n\t\tfor (const validation of run.validations) {\n\t\t\tif (validationIds.has(validation.id)) {\n\t\t\t\tissues.push(`Duplicate validation id '${validation.id}'.`);\n\t\t\t}\n\t\t\tvalidationIds.add(validation.id);\n\t\t\trunValidationIds.add(validation.id);\n\t\t\tif (\n\t\t\t\tvalidation.runId !== run.id ||\n\t\t\t\tvalidation.featureId !== run.featureId\n\t\t\t) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Validation '${validation.id}' is attached to the wrong run.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (validation.recordedRevision > session.revision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' is from a future revision.`);\n\t\t\t}\n\t\t\tif (validation.recordedRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' predates its run.`);\n\t\t\t}\n\t\t}\n\t\tfor (const review of run.reviews) {\n\t\t\tif (reviewIds.has(review.id))\n\t\t\t\tissues.push(`Duplicate review id '${review.id}'.`);\n\t\t\treviewIds.add(review.id);\n\t\t\tif (review.runId !== run.id || review.featureId !== run.featureId) {\n\t\t\t\tissues.push(`Review '${review.id}' is attached to the wrong run.`);\n\t\t\t}\n\t\t\tconst uniqueReferences = new Set(review.validationIds);\n\t\t\tif (review.validationIds.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Review '${review.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validation references.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (uniqueReferences.size !== review.validationIds.length) {\n\t\t\t\tissues.push(`Review '${review.id}' repeats validation references.`);\n\t\t\t}\n\t\t\tif (review.validationIds.some((id) => !runValidationIds.has(id))) {\n\t\t\t\tissues.push(`Review '${review.id}' references unknown validation.`);\n\t\t\t}\n\t\t\tconst referenced = run.validations.filter((validation) =>\n\t\t\t\tuniqueReferences.has(validation.id),\n\t\t\t);\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) =>\n\t\t\t\t\t\tvalidation.exitCode !== 0 ||\n\t\t\t\t\t\t!validation.outputComplete ||\n\t\t\t\t\t\tvalidation.sourceDigest !== review.sourceDigest,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' uses inapplicable validation.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treview.kind === \"final\" &&\n\t\t\t\t!referenced.some((validation) => validation.scope === \"broad\")\n\t\t\t) {\n\t\t\t\tissues.push(`Final review '${review.id}' lacks broad validation.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treview.createdRevision < 1 ||\n\t\t\t\treview.createdRevision > session.revision\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' has an invalid creation revision.`);\n\t\t\t}\n\t\t\tif (review.createdRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Review '${review.id}' predates its run.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) => validation.recordedRevision >= review.createdRevision,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' references later validation.`);\n\t\t\t}\n\t\t\tconst expectedKind = session.plan.features.every(\n\t\t\t\t(feature) =>\n\t\t\t\t\tfeature.id === run.featureId ||\n\t\t\t\t\tfeaturePassedBefore(session, feature.id, review.createdRevision),\n\t\t\t)\n\t\t\t\t? \"final\"\n\t\t\t\t: \"feature\";\n\t\t\tif (review.kind !== expectedKind) {\n\t\t\t\tissues.push(`Review '${review.id}' has the wrong derived kind.`);\n\t\t\t}\n\t\t\tif (review.result) {\n\t\t\t\tif (\n\t\t\t\t\treview.result.recordedRevision <= review.createdRevision ||\n\t\t\t\t\treview.result.recordedRevision > session.revision\n\t\t\t\t) {\n\t\t\t\t\tissues.push(`Review '${review.id}' has an invalid result revision.`);\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tassertReviewResult(review.result);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tissues.push(error instanceof Error ? error.message : String(error));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst last = run.reviews.at(-1);\n\t\tif (run.state === \"active\" && (run.summary !== null || last?.result)) {\n\t\t\tissues.push(`Active run '${run.id}' contains a recorded outcome.`);\n\t\t}\n\t\tif (run.state === \"completed\" && last?.result?.verdict !== \"passed\") {\n\t\t\tissues.push(`Completed run '${run.id}' lacks a passing review.`);\n\t\t}\n\t\tif (run.state === \"blocked\" && last?.result?.verdict !== \"failed\") {\n\t\t\tissues.push(`Blocked run '${run.id}' lacks a failed review.`);\n\t\t}\n\t\tif (run.state === \"superseded\" && last?.result?.verdict === \"passed\") {\n\t\t\tissues.push(`Superseded run '${run.id}' cannot retain a passing review.`);\n\t\t}\n\t}\n\tif (activeCount > 1) issues.push(\"Only one run may be active.\");\n\tif (session.closure) {\n\t\tif (activeCount > 0)\n\t\t\tissues.push(\"A closed session cannot retain active work.\");\n\t\tif (\n\t\t\tsession.closure.kind === \"completed\" &&\n\t\t\tsession.plan.features.some(\n\t\t\t\t(feature) => !isFeatureComplete(session, feature.id),\n\t\t\t)\n\t\t) {\n\t\t\tissues.push(\"A completed closure requires every feature to be complete.\");\n\t\t}\n\t}\n\treturn issues;\n}\n",
|
|
16
16
|
"import type {\n\tSourceDigest,\n\tValidationObservation,\n\tValidationScope,\n} from \"../domain/session.js\";\nimport { activeRun, recordValidation } from \"../domain/transitions.js\";\nimport type { SessionRepository } from \"./ports/session-repository.js\";\nimport type { ValidationStartRequest } from \"./schema.js\";\n\nexport type PreparedValidation = Readonly<{\n\tfeatureId: string;\n\trunId: string;\n\tcommand: string;\n\tscope: ValidationScope;\n\tsourceDigest: SourceDigest;\n}>;\n\nexport type ObservedValidation = PreparedValidation &\n\tReadonly<{\n\t\tcaptureId: string;\n\t\texitCode: number;\n\t\toutputDigest: SourceDigest;\n\t\toutputComplete: boolean;\n\t}>;\n\nexport async function prepareValidation(\n\trepository: SessionRepository,\n\tinput: ValidationStartRequest,\n): Promise<PreparedValidation> {\n\treturn repository.transact(async (transaction) => {\n\t\tconst session = await transaction.load();\n\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\tif (session.revision !== input.expectedRevision) {\n\t\t\tthrow new Error(\n\t\t\t\t`Stale revision ${input.expectedRevision}; refresh Flow status and use revision ${session.revision}.`,\n\t\t\t);\n\t\t}\n\t\tconst run = activeRun(session);\n\t\tif (!run || run.featureId !== input.featureId) {\n\t\t\tthrow new Error(\"Validation must target the active feature run.\");\n\t\t}\n\t\tif (run.reviews.length > 0) {\n\t\t\tthrow new Error(\"Validation cannot start after review has begun.\");\n\t\t}\n\t\treturn {\n\t\t\tfeatureId: run.featureId,\n\t\t\trunId: run.id,\n\t\t\tcommand: input.command,\n\t\t\tscope: input.scope,\n\t\t\tsourceDigest: await transaction.computeSourceDigest(),\n\t\t};\n\t});\n}\n\nexport async function persistObservedValidation(\n\trepository: SessionRepository,\n\tinput: ObservedValidation,\n): Promise<ValidationObservation> {\n\treturn repository.transact(async (transaction) => {\n\t\tconst session = await transaction.load();\n\t\tif (!session)\n\t\t\tthrow new Error(\"The Flow session ended before validation was recorded.\");\n\t\tconst currentDigest = await transaction.computeSourceDigest();\n\t\tif (currentDigest !== input.sourceDigest) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Workspace content changed during validation; rerun the command against the final content.\",\n\t\t\t);\n\t\t}\n\t\tconst result = recordValidation(session, input);\n\t\tawait transaction.save(result.session);\n\t\treturn result.value;\n\t});\n}\n",
|
|
17
17
|
"import { execFile } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants } from \"node:fs\";\nimport { lstat, open, readlink } from \"node:fs/promises\";\nimport { isAbsolute, join, normalize, sep } from \"node:path\";\nimport type { SourceIdentityProvider } from \"../../application/ports/source-identity.js\";\nimport {\n\tMAX_SOURCE_FILE_BYTES,\n\tMAX_SOURCE_FILES,\n\tMAX_SOURCE_TOTAL_BYTES,\n} from \"../../domain/limits.js\";\nimport type { SourceDigest } from \"../../domain/session.js\";\nimport { assertMutableWorkspaceRoot } from \"./workspace.js\";\n\nexport class SourceIdentityError extends Error {\n\treadonly code = \"FLOW_SOURCE_IDENTITY\";\n}\n\nfunction fail(message: string, cause?: unknown): never {\n\tthrow new SourceIdentityError(message, cause ? { cause } : undefined);\n}\n\nfunction parseGitWorkspaceEntry(entry: string): string {\n\tconst staged = /^([0-7]{6}) [0-9a-f]+ [0-3]\\t([\\s\\S]+)$/.exec(entry);\n\tif (!staged) return entry;\n\tif (staged[1] === \"160000\") {\n\t\tfail(\n\t\t\t\"Flow does not support Git submodules in source fingerprints; remove the tracked gitlink before continuing.\",\n\t\t);\n\t}\n\treturn staged[2] ?? \"\";\n}\n\nfunction gitWorkspacePaths(workspace: string): Promise<string[]> {\n\treturn new Promise((resolvePaths, rejectPaths) => {\n\t\texecFile(\n\t\t\t\"git\",\n\t\t\t[\n\t\t\t\t\"-C\",\n\t\t\t\tworkspace,\n\t\t\t\t\"ls-files\",\n\t\t\t\t\"-co\",\n\t\t\t\t\"--exclude-standard\",\n\t\t\t\t\"--stage\",\n\t\t\t\t\"-z\",\n\t\t\t],\n\t\t\t{ encoding: \"buffer\", maxBuffer: 32 * 1024 * 1024 },\n\t\t\t(error, stdout) => {\n\t\t\t\tif (error) {\n\t\t\t\t\trejectPaths(\n\t\t\t\t\t\tnew SourceIdentityError(\n\t\t\t\t\t\t\t\"Flow requires a readable Git workspace to fingerprint source content.\",\n\t\t\t\t\t\t\t{ cause: error },\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst text = Buffer.isBuffer(stdout)\n\t\t\t\t\t? stdout.toString(\"utf8\")\n\t\t\t\t\t: String(stdout);\n\t\t\t\ttry {\n\t\t\t\t\tresolvePaths(\n\t\t\t\t\t\ttext.split(\"\\0\").filter(Boolean).map(parseGitWorkspaceEntry),\n\t\t\t\t\t);\n\t\t\t\t} catch (parseError) {\n\t\t\t\t\trejectPaths(parseError);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t});\n}\n\nfunction safeRelativePath(path: string): string {\n\tconst normalized = normalize(path);\n\tif (\n\t\tisAbsolute(path) ||\n\t\tnormalized === \"..\" ||\n\t\tnormalized.startsWith(`..${sep}`) ||\n\t\tnormalized === \".git\" ||\n\t\tnormalized.startsWith(`.git${sep}`)\n\t) {\n\t\tfail(\"Git returned an unsafe workspace path.\");\n\t}\n\treturn normalized;\n}\n\nfunction isFlowRuntimePath(path: string): boolean {\n\treturn path === \".flow\" || path.startsWith(\".flow/\");\n}\n\nfunction hashField(\n\thash: ReturnType<typeof createHash>,\n\tvalue: string | Buffer,\n): void {\n\tconst bytes = typeof value === \"string\" ? Buffer.from(value) : value;\n\thash.update(String(bytes.byteLength));\n\thash.update(\":\");\n\thash.update(bytes);\n\thash.update(\"\\0\");\n}\n\nfunction sameStat(\n\tleft: Awaited<ReturnType<typeof lstat>>,\n\tright: Awaited<ReturnType<typeof lstat>>,\n): boolean {\n\treturn (\n\t\tleft.dev === right.dev &&\n\t\tleft.ino === right.ino &&\n\t\tleft.mode === right.mode &&\n\t\tleft.size === right.size &&\n\t\tleft.mtimeMs === right.mtimeMs &&\n\t\tleft.isFile() === right.isFile() &&\n\t\tleft.isSymbolicLink() === right.isSymbolicLink()\n\t);\n}\n\nexport function createFileSourceIdentityProvider(\n\tworkspace: string,\n): SourceIdentityProvider {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\treturn {\n\t\tasync computeSourceDigest(): Promise<SourceDigest> {\n\t\t\tconst paths = [\n\t\t\t\t...new Set(\n\t\t\t\t\t(await gitWorkspacePaths(root))\n\t\t\t\t\t\t.filter((path) => !isFlowRuntimePath(path))\n\t\t\t\t\t\t.map(safeRelativePath),\n\t\t\t\t),\n\t\t\t].sort();\n\t\t\tif (paths.length > MAX_SOURCE_FILES) {\n\t\t\t\tfail(\n\t\t\t\t\t`Workspace exceeds the ${MAX_SOURCE_FILES}-file fingerprint limit.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst hash = createHash(\"sha256\");\n\t\t\thash.update(\"flow-workspace-content-v1\\0\");\n\t\t\tlet totalBytes = 0;\n\t\t\tfor (const relativePath of paths) {\n\t\t\t\tconst path = join(root, relativePath);\n\t\t\t\tlet before: Awaited<ReturnType<typeof lstat>>;\n\t\t\t\ttry {\n\t\t\t\t\tbefore = await lstat(path);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\t\t\t\thashField(hash, relativePath);\n\t\t\t\t\t\thashField(hash, \"missing\");\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tfail(\"Flow could not inspect workspace content.\", error);\n\t\t\t\t}\n\t\t\t\thashField(hash, relativePath);\n\t\t\t\tif (before.isSymbolicLink()) {\n\t\t\t\t\tconst target = await readlink(path);\n\t\t\t\t\tconst after = await lstat(path);\n\t\t\t\t\tif (!sameStat(before, after))\n\t\t\t\t\t\tfail(\"Workspace content changed during fingerprinting.\");\n\t\t\t\t\thashField(hash, \"symlink\");\n\t\t\t\t\thashField(hash, target);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!before.isFile()) {\n\t\t\t\t\tfail(\"Flow fingerprints only regular files and symbolic links.\");\n\t\t\t\t}\n\t\t\t\tif (before.size > MAX_SOURCE_FILE_BYTES) {\n\t\t\t\t\tfail(`A workspace file exceeds ${MAX_SOURCE_FILE_BYTES} bytes.`);\n\t\t\t\t}\n\t\t\t\ttotalBytes += before.size;\n\t\t\t\tif (totalBytes > MAX_SOURCE_TOTAL_BYTES) {\n\t\t\t\t\tfail(`Workspace content exceeds ${MAX_SOURCE_TOTAL_BYTES} bytes.`);\n\t\t\t\t}\n\t\t\t\tconst noFollow =\n\t\t\t\t\tprocess.platform === \"win32\" ? 0 : constants.O_NOFOLLOW;\n\t\t\t\tconst handle = await open(path, constants.O_RDONLY | noFollow);\n\t\t\t\tlet contents: Buffer;\n\t\t\t\ttry {\n\t\t\t\t\tcontents = await handle.readFile();\n\t\t\t\t} finally {\n\t\t\t\t\tawait handle.close();\n\t\t\t\t}\n\t\t\t\tconst after = await lstat(path);\n\t\t\t\tif (!sameStat(before, after) || contents.byteLength !== before.size) {\n\t\t\t\t\tfail(\"Workspace content changed during fingerprinting.\");\n\t\t\t\t}\n\t\t\t\thashField(hash, \"file\");\n\t\t\t\thashField(hash, String(before.mode & 0o111));\n\t\t\t\thashField(hash, contents);\n\t\t\t}\n\t\t\treturn `sha256:${hash.digest(\"hex\")}`;\n\t\t},\n\t};\n}\n",
|
|
18
18
|
"import { createHash, randomUUID } from \"node:crypto\";\nimport { constants, lstatSync, realpathSync } from \"node:fs\";\nimport {\n\tlink,\n\tlstat,\n\tmkdir,\n\topen,\n\treadFile,\n\trename,\n\trm,\n\tunlink,\n\twriteFile,\n} from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, join, parse, resolve } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport {\n\tUnreadableFlowSessionError,\n\tUnsupportedFlowSessionVersionError,\n} from \"../../application/errors.js\";\nimport { SessionSchema } from \"../../application/schema.js\";\nimport {\n\tMAX_SESSION_BYTES,\n\tMAX_SESSION_ID_LENGTH,\n} from \"../../domain/limits.js\";\nimport type { Session } from \"../../domain/session.js\";\nimport { parseStrictJsonObject } from \"./strict-json-object.js\";\n\nexport class InvalidFlowWorkspaceRootError extends Error {\n\treadonly code = \"INVALID_FLOW_WORKSPACE_ROOT\";\n}\n\nexport class UnsafeFlowWorkspaceLayoutError extends Error {\n\treadonly code = \"UNSAFE_FLOW_WORKSPACE_LAYOUT\";\n}\n\nexport class ArchiveCollisionError extends Error {\n\treadonly code = \"FLOW_ARCHIVE_COLLISION\";\n}\n\nexport function normalizeWorkspaceRoot(\n\trawPath: string | undefined,\n): string | null {\n\tconst value = rawPath?.trim();\n\tif (!value) return null;\n\tconst normalized = resolve(value);\n\treturn parse(normalized).root === normalized ? null : normalized;\n}\n\nexport function assertMutableWorkspaceRoot(rawPath: string): string {\n\tconst candidate = normalizeWorkspaceRoot(rawPath);\n\tif (!candidate) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow requires a non-root workspace path.\",\n\t\t);\n\t}\n\tlet root: string;\n\ttry {\n\t\troot = realpathSync(candidate);\n\t} catch (error) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t`Flow requires an existing workspace directory: ${candidate}.`,\n\t\t\t{ cause: error },\n\t\t);\n\t}\n\tif (parse(root).root === root || !lstatSync(root).isDirectory()) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow requires an existing non-root workspace directory.\",\n\t\t);\n\t}\n\tconst homes = [process.env.HOME, homedir()]\n\t\t.filter((value): value is string => Boolean(value?.trim()))\n\t\t.map((value) => {\n\t\t\ttry {\n\t\t\t\treturn realpathSync(resolve(value));\n\t\t\t} catch {\n\t\t\t\treturn resolve(value);\n\t\t\t}\n\t\t});\n\tif (homes.includes(root)) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow refuses to use the home directory itself as mutable state.\",\n\t\t);\n\t}\n\treturn root;\n}\n\nexport function resolveWorkspaceRoot(context: {\n\tworktree?: string | undefined;\n\tdirectory?: string | undefined;\n}): string {\n\tconst candidate =\n\t\tnormalizeWorkspaceRoot(context.worktree) ??\n\t\tnormalizeWorkspaceRoot(context.directory);\n\tif (!candidate) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow could not resolve a workspace root from tool context.\",\n\t\t);\n\t}\n\treturn assertMutableWorkspaceRoot(candidate);\n}\n\nexport function flowDir(workspace: string): string {\n\treturn join(workspace, \".flow\");\n}\n\nexport function sessionPath(workspace: string): string {\n\treturn join(flowDir(workspace), \"session.json\");\n}\n\nexport function historyDir(workspace: string): string {\n\treturn join(flowDir(workspace), \"history\");\n}\n\nexport function archivedSessionFilename(sessionId: string): string {\n\tif (sessionId.length < 1 || sessionId.length > MAX_SESSION_ID_LENGTH) {\n\t\tthrow new Error(\"Invalid session id.\");\n\t}\n\treturn `${createHash(\"sha256\").update(sessionId).digest(\"hex\")}.json`;\n}\n\nexport function archivedSessionPath(\n\tworkspace: string,\n\tsessionId: string,\n): string {\n\treturn join(historyDir(workspace), archivedSessionFilename(sessionId));\n}\n\nasync function pathKind(\n\tpath: string,\n\texpected: \"file\" | \"directory\",\n\tdescription: string,\n): Promise<\"missing\" | \"present\"> {\n\ttry {\n\t\tconst info = await lstat(path);\n\t\tif (info.isSymbolicLink()) {\n\t\t\tthrow new UnsafeFlowWorkspaceLayoutError(\n\t\t\t\t`Flow refuses a symbolic link for ${description}: ${path}.`,\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t(expected === \"file\" && !info.isFile()) ||\n\t\t\t(expected === \"directory\" && !info.isDirectory())\n\t\t) {\n\t\t\tthrow new UnsafeFlowWorkspaceLayoutError(\n\t\t\t\t`Flow requires ${description} to be a ${expected}: ${path}.`,\n\t\t\t);\n\t\t}\n\t\treturn \"present\";\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return \"missing\";\n\t\tthrow error;\n\t}\n}\n\nasync function ensureDirectory(\n\tpath: string,\n\tdescription: string,\n): Promise<void> {\n\tif ((await pathKind(path, \"directory\", description)) === \"present\") return;\n\ttry {\n\t\tawait mkdir(path, { mode: 0o700 });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t}\n\tawait pathKind(path, \"directory\", description);\n}\n\nasync function ensureFlowDirectory(workspace: string): Promise<void> {\n\tconst root = flowDir(workspace);\n\tawait ensureDirectory(root, \"the Flow state directory\");\n\tconst ignore = join(root, \".gitignore\");\n\tif ((await pathKind(ignore, \"file\", \"the Flow ignore file\")) === \"missing\") {\n\t\ttry {\n\t\t\tawait writeFile(ignore, \"*\\n\", {\n\t\t\t\tencoding: \"utf8\",\n\t\t\t\tflag: \"wx\",\n\t\t\t\tmode: 0o600,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t\t}\n\t}\n}\n\nasync function ensureHistoryDirectory(workspace: string): Promise<void> {\n\tawait ensureFlowDirectory(workspace);\n\tawait ensureDirectory(historyDir(workspace), \"the Flow history directory\");\n}\n\nasync function readManaged(path: string, description: string): Promise<string> {\n\tawait pathKind(path, \"file\", description);\n\tconst noFollow = process.platform === \"win32\" ? 0 : constants.O_NOFOLLOW;\n\tconst handle = await open(path, constants.O_RDONLY | noFollow);\n\ttry {\n\t\tconst stat = await handle.stat();\n\t\tif (!stat.isFile() || stat.size > MAX_SESSION_BYTES) {\n\t\t\tthrow new UnreadableFlowSessionError(\n\t\t\t\t`${description} is not a bounded regular file.`,\n\t\t\t\t\"state exceeds the supported session size\",\n\t\t\t);\n\t\t}\n\t\treturn await handle.readFile(\"utf8\");\n\t} finally {\n\t\tawait handle.close();\n\t}\n}\n\nasync function syncDirectory(path: string): Promise<void> {\n\tif (process.platform === \"win32\") return;\n\tconst handle = await open(path, \"r\");\n\ttry {\n\t\tawait handle.sync();\n\t} finally {\n\t\tawait handle.close();\n\t}\n}\n\nasync function renameReplacing(temporary: string, path: string): Promise<void> {\n\tlet retry = 0;\n\twhile (true) {\n\t\ttry {\n\t\t\tawait rename(temporary, path);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\t\tconst transientWindowsError =\n\t\t\t\tprocess.platform === \"win32\" &&\n\t\t\t\t(code === \"EACCES\" || code === \"EBUSY\" || code === \"EPERM\");\n\t\t\tif (!transientWindowsError || retry >= 20) throw error;\n\t\t\tretry += 1;\n\t\t\t// Preserve atomic replacement: wait for short-lived readers instead of\n\t\t\t// unlinking the destination and exposing missing or partial state.\n\t\t\tawait sleep(retry * 5);\n\t\t}\n\t}\n}\n\nasync function writeAtomically(path: string, contents: string): Promise<void> {\n\tconst temporary = join(\n\t\tdirname(path),\n\t\t`.flow-write-${process.pid}-${randomUUID()}.tmp`,\n\t);\n\tconst handle = await open(temporary, \"wx\", 0o600);\n\ttry {\n\t\tawait handle.writeFile(contents, \"utf8\");\n\t\tawait handle.sync();\n\t} catch (error) {\n\t\tawait handle.close();\n\t\tawait rm(temporary, { force: true });\n\t\tthrow error;\n\t}\n\tawait handle.close();\n\ttry {\n\t\tawait renameReplacing(temporary, path);\n\t\tawait syncDirectory(dirname(path));\n\t} catch (error) {\n\t\tawait rm(temporary, { force: true });\n\t\tthrow error;\n\t}\n}\n\nfunction parseSession(raw: string, description: string): Session {\n\tconst parsed = parseStrictJsonObject(raw, description);\n\tif (!parsed.ok) {\n\t\tthrow new UnreadableFlowSessionError(parsed.error, parsed.error);\n\t}\n\tif (Object.hasOwn(parsed.value, \"version\") && parsed.value.version !== 5) {\n\t\tthrow new UnsupportedFlowSessionVersionError(parsed.value.version);\n\t}\n\tconst result = SessionSchema.safeParse(parsed.value);\n\tif (!result.success) {\n\t\tconst reason = result.error.issues.map((issue) => issue.message).join(\"; \");\n\t\tthrow new UnreadableFlowSessionError(\n\t\t\t`${description} does not match Session v5: ${reason}`,\n\t\t\treason,\n\t\t);\n\t}\n\treturn result.data;\n}\n\nexport async function loadSession(workspace: string): Promise<Session | null> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tif (\n\t\t(await pathKind(flowDir(root), \"directory\", \"the Flow state directory\")) ===\n\t\t\"missing\"\n\t) {\n\t\treturn null;\n\t}\n\tconst path = sessionPath(root);\n\tif ((await pathKind(path, \"file\", \"the Flow session file\")) === \"missing\") {\n\t\treturn null;\n\t}\n\treturn parseSession(\n\t\tawait readManaged(path, \"the Flow session file\"),\n\t\t\"Flow session file\",\n\t);\n}\n\nexport async function loadArchivedSession(\n\tworkspace: string,\n\tsessionId: string,\n): Promise<Session | null> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tif (\n\t\t(await pathKind(flowDir(root), \"directory\", \"the Flow state directory\")) ===\n\t\t\"missing\"\n\t) {\n\t\treturn null;\n\t}\n\tif (\n\t\t(await pathKind(\n\t\t\thistoryDir(root),\n\t\t\t\"directory\",\n\t\t\t\"the Flow history directory\",\n\t\t)) === \"missing\"\n\t) {\n\t\treturn null;\n\t}\n\tconst path = archivedSessionPath(root, sessionId);\n\tif (\n\t\t(await pathKind(path, \"file\", \"the Flow archived session\")) === \"missing\"\n\t) {\n\t\treturn null;\n\t}\n\tconst session = parseSession(\n\t\tawait readManaged(path, \"the Flow archived session\"),\n\t\t\"Flow archived session\",\n\t);\n\tif (session.id !== sessionId || !session.closure) {\n\t\tthrow new ArchiveCollisionError(\n\t\t\t\"Archived session identity or closure is invalid.\",\n\t\t);\n\t}\n\treturn session;\n}\n\nexport async function saveSession(\n\tworkspace: string,\n\tsession: Session,\n): Promise<Session> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tconst parsed = SessionSchema.parse(session);\n\tawait ensureFlowDirectory(root);\n\tawait pathKind(sessionPath(root), \"file\", \"the Flow session file\");\n\tawait writeAtomically(\n\t\tsessionPath(root),\n\t\t`${JSON.stringify(parsed, null, 2)}\\n`,\n\t);\n\treturn parsed;\n}\n\nexport async function archiveAndClearSession(\n\tworkspace: string,\n\tsession: Session,\n): Promise<void> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tif (!session.closure)\n\t\tthrow new Error(\"Flow archives only explicitly closed sessions.\");\n\tconst canonical = SessionSchema.parse(session);\n\tconst canonicalBytes = `${JSON.stringify(canonical, null, 2)}\\n`;\n\tawait ensureHistoryDirectory(root);\n\tconst target = archivedSessionPath(root, canonical.id);\n\tconst temporary = join(\n\t\thistoryDir(root),\n\t\t`.flow-archive-${process.pid}-${randomUUID()}.tmp`,\n\t);\n\ttry {\n\t\tconst handle = await open(temporary, \"wx\", 0o600);\n\t\ttry {\n\t\t\tawait handle.writeFile(canonicalBytes, \"utf8\");\n\t\t\tawait handle.sync();\n\t\t} finally {\n\t\t\tawait handle.close();\n\t\t}\n\t\tawait link(temporary, target);\n\t\tawait syncDirectory(historyDir(root));\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t\tconst existing = await loadArchivedSession(root, canonical.id);\n\t\tif (!existing || JSON.stringify(existing) !== JSON.stringify(canonical)) {\n\t\t\tthrow new ArchiveCollisionError(\n\t\t\t\t\"Flow refused to overwrite a different archived session.\",\n\t\t\t);\n\t\t}\n\t} finally {\n\t\tawait rm(temporary, { force: true });\n\t}\n\tconst active = await loadSession(root);\n\tif (!active) return;\n\tif (JSON.stringify(active) !== JSON.stringify(canonical)) {\n\t\tthrow new ArchiveCollisionError(\n\t\t\t\"Active state changed before archive cleanup; Flow left it untouched.\",\n\t\t);\n\t}\n\tawait unlink(sessionPath(root));\n\tawait syncDirectory(flowDir(root));\n}\n\nexport async function quarantineUnreadableSession(\n\tworkspace: string,\n): Promise<string | null> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tif (\n\t\t(await pathKind(flowDir(root), \"directory\", \"the Flow state directory\")) ===\n\t\t\"missing\"\n\t) {\n\t\treturn null;\n\t}\n\tconst source = sessionPath(root);\n\tif ((await pathKind(source, \"file\", \"the Flow session file\")) === \"missing\") {\n\t\treturn null;\n\t}\n\tawait ensureHistoryDirectory(root);\n\tconst target = join(historyDir(root), `quarantine-${randomUUID()}.json`);\n\tawait rename(source, target);\n\tawait syncDirectory(historyDir(root));\n\treturn target;\n}\n\nconst inProcessLocks = new Map<string, Promise<void>>();\nconst LOCK_TIMEOUT_MS = 30_000;\n\nasync function acquireLock(workspace: string): Promise<() => Promise<void>> {\n\tawait ensureFlowDirectory(workspace);\n\tconst lock = join(flowDir(workspace), \"session.lock\");\n\tconst started = Date.now();\n\twhile (true) {\n\t\ttry {\n\t\t\tawait mkdir(lock, { mode: 0o700 });\n\t\t\tconst token = randomUUID();\n\t\t\ttry {\n\t\t\t\tawait writeFile(\n\t\t\t\t\tjoin(lock, \"owner.json\"),\n\t\t\t\t\tJSON.stringify({ token, pid: process.pid }),\n\t\t\t\t\t{ encoding: \"utf8\", flag: \"wx\", mode: 0o600 },\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tawait rm(lock, { recursive: true, force: true });\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst owner = JSON.parse(\n\t\t\t\t\t\tawait readFile(join(lock, \"owner.json\"), \"utf8\"),\n\t\t\t\t\t) as { token?: unknown };\n\t\t\t\t\tif (owner.token === token) await rm(lock, { recursive: true });\n\t\t\t\t} catch {\n\t\t\t\t\t// A replaced or damaged lock is not ours to remove.\n\t\t\t\t}\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"EEXIST\") throw error;\n\t\t\tawait pathKind(lock, \"directory\", \"the Flow session lock\");\n\t\t\tif (Date.now() - started >= LOCK_TIMEOUT_MS) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Timed out waiting for Flow session lock at ${lock}; inspect it before manual removal.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait sleep(25);\n\t\t}\n\t}\n}\n\nexport async function withSessionLock<T>(\n\tworkspace: string,\n\ttask: () => Promise<T>,\n): Promise<T> {\n\tconst root = assertMutableWorkspaceRoot(workspace);\n\tconst previous = inProcessLocks.get(root) ?? Promise.resolve();\n\tlet releaseQueue = () => {};\n\tconst current = new Promise<void>((resolveQueue) => {\n\t\treleaseQueue = resolveQueue;\n\t});\n\tconst queued = previous.catch(() => undefined).then(() => current);\n\tinProcessLocks.set(root, queued);\n\tlet releaseFile: (() => Promise<void>) | null = null;\n\ttry {\n\t\tawait previous.catch(() => undefined);\n\t\treleaseFile = await acquireLock(root);\n\t\treturn await task();\n\t} finally {\n\t\tawait releaseFile?.();\n\t\treleaseQueue();\n\t\tif (inProcessLocks.get(root) === queued) inProcessLocks.delete(root);\n\t}\n}\n",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"import { createHash, randomUUID } from \"node:crypto\";\nimport type {\n\tObservedValidation,\n\tPreparedValidation,\n} from \"../../application/prepare-validation.js\";\nimport type { ValidationObservation } from \"../../domain/session.js\";\nimport type { Hooks } from \"./sdk.js\";\n\nconst MAX_CAPTURES = 128;\nconst CAPTURE_TTL_MS = 15 * 60 * 1_000;\n\ntype PendingCapture = PreparedValidation &\n\tReadonly<{\n\t\tcaptureId: string;\n\t\tsessionID: string;\n\t\tworkspace: string;\n\t\tarmedAt: number;\n\t}> & { callID: string | null };\n\nexport type ValidationCaptureOptions = Readonly<{\n\tpersistObservation: (\n\t\tworkspace: string,\n\t\tobservation: ObservedValidation,\n\t) => Promise<ValidationObservation>;\n\tnow?: (() => number) | undefined;\n\trandomId?: (() => string) | undefined;\n}>;\n\ntype BeforeInput = Parameters<NonNullable<Hooks[\"tool.execute.before\"]>>[0];\ntype BeforeOutput = Parameters<NonNullable<Hooks[\"tool.execute.before\"]>>[1];\ntype AfterInput = Parameters<NonNullable<Hooks[\"tool.execute.after\"]>>[0];\ntype AfterOutput = Parameters<NonNullable<Hooks[\"tool.execute.after\"]>>[1];\n\nexport class ValidationCaptureError extends Error {\n\treadonly code = \"FLOW_VALIDATION_CAPTURE\";\n}\n\nfunction commandFromArgs(value: unknown): string | null {\n\tif (!value || typeof value !== \"object\") return null;\n\tconst command = (value as Record<string, unknown>).command;\n\treturn typeof command === \"string\" ? command : null;\n}\n\nfunction exitCode(value: unknown): number | null {\n\tif (!value || typeof value !== \"object\") return null;\n\tconst exit = (value as Record<string, unknown>).exit;\n\treturn typeof exit === \"number\" && Number.isSafeInteger(exit) ? exit : null;\n}\n\nfunction completeOutput(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst metadata = value as Record<string, unknown>;\n\treturn metadata.truncated === false || metadata.complete === true;\n}\n\nfunction digest(value: string) {\n\treturn `sha256:${createHash(\"sha256\").update(value).digest(\"hex\")}` as const;\n}\n\nfunction isBash(tool: string): boolean {\n\treturn tool.toLowerCase() === \"bash\";\n}\n\nexport class ValidationCaptureCoordinator {\n\treadonly #persist: ValidationCaptureOptions[\"persistObservation\"];\n\treadonly #now: () => number;\n\treadonly #randomId: () => string;\n\treadonly #pending = new Map<string, PendingCapture>();\n\n\tconstructor(options: ValidationCaptureOptions) {\n\t\tthis.#persist = options.persistObservation;\n\t\tthis.#now = options.now ?? Date.now;\n\t\tthis.#randomId = options.randomId ?? randomUUID;\n\t}\n\n\t#prune(): void {\n\t\tconst cutoff = this.#now() - CAPTURE_TTL_MS;\n\t\tfor (const [sessionID, capture] of this.#pending) {\n\t\t\tif (capture.callID === null && capture.armedAt < cutoff) {\n\t\t\t\tthis.#pending.delete(sessionID);\n\t\t\t}\n\t\t}\n\t}\n\n\tarm(\n\t\tsessionID: string,\n\t\tworkspace: string,\n\t\tprepared: PreparedValidation,\n\t): Readonly<{ captureId: string; expiresInMs: number }> {\n\t\tthis.#prune();\n\t\tif (this.#pending.has(sessionID)) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"This OpenCode session already has an armed validation command.\",\n\t\t\t);\n\t\t}\n\t\tif (this.#pending.size >= MAX_CAPTURES) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"Flow validation capture is at capacity.\",\n\t\t\t);\n\t\t}\n\t\tconst captureId = this.#randomId();\n\t\tthis.#pending.set(sessionID, {\n\t\t\t...prepared,\n\t\t\tcaptureId,\n\t\t\tsessionID,\n\t\t\tworkspace,\n\t\t\tarmedAt: this.#now(),\n\t\t\tcallID: null,\n\t\t});\n\t\treturn { captureId, expiresInMs: CAPTURE_TTL_MS };\n\t}\n\n\tcancel(sessionID: string): boolean {\n\t\treturn this.#pending.delete(sessionID);\n\t}\n\n\tobserveToolBefore(input: BeforeInput, output: BeforeOutput): void {\n\t\tthis.#prune();\n\t\tif (!isBash(input.tool)) return;\n\t\tconst capture = this.#pending.get(input.sessionID);\n\t\tif (!capture || capture.callID !== null) return;\n\t\tif (commandFromArgs(output.args) !== capture.command) {\n\t\t\tthis.#pending.delete(input.sessionID);\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"The next Bash command did not match the armed validation command; capture was cancelled.\",\n\t\t\t);\n\t\t}\n\t\tcapture.callID = input.callID;\n\t}\n\n\tasync observeToolAfter(\n\t\tinput: AfterInput,\n\t\toutput: AfterOutput,\n\t): Promise<ValidationObservation | null> {\n\t\tthis.#prune();\n\t\tif (!isBash(input.tool)) return null;\n\t\tconst capture = this.#pending.get(input.sessionID);\n\t\tif (!capture || capture.callID !== input.callID) return null;\n\t\tthis.#pending.delete(input.sessionID);\n\t\tif (commandFromArgs(input.args) !== capture.command) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"The executed Bash command changed after Flow armed it.\",\n\t\t\t);\n\t\t}\n\t\tconst observedExit = exitCode(output.metadata);\n\t\tif (observedExit === null) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"OpenCode did not expose a structured Bash exit code; validation was not recorded.\",\n\t\t\t);\n\t\t}\n\t\tconst observation = await this.#persist(capture.workspace, {\n\t\t\tfeatureId: capture.featureId,\n\t\t\trunId: capture.runId,\n\t\t\tcommand: capture.command,\n\t\t\tscope: capture.scope,\n\t\t\tsourceDigest: capture.sourceDigest,\n\t\t\tcaptureId: capture.captureId,\n\t\t\texitCode: observedExit,\n\t\t\toutputDigest: digest(output.output),\n\t\t\toutputComplete: completeOutput(output.metadata),\n\t\t});\n\t\toutput.output = `${output.output}\\n\\n[flow-validation] ${JSON.stringify({\n\t\t\tid: observation.id,\n\t\t\tscope: observation.scope,\n\t\t\tpassed: observation.exitCode === 0 && observation.outputComplete,\n\t\t})}`;\n\t\treturn observation;\n\t}\n\n\tpendingCount(): number {\n\t\tthis.#prune();\n\t\treturn this.#pending.size;\n\t}\n}\n",
|
|
33
33
|
"import { FLOW_CORE_COMMANDS } from \"../../config-shared.js\";\nimport {\n\tpersistWorkspaceValidation,\n\tprepareWorkspaceValidation,\n} from \"../../infrastructure/fs/workspace-validation.js\";\nimport { resolveFlowPluginVersion } from \"../../version.js\";\nimport { createConfigHook } from \"./config.js\";\nimport {\n\tcreateFlowPluginInstanceId,\n\tFLOW_LEADERSHIP_PROTOCOL_VERSION,\n\ttype FlowLeadershipHandle,\n\tregisterFlowPluginInstance,\n} from \"./leadership.js\";\nimport { createFlowLog } from \"./logging.js\";\nimport type { Hooks, Plugin } from \"./sdk.js\";\nimport { createTools } from \"./tools.js\";\nimport { ValidationCaptureCoordinator } from \"./validation-capture.js\";\n\ntype FlowCommandName = keyof typeof FLOW_CORE_COMMANDS;\ntype CommandOutput = Parameters<\n\tNonNullable<Hooks[\"command.execute.before\"]>\n>[1];\ntype Part = CommandOutput[\"parts\"][number];\ntype TextPart = Extract<Part, { type: \"text\" }>;\ntype SubtaskPart = Extract<Part, { type: \"subtask\" }> & { command?: string };\n\nfunction isFlowCommand(command: string): command is FlowCommandName {\n\treturn Object.hasOwn(FLOW_CORE_COMMANDS, command);\n}\n\nfunction commandPrompt(command: FlowCommandName, args: string): string {\n\treturn FLOW_CORE_COMMANDS[command].template.replaceAll(\n\t\t\"$ARGUMENTS\",\n\t\t() => args,\n\t);\n}\n\nfunction textPart(text: string, synthetic = false): Part {\n\treturn {\n\t\ttype: \"text\",\n\t\ttext,\n\t\t...(synthetic ? { synthetic: true } : {}),\n\t} as TextPart;\n}\n\nfunction rewriteManagerCommand(\n\tcommand: FlowCommandName,\n\targs: string,\n\toutput: CommandOutput,\n): void {\n\tif (output.parts.some((part) => part.type === \"subtask\")) {\n\t\tthrow new Error(\"Flow manager commands cannot contain subtask parts.\");\n\t}\n\tconst preserved = output.parts.filter((part) => part.type !== \"text\");\n\toutput.parts.splice(\n\t\t0,\n\t\toutput.parts.length,\n\t\ttextPart(\n\t\t\targs.trim() ? `Flow ${command}: ${args.trim()}` : `Flow ${command}`,\n\t\t),\n\t\ttextPart(commandPrompt(command, args), true),\n\t\t...preserved,\n\t);\n}\n\nfunction rewriteReviewerCommand(\n\tcommand: FlowCommandName,\n\targs: string,\n\toutput: CommandOutput,\n): void {\n\tif (output.parts.length !== 1 || output.parts[0]?.type !== \"subtask\") {\n\t\tthrow new Error(`/${command} requires exactly one reviewer subtask.`);\n\t}\n\tconst subtask = output.parts[0] as SubtaskPart;\n\tconst config = FLOW_CORE_COMMANDS[command];\n\tif (!config.subtask || subtask.agent !== config.agent) {\n\t\tthrow new Error(\n\t\t\t`/${command} must dispatch to '${config.subtask ? config.agent : \"none\"}'.`,\n\t\t);\n\t}\n\tif (subtask.command?.replace(/^\\/+/, \"\") !== command) {\n\t\tthrow new Error(`/${command} subtask identity did not match.`);\n\t}\n\tsubtask.prompt = commandPrompt(command, args);\n}\n\nfunction createCommandHook(\n\tassertOperational: (action: string) => void,\n): NonNullable<Hooks[\"command.execute.before\"]> {\n\treturn async (input, output) => {\n\t\tconst command = input.command.replace(/^\\/+/, \"\");\n\t\tif (!isFlowCommand(command)) return;\n\t\tassertOperational(`execute /${command}`);\n\t\tif (FLOW_CORE_COMMANDS[command].subtask) {\n\t\t\trewriteReviewerCommand(command, input.arguments, output);\n\t\t} else {\n\t\t\trewriteManagerCommand(command, input.arguments, output);\n\t\t}\n\t};\n}\n\ntype FlowTools = NonNullable<Hooks[\"tool\"]>;\n\nfunction guardTools(\n\ttools: FlowTools,\n\truntimeGuard: FlowLeadershipHandle,\n): FlowTools {\n\treturn Object.fromEntries(\n\t\tObject.entries(tools).map(([name, definition]) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\t...definition,\n\t\t\t\texecute: async (...args: Parameters<typeof definition.execute>) => {\n\t\t\t\t\tconst status = runtimeGuard.query();\n\t\t\t\t\tif (!status.operational) {\n\t\t\t\t\t\treturn JSON.stringify({\n\t\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\t\tsummary: status.message,\n\t\t\t\t\t\t\tworkflowData: { runtimeGuard: status },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn definition.execute(...args);\n\t\t\t\t},\n\t\t\t},\n\t\t]),\n\t) as FlowTools;\n}\n\nconst FlowPlugin: Plugin = async (ctx) => {\n\tconst log = createFlowLog(ctx);\n\tconst version = resolveFlowPluginVersion();\n\tconst runtimeGuard = registerFlowPluginInstance(\n\t\tctx.worktree ?? ctx.directory,\n\t\t{\n\t\t\tpackageName: \"opencode-plugin-flow\",\n\t\t\tversion,\n\t\t\tprotocolVersion: FLOW_LEADERSHIP_PROTOCOL_VERSION,\n\t\t\tinstanceId: createFlowPluginInstanceId(),\n\t\t},\n\t);\n\tconst initial = runtimeGuard.query();\n\tlog(\n\t\tinitial.operational ? \"info\" : \"error\",\n\t\t`Flow ${version}: ${initial.message}`,\n\t);\n\n\tconst validation = new ValidationCaptureCoordinator({\n\t\tpersistObservation: persistWorkspaceValidation,\n\t});\n\tconst tools = createTools(ctx, {\n\t\tvalidation,\n\t\tprepareValidation: prepareWorkspaceValidation,\n\t});\n\n\treturn {\n\t\tconfig: createConfigHook(ctx, {\n\t\t\tassertOperational: (action) => runtimeGuard.assertOperational(action),\n\t\t}),\n\t\ttool: guardTools(tools, runtimeGuard),\n\t\t\"command.execute.before\": createCommandHook((action) =>\n\t\t\truntimeGuard.assertOperational(action),\n\t\t),\n\t\tevent: async (input) => {\n\t\t\tconst event = input.event as {\n\t\t\t\ttype?: string;\n\t\t\t\tproperties?: { sessionID?: unknown };\n\t\t\t};\n\t\t\tif (event.type !== \"session.idle\" && event.type !== \"session.compacted\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst sessionID = event.properties?.sessionID;\n\t\t\tif (typeof sessionID === \"string\") validation.cancel(sessionID);\n\t\t},\n\t\t\"tool.execute.before\": async (input, output) => {\n\t\t\tvalidation.observeToolBefore(input, output);\n\t\t},\n\t\t\"tool.execute.after\": async (input, output) => {\n\t\t\ttry {\n\t\t\t\tawait validation.observeToolAfter(input, output);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tlog(\"error\", \"Flow validation capture failed closed.\", { message });\n\t\t\t\toutput.output = `${output.output}\\n\\n[flow-validation-error] ${message}`;\n\t\t\t}\n\t\t},\n\t\tdispose: async () => {\n\t\t\truntimeGuard.release();\n\t\t},\n\t} satisfies Hooks;\n};\n\nexport default FlowPlugin;\n"
|
|
34
34
|
],
|
|
35
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,uBAAuB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAIO,IAAM,oBAAoB;;;ACkBjC,IAAM,mBAAsD;AAAA,EAC3D,MAAM;AAAA,EACN,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAChB;AAOO,IAAM,0BACZ,qBAAqB,IAAI,CAAC,UAAU;AAAA,EACnC,cAAc;AAAA,EACd,SAAS,iBAAiB;AAAA,EAC1B,IAAI;AAAA,EACJ,OAAO;AACR,EAAE;AAEH,IAAM,sBAAsB,IAAI,IAC/B,wBAAwB,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,QAAQ,CAAC,CAClE;AAEO,SAAS,eAAe,CAAC,IAA0C;AAAA,EACzE,MAAM,WAAW,oBAAoB,IAAI,EAAE;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAU,MAAM,IAAI,MAAM,kCAAkC,MAAM;AAAA,EACvE,OAAO;AAAA;AAGR,IAAI,oBAAoB,SAAS,kBAAkB,QAAQ;AAAA,EAC1D,MAAM,IAAI,MAAM,0DAA0D;AAC3E;;;AChDA,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuC3B,SAAS,SAAS,CAAC,IAA4B;AAAA,EAC9C,OAAO,gBAAgB,EAAE,EACvB,QAAQ,QAAQ,kCAAkC,EAAE,EACpD,KAAK;AAAA;AAGR,IAAM,mBAAmB;AAAA,EACxB,aAAa;AAAA,IACZ,UAAU;AAAA,IACV,QACC;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AAAA,EACA,YAAY;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AACD;AAKA,SAAS,cAAc,CAAC,SAAgD;AAAA,EACvE,MAAM,UAAU,iBAAiB;AAAA,EACjC,OAAO,GAAG,UAAU,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,EAAsB,QAAQ;AAAA;AAG5D,SAAS,wBAAwB,CACvC,SACS;AAAA,EACT,QAAQ;AAAA,SACF;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO,eAAe,OAAO;AAAA,SACzB;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,EAAE,KAAK;AAAA,CAAI;AAAA,SACP;AAAA,MACJ,OAAO,UAAU,aAAa;AAAA,SAC1B;AAAA,MACJ,OAAO;AAAA,aACC;AAAA,MACR,MAAM,cAAqB;AAAA,MAC3B,MAAM,IAAI,MAAM,oCAAoC,eAAe;AAAA,IACpE;AAAA;AAAA;;;ACzEK,IAAM,mBAAmB;AAAA,EAC/B,iBAAiB;AAAA,IAChB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aACC;AAAA,IACD,QAAQ,yBAAyB,eAAe;AAAA,IAChD,YAAY;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB,OAAO;AAAA,MACP,MAAM,EAAE,KAAK,OAAO;AAAA,MACpB,UAAU;AAAA,MACV,aAAa;AAAA,MACb,uBAAuB;AAAA,IACxB;AAAA,EACD;AAAA,EACA,eAAe;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aACC;AAAA,IACD,QAAQ,yBAAyB,aAAa;AAAA,IAC9C,YAAY;AAAA,MACX,MAAM;AAAA,QACL,KAAK;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,WAAW;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB,OAAO;AAAA,MACP,MAAM,EAAE,KAAK,OAAO;AAAA,MACpB,UAAU;AAAA,IACX;AAAA,EACD;AACD;AAEO,IAAM,qBAAqB;AAAA,EACjC,aAAa;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU,yBAAyB,WAAW;AAAA,EAC/C;AAAA,EACA,aAAa;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU,yBAAyB,WAAW;AAAA,EAC/C;AAAA,EACA,YAAY;AAAA,IACX,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU,yBAAyB,UAAU;AAAA,EAC9C;AAAA,EACA,eAAe;AAAA,IACd,aAAa;AAAA,IACb,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU,yBAAyB,aAAa;AAAA,EACjD;AAAA,EACA,eAAe;AAAA,IACd,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU,yBAAyB,aAAa;AAAA,EACjD;AACD;AAEA,SAAS,QAAQ,CAAC,KAAsB,MAAkC;AAAA,EACzE,MAAM,QAAQ,IAAI,OAAO,KAAK;AAAA,EAC9B,OAAO,QAAQ,QAAQ;AAAA;AAGxB,SAAS,aAAa,CACrB,KACA,WACC;AAAA,EACD,MAAM,MAAM,SAAS,KAAK,8BAA8B;AAAA,EACxD,IAAI,CAAC;AAAA,IAAK;AAAA,EACV,IAAI,CAAC,oBAAoB,KAAK,GAAG,KAAK,OAAO,GAAG,IAAI,MAAM;AAAA,IACzD,YACC,mFACD;AAAA,IACA;AAAA,EACD;AAAA,EACA,OAAO,OAAO,GAAG;AAAA;AAGX,SAAS,2BAA2B,CAAC,SAGzC;AAAA,EACF,MAAM,MAAM,SAAS,OAAO,QAAQ;AAAA,EACpC,MAAM,QAAQ,SAAS,KAAK,8BAA8B;AAAA,EAC1D,MAAM,QAAQ,cAAc,KAAK,SAAS,SAAS;AAAA,EACnD,OAAO;AAAA,IACN,OAAO;AAAA,MACN,iBAAiB;AAAA,WACb,iBAAiB;AAAA,WAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,WACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;AAAA,QACzB,YAAY;AAAA,aACR,iBAAiB,iBAAiB;AAAA,UACrC,MAAM,EAAE,KAAK,OAAO;AAAA,QACrB;AAAA,MACD;AAAA,MACA,eAAe;AAAA,WACX,iBAAiB;AAAA,QACpB,YAAY;AAAA,aACR,iBAAiB,eAAe;AAAA,UACnC,MAAM,EAAE,KAAK,OAAO;AAAA,QACrB;AAAA,MACD;AAAA,IACD;AAAA,IACA,SAAS,OAAO,YACf,OAAO,QAAQ,kBAAkB,EAAE,IAAI,EAAE,MAAM,WAAW;AAAA,MACzD;AAAA,MACA,KAAK,MAAM;AAAA,IACZ,CAAC,CACF;AAAA,EACD;AAAA;AAGM,SAAS,eAAe,CAC9B,QACA,SAIO;AAAA,EACP,MAAM,UAAU,4BAA4B;AAAA,OACvC,SAAS,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,EAC9D,CAAC;AAAA,EACD,WAAW,QAAQ,OAAO,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC9C,IAAI,OAAO,SAAS,QAAQ,OAAO;AAAA,MAClC,SAAS,cAAc,SAAS,IAAI;AAAA,EACtC;AAAA,EACA,WAAW,QAAQ,OAAO,KAAK,QAAQ,OAAO,GAAG;AAAA,IAChD,IAAI,OAAO,WAAW,QAAQ,OAAO;AAAA,MACpC,SAAS,cAAc,WAAW,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,QAAQ,KAAM,OAAO,SAAS,CAAC,MAAO,QAAQ,MAAM;AAAA,EAC3D,OAAO,UAAU,KAAM,OAAO,WAAW,CAAC,MAAO,QAAQ,QAAQ;AAAA;;;AChL3D,IAAM,wBAAwB;AAC9B,IAAM,oBAAoB;AAC1B,IAAM,iBAAiB,MAAM;AAC7B,IAAM,iBAAiB,KAAK;AAC5B,IAAM,gBAAgB;AACtB,IAAM,iBAAiB,IAAI;AAC3B,IAAM,0BAA0B;AAChC,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB,IAAI,OAAO;AACrC,IAAM,mBAAmB;AACzB,IAAM,wBAAwB,KAAK,OAAO;AAC1C,IAAM,yBAAyB,MAAM,OAAO;;;ACR5C,IAAM,wBACZ;AAEM,SAAS,cAAc,CAAC,OAAwB;AAAA,EACtD,IAAI,CAAC,SAAS,UAAU,MAAM,KAAK,KAAK,MAAM,SAAS,MAAI;AAAA,IAAG,OAAO;AAAA,EACrE,IAAI,MAAM,WAAW,GAAG,KAAK,aAAa,KAAK,KAAK;AAAA,IAAG,OAAO;AAAA,EAC9D,IAAI,MAAM,SAAS,IAAI;AAAA,IAAG,OAAO;AAAA,EACjC,OAAO,MACL,MAAM,GAAG,EACT,MAAM,CAAC,SAAS,SAAS,MAAM,SAAS,OAAO,SAAS,IAAI;AAAA;AAGxD,SAAS,cAAc,CAAC,WAA0C;AAAA,EACxE,MAAM,SAAmB,CAAC;AAAA,EAC1B,IAAI,UAAU,SAAS,eAAe;AAAA,IACrC,OAAO,KAAK,sCAAsC,sBAAsB;AAAA,EACzE;AAAA,EACA,WAAW,YAAY,WAAW;AAAA,IACjC,IAAI,CAAC,eAAe,SAAS,IAAI,GAAG;AAAA,MACnC,OAAO,KAAK,qBAAqB;AAAA,IAClC,EAAO,SAAI,OAAO,WAAW,SAAS,MAAM,MAAM,IAAI,gBAAgB;AAAA,MACrE,OAAO,KACN,sCAAsC,6BACvC;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;;;AC7BR;AAWA,SAAS,UAAU,CAAC,OAAwB;AAAA,EAC3C,IAAI,UAAU,QAAQ,OAAO,UAAU;AAAA,IAAU,OAAO,KAAK,UAAU,KAAK;AAAA,EAC5E,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,IAAI,MAAM,IAAI,UAAU,EAAE,KAAK,GAAG;AAAA,EACnE,MAAM,SAAS;AAAA,EACf,OAAO,IAAI,OAAO,KAAK,MAAM,EAC3B,KAAK,EACL,IAAI,CAAC,QAAQ,GAAG,KAAK,UAAU,GAAG,KAAK,WAAW,OAAO,IAAI,GAAG,EAChE,KAAK,GAAG;AAAA;AAGJ,SAAS,oBAAoB,CAAC,OAA8B;AAAA,EAClE,OAAO,UAAU,WAAW,QAAQ,EAAE,OAAO,WAAW,KAAK,CAAC,EAAE,OAAO,KAAK;AAAA;AAG7E,SAAS,2BAA2B,CAAC,SAAuC;AAAA,EAC3E,MAAM,UAAU,QAAQ;AAAA,EACxB,IAAI,CAAC;AAAA,IAAS,MAAM,IAAI,MAAM,yBAAyB;AAAA,EACvD,OAAO;AAAA,IACN,aAAa,QAAQ;AAAA,IACrB,kBAAkB,QAAQ,mBAAmB;AAAA,IAC7C,WAAW,QAAQ;AAAA,IACnB,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ;AAAA,EAClB;AAAA;AAGM,SAAS,qBAAqB,CAAC,SAAiC;AAAA,EACtE,MAAM,UAAU,QAAQ;AAAA,EACxB,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,IACC,QAAQ,mBAAmB,KAC3B,QAAQ,mBAAmB,QAAQ,UAClC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,YAAY,QAAQ,WAAW,KACpC,CAAC,cAAc,UAAU,OAAO,QAAQ,WACzC;AAAA,EACA,IAAI,CAAC;AAAA,IACJ,OAAO;AAAA,EACR,IAAI,UAAU,SAAS,iBAAiB;AAAA,IACvC,OAAO;AAAA,EACR;AAAA,EACA,IAAI,UAAU,sBAAsB,QAAQ,kBAAkB;AAAA,IAC7D,OAAO;AAAA,EACR;AAAA,EACA,IACC,UAAU,gBACV,qBAAqB,4BAA4B,OAAO,CAAC,GACxD;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,mBAAmB,CAClC,SAC6B;AAAA,EAC7B,IAAI,CAAC,QAAQ,WAAW,sBAAsB,OAAO;AAAA,IAAG,OAAO;AAAA,EAC/D,OAAO,4BAA4B,OAAO;AAAA;;;ACtEpC,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAE3B,SAAS,WAAW,CAAC,OAAwB;AAAA,EACnD,OAAO,mBAAmB,KAAK,KAAK;AAAA;;;ACA9B,SAAS,SAAS,CAAC,MAA2B;AAAA,EACpD,IAAI,OAAO,WAAW,KAAK,UAAU,IAAI,GAAG,MAAM,IAAI,gBAAgB;AAAA,IACrE,OAAO,8BAA8B;AAAA,EACtC;AAAA,EACA,IAAI,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,mBAAmB;AAAA,IACzE,OAAO,yBAAyB;AAAA,EACjC;AAAA,EACA,MAAM,MAAM,IAAI;AAAA,EAChB,WAAW,WAAW,KAAK,UAAU;AAAA,IACpC,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,MAAG,OAAO,uBAAuB,QAAQ;AAAA,IACpE,IAAI,IAAI,IAAI,QAAQ,EAAE;AAAA,MAAG,OAAO,yBAAyB,QAAQ;AAAA,IACjE,IAAI,IAAI,QAAQ,EAAE;AAAA,EACnB;AAAA,EACA,WAAW,WAAW,KAAK,UAAU;AAAA,IACpC,WAAW,cAAc,QAAQ,WAAW;AAAA,MAC3C,IAAI,CAAC,IAAI,IAAI,UAAU,GAAG;AAAA,QACzB,OAAO,YAAY,QAAQ,mCAAmC;AAAA,MAC/D;AAAA,MACA,IAAI,eAAe,QAAQ,IAAI;AAAA,QAC9B,OAAO,YAAY,QAAQ;AAAA,MAC5B;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AAAA,EACxE,MAAM,WAAW,IAAI,IACpB,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAa,CAAC,CAC5D;AAAA,EACA,WAAW,WAAW,KAAK,UAAU;AAAA,IACpC,WAAW,cAAc,IAAI,IAAI,QAAQ,SAAS,GAAG;AAAA,MACpD,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAK,KAAK,CAAC;AAAA,MAC5D,SAAS,IAAI,UAAU,GAAG,KAAK,QAAQ,EAAE;AAAA,IAC1C;AAAA,EACD;AAAA,EACA,MAAM,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,EAClC,OAAO,IAAI,YAAY,WAAW,CAAC,EACnC,IAAI,EAAE,QAAQ,EAAE;AAAA,EAClB,IAAI,UAAU;AAAA,EACd,OAAO,MAAM,SAAS,GAAG;AAAA,IACxB,MAAM,KAAK,MAAM,MAAM;AAAA,IACvB,IAAI,CAAC;AAAA,MAAI;AAAA,IACT,WAAW;AAAA,IACX,WAAW,SAAS,SAAS,IAAI,EAAE,KAAK,CAAC,GAAG;AAAA,MAC3C,MAAM,QAAQ,SAAS,IAAI,KAAK,KAAK,KAAK;AAAA,MAC1C,SAAS,IAAI,OAAO,IAAI;AAAA,MACxB,IAAI,SAAS;AAAA,QAAG,MAAM,KAAK,KAAK;AAAA,IACjC;AAAA,EACD;AAAA,EACA,OAAO,YAAY,KAAK,SAAS,SAC9B,OACA;AAAA;;;ACMG,SAAS,0BAA0B,CACzC,QACC;AAAA,EACD,MAAM,SAGD,CAAC;AAAA,EACN,MAAM,WAAW,OAAO,SAAS,KAChC,CAAC,YAAY,QAAQ,aAAa,UACnC;AAAA,EACA,YAAY,OAAO,YAAY,OAAO,SAAS,QAAQ,GAAG;AAAA,IACzD,IAAI,QAAQ,aAAa,cAAc,CAAC,QAAQ,UAAU,KAAK,GAAG;AAAA,MACjE,OAAO,KAAK;AAAA,QACX,MAAM,CAAC,YAAY,OAAO,UAAU;AAAA,QACpC,SAAS;AAAA,MACV,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EACA,IAAI,OAAO,YAAY,YAAY,CAAC,UAAU;AAAA,IAC7C,OAAO,KAAK;AAAA,MACX,MAAM,CAAC,UAAU;AAAA,MACjB,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,IAAI,OAAO,YAAY,YAAY,UAAU;AAAA,IAC5C,OAAO,KAAK;AAAA,MACX,MAAM,CAAC,UAAU;AAAA,MACjB,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,IACC,OAAO,wBAAwB,0BAC/B,OAAO,YAAY,UAClB;AAAA,IACD,OAAO,KAAK;AAAA,MACX,MAAM,CAAC,qBAAqB;AAAA,MAC5B,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;ACnED,MAAM,4BAA4B,MAAM;AAAA,EACrC,OAAO;AACjB;AA8CA,SAAS,IAAI,CAAC,SAAwB;AAAA,EACrC,MAAM,IAAI,oBAAoB,OAAO;AAAA;AAGtC,SAAS,IAAO,CAAC,OAAa;AAAA,EAC7B,OAAO,gBAAgB,KAAK;AAAA;AAG7B,SAAS,iBAAiB,CAAC,aAA2B;AAAA,EACrD,IAAI,CAAC,sCAAsC,KAAK,WAAW,GAAG;AAAA,IAC7D,KAAK,yDAAyD;AAAA,EAC/D;AAAA;AAGD,SAAS,iBAAiB,CACzB,SACA,MACA,aACA,OACyB;AAAA,EACzB,kBAAkB,WAAW;AAAA,EAC7B,MAAM,WAAW,QAAQ,WAAW,KAAK,CAAC,SAAS,KAAK,OAAO,WAAW;AAAA,EAC1E,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,IACC,SAAS,SAAS,QAClB,SAAS,gBAAgB,qBAAqB,KAAK,GAClD;AAAA,IACD,KAAK,kDAAkD;AAAA,EACxD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,cAAc,CAAC,SAAkB,kBAAgC;AAAA,EACzE,IAAI,qBAAqB,QAAQ,UAAU;AAAA,IAC1C,KACC,kBAAkB,0DAA0D,QAAQ,WACrF;AAAA,EACD;AAAA;AAGD,SAAS,MAAM,CACd,SACA,MACA,aACA,OACA,QACA,UACU;AAAA,EACV,MAAM,WAAW,QAAQ,WAAW;AAAA,EACpC,MAAM,QAAQ,KAAK,OAAO;AAAA,EAC1B,MAAM,UAAU,OAAO,OAAO,QAAQ;AAAA,EACtC,OAAO;AAAA,OACH;AAAA,IACH;AAAA,IACA,YAAY;AAAA,MACX,GAAG,QAAQ;AAAA,MACX;AAAA,QACC,IAAI;AAAA,QACJ;AAAA,QACA,aAAa,qBAAqB,KAAK;AAAA,QACvC,mBAAmB;AAAA,WACf,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAAA;AAGD,SAAS,aAAa,CAAC,SAAwB;AAAA,EAC9C,IAAI,QAAQ;AAAA,IAAS,KAAK,+CAA+C;AAAA;AAG1E,SAAS,UAAU,CAAC,MAAkB;AAAA,EACrC,MAAM,QAAQ,UAAU,IAAI;AAAA,EAC5B,IAAI;AAAA,IAAO,KAAK,KAAK;AAAA;AAGtB,SAAS,eAAe,CAAC,WAAsC;AAAA,EAC9D,MAAM,QAAQ,eAAe,SAAS,EAAE;AAAA,EACxC,IAAI;AAAA,IAAO,KAAK,KAAK;AAAA;AAGtB,SAAS,UAAU,CAAC,SAAkB,WAAsC;AAAA,EAC3E,OACC,CAAC,GAAG,QAAQ,IAAI,EACd,QAAQ,EACR,KACA,CAAC,QAAQ,IAAI,cAAc,aAAa,IAAI,UAAU,YACvD,KAAK;AAAA;AAID,SAAS,SAAS,CAAC,SAAqC;AAAA,EAC9D,OAAO,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,UAAU,QAAQ,KAAK;AAAA;AAGvD,SAAS,iBAAiB,CAChC,SACA,WACU;AAAA,EACV,OAAO,WAAW,SAAS,SAAS,GAAG,UAAU;AAAA;AAG3C,SAAS,aAAa,CAAC,SAAiC;AAAA,EAC9D,IAAI,QAAQ;AAAA,IAAS,OAAO;AAAA,EAC5B,IAAI,CAAC,QAAQ,QAAQ,QAAQ,aAAa;AAAA,IAAW,OAAO;AAAA,EAC5D,IAAI,UAAU,OAAO;AAAA,IAAG,OAAO;AAAA,EAC/B,IACC,QAAQ,KAAK,SAAS,KACrB,CAAC,YAAY,WAAW,SAAS,QAAQ,EAAE,GAAG,UAAU,SACzD,GACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,IACC,QAAQ,KAAK,SAAS,MAAM,CAAC,YAC5B,kBAAkB,SAAS,QAAQ,EAAE,CACtC,GACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,QAAQ,CACvB,SACA,OACA,aACuB;AAAA,EACvB,WAAW,MAAM,IAAI;AAAA,EACrB,IAAI,CAAC,SAAS;AAAA,IACb,IAAI,MAAM,qBAAqB,GAAG;AAAA,MACjC,KAAK,wDAAwD;AAAA,IAC9D;AAAA,IACA,MAAM,YAAY,YAAY,MAAM,SAAS;AAAA,IAC7C,IAAI,UAAU,SAAS;AAAA,MACtB,KAAK,mCAAmC;AAAA,IACzC,MAAM,UAAmB;AAAA,MACxB,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,MAAM,MAAM;AAAA,MACZ,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,MACP,YAAY,CAAC;AAAA,MACb,SAAS;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACN,SAAS,OACR,SACA,aACA,MAAM,aACN,OACA,CAAC,WAAW;AAAA,WACR;AAAA,QACH,MAAM,KAAK,MAAM,IAAI;AAAA,MACtB,EACD;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACX;AAAA,EACD;AAAA,EACA,MAAM,SAAS,kBACd,SACA,aACA,MAAM,aACN,KACD;AAAA,EACA,IAAI;AAAA,IAAQ,OAAO,EAAE,SAAS,OAAO,MAAM,UAAU,KAAK;AAAA,EAC1D,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,IAAI,QAAQ,aAAa;AAAA,IAAY,KAAK,gCAAgC;AAAA,EAC1E,IAAI,QAAQ,SAAS,MAAM,MAAM;AAAA,IAChC,KAAK,4DAA4D;AAAA,EAClE;AAAA,EACA,OAAO;AAAA,IACN,SAAS,OACR,SACA,aACA,MAAM,aACN,OACA,CAAC,WAAW;AAAA,SACR;AAAA,MACH,MAAM,KAAK,MAAM,IAAI;AAAA,IACtB,EACD;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACX;AAAA;AAGM,SAAS,WAAW,CAC1B,SACA,OACuB;AAAA,EACvB,MAAM,SAAS,kBACd,SACA,gBACA,MAAM,aACN,KACD;AAAA,EACA,IAAI;AAAA,IAAQ,OAAO,EAAE,SAAS,OAAO,MAAM,UAAU,KAAK;AAAA,EAC1D,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,IAAI,CAAC,QAAQ;AAAA,IAAM,KAAK,kCAAkC;AAAA,EAC1D,IAAI,QAAQ,aAAa;AAAA,IAAY,KAAK,+BAA+B;AAAA,EACzE,OAAO;AAAA,IACN,SAAS,OACR,SACA,gBACA,MAAM,aACN,OACA,CAAC,WAAW;AAAA,SACR;AAAA,MACH,UAAU;AAAA,IACX,EACD;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACX;AAAA;AAGD,SAAS,mBAAmB,CAAC,SAAoC;AAAA,EAChE,IAAI,CAAC,QAAQ;AAAA,IAAM,OAAO;AAAA,EAC1B,WAAW,WAAW,QAAQ,KAAK,UAAU;AAAA,IAC5C,MAAM,QAAQ,WAAW,SAAS,QAAQ,EAAE,GAAG;AAAA,IAC/C,IAAI,UAAU;AAAA,MAAa;AAAA,IAC3B,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,QAAQ,UAAU,MAAM,CAAC,OAAO,kBAAkB,SAAS,EAAE,CAAC,GAAG;AAAA,MACpE,OAAO,QAAQ;AAAA,IAChB;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,QAAQ,CACvB,SACA,OAKA,aAC6B;AAAA,EAC7B,MAAM,SAAS,kBACd,SACA,aACA,MAAM,aACN,KACD;AAAA,EACA,IAAI,QAAQ;AAAA,IACX,MAAM,MAAM,QAAQ,KAAK,KAAK,CAAC,SAAS,KAAK,OAAO,OAAO,QAAQ;AAAA,IACnE,IAAI,CAAC;AAAA,MAAK,KAAK,oCAAoC;AAAA,IACnD,OAAO,EAAE,SAAS,OAAO,KAAK,UAAU,KAAK;AAAA,EAC9C;AAAA,EACA,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,IAAI,CAAC,QAAQ,QAAQ,QAAQ,aAAa,YAAY;AAAA,IACrD,KAAK,2CAA2C;AAAA,EACjD;AAAA,EACA,IAAI,UAAU,OAAO;AAAA,IAAG,KAAK,qCAAqC;AAAA,EAClE,MAAM,UAAU,QAAQ,KAAK,SAAS,KACrC,CAAC,aAAY,WAAW,SAAS,SAAQ,EAAE,GAAG,UAAU,SACzD;AAAA,EACA,IAAI,SAAS;AAAA,IACZ,KAAK,0BAA0B,QAAQ,kCAAkC;AAAA,EAC1E;AAAA,EACA,MAAM,YAAY,MAAM,aAAa,oBAAoB,OAAO;AAAA,EAChE,IAAI,CAAC;AAAA,IAAW,KAAK,mCAAmC;AAAA,EACxD,MAAM,UAAU,QAAQ,KAAK,SAAS,KAAK,CAAC,SAAS,KAAK,OAAO,SAAS;AAAA,EAC1E,IAAI,CAAC;AAAA,IAAS,KAAK,oBAAoB,aAAa;AAAA,EACpD,MAAM,WAAW,WAAW,SAAS,SAAS;AAAA,EAC9C,IAAI,UAAU,UAAU;AAAA,IACvB,KAAK,YAAY,yBAAyB;AAAA,EAC3C,IAAI,UAAU,UAAU,WAAW;AAAA,IAClC,KAAK,0BAA0B,gCAAgC;AAAA,EAChE;AAAA,EACA,IAAI,CAAC,QAAQ,UAAU,MAAM,CAAC,OAAO,kBAAkB,SAAS,EAAE,CAAC,GAAG;AAAA,IACrE,KAAK,YAAY,yCAAyC;AAAA,EAC3D;AAAA,EACA,MAAM,QAAQ,YAAY,MAAM,KAAK;AAAA,EACrC,MAAM,UACL,QAAQ,KAAK,OAAO,CAAC,QAAQ,IAAI,cAAc,SAAS,EAAE,SAAS;AAAA,EACpE,IAAI,UAA6B;AAAA,EACjC,MAAM,OAAO,OACZ,SACA,aACA,MAAM,aACN,OACA,CAAC,OAAO,aAAa;AAAA,IACpB,UAAU;AAAA,MACT,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,kBAAkB,CAAC;AAAA,MACnB,aAAa,CAAC;AAAA,MACd,SAAS,CAAC;AAAA,IACX;AAAA,IACA,OAAO,KAAK,OAAO,MAAM,CAAC,GAAG,MAAM,MAAM,OAAO,EAAE;AAAA,KAEnD,KACD;AAAA,EACA,IAAI,CAAC;AAAA,IAAS,KAAK,wCAAwC;AAAA,EAC3D,OAAO,EAAE,SAAS,MAAM,OAAO,SAAS,UAAU,MAAM;AAAA;AAGlD,SAAS,gBAAgB,CAC/B,SACA,OAWwC;AAAA,EACxC,IAAI,MAAM,UAAU,SAAS,KAAK,MAAM,UAAU,SAAS,KAAK;AAAA,IAC/D,KAAK,sDAAsD;AAAA,EAC5D;AAAA,EACA,MAAM,QAAQ,QAAQ,KACpB,QAAQ,CAAC,SAAQ,KAAI,WAAW,EAChC,KAAK,CAAC,eAAe,WAAW,OAAO,MAAM,SAAS;AAAA,EACxD,IAAI,OAAO;AAAA,IACV,IACC,MAAM,cAAc,MAAM,aAC1B,MAAM,UAAU,MAAM,SACtB,MAAM,UAAU,MAAM,SACtB,MAAM,YAAY,MAAM,WACxB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,aAAa,MAAM,YACzB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,mBAAmB,MAAM,gBAC9B;AAAA,MACD,KACC,qEACD;AAAA,IACD;AAAA,IACA,OAAO,EAAE,SAAS,OAAO,OAAO,UAAU,KAAK;AAAA,EAChD;AAAA,EACA,cAAc,OAAO;AAAA,EACrB,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,SAAS,IAAI,cAAc,MAAM,WAAW;AAAA,IACxE,KAAK,yDAAyD;AAAA,EAC/D;AAAA,EACA,IAAI,IAAI,QAAQ,SAAS,GAAG;AAAA,IAC3B,KAAK,uDAAuD;AAAA,EAC7D;AAAA,EACA,IAAI,IAAI,YAAY,UAAU,yBAAyB;AAAA,IACtD,KACC,qCAAqC,kDACtC;AAAA,EACD;AAAA,EACA,MAAM,WAAW,QAAQ,WAAW;AAAA,EACpC,MAAM,cAAqC;AAAA,IAC1C,IAAI,MAAM;AAAA,IACV,WAAW,MAAM;AAAA,IACjB,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,IACb,SAAS,MAAM;AAAA,IACf,cAAc,MAAM;AAAA,IACpB,UAAU,MAAM;AAAA,IAChB,cAAc,MAAM;AAAA,IACpB,gBAAgB,MAAM;AAAA,IACtB,kBAAkB;AAAA,EACnB;AAAA,EACA,MAAM,QAAQ,KAAK,OAAO;AAAA,EAC1B,MAAM,OAAO,MAAM,KAAK,IAAI,CAAC,SAC5B,KAAK,OAAO,IAAI,KACb,KAAK,MAAM,aAAa,CAAC,GAAG,KAAK,aAAa,WAAW,EAAE,IAC3D,IACJ;AAAA,EACA,OAAO;AAAA,IACN,SAAS,KAAK,OAAO,UAAU,KAAK;AAAA,IACpC,OAAO;AAAA,IACP,UAAU;AAAA,EACX;AAAA;AAGD,SAAS,iBAAiB,CAAC,SAAkB,KAA0B;AAAA,EACtE,IAAI,CAAC,QAAQ;AAAA,IAAM,OAAO;AAAA,EAC1B,OAAO,QAAQ,KAAK,SAAS,MAC5B,CAAC,YACA,QAAQ,OAAO,IAAI,aAAa,kBAAkB,SAAS,QAAQ,EAAE,CACvE;AAAA;AAGM,SAAS,WAAW,CAC1B,SACA,OACA,aACmC;AAAA,EACnC,gBAAgB,MAAM,gBAAgB;AAAA,EACtC,MAAM,SAAS,kBACd,SACA,gBACA,MAAM,aACN,KACD;AAAA,EACA,IAAI,QAAQ;AAAA,IACX,MAAM,aAAa,QAAQ,KACzB,QAAQ,CAAC,SAAQ,KAAI,OAAO,EAC5B,KAAK,CAAC,WAAW,OAAO,OAAO,OAAO,QAAQ;AAAA,IAChD,IAAI,CAAC;AAAA,MAAY,KAAK,kDAAkD;AAAA,IACxE,OAAO,EAAE,SAAS,OAAO,YAAY,UAAU,KAAK;AAAA,EACrD;AAAA,EACA,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,IAAI,CAAC,OAAO,IAAI,cAAc,MAAM,WAAW;AAAA,IAC9C,KAAK,4CAA4C;AAAA,EAClD;AAAA,EACA,IAAI,IAAI,QAAQ,KAAK,CAAC,WAAW,OAAO,WAAW,IAAI,GAAG;AAAA,IACzD,KAAK,yDAAyD;AAAA,EAC/D;AAAA,EACA,IAAI,IAAI,QAAQ,SAAS,GAAG;AAAA,IAC3B,KAAK,wDAAwD;AAAA,EAC9D;AAAA,EACA,MAAM,OAAO,kBAAkB,SAAS,GAAG,IAAI,UAAU;AAAA,EACzD,MAAM,aAAa,IAAI,YAAY,OAClC,CAAC,eACA,WAAW,aAAa,KACxB,WAAW,kBACX,WAAW,iBAAiB,MAAM,iBACjC,SAAS,aAAa,WAAW,UAAU,QAC9C;AAAA,EACA,IAAI,WAAW,WAAW,GAAG;AAAA,IAC5B,KACC,SAAS,UACN,sFACA,uEACJ;AAAA,EACD;AAAA,EACA,MAAM,eAAe,YAAY,MAAM,QAAQ;AAAA,EAC/C,IAAI,UAAmC;AAAA,EACvC,MAAM,OAAO,OACZ,SACA,gBACA,MAAM,aACN,OACA,CAAC,OAAO,aAAa;AAAA,IACpB,UAAU;AAAA,MACT,IAAI;AAAA,MACJ,aAAa,MAAM;AAAA,MACnB,WAAW,MAAM;AAAA,MACjB,OAAO,IAAI;AAAA,MACX;AAAA,MACA,cAAc,MAAM;AAAA,MACpB,eAAe,WAAW,IAAI,CAAC,eAAe,WAAW,EAAE;AAAA,MAC3D,QAAQ;AAAA,QACP,SAAS,MAAM,OAAO;AAAA,QACtB,YAAY,CAAC,GAAG,MAAM,OAAO,UAAU;AAAA,MACxC;AAAA,MACA,iBAAiB;AAAA,MACjB,QAAQ;AAAA,IACT;AAAA,IACA,OAAO;AAAA,SACH;AAAA,MACH,MAAM,MAAM,KAAK,IAAI,CAAC,SACrB,KAAK,OAAO,IAAI,KACb;AAAA,WACG;AAAA,QACH,kBAAkB,MAAM,iBAAiB,IAAI,CAAC,cAAc;AAAA,aACxD;AAAA,QACJ,EAAE;AAAA,QACF,SAAS,CAAC,GAAG,KAAK,SAAS,OAA2B;AAAA,MACvD,IACC,IACJ;AAAA,IACD;AAAA,KAED,YACD;AAAA,EACA,IAAI,CAAC;AAAA,IAAS,KAAK,8CAA8C;AAAA,EACjE,OAAO,EAAE,SAAS,MAAM,OAAO,SAAS,UAAU,MAAM;AAAA;AAGzD,SAAS,kBAAkB,CAC1B,QACO;AAAA,EACP,IAAI,OAAO,SAAS,SAAS,qBAAqB;AAAA,IACjD,KAAK,gCAAgC,+BAA+B;AAAA,EACrE;AAAA,EACA,MAAM,QAAQ,2BAA2B,MAAM,EAAE;AAAA,EACjD,IAAI;AAAA,IAAO,KAAK,MAAM,OAAO;AAAA;AAGvB,SAAS,eAAe,CAC9B,SACA,OAC6B;AAAA,EAC7B,mBAAmB,MAAM,MAAM;AAAA,EAC/B,MAAM,SAAS,kBACd,SACA,oBACA,MAAM,aACN,KACD;AAAA,EACA,IAAI,QAAQ;AAAA,IACX,MAAM,OAAM,QAAQ,KAAK,KAAK,CAAC,SAAS,KAAK,OAAO,OAAO,QAAQ;AAAA,IACnE,IAAI,CAAC;AAAA,MAAK,KAAK,4CAA4C;AAAA,IAC3D,OAAO,EAAE,SAAS,OAAO,MAAK,UAAU,KAAK;AAAA,EAC9C;AAAA,EACA,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,IAAI,CAAC,OAAO,IAAI,cAAc,MAAM,WAAW;AAAA,IAC9C,KAAK,gDAAgD;AAAA,EACtD;AAAA,EACA,MAAM,aAAa,IAAI,QAAQ,KAC9B,CAAC,WAAW,OAAO,OAAO,MAAM,YACjC;AAAA,EACA,IAAI,CAAC,cAAc,WAAW,QAAQ;AAAA,IACrC,KAAK,2DAA2D;AAAA,EACjE;AAAA,EACA,MAAM,OAAO,OACZ,SACA,oBACA,MAAM,aACN,OACA,CAAC,OAAO,cAAc;AAAA,OAClB;AAAA,IACH,MAAM,MAAM,KAAK,IAAI,CAAC,SAAS;AAAA,MAC9B,IAAI,KAAK,OAAO,IAAI;AAAA,QAAI,OAAO;AAAA,MAC/B,OAAO;AAAA,WACH;AAAA,QACH,OAAO,MAAM,OAAO,YAAY,WAAW,cAAc;AAAA,QACzD,SAAS,MAAM;AAAA,QACf,SAAS,KAAK,QAAQ,IAAI,CAAC,WAC1B,OAAO,OAAO,WAAW,KACtB;AAAA,aACG;AAAA,UACH,QAAQ;AAAA,eACJ,MAAM;AAAA,YACT,UAAU,MAAM,OAAO,SAAS,IAC/B,CAAC,aAA4B,KAAK,QAAQ,EAC3C;AAAA,YACA,kBAAkB;AAAA,UACnB;AAAA,QACD,IACC,MACJ;AAAA,MACD;AAAA,KACA;AAAA,EACF,IACA,IAAI,EACL;AAAA,EACA,MAAM,YAAY,KAAK,KAAK,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,EAAE;AAAA,EAC7D,IAAI,CAAC;AAAA,IAAW,KAAK,wCAAwC;AAAA,EAC7D,OAAO,EAAE,SAAS,MAAM,OAAO,WAAW,UAAU,MAAM;AAAA;AAG3D,SAAS,gBAAgB,CAAC,MAAY,WAAgC;AAAA,EACrE,MAAM,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC;AAAA,EACpC,IAAI,UAAU;AAAA,EACd,OAAO,SAAS;AAAA,IACf,UAAU;AAAA,IACV,WAAW,WAAW,KAAK,UAAU;AAAA,MACpC,IACC,CAAC,SAAS,IAAI,QAAQ,EAAE,KACxB,QAAQ,UAAU,KAAK,CAAC,eAAe,SAAS,IAAI,UAAU,CAAC,GAC9D;AAAA,QACD,SAAS,IAAI,QAAQ,EAAE;AAAA,QACvB,UAAU;AAAA,MACX;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,YAAY,CAC3B,SACA,OAC2B;AAAA,EAC3B,MAAM,SAAS,kBACd,SACA,iBACA,MAAM,aACN,KACD;AAAA,EACA,IAAI,QAAQ;AAAA,IACX,IAAI,CAAC,QAAQ;AAAA,MAAM,KAAK,0CAA0C;AAAA,IAClE,OAAO;AAAA,MACN;AAAA,MACA,OAAO,CAAC,GAAG,iBAAiB,QAAQ,MAAM,MAAM,SAAS,CAAC;AAAA,MAC1D,UAAU;AAAA,IACX;AAAA,EACD;AAAA,EACA,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,IAAI,CAAC,QAAQ,QAAQ,QAAQ,aAAa,YAAY;AAAA,IACrD,KAAK,kCAAkC;AAAA,EACxC;AAAA,EACA,IACC,CAAC,QAAQ,KAAK,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,MAAM,SAAS,GACtE;AAAA,IACD,KAAK,oBAAoB,MAAM,aAAa;AAAA,EAC7C;AAAA,EACA,MAAM,WAAW,WAAW,SAAS,MAAM,SAAS;AAAA,EACpD,IACC,CAAC,YACA,SAAS,UAAU,YAAY,SAAS,UAAU,WAClD;AAAA,IACD,KAAK,kDAAkD;AAAA,EACxD;AAAA,EACA,MAAM,WAAW,iBAAiB,QAAQ,MAAM,MAAM,SAAS;AAAA,EAC/D,MAAM,MAAM,CAAC,GAAG,QAAQ;AAAA,EACxB,OAAO;AAAA,IACN,SAAS,OACR,SACA,iBACA,MAAM,aACN,OACA,CAAC,WAAW;AAAA,SACR;AAAA,MACH,MAAM,MAAM,KAAK,IAAI,CAAC,QACrB,SAAS,IAAI,IAAI,SAAS,KAAK,IAAI,UAAU,eAC1C,KAAK,KAAK,OAAO,aAAa,IAC9B,GACJ;AAAA,IACD,EACD;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACX;AAAA;AAGM,SAAS,YAAY,CAC3B,SACA,OACiC;AAAA,EACjC,MAAM,SAAS,kBACd,SACA,iBACA,MAAM,aACN,KACD;AAAA,EACA,IAAI,QAAQ;AAAA,IACX,IAAI,CAAC,QAAQ;AAAA,MAAS,KAAK,kCAAkC;AAAA,IAC7D,OAAO,EAAE,SAAS,OAAO,QAAQ,SAAS,UAAU,KAAK;AAAA,EAC1D;AAAA,EACA,eAAe,SAAS,MAAM,gBAAgB;AAAA,EAC9C,IAAI,QAAQ,OAAO,MAAM;AAAA,IACxB,KAAK,wCAAwC;AAAA,EAC9C,cAAc,OAAO;AAAA,EACrB,IAAI,MAAM,SAAS,eAAe,cAAc,OAAO,MAAM,aAAa;AAAA,IACzE,KAAK,kEAAkE;AAAA,EACxE;AAAA,EACA,IAAI,UAAiC;AAAA,EACrC,MAAM,OAAO,OACZ,SACA,iBACA,MAAM,aACN,OACA,CAAC,OAAO,aAAa;AAAA,IACpB,UAAU;AAAA,MACT,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,aAAa,MAAM;AAAA,MACnB,kBAAkB;AAAA,IACnB;AAAA,IACA,OAAO;AAAA,SACH;AAAA,MACH,MAAM,MAAM,KAAK,IAAI,CAAC,QACrB,IAAI,UAAU,WAAW,KAAK,KAAK,OAAO,aAAa,IAAI,GAC5D;AAAA,MACA;AAAA,IACD;AAAA,GAEF;AAAA,EACA,IAAI,CAAC;AAAA,IAAS,KAAK,oCAAoC;AAAA,EACvD,OAAO,EAAE,SAAS,MAAM,OAAO,SAAS,UAAU,MAAM;AAAA;AAGzD,SAAS,mBAAmB,CAC3B,SACA,WACA,UACU;AAAA,EACV,OAAO,QAAQ,KAAK,KACnB,CAAC,QACA,IAAI,cAAc,aAClB,IAAI,QAAQ,KACX,CAAC,WACA,OAAO,QAAQ,YAAY,YAC3B,OAAO,OAAO,mBAAmB,QACnC,CACF;AAAA;AAGM,SAAS,sBAAsB,CAAC,SAA4B;AAAA,EAClE,MAAM,SAAmB,CAAC;AAAA,EAC1B,IAAI,QAAQ,YAAY;AAAA,IAAG,OAAO,KAAK,4BAA4B;AAAA,EACnE,IAAI,CAAC,OAAO,cAAc,QAAQ,QAAQ,KAAK,QAAQ,WAAW,GAAG;AAAA,IACpE,OAAO,KAAK,sDAAsD;AAAA,EACnE;AAAA,EACA,MAAM,eAAe,IAAI;AAAA,EACzB,WAAW,aAAa,QAAQ,YAAY;AAAA,IAC3C,IAAI,aAAa,IAAI,UAAU,EAAE,GAAG;AAAA,MACnC,OAAO,KAAK,2BAA2B,UAAU,MAAM;AAAA,IACxD;AAAA,IACA,aAAa,IAAI,UAAU,EAAE;AAAA,IAC7B,IACC,UAAU,oBAAoB,KAC9B,UAAU,oBAAoB,QAAQ,UACrC;AAAA,MACD,OAAO,KAAK,cAAc,UAAU,8BAA8B;AAAA,IACnE;AAAA,EACD;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IACpB,MAAM,eAAe,sBAAsB,OAAO;AAAA,IAClD,IAAI;AAAA,MAAc,OAAO,KAAK,YAAY;AAAA,IAC1C,IAAI,QAAQ,QAAQ,SAAS,eAAe,CAAC,QAAQ,MAAM;AAAA,MAC1D,OAAO,KAAK,sCAAsC;AAAA,IACnD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,QAAQ,MAAM;AAAA,IAClB,IAAI,QAAQ,aAAa;AAAA,MACxB,OAAO,KAAK,2BAA2B;AAAA,IACxC,IAAI,QAAQ,KAAK,SAAS;AAAA,MAAG,OAAO,KAAK,sBAAsB;AAAA,IAC/D,OAAO;AAAA,EACR;AAAA,EACA,IAAI;AAAA,IACH,WAAW,QAAQ,IAAI;AAAA,IACtB,OAAO,OAAO;AAAA,IACf,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAAA,EAEnE,MAAM,aAAa,IAAI,IACtB,QAAQ,KAAK,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE,CAClD;AAAA,EACA,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,gBAAgB,IAAI;AAAA,EAC1B,MAAM,YAAY,IAAI;AAAA,EACtB,IAAI,cAAc;AAAA,EAClB,WAAW,OAAO,QAAQ,MAAM;AAAA,IAC/B,IAAI,OAAO,IAAI,IAAI,EAAE;AAAA,MAAG,OAAO,KAAK,qBAAqB,IAAI,MAAM;AAAA,IACnE,OAAO,IAAI,IAAI,EAAE;AAAA,IACjB,IAAI,CAAC,WAAW,IAAI,IAAI,SAAS;AAAA,MAChC,OAAO,KAAK,QAAQ,IAAI,0BAA0B;AAAA,IACnD,IAAI,IAAI,kBAAkB,KAAK,IAAI,kBAAkB,QAAQ,UAAU;AAAA,MACtE,OAAO,KAAK,QAAQ,IAAI,oCAAoC;AAAA,IAC7D;AAAA,IACA,IAAI,IAAI,QAAQ,SAAS,GAAG;AAAA,MAC3B,OAAO,KAAK,QAAQ,IAAI,+BAA+B;AAAA,IACxD;AAAA,IACA,IAAI,IAAI,YAAY,SAAS,yBAAyB;AAAA,MACrD,OAAO,KACN,QAAQ,IAAI,qBAAqB,sCAClC;AAAA,IACD;AAAA,IACA,WAAW,SAAS,eAAe,IAAI,gBAAgB,GAAG;AAAA,MACzD,OAAO,KAAK,QAAQ,IAAI,QAAQ,OAAO;AAAA,IACxC;AAAA,IACA,IAAI,IAAI,UAAU;AAAA,MAAU,eAAe;AAAA,IAC3C,MAAM,mBAAmB,IAAI;AAAA,IAC7B,WAAW,cAAc,IAAI,aAAa;AAAA,MACzC,IAAI,cAAc,IAAI,WAAW,EAAE,GAAG;AAAA,QACrC,OAAO,KAAK,4BAA4B,WAAW,MAAM;AAAA,MAC1D;AAAA,MACA,cAAc,IAAI,WAAW,EAAE;AAAA,MAC/B,iBAAiB,IAAI,WAAW,EAAE;AAAA,MAClC,IACC,WAAW,UAAU,IAAI,MACzB,WAAW,cAAc,IAAI,WAC5B;AAAA,QACD,OAAO,KACN,eAAe,WAAW,mCAC3B;AAAA,MACD;AAAA,MACA,IAAI,WAAW,mBAAmB,QAAQ,UAAU;AAAA,QACnD,OAAO,KAAK,eAAe,WAAW,gCAAgC;AAAA,MACvE;AAAA,MACA,IAAI,WAAW,oBAAoB,IAAI,iBAAiB;AAAA,QACvD,OAAO,KAAK,eAAe,WAAW,uBAAuB;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,WAAW,UAAU,IAAI,SAAS;AAAA,MACjC,IAAI,UAAU,IAAI,OAAO,EAAE;AAAA,QAC1B,OAAO,KAAK,wBAAwB,OAAO,MAAM;AAAA,MAClD,UAAU,IAAI,OAAO,EAAE;AAAA,MACvB,IAAI,OAAO,UAAU,IAAI,MAAM,OAAO,cAAc,IAAI,WAAW;AAAA,QAClE,OAAO,KAAK,WAAW,OAAO,mCAAmC;AAAA,MAClE;AAAA,MACA,MAAM,mBAAmB,IAAI,IAAI,OAAO,aAAa;AAAA,MACrD,IAAI,OAAO,cAAc,SAAS,yBAAyB;AAAA,QAC1D,OAAO,KACN,WAAW,OAAO,qBAAqB,gDACxC;AAAA,MACD;AAAA,MACA,IAAI,iBAAiB,SAAS,OAAO,cAAc,QAAQ;AAAA,QAC1D,OAAO,KAAK,WAAW,OAAO,oCAAoC;AAAA,MACnE;AAAA,MACA,IAAI,OAAO,cAAc,KAAK,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,GAAG;AAAA,QACjE,OAAO,KAAK,WAAW,OAAO,oCAAoC;AAAA,MACnE;AAAA,MACA,MAAM,aAAa,IAAI,YAAY,OAAO,CAAC,eAC1C,iBAAiB,IAAI,WAAW,EAAE,CACnC;AAAA,MACA,IACC,WAAW,KACV,CAAC,eACA,WAAW,aAAa,KACxB,CAAC,WAAW,kBACZ,WAAW,iBAAiB,OAAO,YACrC,GACC;AAAA,QACD,OAAO,KAAK,WAAW,OAAO,mCAAmC;AAAA,MAClE;AAAA,MACA,IACC,OAAO,SAAS,WAChB,CAAC,WAAW,KAAK,CAAC,eAAe,WAAW,UAAU,OAAO,GAC5D;AAAA,QACD,OAAO,KAAK,iBAAiB,OAAO,6BAA6B;AAAA,MAClE;AAAA,MACA,IACC,OAAO,kBAAkB,KACzB,OAAO,kBAAkB,QAAQ,UAChC;AAAA,QACD,OAAO,KAAK,WAAW,OAAO,uCAAuC;AAAA,MACtE;AAAA,MACA,IAAI,OAAO,mBAAmB,IAAI,iBAAiB;AAAA,QAClD,OAAO,KAAK,WAAW,OAAO,uBAAuB;AAAA,MACtD;AAAA,MACA,IACC,WAAW,KACV,CAAC,eAAe,WAAW,oBAAoB,OAAO,eACvD,GACC;AAAA,QACD,OAAO,KAAK,WAAW,OAAO,kCAAkC;AAAA,MACjE;AAAA,MACA,MAAM,eAAe,QAAQ,KAAK,SAAS,MAC1C,CAAC,YACA,QAAQ,OAAO,IAAI,aACnB,oBAAoB,SAAS,QAAQ,IAAI,OAAO,eAAe,CACjE,IACG,UACA;AAAA,MACH,IAAI,OAAO,SAAS,cAAc;AAAA,QACjC,OAAO,KAAK,WAAW,OAAO,iCAAiC;AAAA,MAChE;AAAA,MACA,IAAI,OAAO,QAAQ;AAAA,QAClB,IACC,OAAO,OAAO,oBAAoB,OAAO,mBACzC,OAAO,OAAO,mBAAmB,QAAQ,UACxC;AAAA,UACD,OAAO,KAAK,WAAW,OAAO,qCAAqC;AAAA,QACpE;AAAA,QACA,IAAI;AAAA,UACH,mBAAmB,OAAO,MAAM;AAAA,UAC/B,OAAO,OAAO;AAAA,UACf,OAAO,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAAA,MAEpE;AAAA,IACD;AAAA,IACA,MAAM,OAAO,IAAI,QAAQ,GAAG,EAAE;AAAA,IAC9B,IAAI,IAAI,UAAU,aAAa,IAAI,YAAY,QAAQ,MAAM,SAAS;AAAA,MACrE,OAAO,KAAK,eAAe,IAAI,kCAAkC;AAAA,IAClE;AAAA,IACA,IAAI,IAAI,UAAU,eAAe,MAAM,QAAQ,YAAY,UAAU;AAAA,MACpE,OAAO,KAAK,kBAAkB,IAAI,6BAA6B;AAAA,IAChE;AAAA,IACA,IAAI,IAAI,UAAU,aAAa,MAAM,QAAQ,YAAY,UAAU;AAAA,MAClE,OAAO,KAAK,gBAAgB,IAAI,4BAA4B;AAAA,IAC7D;AAAA,IACA,IAAI,IAAI,UAAU,gBAAgB,MAAM,QAAQ,YAAY,UAAU;AAAA,MACrE,OAAO,KAAK,mBAAmB,IAAI,qCAAqC;AAAA,IACzE;AAAA,EACD;AAAA,EACA,IAAI,cAAc;AAAA,IAAG,OAAO,KAAK,6BAA6B;AAAA,EAC9D,IAAI,QAAQ,SAAS;AAAA,IACpB,IAAI,cAAc;AAAA,MACjB,OAAO,KAAK,6CAA6C;AAAA,IAC1D,IACC,QAAQ,QAAQ,SAAS,eACzB,QAAQ,KAAK,SAAS,KACrB,CAAC,YAAY,CAAC,kBAAkB,SAAS,QAAQ,EAAE,CACpD,GACC;AAAA,MACD,OAAO,KAAK,4DAA4D;AAAA,IACzE;AAAA,EACD;AAAA,EACA,OAAO;AAAA;;;AC76BR,eAAsB,iBAAiB,CACtC,YACA,OAC8B;AAAA,EAC9B,OAAO,WAAW,SAAS,OAAO,gBAAgB;AAAA,IACjD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACvC,IAAI,CAAC;AAAA,MAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,IAC9D,IAAI,QAAQ,aAAa,MAAM,kBAAkB;AAAA,MAChD,MAAM,IAAI,MACT,kBAAkB,MAAM,0DAA0D,QAAQ,WAC3F;AAAA,IACD;AAAA,IACA,MAAM,MAAM,UAAU,OAAO;AAAA,IAC7B,IAAI,CAAC,OAAO,IAAI,cAAc,MAAM,WAAW;AAAA,MAC9C,MAAM,IAAI,MAAM,gDAAgD;AAAA,IACjE;AAAA,IACA,IAAI,IAAI,QAAQ,SAAS,GAAG;AAAA,MAC3B,MAAM,IAAI,MAAM,iDAAiD;AAAA,IAClE;AAAA,IACA,OAAO;AAAA,MACN,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,MACX,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,cAAc,MAAM,YAAY,oBAAoB;AAAA,IACrD;AAAA,GACA;AAAA;AAGF,eAAsB,yBAAyB,CAC9C,YACA,OACiC;AAAA,EACjC,OAAO,WAAW,SAAS,OAAO,gBAAgB;AAAA,IACjD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACvC,IAAI,CAAC;AAAA,MACJ,MAAM,IAAI,MAAM,wDAAwD;AAAA,IACzE,MAAM,gBAAgB,MAAM,YAAY,oBAAoB;AAAA,IAC5D,IAAI,kBAAkB,MAAM,cAAc;AAAA,MACzC,MAAM,IAAI,MACT,2FACD;AAAA,IACD;AAAA,IACA,MAAM,SAAS,iBAAiB,SAAS,KAAK;AAAA,IAC9C,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,IACrC,OAAO,OAAO;AAAA,GACd;AAAA;;;ACvEF;AACA,uBAAS;AACT,sBAAS;AACT,kBAAS,gBAAO;AAChB,6BAAqB;;;ACJrB,uBAAS;AACT;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AACA;AACA,uBAAS;;;ACfF,MAAM,mCAAmC,MAAM;AAAA,EAC5C,OAAO;AAAA,EACP;AAAA,EACT,WAAW,CAAC,SAAiB,QAAgB;AAAA,IAC5C,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA;AAEhB;AAAA;AAEO,MAAM,2CAA2C,MAAM;AAAA,EACpD,OAAO;AAAA,EACP;AAAA,EACT,WAAW,CAAC,eAAwB;AAAA,IACnC,MACC,8HACD;AAAA,IACA,KAAK,OAAO;AAAA,IACZ,KAAK,gBAAgB;AAAA;AAEvB;;;ACpBA;AAqBA,IAAM,UAAU,IAAI;AAEpB,SAAS,WAAW,CACnB,OACA,SACC;AAAA,EACD,MAAM,WAAW,SAAS,YAAY;AAAA,EACtC,OAAO,EACL,OAAO,EACP,KAAK,EACL,OACA,CAAC,UAAU,SAAS,cAAc,MAAM,SAAS,GACjD,GAAG,wBACJ,EACC,OACA,CAAC,UAAU,QAAQ,OAAO,KAAK,EAAE,cAAc,UAC/C,GAAG,uBAAuB,uBAC3B;AAAA;AAGK,IAAM,kBAAkB,EAC7B,OAAO,EACP,IAAI,qBAAqB,EACzB,MAAM,oBAAoB,kBAAkB;AACvC,IAAM,oBAAoB,EAC/B,OAAO,EACP,IAAI,CAAC,EACL,IAAI,GAAG,EACP,MAAM,+BAA+B;AACvC,IAAM,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACnD,IAAM,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY;AAC3D,IAAM,qBAAqB,EAAE,OACnC,CAAC,UAAU,OAAO,UAAU,YAAY,wBAAwB,KAAK,KAAK,GAC1E,oCACD;AAEO,IAAM,oBAAoB,EAC/B,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,OAAO,YAAY,eAAe;AAAA,EAClC,SAAS,YAAY,iBAAiB;AAAA,EACtC,SAAS,EACP,MAAM,YAAY,gBAAgB,CAAC,EACnC,IAAI,iBAAiB,EACrB,QAAQ,CAAC,CAAC;AAAA,EACZ,YAAY,EACV,MAAM,YAAY,oBAAoB,CAAC,EACvC,IAAI,iBAAiB,EACrB,QAAQ,CAAC,CAAC;AAAA,EACZ,WAAW,EAAE,MAAM,eAAe,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC,EACA,OAAO;AAEF,IAAM,aAAa,EACxB,OAAO;AAAA,EACP,SAAS,YAAY,cAAc;AAAA,EACnC,UAAU,YAAY,eAAe;AAAA,EACrC,cAAc,EACZ,MAAM,YAAY,kBAAkB,CAAC,EACrC,IAAI,iBAAiB,EACrB,QAAQ,CAAC,CAAC;AAAA,EACZ,WAAW,EACT,MAAM,YAAY,eAAe,CAAC,EAClC,IAAI,iBAAiB,EACrB,QAAQ,CAAC,CAAC;AAAA,EACZ,UAAU,EAAE,MAAM,iBAAiB,EAAE,IAAI,CAAC,EAAE,IAAI,iBAAiB;AAClE,CAAC,EACA,OAAO,EACP,YAAY,CAAC,MAAM,YAAY;AAAA,EAC/B,IAAI,QAAQ,OAAO,KAAK,UAAU,IAAI,CAAC,EAAE,aAAa,gBAAgB;AAAA,IACrE,QAAQ,SAAS;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,sBAAsB;AAAA,IAChC,CAAC;AAAA,EACF;AAAA,CACA;AAEK,IAAM,sBAAsB,EACjC,OAAO;AAAA,EACP,UAAU,EAAE,KAAK,CAAC,YAAY,UAAU,CAAC;AAAA,EACzC,SAAS,YAAY,wBAAwB;AAAA,EAC7C,UAAU,YAAY,yBAAyB,EAAE,SAAS;AAC3D,CAAC,EACA,OAAO;AAEF,IAAM,2BAA2B,EACtC,OAAO;AAAA,EACP,SAAS,EAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,EACpC,UAAU,EAAE,MAAM,mBAAmB,EAAE,IAAI,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC1E,qBAAqB,EAAE,KAAK,CAAC,aAAa,sBAAsB,CAAC;AAClE,CAAC,EACA,OAAO,EACP,YAAY,CAAC,QAAQ,YAAY;AAAA,EACjC,WAAW,SAAS,2BAA2B,MAAM,GAAG;AAAA,IACvD,QAAQ,SAAS,EAAE,MAAM,aAAa,MAAM,CAAC;AAAA,EAC9C;AAAA,CACA;AAEF,IAAM,8BAA8B,EAClC,OAAO;AAAA,EACP,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC7B,WAAW;AAAA,EACX,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAChC,OAAO,EAAE,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EAClC,SAAS,YAAY,oBAAoB;AAAA,EACzC,cAAc;AAAA,EACd,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;AAAA,EAChC,cAAc;AAAA,EACd,gBAAgB,EAAE,QAAQ;AAAA,EAC1B,kBAAkB;AACnB,CAAC,EACA,OAAO;AAET,IAAM,8BAA8B,yBAAyB,IAC5D,EAAE,OAAO,EAAE,kBAAkB,eAAe,CAAC,EAAE,OAAO,CACvD;AAEA,IAAM,iBAAiB,EACrB,OAAO;AAAA,EACP,MAAM,YAAY,iBAAiB,EAAE,UAAU,eAAe,CAAC,EAAE,OAChE,gBACA,qBACD;AACD,CAAC,EACA,OAAO;AAET,IAAM,yBAAyB,EAC7B,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAChC,MAAM,EAAE,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EACjC,cAAc;AAAA,EACd,eAAe,EACb,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAChC,IAAI,CAAC,EACL,IAAI,uBAAuB;AAAA,EAC7B,QAAQ,EACN,OAAO;AAAA,IACP,SAAS,YAAY,uBAAuB;AAAA,IAC5C,YAAY,EACV,MAAM,YAAY,kBAAkB,CAAC,EACrC,IAAI,EAAE,EACN,QAAQ,CAAC,CAAC;AAAA,EACb,CAAC,EACA,OAAO;AAAA,EACT,iBAAiB;AAAA,EACjB,QAAQ,4BAA4B,SAAS;AAC9C,CAAC,EACA,OAAO;AAET,IAAM,mBAAmB,EACvB,OAAO;AAAA,EACP,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC7B,WAAW;AAAA,EACX,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;AAAA,EAC1C,OAAO,EAAE,KAAK,CAAC,UAAU,aAAa,WAAW,YAAY,CAAC;AAAA,EAC9D,iBAAiB;AAAA,EACjB,SAAS,YAAY,wBAAwB,EAAE,SAAS;AAAA,EACxD,kBAAkB,EAAE,MAAM,cAAc,EAAE,IAAI,aAAa;AAAA,EAC3D,aAAa,EACX,MAAM,2BAA2B,EACjC,IAAI,uBAAuB;AAAA,EAC7B,SAAS,EAAE,MAAM,sBAAsB,EAAE,IAAI,EAAE;AAChD,CAAC,EACA,OAAO;AAET,IAAM,wBAAwB,EAC5B,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM,EAAE,KAAK;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,SAAS;AAChD,CAAC,EACA,OAAO;AAET,IAAM,gBAAgB,EACpB,OAAO;AAAA,EACP,MAAM,EAAE,KAAK,CAAC,aAAa,YAAY,WAAW,CAAC;AAAA,EACnD,SAAS,YAAY,mBAAmB,EAAE,YAAY,KAAK,CAAC;AAAA,EAC5D,aAAa;AAAA,EACb,kBAAkB;AACnB,CAAC,EACA,OAAO;AAEF,IAAM,gBAAoC,EAC/C,OAAO;AAAA,EACP,SAAS,EAAE,QAAQ,CAAC;AAAA,EACpB,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,qBAAqB;AAAA,EAC/C,UAAU;AAAA,EACV,MAAM,YAAY,MAAM;AAAA,EACxB,UAAU,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC;AAAA,EACxC,MAAM,WAAW,SAAS;AAAA,EAC1B,MAAM,EAAE,MAAM,gBAAgB,EAAE,IAAI,GAAG;AAAA,EACvC,YAAY,EAAE,MAAM,qBAAqB,EAAE,IAAI,IAAI;AAAA,EACnD,SAAS,cAAc,SAAS;AACjC,CAAC,EACA,OAAO,EACP,YAAY,CAAC,SAAS,YAAY;AAAA,EAClC,MAAM,QAAQ,QAAQ,OAAO,KAAK,UAAU,OAAO,CAAC,EAAE;AAAA,EACtD,IAAI,QAAQ,mBAAmB;AAAA,IAC9B,QAAQ,SAAS;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,yBAAyB;AAAA,IACnC,CAAC;AAAA,EACF;AAAA,EACA,WAAW,SAAS,uBAAuB,OAAO,GAAG;AAAA,IACpD,QAAQ,SAAS,EAAE,MAAM,UAAU,SAAS,MAAM,CAAC;AAAA,EACpD;AAAA,CACA;AAEF,IAAM,UAAU;AAAA,EACf,aAAa;AAAA,EACb,kBAAkB;AACnB;AAEO,IAAM,sBAAsB,EACjC,OAAO;AAAA,EACP,SAAS,EACP,OAAO;AAAA,OACJ;AAAA,IACH,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM;AAAA,EACP,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,yBAAyB,EACpC,OAAO,EAAE,SAAS,EAAE,OAAO,OAAO,EAAE,OAAO,EAAE,CAAC,EAC9C,OAAO;AAEF,IAAM,sBAAsB,EACjC,OAAO;AAAA,EACP,SAAS,EACP,OAAO,KAAK,SAAS,WAAW,gBAAgB,SAAS,EAAE,CAAC,EAC5D,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,yBAAyB,EACpC,OAAO;AAAA,EACP,SAAS,EACP,OAAO;AAAA,OACJ;AAAA,IACH,WAAW;AAAA,IACX,kBAAkB,EAAE,MAAM,cAAc,EAAE,IAAI,aAAa;AAAA,IAC3D,QAAQ,EACN,OAAO;AAAA,MACP,SAAS,YAAY,uBAAuB;AAAA,MAC5C,YAAY,EACV,MAAM,YAAY,kBAAkB,CAAC,EACrC,IAAI,EAAE,EACN,QAAQ,CAAC,CAAC;AAAA,IACb,CAAC,EACA,OAAO;AAAA,EACV,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,6BAA6B,EACxC,OAAO;AAAA,EACP,SAAS,EACP,OAAO;AAAA,OACJ;AAAA,IACH,WAAW;AAAA,IACX,cAAc;AAAA,IACd,SAAS,YAAY,wBAAwB;AAAA,IAC7C,QAAQ;AAAA,EACT,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,0BAA0B,EACrC,OAAO;AAAA,EACP,SAAS,EAAE,OAAO,KAAK,SAAS,WAAW,gBAAgB,CAAC,EAAE,OAAO;AACtE,CAAC,EACA,OAAO;AAEF,IAAM,0BAA0B,EACrC,OAAO;AAAA,EACP,SAAS,EACP,OAAO;AAAA,OACJ;AAAA,IACH,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,qBAAqB;AAAA,IACtD,MAAM,EAAE,KAAK,CAAC,aAAa,YAAY,WAAW,CAAC;AAAA,IACnD,SAAS,YAAY,mBAAmB,EAAE,YAAY,KAAK,CAAC,EAAE,QAC7D,EACD;AAAA,EACD,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,6BAA6B,EACxC,OAAO;AAAA,EACP,SAAS,EACP,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,SAAS,YAAY,oBAAoB;AAAA,IACzC,OAAO,EAAE,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EACnC,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO;AAEF,IAAM,oBAAoB,EAC/B,OAAO;AAAA,EACP,SAAS,EAAE,mBAAmB,QAAQ;AAAA,IACrC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,CAAC,EAAE,OAAO;AAAA,IAChD,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,QAAQ,EAAE,CAAC,EAAE,OAAO;AAAA,IAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,CAAC,EAAE,OAAO;AAAA,IAClD,EACE,OAAO;AAAA,MACP,MAAM,EAAE,QAAQ,UAAU;AAAA,MAC1B,cAAc;AAAA,IACf,CAAC,EACA,OAAO;AAAA,EACV,CAAC;AACF,CAAC,EACA,OAAO;;;AC9VT,SAAS,gBAAgB,CAAC,OAA8B;AAAA,EAEvD,MAAM,QAAiB,CAAC;AAAA,EACxB,IAAI,QAAQ;AAAA,EAEZ,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC5B,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM,KAAK,EAAE,UAAU,MAAM,MAAM,IAAI,KAAO,aAAa,KAAK,CAAC;AAAA,MACjE,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM,KAAK,EAAE,UAAU,OAAO,MAAM,IAAI,KAAO,aAAa,MAAM,CAAC;AAAA,MACnE,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IACA,IAAI,SAAS,OAAO,SAAS,KAAK;AAAA,MACjC,MAAM,IAAI;AAAA,MACV,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM,MAAM,MAAM,GAAG,EAAE;AAAA,MACvB,IAAI,KAAK;AAAA,QAAU,IAAI,cAAc;AAAA,MACrC,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM,MAAM,MAAM,GAAG,EAAE;AAAA,MACvB,IAAI,KAAK;AAAA,QAAU,IAAI,cAAc;AAAA,MACrC,SAAS;AAAA,MACT;AAAA,IACD;AAAA,IACA,IAAI,SAAS,KAAK;AAAA,MACjB,IAAI,SAAS,QAAQ;AAAA,MACrB,OAAO,SAAS,MAAM,QAAQ;AAAA,QAC7B,IAAI,MAAM,YAAY,MAAM;AAAA,UAC3B,UAAU;AAAA,UACV;AAAA,QACD;AAAA,QACA,IAAI,MAAM,YAAY;AAAA,UAAK;AAAA,QAC3B,UAAU;AAAA,MACX;AAAA,MACA,MAAM,MAAM,MAAM,GAAG,EAAE;AAAA,MACvB,IAAI,KAAK,YAAY,IAAI,aAAa;AAAA,QACrC,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,OAAO,SAAS,CAAC,CAAC;AAAA,QACrD,IAAI,IAAI,KAAK,IAAI,GAAG;AAAA,UAAG,OAAO;AAAA,QAC9B,IAAI,KAAK,IAAI,GAAG;AAAA,MACjB;AAAA,MACA,QAAQ,SAAS;AAAA,MACjB;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,qBAAqB,CACpC,KACA,OAC8B;AAAA,EAC9B,IAAI,IAAI,KAAK,EAAE,WAAW,GAAG;AAAA,IAC5B,OAAO,EAAE,IAAI,OAAO,OAAO,GAAG,kBAAkB;AAAA,EACjD;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,SAAS,KAAK,MAAM,GAAG;AAAA,IACtB,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,IAAI;AAAA,MACJ,OACC,iBAAiB,QACd,GAAG,4BAA4B,MAAM,YACrC,GAAG;AAAA,IACR;AAAA;AAAA,EAGD,IAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,IAC3E,OAAO,EAAE,IAAI,OAAO,OAAO,GAAG,+BAA+B;AAAA,EAC9D;AAAA,EAEA,MAAM,YAAY,iBAAiB,GAAG;AAAA,EACtC,IAAI,WAAW;AAAA,IACd,OAAO,EAAE,IAAI,OAAO,OAAO,GAAG,4BAA4B,cAAc;AAAA,EACzE;AAAA,EAEA,OAAO,EAAE,IAAI,MAAM,OAAO,OAAkC;AAAA;;;AHhEtD,MAAM,sCAAsC,MAAM;AAAA,EAC/C,OAAO;AACjB;AAAA;AAEO,MAAM,uCAAuC,MAAM;AAAA,EAChD,OAAO;AACjB;AAAA;AAEO,MAAM,8BAA8B,MAAM;AAAA,EACvC,OAAO;AACjB;AAEO,SAAS,sBAAsB,CACrC,SACgB;AAAA,EAChB,MAAM,QAAQ,SAAS,KAAK;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,MAAM,aAAa,QAAQ,KAAK;AAAA,EAChC,OAAO,MAAM,UAAU,EAAE,SAAS,aAAa,OAAO;AAAA;AAGhD,SAAS,0BAA0B,CAAC,SAAyB;AAAA,EACnE,MAAM,YAAY,uBAAuB,OAAO;AAAA,EAChD,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,IAAI,8BACT,0CACD;AAAA,EACD;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,aAAa,SAAS;AAAA,IAC5B,OAAO,OAAO;AAAA,IACf,MAAM,IAAI,8BACT,kDAAkD,cAClD,EAAE,OAAO,MAAM,CAChB;AAAA;AAAA,EAED,IAAI,MAAM,IAAI,EAAE,SAAS,QAAQ,CAAC,UAAU,IAAI,EAAE,YAAY,GAAG;AAAA,IAChE,MAAM,IAAI,8BACT,yDACD;AAAA,EACD;AAAA,EACA,MAAM,QAAQ,CAAC,QAAQ,IAAI,MAAM,QAAQ,CAAC,EACxC,OAAO,CAAC,UAA2B,QAAQ,OAAO,KAAK,CAAC,CAAC,EACzD,IAAI,CAAC,UAAU;AAAA,IACf,IAAI;AAAA,MACH,OAAO,aAAa,QAAQ,KAAK,CAAC;AAAA,MACjC,MAAM;AAAA,MACP,OAAO,QAAQ,KAAK;AAAA;AAAA,GAErB;AAAA,EACF,IAAI,MAAM,SAAS,IAAI,GAAG;AAAA,IACzB,MAAM,IAAI,8BACT,iEACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,oBAAoB,CAAC,SAG1B;AAAA,EACV,MAAM,YACL,uBAAuB,QAAQ,QAAQ,KACvC,uBAAuB,QAAQ,SAAS;AAAA,EACzC,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,IAAI,8BACT,4DACD;AAAA,EACD;AAAA,EACA,OAAO,2BAA2B,SAAS;AAAA;AAGrC,SAAS,OAAO,CAAC,WAA2B;AAAA,EAClD,OAAO,KAAK,WAAW,OAAO;AAAA;AAGxB,SAAS,WAAW,CAAC,WAA2B;AAAA,EACtD,OAAO,KAAK,QAAQ,SAAS,GAAG,cAAc;AAAA;AAGxC,SAAS,UAAU,CAAC,WAA2B;AAAA,EACrD,OAAO,KAAK,QAAQ,SAAS,GAAG,SAAS;AAAA;AAGnC,SAAS,uBAAuB,CAAC,WAA2B;AAAA,EAClE,IAAI,UAAU,SAAS,KAAK,UAAU,SAAS,uBAAuB;AAAA,IACrE,MAAM,IAAI,MAAM,qBAAqB;AAAA,EACtC;AAAA,EACA,OAAO,GAAG,YAAW,QAAQ,EAAE,OAAO,SAAS,EAAE,OAAO,KAAK;AAAA;AAGvD,SAAS,mBAAmB,CAClC,WACA,WACS;AAAA,EACT,OAAO,KAAK,WAAW,SAAS,GAAG,wBAAwB,SAAS,CAAC;AAAA;AAGtE,eAAe,QAAQ,CACtB,MACA,UACA,aACiC;AAAA,EACjC,IAAI;AAAA,IACH,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA,IAC7B,IAAI,KAAK,eAAe,GAAG;AAAA,MAC1B,MAAM,IAAI,+BACT,oCAAoC,gBAAgB,OACrD;AAAA,IACD;AAAA,IACA,IACE,aAAa,UAAU,CAAC,KAAK,OAAO,KACpC,aAAa,eAAe,CAAC,KAAK,YAAY,GAC9C;AAAA,MACD,MAAM,IAAI,+BACT,iBAAiB,uBAAuB,aAAa,OACtD;AAAA,IACD;AAAA,IACA,OAAO;AAAA,IACN,OAAO,OAAO;AAAA,IACf,IAAK,MAAgC,SAAS;AAAA,MAAU,OAAO;AAAA,IAC/D,MAAM;AAAA;AAAA;AAIR,eAAe,eAAe,CAC7B,MACA,aACgB;AAAA,EAChB,IAAK,MAAM,SAAS,MAAM,aAAa,WAAW,MAAO;AAAA,IAAW;AAAA,EACpE,IAAI;AAAA,IACH,MAAM,MAAM,MAAM,EAAE,MAAM,IAAM,CAAC;AAAA,IAChC,OAAO,OAAO;AAAA,IACf,IAAK,MAAgC,SAAS;AAAA,MAAU,MAAM;AAAA;AAAA,EAE/D,MAAM,SAAS,MAAM,aAAa,WAAW;AAAA;AAG9C,eAAe,mBAAmB,CAAC,WAAkC;AAAA,EACpE,MAAM,OAAO,QAAQ,SAAS;AAAA,EAC9B,MAAM,gBAAgB,MAAM,0BAA0B;AAAA,EACtD,MAAM,SAAS,KAAK,MAAM,YAAY;AAAA,EACtC,IAAK,MAAM,SAAS,QAAQ,QAAQ,sBAAsB,MAAO,WAAW;AAAA,IAC3E,IAAI;AAAA,MACH,MAAM,UAAU,QAAQ;AAAA,GAAO;AAAA,QAC9B,UAAU;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,MACP,CAAC;AAAA,MACA,OAAO,OAAO;AAAA,MACf,IAAK,MAAgC,SAAS;AAAA,QAAU,MAAM;AAAA;AAAA,EAEhE;AAAA;AAGD,eAAe,sBAAsB,CAAC,WAAkC;AAAA,EACvE,MAAM,oBAAoB,SAAS;AAAA,EACnC,MAAM,gBAAgB,WAAW,SAAS,GAAG,4BAA4B;AAAA;AAG1E,eAAe,WAAW,CAAC,MAAc,aAAsC;AAAA,EAC9E,MAAM,SAAS,MAAM,QAAQ,WAAW;AAAA,EACxC,MAAM,WAAW,QAAQ,aAAa,UAAU,IAAI,UAAU;AAAA,EAC9D,MAAM,SAAS,MAAM,KAAK,MAAM,UAAU,WAAW,QAAQ;AAAA,EAC7D,IAAI;AAAA,IACH,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,IAC/B,IAAI,CAAC,KAAK,OAAO,KAAK,KAAK,OAAO,mBAAmB;AAAA,MACpD,MAAM,IAAI,2BACT,GAAG,8CACH,0CACD;AAAA,IACD;AAAA,IACA,OAAO,MAAM,OAAO,SAAS,MAAM;AAAA,YAClC;AAAA,IACD,MAAM,OAAO,MAAM;AAAA;AAAA;AAIrB,eAAe,aAAa,CAAC,MAA6B;AAAA,EACzD,IAAI,QAAQ,aAAa;AAAA,IAAS;AAAA,EAClC,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG;AAAA,EACnC,IAAI;AAAA,IACH,MAAM,OAAO,KAAK;AAAA,YACjB;AAAA,IACD,MAAM,OAAO,MAAM;AAAA;AAAA;AAIrB,eAAe,eAAe,CAAC,WAAmB,MAA6B;AAAA,EAC9E,IAAI,QAAQ;AAAA,EACZ,OAAO,MAAM;AAAA,IACZ,IAAI;AAAA,MACH,MAAM,OAAO,WAAW,IAAI;AAAA,MAC5B;AAAA,MACC,OAAO,OAAO;AAAA,MACf,MAAM,OAAQ,MAAgC;AAAA,MAC9C,MAAM,wBACL,QAAQ,aAAa,YACpB,SAAS,YAAY,SAAS,WAAW,SAAS;AAAA,MACpD,IAAI,CAAC,yBAAyB,SAAS;AAAA,QAAI,MAAM;AAAA,MACjD,SAAS;AAAA,MAGT,MAAM,MAAM,QAAQ,CAAC;AAAA;AAAA,EAEvB;AAAA;AAGD,eAAe,eAAe,CAAC,MAAc,UAAiC;AAAA,EAC7E,MAAM,YAAY,KACjB,QAAQ,IAAI,GACZ,eAAe,QAAQ,OAAO,WAAW,OAC1C;AAAA,EACA,MAAM,SAAS,MAAM,KAAK,WAAW,MAAM,GAAK;AAAA,EAChD,IAAI;AAAA,IACH,MAAM,OAAO,UAAU,UAAU,MAAM;AAAA,IACvC,MAAM,OAAO,KAAK;AAAA,IACjB,OAAO,OAAO;AAAA,IACf,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,GAAG,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,IACnC,MAAM;AAAA;AAAA,EAEP,MAAM,OAAO,MAAM;AAAA,EACnB,IAAI;AAAA,IACH,MAAM,gBAAgB,WAAW,IAAI;AAAA,IACrC,MAAM,cAAc,QAAQ,IAAI,CAAC;AAAA,IAChC,OAAO,OAAO;AAAA,IACf,MAAM,GAAG,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,IACnC,MAAM;AAAA;AAAA;AAIR,SAAS,YAAY,CAAC,KAAa,aAA8B;AAAA,EAChE,MAAM,SAAS,sBAAsB,KAAK,WAAW;AAAA,EACrD,IAAI,CAAC,OAAO,IAAI;AAAA,IACf,MAAM,IAAI,2BAA2B,OAAO,OAAO,OAAO,KAAK;AAAA,EAChE;AAAA,EACA,IAAI,OAAO,OAAO,OAAO,OAAO,SAAS,KAAK,OAAO,MAAM,YAAY,GAAG;AAAA,IACzE,MAAM,IAAI,mCAAmC,OAAO,MAAM,OAAO;AAAA,EAClE;AAAA,EACA,MAAM,SAAS,cAAc,UAAU,OAAO,KAAK;AAAA,EACnD,IAAI,CAAC,OAAO,SAAS;AAAA,IACpB,MAAM,SAAS,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,IAAI;AAAA,IAC1E,MAAM,IAAI,2BACT,GAAG,0CAA0C,UAC7C,MACD;AAAA,EACD;AAAA,EACA,OAAO,OAAO;AAAA;AAGf,eAAsB,WAAW,CAAC,WAA4C;AAAA,EAC7E,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,IACE,MAAM,SAAS,QAAQ,IAAI,GAAG,aAAa,0BAA0B,MACtE,WACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,OAAO,YAAY,IAAI;AAAA,EAC7B,IAAK,MAAM,SAAS,MAAM,QAAQ,uBAAuB,MAAO,WAAW;AAAA,IAC1E,OAAO;AAAA,EACR;AAAA,EACA,OAAO,aACN,MAAM,YAAY,MAAM,uBAAuB,GAC/C,mBACD;AAAA;AAGD,eAAsB,mBAAmB,CACxC,WACA,WAC0B;AAAA,EAC1B,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,IACE,MAAM,SAAS,QAAQ,IAAI,GAAG,aAAa,0BAA0B,MACtE,WACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,IACE,MAAM,SACN,WAAW,IAAI,GACf,aACA,4BACD,MAAO,WACN;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,OAAO,oBAAoB,MAAM,SAAS;AAAA,EAChD,IACE,MAAM,SAAS,MAAM,QAAQ,2BAA2B,MAAO,WAC/D;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,UAAU,aACf,MAAM,YAAY,MAAM,2BAA2B,GACnD,uBACD;AAAA,EACA,IAAI,QAAQ,OAAO,aAAa,CAAC,QAAQ,SAAS;AAAA,IACjD,MAAM,IAAI,sBACT,kDACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGR,eAAsB,WAAW,CAChC,WACA,SACmB;AAAA,EACnB,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,MAAM,SAAS,cAAc,MAAM,OAAO;AAAA,EAC1C,MAAM,oBAAoB,IAAI;AAAA,EAC9B,MAAM,SAAS,YAAY,IAAI,GAAG,QAAQ,uBAAuB;AAAA,EACjE,MAAM,gBACL,YAAY,IAAI,GAChB,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,CAClC;AAAA,EACA,OAAO;AAAA;AAGR,eAAsB,sBAAsB,CAC3C,WACA,SACgB;AAAA,EAChB,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,IAAI,MAAM,gDAAgD;AAAA,EACjE,MAAM,YAAY,cAAc,MAAM,OAAO;AAAA,EAC7C,MAAM,iBAAiB,GAAG,KAAK,UAAU,WAAW,MAAM,CAAC;AAAA;AAAA,EAC3D,MAAM,uBAAuB,IAAI;AAAA,EACjC,MAAM,SAAS,oBAAoB,MAAM,UAAU,EAAE;AAAA,EACrD,MAAM,YAAY,KACjB,WAAW,IAAI,GACf,iBAAiB,QAAQ,OAAO,WAAW,OAC5C;AAAA,EACA,IAAI;AAAA,IACH,MAAM,SAAS,MAAM,KAAK,WAAW,MAAM,GAAK;AAAA,IAChD,IAAI;AAAA,MACH,MAAM,OAAO,UAAU,gBAAgB,MAAM;AAAA,MAC7C,MAAM,OAAO,KAAK;AAAA,cACjB;AAAA,MACD,MAAM,OAAO,MAAM;AAAA;AAAA,IAEpB,MAAM,KAAK,WAAW,MAAM;AAAA,IAC5B,MAAM,cAAc,WAAW,IAAI,CAAC;AAAA,IACnC,OAAO,OAAO;AAAA,IACf,IAAK,MAAgC,SAAS;AAAA,MAAU,MAAM;AAAA,IAC9D,MAAM,WAAW,MAAM,oBAAoB,MAAM,UAAU,EAAE;AAAA,IAC7D,IAAI,CAAC,YAAY,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,SAAS,GAAG;AAAA,MACxE,MAAM,IAAI,sBACT,yDACD;AAAA,IACD;AAAA,YACC;AAAA,IACD,MAAM,GAAG,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA,EAEpC,MAAM,SAAS,MAAM,YAAY,IAAI;AAAA,EACrC,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,IAAI,KAAK,UAAU,MAAM,MAAM,KAAK,UAAU,SAAS,GAAG;AAAA,IACzD,MAAM,IAAI,sBACT,sEACD;AAAA,EACD;AAAA,EACA,MAAM,OAAO,YAAY,IAAI,CAAC;AAAA,EAC9B,MAAM,cAAc,QAAQ,IAAI,CAAC;AAAA;AAGlC,eAAsB,2BAA2B,CAChD,WACyB;AAAA,EACzB,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,IACE,MAAM,SAAS,QAAQ,IAAI,GAAG,aAAa,0BAA0B,MACtE,WACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,SAAS,YAAY,IAAI;AAAA,EAC/B,IAAK,MAAM,SAAS,QAAQ,QAAQ,uBAAuB,MAAO,WAAW;AAAA,IAC5E,OAAO;AAAA,EACR;AAAA,EACA,MAAM,uBAAuB,IAAI;AAAA,EACjC,MAAM,SAAS,KAAK,WAAW,IAAI,GAAG,cAAc,WAAW,QAAQ;AAAA,EACvE,MAAM,OAAO,QAAQ,MAAM;AAAA,EAC3B,MAAM,cAAc,WAAW,IAAI,CAAC;AAAA,EACpC,OAAO;AAAA;AAGR,IAAM,iBAAiB,IAAI;AAC3B,IAAM,kBAAkB;AAExB,eAAe,WAAW,CAAC,WAAiD;AAAA,EAC3E,MAAM,oBAAoB,SAAS;AAAA,EACnC,MAAM,OAAO,KAAK,QAAQ,SAAS,GAAG,cAAc;AAAA,EACpD,MAAM,UAAU,KAAK,IAAI;AAAA,EACzB,OAAO,MAAM;AAAA,IACZ,IAAI;AAAA,MACH,MAAM,MAAM,MAAM,EAAE,MAAM,IAAM,CAAC;AAAA,MACjC,MAAM,QAAQ,WAAW;AAAA,MACzB,IAAI;AAAA,QACH,MAAM,UACL,KAAK,MAAM,YAAY,GACvB,KAAK,UAAU,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,GAC1C,EAAE,UAAU,QAAQ,MAAM,MAAM,MAAM,IAAM,CAC7C;AAAA,QACC,OAAO,OAAO;AAAA,QACf,MAAM,GAAG,MAAM,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,QAC/C,MAAM;AAAA;AAAA,MAEP,OAAO,YAAY;AAAA,QAClB,IAAI;AAAA,UACH,MAAM,QAAQ,KAAK,MAClB,MAAM,SAAS,KAAK,MAAM,YAAY,GAAG,MAAM,CAChD;AAAA,UACA,IAAI,MAAM,UAAU;AAAA,YAAO,MAAM,GAAG,MAAM,EAAE,WAAW,KAAK,CAAC;AAAA,UAC5D,MAAM;AAAA;AAAA,MAIR,OAAO,OAAO;AAAA,MACf,IAAK,MAAgC,SAAS;AAAA,QAAU,MAAM;AAAA,MAC9D,MAAM,SAAS,MAAM,aAAa,uBAAuB;AAAA,MACzD,IAAI,KAAK,IAAI,IAAI,WAAW,iBAAiB;AAAA,QAC5C,MAAM,IAAI,MACT,8CAA8C,yCAC/C;AAAA,MACD;AAAA,MACA,MAAM,MAAM,EAAE;AAAA;AAAA,EAEhB;AAAA;AAGD,eAAsB,eAAkB,CACvC,WACA,MACa;AAAA,EACb,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,MAAM,WAAW,eAAe,IAAI,IAAI,KAAK,QAAQ,QAAQ;AAAA,EAC7D,IAAI,eAAe,MAAM;AAAA,EACzB,MAAM,UAAU,IAAI,QAAc,CAAC,iBAAiB;AAAA,IACnD,eAAe;AAAA,GACf;AAAA,EACD,MAAM,SAAS,SAAS,MAAM,MAAG;AAAA,IAAG;AAAA,GAAS,EAAE,KAAK,MAAM,OAAO;AAAA,EACjE,eAAe,IAAI,MAAM,MAAM;AAAA,EAC/B,IAAI,cAA4C;AAAA,EAChD,IAAI;AAAA,IACH,MAAM,SAAS,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IACpC,cAAc,MAAM,YAAY,IAAI;AAAA,IACpC,OAAO,MAAM,KAAK;AAAA,YACjB;AAAA,IACD,MAAM,cAAc;AAAA,IACpB,aAAa;AAAA,IACb,IAAI,eAAe,IAAI,IAAI,MAAM;AAAA,MAAQ,eAAe,OAAO,IAAI;AAAA;AAAA;;;ADtd9D,MAAM,4BAA4B,MAAM;AAAA,EACrC,OAAO;AACjB;AAEA,SAAS,KAAI,CAAC,SAAiB,OAAwB;AAAA,EACtD,MAAM,IAAI,oBAAoB,SAAS,QAAQ,EAAE,MAAM,IAAI,SAAS;AAAA;AAGrE,SAAS,sBAAsB,CAAC,OAAuB;AAAA,EACtD,MAAM,SAAS,0CAA0C,KAAK,KAAK;AAAA,EACnE,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,IAAI,OAAO,OAAO,UAAU;AAAA,IAC3B,MACC,4GACD;AAAA,EACD;AAAA,EACA,OAAO,OAAO,MAAM;AAAA;AAGrB,SAAS,iBAAiB,CAAC,WAAsC;AAAA,EAChE,OAAO,IAAI,QAAQ,CAAC,cAAc,gBAAgB;AAAA,IACjD,SACC,OACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,GACA,EAAE,UAAU,UAAU,WAAW,KAAK,OAAO,KAAK,GAClD,CAAC,OAAO,WAAW;AAAA,MAClB,IAAI,OAAO;AAAA,QACV,YACC,IAAI,oBACH,yEACA,EAAE,OAAO,MAAM,CAChB,CACD;AAAA,QACA;AAAA,MACD;AAAA,MACA,MAAM,OAAO,OAAO,SAAS,MAAM,IAChC,OAAO,SAAS,MAAM,IACtB,OAAO,MAAM;AAAA,MAChB,IAAI;AAAA,QACH,aACC,KAAK,MAAM,MAAI,EAAE,OAAO,OAAO,EAAE,IAAI,sBAAsB,CAC5D;AAAA,QACC,OAAO,YAAY;AAAA,QACpB,YAAY,UAAU;AAAA;AAAA,KAGzB;AAAA,GACA;AAAA;AAGF,SAAS,gBAAgB,CAAC,MAAsB;AAAA,EAC/C,MAAM,aAAa,UAAU,IAAI;AAAA,EACjC,IACC,WAAW,IAAI,KACf,eAAe,QACf,WAAW,WAAW,KAAK,KAAK,KAChC,eAAe,UACf,WAAW,WAAW,OAAO,KAAK,GACjC;AAAA,IACD,MAAK,wCAAwC;AAAA,EAC9C;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,iBAAiB,CAAC,MAAuB;AAAA,EACjD,OAAO,SAAS,WAAW,KAAK,WAAW,QAAQ;AAAA;AAGpD,SAAS,SAAS,CACjB,MACA,OACO;AAAA,EACP,MAAM,QAAQ,OAAO,UAAU,WAAW,OAAO,KAAK,KAAK,IAAI;AAAA,EAC/D,KAAK,OAAO,OAAO,MAAM,UAAU,CAAC;AAAA,EACpC,KAAK,OAAO,GAAG;AAAA,EACf,KAAK,OAAO,KAAK;AAAA,EACjB,KAAK,OAAO,MAAI;AAAA;AAGjB,SAAS,QAAQ,CAChB,MACA,OACU;AAAA,EACV,OACC,KAAK,QAAQ,MAAM,OACnB,KAAK,QAAQ,MAAM,OACnB,KAAK,SAAS,MAAM,QACpB,KAAK,SAAS,MAAM,QACpB,KAAK,YAAY,MAAM,WACvB,KAAK,OAAO,MAAM,MAAM,OAAO,KAC/B,KAAK,eAAe,MAAM,MAAM,eAAe;AAAA;AAI1C,SAAS,gCAAgC,CAC/C,WACyB;AAAA,EACzB,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,OAAO;AAAA,SACA,oBAAmB,GAA0B;AAAA,MAClD,MAAM,QAAQ;AAAA,QACb,GAAG,IAAI,KACL,MAAM,kBAAkB,IAAI,GAC3B,OAAO,CAAC,SAAS,CAAC,kBAAkB,IAAI,CAAC,EACzC,IAAI,gBAAgB,CACvB;AAAA,MACD,EAAE,KAAK;AAAA,MACP,IAAI,MAAM,SAAS,kBAAkB;AAAA,QACpC,MACC,yBAAyB,0CAC1B;AAAA,MACD;AAAA,MACA,MAAM,OAAO,YAAW,QAAQ;AAAA,MAChC,KAAK,OAAO,+BAA6B;AAAA,MACzC,IAAI,aAAa;AAAA,MACjB,WAAW,gBAAgB,OAAO;AAAA,QACjC,MAAM,OAAO,MAAK,MAAM,YAAY;AAAA,QACpC,IAAI;AAAA,QACJ,IAAI;AAAA,UACH,SAAS,MAAM,OAAM,IAAI;AAAA,UACxB,OAAO,OAAO;AAAA,UACf,IAAK,MAAgC,SAAS,UAAU;AAAA,YACvD,UAAU,MAAM,YAAY;AAAA,YAC5B,UAAU,MAAM,SAAS;AAAA,YACzB;AAAA,UACD;AAAA,UACA,MAAK,6CAA6C,KAAK;AAAA;AAAA,QAExD,UAAU,MAAM,YAAY;AAAA,QAC5B,IAAI,OAAO,eAAe,GAAG;AAAA,UAC5B,MAAM,SAAS,MAAM,SAAS,IAAI;AAAA,UAClC,MAAM,SAAQ,MAAM,OAAM,IAAI;AAAA,UAC9B,IAAI,CAAC,SAAS,QAAQ,MAAK;AAAA,YAC1B,MAAK,kDAAkD;AAAA,UACxD,UAAU,MAAM,SAAS;AAAA,UACzB,UAAU,MAAM,MAAM;AAAA,UACtB;AAAA,QACD;AAAA,QACA,IAAI,CAAC,OAAO,OAAO,GAAG;AAAA,UACrB,MAAK,0DAA0D;AAAA,QAChE;AAAA,QACA,IAAI,OAAO,OAAO,uBAAuB;AAAA,UACxC,MAAK,4BAA4B,8BAA8B;AAAA,QAChE;AAAA,QACA,cAAc,OAAO;AAAA,QACrB,IAAI,aAAa,wBAAwB;AAAA,UACxC,MAAK,6BAA6B,+BAA+B;AAAA,QAClE;AAAA,QACA,MAAM,WACL,QAAQ,aAAa,UAAU,IAAI,WAAU;AAAA,QAC9C,MAAM,SAAS,MAAM,MAAK,MAAM,WAAU,WAAW,QAAQ;AAAA,QAC7D,IAAI;AAAA,QACJ,IAAI;AAAA,UACH,WAAW,MAAM,OAAO,SAAS;AAAA,kBAChC;AAAA,UACD,MAAM,OAAO,MAAM;AAAA;AAAA,QAEpB,MAAM,QAAQ,MAAM,OAAM,IAAI;AAAA,QAC9B,IAAI,CAAC,SAAS,QAAQ,KAAK,KAAK,SAAS,eAAe,OAAO,MAAM;AAAA,UACpE,MAAK,kDAAkD;AAAA,QACxD;AAAA,QACA,UAAU,MAAM,MAAM;AAAA,QACtB,UAAU,MAAM,OAAO,OAAO,OAAO,EAAK,CAAC;AAAA,QAC3C,UAAU,MAAM,QAAQ;AAAA,MACzB;AAAA,MACA,OAAO,UAAU,KAAK,OAAO,KAAK;AAAA;AAAA,EAEpC;AAAA;;;AKjLM,SAAS,2BAA2B,CAC1C,WACoB;AAAA,EACpB,MAAM,OAAO,2BAA2B,SAAS;AAAA,EACjD,MAAM,SAAS,iCAAiC,IAAI;AAAA,EACpD,MAAM,cAAc;AAAA,IACnB,MAAM,MAAM,YAAY,IAAI;AAAA,IAC5B,aAAa,CAAC,cAAsB,oBAAoB,MAAM,SAAS;AAAA,IACvE,MAAM,CAAC,YACN,YAAY,MAAM,OAAO;AAAA,IAC1B,iBAAiB,CAAC,YACjB,uBAAuB,MAAM,OAAO;AAAA,IACrC,sBAAsB,MAAM,4BAA4B,IAAI;AAAA,IAC5D,qBAAqB,MAAM,OAAO,oBAAoB;AAAA,EACvD;AAAA,EACA,OAAO;AAAA,IACN,MAAM,YAAY;AAAA,IAClB,UAAU,CAAC,SAAS,gBAAgB,MAAM,MAAM,KAAK,WAAW,CAAC;AAAA,EAClE;AAAA;;;ACtBM,SAAS,0BAA0B,CACzC,WACA,OACC;AAAA,EACD,OAAO,kBAAkB,4BAA4B,SAAS,GAAG,KAAK;AAAA;AAGhE,SAAS,0BAA0B,CACzC,WACA,OACC;AAAA,EACD,OAAO,0BACN,4BAA4B,SAAS,GACrC,KACD;AAAA;;;ACtBD;AAEO,SAAS,wBAAwB,GAAW;AAAA,EAClD,IAAI;AAAA,IACH,MAAM,WAAU,cAAc,YAAY,GAAG;AAAA,IAC7C,MAAM,WAAW,SAAQ,iBAAiB;AAAA,IAC1C,IAAI,SAAS;AAAA,MAAS,OAAO,SAAS;AAAA,IACrC,MAAM;AAAA,EAGR,OAAO;AAAA;;;ACTR,IAAM,2BAA2B,IAAI;AAErC,SAAS,eAAe,CACvB,OACsC;AAAA,EACtC,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,IAAI;AAAA,IACH,MAAM,aAAa,KAAK,UAAU,KAAK;AAAA,IACvC,IACC,IAAI,YAAY,EAAE,OAAO,UAAU,EAAE,aAAa,0BACjD;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM,SAAS,KAAK,MAAM,UAAU;AAAA,IACpC,OAAO,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,IAChE,SACD;AAAA,IACF,MAAM;AAAA,IACP;AAAA;AAAA;AAIK,SAAS,aAAa,CAAC,KAAc;AAAA,EAC3C,MAAM,SAAU,KACb;AAAA,EACH,MAAM,MAAM,QAAQ,KAAK;AAAA,EACzB,OAAO,CACN,OACA,SACA,UACU;AAAA,IACV,IAAI,OAAO,QAAQ;AAAA,MAAY;AAAA,IAC/B,IAAI;AAAA,MACH,MAAM,eAAe,gBAAgB,KAAK;AAAA,MAC1C,QAAQ,QACP,IAAI,KAAK,QAAQ,KAAK;AAAA,QACrB,MAAM;AAAA,UACL,SAAS;AAAA,UACT;AAAA,UACA;AAAA,aACI,eAAe,EAAE,OAAO,aAAa,IAAI,CAAC;AAAA,QAC/C;AAAA,MACD,CAAC,CACF,EAAE,MAAM,MAAM,EAEb;AAAA,MACA,MAAM;AAAA;AAAA;;;ACzCH,SAAS,gBAAgB,CAC/B,KACA,SACC;AAAA,EACD,MAAM,MAAM,cAAc,GAAG;AAAA,EAC7B,OAAO,OAAO,WAA8B;AAAA,IAC3C,IAAI;AAAA,MACH,SAAS,oBAAoB,kCAAkC;AAAA,MAC9D,OAAO,OAAO;AAAA,MACf,IAAI,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MACnE;AAAA;AAAA,IAED,gBAAgB,QAAQ;AAAA,MACvB,WAAW,CAAC,YAAY,IAAI,QAAQ,OAAO;AAAA,MAC3C,aAAa,CAAC,MAAM,SACnB,IACC,QACA,gCAAgC,eAAe,sDAChD;AAAA,IACF,CAAC;AAAA;AAAA;;;ACzBH,yBAAS;AACT,oBAAS;AAET,IAAM,gBAAgB;AACtB,IAAM,0BAA0B;AAEzB,IAAM,mCAAmC;AACzC,IAAM,kCAAkC,OAAO,IAAI,aAAa;AAkCvE,SAAS,YAAW,CAAC,OAAiC;AAAA,EACrD,OACC,OAAO,UAAU,YACjB,MAAM,SAAS,KACf,MAAM,KAAK,MAAM,SACjB,CAAC,MAAM,SAAS,MAAI;AAAA;AAItB,SAAS,aAAa,CAAC,OAA6C;AAAA,EACnE,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM,OAAO;AAAA,EACxD,MAAM,WAAW;AAAA,EACjB,OACC,aAAY,SAAS,WAAW,KAChC,aAAY,SAAS,OAAO,KAC5B,aAAY,SAAS,UAAU,KAC/B,OAAO,SAAS,oBAAoB,YACpC,OAAO,cAAc,SAAS,eAAe,KAC7C,SAAS,kBAAkB;AAAA;AAI7B,SAAS,kBAAkB,CAAC,SAAyB;AAAA,EACpD,IAAI,CAAC,aAAY,OAAO;AAAA,IACvB,MAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE,MAAM,YAAY,SAAQ,OAAO;AAAA,EACjC,IAAI;AAAA,IACH,OAAO,cAAa,SAAS;AAAA,IAC5B,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,SAAS,kBAAkB,CAAC,OAAiD;AAAA,EAC5E,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM,OAAO;AAAA,EACxD,MAAM,WAAW;AAAA,EACjB,IACC,SAAS,SAAS,iBAClB,SAAS,kBAAkB,2BAC3B,EAAE,SAAS,oBAAoB,MAC9B;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,YAAY,WAAW,kBAAkB,SAAS,UAAU;AAAA,IAC3D,IACC,CAAC,aAAY,SAAS,KACtB,mBAAmB,SAAS,MAAM,aAClC,EAAE,yBAAyB,MAC1B;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,YAAY,YAAY,aAAa,eAAe;AAAA,MACnD,IAAI,CAAC,cAAc,QAAQ,KAAK,SAAS,eAAe,YAAY;AAAA,QACnE,OAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,YAAY,GAAY;AAAA,EAChC,OAAO,QAAQ,IAAI,YAAY,+BAA+B;AAAA;AAG/D,SAAS,eAAe,GAAkC;AAAA,EACzD,MAAM,WAAW,aAAa;AAAA,EAC9B,IAAI,aAAa;AAAA,IAChB,OAAO,mBAAmB,QAAQ,IAAI,WAAW;AAAA,EAClD,MAAM,WAAmC;AAAA,IACxC,MAAM;AAAA,IACN,eAAe;AAAA,IACf,UAAU,IAAI;AAAA,EACf;AAAA,EACA,IAAI,CAAC,QAAQ,IAAI,YAAY,iCAAiC,QAAQ,GAAG;AAAA,IACxE,OAAO;AAAA,EACR;AAAA,EACA,MAAM,YAAY,aAAa;AAAA,EAC/B,OAAO,mBAAmB,SAAS,IAAI,YAAY;AAAA;AAGpD,SAAS,QAAQ,CAAC,UAAkD;AAAA,EACnE,OAAO,OAAO,OAAO,KAAK,SAAS,CAAC;AAAA;AAGrC,SAAS,UAAU,CAAC,QAAoD;AAAA,EACvE,MAAM,cAAc,WAAW;AAAA,EAC/B,OAAO,OAAO,OAAO;AAAA,IACpB;AAAA,IACA;AAAA,IACA,SAAS,cACN,qCACA,4BAA4B;AAAA,EAChC,CAAC;AAAA;AAGF,SAAS,YAAY,CACpB,MACA,OACU;AAAA,EACV,OACC,KAAK,gBAAgB,MAAM,eAC3B,KAAK,YAAY,MAAM,WACvB,KAAK,oBAAoB,MAAM,mBAC/B,KAAK,eAAe,MAAM;AAAA;AAIrB,IAAM,6BAA6B,MAAM,WAAW,OAAO,WAAW;AAEtE,SAAS,0BAA0B,CACzC,SACA,OACuB;AAAA,EACvB,MAAM,YAAY,mBAAmB,OAAO;AAAA,EAC5C,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAC1B,MAAM,IAAI,UAAU,mCAAmC;AAAA,EACxD;AAAA,EACA,MAAM,WAAW,SAAS,KAAK;AAAA,EAC/B,MAAM,WAAW,gBAAgB;AAAA,EACjC,IAAI,SAAoC;AAAA,EACxC,IAAI,UAAU;AAAA,IACb,IAAI,UAAU,SAAS,SAAS,IAAI,SAAS;AAAA,IAC7C,IAAI,CAAC,SAAS;AAAA,MACb,UAAU,IAAI;AAAA,MACd,SAAS,SAAS,IAAI,WAAW,OAAO;AAAA,IACzC;AAAA,IACA,MAAM,WAAW,QAAQ,IAAI,SAAS,UAAU;AAAA,IAChD,IAAI,YAAY,CAAC,aAAa,UAAU,QAAQ,GAAG;AAAA,MAClD,MAAM,IAAI,MACT,6BAA6B,SAAS,iEACvC;AAAA,IACD;AAAA,IACA,SAAS,YAAY;AAAA,IACrB,QAAQ,IAAI,SAAS,YAAY,MAAM;AAAA,EACxC;AAAA,EAEA,IAAI,WAAW;AAAA,EACf,MAAM,QAAQ,MAA4B;AAAA,IACzC,IAAI;AAAA,MAAU,OAAO,WAAW,UAAU;AAAA,IAC1C,MAAM,kBAAkB,aAAa;AAAA,IACrC,IAAI,CAAC;AAAA,MAAQ,OAAO,WAAW,uBAAuB;AAAA,IACtD,IAAI,oBAAoB;AAAA,MAAW,OAAO,WAAW,gBAAgB;AAAA,IACrE,IAAI,CAAC,mBAAmB,eAAe;AAAA,MACtC,OAAO,WAAW,uBAAuB;AAAA,IAC1C,MAAM,UAAU,gBAAgB,SAAS,IAAI,SAAS;AAAA,IACtD,IAAI,CAAC,WAAW,QAAQ,IAAI,SAAS,UAAU,MAAM,QAAQ;AAAA,MAC5D,OAAO,WAAW,gBAAgB;AAAA,IACnC;AAAA,IACA,IAAI,SAAS,oBAAoB,kCAAkC;AAAA,MAClE,OAAO,WAAW,uBAAuB;AAAA,IAC1C;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACvB,OAAO,WAAW,qBAAqB;AAAA,IACxC;AAAA,IACA,OAAO,WAAW,eAAe;AAAA;AAAA,EAGlC,OAAO,OAAO,OAAO;AAAA,IACpB;AAAA,IACA,iBAAiB,CAAC,QAAuB;AAAA,MACxC,MAAM,UAAU,MAAM;AAAA,MACtB,IAAI,CAAC,QAAQ,aAAa;AAAA,QACzB,MAAM,IAAI,MACT,GAAG,SAAS,eAAe,aAAa,KAAK,QAAQ,SACtD;AAAA,MACD;AAAA;AAAA,IAED,OAAO,GAAY;AAAA,MAClB,IAAI,YAAY,CAAC;AAAA,QAAQ,OAAO;AAAA,MAChC,MAAM,kBAAkB,aAAa;AAAA,MACrC,IAAI,CAAC,mBAAmB,eAAe;AAAA,QAAG,OAAO;AAAA,MACjD,MAAM,UAAU,gBAAgB,SAAS,IAAI,SAAS;AAAA,MACtD,IAAI,SAAS,IAAI,SAAS,UAAU,MAAM;AAAA,QAAQ,OAAO;AAAA,MACzD,QAAQ,OAAO,SAAS,UAAU;AAAA,MAClC,WAAW;AAAA,MACX,IAAI,QAAQ,SAAS;AAAA,QAAG,gBAAgB,SAAS,OAAO,SAAS;AAAA,MACjE,IAAI,gBAAgB,SAAS,SAAS,GAAG;AAAA,QACxC,QAAQ,eAAe,YAAY,+BAA+B;AAAA,MACnE;AAAA,MACA,OAAO;AAAA;AAAA,EAET,CAAgC;AAAA;;;AC9NjC;;;AC2DA,SAAS,QAAQ,GAAW;AAAA,EAC3B,OAAO;AAAA;AAGR,SAAS,EAAE,CACV,SACA,cACe;AAAA,EACf,OAAO;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA,cAAc,EAAE,UAAU,SAAS,MAAM,aAAa;AAAA,EACvD;AAAA;AAGD,SAAS,aAAa,CAAC,OAAgB,UAAiC;AAAA,EACvE,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9D,cAAc;AAAA,MACb,UAAU,SAAS;AAAA,MACnB,SAAS;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,WAC1D,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAAA;AAGD,SAAS,eAAe,CAAC,SAIvB;AAAA,EACD,MAAM,QAAQ,QAAQ,MAAM,SAAS,UAAU;AAAA,EAC/C,MAAM,YACL,QAAQ,MAAM,SAAS,OAAO,CAAC,YAC9B,kBAAkB,SAAS,QAAQ,EAAE,CACtC,EAAE,UAAU;AAAA,EACb,OAAO,EAAE,WAAW,OAAO,WAAW,QAAQ,UAAU;AAAA;AAGzD,SAAS,mBAAmB,CAAC,SAA2C;AAAA,EACvE,OACC,UAAU,OAAO,GAAG,QAAQ,KAAK,CAAC,WAAW,OAAO,WAAW,IAAI,KAAK;AAAA;AAI1E,SAAS,UAAU,CAClB,SACA,2BAA2B,OAClB;AAAA,EACT,MAAM,SAAS,cAAc,OAAO;AAAA,EACpC,IAAI,WAAW,YAAY;AAAA,IAC1B,OAAO,QAAQ,OAAO,sBAAsB;AAAA,EAC7C;AAAA,EACA,IAAI,WAAW;AAAA,IAAS,OAAO;AAAA,EAC/B,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,IAAI,WAAW;AAAA,IAAa,OAAO;AAAA,EACnC,IAAI,WAAW;AAAA,IAAU,OAAO;AAAA,EAChC,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,IAAI,oBAAoB,OAAO,GAAG;AAAA,IACjC,OAAO,2BACJ,uBACA;AAAA,EACJ;AAAA,EACA,MAAM,WACL,QAAQ,MAAM,SAAS,MACtB,CAAC,YACA,QAAQ,OAAO,IAAI,aAAa,kBAAkB,SAAS,QAAQ,EAAE,CACvE,KAAK;AAAA,EACN,MAAM,uBAAuB,IAAI,YAAY,KAC5C,CAAC,eACA,WAAW,aAAa,KACxB,WAAW,mBACV,CAAC,YAAY,WAAW,UAAU,QACrC;AAAA,EACA,IAAI,CAAC;AAAA,IAAsB,OAAO;AAAA,EAClC,OAAO;AAAA;AAGR,SAAS,iBAAiB,CACzB,SACA,2BAA2B,OACD;AAAA,EAC1B,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,MAAM,eAAe,oBAAoB,OAAO;AAAA,EAChD,IAAI,QAAQ,WAAW,CAAC,cAAc;AAAA,IACrC,MAAM,IAAI,MAAM,0DAA0D;AAAA,EAC3E;AAAA,EACA,OAAO;AAAA,IACN,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,UAAU,QAAQ;AAAA,IAClB,QAAQ,cAAc,OAAO;AAAA,IAC7B,UAAU,QAAQ;AAAA,IAClB,iBAAiB,KAAK,aAAa;AAAA,IACnC,aAAa,KAAK,MAAM;AAAA,IACxB,UAAU,gBAAgB,OAAO;AAAA,IACjC,YAAY,WAAW,SAAS,wBAAwB;AAAA,IACxD,cAAc,eAAe,EAAE,SAAS,aAAa,IAAI;AAAA,EAC1D;AAAA;AAGD,SAAS,kBAAkB,CAAC,SAA2C;AAAA,EACtE,OAAO;AAAA,OACH,kBAAkB,OAAO;AAAA,IAC5B,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,UAAU;AAAA,EACX;AAAA;AAGD,SAAS,mBAAmB,CAC3B,SACA,2BAA2B,OACD;AAAA,EAC1B,MAAM,MAAM,UAAU,OAAO;AAAA,EAC7B,MAAM,UAAU,QAAQ,MAAM,SAAS,KACtC,CAAC,SAAS,KAAK,OAAO,KAAK,SAC5B;AAAA,EACA,OAAO;AAAA,OACH,kBAAkB,SAAS,wBAAwB;AAAA,IACtD,MAAM;AAAA,IACN,MAAM,QAAQ;AAAA,IACd,SAAS,WAAW;AAAA,IACpB,KAAK,OAAO;AAAA,EACb;AAAA;AAGD,SAAS,kBAAkB,CAC1B,SACA,cAC0B;AAAA,EAC1B,IAAI,aAAsC;AAAA,EAC1C,IAAI,MAAyB;AAAA,EAC7B,WAAW,aAAa,QAAQ,MAAM;AAAA,IACrC,MAAM,QAAQ,UAAU,QAAQ,KAC/B,CAAC,WAAW,OAAO,OAAO,YAC3B;AAAA,IACA,IAAI,OAAO;AAAA,MACV,aAAa;AAAA,MACb,MAAM;AAAA,MACN;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,cAAc,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,4BAA4B;AAAA,EACrE,IAAI,UAAU,OAAO,GAAG,OAAO,IAAI,MAAM,WAAW,WAAW,MAAM;AAAA,IACpE,MAAM,IAAI,MACT,mEACD;AAAA,EACD;AAAA,EACA,MAAM,UAAU,QAAQ,MAAM,SAAS,KACtC,CAAC,SAAS,KAAK,OAAO,YAAY,SACnC;AAAA,EACA,MAAM,OAAO,QAAQ;AAAA,EACrB,MAAM,wBAAwB,IAAI,IAAI,WAAW,aAAa;AAAA,EAC9D,OAAO;AAAA,IACN,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,UAAU,QAAQ;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,aAAa,OACV;AAAA,MACA,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,cAAc,CAAC,GAAG,KAAK,YAAY;AAAA,MACnC,WAAW,CAAC,GAAG,KAAK,SAAS;AAAA,MAC7B,UAAU,KAAK,SAAS,IAAI,CAAC,eAAe;AAAA,QAC3C,IAAI,UAAU;AAAA,QACd,OAAO,UAAU;AAAA,QACjB,SAAS,UAAU;AAAA,QACnB,SAAS,CAAC,GAAG,UAAU,OAAO;AAAA,QAC9B,YAAY,CAAC,GAAG,UAAU,UAAU;AAAA,QACpC,WAAW,CAAC,GAAG,UAAU,SAAS;AAAA,MACnC,EAAE;AAAA,IACH,IACC;AAAA,IACH,SAAS,WAAW;AAAA,IACpB;AAAA,IACA,kBAAkB,IAAI;AAAA,IACtB,aAAa,IAAI,YAAY,OAAO,CAAC,eACpC,sBAAsB,IAAI,WAAW,EAAE,CACxC;AAAA,IACA,qBACC,MAAM,SACJ,OAAO,CAAC,cAAc,kBAAkB,SAAS,UAAU,EAAE,CAAC,EAC9D,IAAI,CAAC,cAAc,UAAU,EAAE,KAAK,CAAC;AAAA,EACzC;AAAA;AAGD,SAAS,OAAO,CACf,SACA,SACA,2BAA2B,OACD;AAAA,EAC1B,IAAI,QAAQ,SAAS,WAAW;AAAA,IAC/B,OAAO,kBAAkB,SAAS,wBAAwB;AAAA,EAC3D;AAAA,EACA,IAAI,QAAQ,SAAS,aAAa;AAAA,IACjC,OAAO,oBAAoB,SAAS,wBAAwB;AAAA,EAC7D;AAAA,EACA,IAAI,QAAQ,SAAS,YAAY;AAAA,IAChC,OAAO,mBAAmB,SAAS,QAAQ,YAAY;AAAA,EACxD;AAAA,EACA,OAAO;AAAA,OACH,kBAAkB,SAAS,wBAAwB;AAAA,IACtD,MAAM;AAAA,IACN,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ;AAAA,IACjB,YAAY,QAAQ;AAAA,EACrB;AAAA;AAGD,SAAS,eAAe,CACvB,SACA,aACA,UACA,QAC0B;AAAA,EAC1B,OAAO;AAAA,IACN;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB;AAAA,OACI,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,EAC1C;AAAA;AAGD,SAAS,uBAAuB,CAC/B,SACA,SACA,KACA,UACe;AAAA,EACf,OAAO,GACN,QAAQ,OAAO,YAAY,WACxB,uBACA,8BACH;AAAA,IACC,WAAW,gBAAgB,SAAS,QAAQ,aAAa,UAAU,GAAG;AAAA,IACtE,YAAY,kBAAkB,OAAO;AAAA,EACtC,CACD;AAAA;AAGD,SAAS,0BAA0B,CAClC,SACA,SACyD;AAAA,EACzD,MAAM,iBAAiB,QAAQ,WAAW,KACzC,CAAC,cAAc,UAAU,OAAO,QAAQ,WACzC;AAAA,EACA,IACC,gBAAgB,SAAS,sBACzB,eAAe,gBAAgB,qBAAqB,OAAO,GAC1D;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,MAAM,SAAS,gBAAgB,SAAS,OAAO;AAAA,EAC/C,IAAI,CAAC,OAAO,UAAU;AAAA,IACrB,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAC/D;AAAA,EACA,OAAO,EAAE,SAAS,OAAO,SAAS,KAAK,OAAO,MAAM;AAAA;AAGrD,eAAe,sBAAsB,CACpC,aACA,SAC0B;AAAA,EAC1B,MAAM,WAAW,MAAM,YAAY,YAAY,QAAQ,SAAS;AAAA,EAChE,MAAM,YAAY,UAAU,WAAW,KACtC,CAAC,SAAS,KAAK,OAAO,QAAQ,WAC/B;AAAA,EACA,IACC,CAAC,UAAU,WACX,WAAW,SAAS,mBACpB,UAAU,gBAAgB,qBAAqB,OAAO,GACrD;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,qBAAqB,CAC7B,UACA,SACe;AAAA,EACf,OAAO,GAAG,4CAA4C;AAAA,IACrD,WAAW,gBACV,UACA,QAAQ,aACR,MACA,SAAS,OACV;AAAA,IACA,YAAY,mBAAmB,QAAQ;AAAA,EACxC,CAAC;AAAA;AAGF,SAAS,sBAAsB,CAC9B,OACA,SACA,SACA,UACe;AAAA,EACf,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACrE,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,SACC;AAAA,IACD,cAAc;AAAA,MACb,UAAU,SAAS;AAAA,MACnB,WAAW,gBACV,SACA,QAAQ,aACR,UACA,QAAQ,OACT;AAAA,MACA,YAAY;AAAA,QACX,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,cAAc;AAAA,MACf;AAAA,MACA,YAAY,kBAAkB,OAAO;AAAA,MACrC,SAAS;AAAA,QACR,SAAS;AAAA,QACT,UACC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA;AAGM,SAAS,iBAAiB,CAChC,YACA,aACc;AAAA,EACd,OAAO;AAAA,SACA,OAAM,CAAC,OAAO;AAAA,MACnB,IAAI;AAAA,MACJ,IAAI;AAAA,QACH,UAAU,kBAAkB,MAAM,KAAK,EAAE;AAAA,QACxC,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA,MAE3B,IAAI;AAAA,QACH,MAAM,UAAU,MAAM,WAAW,KAAK;AAAA,QACtC,IAAI,CAAC,SAAS;AAAA,UACb,OAAO,GAAG,2BAA2B;AAAA,YACpC,YAAY;AAAA,cACX,MAAM,QAAQ;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,cACV,YAAY;AAAA,YACb;AAAA,UACD,CAAC;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,cAAc,oBAAoB,OAAO,GAAG;AAAA,UAChE,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,YACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,YACvC,IAAI,CAAC,SAAS;AAAA,cACb,OAAO,GAAG,2BAA2B;AAAA,gBACpC,YAAY;AAAA,kBACX,MAAM,QAAQ;AAAA,kBACd,QAAQ;AAAA,kBACR,UAAU;AAAA,kBACV,YAAY;AAAA,gBACb;AAAA,cACD,CAAC;AAAA,YACF;AAAA,YACA,MAAM,UAAU,oBAAoB,OAAO;AAAA,YAC3C,IAAI,2BAA2B;AAAA,YAC/B,IAAI,SAAS;AAAA,cACZ,IAAI;AAAA,gBACH,2BACE,MAAM,YAAY,oBAAoB,MACvC,QAAQ;AAAA,gBACR,OAAO,OAAO;AAAA,gBACf,OAAO,cACN,OACA,0IACD;AAAA;AAAA,YAEF;AAAA,YACA,OAAO,GAAG,uBAAuB;AAAA,cAChC,YAAY,QAAQ,SAAS,SAAS,wBAAwB;AAAA,YAC/D,CAAC;AAAA,WACD;AAAA,QACF;AAAA,QACA,OAAO,GAAG,uBAAuB;AAAA,UAChC,YAAY,QAAQ,SAAS,OAAO;AAAA,QACrC,CAAC;AAAA,QACA,OAAO,OAAO;AAAA,QACf,IAAI,iBAAiB,4BAA4B;AAAA,UAChD,MAAM,aAAa,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,YACnE,IAAI;AAAA,cACH,MAAM,YAAY,KAAK;AAAA,cACvB,OAAO,EAAE,OAAO,WAAoB,MAAM,KAAK;AAAA,cAC9C,OAAO,cAAc;AAAA,cACtB,IAAI,EAAE,wBAAwB,6BAA6B;AAAA,gBAC1D,OAAO,EAAE,OAAO,WAAoB,MAAM,KAAK;AAAA,cAChD;AAAA,cACA,MAAM,OAAO,MAAM,YAAY,qBAAqB;AAAA,cACpD,OAAO,EAAE,OAAO,eAAwB,KAAK;AAAA;AAAA,WAE9C;AAAA,UACD,OAAO,cACN,OACA,WAAW,UAAU,YAClB,gFACA,WAAW,OACV,uCAAuC,WAAW,UAClD,4CACL;AAAA,QACD;AAAA,QACA,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,SAAQ,CAAC,OAAO;AAAA,MACrB,IAAI;AAAA,QACH,MAAM,UAAU,oBAAoB,MAAM,KAAK,EAAE;AAAA,QACjD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,SAAS,SACd,MAAM,YAAY,KAAK,GACvB,SACA,WACD;AAAA,UACA,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,OAAO,GAAG,qBAAqB;AAAA,YAC9B,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,QACR;AAAA,YACA,YAAY,kBAAkB,OAAO,OAAO;AAAA,UAC7C,CAAC;AAAA,SACD;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,YAAW,CAAC,OAAO;AAAA,MACxB,IAAI;AAAA,QACH,MAAM,UAAU,uBAAuB,MAAM,KAAK,EAAE;AAAA,QACpD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,UACvC,IAAI,CAAC;AAAA,YAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,UAC9D,MAAM,SAAS,YAAY,SAAS,OAAO;AAAA,UAC3C,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,OAAO,GAAG,kBAAkB;AAAA,YAC3B,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,QACR;AAAA,YACA,YAAY,kBAAkB,OAAO,OAAO;AAAA,UAC7C,CAAC;AAAA,SACD;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,SAAQ,CAAC,OAAO;AAAA,MACrB,IAAI;AAAA,QACH,MAAM,UAAU,oBAAoB,MAAM,KAAK,EAAE;AAAA,QACjD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,UACvC,IAAI,CAAC;AAAA,YAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,UAC9D,MAAM,SAAS,SAAS,SAAS,SAAS,WAAW;AAAA,UACrD,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,OAAO,GAAG,sBAAsB;AAAA,YAC/B,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,UACP,OAAO,KACR;AAAA,YACA,YAAY,oBAAoB,OAAO,OAAO;AAAA,UAC/C,CAAC;AAAA,SACD;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,YAAW,CAAC,OAAO;AAAA,MACxB,IAAI;AAAA,QACH,MAAM,UAAU,uBAAuB,MAAM,KAAK,EAAE;AAAA,QACpD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,UACvC,IAAI,CAAC;AAAA,YAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,UAC9D,MAAM,iBAAiB,QAAQ,WAAW,KACzC,CAAC,cAAc,UAAU,OAAO,QAAQ,WACzC;AAAA,UACA,MAAM,kBACL,gBAAgB,SAAS,iBACtB,QAAQ,KACP,QAAQ,CAAC,QAAQ,IAAI,OAAO,EAC5B,KAAK,CAAC,WAAW,OAAO,OAAO,eAAe,QAAQ,IACvD;AAAA,UACJ,MAAM,SAAS,YACd,SACA;AAAA,eACI;AAAA,YACH,cACC,iBAAiB,gBAChB,MAAM,YAAY,oBAAoB;AAAA,UACzC,GACA,WACD;AAAA,UACA,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,MAAM,aACL,UAAU,OAAO,OAAO,GAAG,OAAO,OAAO,MAAM,SAC/C,OAAO,MAAM,WAAW;AAAA,UACzB,OAAO,GACN,OAAO,YAAY,CAAC,aACjB,2EACA,0CACH;AAAA,YACC,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,UACP,OAAO,KACR;AAAA,YACA,YAAY,aACT,mBAAmB,OAAO,SAAS,OAAO,MAAM,EAAE,IAClD,kBAAkB,OAAO,OAAO;AAAA,UACpC,CACD;AAAA,SACA;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,gBAAe,CAAC,OAAO;AAAA,MAC5B,IAAI;AAAA,QACH,MAAM,UAAU,2BAA2B,MAAM,KAAK,EAAE;AAAA,QACxD,MAAM,UAAU,MAAM,WAAW,KAAK;AAAA,QACtC,IAAI,SAAS;AAAA,UACZ,MAAM,SAAS,2BAA2B,SAAS,OAAO;AAAA,UAC1D,IAAI,QAAQ;AAAA,YACX,OAAO,wBACN,OAAO,SACP,SACA,OAAO,KACP,IACD;AAAA,UACD;AAAA,QACD;AAAA,QACA,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,UACvC,IAAI,CAAC;AAAA,YAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,UAC9D,MAAM,cAAc,2BAA2B,SAAS,OAAO;AAAA,UAC/D,IAAI,aAAa;AAAA,YAChB,OAAO,wBACN,YAAY,SACZ,SACA,YAAY,KACZ,IACD;AAAA,UACD;AAAA,UACA,MAAM,iBAAiB,QAAQ,WAAW,KACzC,CAAC,cAAc,UAAU,OAAO,QAAQ,WACzC;AAAA,UACA,IAAI,CAAC,gBAAgB;AAAA,YACpB,MAAM,aAAa,QAAQ,KACzB,QAAQ,CAAC,QAAQ,IAAI,OAAO,EAC5B,KAAK,CAAC,WAAW,OAAO,OAAO,QAAQ,YAAY;AAAA,YACrD,IAAI,CAAC;AAAA,cAAY,MAAM,IAAI,MAAM,4BAA4B;AAAA,YAC7D,IACE,MAAM,YAAY,oBAAoB,MACvC,WAAW,cACV;AAAA,cACD,OAAO,cACN,IAAI,MAAM,iDAAiD,GAC3D,oIACD;AAAA,YACD;AAAA,UACD;AAAA,UACA,MAAM,SAAS,gBAAgB,SAAS,OAAO;AAAA,UAC/C,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,OAAO,wBACN,OAAO,SACP,SACA,OAAO,OACP,OAAO,QACR;AAAA,SACA;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,sBAAqB,CAAC,OAAO;AAAA,MAClC,IAAI;AAAA,QACH,MAAM,UAAU,2BAA2B,MAAM,KAAK,EAAE;AAAA,QACxD,MAAM,UAAU,MAAM,WAAW,KAAK;AAAA,QACtC,IAAI,CAAC;AAAA,UAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,QAC9D,MAAM,SAAS,2BAA2B,SAAS,OAAO;AAAA,QAC1D,IAAI,CAAC,QAAQ;AAAA,UACZ,MAAM,IAAI,MACT,gIACD;AAAA,QACD;AAAA,QACA,OAAO,wBACN,OAAO,SACP,SACA,OAAO,KACP,IACD;AAAA,QACC,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,aAAY,CAAC,OAAO;AAAA,MACzB,IAAI;AAAA,QACH,MAAM,UAAU,wBAAwB,MAAM,KAAK,EAAE;AAAA,QACrD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,UACvC,IAAI,CAAC;AAAA,YAAS,MAAM,IAAI,MAAM,gCAAgC;AAAA,UAC9D,MAAM,SAAS,aAAa,SAAS,OAAO;AAAA,UAC5C,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,OAAO,GAAG,kDAAkD;AAAA,YAC3D,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,UACP,OAAO,KACR;AAAA,YACA,YAAY,kBAAkB,OAAO,OAAO;AAAA,UAC7C,CAAC;AAAA,SACD;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,SAItB,aAAY,CAAC,OAAO;AAAA,MACzB,IAAI;AAAA,QACH,MAAM,UAAU,wBAAwB,MAAM,KAAK,EAAE;AAAA,QACrD,OAAO,MAAM,WAAW,SAAS,OAAO,gBAAgB;AAAA,UACvD,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,UACtC,IAAI,CAAC,UAAU,OAAO,OAAO,QAAQ,WAAW;AAAA,YAC/C,MAAM,WAAW,MAAM,uBAAuB,aAAa,OAAO;AAAA,YAClE,IAAI;AAAA,cAAU,OAAO,sBAAsB,UAAU,OAAO;AAAA,YAC5D,IAAI,CAAC,QAAQ;AAAA,cACZ,MAAM,IAAI,MAAM,gDAAgD;AAAA,YACjE;AAAA,UACD;AAAA,UACA,MAAM,SAAS,aAAa,QAAQ,OAAO;AAAA,UAC3C,MAAM,YAAY,KAAK,OAAO,OAAO;AAAA,UACrC,IAAI;AAAA,YACH,MAAM,YAAY,gBAAgB,OAAO,OAAO;AAAA,YAC/C,OAAO,OAAO;AAAA,YACf,OAAO,uBACN,OACA,OAAO,SACP,SACA,OAAO,QACR;AAAA;AAAA,UAED,OAAO,GAAG,gCAAgC;AAAA,YACzC,WAAW,gBACV,OAAO,SACP,QAAQ,aACR,OAAO,UACP,OAAO,KACR;AAAA,YACA,YAAY,mBAAmB,OAAO,OAAO;AAAA,UAC9C,CAAC;AAAA,SACD;AAAA,QACA,OAAO,OAAO;AAAA,QACf,OAAO,cAAc,KAAK;AAAA;AAAA;AAAA,EAG7B;AAAA;;;ACvuBD,uBAAS;AAGF,IAAM,8BAAqD;AAAA,EACjE,OAAO,CAAC,SAAS,GAAG,QAAQ,YAAW;AACxC;;;ACEA,SAAS,OAAO,CAAC,WAAmB;AAAA,EACnC,OAAO,kBACN,4BAA4B,SAAS,GACrC,2BACD;AAAA;AAGM,IAAM,aAAa,CACzB,WACA,UAC2B,QAAQ,SAAS,EAAE,OAAO,KAAK;AACpD,IAAM,eAAe,CAC3B,WACA,UAC2B,QAAQ,SAAS,EAAE,SAAS,KAAK;AACtD,IAAM,kBAAkB,CAC9B,WACA,UAC2B,QAAQ,SAAS,EAAE,YAAY,KAAK;AACzD,IAAM,eAAe,CAC3B,WACA,UAC2B,QAAQ,SAAS,EAAE,SAAS,KAAK;AACtD,IAAM,kBAAkB,CAC9B,WACA,UAC2B,QAAQ,SAAS,EAAE,YAAY,KAAK;AACzD,IAAM,sBAAsB,CAClC,WACA,UAC2B,QAAQ,SAAS,EAAE,gBAAgB,KAAK;AAC7D,IAAM,4BAA4B,CACxC,WACA,UAC2B,QAAQ,SAAS,EAAE,sBAAsB,KAAK;AACnE,IAAM,mBAAmB,CAC/B,WACA,UAC2B,QAAQ,SAAS,EAAE,aAAa,KAAK;AAC1D,IAAM,mBAAmB,CAC/B,WACA,UAC2B,QAAQ,SAAS,EAAE,aAAa,KAAK;;;AHdjE,IAAM,OAAO,KAAK;AAGlB,IAAM,WAAU,IAAI;AAEpB,SAAS,eAAe,CACvB,OACA,SACC;AAAA,EACD,MAAM,WAAW,SAAS,YAAY;AAAA,EACtC,OAAO,KACL,OAAO,EACP,KAAK,EACL,OACA,CAAC,UAAU,SAAS,cAAc,MAAM,SAAS,GACjD,GAAG,wBACJ,EACC,OACA,CAAC,UAAU,SAAQ,OAAO,KAAK,EAAE,cAAc,UAC/C,GAAG,uBAAuB,uBAC3B;AAAA;AAGF,IAAM,OAAO,gBAAgB,MAAM;AACnC,IAAM,YAAY,KAChB,OAAO,EACP,IAAI,qBAAqB,EACzB,MAAM,4BAA4B;AACpC,IAAM,cAAc,KAClB,OAAO,EACP,IAAI,CAAC,EACL,IAAI,GAAG,EACP,MAAM,+BAA+B;AACvC,IAAM,qBAAqB,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACvD,IAAM,WAAW,KAAK,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY;AACxD,IAAM,QAAQ,EAAE,aAAa,kBAAkB,SAAS;AACxD,IAAM,WAAW,KACf,OAAO;AAAA,EACP,MAAM,gBAAgB,iBAAiB,EAAE,UAAU,eAAe,CAAC,EAAE,OACpE,gBACA,qBACD;AACD,CAAC,EACA,OAAO;AACT,IAAM,cAAc,KAClB,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS,KAAK,MAAM,IAAI,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC3D,YAAY,KAAK,MAAM,IAAI,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC9D,WAAW,KAAK,MAAM,SAAS,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AACnE,CAAC,EACA,OAAO;AACT,IAAM,OAAO,KACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc,KAAK,MAAM,IAAI,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAChE,WAAW,KAAK,MAAM,IAAI,EAAE,IAAI,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC7D,UAAU,KAAK,MAAM,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,iBAAiB;AAC/D,CAAC,EACA,OAAO,EACP,YAAY,CAAC,OAAO,YAAY;AAAA,EAChC,IAAI,SAAQ,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,aAAa,gBAAgB;AAAA,IACtE,QAAQ,SAAS;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,sBAAsB;AAAA,IAChC,CAAC;AAAA,EACF;AAAA,CACA;AACF,IAAM,gBAAgB,KACpB,OAAO;AAAA,EACP,UAAU,KAAK,KAAK,CAAC,YAAY,UAAU,CAAC;AAAA,EAC5C,SAAS;AAAA,EACT,UAAU,KAAK,SAAS;AACzB,CAAC,EACA,OAAO;AACT,IAAM,eAAe,KACnB,OAAO;AAAA,EACP,SAAS,KAAK,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,EACvC,UAAU,KAAK,MAAM,aAAa,EAAE,IAAI,mBAAmB,EAAE,QAAQ,CAAC,CAAC;AAAA,EACvE,qBAAqB,KAAK,KAAK,CAAC,aAAa,sBAAsB,CAAC;AACrE,CAAC,EACA,OAAO,EACP,YAAY,CAAC,QAAQ,YAAY;AAAA,EACjC,WAAW,SAAS,2BAA2B,MAAM,GAAG;AAAA,IACvD,QAAQ,SAAS,EAAE,MAAM,aAAa,MAAM,CAAC;AAAA,EAC9C;AAAA,CACA;AAEF,IAAM,aAAa;AAAA,EAClB,SAAS,KAAK,mBAAmB,QAAQ;AAAA,IACxC,KAAK,OAAO,EAAE,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,EAAE,OAAO;AAAA,IACtD,KAAK,OAAO,EAAE,MAAM,KAAK,QAAQ,QAAQ,EAAE,CAAC,EAAE,OAAO;AAAA,IACrD,KAAK,OAAO,EAAE,MAAM,KAAK,QAAQ,WAAW,EAAE,CAAC,EAAE,OAAO;AAAA,IACxD,KACE,OAAO;AAAA,MACP,MAAM,KAAK,QAAQ,UAAU;AAAA,MAC7B,cAAc;AAAA,IACf,CAAC,EACA,OAAO;AAAA,EACV,CAAC;AACF;AACA,IAAM,eAAe;AAAA,EACpB,SAAS,KAAK,OAAO,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC,EAAE,OAAO;AAC7D;AACA,IAAM,kBAAkB,EAAE,SAAS,KAAK,OAAO,KAAK,EAAE,OAAO,EAAE;AAC/D,IAAM,eAAe;AAAA,EACpB,SAAS,KAAK,OAAO,KAAK,OAAO,WAAW,UAAU,SAAS,EAAE,CAAC,EAAE,OAAO;AAC5E;AACA,IAAM,sBAAsB;AAAA,EAC3B,SAAS,KACP,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,IACT,OAAO,KAAK,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EACtC,CAAC,EACA,OAAO;AACV;AACA,IAAM,kBAAkB;AAAA,EACvB,SAAS,KACP,OAAO;AAAA,OACJ;AAAA,IACH;AAAA,IACA,kBAAkB,KAAK,MAAM,QAAQ,EAAE,IAAI,aAAa;AAAA,IACxD,QAAQ,KACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AAAA,IAChD,CAAC,EACA,OAAO;AAAA,EACV,CAAC,EACA,OAAO;AACV;AACA,IAAM,sBAAsB;AAAA,EAC3B,SAAS,KACP,OAAO;AAAA,OACJ;AAAA,IACH;AAAA,IACA,cAAc;AAAA,IACd,SAAS;AAAA,IACT,QAAQ;AAAA,EACT,CAAC,EACA,OAAO;AACV;AACA,IAAM,mBAAmB;AAAA,EACxB,SAAS,KAAK,OAAO,KAAK,OAAO,UAAU,CAAC,EAAE,OAAO;AACtD;AACA,IAAM,mBAAmB;AAAA,EACxB,SAAS,KACP,OAAO;AAAA,OACJ;AAAA,IACH,WAAW,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,qBAAqB;AAAA,IACzD,MAAM,KAAK,KAAK,CAAC,aAAa,YAAY,WAAW,CAAC;AAAA,IACtD,SAAS,gBAAgB,mBAAmB,EAAE,YAAY,KAAK,CAAC,EAAE,QACjE,EACD;AAAA,EACD,CAAC,EACA,OAAO;AACV;AAgBA,SAAS,IAAI,CAAC,OAAwB;AAAA,EACrC,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA;AAGrC,SAAS,SAAS,CAAC,OAAwB;AAAA,EAC1C,OAAO,KAAK;AAAA,IACX,QAAQ;AAAA,IACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9D,cAAc;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,QACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC/D;AAAA,IACD;AAAA,EACD,CAAC;AAAA;AAGF,eAAe,OAAO,CACrB,SACA,SACkB;AAAA,EAClB,IAAI;AAAA,IACH,OAAO,KAAK,MAAM,QAAQ,qBAAqB,OAAO,CAAC,CAAC;AAAA,IACvD,OAAO,OAAO;AAAA,IACf,OAAO,UAAU,KAAK;AAAA;AAAA;AAIxB,SAAS,eAAe,CACvB,SACA,YACA,SACkB;AAAA,EAClB,WAAW,OAAO,QAAQ,SAAS;AAAA,EACnC,OAAO,QAAQ,SAAS,OAAO;AAAA;AAGhC,SAAS,uBAAuB,CAC/B,SACA,SACA,eACkB;AAAA,EAClB,IAAI,QAAQ,UAAU,iBAAiB;AAAA,IACtC,OAAO,QAAQ,SAAS,aAAa;AAAA,EACtC;AAAA,EACA,OAAO,QAAQ,SAAS,OAAO;AAAA;AAGzB,SAAS,WAAW,CAAC,MAAe,SAAiC;AAAA,EAC3E,OAAO;AAAA,IACN,eAAe,KAAK;AAAA,MACnB,aAAa;AAAA,MACb,MAAM,EAAE,IAAI,KAAK,KAAK,iBAAiB,EAAE;AAAA,MACzC,SAAS,SAAS,SAAS,gBAAgB,EAAE,EAAE;AAAA,IAChD,CAAC;AAAA,IACD,aAAa,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,QAAQ,SAAS,CAAC,cAAc,WAAW,WAAW,IAAI,CAAC;AAAA,IAC7D,CAAC;AAAA,IACD,gBAAgB,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,aAAa,WAAW,IAAI,CAC7B;AAAA,IACF,CAAC;AAAA,IACD,mBAAmB,KAAK;AAAA,MACvB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,gBAAgB,WAAW,IAAI,CAChC;AAAA,IACF,CAAC;AAAA,IACD,gBAAgB,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,aAAa,WAAW,IAAI,CAC7B;AAAA,IACF,CAAC;AAAA,IACD,uBAAuB,KAAK;AAAA,MAC3B,aACC;AAAA,MACD,MAAM;AAAA,MACN,SAAS,OAAO,MAAM,YAAY;AAAA,QACjC,IAAI;AAAA,UACH,MAAM,UAAU,2BAA2B,MAAM,IAAI,EAAE;AAAA,UACvD,MAAM,YAAY,qBAAqB,OAAO;AAAA,UAC9C,MAAM,WAAW,MAAM,QAAQ,kBAAkB,WAAW,OAAO;AAAA,UACnE,OAAO,KAAK;AAAA,YACX,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,cAAc;AAAA,cACb,SAAS,QAAQ,WAAW,IAC3B,QAAQ,WACR,WACA,QACD;AAAA,cACA,SAAS,SAAS;AAAA,cAClB,OAAO,SAAS;AAAA,YACjB;AAAA,UACD,CAAC;AAAA,UACA,OAAO,OAAO;AAAA,UACf,OAAO,UAAU,KAAK;AAAA;AAAA;AAAA,IAGzB,CAAC;AAAA,IACD,mBAAmB,KAAK;AAAA,MACvB,aACC;AAAA,MACD,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,gBAAgB,WAAW,IAAI,CAChC;AAAA,IACF,CAAC;AAAA,IACD,uBAAuB,KAAK;AAAA,MAC3B,aACC;AAAA,MACD,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,wBACC,SACA,CAAC,cAAc,oBAAoB,WAAW,IAAI,GAClD,CAAC,cAAc,0BAA0B,WAAW,IAAI,CACzD;AAAA,IACF,CAAC;AAAA,IACD,oBAAoB,KAAK;AAAA,MACxB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,iBAAiB,WAAW,IAAI,CACjC;AAAA,IACF,CAAC;AAAA,IACD,oBAAoB,KAAK;AAAA,MACxB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YACf,gBAAgB,SAAS,QAAQ,YAAY,CAAC,cAC7C,iBAAiB,WAAW,IAAI,CACjC;AAAA,IACF,CAAC;AAAA,EACF;AAAA;;;AIxWD,uBAAS,2BAAY;AAQrB,IAAM,eAAe;AACrB,IAAM,iBAAiB,KAAK,KAAK;AAAA;AAwB1B,MAAM,+BAA+B,MAAM;AAAA,EACxC,OAAO;AACjB;AAEA,SAAS,eAAe,CAAC,OAA+B;AAAA,EACvD,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,UAAW,MAAkC;AAAA,EACnD,OAAO,OAAO,YAAY,WAAW,UAAU;AAAA;AAGhD,SAAS,QAAQ,CAAC,OAA+B;AAAA,EAChD,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,OAAQ,MAAkC;AAAA,EAChD,OAAO,OAAO,SAAS,YAAY,OAAO,cAAc,IAAI,IAAI,OAAO;AAAA;AAGxE,SAAS,cAAc,CAAC,OAAyB;AAAA,EAChD,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,WAAW;AAAA,EACjB,OAAO,SAAS,cAAc,SAAS,SAAS,aAAa;AAAA;AAG9D,SAAS,MAAM,CAAC,OAAe;AAAA,EAC9B,OAAO,UAAU,YAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA;AAGjE,SAAS,MAAM,CAAC,OAAuB;AAAA,EACtC,OAAO,MAAK,YAAY,MAAM;AAAA;AAAA;AAGxB,MAAM,6BAA6B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,IAAI;AAAA,EAExB,WAAW,CAAC,SAAmC;AAAA,IAC9C,KAAK,WAAW,QAAQ;AAAA,IACxB,KAAK,OAAO,QAAQ,OAAO,KAAK;AAAA,IAChC,KAAK,YAAY,QAAQ,YAAY;AAAA;AAAA,EAGtC,MAAM,GAAS;AAAA,IACd,MAAM,SAAS,KAAK,KAAK,IAAI;AAAA,IAC7B,YAAY,WAAW,YAAY,KAAK,UAAU;AAAA,MACjD,IAAI,QAAQ,WAAW,QAAQ,QAAQ,UAAU,QAAQ;AAAA,QACxD,KAAK,SAAS,OAAO,SAAS;AAAA,MAC/B;AAAA,IACD;AAAA;AAAA,EAGD,GAAG,CACF,WACA,WACA,UACuD;AAAA,IACvD,KAAK,OAAO;AAAA,IACZ,IAAI,KAAK,SAAS,IAAI,SAAS,GAAG;AAAA,MACjC,MAAM,IAAI,uBACT,gEACD;AAAA,IACD;AAAA,IACA,IAAI,KAAK,SAAS,QAAQ,cAAc;AAAA,MACvC,MAAM,IAAI,uBACT,yCACD;AAAA,IACD;AAAA,IACA,MAAM,YAAY,KAAK,UAAU;AAAA,IACjC,KAAK,SAAS,IAAI,WAAW;AAAA,SACzB;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,KAAK,KAAK;AAAA,MACnB,QAAQ;AAAA,IACT,CAAC;AAAA,IACD,OAAO,EAAE,WAAW,aAAa,eAAe;AAAA;AAAA,EAGjD,MAAM,CAAC,WAA4B;AAAA,IAClC,OAAO,KAAK,SAAS,OAAO,SAAS;AAAA;AAAA,EAGtC,iBAAiB,CAAC,OAAoB,QAA4B;AAAA,IACjE,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,OAAO,MAAM,IAAI;AAAA,MAAG;AAAA,IACzB,MAAM,UAAU,KAAK,SAAS,IAAI,MAAM,SAAS;AAAA,IACjD,IAAI,CAAC,WAAW,QAAQ,WAAW;AAAA,MAAM;AAAA,IACzC,IAAI,gBAAgB,OAAO,IAAI,MAAM,QAAQ,SAAS;AAAA,MACrD,KAAK,SAAS,OAAO,MAAM,SAAS;AAAA,MACpC,MAAM,IAAI,uBACT,0FACD;AAAA,IACD;AAAA,IACA,QAAQ,SAAS,MAAM;AAAA;AAAA,OAGlB,iBAAgB,CACrB,OACA,QACwC;AAAA,IACxC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,OAAO,MAAM,IAAI;AAAA,MAAG,OAAO;AAAA,IAChC,MAAM,UAAU,KAAK,SAAS,IAAI,MAAM,SAAS;AAAA,IACjD,IAAI,CAAC,WAAW,QAAQ,WAAW,MAAM;AAAA,MAAQ,OAAO;AAAA,IACxD,KAAK,SAAS,OAAO,MAAM,SAAS;AAAA,IACpC,IAAI,gBAAgB,MAAM,IAAI,MAAM,QAAQ,SAAS;AAAA,MACpD,MAAM,IAAI,uBACT,wDACD;AAAA,IACD;AAAA,IACA,MAAM,eAAe,SAAS,OAAO,QAAQ;AAAA,IAC7C,IAAI,iBAAiB,MAAM;AAAA,MAC1B,MAAM,IAAI,uBACT,mFACD;AAAA,IACD;AAAA,IACA,MAAM,cAAc,MAAM,KAAK,SAAS,QAAQ,WAAW;AAAA,MAC1D,WAAW,QAAQ;AAAA,MACnB,OAAO,QAAQ;AAAA,MACf,SAAS,QAAQ;AAAA,MACjB,OAAO,QAAQ;AAAA,MACf,cAAc,QAAQ;AAAA,MACtB,WAAW,QAAQ;AAAA,MACnB,UAAU;AAAA,MACV,cAAc,OAAO,OAAO,MAAM;AAAA,MAClC,gBAAgB,eAAe,OAAO,QAAQ;AAAA,IAC/C,CAAC;AAAA,IACD,OAAO,SAAS,GAAG,OAAO;AAAA;AAAA,oBAA+B,KAAK,UAAU;AAAA,MACvE,IAAI,YAAY;AAAA,MAChB,OAAO,YAAY;AAAA,MACnB,QAAQ,YAAY,aAAa,KAAK,YAAY;AAAA,IACnD,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAGR,YAAY,GAAW;AAAA,IACtB,KAAK,OAAO;AAAA,IACZ,OAAO,KAAK,SAAS;AAAA;AAEvB;;;ACnJA,SAAS,aAAa,CAAC,SAA6C;AAAA,EACnE,OAAO,OAAO,OAAO,oBAAoB,OAAO;AAAA;AAGjD,SAAS,aAAa,CAAC,SAA0B,MAAsB;AAAA,EACtE,OAAO,mBAAmB,SAAS,SAAS,WAC3C,cACA,MAAM,IACP;AAAA;AAGD,SAAS,QAAQ,CAAC,OAAc,YAAY,OAAa;AAAA,EACxD,OAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,OACI,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,EACxC;AAAA;AAGD,SAAS,qBAAqB,CAC7B,SACA,MACA,QACO;AAAA,EACP,IAAI,OAAO,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,SAAS,GAAG;AAAA,IACzD,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACtE;AAAA,EACA,MAAM,YAAY,OAAO,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA,EACpE,OAAO,MAAM,OACZ,GACA,OAAO,MAAM,QACb,SACC,KAAK,KAAK,IAAI,QAAQ,YAAY,KAAK,KAAK,MAAM,QAAQ,SAC3D,GACA,SAAS,cAAc,SAAS,IAAI,GAAG,IAAI,GAC3C,GAAG,SACJ;AAAA;AAGD,SAAS,sBAAsB,CAC9B,SACA,MACA,QACO;AAAA,EACP,IAAI,OAAO,MAAM,WAAW,KAAK,OAAO,MAAM,IAAI,SAAS,WAAW;AAAA,IACrE,MAAM,IAAI,MAAM,IAAI,gDAAgD;AAAA,EACrE;AAAA,EACA,MAAM,UAAU,OAAO,MAAM;AAAA,EAC7B,MAAM,SAAS,mBAAmB;AAAA,EAClC,IAAI,CAAC,OAAO,WAAW,QAAQ,UAAU,OAAO,OAAO;AAAA,IACtD,MAAM,IAAI,MACT,IAAI,6BAA6B,OAAO,UAAU,OAAO,QAAQ,UAClE;AAAA,EACD;AAAA,EACA,IAAI,QAAQ,SAAS,QAAQ,QAAQ,EAAE,MAAM,SAAS;AAAA,IACrD,MAAM,IAAI,MAAM,IAAI,yCAAyC;AAAA,EAC9D;AAAA,EACA,QAAQ,SAAS,cAAc,SAAS,IAAI;AAAA;AAG7C,SAAS,iBAAiB,CACzB,mBAC+C;AAAA,EAC/C,OAAO,OAAO,OAAO,WAAW;AAAA,IAC/B,MAAM,UAAU,MAAM,QAAQ,QAAQ,QAAQ,EAAE;AAAA,IAChD,IAAI,CAAC,cAAc,OAAO;AAAA,MAAG;AAAA,IAC7B,kBAAkB,YAAY,SAAS;AAAA,IACvC,IAAI,mBAAmB,SAAS,SAAS;AAAA,MACxC,uBAAuB,SAAS,MAAM,WAAW,MAAM;AAAA,IACxD,EAAO;AAAA,MACN,sBAAsB,SAAS,MAAM,WAAW,MAAM;AAAA;AAAA;AAAA;AAOzD,SAAS,UAAU,CAClB,OACA,cACY;AAAA,EACZ,OAAO,OAAO,YACb,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB;AAAA,IACjD;AAAA,IACA;AAAA,SACI;AAAA,MACH,SAAS,UAAU,SAAgD;AAAA,QAClE,MAAM,SAAS,aAAa,MAAM;AAAA,QAClC,IAAI,CAAC,OAAO,aAAa;AAAA,UACxB,OAAO,KAAK,UAAU;AAAA,YACrB,QAAQ;AAAA,YACR,SAAS,OAAO;AAAA,YAChB,cAAc,EAAE,cAAc,OAAO;AAAA,UACtC,CAAC;AAAA,QACF;AAAA,QACA,OAAO,WAAW,QAAQ,GAAG,IAAI;AAAA;AAAA,IAEnC;AAAA,EACD,CAAC,CACF;AAAA;AAGD,IAAM,aAAqB,OAAO,QAAQ;AAAA,EACzC,MAAM,MAAM,cAAc,GAAG;AAAA,EAC7B,MAAM,UAAU,yBAAyB;AAAA,EACzC,MAAM,eAAe,2BACpB,IAAI,YAAY,IAAI,WACpB;AAAA,IACC,aAAa;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,IACjB,YAAY,2BAA2B;AAAA,EACxC,CACD;AAAA,EACA,MAAM,UAAU,aAAa,MAAM;AAAA,EACnC,IACC,QAAQ,cAAc,SAAS,SAC/B,QAAQ,YAAY,QAAQ,SAC7B;AAAA,EAEA,MAAM,aAAa,IAAI,6BAA6B;AAAA,IACnD,oBAAoB;AAAA,EACrB,CAAC;AAAA,EACD,MAAM,QAAQ,YAAY,KAAK;AAAA,IAC9B;AAAA,IACA,mBAAmB;AAAA,EACpB,CAAC;AAAA,EAED,OAAO;AAAA,IACN,QAAQ,iBAAiB,KAAK;AAAA,MAC7B,mBAAmB,CAAC,WAAW,aAAa,kBAAkB,MAAM;AAAA,IACrE,CAAC;AAAA,IACD,MAAM,WAAW,OAAO,YAAY;AAAA,IACpC,0BAA0B,kBAAkB,CAAC,WAC5C,aAAa,kBAAkB,MAAM,CACtC;AAAA,IACA,OAAO,OAAO,UAAU;AAAA,MACvB,MAAM,QAAQ,MAAM;AAAA,MAIpB,IAAI,MAAM,SAAS,kBAAkB,MAAM,SAAS,qBAAqB;AAAA,QACxE;AAAA,MACD;AAAA,MACA,MAAM,YAAY,MAAM,YAAY;AAAA,MACpC,IAAI,OAAO,cAAc;AAAA,QAAU,WAAW,OAAO,SAAS;AAAA;AAAA,IAE/D,uBAAuB,OAAO,OAAO,WAAW;AAAA,MAC/C,WAAW,kBAAkB,OAAO,MAAM;AAAA;AAAA,IAE3C,sBAAsB,OAAO,OAAO,WAAW;AAAA,MAC9C,IAAI;AAAA,QACH,MAAM,WAAW,iBAAiB,OAAO,MAAM;AAAA,QAC9C,OAAO,OAAO;AAAA,QACf,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QACrE,IAAI,SAAS,0CAA0C,EAAE,QAAQ,CAAC;AAAA,QAClE,OAAO,SAAS,GAAG,OAAO;AAAA;AAAA,0BAAqC;AAAA;AAAA;AAAA,IAGjE,SAAS,YAAY;AAAA,MACpB,aAAa,QAAQ;AAAA;AAAA,EAEvB;AAAA;AAGD,IAAe;",
|
|
36
|
-
"debugId": "
|
|
35
|
+
"mappings": "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",
|
|
36
|
+
"debugId": "57F2808662DBAC8E64756E2164756E21",
|
|
37
37
|
"names": []
|
|
38
38
|
}
|