@revisium/orchestrator 0.1.0-alpha.2 → 0.1.0-alpha.4
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/control-plane/bootstrap.config.json +103 -2
- package/control-plane/default-playbook/catalog/pipelines.json +360 -0
- package/control-plane/default-playbook/catalog/roles.json +56 -0
- package/control-plane/default-playbook/package.json +5 -0
- package/control-plane/default-playbook/playbook.json +13 -0
- package/control-plane/default-playbook/prompts/analyst.md +27 -0
- package/control-plane/default-playbook/prompts/developer.md +26 -0
- package/control-plane/default-playbook/prompts/integrator.md +20 -0
- package/control-plane/default-playbook/prompts/orchestrator.md +23 -0
- package/control-plane/default-playbook/prompts/reviewer.md +28 -0
- package/control-plane/default-playbook/prompts/watcher.md +24 -0
- package/dist/cli/commands/bootstrap.js +68 -7
- package/dist/cli/commands/bootstrap.js.map +1 -1
- package/dist/cli/commands/inbox.js +0 -21
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/run.js +76 -49
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/needs-host.js +7 -8
- package/dist/cli/needs-host.js.map +1 -1
- package/dist/cli/program.js +0 -2
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +18 -1
- package/dist/config.js.map +1 -1
- package/dist/control-plane/client-transport.js +73 -40
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/data-access.js +3 -2
- package/dist/control-plane/data-access.js.map +1 -1
- package/dist/control-plane/definitions.js +1 -1
- package/dist/control-plane/definitions.js.map +1 -1
- package/dist/control-plane/json-fields.js +2 -0
- package/dist/control-plane/json-fields.js.map +1 -1
- package/dist/control-plane/schema-migration.js +86 -0
- package/dist/control-plane/schema-migration.js.map +1 -0
- package/dist/control-plane/seed-default-playbook.js +71 -0
- package/dist/control-plane/seed-default-playbook.js.map +1 -0
- package/dist/control-plane/tables.js +1 -0
- package/dist/control-plane/tables.js.map +1 -1
- package/dist/e2e/kit/agents.js +113 -0
- package/dist/e2e/kit/agents.js.map +1 -0
- package/dist/e2e/kit/assertions.js +119 -0
- package/dist/e2e/kit/assertions.js.map +1 -0
- package/dist/e2e/kit/crash.js +44 -0
- package/dist/e2e/kit/crash.js.map +1 -0
- package/dist/e2e/kit/drive.js +49 -0
- package/dist/e2e/kit/drive.js.map +1 -0
- package/dist/e2e/kit/env.js +16 -0
- package/dist/e2e/kit/env.js.map +1 -0
- package/dist/e2e/kit/fake-integrator.js +42 -0
- package/dist/e2e/kit/fake-integrator.js.map +1 -0
- package/dist/e2e/kit/gh-emulator.js +49 -0
- package/dist/e2e/kit/gh-emulator.js.map +1 -0
- package/dist/e2e/kit/git-target-repo.js +83 -0
- package/dist/e2e/kit/git-target-repo.js.map +1 -0
- package/dist/e2e/kit/harness.js +59 -0
- package/dist/e2e/kit/harness.js.map +1 -0
- package/dist/e2e/kit/index.js +14 -0
- package/dist/e2e/kit/index.js.map +1 -0
- package/dist/e2e/kit/mcp.js +32 -0
- package/dist/e2e/kit/mcp.js.map +1 -0
- package/dist/e2e/kit/scenarios.js +196 -0
- package/dist/e2e/kit/scenarios.js.map +1 -0
- package/dist/e2e/recovery-crash-child.js +29 -0
- package/dist/e2e/recovery-crash-child.js.map +1 -0
- package/dist/e2e/recovery-dd-crash-child.js +42 -0
- package/dist/e2e/recovery-dd-crash-child.js.map +1 -0
- package/dist/engine/ensure-postgres.js +13 -1
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +1 -0
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +24 -3
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +16 -7
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +493 -0
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -0
- package/dist/pipeline/data-driven-template.js +57 -0
- package/dist/pipeline/data-driven-template.js.map +1 -0
- package/dist/pipeline/develop-task.workflow.js +151 -316
- package/dist/pipeline/develop-task.workflow.js.map +1 -1
- package/dist/pipeline/pipeline.module.js +1 -1
- package/dist/pipeline/route-contract.js +82 -0
- package/dist/pipeline/route-contract.js.map +1 -0
- package/dist/pipeline-core/index.js +16 -0
- package/dist/pipeline-core/index.js.map +1 -0
- package/dist/pipeline-core/interpret.js +351 -0
- package/dist/pipeline-core/interpret.js.map +1 -0
- package/dist/pipeline-core/kit/assertions.js +61 -0
- package/dist/pipeline-core/kit/assertions.js.map +1 -0
- package/dist/pipeline-core/kit/builders.js +136 -0
- package/dist/pipeline-core/kit/builders.js.map +1 -0
- package/dist/pipeline-core/kit/drive.js +96 -0
- package/dist/pipeline-core/kit/drive.js.map +1 -0
- package/dist/pipeline-core/kit/fixtures.js +248 -0
- package/dist/pipeline-core/kit/fixtures.js.map +1 -0
- package/dist/pipeline-core/kit/index.js +13 -0
- package/dist/pipeline-core/kit/index.js.map +1 -0
- package/dist/pipeline-core/types.js +132 -0
- package/dist/pipeline-core/types.js.map +1 -0
- package/dist/pipeline-core/validate.js +1192 -0
- package/dist/pipeline-core/validate.js.map +1 -0
- package/dist/playbook/catalog-loader.js +14 -1
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +14 -38
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/playbook/manifest.js +1 -1
- package/dist/revisium/playbooks.service.js +95 -17
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/roles.service.js +1 -1
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +16 -0
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/run/append-event.js +24 -1
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js +17 -0
- package/dist/run/block-run.js.map +1 -0
- package/dist/run/create-run.js +28 -5
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/inspect-run.js +9 -0
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/run-outputs.js +88 -0
- package/dist/run/run-outputs.js.map +1 -0
- package/dist/run/terminal-run-status.js +89 -7
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +4 -0
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/integrator.js +25 -9
- package/dist/runners/integrator.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +247 -28
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +111 -0
- package/dist/worker/artifact-store.js.map +1 -0
- package/dist/worker/build-context.js +17 -0
- package/dist/worker/build-context.js.map +1 -1
- package/dist/worker/claude-code-runner.js +44 -5
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/process-executor.js +23 -2
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/runner-dispatch.js +1 -0
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +11 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +7 -45
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +3 -1
- package/dist/cli/commands/work.js +0 -149
- package/dist/cli/commands/work.js.map +0 -1
- package/dist/worker/git-worktree-manager.js +0 -84
- package/dist/worker/git-worktree-manager.js.map +0 -1
- package/dist/worker/loop.js +0 -122
- package/dist/worker/loop.js.map +0 -1
- package/dist/worker/script-runner.js +0 -28
- package/dist/worker/script-runner.js.map +0 -1
- package/dist/worker/worker-id.js +0 -18
- package/dist/worker/worker-id.js.map +0 -1
package/dist/worker/loop.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { claimNextStep, startAttempt, writeResult, createSteps, failStep, recoverInFlight, compactStamp, } from '../control-plane/steps.js';
|
|
3
|
-
import { buildContext } from './build-context.js';
|
|
4
|
-
async function processClaimedStep(deps, workerId, step) {
|
|
5
|
-
const { da, loadRole, loadModelProfile, runAgent } = deps;
|
|
6
|
-
const role = await loadRole(step.role);
|
|
7
|
-
const profile = await loadModelProfile(role.modelLevel);
|
|
8
|
-
const context = await buildContext(da, step, role);
|
|
9
|
-
const { attemptId } = await startAttempt(da, step, { workerId, modelProfile: profile.modelId });
|
|
10
|
-
try {
|
|
11
|
-
const result = await runAgent({ role, profile, context, attemptId, step });
|
|
12
|
-
return { attemptId, result };
|
|
13
|
-
}
|
|
14
|
-
catch (err) {
|
|
15
|
-
await failStep(da, step, attemptId, {
|
|
16
|
-
lesson: err instanceof Error ? err.message : String(err),
|
|
17
|
-
error: err instanceof Error ? (err.stack ?? err.message) : String(err),
|
|
18
|
-
});
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async function handleResult(da, step, attemptId, result) {
|
|
23
|
-
if (result.needsHuman) {
|
|
24
|
-
await parkForHuman(da, step, attemptId, result);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const nextSteps = result.nextSteps.map((ns) => ({ ...ns, runId: step.runId }));
|
|
28
|
-
// createSteps runs BEFORE writeResult makes the parent terminal. Child IDs are a bounded,
|
|
29
|
-
// deterministic hash of (parent id + index), so a retry regenerates the same IDs and
|
|
30
|
-
// createSteps' idempotency check skips existing rows.
|
|
31
|
-
//
|
|
32
|
-
// createSteps failures (e.g. Revisium rejecting an invalid next step) are pre-terminal and
|
|
33
|
-
// SAFE to fail gracefully: nothing has been finalized yet, so failStep lets the step back off
|
|
34
|
-
// / go dead instead of crashing the worker. writeResult is DIFFERENT — it mutates several rows
|
|
35
|
-
// (attempt close, event, cost, then the step), so a partial failure must NOT be routed through
|
|
36
|
-
// failStep (that would mark a half-written step failed). We let writeResult errors propagate:
|
|
37
|
-
// the step stays 'running' → recoverInFlight resets it on the next start → idempotent retry.
|
|
38
|
-
try {
|
|
39
|
-
await createSteps(da, nextSteps, { parentStepId: step.id });
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
await failStep(da, step, attemptId, {
|
|
43
|
-
lesson: err instanceof Error ? err.message : String(err),
|
|
44
|
-
error: err instanceof Error ? (err.stack ?? err.message) : String(err),
|
|
45
|
-
});
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
await writeResult(da, step, attemptId, result.output, result.costs);
|
|
49
|
-
}
|
|
50
|
-
export function sleep(ms, signal) {
|
|
51
|
-
return new Promise((resolve) => {
|
|
52
|
-
const onAbort = () => { clearTimeout(timer); resolve(); };
|
|
53
|
-
const timer = setTimeout(() => {
|
|
54
|
-
signal?.removeEventListener('abort', onAbort);
|
|
55
|
-
resolve();
|
|
56
|
-
}, ms);
|
|
57
|
-
signal?.addEventListener('abort', onAbort, { once: true });
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
async function parkForHuman(da, step, attemptId, result) {
|
|
61
|
-
const now = new Date();
|
|
62
|
-
const nowIso = now.toISOString();
|
|
63
|
-
const st = compactStamp(now);
|
|
64
|
-
const sfx = randomUUID().replaceAll('-', '').slice(0, 8);
|
|
65
|
-
// Close the attempt so it is no longer 'running' while the step waits for a human.
|
|
66
|
-
await da.patchRow('attempts', attemptId, [
|
|
67
|
-
{ op: 'replace', path: 'status', value: 'paused' },
|
|
68
|
-
{ op: 'replace', path: 'finished_at', value: nowIso },
|
|
69
|
-
]);
|
|
70
|
-
// Minimal inbox parking: mark step awaiting_approval, clear lease, append event.
|
|
71
|
-
// Full pushInbox (inbox row creation + resolution workflow) is deferred.
|
|
72
|
-
await da.patchRow('steps', step.id, [
|
|
73
|
-
{ op: 'replace', path: 'status', value: 'awaiting_approval' },
|
|
74
|
-
{ op: 'replace', path: 'lease_owner', value: '' },
|
|
75
|
-
{ op: 'replace', path: 'lease_expires_at', value: '' },
|
|
76
|
-
{ op: 'replace', path: 'updated_at', value: nowIso },
|
|
77
|
-
]);
|
|
78
|
-
await da.createRow('events', `event_${st}_step-needs-human_${sfx}`, {
|
|
79
|
-
id: `event_${st}_step-needs-human_${sfx}`,
|
|
80
|
-
run_id: step.runId,
|
|
81
|
-
task_id: step.taskId,
|
|
82
|
-
step_id: step.id,
|
|
83
|
-
type: 'step_needs_human',
|
|
84
|
-
payload: { attempt_id: attemptId, lesson: result.lesson },
|
|
85
|
-
actor: 'orchestrator',
|
|
86
|
-
created_at: nowIso,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
async function runNextStep(deps, workerId, roles) {
|
|
90
|
-
const { da } = deps;
|
|
91
|
-
const step = await claimNextStep(da, workerId, roles);
|
|
92
|
-
if (!step)
|
|
93
|
-
return 'idle';
|
|
94
|
-
const processed = await processClaimedStep(deps, workerId, step);
|
|
95
|
-
if (!processed)
|
|
96
|
-
return 'failed';
|
|
97
|
-
await handleResult(da, step, processed.attemptId, processed.result);
|
|
98
|
-
return 'completed';
|
|
99
|
-
}
|
|
100
|
-
export async function runWorker(deps, opts) {
|
|
101
|
-
const { da } = deps;
|
|
102
|
-
const { workerId, roles, once, idleSleepMs = 5000, maxCycles, signal } = opts;
|
|
103
|
-
if (!Number.isFinite(idleSleepMs) || idleSleepMs < 0) {
|
|
104
|
-
throw new Error(`idleSleepMs must be a non-negative finite number, got: ${String(idleSleepMs)}`);
|
|
105
|
-
}
|
|
106
|
-
await recoverInFlight(da, workerId);
|
|
107
|
-
let cycles = 0;
|
|
108
|
-
while (true) {
|
|
109
|
-
if (signal?.aborted)
|
|
110
|
-
break;
|
|
111
|
-
if (maxCycles !== undefined && cycles >= maxCycles)
|
|
112
|
-
break;
|
|
113
|
-
const outcome = await runNextStep(deps, workerId, roles);
|
|
114
|
-
if (outcome !== 'idle')
|
|
115
|
-
cycles++;
|
|
116
|
-
if (once)
|
|
117
|
-
break;
|
|
118
|
-
if (outcome === 'idle')
|
|
119
|
-
await sleep(idleSleepMs, signal);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=loop.js.map
|
package/dist/worker/loop.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/worker/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
2
|
-
/** Wraps registered script modules as a RunAgent with a configurable JS-level timeout. */
|
|
3
|
-
export function createScriptRunner(deps) {
|
|
4
|
-
const timeoutMs = deps.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
5
|
-
return async ({ role, step }) => {
|
|
6
|
-
const module = deps.scripts[role.name];
|
|
7
|
-
if (!module) {
|
|
8
|
-
throw new Error(`SCRIPT_NOT_FOUND: no script registered for role "${role.name}"`);
|
|
9
|
-
}
|
|
10
|
-
const parsedInput = typeof step.input === 'string'
|
|
11
|
-
? JSON.parse(step.input || '{}')
|
|
12
|
-
: (step.input ?? {});
|
|
13
|
-
let timer;
|
|
14
|
-
const timeout = new Promise((_, reject) => {
|
|
15
|
-
timer = setTimeout(() => reject(new Error(`script runner exceeded ${timeoutMs}ms for role "${role.name}"`)), timeoutMs);
|
|
16
|
-
});
|
|
17
|
-
try {
|
|
18
|
-
// For sync script bodies (execFileSync in defaultExecGh) the OS-level exec timeout is the real guard; this timer covers async bodies.
|
|
19
|
-
return await Promise.race([module.run(parsedInput, step), timeout]);
|
|
20
|
-
}
|
|
21
|
-
finally {
|
|
22
|
-
// Clear the timer on every exit (success OR failure); an uncleared setTimeout keeps the
|
|
23
|
-
// event loop alive ~120s and hangs `--once` / tests.
|
|
24
|
-
clearTimeout(timer);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=script-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"script-runner.js","sourceRoot":"","sources":["../../src/worker/script-runner.ts"],"names":[],"mappings":"AAYA,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAEvD,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;YAChC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAEzB,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,SAAS,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EACxF,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,sIAAsI;YACtI,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;gBAAS,CAAC;YACT,wFAAwF;YACxF,qDAAqD;YACrD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/worker/worker-id.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { getConfig } from '../config.js';
|
|
5
|
-
export function resolveWorkerId(override, testDataDir) {
|
|
6
|
-
if (override)
|
|
7
|
-
return override;
|
|
8
|
-
const dataDir = testDataDir ?? getConfig().dataDir;
|
|
9
|
-
const idFile = join(dataDir, 'worker-id');
|
|
10
|
-
if (existsSync(idFile)) {
|
|
11
|
-
return readFileSync(idFile, 'utf8').trim();
|
|
12
|
-
}
|
|
13
|
-
const id = `worker-${randomUUID().replaceAll('-', '').slice(0, 12)}`;
|
|
14
|
-
mkdirSync(dataDir, { recursive: true });
|
|
15
|
-
writeFileSync(idFile, id, 'utf8');
|
|
16
|
-
return id;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=worker-id.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-id.js","sourceRoot":"","sources":["../../src/worker/worker-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,eAAe,CAAC,QAAiB,EAAE,WAAoB;IACrE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,OAAO,GAAG,WAAW,IAAI,SAAS,EAAE,CAAC,OAAO,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE1C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,EAAE,GAAG,UAAU,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACrE,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|