@jait/gateway 0.1.84 → 0.1.86

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.
@@ -19,7 +19,8 @@
19
19
  * GET /api/providers — list available providers
20
20
  */
21
21
  import { requireAuth } from "../security/http-auth.js";
22
- import { RemoteCliProvider } from "../providers/remote-cli-provider.js";
22
+ import { WorkspaceSync } from "../services/workspace-sync.js";
23
+ import { resolveRemoteNodeForSession } from "../tools/remote-executor.js";
23
24
  import { GitService, cleanupWorktreeRemoteAware } from "../services/git.js";
24
25
  import { existsSync } from "node:fs";
25
26
  import { generateTitleViaTurn, generateTitleViaApi, normalizeGeneratedThreadTitle, } from "../services/thread-title.js";
@@ -29,9 +30,8 @@ export function registerThreadRoutes(app, config, deps) {
29
30
  const repoService = deps.repoService;
30
31
  // Track active onEvent unsubscribe functions per thread so we can clean up
31
32
  const threadUnsubs = new Map();
32
- // Track RemoteCliProvider instances per thread so /send, /stop, /interrupt
33
- // can access them (they're not in the global providerRegistry)
34
- const remoteProviders = new Map();
33
+ // Track WorkspaceSync instances per thread for push-back after turns
34
+ const threadWorkspaceSyncs = new Map();
35
35
  // ── Helpers ──────────────────────────────────────────────────────
36
36
  /** Broadcast a thread event over WS to all clients */
37
37
  function broadcastThreadEvent(threadId, event, data) {
@@ -55,29 +55,6 @@ export function registerThreadRoutes(app, config, deps) {
55
55
  function isThreadSessionEvent(event, sessionId) {
56
56
  return event.sessionId === sessionId;
57
57
  }
58
- /**
59
- * Find a connected remote node that can run a provider for a given path.
60
- * Matches the path's platform format (e.g. Windows drive letter) to a
61
- * connected FsNode's platform, and checks that the node has the provider.
62
- */
63
- function findRemoteNodeForPath(wsPlane, dirPath, provId) {
64
- // Detect path platform: drive letter (C:\) or backslash → windows
65
- const isWindowsPath = /^[A-Za-z]:[\\\/]/.test(dirPath);
66
- const expectedPlatform = isWindowsPath ? "windows" : null;
67
- for (const node of wsPlane.getFsNodes()) {
68
- if (node.isGateway)
69
- continue;
70
- // Match platform if we can detect it from the path
71
- if (expectedPlatform && node.platform !== expectedPlatform)
72
- continue;
73
- // If we can't detect platform from path, accept any remote node
74
- // Check that the node has the requested provider
75
- if (!node.providers?.includes(provId === "claude-code" ? "claude-code" : provId))
76
- continue;
77
- return node;
78
- }
79
- return null;
80
- }
81
58
  // ── CRUD Routes ──────────────────────────────────────────────────
82
59
  /** List threads (optionally filtered by sessionId) */
83
60
  app.get("/api/threads", async (request, reply) => {
@@ -175,7 +152,11 @@ export function registerThreadRoutes(app, config, deps) {
175
152
  unsub();
176
153
  threadUnsubs.delete(id);
177
154
  }
178
- remoteProviders.delete(id);
155
+ const sync = threadWorkspaceSyncs.get(id);
156
+ if (sync) {
157
+ sync.cleanup().catch(() => { });
158
+ threadWorkspaceSyncs.delete(id);
159
+ }
179
160
  }
180
161
  }
181
162
  broadcastThreadEvent(id, "updated", { thread });
@@ -204,7 +185,11 @@ export function registerThreadRoutes(app, config, deps) {
204
185
  cleanupWorktreeRemoteAware(existing.workingDirectory, ws).catch(() => { });
205
186
  }
206
187
  threadService.delete(id);
207
- remoteProviders.delete(id);
188
+ const sync = threadWorkspaceSyncs.get(id);
189
+ if (sync) {
190
+ sync.cleanup().catch(() => { });
191
+ threadWorkspaceSyncs.delete(id);
192
+ }
208
193
  broadcastThreadEvent(id, "deleted", {});
209
194
  return reply.status(204).send();
210
195
  });
@@ -227,63 +212,68 @@ export function registerThreadRoutes(app, config, deps) {
227
212
  // different device/OS (e.g. Windows path on a Linux gateway).
228
213
  let workingDirectory = thread.workingDirectory ?? process.cwd();
229
214
  const pathExistsLocally = existsSync(workingDirectory);
230
- // Determine if we need a remote provider:
231
- // If the path doesn't exist locally, look for a connected remote node
232
- // that matches the path's platform and has the requested provider.
233
- let provider = providerRegistry.get(providerId);
234
- let isRemote = false;
235
- if (!pathExistsLocally && ws && providerId !== "jait") {
236
- const remoteNode = findRemoteNodeForPath(ws, workingDirectory, providerId);
237
- if (remoteNode) {
238
- provider = new RemoteCliProvider(ws, remoteNode.id, providerId);
239
- isRemote = true;
240
- }
241
- }
215
+ // CLI providers always run on the gateway. If the path doesn't
216
+ // exist locally, try workspace sync or clone-to-gateway.
217
+ const provider = providerRegistry.get(providerId);
242
218
  if (!provider) {
243
219
  return reply.status(400).send({ error: `Provider '${providerId}' not registered` });
244
220
  }
245
- // Fall back to cwd only for local providers with non-existent paths
246
- if (!pathExistsLocally && !isRemote) {
247
- // Check if the caller wants to clone the repo to the gateway
248
- const cloneToGateway = body["cloneToGateway"] === true;
249
- if (!cloneToGateway) {
250
- // Return a structured error so the frontend can offer to clone
251
- return reply.status(422).send({
252
- error: "The repo path is not accessible on this gateway and no desktop app is connected. You can clone the repo to the gateway to proceed.",
253
- code: "NODE_OFFLINE",
254
- workingDirectory,
255
- threadId: id,
256
- });
257
- }
258
- // Clone-to-gateway: find the matching repo for its GitHub URL
259
- const matchingRepo = repoService
260
- ? (repoService.list().find((r) => workingDirectory.startsWith(r.localPath) || workingDirectory.includes(r.name)) ?? null)
261
- : null;
262
- const repoUrl = (typeof body["repoUrl"] === "string" ? body["repoUrl"] : null) ??
263
- matchingRepo?.["githubUrl"];
264
- if (!repoUrl) {
265
- return reply.status(400).send({
266
- error: "Cannot clone: no GitHub URL available. Register the repo with a GitHub URL first.",
267
- code: "NO_REPO_URL",
268
- });
269
- }
270
- const repoName = matchingRepo?.name ?? "repo";
271
- const defaultBranch = matchingRepo?.defaultBranch ?? "main";
272
- const localGit = new GitService();
273
- try {
274
- // Clone or update the repo on the gateway
275
- const clonePath = await localGit.cloneOrFetch(repoUrl, repoName, defaultBranch);
276
- // Create a worktree for this thread's branch
277
- const branch = thread.branch ?? `jait/${id.slice(-8)}`;
278
- const wt = await localGit.createWorktree(clonePath, defaultBranch, branch);
279
- workingDirectory = wt.path;
280
- // Update the thread record with the gateway-local working directory
281
- threadService.update(id, { workingDirectory, branch });
221
+ if (!pathExistsLocally) {
222
+ // Option A: Sync workspace from a connected remote node
223
+ let synced = false;
224
+ if (ws && providerId !== "jait") {
225
+ const nodeId = resolveRemoteNodeForSession(ws, workingDirectory);
226
+ if (nodeId) {
227
+ const sync = new WorkspaceSync({ ws, nodeId, remotePath: workingDirectory, sessionId: id });
228
+ try {
229
+ await sync.pull();
230
+ workingDirectory = sync.localDir;
231
+ threadWorkspaceSyncs.set(id, sync);
232
+ threadService.update(id, { workingDirectory });
233
+ synced = true;
234
+ }
235
+ catch (err) {
236
+ console.warn(`[threads] workspace sync failed, falling back to clone: ${err}`);
237
+ }
238
+ }
282
239
  }
283
- catch (err) {
284
- return reply.status(500).send({
285
- error: `Failed to clone repo to gateway: ${err instanceof Error ? err.message : String(err)}`,
286
- });
240
+ // Option B: Clone the repo to the gateway from GitHub
241
+ if (!synced) {
242
+ const cloneToGateway = body["cloneToGateway"] === true;
243
+ if (!cloneToGateway) {
244
+ return reply.status(422).send({
245
+ error: "The repo path is not accessible on this gateway and no desktop app is connected. You can clone the repo to the gateway to proceed.",
246
+ code: "NODE_OFFLINE",
247
+ workingDirectory,
248
+ threadId: id,
249
+ });
250
+ }
251
+ const matchingRepo = repoService
252
+ ? (repoService.list().find((r) => workingDirectory.startsWith(r.localPath) || workingDirectory.includes(r.name)) ?? null)
253
+ : null;
254
+ const repoUrl = (typeof body["repoUrl"] === "string" ? body["repoUrl"] : null) ??
255
+ matchingRepo?.["githubUrl"];
256
+ if (!repoUrl) {
257
+ return reply.status(400).send({
258
+ error: "Cannot clone: no GitHub URL available. Register the repo with a GitHub URL first.",
259
+ code: "NO_REPO_URL",
260
+ });
261
+ }
262
+ const repoName = matchingRepo?.name ?? "repo";
263
+ const defaultBranch = matchingRepo?.defaultBranch ?? "main";
264
+ const localGit = new GitService();
265
+ try {
266
+ const clonePath = await localGit.cloneOrFetch(repoUrl, repoName, defaultBranch);
267
+ const branch = thread.branch ?? `jait/${id.slice(-8)}`;
268
+ const wt = await localGit.createWorktree(clonePath, defaultBranch, branch);
269
+ workingDirectory = wt.path;
270
+ threadService.update(id, { workingDirectory, branch });
271
+ }
272
+ catch (err) {
273
+ return reply.status(500).send({
274
+ error: `Failed to clone repo to gateway: ${err instanceof Error ? err.message : String(err)}`,
275
+ });
276
+ }
287
277
  }
288
278
  }
289
279
  // Check availability
@@ -293,12 +283,8 @@ export function registerThreadRoutes(app, config, deps) {
293
283
  error: `Provider '${providerId}' is not available: ${provider.info.unavailableReason}`,
294
284
  });
295
285
  }
296
- // Build MCP server references so CLI agents can call Jait's tools
297
- const mcpServers = isRemote ? [] : [providerRegistry.buildJaitMcpServerRef(config)];
298
- // Store remote provider for /send, /stop, /interrupt access
299
- if (isRemote && provider instanceof RemoteCliProvider) {
300
- remoteProviders.set(id, provider);
301
- }
286
+ // CLI providers run locally MCP always available
287
+ const mcpServers = [providerRegistry.buildJaitMcpServerRef(config)];
302
288
  try {
303
289
  const session = await provider.startSession({
304
290
  threadId: id,
@@ -344,7 +330,7 @@ export function registerThreadRoutes(app, config, deps) {
344
330
  broadcastThreadStatus(id, "completed");
345
331
  unsubscribe();
346
332
  threadUnsubs.delete(id);
347
- // Keep remoteProviders entry — the thread can still be resumed
333
+ // Keep workspace sync entry — the thread can still be resumed
348
334
  // with a new session (e.g. to fix push failures). Cleaned up on
349
335
  // PR merge/close or thread deletion.
350
336
  }
@@ -353,7 +339,11 @@ export function registerThreadRoutes(app, config, deps) {
353
339
  broadcastThreadStatus(id, "error", event.error);
354
340
  unsubscribe();
355
341
  threadUnsubs.delete(id);
356
- remoteProviders.delete(id);
342
+ const errSync = threadWorkspaceSyncs.get(id);
343
+ if (errSync) {
344
+ errSync.cleanup().catch(() => { });
345
+ threadWorkspaceSyncs.delete(id);
346
+ }
357
347
  }
358
348
  else if (event.type === "turn.started") {
359
349
  // A new turn began — make sure the thread is marked running.
@@ -371,6 +361,13 @@ export function registerThreadRoutes(app, config, deps) {
371
361
  // providerSessionId to decide between /send and /start.
372
362
  threadService.update(id, { status: "completed", error: null, completedAt: new Date().toISOString() });
373
363
  broadcastThreadStatus(id, "completed");
364
+ // Push changed files back to the remote node (if workspace was synced)
365
+ const turnSync = threadWorkspaceSyncs.get(id);
366
+ if (turnSync) {
367
+ turnSync.push().catch((err) => {
368
+ console.warn(`[threads] workspace push-back failed for ${id}: ${err}`);
369
+ });
370
+ }
374
371
  }
375
372
  });
376
373
  threadUnsubs.set(id, unsubscribe);
@@ -488,7 +485,7 @@ export function registerThreadRoutes(app, config, deps) {
488
485
  if (!thread.providerSessionId) {
489
486
  return reply.status(409).send({ error: "Thread has no active session — use /start instead" });
490
487
  }
491
- const provider = remoteProviders.get(id) ?? providerRegistry.get(thread.providerId);
488
+ const provider = providerRegistry.get(thread.providerId);
492
489
  if (!provider)
493
490
  return reply.status(400).send({ error: `Provider '${thread.providerId}' not found` });
494
491
  // Persist user message BEFORE sendTurn so it survives provider errors
@@ -514,14 +511,18 @@ export function registerThreadRoutes(app, config, deps) {
514
511
  if (!thread)
515
512
  return reply.status(404).send({ error: "Thread not found" });
516
513
  if (thread.providerSessionId) {
517
- const provider = remoteProviders.get(id) ?? providerRegistry.get(thread.providerId);
514
+ const provider = providerRegistry.get(thread.providerId);
518
515
  if (provider) {
519
516
  try {
520
517
  await provider.stopSession(thread.providerSessionId);
521
518
  }
522
519
  catch { /* best effort */ }
523
520
  }
524
- remoteProviders.delete(id);
521
+ const stopSync = threadWorkspaceSyncs.get(id);
522
+ if (stopSync) {
523
+ stopSync.push().catch(() => { });
524
+ threadWorkspaceSyncs.delete(id);
525
+ }
525
526
  }
526
527
  threadService.markInterrupted(id);
527
528
  broadcastThreadStatus(id, "interrupted");
@@ -539,7 +540,7 @@ export function registerThreadRoutes(app, config, deps) {
539
540
  if (!thread.providerSessionId) {
540
541
  return reply.status(409).send({ error: "Thread has no active session" });
541
542
  }
542
- const provider = remoteProviders.get(id) ?? providerRegistry.get(thread.providerId);
543
+ const provider = providerRegistry.get(thread.providerId);
543
544
  if (!provider)
544
545
  return reply.status(400).send({ error: `Provider '${thread.providerId}' not found` });
545
546
  await provider.interruptTurn(thread.providerSessionId);
@@ -636,7 +637,7 @@ export function registerThreadRoutes(app, config, deps) {
636
637
  broadcastThreadEvent(thread.id, "activity", { activity });
637
638
  // Try to resume the thread with the error message
638
639
  let resumed = false;
639
- const provider = remoteProviders.get(id) ?? providerRegistry.get(thread.providerId);
640
+ const provider = providerRegistry.get(thread.providerId);
640
641
  if (provider) {
641
642
  // 1) Try sending a turn on the existing session
642
643
  if (thread.providerSessionId) {
@@ -655,9 +656,7 @@ export function registerThreadRoutes(app, config, deps) {
655
656
  if (!resumed) {
656
657
  try {
657
658
  const wdir = thread.workingDirectory ?? process.cwd();
658
- const mcpServers = !(provider instanceof RemoteCliProvider)
659
- ? [providerRegistry.buildJaitMcpServerRef(config)]
660
- : [];
659
+ const mcpServers = [providerRegistry.buildJaitMcpServerRef(config)];
661
660
  const newSession = await provider.startSession({
662
661
  threadId: id,
663
662
  workingDirectory: wdir,
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAA6C,MAAM,oBAAoB,CAAC;AAGvH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC;AAqBrC,MAAM,UAAU,oBAAoB,CAClC,GAAoB,EACpB,MAAiB,EACjB,IAAqB;IAErB,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAErC,2EAA2E;IAC3E,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEnD,2EAA2E;IAC3E,+DAA+D;IAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE7D,oEAAoE;IAEpE,sDAAsD;IACtD,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,KAAa,EACb,IAAa;QAEb,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,YAAY,CAAC;YACd,IAAI,EAAE,UAAU,KAAK,EAAiB;YACtC,SAAS,EAAE,EAAE,EAAE,2BAA2B;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,IAA+B,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,MAAyD,EACzD,KAAc;QAEd,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACvC,MAAM;YACN,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,SAAS,oBAAoB,CAAC,KAAoB,EAAE,SAAiB;QACnE,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,SAAS,qBAAqB,CAC5B,OAAuB,EACvB,OAAe,EACf,MAAkB;QAElB,kEAAkE;QAClE,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS;gBAAE,SAAS;YAC7B,mDAAmD;YACnD,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,SAAS;YACrE,gEAAgE;YAChE,iDAAiD;YACjD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC3F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IAEpE,sDAAsD;IACtD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAA+B,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,SAAS;YACvB,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC;YACxC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAA+B,CAAC;QACrD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,SAAS,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;YAChF,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;YACvE,UAAU,EAAG,IAAI,CAAC,YAAY,CAAgB,IAAI,MAAM;YACxD,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa;YAChF,gBAAgB,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;YACrG,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CAAC;QACH,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAA+B,CAAC;QACrD,MAAM,OAAO,GACX,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ;YACxF,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACjB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,SAAS,CAAC;QAClB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE;YACtC,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACpE,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACpI,gBAAgB,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS;YACrG,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,KAAK,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACpG,QAAQ,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAChH,OAAO,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC5G,OAAO;SACR,CAAC,CAAC;QACH,IACE,MAAM;YACN,OAAO,KAAK,SAAS;YACrB,OAAO,KAAK,QAAQ,CAAC,OAAO,EAC5B,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;YACrD,MAAM,OAAO,GACX,OAAO,KAAK,MAAM;gBAChB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB;gBACnE,CAAC,CAAC,OAAO,KAAK,QAAQ;oBACpB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB;oBACjE,CAAC,CAAC,OAAO,KAAK,QAAQ;wBACpB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB;wBACjE,CAAC,CAAC,IAAI,CAAC;YAEf,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;oBAClE,MAAM,EAAE,kBAAkB;oBAC1B,eAAe,EAAE,QAAQ,CAAC,OAAO;oBACjC,OAAO;oBACP,KAAK;iBACN,CAAC,CAAC;gBACH,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,sEAAsE;YACtE,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACjD,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,KAAK,EAAE,CAAC;oBAAC,KAAK,EAAE,CAAC;oBAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAChD,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE5E,iCAAiC;QACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAwB,CAAC,CAAC;gBACzE,IAAI,QAAQ;oBAAE,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QAED,kEAAkE;QAClE,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC9B,0BAA0B,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,oEAAoE;IAEpE,6CAA6C;IAC7C,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAI,OAAO,CAAC,IAAgC,IAAI,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAwB,CAAC;QAEnD,8DAA8D;QAC9D,8DAA8D;QAC9D,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChE,MAAM,iBAAiB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAEvD,0CAA0C;QAC1C,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,iBAAiB,IAAI,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBAChE,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,UAAU,kBAAkB,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;YAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,+DAA+D;gBAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,oIAAoI;oBAC3I,IAAI,EAAE,cAAc;oBACpB,gBAAgB;oBAChB,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;YACL,CAAC;YAED,8DAA8D;YAC9D,MAAM,YAAY,GAAG,WAAW;gBAC9B,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9E,IAAI,IAAI,CAAC;gBACV,CAAC,CAAC,IAAI,CAAC;YAET,MAAM,OAAO,GACX,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,YAA+C,EAAE,CAAC,WAAW,CAAkB,CAAC;YAEnF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,mFAAmF;oBAC1F,IAAI,EAAE,aAAa;iBACpB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,IAAI,MAAM,CAAC;YAC9C,MAAM,aAAa,GAAG,YAAY,EAAE,aAAa,IAAI,MAAM,CAAC;YAC5D,MAAM,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;YAElC,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAEhF,6CAA6C;gBAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;gBAC3E,gBAAgB,GAAG,EAAE,CAAC,IAAI,CAAC;gBAE3B,oEAAoE;gBACpE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAC9F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,aAAa,UAAU,uBAAuB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE;aACvF,CAAC,CAAC;QACL,CAAC;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpF,4DAA4D;QAC5D,IAAI,QAAQ,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;YACtD,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;gBAC1C,QAAQ,EAAE,EAAE;gBACZ,gBAAgB;gBAChB,IAAI,EAAG,MAAM,CAAC,WAA4C,IAAI,aAAa;gBAC3E,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;gBAChC,UAAU;aACX,CAAC,CAAC;YAEH,2EAA2E;YAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,EAAE,CAAC;gBACZ,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAED,kEAAkE;YAClE,oEAAoE;YACpE,oEAAoE;YACpE,8BAA8B;YAC9B,IAAI,uBAAuB,GAAG,CAAC,CAAC;YAEhC,4CAA4C;YAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAoB,EAAE,EAAE;gBAC5D,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBAED,oEAAoE;gBACpE,IAAI,uBAAuB,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;wBACpC,uBAAuB,EAAE,CAAC;wBAC1B,OAAO;oBACT,CAAC;oBACD,4EAA4E;oBAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBAClC,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC3D,IAAI,QAAQ,EAAE,CAAC;oBACb,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAED,kCAAkC;gBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oBACvC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAChC,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;oBACvC,WAAW,EAAE,CAAC;oBACd,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxB,+DAA+D;oBAC/D,gEAAgE;oBAChE,qCAAqC;gBACvC,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC1C,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACzC,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBAChD,WAAW,EAAE,CAAC;oBACd,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACzC,6DAA6D;oBAC7D,iEAAiE;oBACjE,mEAAmE;oBACnE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wBACpC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC7D,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAC3C,mEAAmE;oBACnE,4DAA4D;oBAC5D,wDAAwD;oBACxD,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBACtG,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAElC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1C,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAErC,mCAAmC;YACnC,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACrG,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrG,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5D,CAAC,CAAE,IAAI,CAAC,iBAAiB,CAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,OAAO,EAAE,CAAC;oBACnD,MAAM,IAAI,GAAG,OAAQ,KAAiC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC;oBACpI,MAAM,IAAI,GAAG,OAAQ,KAAiC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC;oBACpI,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,CAAC,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,OAAO,IAAI,EAAE,CAAC;YAE9G,4EAA4E;YAC5E,oEAAoE;YACpE,uEAAuE;YACvE,sCAAsC;YACtC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE1C,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,yDAAyD;oBACzD,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;wBACrB,uBAAuB,GAAG,CAAC,CAAC;wBAC5B,IAAI,CAAC;4BACH,IAAI,cAAsB,CAAC;4BAC3B,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;gCAC3D,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gCACxE,cAAc,GAAG,6BAA6B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC1D,CAAC;iCAAM,CAAC;gCACN,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gCACzE,cAAc,GAAG,MAAM,mBAAmB,CAAC;oCACzC,IAAI,EAAE,SAAS;oCACf,MAAM;oCACN,OAAO;oCACP,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;iCACjC,CAAC,CAAC;4BACL,CAAC;4BACD,IAAI,cAAc,EAAE,CAAC;gCACnB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE;oCAC5C,KAAK,EAAE,GAAG,WAAW,GAAG,cAAc,EAAE,CAAC,IAAI,EAAE;iCAChD,CAAC,CAAC;gCACH,IAAI,YAAY;oCAAE,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;4BAClF,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,wDAAwD;wBAC1D,CAAC;oBACH,CAAC;oBAED,0DAA0D;oBAC1D,IAAI,OAAO,EAAE,CAAC;wBACZ,+DAA+D;wBAC/D,IAAI,WAAW,GAAG,OAAO,CAAC;wBAC1B,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAAC;4BACpC,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gCACxC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAClC,CAAC;4BACF,IAAI,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;gCACnC,WAAW,GAAG,0BAA0B,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,OAAO,EAAE,CAAC;4BAC/G,CAAC;wBACH,CAAC;wBAED,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;4BACvG,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,cAAc,IAAI,OAAO;4BAClC,WAAW,EAAE,OAAO;4BACpB,eAAe;yBAChB,CAAC,CAAC;wBACH,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;wBACjE,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;oBACtC,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAA+B,CAAC;QACrD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QACrG,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACrG,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC,CAAE,IAAI,CAAC,iBAAiB,CAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,OAAQ,KAAiC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpI,MAAM,IAAI,GAAG,OAAQ,KAAiC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpI,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAwB,CAAC,CAAC;QAClG,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,MAAM,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;QAErG,sEAAsE;QACtE,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACvG,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc,IAAI,OAAO;YAClC,WAAW,EAAE,OAAO;YACpB,eAAe;SAChB,CAAC,CAAC;QACH,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAEjE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE1E,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAwB,CAAC,CAAC;YAClG,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACvD,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAClC,qBAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAwB,CAAC,CAAC;QAClG,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,MAAM,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;QAErG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAA+B,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC;QAE5C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAwB,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,MAAM,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;QAErG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAI,OAAO,CAAC,IAAgC,IAAI,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,0DAA0D;aAClE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,aAAa,GACjB,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,QAAQ;YACvC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS;YAC3C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9F,IAAI,CAAC;YACH,IAAI,MAAqB,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAEpC,qDAAqD;YACrD,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;gBACvB,2CAA2C;gBAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnD,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1D,IAAI,YAAY,GAAkB,IAAI,CAAC;gBACvC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,SAAS;wBAAE,SAAS;oBAC7B,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB;wBAAE,SAAS;oBACrE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;oBACvB,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8DAA8D,EAAE,CAAC,CAAC;gBAC3G,CAAC;gBACD,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,CAAgB,YAAY,EAAE,oBAAoB,EAAE;oBAC7E,GAAG;oBACH,MAAM,EAAE,gBAAgB;oBACxB,aAAa;oBACb,aAAa,EAAE,KAAK;oBACpB,UAAU;oBACV,WAAW;iBACZ,EAAE,OAAO,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CACxC,GAAG,EACH,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,UAAU,EACV,WAAW,CACZ,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAEvD,uEAAuE;YACvE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC;gBAC5D,MAAM,aAAa,GAAG;oBACpB,gDAAgD,SAAS,IAAI;oBAC7D,gGAAgG;oBAChG,4EAA4E;iBAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEb,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CACxC,MAAM,CAAC,EAAE,EACT,UAAU,EACV,gBAAgB,SAAS,EAAE,EAC3B,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CACpD,CAAC;gBACF,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAE1D,kDAAkD;gBAClD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAwB,CAAC,CAAC;gBAClG,IAAI,QAAQ,EAAE,CAAC;oBACb,gDAAgD;oBAChD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BACH,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;4BACjE,iEAAiE;4BACjE,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;4BACrI,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;4BACjE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC7D,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;4BACrC,OAAO,GAAG,IAAI,CAAC;wBACjB,CAAC;wBAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;oBAC/D,CAAC;oBAED,mEAAmE;oBACnE,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,IAAI,CAAC;4BACH,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;4BACtD,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,YAAY,iBAAiB,CAAC;gCACzD,CAAC,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gCAClD,CAAC,CAAC,EAAE,CAAC;4BACP,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;gCAC7C,QAAQ,EAAE,EAAE;gCACZ,gBAAgB,EAAE,IAAI;gCACtB,IAAI,EAAG,MAAM,CAAC,WAA4C,IAAI,aAAa;gCAC3E,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;gCAChC,UAAU;6BACX,CAAC,CAAC;4BAEH,4CAA4C;4BAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BACvC,IAAI,SAAS,EAAE,CAAC;gCAAC,SAAS,EAAE,CAAC;gCAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BAAC,CAAC;4BAExD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAkB,EAAE,EAAE;gCACpD,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;oCAAE,OAAO;gCACtD,MAAM,GAAG,GAAG,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gCACpD,IAAI,GAAG;oCAAE,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;gCAE7E,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;oCACrC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oCAChC,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;oCACvC,KAAK,EAAE,CAAC;oCAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gCACnC,CAAC;qCAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oCACxC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oCACvC,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oCAC9C,KAAK,EAAE,CAAC;oCAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gCACnC,CAAC;qCAAM,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oCACvC,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oCACtC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;wCACpC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC7D,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oCACvC,CAAC;gCACH,CAAC;qCAAM,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oCACzC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oCACtG,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gCACzC,CAAC;4BACH,CAAC,CAAC,CAAC;4BACH,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;4BAE5B,yDAAyD;4BACzD,IAAI,CAAC;gCACH,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gCACtD,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gCAC7C,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gCACrC,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;gCACrI,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gCACjE,OAAO,GAAG,IAAI,CAAC;4BACjB,CAAC;4BAAC,MAAM,CAAC;gCACP,4CAA4C;gCAC5C,KAAK,EAAE,CAAC;gCAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BACnC,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;gBAED,wEAAwE;gBACxE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE;wBACvB,MAAM,EAAE,WAAW;wBACnB,KAAK,EAAE,4FAA4F;wBACnG,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACtC,CAAC,CAAC;oBACH,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC;gBAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,KAAK,EAAE,gBAAgB,SAAS,EAAE;oBAClC,UAAU,EAAE,IAAI;oBAChB,OAAO;oBACP,MAAM;oBACN,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACpD,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS;gBACvC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,SAAS;gBACjC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,SAAS;gBACvC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,SAAS;gBACrC,OAAO,EACL,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,iBAAiB;oBACtE,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;YAEH,IAAI,aAAa,EAAE,CAAC;gBAClB,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CACxC,MAAM,CAAC,EAAE,EACT,UAAU,EACV,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,KAAK,EAAE,EAChF,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAC5C,CAAC;gBACF,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG;oBACpB,CAAC,CAAC,uBAAuB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;oBACxC,CAAC,CAAC,KAAK;wBACL,CAAC,CAAC,6BAA6B,KAAK,EAAE;wBACtC,CAAC,CAAC,8DAA8D;gBACpE,KAAK,EAAE,KAAK,IAAI,IAAI;gBACpB,MAAM;gBACN,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;aAC5E,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oEAAoE;IAEpE,kCAAkC;IAClC,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAA+B,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GACT,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;YAC9C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,oEAAoE;IAEpE,gDAAgD;IAChD,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC1C,iCAAiC;QACjC,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;QAEF,+DAA+D;QAC/D,MAAM,eAAe,GAAkF,EAAE,CAAC;QAC1G,IAAI,EAAE,EAAE,CAAC;YACP,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,SAAS;oBAAE,SAAS;gBAC7B,eAAe,CAAC,IAAI,CAAC;oBACnB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;gBACjB,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;gBAC/B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;gBAC3B,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBAC3C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;YACH,eAAe;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,GAAG,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Workspace Sync — pulls a remote workspace to a local temp directory
3
+ * and pushes changed files back after a CLI provider (Codex/Claude) turn.
4
+ *
5
+ * This solves the fundamental problem: CLI providers operate directly on
6
+ * the filesystem (not through Jait tools), so the workspace must exist
7
+ * locally on the gateway. This service transparently mirrors a remote
8
+ * node's workspace so CLI providers see a real local directory.
9
+ *
10
+ * Flow:
11
+ * 1. pull() — enumerate & download files from the remote node
12
+ * 2. Codex/Claude runs against the local mirror
13
+ * 3. push() — detect changed files and upload them back
14
+ * 4. cleanup() — remove the local mirror when done
15
+ */
16
+ import type { WsControlPlane } from "../ws.js";
17
+ export interface WorkspaceSyncOptions {
18
+ ws: WsControlPlane;
19
+ nodeId: string;
20
+ remotePath: string;
21
+ sessionId: string;
22
+ }
23
+ export declare class WorkspaceSync {
24
+ private ws;
25
+ private nodeId;
26
+ private remotePath;
27
+ private localPath;
28
+ private snapshot;
29
+ private pulled;
30
+ constructor(options: WorkspaceSyncOptions);
31
+ /** The local directory path CLI providers should use as cwd */
32
+ get localDir(): string;
33
+ /** Whether the workspace has been pulled yet */
34
+ get isPulled(): boolean;
35
+ /**
36
+ * Pull the workspace files from the remote node to the local mirror.
37
+ * Recursively enumerates and downloads files, skipping excluded patterns.
38
+ */
39
+ pull(): Promise<{
40
+ fileCount: number;
41
+ totalSize: number;
42
+ }>;
43
+ /**
44
+ * Detect which files changed locally and push them back to the remote node.
45
+ * Also handles new files and deleted files.
46
+ */
47
+ push(): Promise<{
48
+ pushed: number;
49
+ deleted: number;
50
+ }>;
51
+ /**
52
+ * Clean up the local mirror directory.
53
+ */
54
+ cleanup(): Promise<void>;
55
+ }
56
+ //# sourceMappingURL=workspace-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-sync.d.ts","sourceRoot":"","sources":["../../src/services/workspace-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAuC/C,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,cAAc,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,oBAAoB;IAuBzC,+DAA+D;IAC/D,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gDAAgD;IAChD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA0F/D;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA+E1D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B"}