@agent-relay/sdk 10.4.0 → 10.6.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 (38) hide show
  1. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  2. package/bin/agent-relay-broker-darwin-x64 +0 -0
  3. package/bin/agent-relay-broker-linux-arm64 +0 -0
  4. package/bin/agent-relay-broker-linux-x64 +0 -0
  5. package/bin/agent-relay-broker-win32-x64.exe +0 -0
  6. package/dist/agent-relay.d.ts +23 -0
  7. package/dist/agent-relay.d.ts.map +1 -1
  8. package/dist/agent-relay.js +57 -5
  9. package/dist/agent-relay.js.map +1 -1
  10. package/dist/delivery/types.d.ts +5 -1
  11. package/dist/delivery/types.d.ts.map +1 -1
  12. package/dist/listeners.d.ts.map +1 -1
  13. package/dist/listeners.js +16 -4
  14. package/dist/listeners.js.map +1 -1
  15. package/dist/messaging/event-fanin.d.ts +54 -0
  16. package/dist/messaging/event-fanin.d.ts.map +1 -0
  17. package/dist/messaging/event-fanin.js +293 -0
  18. package/dist/messaging/event-fanin.js.map +1 -0
  19. package/dist/messaging/index.d.ts +2 -0
  20. package/dist/messaging/index.d.ts.map +1 -1
  21. package/dist/messaging/index.js +2 -0
  22. package/dist/messaging/index.js.map +1 -1
  23. package/dist/messaging/normalize.d.ts.map +1 -1
  24. package/dist/messaging/normalize.js +479 -509
  25. package/dist/messaging/normalize.js.map +1 -1
  26. package/dist/messaging/observer-source.d.ts +80 -0
  27. package/dist/messaging/observer-source.d.ts.map +1 -0
  28. package/dist/messaging/observer-source.js +502 -0
  29. package/dist/messaging/observer-source.js.map +1 -0
  30. package/dist/messaging/relaycast-client.d.ts +2 -1
  31. package/dist/messaging/relaycast-client.d.ts.map +1 -1
  32. package/dist/messaging/relaycast-client.js.map +1 -1
  33. package/dist/messaging/relaycast-translate.d.ts.map +1 -1
  34. package/dist/messaging/relaycast-translate.js +9 -1
  35. package/dist/messaging/relaycast-translate.js.map +1 -1
  36. package/dist/messaging/types.d.ts +133 -107
  37. package/dist/messaging/types.d.ts.map +1 -1
  38. package/package.json +5 -3
@@ -0,0 +1,293 @@
1
+ const DEFAULT_DEDUPE_WINDOW_MS = 30_000;
2
+ const DEFAULT_DEDUPE_CAPACITY = 2048;
3
+ const DEFAULT_NO_SOURCE_WARNING_MS = 10_000;
4
+ /**
5
+ * Derive a cross-source identity for an event, or `null` for events that must
6
+ * never be deduplicated (per-connection transport state, unknown frames).
7
+ */
8
+ function dedupeKey(event) {
9
+ switch (event.type) {
10
+ case 'messageCreated':
11
+ case 'messageUpdated':
12
+ case 'threadReply':
13
+ return event.message?.messageId ? `${event.type}:${event.message.messageId}` : null;
14
+ case 'dmReceived':
15
+ case 'groupDmReceived':
16
+ return event.message?.messageId
17
+ ? `${event.type}:${event.conversationId}:${event.message.messageId}`
18
+ : null;
19
+ case 'messageRead':
20
+ return `${event.type}:${event.messageId}:${event.agentName}`;
21
+ case 'reactionAdded':
22
+ case 'reactionRemoved':
23
+ return `${event.type}:${event.messageId}:${event.emoji}:${event.agentName}`;
24
+ case 'agentOnline':
25
+ case 'agentOffline':
26
+ return `${event.type}:${event.agent?.name}`;
27
+ case 'agentSpawnRequested':
28
+ case 'agentReleaseRequested':
29
+ return `${event.type}:${event.agent?.name}`;
30
+ case 'channelCreated':
31
+ case 'channelUpdated':
32
+ case 'channelArchived':
33
+ return `${event.type}:${event.channel?.name}`;
34
+ case 'memberJoined':
35
+ case 'memberLeft':
36
+ case 'channelMuted':
37
+ case 'channelUnmuted':
38
+ return `${event.type}:${event.channel}:${event.agentName}`;
39
+ case 'actionInvoked':
40
+ return `${event.type}:${event.invocationId}`;
41
+ default:
42
+ // connected / disconnected / error / reconnecting /
43
+ // permanentlyDisconnected / unknown: per-source transport state.
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Create an events fan-in.
49
+ *
50
+ * @param fallback - The workspace-scoped client's events surface, used only
51
+ * while no agent sources exist (it may still work against servers that
52
+ * accept the workspace stream). It is detached as soon as the first agent
53
+ * source connects.
54
+ */
55
+ export function createEventFanIn(fallback, options = {}) {
56
+ const dedupeWindowMs = options.dedupeWindowMs ?? DEFAULT_DEDUPE_WINDOW_MS;
57
+ const dedupeCapacity = options.dedupeCapacity ?? DEFAULT_DEDUPE_CAPACITY;
58
+ const noSourceWarningMs = options.noSourceWarningMs ?? DEFAULT_NO_SOURCE_WARNING_MS;
59
+ const now = options.now ?? (() => Date.now());
60
+ const handlers = new Map();
61
+ const sources = [];
62
+ const seenSources = new Set();
63
+ /** Active `on('any', ...)` forwarding per source, so disconnect can detach. */
64
+ const sourceForwarding = new Map();
65
+ const desiredChannels = new Set();
66
+ /** Dedupe keys → current occurrence, insertion-ordered for eviction. */
67
+ const seenEvents = new Map();
68
+ let connectRequested = false;
69
+ let fallbackForwarding;
70
+ let fallbackConnected = false;
71
+ let noSourceTimer;
72
+ const report = (error) => {
73
+ if (options.onError) {
74
+ try {
75
+ options.onError(error);
76
+ }
77
+ catch {
78
+ // Error hooks must not throw into the event source.
79
+ }
80
+ return;
81
+ }
82
+ console.warn('[agent-relay] event stream:', error);
83
+ };
84
+ const emitLocal = (event) => {
85
+ for (const key of [event.type, 'any']) {
86
+ for (const handler of handlers.get(key) ?? []) {
87
+ try {
88
+ void Promise.resolve(handler(event)).catch(report);
89
+ }
90
+ catch (error) {
91
+ report(error);
92
+ }
93
+ }
94
+ }
95
+ };
96
+ /**
97
+ * Forward an event from one source, collapsing cross-source duplicates.
98
+ *
99
+ * The engine emits one delivery per locally-registered recipient, so N
100
+ * sources produce N copies of one occurrence — only the first is emitted.
101
+ * A copy from a source that already delivered the previous occurrence is a
102
+ * genuine repeat (message edit, re-reaction, presence flap) and starts a
103
+ * new occurrence, so same-source repeats are never dropped.
104
+ */
105
+ const forward = (source, event) => {
106
+ const key = dedupeKey(event);
107
+ if (key) {
108
+ const at = now();
109
+ const record = seenEvents.get(key);
110
+ if (record && at - record.at < dedupeWindowMs && !record.sources.has(source)) {
111
+ record.sources.add(source);
112
+ return;
113
+ }
114
+ seenEvents.delete(key);
115
+ seenEvents.set(key, { at, sources: new Set([source]) });
116
+ while (seenEvents.size > dedupeCapacity) {
117
+ const oldest = seenEvents.keys().next().value;
118
+ if (oldest === undefined)
119
+ break;
120
+ seenEvents.delete(oldest);
121
+ }
122
+ }
123
+ emitLocal(event);
124
+ };
125
+ const clearNoSourceTimer = () => {
126
+ if (noSourceTimer !== undefined) {
127
+ clearTimeout(noSourceTimer);
128
+ noSourceTimer = undefined;
129
+ }
130
+ };
131
+ const scheduleNoSourceWarning = () => {
132
+ if (noSourceTimer !== undefined || noSourceWarningMs <= 0)
133
+ return;
134
+ noSourceTimer = setTimeout(() => {
135
+ noSourceTimer = undefined;
136
+ if (!connectRequested || sources.length > 0)
137
+ return;
138
+ report(new Error('Listening for relay events, but no registered agent is connected. ' +
139
+ "Relaycast delivers events over each agent's node transport, and the " +
140
+ 'workspace-key stream cannot receive them. Register an agent first ' +
141
+ '(`relay.workspace.register(...)` / `workspace.reconnect(...)`) so the ' +
142
+ 'listener has a live connection to stream through.'));
143
+ }, noSourceWarningMs);
144
+ noSourceTimer.unref?.();
145
+ };
146
+ const attachSourceForwarding = (source) => {
147
+ if (sourceForwarding.has(source))
148
+ return;
149
+ sourceForwarding.set(source, source.on('any', (event) => forward(source, event)));
150
+ };
151
+ const detachAllForwarding = () => {
152
+ for (const off of sourceForwarding.values())
153
+ off();
154
+ sourceForwarding.clear();
155
+ };
156
+ const connectSource = (source) => {
157
+ if (typeof source.connect === 'function') {
158
+ try {
159
+ source.connect();
160
+ }
161
+ catch (error) {
162
+ report(error);
163
+ }
164
+ }
165
+ if (desiredChannels.size > 0 && typeof source.subscribe === 'function') {
166
+ try {
167
+ source.subscribe([...desiredChannels]);
168
+ }
169
+ catch (error) {
170
+ report(error);
171
+ }
172
+ }
173
+ };
174
+ const attachFallback = () => {
175
+ // Injected fakes may carry a partial surface; only a stream that can be
176
+ // observed is worth attaching.
177
+ if (!fallback || fallbackForwarding || typeof fallback.on !== 'function')
178
+ return;
179
+ fallbackForwarding = fallback.on('any', (event) => forward(fallback, event));
180
+ if (typeof fallback.connect === 'function') {
181
+ try {
182
+ fallback.connect();
183
+ fallbackConnected = true;
184
+ }
185
+ catch (error) {
186
+ // A workspace-key client may have no stream at all; agent sources can
187
+ // still arrive later, so surface the failure without giving up.
188
+ report(error);
189
+ }
190
+ }
191
+ };
192
+ const detachFallback = () => {
193
+ if (!fallbackForwarding)
194
+ return;
195
+ fallbackForwarding();
196
+ fallbackForwarding = undefined;
197
+ if (fallbackConnected) {
198
+ fallbackConnected = false;
199
+ if (typeof fallback?.disconnect === 'function') {
200
+ try {
201
+ void fallback.disconnect().catch(() => { });
202
+ }
203
+ catch {
204
+ // Fallback surfaces whose disconnect misbehaves are left as-is.
205
+ }
206
+ }
207
+ }
208
+ };
209
+ return {
210
+ addSource: (source) => {
211
+ // A source without a subscribable stream (partial fakes injected via
212
+ // `createAgentMessaging`) contributes nothing; skip it entirely.
213
+ if (!source || typeof source.on !== 'function')
214
+ return;
215
+ if (seenSources.has(source))
216
+ return;
217
+ seenSources.add(source);
218
+ sources.push(source);
219
+ attachSourceForwarding(source);
220
+ if (connectRequested) {
221
+ connectSource(source);
222
+ clearNoSourceTimer();
223
+ // The agent transport is the real event stream; stop the workspace
224
+ // fallback so it does not sit in a doomed reconnect loop.
225
+ detachFallback();
226
+ }
227
+ },
228
+ hasAgentSources: () => sources.length > 0,
229
+ connect: () => {
230
+ connectRequested = true;
231
+ if (sources.length > 0) {
232
+ for (const source of sources) {
233
+ // Re-attach forwarding dropped by a prior disconnect().
234
+ attachSourceForwarding(source);
235
+ connectSource(source);
236
+ }
237
+ return;
238
+ }
239
+ attachFallback();
240
+ scheduleNoSourceWarning();
241
+ },
242
+ disconnect: async () => {
243
+ connectRequested = false;
244
+ clearNoSourceTimer();
245
+ detachFallback();
246
+ // Stop forwarding first so a source another owner reconnects later
247
+ // cannot feed listeners that were explicitly disconnected.
248
+ detachAllForwarding();
249
+ await Promise.allSettled(sources.map((source) => Promise.resolve().then(() => {
250
+ if (typeof source.disconnect === 'function')
251
+ return source.disconnect();
252
+ return undefined;
253
+ })));
254
+ },
255
+ subscribe: (channels) => {
256
+ for (const channel of channels)
257
+ desiredChannels.add(channel);
258
+ for (const source of sources) {
259
+ if (typeof source.subscribe !== 'function')
260
+ continue;
261
+ try {
262
+ source.subscribe(channels);
263
+ }
264
+ catch (error) {
265
+ report(error);
266
+ }
267
+ }
268
+ },
269
+ unsubscribe: (channels) => {
270
+ for (const channel of channels)
271
+ desiredChannels.delete(channel);
272
+ for (const source of sources) {
273
+ if (typeof source.unsubscribe !== 'function')
274
+ continue;
275
+ try {
276
+ source.unsubscribe(channels);
277
+ }
278
+ catch (error) {
279
+ report(error);
280
+ }
281
+ }
282
+ },
283
+ on: (event, handler) => {
284
+ const set = handlers.get(event) ?? new Set();
285
+ set.add(handler);
286
+ handlers.set(event, set);
287
+ return () => {
288
+ set.delete(handler);
289
+ };
290
+ },
291
+ };
292
+ }
293
+ //# sourceMappingURL=event-fanin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-fanin.js","sourceRoot":"","sources":["../../src/messaging/event-fanin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export * from './types.js';
2
2
  export * from './normalize.js';
3
+ export { createEventFanIn, type EventFanInOptions, type RelayEventFanIn } from './event-fanin.js';
4
+ export { createObserverEventSource, type ObserverEventSourceOptions, type ObserverLiveStream, } from './observer-source.js';
3
5
  export { RelayPlacementError, RelaycastMessagingClient, type RelaycastMessagingOptions, } from './relaycast.js';
4
6
  export * from './thin-client.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,gBAAgB,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EACL,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,gBAAgB,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export * from './types.js';
2
2
  export * from './normalize.js';
3
+ export { createEventFanIn } from './event-fanin.js';
4
+ export { createObserverEventSource, } from './observer-source.js';
3
5
  export { RelayPlacementError, RelaycastMessagingClient, } from './relaycast.js';
4
6
  export * from './thin-client.js';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/messaging/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAgD,MAAM,kBAAkB,CAAC;AAClG,OAAO,EACL,yBAAyB,GAG1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAEzB,MAAM,gBAAgB,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/messaging/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EAGtB,YAAY,EACZ,kBAAkB,EAElB,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,UAAU,EAIV,YAAY,EACZ,sBAAsB,EAEtB,gBAAgB,EAEhB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACZ,MAAM,YAAY,CAAC;AAwDpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AA+BD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAWvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAsBzD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAYjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CASzE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAazE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAmB7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAuE1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAOtE;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,YAAY,CAwE3F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAa3D;AAqCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAwBzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAarE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CASjF;AAWD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAEjF;AAmBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,CA2BtG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC,EAC9C,KAAK,EAAE,OAAO,GACb,4BAA4B,CAW9B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAYvE;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAoB7F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAuL3E"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/messaging/normalize.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,UAAU,EAIV,YAAY,EACZ,sBAAsB,EAGtB,gBAAgB,EAChB,oBAAoB,EAEpB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACZ,MAAM,YAAY,CAAC;AAuFpB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AA4HD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CASvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAczD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAUjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAQzE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAUzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAc7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAgD1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAOtE;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,YAAY,CAmC3F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAgB3D;AAiCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAWzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAQrE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAOjF;AAqBD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAGjF;AAgBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,CAkBtG;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC,EAC9C,KAAK,EAAE,OAAO,GACb,4BAA4B,CAU9B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAUvE;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,CAiB7F;AASD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CA2I3E"}