zelari-code 2.13.0 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/cli/headless/policyGate.js +101 -0
  2. package/dist/cli/headless/policyGate.js.map +1 -0
  3. package/dist/cli/headless.js.map +1 -1
  4. package/dist/cli/kraken/completionProof.js +89 -41
  5. package/dist/cli/kraken/completionProof.js.map +1 -1
  6. package/dist/cli/kraken/completionProofAttestation.js +157 -0
  7. package/dist/cli/kraken/completionProofAttestation.js.map +1 -0
  8. package/dist/cli/kraken/completionProofPersist.js +219 -0
  9. package/dist/cli/kraken/completionProofPersist.js.map +1 -0
  10. package/dist/cli/kraken/completionProofProbe.js +135 -0
  11. package/dist/cli/kraken/completionProofProbe.js.map +1 -0
  12. package/dist/cli/kraken/contractCompiler.js +142 -0
  13. package/dist/cli/kraken/contractCompiler.js.map +1 -0
  14. package/dist/cli/kraken/delegationPolicy.js +40 -3
  15. package/dist/cli/kraken/delegationPolicy.js.map +1 -1
  16. package/dist/cli/kraken/executor.js +462 -9
  17. package/dist/cli/kraken/executor.js.map +1 -1
  18. package/dist/cli/kraken/fileOwnership.js +190 -0
  19. package/dist/cli/kraken/fileOwnership.js.map +1 -0
  20. package/dist/cli/kraken/modelReputation.js +208 -0
  21. package/dist/cli/kraken/modelReputation.js.map +1 -0
  22. package/dist/cli/kraken/nativeVerification.js +53 -11
  23. package/dist/cli/kraken/nativeVerification.js.map +1 -1
  24. package/dist/cli/kraken/planner.js +2 -0
  25. package/dist/cli/kraken/planner.js.map +1 -1
  26. package/dist/cli/kraken/reputationStore.js +139 -0
  27. package/dist/cli/kraken/reputationStore.js.map +1 -0
  28. package/dist/cli/kraken/semanticOwnership.js +184 -0
  29. package/dist/cli/kraken/semanticOwnership.js.map +1 -0
  30. package/dist/cli/kraken/spawnRoi.js +209 -0
  31. package/dist/cli/kraken/spawnRoi.js.map +1 -0
  32. package/dist/cli/kraken/transactional.js +104 -0
  33. package/dist/cli/kraken/transactional.js.map +1 -0
  34. package/dist/cli/kraken/verificationAdapters/dotnet.js +49 -0
  35. package/dist/cli/kraken/verificationAdapters/dotnet.js.map +1 -0
  36. package/dist/cli/kraken/verificationAdapters/go.js +36 -0
  37. package/dist/cli/kraken/verificationAdapters/go.js.map +1 -0
  38. package/dist/cli/kraken/verificationAdapters/index.js +47 -0
  39. package/dist/cli/kraken/verificationAdapters/index.js.map +1 -0
  40. package/dist/cli/kraken/verificationAdapters/java.js +102 -0
  41. package/dist/cli/kraken/verificationAdapters/java.js.map +1 -0
  42. package/dist/cli/kraken/verificationAdapters/node.js +90 -0
  43. package/dist/cli/kraken/verificationAdapters/node.js.map +1 -0
  44. package/dist/cli/kraken/verificationAdapters/python.js +86 -0
  45. package/dist/cli/kraken/verificationAdapters/python.js.map +1 -0
  46. package/dist/cli/kraken/verificationAdapters/rust.js +39 -0
  47. package/dist/cli/kraken/verificationAdapters/rust.js.map +1 -0
  48. package/dist/cli/kraken/verificationAdapters/types.js +2 -0
  49. package/dist/cli/kraken/verificationAdapters/types.js.map +1 -0
  50. package/dist/cli/kraken/verificationBridge.js +40 -3
  51. package/dist/cli/kraken/verificationBridge.js.map +1 -1
  52. package/dist/cli/kraken/verifierLifecycle.js +51 -36
  53. package/dist/cli/kraken/verifierLifecycle.js.map +1 -1
  54. package/dist/cli/kraken/verifierRouting.js +264 -0
  55. package/dist/cli/kraken/verifierRouting.js.map +1 -0
  56. package/dist/cli/kraken/worktreeScheduling.js +201 -0
  57. package/dist/cli/kraken/worktreeScheduling.js.map +1 -0
  58. package/dist/cli/main.bundled.js +3880 -889
  59. package/dist/cli/main.bundled.js.map +4 -4
  60. package/dist/cli/orchestration/facts.js +127 -0
  61. package/dist/cli/orchestration/facts.js.map +1 -0
  62. package/dist/cli/orchestration/policy.js +128 -75
  63. package/dist/cli/orchestration/policy.js.map +1 -1
  64. package/dist/cli/orchestration/signals.js +96 -0
  65. package/dist/cli/orchestration/signals.js.map +1 -0
  66. package/dist/cli/runHeadless.js +92 -19
  67. package/dist/cli/runHeadless.js.map +1 -1
  68. package/dist/cli/safety/policyEngine.js +159 -20
  69. package/dist/cli/safety/policyEngine.js.map +1 -1
  70. package/dist/cli/safety/policyLoadMode.js +59 -0
  71. package/dist/cli/safety/policyLoadMode.js.map +1 -0
  72. package/dist/cli/safety/resourceClaims.js +373 -0
  73. package/dist/cli/safety/resourceClaims.js.map +1 -0
  74. package/dist/cli/safety/sandboxPath.js +160 -17
  75. package/dist/cli/safety/sandboxPath.js.map +1 -1
  76. package/dist/cli/toolRegistry.js +98 -8
  77. package/dist/cli/toolRegistry.js.map +1 -1
  78. package/dist/cli/tools/execProcess.js +121 -0
  79. package/dist/cli/tools/execProcess.js.map +1 -0
  80. package/dist/cli/tools/krakenRadio.js +9 -0
  81. package/dist/cli/tools/krakenRadio.js.map +1 -1
  82. package/dist/cli/tools/taskTool.js +8 -3
  83. package/dist/cli/tools/taskTool.js.map +1 -1
  84. package/package.json +2 -2
@@ -11,16 +11,22 @@
11
11
  *
12
12
  * Shape:
13
13
  * {
14
- * version?: 1,
14
+ * version?: 1 | 2,
15
15
  * agents: {
16
- * lead? : { shell?: Rule[], edit?: Rule[] },
17
- * explore? : { shell?: Rule[], edit?: Rule[] },
18
- * general? : { shell?: Rule[], edit?: Rule[] },
19
- * verify? : { shell?: Rule[], edit?: Rule[] }
16
+ * lead? : { shell?: Rule[], edit?: Rule[], claims?: ClaimRule[] },
17
+ * explore? : { shell?: Rule[], edit?: Rule[], claims?: ClaimRule[] },
18
+ * general? : { shell?: Rule[], edit?: Rule[], claims?: ClaimRule[] },
19
+ * verify? : { shell?: Rule[], edit?: Rule[], claims?: ClaimRule[] }
20
20
  * }
21
21
  * }
22
22
  * Rule = { match: string, effect: 'allow' | 'ask' | 'deny', reason?: string }
23
23
  *
24
+ * P0.C1 adds the optional per-agent `claims` section (v2 resource-claim
25
+ * rules — one rule per touched path/process/network/mcp/ssh resource, each
26
+ * matched independently then intersected deny > ask > allow). Version 2 is
27
+ * accepted for `claims`; `version: 1` files keep working EXACTLY unchanged
28
+ * (they simply never carry a claims key). See resourceClaims.ts.
29
+ *
24
30
  * `match` is a GLOB-style prefix pattern: `git push*` matches any command
25
31
  * starting with "git push"; `src/**` matches any path under src/; `*` alone
26
32
  * matches everything. Within one LAYER's ordered rule list the FIRST match
@@ -32,8 +38,12 @@
32
38
  * the active mode is exposed as `PolicySet.precedence`.
33
39
  *
34
40
  * Fail-closed conventions (mirrors toolPermissions.ts): a missing file is
35
- * silently empty; a broken file NEVER throws the parse error is collected
36
- * in `warnings` and the offending file/section is ignored. Opt out entirely
41
+ * silently empty; a broken file NEVER throws in the default `permissive`
42
+ * mode — the parse error is collected in `warnings` and the offending
43
+ * file/section is ignored. P0.B adds `strict` mode: an EXISTING file that
44
+ * fails JSON/schema validation throws PolicyLoadError so headless/CI/mission
45
+ * hosts can block the run (exit 2, reason `policy-load-failed`); resolution
46
+ * of the active mode lives in policyLoadMode.ts. Opt out entirely
37
47
  * with ZELARI_POLICY=0 (always the empty set).
38
48
  *
39
49
  * Hand-rolled validators on purpose: no zod, no new deps.
@@ -43,6 +53,41 @@
43
53
  import { readFileSync } from 'node:fs';
44
54
  import { homedir } from 'node:os';
45
55
  import path from 'node:path';
56
+ /**
57
+ * Thrown ONLY in strict mode when a policy file exists but fails JSON or
58
+ * schema parsing. Carries machine-readable fields so hosts (headless runner,
59
+ * CI gates) can classify the failure without string matching:
60
+ * `code` ('policy_invalid'), absolute-ish `file` path as passed to the
61
+ * loader, optional 1-based `line` when derivable from the parser position,
62
+ * and the human `message`.
63
+ */
64
+ export class PolicyLoadError extends Error {
65
+ /** Machine-readable discriminator: always 'policy_invalid'. */
66
+ code;
67
+ /** Path of the offending policy file (absolute when the caller passed one). */
68
+ file;
69
+ /** 1-based source line when derivable from the JSON error position. */
70
+ line;
71
+ constructor(file, detail, opts = {}) {
72
+ super(`${file}: ${detail}`);
73
+ this.name = 'PolicyLoadError';
74
+ this.code = 'policy_invalid';
75
+ this.file = file;
76
+ if (opts.line !== undefined)
77
+ this.line = opts.line;
78
+ }
79
+ }
80
+ /** Claim kinds accepted by the v2 schema (`ui`/`agent` parse today; they
81
+ * are not emitted by any tool yet — evaluation deferred to v1.1). */
82
+ export const CLAIM_KINDS = [
83
+ 'path',
84
+ 'process',
85
+ 'network',
86
+ 'mcp',
87
+ 'ssh',
88
+ 'ui',
89
+ 'agent',
90
+ ];
46
91
  /** The authoritative agent keys ('lead' = the main registry; the three
47
92
  * sub-agent kinds mirror taskAgentToProfile in toolRegistry.ts). */
48
93
  export const POLICY_AGENTS = ['lead', 'explore', 'general', 'verify'];
@@ -137,7 +182,7 @@ export function mergeRuleEffect(base, rule) {
137
182
  * whether the model passed `src/x.ts` or `E:\repo\src\x.ts`). Root-relative
138
183
  * first — it is what users write in policy.json.
139
184
  */
140
- function pathCandidates(value, root) {
185
+ export function pathCandidates(value, root) {
141
186
  const norm = normalizeForMatch(value);
142
187
  if (!root)
143
188
  return [norm];
@@ -229,6 +274,55 @@ function parseRuleList(raw, origin, warnings) {
229
274
  });
230
275
  return out;
231
276
  }
277
+ /**
278
+ * v2 claim-rule list (same rule-level discipline as parseRuleList: a
279
+ * malformed SINGLE rule is skipped with a warning in BOTH load modes and
280
+ * never drops the whole file/section).
281
+ */
282
+ function parseClaimRuleList(raw, origin, warnings) {
283
+ if (raw === undefined)
284
+ return [];
285
+ if (!Array.isArray(raw)) {
286
+ warnings.push(`${origin}: expected an array of claim rules, got ${typeof raw} — section ignored.`);
287
+ return [];
288
+ }
289
+ const out = [];
290
+ raw.forEach((item, i) => {
291
+ const where = `${origin}[${i}]`;
292
+ if (!isPlainObject(item)) {
293
+ warnings.push(`${where}: claim rule is not an object — skipped.`);
294
+ return;
295
+ }
296
+ const kind = item['kind'];
297
+ const pattern = item['pattern'];
298
+ const effect = item['effect'];
299
+ const reason = item['reason'];
300
+ const operation = item['operation'];
301
+ if (typeof kind !== 'string' || !CLAIM_KINDS.includes(kind)) {
302
+ warnings.push(`${where}: "kind" must be one of ${CLAIM_KINDS.join(' | ')} — skipped.`);
303
+ return;
304
+ }
305
+ if (typeof pattern !== 'string' || pattern.trim() === '') {
306
+ warnings.push(`${where} (${kind}): missing or empty "pattern" — skipped.`);
307
+ return;
308
+ }
309
+ if (effect !== 'allow' && effect !== 'ask' && effect !== 'deny') {
310
+ warnings.push(`${where} (${kind}): "effect" must be allow|ask|deny — skipped.`);
311
+ return;
312
+ }
313
+ let op;
314
+ if (operation !== undefined) {
315
+ if (kind !== 'path' || (operation !== 'read' && operation !== 'write')) {
316
+ warnings.push(`${where} (${kind}): "operation" is only valid as read|write on kind "path" — skipped.`);
317
+ return;
318
+ }
319
+ op = operation;
320
+ }
321
+ const base = op === undefined ? { kind, pattern, effect } : { kind, pattern, effect, operation: op };
322
+ out.push(typeof reason === 'string' && reason.trim() !== '' ? { ...base, reason } : base);
323
+ });
324
+ return out;
325
+ }
232
326
  /** Returns null when the WHOLE file must be ignored (bad shape / version). */
233
327
  function parsePolicyFile(raw, origin, warnings) {
234
328
  if (!isPlainObject(raw)) {
@@ -236,8 +330,8 @@ function parsePolicyFile(raw, origin, warnings) {
236
330
  return null;
237
331
  }
238
332
  const version = raw['version'];
239
- if (version !== undefined && version !== 1) {
240
- warnings.push(`${origin}: unsupported "version" ${JSON.stringify(version)} (expected 1) — file ignored.`);
333
+ if (version !== undefined && version !== 1 && version !== 2) {
334
+ warnings.push(`${origin}: unsupported "version" ${JSON.stringify(version)} (expected 1 or 2) — file ignored.`);
241
335
  return null;
242
336
  }
243
337
  const agentsRaw = raw['agents'];
@@ -262,18 +356,39 @@ function parsePolicyFile(raw, origin, warnings) {
262
356
  }
263
357
  const shell = parseRuleList(val['shell'], `${origin} agents.${key}.shell`, warnings);
264
358
  const edit = parseRuleList(val['edit'], `${origin} agents.${key}.edit`, warnings);
265
- out.set(agent, { shell, edit });
359
+ const claims = parseClaimRuleList(val['claims'], `${origin} agents.${key}.claims`, warnings);
360
+ out.set(agent, { shell, edit, ...(claims.length > 0 ? { claims } : {}) });
266
361
  }
267
362
  return out;
268
363
  }
269
- function readPolicyFile(file, warnings) {
364
+ /**
365
+ * Best-effort 1-based line for a JSON syntax error: V8 puts the offending
366
+ * offset in the message ("at position N") on many Node versions; older or
367
+ * alternative engines may not — `line` then stays undefined (cheap only).
368
+ */
369
+ function jsonErrorLine(text, message) {
370
+ const m = /(?:at )?position (\d+)/i.exec(message);
371
+ if (!m)
372
+ return undefined;
373
+ const pos = Number(m[1]);
374
+ if (!Number.isInteger(pos) || pos < 0)
375
+ return undefined;
376
+ let line = 1;
377
+ for (let i = 0; i < pos && i < text.length; i++) {
378
+ if (text.charCodeAt(i) === 10)
379
+ line++; // '\n'
380
+ }
381
+ return line;
382
+ }
383
+ function readPolicyFile(file, warnings, mode) {
270
384
  let text;
271
385
  try {
272
386
  text = readFileSync(file, 'utf8');
273
387
  }
274
388
  catch {
275
389
  // Missing file is the common case (most repos/users have none) — not a
276
- // warning, just no rules from this source.
390
+ // warning, just no rules from this source (in strict mode too: ABSENCE
391
+ // is fine, a PRESENT-but-broken file is what strict rejects).
277
392
  return new Map();
278
393
  }
279
394
  let parsed;
@@ -281,27 +396,51 @@ function readPolicyFile(file, warnings) {
281
396
  parsed = JSON.parse(text);
282
397
  }
283
398
  catch (err) {
284
- warnings.push(`${file}: invalid JSON (${err instanceof Error ? err.message : String(err)}) — file ignored.`);
399
+ const detail = err instanceof Error ? err.message : String(err);
400
+ warnings.push(`${file}: invalid JSON (${detail}) — file ignored.`);
401
+ if (mode === 'strict') {
402
+ const line = jsonErrorLine(text, detail);
403
+ throw new PolicyLoadError(file, `invalid JSON (${detail})`, {
404
+ ...(line !== undefined ? { line } : {}),
405
+ });
406
+ }
285
407
  return new Map();
286
408
  }
287
- return parsePolicyFile(parsed, file, warnings) ?? new Map();
409
+ const before = warnings.length;
410
+ const parsedRules = parsePolicyFile(parsed, file, warnings);
411
+ if (parsedRules === null) {
412
+ // Whole-file schema reject (not an object / unsupported version / missing
413
+ // "agents" / "agents" not an object) — the reasons were pushed above.
414
+ const why = warnings.slice(before).join('; ') || 'file rejected by schema validation';
415
+ if (mode === 'strict')
416
+ throw new PolicyLoadError(file, why);
417
+ return new Map();
418
+ }
419
+ return parsedRules;
288
420
  }
289
421
  /**
290
422
  * Load the project (`<root>/.zelari/policy.json`) and global
291
423
  * (`~/.zelari/policy.json`) rule sets into DISTINCT layers (P0.A): the two
292
424
  * sources are NEVER concatenated at load time — evaluation intersects them
293
425
  * restrict-only (matchAgentPolicyRuleLayered in policyLayers.ts) unless
294
- * ZELARI_POLICY_PRECEDENCE=legacy restores the v1 concat view. NEVER
295
- * throws: broken files yield warnings + whatever parsed cleanly. Pass
296
- * `homeDir` to override the global-file location (tests).
426
+ * ZELARI_POLICY_PRECEDENCE=legacy restores the v1 concat view.
427
+ *
428
+ * Loading discipline (P0.B): in `permissive` mode (default, v1 behavior)
429
+ * this NEVER throws — broken files yield warnings + whatever parsed cleanly.
430
+ * In `strict` mode a file that EXISTS but fails JSON/schema validation throws
431
+ * PolicyLoadError (`code: 'policy_invalid'`, `file`, optional `line`); hosts
432
+ * decide what to do — the headless runner turns it into exit 2 / reason
433
+ * `policy-load-failed` (headless/policyGate.ts). Missing files stay empty in
434
+ * both modes. Pass `homeDir` to override the global-file location (tests).
297
435
  */
298
436
  export function loadPolicySet(root, opts = {}) {
299
437
  if (isPolicyEngineDisabled())
300
438
  return emptyPolicySet();
439
+ const mode = opts.mode ?? 'permissive';
301
440
  const warnings = [];
302
441
  const precedence = policyPrecedenceFromEnv();
303
- const project = readPolicyFile(path.join(root, '.zelari', 'policy.json'), warnings);
304
- const global = readPolicyFile(path.join(opts.homeDir ?? homedir(), '.zelari', 'policy.json'), warnings);
442
+ const project = readPolicyFile(path.join(root, '.zelari', 'policy.json'), warnings, mode);
443
+ const global = readPolicyFile(path.join(opts.homeDir ?? homedir(), '.zelari', 'policy.json'), warnings, mode);
305
444
  const agents = new Map();
306
445
  for (const [agent, p] of project) {
307
446
  agents.set(agent, { project: p, global: EMPTY_POLICY_RULE_SET });
@@ -1 +1 @@
1
- {"version":3,"file":"policyEngine.js","sourceRoot":"","sources":["../../../src/cli/safety/policyEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policyEngine.js","sourceRoot":"","sources":["../../../src/cli/safety/policyEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /** Env override accepted by resolvePolicyLoadMode. */
2
+ export const POLICY_LOAD_MODE_ENV = 'ZELARI_POLICY_LOAD_MODE';
3
+ /** Machine-readable teardown reason for a blocked run (headless NDJSON + spine). */
4
+ export const POLICY_LOAD_BLOCK_REASON = 'policy-load-failed';
5
+ /**
6
+ * Exit code for a strict load failure. Deliberately 2 — the existing
7
+ * headless map already labels 2 as "runtime error" (provider failure,
8
+ * council exception): an unreadable policy is exactly that class of
9
+ * harness-level failure. Exit 4 stays reserved for the strict COMPLETION
10
+ * gate (verificationBridge.STRICT_DONE_EXIT_CODE) so the two never collide.
11
+ */
12
+ export const POLICY_LOAD_EXIT_CODE = 2;
13
+ function isTruthyFlag(v) {
14
+ const n = v?.trim().toLowerCase();
15
+ return n === '1' || n === 'true' || n === 'yes' || n === 'on';
16
+ }
17
+ /**
18
+ * Pure mode resolution. Any value of ZELARI_POLICY_LOAD_MODE other than
19
+ * exactly `strict` / `permissive` (case/space-insensitive) is IGNORED and
20
+ * falls through to the defaults — no typo silently flips strictness.
21
+ */
22
+ export function resolvePolicyLoadMode(input) {
23
+ const v = input.override?.trim().toLowerCase();
24
+ if (v === 'strict')
25
+ return 'strict';
26
+ if (v === 'permissive')
27
+ return 'permissive';
28
+ // Headless runners and missions get fail-closed file loading by default;
29
+ // interactive TUI only tightens when the ambient environment says CI.
30
+ if (input.surface === 'headless' || input.surface === 'mission')
31
+ return 'strict';
32
+ if (isTruthyFlag(input.ci))
33
+ return 'strict';
34
+ return 'permissive';
35
+ }
36
+ // ── Active-surface seam ──────────────────────────────────────────────────
37
+ // Process-lifetime configuration (hosts register once before dispatch);
38
+ // defaults to 'tui' because that is what imports toolRegistry directly.
39
+ let activeSurface = 'tui';
40
+ /** Register the host BEFORE building registries (runHeadless pre-flight). */
41
+ export function setActivePolicyLoadSurface(surface) {
42
+ activeSurface = surface;
43
+ }
44
+ /** Current host registration (read-mostly; exposed for tests/diagnostics). */
45
+ export function activePolicyLoadSurface() {
46
+ return activeSurface;
47
+ }
48
+ /**
49
+ * Resolve the ACTIVE policy-load mode from the registered surface + env.
50
+ * `env` is injectable so callers/tests avoid touching process.env.
51
+ */
52
+ export function activePolicyLoadMode(env = process.env) {
53
+ return resolvePolicyLoadMode({
54
+ surface: activeSurface,
55
+ override: env[POLICY_LOAD_MODE_ENV],
56
+ ci: typeof env.CI === 'string' ? env.CI : undefined,
57
+ });
58
+ }
59
+ //# sourceMappingURL=policyLoadMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policyLoadMode.js","sourceRoot":"","sources":["../../../src/cli/safety/policyLoadMode.ts"],"names":[],"mappings":"AAqBA,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAE9D,oFAAoF;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAWvC,SAAS,YAAY,CAAC,CAAqB;IACzC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACpC,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC5C,yEAAyE;IACzE,sEAAsE;IACtE,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACjF,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,4EAA4E;AAC5E,wEAAwE;AACxE,wEAAwE;AAExE,IAAI,aAAa,GAAsB,KAAK,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,UAAU,0BAA0B,CAAC,OAA0B;IACnE,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,OAAO,qBAAqB,CAAC;QAC3B,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC;QACnC,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC,CAAC;AACL,CAAC"}