@bjorntech/key-ferry 0.1.13 → 0.1.17

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 (47) hide show
  1. package/README.md +20 -0
  2. package/dist/broker-registry.d.ts +26 -0
  3. package/dist/broker-registry.d.ts.map +1 -1
  4. package/dist/broker-registry.js +253 -54
  5. package/dist/broker-registry.js.map +1 -1
  6. package/dist/contracts.d.ts +7 -3
  7. package/dist/contracts.d.ts.map +1 -1
  8. package/dist/contracts.js +1 -0
  9. package/dist/contracts.js.map +1 -1
  10. package/dist/options.d.ts +1 -0
  11. package/dist/options.d.ts.map +1 -1
  12. package/dist/options.js +17 -0
  13. package/dist/options.js.map +1 -1
  14. package/dist/plugin.d.ts.map +1 -1
  15. package/dist/plugin.js +13 -4
  16. package/dist/plugin.js.map +1 -1
  17. package/dist/relay/index.d.ts +2 -0
  18. package/dist/relay/index.d.ts.map +1 -1
  19. package/dist/relay/index.js +150 -110
  20. package/dist/relay/index.js.map +1 -1
  21. package/dist/remote.d.ts +12 -1
  22. package/dist/remote.d.ts.map +1 -1
  23. package/dist/remote.js +114 -76
  24. package/dist/remote.js.map +1 -1
  25. package/dist/rpc.d.ts +22 -12
  26. package/dist/rpc.d.ts.map +1 -1
  27. package/dist/rpc.js +27 -27
  28. package/dist/rpc.js.map +1 -1
  29. package/dist/scoped-controller.d.ts +1 -1
  30. package/dist/scoped-controller.d.ts.map +1 -1
  31. package/dist/scoped-controller.js +37 -7
  32. package/dist/scoped-controller.js.map +1 -1
  33. package/dist/scopes/controller-helpers.d.ts.map +1 -1
  34. package/dist/scopes/controller-helpers.js +5 -0
  35. package/dist/scopes/controller-helpers.js.map +1 -1
  36. package/dist/services/process.d.ts +2 -0
  37. package/dist/services/process.d.ts.map +1 -1
  38. package/dist/services/process.js +13 -2
  39. package/dist/services/process.js.map +1 -1
  40. package/dist/varlock/manager.d.ts.map +1 -1
  41. package/dist/varlock/manager.js +312 -74
  42. package/dist/varlock/manager.js.map +1 -1
  43. package/dist/varlock/ownership.d.ts +88 -0
  44. package/dist/varlock/ownership.d.ts.map +1 -0
  45. package/dist/varlock/ownership.js +574 -0
  46. package/dist/varlock/ownership.js.map +1 -0
  47. package/package.json +1 -1
package/README.md CHANGED
@@ -36,6 +36,11 @@ Direct provider/API transport protection is not included.
36
36
  - Varlock CLI 1.23.0 installed separately as `varlock`
37
37
  - An installed Varlock CLI and a configured Varlock environment/schema with the
38
38
  secrets and proxy rules your MCP servers need
39
+ - A private, writable runtime directory for ownership records. By default this
40
+ is `tmpdir()/key-ferry-<uid>`; `adapter.ownershipDirectory` may be used to
41
+ inject another private, writable directory. If it cannot be secured, startup
42
+ fails closed with the `ownership_unavailable` diagnostic (also shown by
43
+ `key-ferry.doctor`).
39
44
  - Configure secret sources and authentication following the
40
45
  [Varlock documentation](https://varlock.dev/)
41
46
 
@@ -194,6 +199,21 @@ filters requested keys. Mark each remote upstream host with `@proxy(domain="..."
194
199
  Key Ferry does not install Varlock, create its schema, or configure provider
195
200
  authentication. Never commit a real secret.
196
201
 
202
+ Broker processes remain available for `idleTimeoutMs` milliseconds after the
203
+ last lease is released (default: `600000`, or ten minutes). This reuses the
204
+ authenticated Varlock proxy when returning to a project. Set
205
+ `idleTimeoutMs: 0` for immediate teardown; idle brokers are always stopped on
206
+ host shutdown or when their schema/configuration identity changes. This is a
207
+ security/performance trade-off: resolved secrets remain in the proxy process's
208
+ memory for up to the idle timeout after leaving a project. On startup Key Ferry
209
+ also reaps orphaned, identity-checked proxy records left by an earlier process.
210
+ If stopping a proxy fails during shutdown, Key Ferry keeps its ownership record and
211
+ defers cleanup to the next startup, whose reaper retries the same session UUID.
212
+ On SIGINT or SIGTERM it performs bounded cleanup (up to three seconds), removes
213
+ its signal listener, and re-raises the signal when it is the only listener so
214
+ the host's normal termination semantics are preserved; host-owned signal
215
+ listeners remain in control.
216
+
197
217
  ## TUI commands
198
218
 
199
219
  | Palette command | Slash command | RPC |
@@ -10,8 +10,21 @@ export interface BrokerLease extends ProjectKeyFerryManagerService {
10
10
  }
11
11
  export interface BrokerRegistryOptions {
12
12
  readonly canonicalize?: (directory: string) => Effect.Effect<string, unknown>;
13
+ /** Supplies the schema fingerprint; the default retains the real filesystem implementation. */
14
+ readonly schemaHash?: (directory: string) => Effect.Effect<string, unknown>;
13
15
  readonly maxEntries?: number;
14
16
  readonly now?: () => number;
17
+ readonly idleTimeoutMs?: number;
18
+ readonly logger?: (event: BrokerLogEvent) => void;
19
+ readonly hostShutdownHooks?: boolean;
20
+ }
21
+ export interface BrokerLogEvent {
22
+ readonly event: "start" | "ready" | "release" | "idle-scheduled" | "reused" | "disposed" | "stop-failed" | "dispose-failed" | "stale-reaped" | "stale-skipped";
23
+ readonly scope: "global" | "project";
24
+ readonly directory: string;
25
+ readonly keyHash: string;
26
+ readonly pid?: number;
27
+ readonly proxySessionId?: string;
15
28
  }
16
29
  type BrokerResult = {
17
30
  readonly status: SafeStatus;
@@ -25,11 +38,24 @@ export declare function makeBrokerRegistry(configuration?: BrokerRegistryOptions
25
38
  acquire: <R>(factory: ProjectKeyFerryManagerFactory<R>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerLease, any, never>;
26
39
  retry: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult, any, never>;
27
40
  retryIfDue: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult | undefined, any, never>;
41
+ shutdown: Effect.Effect<void, never, never>;
28
42
  };
43
+ export interface HostSignalProcess {
44
+ readonly pid: number;
45
+ readonly on: (event: any, listener: (...args: any[]) => void) => unknown;
46
+ readonly removeListener: (event: any, listener: (...args: any[]) => void) => unknown;
47
+ readonly listeners: (event: any) => Function[];
48
+ readonly kill: (pid: number, signal: "SIGINT" | "SIGTERM") => unknown;
49
+ }
50
+ export declare function removeHostShutdownHooks(): void;
51
+ export declare function installHostShutdownHooks(shutdown: Effect.Effect<void>, signalProcess?: HostSignalProcess, options?: {
52
+ readonly cleanupTimeoutMs?: number;
53
+ }): (() => void) | undefined;
29
54
  export declare const brokerRegistry: {
30
55
  acquire: <R>(factory: ProjectKeyFerryManagerFactory<R>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerLease, any, never>;
31
56
  retry: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult, any, never>;
32
57
  retryIfDue: (factory: ProjectKeyFerryManagerFactory<any>, options: ProjectKeyFerryManagerOptions) => Effect.Effect<BrokerResult | undefined, any, never>;
58
+ shutdown: Effect.Effect<void, never, never>;
33
59
  };
34
60
  export type BrokerRegistry = ReturnType<typeof makeBrokerRegistry>;
35
61
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"broker-registry.d.ts","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,MAAM,EAON,MAAM,EACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,WAAY,SAAQ,6BAA6B;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,KAAK,YAAY,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE/F,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAE1C,eAAO,MAAM,YAAY,GAAI,cAAc,MAAM,WACuC,CAAC;AAuLzF,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,aAAa,GAAE,qBAA0B;cAqSzD,CAAC,WACP,6BAA6B,CAAC,CAAC,CAAC,WAChC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC;qBAsD9B,6BAA6B,CAAC,GAAG,CAAC,WAClC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC;0BA8D/B,6BAA6B,CAAC,GAAG,CAAC,WAClC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;EAmBvD;AAED,eAAO,MAAM,cAAc;cAhJR,CAAC,WACP,6BAA6B,CAAC,CAAC,CAAC,WAChC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC;qBAsD9B,6BAA6B,CAAC,GAAG,CAAC,WAClC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC;0BA8D/B,6BAA6B,CAAC,GAAG,CAAC,WAClC,6BAA6B,KACrC,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;CAqBN,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"broker-registry.d.ts","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { readdir, readFile, realpath, stat } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
- import { Context, Deferred, Effect, Exit, Fiber, Layer, PubSub, Scope, Semaphore, Stream, } from "effect";
4
+ import { Context, Deferred, Duration, Effect, Exit, Fiber, Layer, PubSub, Scope, Semaphore, Stream, } from "effect";
5
5
  import { ProjectKeyFerryManager, VarlockError, } from "./contracts.js";
6
+ import { setOwnershipLifecycleLogger } from "./varlock/ownership.js";
6
7
  export const RETRY_BASE_DELAY_MS = 5_000;
7
8
  export const RETRY_MAX_DELAY_MS = 300_000;
8
9
  export const retryDelayMs = (failureCount) => Math.min(RETRY_MAX_DELAY_MS, RETRY_BASE_DELAY_MS * 2 ** Math.max(0, failureCount - 1));
@@ -17,6 +18,7 @@ const adapterKeys = new Set([
17
18
  "reloadTimeoutMs",
18
19
  "pollIntervalMs",
19
20
  "requireStrictEgress",
21
+ "idleTimeoutMs",
20
22
  ]);
21
23
  function safeError(error, code) {
22
24
  if (error instanceof VarlockError)
@@ -90,37 +92,40 @@ async function contentHash(directory) {
90
92
  }
91
93
  return hash.digest("hex");
92
94
  }
93
- async function keyFor(directory, options) {
94
- const adapter = validateOptions(options);
95
- const keys = [
96
- ...new Set([
97
- ...adapter.environmentKeys,
98
- ...Object.keys(globalThis.process.env).filter((key) => /^OP_/.test(key)),
99
- ]),
100
- ].sort();
101
- const valuesHash = createHash("sha256");
102
- for (const key of keys)
103
- valuesHash.update(`${key}\0${globalThis.process.env[key] ?? ""}\0`);
104
- const context = {
105
- projectDirectory: directory,
106
- owner: options.owner,
107
- sessionID: options.sessionID,
108
- command: adapter.command,
109
- environmentKeys: [...new Set(adapter.environmentKeys)].sort(),
110
- startupTimeoutMs: adapter.startupTimeoutMs,
111
- commandTimeoutMs: adapter.commandTimeoutMs,
112
- reloadTimeoutMs: adapter.reloadTimeoutMs,
113
- pollIntervalMs: adapter.pollIntervalMs,
114
- requireStrictEgress: adapter.requireStrictEgress,
115
- };
116
- return {
117
- contextKey: stable(context),
118
- key: stable({
119
- ...context,
120
- environmentValuesHash: valuesHash.digest("hex"),
121
- schemaHash: await contentHash(directory),
122
- }),
123
- };
95
+ function keyFor(directory, options, schemaHash) {
96
+ return Effect.gen(function* () {
97
+ const adapter = validateOptions(options);
98
+ const keys = [
99
+ ...new Set([
100
+ ...adapter.environmentKeys,
101
+ ...Object.keys(globalThis.process.env).filter((key) => /^OP_/.test(key)),
102
+ ]),
103
+ ].sort();
104
+ const valuesHash = createHash("sha256");
105
+ for (const key of keys)
106
+ valuesHash.update(`${key}\0${globalThis.process.env[key] ?? ""}\0`);
107
+ const context = {
108
+ projectDirectory: directory,
109
+ owner: options.owner,
110
+ sessionID: options.sessionID,
111
+ command: adapter.command,
112
+ environmentKeys: [...new Set(adapter.environmentKeys)].sort(),
113
+ startupTimeoutMs: adapter.startupTimeoutMs,
114
+ commandTimeoutMs: adapter.commandTimeoutMs,
115
+ reloadTimeoutMs: adapter.reloadTimeoutMs,
116
+ pollIntervalMs: adapter.pollIntervalMs,
117
+ requireStrictEgress: adapter.requireStrictEgress,
118
+ idleTimeoutMs: adapter.idleTimeoutMs,
119
+ };
120
+ return {
121
+ contextKey: stable(context),
122
+ key: stable({
123
+ ...context,
124
+ environmentValuesHash: valuesHash.digest("hex"),
125
+ schemaHash: yield* schemaHash(directory),
126
+ }),
127
+ };
128
+ });
124
129
  }
125
130
  function readinessChanged(entry, revision, ready) {
126
131
  return revision !== entry.readinessRevision || ready !== entry.ready;
@@ -152,11 +157,34 @@ function awaitCurrentReady(entry) {
152
157
  export function makeBrokerRegistry(configuration = {}) {
153
158
  const entries = new Set();
154
159
  const factories = new WeakMap();
160
+ const factoryMaps = new Set();
155
161
  const lock = Effect.runSync(Semaphore.make(1));
156
162
  const canonicalize = configuration.canonicalize ??
157
163
  ((directory) => Effect.tryPromise(() => realpath(directory)));
164
+ const schemaHash = configuration.schemaHash ??
165
+ ((directory) => Effect.tryPromise(() => contentHash(directory)));
158
166
  const maxEntries = configuration.maxEntries ?? 128;
159
167
  const now = configuration.now ?? (() => Date.now());
168
+ // Direct registry consumers historically received immediate teardown. The
169
+ // validated plugin adapter always supplies the public ten-minute default;
170
+ // retaining this fallback keeps injected/test registries backwards compatible.
171
+ const idleTimeoutMs = configuration.idleTimeoutMs ?? 0;
172
+ const log = (entry, event) => {
173
+ configuration.logger?.({
174
+ event,
175
+ scope: entry.options.owner === "key-ferry" ? "project" : "global",
176
+ directory: entry.options.projectDirectory,
177
+ keyHash: createHash("sha256").update(entry.key).digest("hex").slice(0, 12),
178
+ ...(entry.status?.pid === undefined ? {} : { pid: entry.status.pid }),
179
+ ...(entry.status
180
+ ?.proxySessionId === undefined
181
+ ? {}
182
+ : {
183
+ proxySessionId: entry.status
184
+ .proxySessionId,
185
+ }),
186
+ });
187
+ };
160
188
  const publish = (entry, status) => {
161
189
  entry.status = status;
162
190
  return PubSub.publish(entry.events, status);
@@ -183,17 +211,41 @@ export function makeBrokerRegistry(configuration = {}) {
183
211
  for (const [oldKey, oldEntry] of factoryMap) {
184
212
  if (oldEntry.contextKey !== contextKey || oldEntry.leases.size > 0)
185
213
  continue;
186
- yield* Scope.close(oldEntry.scope, Exit.void).pipe(Effect.ignore);
214
+ yield* disposeEntry(oldEntry);
187
215
  entries.delete(oldEntry);
188
216
  factoryMap.delete(oldKey);
189
217
  }
190
218
  });
219
+ const disposeEntry = (entry) => Effect.gen(function* () {
220
+ log(entry, "disposed");
221
+ if (entry.idleFiber) {
222
+ yield* Fiber.interrupt(entry.idleFiber);
223
+ entry.idleFiber = undefined;
224
+ }
225
+ if (entry.startup)
226
+ yield* Fiber.interrupt(entry.startup);
227
+ if (entry.manager) {
228
+ yield* entry.manager.dispose.pipe(Effect.catch(() => Effect.sync(() => {
229
+ // The manager may have left the ownership record in place. Drop
230
+ // the in-process entry, but make the startup reaper handoff
231
+ // explicit so cleanup is still observable without error text.
232
+ log(entry, "dispose-failed");
233
+ })));
234
+ }
235
+ yield* Scope.close(entry.scope, Exit.void).pipe(Effect.ignore);
236
+ entry.manager = undefined;
237
+ entry.disposed = true;
238
+ entry.idleUntil = undefined;
239
+ }).pipe(Effect.catch(() => Effect.void));
191
240
  const start = (entry) => {
192
241
  const operation = Effect.gen(function* () {
193
242
  const context = yield* Layer.build(entry.factory.layer(entry.options)).pipe(Effect.provideService(Scope.Scope, entry.scope));
194
243
  const manager = Context.get(context, ProjectKeyFerryManager);
195
244
  entry.manager = manager;
245
+ entry.status = yield* manager.status;
246
+ log(entry, "start");
196
247
  const result = yield* manager.ensureReady;
248
+ log(entry, "ready");
197
249
  yield* publish(entry, result.status);
198
250
  return result;
199
251
  });
@@ -261,10 +313,11 @@ export function makeBrokerRegistry(configuration = {}) {
261
313
  return yield* Deferred.await(deferred);
262
314
  });
263
315
  const getOrCreateEntry = (factory, options, directory) => Effect.gen(function* () {
264
- const identity = yield* Effect.promise(() => keyFor(directory, options));
316
+ const identity = yield* keyFor(directory, options, schemaHash).pipe(Effect.orDie);
265
317
  const key = identity.key;
266
318
  const factoryMap = factories.get(factory) ?? new Map();
267
319
  factories.set(factory, factoryMap);
320
+ factoryMaps.add(factoryMap);
268
321
  const existing = factoryMap.get(key);
269
322
  if (existing)
270
323
  return existing;
@@ -294,9 +347,7 @@ export function makeBrokerRegistry(configuration = {}) {
294
347
  const disposeLeaseEntry = (entry, factoryMap, close) => Effect.gen(function* () {
295
348
  if (entry.startup)
296
349
  yield* Fiber.interrupt(entry.startup);
297
- if (entry.manager)
298
- yield* entry.manager.dispose;
299
- yield* Scope.close(entry.scope, Exit.void);
350
+ yield* disposeEntry(entry);
300
351
  }).pipe(Effect.catch(() => Effect.void), Effect.flatMap(() => lock.withPermit(Effect.gen(function* () {
301
352
  if (entry.closing !== close)
302
353
  return;
@@ -309,13 +360,71 @@ export function makeBrokerRegistry(configuration = {}) {
309
360
  entry.closing = undefined;
310
361
  yield* Deferred.succeed(close, undefined);
311
362
  }))));
363
+ const scheduleIdle = (entry, factoryMap, directory, timeout) => Effect.gen(function* () {
364
+ entry.idleUntil = new Date(now() + timeout).toISOString();
365
+ log(entry, "idle-scheduled");
366
+ yield* publish(entry, {
367
+ ...(entry.status ?? { phase: "idle", projectDirectory: directory, generation: 0 }),
368
+ phase: "idle",
369
+ idleUntil: entry.idleUntil,
370
+ });
371
+ entry.idleFiber = yield* Effect.sleep(Duration.millis(timeout)).pipe(Effect.andThen(Effect.gen(function* () {
372
+ if (entry.leases.size === 0 && !entry.disposed) {
373
+ entry.disposed = true;
374
+ const deferred = yield* Deferred.make();
375
+ entry.closing = deferred;
376
+ yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
377
+ }
378
+ })), Effect.forkIn(entry.scope));
379
+ });
380
+ const closeImmediately = (entry, factoryMap, required) => Effect.gen(function* () {
381
+ if (!required)
382
+ return undefined;
383
+ entry.disposed = true;
384
+ const deferred = yield* Deferred.make();
385
+ entry.closing = deferred;
386
+ yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
387
+ return deferred;
388
+ });
389
+ const releaseLease = (entry, factoryMap, leaseID, directory, isReleased, markReleased) => lock.withPermit(Effect.gen(function* () {
390
+ if (isReleased())
391
+ return undefined;
392
+ markReleased();
393
+ log(entry, "release");
394
+ entry.leases.delete(leaseID);
395
+ return yield* releaseAfterDelete(entry, factoryMap, directory);
396
+ }));
397
+ const releaseAfterDelete = (entry, factoryMap, directory) => entry.leases.size !== 0 || entry.disposed
398
+ ? Effect.succeed(undefined)
399
+ : releaseLastLease(entry, factoryMap, directory);
400
+ const releaseLastLease = (entry, factoryMap, directory) => Effect.gen(function* () {
401
+ const timeout = Number(entry.options.adapter.idleTimeoutMs ?? idleTimeoutMs);
402
+ const immediate = yield* closeImmediately(entry, factoryMap, entry.failure !== undefined || timeout <= 0);
403
+ if (immediate)
404
+ return immediate;
405
+ yield* scheduleIdle(entry, factoryMap, directory, timeout);
406
+ return undefined;
407
+ });
408
+ const reuseIdle = (entry) => Effect.gen(function* () {
409
+ if (!entry.idleFiber)
410
+ return;
411
+ yield* Fiber.interrupt(entry.idleFiber);
412
+ entry.idleFiber = undefined;
413
+ entry.idleUntil = undefined;
414
+ entry.disposed = false;
415
+ if (entry.status?.phase === "idle")
416
+ yield* publish(entry, { ...entry.status, phase: "ready", idleUntil: undefined });
417
+ log(entry, "reused");
418
+ });
312
419
  const acquireAttempt = (factory, options) => lock.withPermit(Effect.gen(function* () {
313
420
  const directory = yield* canonicalize(options.projectDirectory).pipe(Effect.mapError(() => new TypeError("project directory does not exist")));
314
421
  const factoryMap = factories.get(factory) ?? new Map();
315
422
  factories.set(factory, factoryMap);
423
+ factoryMaps.add(factoryMap);
316
424
  const entry = yield* getOrCreateEntry(factory, options, directory);
317
425
  if (entry.closing)
318
426
  return { waiting: entry.closing };
427
+ yield* reuseIdle(entry);
319
428
  const leaseID = Symbol();
320
429
  entry.leases.add(leaseID);
321
430
  if (!entry.startup && !entry.failure) {
@@ -331,19 +440,7 @@ export function makeBrokerRegistry(configuration = {}) {
331
440
  return yield* operation(entry.manager);
332
441
  });
333
442
  const release = Effect.gen(function* () {
334
- const close = yield* lock.withPermit(Effect.gen(function* () {
335
- if (released)
336
- return undefined;
337
- released = true;
338
- entry.leases.delete(leaseID);
339
- if (entry.leases.size !== 0 || entry.disposed)
340
- return undefined;
341
- entry.disposed = true;
342
- const deferred = yield* Deferred.make();
343
- entry.closing = deferred;
344
- yield* disposeLeaseEntry(entry, factoryMap, deferred).pipe(Effect.forkDetach);
345
- return deferred;
346
- }));
443
+ const close = yield* releaseLease(entry, factoryMap, leaseID, directory, () => released, () => (released = true));
347
444
  if (close)
348
445
  yield* Deferred.await(close);
349
446
  });
@@ -390,7 +487,7 @@ export function makeBrokerRegistry(configuration = {}) {
390
487
  const target = yield* lock.withPermit(Effect.gen(function* () {
391
488
  const entry = factories
392
489
  .get(factory)
393
- ?.get((yield* Effect.promise(() => keyFor(directory, options))).key);
490
+ ?.get((yield* keyFor(directory, options, schemaHash)).key);
394
491
  if (entry?.retryBatch)
395
492
  return entry.retryBatch;
396
493
  if (entry) {
@@ -468,7 +565,7 @@ export function makeBrokerRegistry(configuration = {}) {
468
565
  const directory = yield* canonicalize(options.projectDirectory);
469
566
  const entry = factories
470
567
  .get(factory)
471
- ?.get((yield* Effect.promise(() => keyFor(directory, options))).key);
568
+ ?.get((yield* keyFor(directory, options, schemaHash)).key);
472
569
  if (!entry?.failure || (entry.nextRetryAt && now() < Date.parse(entry.nextRetryAt)))
473
570
  return undefined;
474
571
  entry.retryBatch = undefined;
@@ -476,7 +573,109 @@ export function makeBrokerRegistry(configuration = {}) {
476
573
  ? Effect.succeed(undefined)
477
574
  : Effect.fail(error)));
478
575
  });
479
- return { acquire, retry, retryIfDue };
576
+ let unregisterOwnershipLogger = () => undefined;
577
+ const shutdown = Effect.uninterruptible(Effect.gen(function* () {
578
+ removeHooksWhenConfigured(configuration.hostShutdownHooks);
579
+ const current = [...entries];
580
+ yield* Effect.forEach(current, (entry) => disposeEntry(entry), { concurrency: "unbounded" });
581
+ for (const map of factoryMaps)
582
+ map.clear();
583
+ entries.clear();
584
+ unregisterOwnershipLogger();
585
+ }));
586
+ installHooksWhenConfigured(configuration.hostShutdownHooks, shutdown);
587
+ unregisterOwnershipLogger = setOwnershipLifecycleLogger((event) => configuration.logger?.({
588
+ ...event,
589
+ scope: "project",
590
+ directory: "",
591
+ keyHash: event.keyHash,
592
+ }));
593
+ return { acquire, retry, retryIfDue, shutdown };
594
+ }
595
+ let hostHooks;
596
+ let hostShutdown;
597
+ function removeHooksWhenConfigured(enabled) {
598
+ if (enabled)
599
+ removeHostShutdownHooks();
600
+ }
601
+ function installHooksWhenConfigured(enabled, shutdown) {
602
+ if (enabled)
603
+ installHostShutdownHooks(shutdown);
604
+ }
605
+ function signalListener(name, onSigInt, onSigTerm) {
606
+ return name === "SIGINT" ? onSigInt : onSigTerm;
607
+ }
608
+ function reraiseSignal(signalProcess, name, listener) {
609
+ signalProcess.removeListener(name, listener);
610
+ signalProcess.kill(signalProcess.pid, name);
611
+ }
612
+ function finishSignalCleanup(signalProcess, name, listener, active) {
613
+ if (!active && signalProcess.listeners(name).length > 0)
614
+ return;
615
+ const others = signalProcess.listeners(name).filter((item) => item !== listener);
616
+ signalProcess.removeListener(name, listener);
617
+ if (others.length === 0)
618
+ signalProcess.kill(signalProcess.pid, name);
619
+ }
620
+ export function removeHostShutdownHooks() {
621
+ hostHooks?.();
622
+ hostHooks = undefined;
623
+ hostShutdown = undefined;
624
+ }
625
+ export function installHostShutdownHooks(shutdown, signalProcess = process, options = {}) {
626
+ if (hostHooks)
627
+ return;
628
+ hostShutdown = shutdown;
629
+ let active = true;
630
+ const beforeExit = () => {
631
+ if (active)
632
+ void Effect.runPromise(hostShutdown).catch(() => undefined);
633
+ };
634
+ let cleaning = false;
635
+ // Node and Bun suppress their default signal termination while a signal
636
+ // listener is installed. Cleanup is bounded; `exit` cannot await work and
637
+ // is covered by the startup ownership reaper instead.
638
+ const boundedTimer = (resolve) => {
639
+ const timer = setTimeout(resolve, options.cleanupTimeoutMs ?? 3_000);
640
+ timer.unref?.();
641
+ return timer;
642
+ };
643
+ const signal = (name) => {
644
+ if (!active)
645
+ return;
646
+ const listener = signalListener(name, onSigInt, onSigTerm);
647
+ if (cleaning) {
648
+ reraiseSignal(signalProcess, name, listener);
649
+ return;
650
+ }
651
+ cleaning = true;
652
+ let timer;
653
+ const timeout = new Promise((resolve) => {
654
+ timer = boundedTimer(resolve);
655
+ });
656
+ void Promise.race([Effect.runPromise(hostShutdown).catch(() => undefined), timeout]).finally(() => {
657
+ if (timer !== undefined)
658
+ clearTimeout(timer);
659
+ // shutdown() removes the hooks at its start, so do not let that normal
660
+ // cleanup path suppress the signal re-raise requested by this handler.
661
+ finishSignalCleanup(signalProcess, name, listener, active);
662
+ });
663
+ };
664
+ const onSigInt = () => signal("SIGINT");
665
+ const onSigTerm = () => signal("SIGTERM");
666
+ signalProcess.on("beforeExit", beforeExit);
667
+ signalProcess.on("SIGINT", onSigInt);
668
+ signalProcess.on("SIGTERM", onSigTerm);
669
+ hostHooks = () => {
670
+ active = false;
671
+ signalProcess.removeListener("beforeExit", beforeExit);
672
+ signalProcess.removeListener("SIGINT", onSigInt);
673
+ signalProcess.removeListener("SIGTERM", onSigTerm);
674
+ };
675
+ return hostHooks;
480
676
  }
481
- export const brokerRegistry = makeBrokerRegistry();
677
+ export const brokerRegistry = makeBrokerRegistry({
678
+ idleTimeoutMs: 600_000,
679
+ hostShutdownHooks: true,
680
+ });
482
681
  //# sourceMappingURL=broker-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"broker-registry.js","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,GACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,sBAAsB,EAMtB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAoBxB,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnD,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;AA0BzF,SAAS,YAAY,CAAC,KAAY;IAChC,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,SAAS;IACT,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,qBAAqB;CACtB,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,KAAc,EAAE,IAAoD;IACrF,IAAI,KAAK,YAAY,YAAY;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,IAAI,YAAY,CAAC;QACtB,IAAI;QACJ,OAAO,EAAE,oCAAoC;QAC7C,SAAS,EAAE,IAAI,KAAK,UAAU;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QACpC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aACxD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,OAAsC;IACvD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACzD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,OAAkC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IAC3D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgC;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;QAC5E,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;QAChE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe,CAAC,OAAsC;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+C,CAAC;AAE/E,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;aAC3E,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/C,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC,CAAC,CACH,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,SAAiB,EACjB,OAAsC;IAEtC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,GAAG,CAAC;YACT,GAAI,OAAO,CAAC,eAA4B;YACxC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzE,CAAC;KACH,CAAC,IAAI,EAAE,CAAC;IACT,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG;QACd,gBAAgB,EAAE,SAAS;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,eAA2B,CAAC,CAAC,CAAC,IAAI,EAAE;QACzE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC;IACF,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;QAC3B,GAAG,EAAE,MAAM,CAAC;YACV,GAAG,OAAO;YACV,qBAAqB,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC;SACzC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY,EAAE,QAAgB,EAAE,KAAqB;IAC7E,OAAO,QAAQ,KAAK,KAAK,CAAC,iBAAiB,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CACnB,KAAY,EACZ,QAAgB,EAChB,KAAqB,EACrB,OAAsC;IAEtC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QAC3F,OAAO,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBAAE,SAAS;YACvD,IAAI,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC;YAC5B,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,kBAAkB,CAAC,gBAAuC,EAAE;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAS,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,OAAO,EAA8B,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,YAAY,GAChB,aAAa,CAAC,YAAY;QAC1B,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,GAAG,CAAC;IACnD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,MAAkB,EAAE,EAAE;QACnD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,OAAqB,EAAE,EAAE;QAC5D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrF,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;QACpC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;QAChC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;QAC9B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAExF,MAAM,mBAAmB,GAAG,CAAC,UAA8B,EAAE,UAAkB,EAAE,EAAE,CACjF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;gBAAE,SAAS;YAC7E,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,CAAC,KAAY,EAA6C,EAAE;QACxE,MAAM,SAAS,GAAmD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACpF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAChD,CAAC;YACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YAC7D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YAC1C,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,CACnB,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,OAAO,CAAC,KAAK,EAAE;gBACpB,KAAK,EAAE,QAAQ;gBACf,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;gBAChD,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC;gBACzC,KAAK,EAAE,OAAO;gBACd,GAAG,QAAQ;aACZ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAC0C,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAY,EAA6C,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEL,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,MAAqD,EAAE,EAAE,CAC9F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC,IAAI,CAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACxB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACjD,CACF,EACD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CACjF,EACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CACH,EACD,MAAM,CAAC,UAAU,CAClB,CAAC;IAEJ,MAAM,aAAa,GAAG,CAAC,KAAY,EAA6C,EAAE,CAChF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,KAAK,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAA8B,CAAC;YAChE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC7B,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;gBACpB,KAAK,EAAE,UAAU;gBACjB,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;gBAChD,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC;aAC1C,CAAC,CAAC;YACH,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAQ,CAAC,YAAY,CAAC;gBAClD,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC5B,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/C,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;gBAC1B,OAAO,OAAO,CAAC,KAAK,EAAE;oBACpB,KAAK,EAAE,QAAQ;oBACf,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;oBAChD,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC;oBACzC,KAAK,EAAE,OAAO;oBACd,GAAG,QAAQ;iBACZ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAC3B,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEL,MAAM,gBAAgB,GAAG,CACvB,OAAyC,EACzC,OAAsC,EACtC,SAAiB,EACK,EAAE,CACxB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACzB,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAiB,CAAC,IAAI,IAAI,GAAG,EAAiB,CAAC;QAChF,SAAS,CAAC,GAAG,CAAC,OAAiB,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,UAAU;YAAE,OAAO,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;QAChE,MAAM,KAAK,GAAU;YACnB,GAAG;YACH,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,gBAAgB,EAAE,SAA8D;aACjF;YACD,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;YAC1B,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAa,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC1D,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAA8B;YACzD,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,iBAAiB,EAAE,CAAC;YACpB,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC,CAAC;QACF,KAAK,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5D,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEL,MAAM,iBAAiB,GAAG,CACxB,KAAY,EACZ,UAA8B,EAC9B,KAA8B,EAC9B,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAChD,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO;QACpC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CACH,CACF,CACF,CAAC;IAEJ,MAAM,cAAc,GAAG,CACrB,OAAyC,EACzC,OAAsC,EACtC,EAAE,CACF,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAClE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC,CACzE,CAAC;QACF,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAiB,CAAC,IAAI,IAAI,GAAG,EAAiB,CAAC;QAChF,SAAS,CAAC,GAAG,CAAC,OAAiB,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,aAAa,GAAG,CACpB,SAA6E,EACrD,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,QAAQ;gBAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,KAAM,CAAC,OAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACL,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,IAAI,QAAQ;oBAAE,OAAO,SAAS,CAAC;gBAC/B,QAAQ,GAAG,IAAI,CAAC;gBAChB,KAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,KAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAM,CAAC,QAAQ;oBAAE,OAAO,SAAS,CAAC;gBAClE,KAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAQ,CAAC;gBAC9C,KAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC/E,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CACH,CAAC;YACF,IAAI,KAAK;gBAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,IAAI,QAAQ;gBAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,KAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAgB;YACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CACjB,GAAG,EAAE,CACH,KAAM,CAAC,MAAM,IAAI;gBACf,KAAK,EAAE,UAAU;gBACjB,gBAAgB,EAAE,SAAgB;gBAClC,UAAU,EAAE,CAAC;aACd,CACJ;YACD,aAAa,EAAE,WAAW,CAAC,IAAI,CAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CACjE;YACR,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,WAAW,CAAC,IAAI,CAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAC/D;YACR,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YACtE,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC;YAClC,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACpF,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;gBACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAClB,GAAG,EAAE,CACH,KAAM,CAAC,MAAM,IAAI;oBACf,KAAK,EAAE,UAAU;oBACjB,gBAAgB,EAAE,SAAgB;oBAClC,UAAU,EAAE,CAAC;iBACd,CACJ;gBACD,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;aACzC,CAAC;YACF,OAAO;SACR,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH,CAAC;IAEJ,MAAM,OAAO,GAAG,CACd,OAAyC,EACzC,OAAsC,EACE,EAAE,CAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,MAAM,YAAY,GAAG,CACnB,OAA2C,EAC3C,OAAsC,EAOtC,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,KAAK,GAAG,SAAS;iBACpB,GAAG,CAAC,OAAiB,CAAC;gBACvB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvE,IAAI,KAAK,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC,UAAU,CAAC;YAC/C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO;oBAAE,OAAO,OAAO,CAAC;gBACjE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAA8B,CAAC;gBACjE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBACzB,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CACjC,MAAM,CAAC,WAAW,CAAC;oBACjB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;oBACtD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;iBAClD,CAAC;gBACF,0DAA0D;gBAC1D,+DAA+D;gBAC/D,6CAA6C;gBAC7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3B,MAAM,CAAC,UAAU,CAClB,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CACH,CAAC;QACF,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC9D,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,CACZ,OAA2C,EAC3C,OAAsC,EACG,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,uEAAuE;YACvE,sEAAsE;YACtE,oDAAoD;YACpD,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,CACjB,KAAwB,EAMxB,EAAE;QACF,IAAI,CAAC,KAAK;YACR,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,YAAY,CAAC;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,wBAAwB;gBACjC,SAAS,EAAE,KAAK;aACjB,CAAC,CACH,CAAC;QACJ,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO;YAChB,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,YAAY,CAAC;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,wBAAwB;gBACjC,SAAS,EAAE,KAAK;aACjB,CAAC,CACH,CAAC;QACJ,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,uEAAuE;YACvE,oEAAoE;YACpE,sEAAsE;YACtE,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/D,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC1B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC1B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAA8B,CAAC;YACjE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5D,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CACjB,OAA2C,EAC3C,OAAsC,EACe,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS;aACpB,GAAG,CAAC,OAAiB,CAAC;YACvB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACjF,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACrB,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YACzD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACvB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"broker-registry.js","sourceRoot":"","sources":["../src/broker-registry.ts"],"names":[],"mappings":"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"}