@animalabs/agent-framework 0.1.0 → 0.2.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/src/framework.d.ts +5 -0
  2. package/dist/src/framework.d.ts.map +1 -1
  3. package/dist/src/framework.js +91 -8
  4. package/dist/src/framework.js.map +1 -1
  5. package/dist/src/gate/event-gate.d.ts +5 -0
  6. package/dist/src/gate/event-gate.d.ts.map +1 -1
  7. package/dist/src/gate/event-gate.js +104 -6
  8. package/dist/src/gate/event-gate.js.map +1 -1
  9. package/dist/src/gate/types.d.ts +31 -0
  10. package/dist/src/gate/types.d.ts.map +1 -1
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +2 -0
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/mcpl/channel-registry.d.ts +11 -0
  16. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  17. package/dist/src/mcpl/channel-registry.js +40 -1
  18. package/dist/src/mcpl/channel-registry.js.map +1 -1
  19. package/dist/src/mcpl/push-handler.js +1 -1
  20. package/dist/src/mcpl/push-handler.js.map +1 -1
  21. package/dist/src/mcpl/types.d.ts +15 -0
  22. package/dist/src/mcpl/types.d.ts.map +1 -1
  23. package/dist/src/mcpl/types.js.map +1 -1
  24. package/dist/src/modules/workspace/index.d.ts +36 -1
  25. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  26. package/dist/src/modules/workspace/index.js +210 -32
  27. package/dist/src/modules/workspace/index.js.map +1 -1
  28. package/dist/src/modules/workspace/sync.d.ts +7 -2
  29. package/dist/src/modules/workspace/sync.d.ts.map +1 -1
  30. package/dist/src/modules/workspace/sync.js +2 -2
  31. package/dist/src/modules/workspace/sync.js.map +1 -1
  32. package/dist/src/modules/workspace/types.d.ts +44 -3
  33. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  34. package/dist/src/modules/workspace/types.js +8 -1
  35. package/dist/src/modules/workspace/types.js.map +1 -1
  36. package/dist/src/modules/workspace/watcher.d.ts +28 -3
  37. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  38. package/dist/src/modules/workspace/watcher.js +53 -12
  39. package/dist/src/modules/workspace/watcher.js.map +1 -1
  40. package/dist/src/types/trace.d.ts +16 -0
  41. package/dist/src/types/trace.d.ts.map +1 -1
  42. package/dist/src/usage/index.d.ts +3 -0
  43. package/dist/src/usage/index.d.ts.map +1 -0
  44. package/dist/src/usage/index.js +2 -0
  45. package/dist/src/usage/index.js.map +1 -0
  46. package/dist/src/usage/types.d.ts +28 -0
  47. package/dist/src/usage/types.d.ts.map +1 -0
  48. package/dist/src/usage/types.js +2 -0
  49. package/dist/src/usage/types.js.map +1 -0
  50. package/dist/src/usage/usage-tracker.d.ts +33 -0
  51. package/dist/src/usage/usage-tracker.d.ts.map +1 -0
  52. package/dist/src/usage/usage-tracker.js +115 -0
  53. package/dist/src/usage/usage-tracker.js.map +1 -0
  54. package/dist/test/event-gate.test.js +135 -16
  55. package/dist/test/event-gate.test.js.map +1 -1
  56. package/dist/test/mcpl-gate-roundtrip.test.d.ts +2 -0
  57. package/dist/test/mcpl-gate-roundtrip.test.d.ts.map +1 -0
  58. package/dist/test/mcpl-gate-roundtrip.test.js +140 -0
  59. package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -0
  60. package/dist/test/usage-tracker.test.d.ts +2 -0
  61. package/dist/test/usage-tracker.test.d.ts.map +1 -0
  62. package/dist/test/usage-tracker.test.js +129 -0
  63. package/dist/test/usage-tracker.test.js.map +1 -0
  64. package/dist/test/workspace-watcher.test.d.ts +2 -0
  65. package/dist/test/workspace-watcher.test.d.ts.map +1 -0
  66. package/dist/test/workspace-watcher.test.js +90 -0
  67. package/dist/test/workspace-watcher.test.js.map +1 -0
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/package.json +3 -3
  70. package/src/framework.ts +104 -8
  71. package/src/gate/event-gate.ts +106 -6
  72. package/src/gate/types.ts +28 -0
  73. package/src/index.ts +4 -0
  74. package/src/mcpl/channel-registry.ts +45 -1
  75. package/src/mcpl/push-handler.ts +1 -1
  76. package/src/mcpl/types.ts +16 -0
  77. package/src/modules/workspace/index.ts +228 -37
  78. package/src/modules/workspace/sync.ts +11 -4
  79. package/src/modules/workspace/types.ts +59 -3
  80. package/src/modules/workspace/watcher.ts +64 -15
  81. package/src/types/trace.ts +19 -1
  82. package/src/usage/index.ts +2 -0
  83. package/src/usage/types.ts +27 -0
  84. package/src/usage/usage-tracker.ts +141 -0
@@ -0,0 +1,115 @@
1
+ function snapshotUsage(usage) {
2
+ return {
3
+ ...usage,
4
+ estimatedCost: usage.estimatedCost ? { ...usage.estimatedCost } : undefined,
5
+ };
6
+ }
7
+ function accumulateUsage(target, tokens, estimatedCost) {
8
+ target.inputTokens += tokens.inputTokens;
9
+ target.outputTokens += tokens.outputTokens;
10
+ target.cacheCreationTokens += tokens.cacheCreationTokens;
11
+ target.cacheReadTokens += tokens.cacheReadTokens;
12
+ if (estimatedCost) {
13
+ if (!target.estimatedCost) {
14
+ target.estimatedCost = { total: 0, currency: estimatedCost.currency };
15
+ }
16
+ else if (target.estimatedCost.currency !== estimatedCost.currency) {
17
+ // Mixed currencies — drop cost tracking rather than produce garbage
18
+ target.estimatedCost = undefined;
19
+ return;
20
+ }
21
+ target.estimatedCost.total += estimatedCost.total;
22
+ }
23
+ }
24
+ function parseUsage(raw) {
25
+ if (!raw || typeof raw !== 'object')
26
+ return null;
27
+ const o = raw;
28
+ if (typeof o.inputTokens !== 'number' || typeof o.outputTokens !== 'number')
29
+ return null;
30
+ return {
31
+ inputTokens: o.inputTokens,
32
+ outputTokens: o.outputTokens,
33
+ cacheCreationTokens: typeof o.cacheCreationTokens === 'number' ? o.cacheCreationTokens : 0,
34
+ cacheReadTokens: typeof o.cacheReadTokens === 'number' ? o.cacheReadTokens : 0,
35
+ estimatedCost: o.estimatedCost && typeof o.estimatedCost === 'object'
36
+ ? { total: o.estimatedCost.total, currency: o.estimatedCost.currency }
37
+ : undefined,
38
+ };
39
+ }
40
+ export class UsageTracker {
41
+ totals = { inputTokens: 0, outputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0 };
42
+ byAgent = new Map();
43
+ inferenceCount = 0;
44
+ emitTrace;
45
+ constructor(opts) {
46
+ this.emitTrace = opts.emitTrace;
47
+ if (opts.restored) {
48
+ this.restoreFrom(opts.restored);
49
+ }
50
+ }
51
+ restoreFrom(state) {
52
+ const totals = parseUsage(state.totals);
53
+ if (!totals)
54
+ return;
55
+ this.totals = totals;
56
+ this.inferenceCount = typeof state.inferenceCount === 'number' ? state.inferenceCount : 0;
57
+ if (Array.isArray(state.byAgent)) {
58
+ for (const entry of state.byAgent) {
59
+ const usage = parseUsage(entry.usage);
60
+ if (usage && typeof entry.agentName === 'string') {
61
+ this.byAgent.set(entry.agentName, {
62
+ usage,
63
+ inferenceCount: typeof entry.inferenceCount === 'number' ? entry.inferenceCount : 0,
64
+ });
65
+ }
66
+ }
67
+ }
68
+ }
69
+ toJSON() {
70
+ return {
71
+ totals: snapshotUsage(this.totals),
72
+ byAgent: [...this.byAgent.entries()].map(([name, data]) => ({
73
+ agentName: name,
74
+ usage: snapshotUsage(data.usage),
75
+ inferenceCount: data.inferenceCount,
76
+ })),
77
+ inferenceCount: this.inferenceCount,
78
+ };
79
+ }
80
+ onInferenceCompleted(agentName, usage, estimatedCost) {
81
+ const tokens = {
82
+ inputTokens: usage.inputTokens,
83
+ outputTokens: usage.outputTokens,
84
+ cacheCreationTokens: usage.cacheCreationTokens ?? 0,
85
+ cacheReadTokens: usage.cacheReadTokens ?? 0,
86
+ };
87
+ accumulateUsage(this.totals, tokens, estimatedCost);
88
+ this.inferenceCount++;
89
+ let agent = this.byAgent.get(agentName);
90
+ if (!agent) {
91
+ agent = { usage: { inputTokens: 0, outputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0 }, inferenceCount: 0 };
92
+ this.byAgent.set(agentName, agent);
93
+ }
94
+ accumulateUsage(agent.usage, tokens, estimatedCost);
95
+ agent.inferenceCount++;
96
+ this.emitTrace({
97
+ type: 'usage:updated',
98
+ totals: snapshotUsage(this.totals),
99
+ agentName,
100
+ inferenceCount: this.inferenceCount,
101
+ });
102
+ }
103
+ getSnapshot() {
104
+ return {
105
+ totals: snapshotUsage(this.totals),
106
+ byAgent: [...this.byAgent.entries()].map(([name, data]) => ({
107
+ agentName: name,
108
+ usage: snapshotUsage(data.usage),
109
+ inferenceCount: data.inferenceCount,
110
+ })),
111
+ inferenceCount: this.inferenceCount,
112
+ };
113
+ }
114
+ }
115
+ //# sourceMappingURL=usage-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../src/usage/usage-tracker.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ function makeGate(configPath, opts) {
33
33
  function event(overrides) {
34
34
  return {
35
35
  content: 'test message',
36
- eventType: 'push:event',
36
+ eventType: 'mcpl:push-event',
37
37
  serverId: '',
38
38
  channelId: '',
39
39
  ...overrides,
@@ -77,13 +77,13 @@ describe('policy matching', () => {
77
77
  it('scope match — matching event type', () => {
78
78
  const path = writeConfig('scope.json', {
79
79
  policies: [
80
- { name: 'channels', match: { scope: ['channel:incoming'] }, behavior: 'always' },
80
+ { name: 'channels', match: { scope: ['mcpl:channel-incoming'] }, behavior: 'always' },
81
81
  ],
82
82
  default: 'skip',
83
83
  });
84
84
  const { gate } = makeGate(path);
85
- assert.strictEqual(gate.evaluate(event({ eventType: 'channel:incoming' })).trigger, true);
86
- assert.strictEqual(gate.evaluate(event({ eventType: 'push:event' })).trigger, false);
85
+ assert.strictEqual(gate.evaluate(event({ eventType: 'mcpl:channel-incoming' })).trigger, true);
86
+ assert.strictEqual(gate.evaluate(event({ eventType: 'mcpl:push-event' })).trigger, false);
87
87
  });
88
88
  it('source match — exact serverId', () => {
89
89
  const path = writeConfig('source.json', {
@@ -119,6 +119,42 @@ describe('policy matching', () => {
119
119
  assert.strictEqual(gate.evaluate(event({ channelId: 'dev-backend' })).trigger, true);
120
120
  assert.strictEqual(gate.evaluate(event({ channelId: 'prod-alerts' })).trigger, false);
121
121
  });
122
+ it('mount match — exact name', () => {
123
+ const path = writeConfig('mount-exact.json', {
124
+ policies: [
125
+ {
126
+ name: 'tickets',
127
+ match: { scope: ['workspace:created'], mount: 'knowledge-requests' },
128
+ behavior: 'always',
129
+ },
130
+ ],
131
+ default: 'skip',
132
+ });
133
+ const { gate } = makeGate(path);
134
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:created', mount: 'knowledge-requests', paths: ['knowledge-requests/t1.md'] })).trigger, true);
135
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:created', mount: 'library-mined', paths: ['library-mined/r1.md'] })).trigger, false);
136
+ // Event without a mount must not match a mount-scoped policy.
137
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:created' })).trigger, false);
138
+ });
139
+ it('pathGlob match — any path matches', () => {
140
+ const path = writeConfig('path-glob.json', {
141
+ policies: [
142
+ {
143
+ name: 'md-only',
144
+ match: { scope: ['workspace:modified'], pathGlob: '*.md' },
145
+ behavior: 'always',
146
+ },
147
+ ],
148
+ default: 'skip',
149
+ });
150
+ const { gate } = makeGate(path);
151
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:modified', paths: ['tickets/a.md'] })).trigger, true);
152
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:modified', paths: ['logs/a.txt'] })).trigger, false);
153
+ // ANY-match: one matching path is enough.
154
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:modified', paths: ['logs/a.txt', 'tickets/b.md'] })).trigger, true);
155
+ // Empty paths can't match a pathGlob policy.
156
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:modified', paths: [] })).trigger, false);
157
+ });
122
158
  it('content filter — text match (case insensitive)', () => {
123
159
  const path = writeConfig('filter-text.json', {
124
160
  policies: [
@@ -148,7 +184,7 @@ describe('policy matching', () => {
148
184
  {
149
185
  name: 'zulip-errors',
150
186
  match: {
151
- scope: ['channel:incoming'],
187
+ scope: ['mcpl:channel-incoming'],
152
188
  source: 'zulip',
153
189
  filter: { type: 'text', pattern: 'error' },
154
190
  },
@@ -161,25 +197,25 @@ describe('policy matching', () => {
161
197
  // All conditions met
162
198
  assert.strictEqual(gate.evaluate(event({
163
199
  content: 'An error occurred',
164
- eventType: 'channel:incoming',
200
+ eventType: 'mcpl:channel-incoming',
165
201
  serverId: 'zulip',
166
202
  })).trigger, true);
167
203
  // Wrong scope
168
204
  assert.strictEqual(gate.evaluate(event({
169
205
  content: 'An error occurred',
170
- eventType: 'push:event',
206
+ eventType: 'mcpl:push-event',
171
207
  serverId: 'zulip',
172
208
  })).trigger, false);
173
209
  // Wrong source
174
210
  assert.strictEqual(gate.evaluate(event({
175
211
  content: 'An error occurred',
176
- eventType: 'channel:incoming',
212
+ eventType: 'mcpl:channel-incoming',
177
213
  serverId: 'discord',
178
214
  })).trigger, false);
179
215
  // No error keyword
180
216
  assert.strictEqual(gate.evaluate(event({
181
217
  content: 'All good',
182
- eventType: 'channel:incoming',
218
+ eventType: 'mcpl:channel-incoming',
183
219
  serverId: 'zulip',
184
220
  })).trigger, false);
185
221
  });
@@ -239,7 +275,7 @@ describe('debounce', () => {
239
275
  it('returns false immediately', () => {
240
276
  const path = writeConfig('debounce.json', {
241
277
  policies: [
242
- { name: 'editor', match: { scope: ['push:event'] }, behavior: { debounce: 100 } },
278
+ { name: 'editor', match: { scope: ['mcpl:push-event'] }, behavior: { debounce: 100 } },
243
279
  ],
244
280
  default: 'skip',
245
281
  });
@@ -251,7 +287,7 @@ describe('debounce', () => {
251
287
  it('batches events and fires after delay', async () => {
252
288
  const path = writeConfig('debounce-fire.json', {
253
289
  policies: [
254
- { name: 'editor', match: { scope: ['push:event'] }, behavior: { debounce: 150 } },
290
+ { name: 'editor', match: { scope: ['mcpl:push-event'] }, behavior: { debounce: 150 } },
255
291
  ],
256
292
  default: 'skip',
257
293
  });
@@ -449,14 +485,14 @@ describe('gate:status tool', () => {
449
485
  const path = writeConfig('status.json', {
450
486
  policies: [
451
487
  { name: 'always-policy', match: {}, behavior: 'always' },
452
- { name: 'debounce-policy', match: { scope: ['push:event'] }, behavior: { debounce: 1000 } },
488
+ { name: 'debounce-policy', match: { scope: ['mcpl:push-event'] }, behavior: { debounce: 1000 } },
453
489
  ],
454
490
  default: 'skip',
455
491
  });
456
492
  const { gate } = makeGate(path);
457
493
  // Trigger some matches
458
- gate.evaluate(event({ eventType: 'channel:incoming' }));
459
- gate.evaluate(event({ eventType: 'channel:incoming' }));
494
+ gate.evaluate(event({ eventType: 'mcpl:channel-incoming' }));
495
+ gate.evaluate(event({ eventType: 'mcpl:channel-incoming' }));
460
496
  const result = await gate.handleToolCall();
461
497
  assert.strictEqual(result.success, true);
462
498
  const status = result.data;
@@ -483,8 +519,8 @@ describe('asShouldTriggerCallback', () => {
483
519
  const { gate } = makeGate(path);
484
520
  const cb = gate.asShouldTriggerCallback();
485
521
  assert.strictEqual(typeof cb, 'function');
486
- assert.strictEqual(cb('hello', { eventType: 'push:event', serverId: 'zulip' }), true);
487
- assert.strictEqual(cb('hello', { eventType: 'push:event', serverId: 'discord' }), false);
522
+ assert.strictEqual(cb('hello', { eventType: 'mcpl:push-event', serverId: 'zulip' }), true);
523
+ assert.strictEqual(cb('hello', { eventType: 'mcpl:push-event', serverId: 'discord' }), false);
488
524
  });
489
525
  });
490
526
  // ---------------------------------------------------------------------------
@@ -532,4 +568,87 @@ describe('dispose', () => {
532
568
  assert.strictEqual(messages.length, 0);
533
569
  });
534
570
  });
571
+ // ---------------------------------------------------------------------------
572
+ // Policy reconciliation on restart (postmortem: clerk stuck on old policies)
573
+ // ---------------------------------------------------------------------------
574
+ describe('policy reconciliation', () => {
575
+ it('appends missing-by-name policies from initialConfig when gate.json already exists', () => {
576
+ // Simulate a prior session that seeded gate.json with 2 policies
577
+ const path = writeConfig('reconcile-add.json', {
578
+ default: 'skip',
579
+ policies: [
580
+ { name: 'user-input', match: { scope: ['external-message'] }, behavior: 'always' },
581
+ { name: 'subagent-completions', match: { scope: ['inference-request'] }, behavior: 'always' },
582
+ ],
583
+ });
584
+ // New session starts with a recipe that added a third policy
585
+ const { gate, traces } = makeGate(path, {
586
+ initialConfig: {
587
+ default: 'skip',
588
+ policies: [
589
+ { name: 'user-input', match: { scope: ['external-message'] }, behavior: 'always' },
590
+ { name: 'subagent-completions', match: { scope: ['inference-request'] }, behavior: 'always' },
591
+ { name: 'reviewed-responses', match: { scope: ['workspace:created'] }, behavior: 'always' },
592
+ ],
593
+ },
594
+ });
595
+ // gate.json on disk should now contain all three policies
596
+ const onDisk = JSON.parse(readFileSync(path, 'utf-8'));
597
+ assert.strictEqual(onDisk.policies.length, 3);
598
+ assert.ok(onDisk.policies.some((p) => p.name === 'reviewed-responses'));
599
+ // Reconciliation trace emitted
600
+ assert.ok(traces.some(t => t.type === 'gate:config-reconciled'));
601
+ // Live gate honors the new policy
602
+ assert.strictEqual(gate.evaluate(event({ eventType: 'workspace:created' })).trigger, true);
603
+ });
604
+ it("leaves existing policies alone — user's workspace--edit survives recipe changes", () => {
605
+ const path = writeConfig('reconcile-preserve.json', {
606
+ default: 'skip',
607
+ policies: [
608
+ {
609
+ name: 'user-input',
610
+ // User edited this policy to also filter on content
611
+ match: { scope: ['external-message'], filter: { type: 'text', pattern: 'urgent' } },
612
+ behavior: 'always',
613
+ },
614
+ ],
615
+ });
616
+ makeGate(path, {
617
+ initialConfig: {
618
+ default: 'skip',
619
+ policies: [
620
+ // Recipe declares it without the filter
621
+ { name: 'user-input', match: { scope: ['external-message'] }, behavior: 'always' },
622
+ ],
623
+ },
624
+ });
625
+ const onDisk = JSON.parse(readFileSync(path, 'utf-8'));
626
+ assert.strictEqual(onDisk.policies.length, 1);
627
+ assert.deepStrictEqual(onDisk.policies[0].match.filter, { type: 'text', pattern: 'urgent' });
628
+ });
629
+ });
630
+ // ---------------------------------------------------------------------------
631
+ // Observability: defaultDecisions counts help diagnose silent drops
632
+ // ---------------------------------------------------------------------------
633
+ describe('defaultDecisions counters', () => {
634
+ it('counts events that fell through to default (by eventType)', () => {
635
+ const path = writeConfig('default-counts.json', {
636
+ default: 'skip',
637
+ policies: [
638
+ { name: 'user-input', match: { scope: ['external-message'] }, behavior: 'always' },
639
+ ],
640
+ });
641
+ const { gate } = makeGate(path);
642
+ gate.evaluate(event({ eventType: 'external-message' })); // matches
643
+ gate.evaluate(event({ eventType: 'workspace:created' })); // default skip
644
+ gate.evaluate(event({ eventType: 'workspace:created' })); // default skip
645
+ gate.evaluate(event({ eventType: 'other' })); // default skip
646
+ const status = gate.getStatus();
647
+ assert.strictEqual(status.totalEvaluations, 4);
648
+ assert.strictEqual(status.defaultDecisions.skipped, 3);
649
+ assert.strictEqual(status.defaultDecisions.triggered, 0);
650
+ assert.strictEqual(status.defaultDecisions.byEventType['workspace:created'].skipped, 2);
651
+ assert.strictEqual(status.defaultDecisions.byEventType['other'].skipped, 1);
652
+ });
653
+ });
535
654
  //# sourceMappingURL=event-gate.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-gate.test.js","sourceRoot":"","sources":["../../test/event-gate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-gate.test.js","sourceRoot":"","sources":["../../test/event-gate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAE/D,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAkB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAS,QAAQ,CAAC,UAAkB,EAAE,IAAqC;IACzE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAyE,EAAE,CAAC;IAC1F,MAAM,iBAAiB,GAAiE,EAAE,CAAC;IAE3F,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC;QACzB,UAAU;QACV,aAAa,EAAE,IAAI,EAAE,aAAa;QAClC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAe,CAAC;QAC9C,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnG,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7F,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,KAAK,CAAC,SAAkC;IAC/C,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,iBAAiB;QAC5B,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,UAAU,CAAC,GAAG,EAAE;IACd,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE;YAC5C,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE;YACrC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACtF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/F,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE;YACtC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAClE;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9E,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE;YAC3C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACxE;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE;YAC5C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC1E;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE;YAC3C,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE;oBACpE,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAClI,IAAI,CACL,CAAC;QACF,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EACxH,KAAK,CACN,CAAC;QACF,8DAA8D;QAC9D,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,EAChE,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,gBAAgB,EAAE;YACzC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;oBAC1D,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAC1F,IAAI,CACL,CAAC;QACF,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EACxF,KAAK,CACN,CAAC;QACF,0CAA0C;QAC1C,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EACxG,IAAI,CACL,CAAC;QACF,6CAA6C;QAC7C,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAC5E,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE;YAC3C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC9F;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE;YAC5C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC1G;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5F,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE;YACxC,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE;wBACL,KAAK,EAAE,CAAC,uBAAuB,CAAC;wBAChC,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;qBAC3C;oBACD,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,qBAAqB;QACrB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,uBAAuB;YAClC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnB,cAAc;QACd,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,iBAAiB;YAC5B,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpB,eAAe;QACf,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,uBAAuB;YAClC,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpB,mBAAmB;QACnB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,uBAAuB;YAClC,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE;YACrC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACvG,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACrD;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE;YAC3C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACrD;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE;YACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE;YACpC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1D,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE;YACxC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;aACvF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,WAAW,CAAC,oBAAoB,EAAE;YAC7C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;aACvF;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE5C,gCAAgC;QAChC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEvC,4BAA4B;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAmC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE;YAC9C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;aAC3D;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,uCAAuC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,+CAA+C;QAC/C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEvC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,2BAA2B;QAC3B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC1C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;YACnE,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,uDAAuD;QACvD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC3C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;YACvE,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,WAAW,CAAC,gBAAgB,EAAE;YACzC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;aACzD;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEjC,2EAA2E;QAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,kDAAkD;QAClD,MAAM,SAAS,GAAI,IAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QACvD,MAAM,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,EAAE,+BAA+B,SAAS,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAE3D,8DAA8D;QAC9D,MAAM,UAAU,GAAI,IAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,gDAAgD,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1H,wBAAwB;QACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE;YAC9C,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;aACzD;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAE3C,mDAAmD;QACnD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEjC,kCAAkC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3C,0DAA0D;QAC1D,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEvC,wBAAwB;QACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/B,iCAAiC;QACjC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE;YACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzD,2BAA2B;QAC1B,IAAY,CAAC,eAAe,GAAG,CAAC,CAAC;QAElC,2BAA2B;QAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,uCAAuC;QACvC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE;YAC5C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzD,2BAA2B;QAC1B,IAAY,CAAC,eAAe,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE1C,qBAAqB;QACrB,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAEzC,mCAAmC;QACnC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACpC,MAAM,MAAM,GAAe;YACzB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC3D,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,QAAQ,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE;YACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC/D,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,EAAE;YACb,aAAa,EAAE;gBACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;gBACxD,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,EAAE;YACtC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBACxD,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;aACjG;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,uBAAuB;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAK,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE;YACxC,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACxE;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE1C,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3F,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,EAAE;YAC3C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC3D,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;QACzE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,mBAAmB,EAAE;YAC5C,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe;QAEtC,IAAY,CAAC,eAAe,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAErH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvB,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,EAAE;YACvC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3E,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,4BAA4B;QAC5B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAE9E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,iEAAiE;QACjE,MAAM,IAAI,GAAG,WAAW,CAAC,oBAAoB,EAAE;YAC7C,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBAClF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aAC9F;SACF,CAAC,CAAC;QAEH,6DAA6D;QAC7D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE;YACtC,aAAa,EAAE;gBACb,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;oBAClF,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;oBAC7F,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;iBAC5F;aACF;SACF,CAAC,CAAC;QAEH,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC;QAE1F,+BAA+B;QAC/B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC,CAAC;QAEjE,kCAAkC;QAClC,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,EAChE,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,IAAI,GAAG,WAAW,CAAC,yBAAyB,EAAE;YAClD,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,YAAY;oBAClB,oDAAoD;oBACpD,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;oBACnF,QAAQ,EAAE,QAAQ;iBACnB;aACF;SACF,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,EAAE;YACb,aAAa,EAAE;gBACb,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE;oBACR,wCAAwC;oBACxC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;iBACnF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE;YAC9C,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACnF;SACF,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU;QACnE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;QACzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;QACzE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;QAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcpl-gate-roundtrip.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpl-gate-roundtrip.test.d.ts","sourceRoot":"","sources":["../../test/mcpl-gate-roundtrip.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ import { describe, it, beforeEach, afterEach } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { existsSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { EventGate } from '../src/gate/event-gate.js';
6
+ import { ChannelRegistry } from '../src/mcpl/channel-registry.js';
7
+ const TMP_DIR = join(import.meta.dirname, '../.test-tmp-roundtrip');
8
+ beforeEach(() => {
9
+ mkdirSync(TMP_DIR, { recursive: true });
10
+ });
11
+ afterEach(() => {
12
+ if (existsSync(TMP_DIR))
13
+ rmSync(TMP_DIR, { recursive: true, force: true });
14
+ });
15
+ function makeGate(config) {
16
+ const configPath = join(TMP_DIR, 'gate.json');
17
+ writeFileSync(configPath, JSON.stringify(config));
18
+ return new EventGate({
19
+ configPath,
20
+ emitTrace: () => { },
21
+ addMessage: () => '',
22
+ requestInference: () => { },
23
+ getAgentNames: () => ['agent'],
24
+ });
25
+ }
26
+ function makeRegistry(shouldTriggerInference) {
27
+ const pushed = [];
28
+ const registry = new ChannelRegistry({}, {}, (ev) => pushed.push(ev), () => { }, shouldTriggerInference ? { shouldTriggerInference } : undefined);
29
+ return { registry, pushed };
30
+ }
31
+ function incomingParams(channelId, text) {
32
+ return {
33
+ messages: [{
34
+ channelId,
35
+ messageId: 'msg-1',
36
+ author: { id: '42', name: 'Alice' },
37
+ timestamp: new Date().toISOString(),
38
+ content: [{ type: 'text', text }],
39
+ }],
40
+ };
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Contract: ChannelRegistry emits eventType='mcpl:channel-incoming' to the gate
44
+ // ---------------------------------------------------------------------------
45
+ describe('ChannelRegistry → shouldTriggerInference contract', () => {
46
+ it('emits eventType="mcpl:channel-incoming" in callback metadata', () => {
47
+ const seen = [];
48
+ const { registry } = makeRegistry((_content, metadata) => {
49
+ seen.push(metadata);
50
+ return true;
51
+ });
52
+ registry.handleIncoming('zulip', incomingParams('zulip:tracker-miner-f', 'hi'));
53
+ assert.strictEqual(seen.length, 1);
54
+ assert.strictEqual(seen[0].eventType, 'mcpl:channel-incoming');
55
+ assert.strictEqual(seen[0].serverId, 'zulip');
56
+ assert.strictEqual(seen[0].channelId, 'zulip:tracker-miner-f');
57
+ });
58
+ });
59
+ // ---------------------------------------------------------------------------
60
+ // Roundtrip: a recipe-shaped channel policy fires for a channel-incoming event
61
+ // ---------------------------------------------------------------------------
62
+ describe('ChannelRegistry + EventGate roundtrip', () => {
63
+ it('channel-scoped policy triggers inference on matching channel-incoming', () => {
64
+ const gate = makeGate({
65
+ default: 'skip',
66
+ policies: [
67
+ {
68
+ name: 'tracker-channel',
69
+ match: { scope: ['mcpl:channel-incoming'], channel: 'zulip:tracker-miner-f' },
70
+ behavior: 'always',
71
+ },
72
+ ],
73
+ });
74
+ const { registry, pushed } = makeRegistry(gate.asShouldTriggerCallback());
75
+ registry.handleIncoming('zulip', incomingParams('zulip:tracker-miner-f', 'question in channel'));
76
+ assert.strictEqual(pushed.length, 1);
77
+ const event = pushed[0];
78
+ assert.strictEqual(event.type, 'mcpl:channel-incoming');
79
+ assert.strictEqual(event.triggerInference, true);
80
+ });
81
+ it('default:skip wins when no policy matches the channel', () => {
82
+ const gate = makeGate({
83
+ default: 'skip',
84
+ policies: [
85
+ {
86
+ name: 'tracker-channel',
87
+ match: { scope: ['mcpl:channel-incoming'], channel: 'zulip:tracker-miner-f' },
88
+ behavior: 'always',
89
+ },
90
+ ],
91
+ });
92
+ const { registry, pushed } = makeRegistry(gate.asShouldTriggerCallback());
93
+ registry.handleIncoming('zulip', incomingParams('zulip:other-channel', 'noise'));
94
+ assert.strictEqual(pushed.length, 1);
95
+ const event = pushed[0];
96
+ assert.strictEqual(event.triggerInference, false);
97
+ });
98
+ });
99
+ // ---------------------------------------------------------------------------
100
+ // ChannelRegistry: per-server channelSubscription policy gates auto-open
101
+ // ---------------------------------------------------------------------------
102
+ describe('ChannelRegistry subscriptionPolicy', () => {
103
+ function makeServerStub() {
104
+ const opens = [];
105
+ const server = {
106
+ sendChannelsOpen: async (args) => { opens.push(args); },
107
+ };
108
+ const serverRegistry = { getServer: () => server };
109
+ return { opens, serverRegistry };
110
+ }
111
+ const channels = [
112
+ { id: 'zulip:tracker-miner-f', type: 'zulip-stream', address: { streamId: 1 }, name: 'tracker-miner-f' },
113
+ { id: 'zulip:general', type: 'zulip-stream', address: { streamId: 2 }, name: 'general' },
114
+ { id: 'zulip:random', type: 'zulip-stream', address: { streamId: 3 }, name: 'random' },
115
+ ];
116
+ const registerParams = { channels };
117
+ it("default 'auto' opens every registered channel", async () => {
118
+ const { opens, serverRegistry } = makeServerStub();
119
+ const registry = new ChannelRegistry(serverRegistry, {}, () => { }, () => { });
120
+ await registry.handleRegister('zulip', registerParams);
121
+ assert.strictEqual(opens.length, 3);
122
+ });
123
+ it("'manual' opens nothing but still registers the channels", async () => {
124
+ const { opens, serverRegistry } = makeServerStub();
125
+ const registry = new ChannelRegistry(serverRegistry, {}, () => { }, () => { });
126
+ registry.setSubscriptionPolicy('zulip', 'manual');
127
+ await registry.handleRegister('zulip', registerParams);
128
+ assert.strictEqual(opens.length, 0);
129
+ assert.strictEqual(registry.getOpenChannels().length, 0);
130
+ });
131
+ it('string[] allow-list opens only matching channels', async () => {
132
+ const { opens, serverRegistry } = makeServerStub();
133
+ const registry = new ChannelRegistry(serverRegistry, {}, () => { }, () => { });
134
+ registry.setSubscriptionPolicy('zulip', ['zulip:tracker-miner-f']);
135
+ await registry.handleRegister('zulip', registerParams);
136
+ assert.strictEqual(opens.length, 1);
137
+ assert.deepStrictEqual(opens[0].address, { streamId: 1 });
138
+ });
139
+ });
140
+ //# sourceMappingURL=mcpl-gate-roundtrip.test.js.map