@monotykamary/localterm-server 2.15.2 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,563 @@
1
+ import path from "node:path";
2
+ import { MAX_CONCURRENT_SESSIONS, MAX_OUTPUT_BYTES, OUTPUT_BATCH_FLUSH_BYTES, OUTPUT_BATCH_WINDOW_MS, SESSION_GRACE_MS, SESSION_PENDING_PROMOTE_TIMEOUT_MS, WS_BACKPRESSURE_THRESHOLD_BYTES, WS_CLOSE_BACKPRESSURE, WS_OUTBOUND_DRAIN_POLL_MS, WS_OUTBOUND_PAUSE_HIGH_WATER_BYTES, WS_OUTBOUND_RESUME_LOW_WATER_BYTES, WS_READY_STATE_OPEN, } from "./constants.js";
3
+ import { GitDiffWatcher, GIT_DIFF_WATCHER_EVENT_NAMES, } from "./git-diff-watcher.js";
4
+ import { GitDirtyCoordinator } from "./git-dirty-coordinator.js";
5
+ import { Session } from "./session.js";
6
+ import { getBufferedAmount } from "./utils/ws-socket.js";
7
+ // Owns every live PTY for the daemon's lifetime. A Session is created on spawn
8
+ // and stays here until its shell exits, it's explicitly killed, or its
9
+ // no-clients grace timer fires — NOT the instant its client disconnects. One
10
+ // authority (the tab that spawned it) keeps a shell alive by subscribing;
11
+ // others join alongside via the session picker. When the last subscriber
12
+ // leaves, the shell gets SESSION_GRACE_MS to be re-attached (a transient drop,
13
+ // a switch in progress) before it's reaped — so there are no zombies, but a
14
+ // shell also survives the brief disconnects that a single-WS-per-PTY model
15
+ // would kill mid-command. Any number of clients may attach to one PTY;
16
+ // output/title/cwd/foreground/exit fan out to all of them, resize is the min
17
+ // dimensions across attached clients (tmux style, so two clients of different
18
+ // sizes don't fight), and a slow receiver pauses the PTY via OS pipe
19
+ // backpressure instead of dropping the connection.
20
+ export class SessionManager {
21
+ sessions = new Map();
22
+ wsToClient = new Map();
23
+ lastOutputAtByPid = new Map();
24
+ coordinatorsByCwd = new Map();
25
+ hooks;
26
+ sendControl;
27
+ graceMs;
28
+ constructor(options) {
29
+ this.hooks = options.hooks;
30
+ this.sendControl = options.sendControl;
31
+ this.graceMs = options.graceMs ?? SESSION_GRACE_MS;
32
+ }
33
+ size() {
34
+ return this.sessions.size;
35
+ }
36
+ atCapacity() {
37
+ if (this.sessions.size < MAX_CONCURRENT_SESSIONS)
38
+ return false;
39
+ for (const managed of this.sessions.values()) {
40
+ if (managed.clients.size === 0)
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ // Shell pids of every live session. The keep-awake manager scopes its `ps`
46
+ // tree walk to these so automatic mode only reacts to programs running inside
47
+ // localterm, not anything else on the machine.
48
+ pids() {
49
+ return [...this.sessions.values()].map((managed) => managed.session.pid);
50
+ }
51
+ noteOutput(pid) {
52
+ this.lastOutputAtByPid.set(pid, Date.now());
53
+ }
54
+ hasRecentOutput(pids, withinMs) {
55
+ const cutoff = Date.now() - withinMs;
56
+ for (const pid of pids) {
57
+ const at = this.lastOutputAtByPid.get(pid);
58
+ if (at !== undefined && at >= cutoff)
59
+ return true;
60
+ }
61
+ return false;
62
+ }
63
+ list() {
64
+ return [...this.sessions.values()].map((managed) => ({
65
+ id: managed.id,
66
+ pid: managed.session.pid,
67
+ shell: managed.session.shell,
68
+ shellName: managed.session.shellBaseName,
69
+ cwd: managed.session.lastEmittedCwd || managed.session.cwd,
70
+ title: managed.session.currentTitle || managed.session.initialDocumentTitle,
71
+ createdAt: managed.createdAt,
72
+ clients: managed.clients.size,
73
+ }));
74
+ }
75
+ spawn(input, automation) {
76
+ if (this.sessions.size >= MAX_CONCURRENT_SESSIONS)
77
+ this.evictOldestDormant();
78
+ if (this.sessions.size >= MAX_CONCURRENT_SESSIONS)
79
+ return null;
80
+ const session = new Session(input);
81
+ const managed = {
82
+ session,
83
+ id: session.id,
84
+ createdAt: session.createdAt,
85
+ clients: new Set(),
86
+ automation: automation ?? null,
87
+ outputBatch: "",
88
+ outputBatchTimer: null,
89
+ drainPollTimer: null,
90
+ gitWatcher: new GitDiffWatcher(),
91
+ graceTimer: null,
92
+ parkedAt: null,
93
+ };
94
+ this.sessions.set(managed.id, managed);
95
+ this.installSessionListeners(managed);
96
+ this.hooks.onSessionActivity();
97
+ return managed;
98
+ }
99
+ // Spawn a fresh PTY and attach `ws` to it in one step. The route layer's
100
+ // common path (a tab with no `?sid=`). Returns null only when the cap is full
101
+ // with no dormant session to evict — the caller closes the WS with the
102
+ // capacity code.
103
+ spawnAndAttach(ws, input, automation) {
104
+ const spawned = this.spawn(input, automation);
105
+ if (!spawned)
106
+ return null;
107
+ return this.attach(ws, spawned.id);
108
+ }
109
+ // Attach `ws` to a live PTY by id. Returns the session to reattach to, or
110
+ // null when the id is unknown / already exited — the caller spawns fresh.
111
+ attach(ws, id) {
112
+ const managed = this.sessions.get(id);
113
+ if (!managed || managed.session.isExited)
114
+ return null;
115
+ // Re-subscribing cancels the no-clients grace timer (if armed): the shell
116
+ // has a viewer again, so it stays alive.
117
+ this.cancelGrace(managed);
118
+ const coordinator = this.coordinatorForCwd(managed.session.cwd);
119
+ const client = {
120
+ ws,
121
+ pending: true,
122
+ pendingControl: [],
123
+ pendingBytes: [],
124
+ pendingTimer: null,
125
+ cols: 0,
126
+ rows: 0,
127
+ coordinator,
128
+ };
129
+ coordinator.add(ws);
130
+ managed.clients.add(client);
131
+ this.wsToClient.set(ws, { client, session: managed });
132
+ this.recomputeResize(managed);
133
+ // Auto-promote a client that never sends {type:"ready"} — a back-compat
134
+ // client (an older bundled terminal, or any plain WS reader) would otherwise
135
+ // stay pending and never receive output. The localterm client sends ready
136
+ // within milliseconds of the session frame, well before this fires, so its
137
+ // scrollback replay still lands first.
138
+ client.pendingTimer = setTimeout(() => this.promote(ws, false), SESSION_PENDING_PROMOTE_TIMEOUT_MS);
139
+ client.pendingTimer.unref?.();
140
+ this.hooks.onSessionActivity();
141
+ return managed;
142
+ }
143
+ // Promote a pending client to live fan-out. Idempotent (a no-op once the
144
+ // client is already live), so the pending timeout and an explicit {ready}
145
+ // can race safely. When `replay` is true the session's scrollback ring
146
+ // buffer is sent as one binary frame first, then the control messages and
147
+ // output bytes buffered while pending flush in order — so a tab switching
148
+ // to this PTY lands on recent output instead of a blank screen, with no
149
+ // live frame interleaving between replay and the buffered fan-out.
150
+ promote(ws, replay) {
151
+ const entry = this.wsToClient.get(ws);
152
+ if (!entry)
153
+ return;
154
+ const client = entry.client;
155
+ if (!client.pending)
156
+ return;
157
+ if (client.pendingTimer !== null) {
158
+ clearTimeout(client.pendingTimer);
159
+ client.pendingTimer = null;
160
+ }
161
+ if (replay)
162
+ this.sendScrollback(ws, entry.session);
163
+ for (const payload of client.pendingControl)
164
+ this.sendControl(ws, payload);
165
+ for (const bytes of client.pendingBytes)
166
+ this.sendOutputBytes(ws, bytes);
167
+ client.pendingControl = [];
168
+ client.pendingBytes = [];
169
+ client.pending = false;
170
+ }
171
+ writeInput(ws, data) {
172
+ const entry = this.wsToClient.get(ws);
173
+ if (!entry)
174
+ return;
175
+ // A client sending input is clearly live and wants output. Promote it out
176
+ // of the pending hold without a scrollback replay — a back-compat client
177
+ // that never sends {type:"ready"} still unblocks on its first keystroke.
178
+ // The localterm client sends {type:"ready"} before any input, so this is a
179
+ // no-op for it. Promote flushes any buffered output before the input echoes.
180
+ if (entry.client.pending)
181
+ this.promote(ws, false);
182
+ entry.session.session.write(data);
183
+ }
184
+ resize(ws, cols, rows, pixelWidth, pixelHeight) {
185
+ const entry = this.wsToClient.get(ws);
186
+ if (!entry)
187
+ return;
188
+ entry.client.cols = cols;
189
+ entry.client.rows = rows;
190
+ entry.client.pixelWidth = pixelWidth;
191
+ entry.client.pixelHeight = pixelHeight;
192
+ this.recomputeResize(entry.session);
193
+ }
194
+ // Detach a single client. If this was the last subscriber, arm the
195
+ // no-clients grace timer: the PTY stays alive for SESSION_GRACE_MS so a
196
+ // transient drop or a switch can re-attach, then is reaped if nobody does.
197
+ detach(ws) {
198
+ const entry = this.wsToClient.get(ws);
199
+ if (!entry)
200
+ return;
201
+ this.wsToClient.delete(ws);
202
+ const managed = entry.session;
203
+ const client = entry.client;
204
+ if (client.pendingTimer !== null) {
205
+ clearTimeout(client.pendingTimer);
206
+ client.pendingTimer = null;
207
+ }
208
+ client.pendingControl = [];
209
+ client.pendingBytes = [];
210
+ if (client.coordinator) {
211
+ client.coordinator.remove(ws);
212
+ this.releaseCoordinator(client.coordinator);
213
+ }
214
+ managed.clients.delete(client);
215
+ this.recomputeResize(managed);
216
+ if (managed.clients.size === 0 && !managed.session.isExited)
217
+ this.startGrace(managed);
218
+ this.hooks.onSessionActivity();
219
+ }
220
+ kill(id) {
221
+ const managed = this.sessions.get(id);
222
+ if (!managed)
223
+ return false;
224
+ for (const client of managed.clients) {
225
+ this.hooks.onClientExit(client.ws, null);
226
+ this.sendControl(client.ws, { type: "exit", code: null });
227
+ try {
228
+ client.ws.close();
229
+ }
230
+ catch {
231
+ /* already closing */
232
+ }
233
+ }
234
+ this.tearDown(managed);
235
+ this.hooks.onSessionActivity();
236
+ return true;
237
+ }
238
+ disposeAll() {
239
+ for (const managed of [...this.sessions.values()])
240
+ this.tearDown(managed);
241
+ this.coordinatorsByCwd.clear();
242
+ this.lastOutputAtByPid.clear();
243
+ }
244
+ sendScrollback(ws, managed) {
245
+ const snapshot = managed.session.snapshotScrollback();
246
+ if (!snapshot)
247
+ return;
248
+ const bytes = Buffer.from(snapshot, "utf8");
249
+ if (bytes.byteLength <= MAX_OUTPUT_BYTES) {
250
+ this.sendOutputBytes(ws, bytes);
251
+ return;
252
+ }
253
+ for (let offset = 0; offset < bytes.byteLength; offset += MAX_OUTPUT_BYTES) {
254
+ this.sendOutputBytes(ws, bytes.subarray(offset, offset + MAX_OUTPUT_BYTES));
255
+ }
256
+ }
257
+ sendOutputBytes(ws, bytes) {
258
+ if (ws.readyState !== WS_READY_STATE_OPEN)
259
+ return;
260
+ if (getBufferedAmount(ws) > WS_BACKPRESSURE_THRESHOLD_BYTES) {
261
+ ws.close(WS_CLOSE_BACKPRESSURE, "backpressure");
262
+ return;
263
+ }
264
+ try {
265
+ ws.send(bytes);
266
+ }
267
+ catch {
268
+ /* socket closed between readyState check and send */
269
+ }
270
+ }
271
+ broadcastBytes(managed, bytes) {
272
+ for (const client of managed.clients) {
273
+ if (client.pending) {
274
+ client.pendingBytes.push(bytes);
275
+ continue;
276
+ }
277
+ this.sendOutputBytes(client.ws, bytes);
278
+ }
279
+ }
280
+ broadcast(managed, payload) {
281
+ for (const client of managed.clients) {
282
+ if (client.pending) {
283
+ client.pendingControl.push(payload);
284
+ continue;
285
+ }
286
+ this.sendControl(client.ws, payload);
287
+ }
288
+ }
289
+ onSessionOutput(managed, data) {
290
+ managed.outputBatch += data;
291
+ this.noteOutput(managed.session.pid);
292
+ this.hooks.onOutputActivity();
293
+ if (managed.outputBatch.length >= OUTPUT_BATCH_FLUSH_BYTES) {
294
+ if (managed.outputBatchTimer !== null) {
295
+ clearTimeout(managed.outputBatchTimer);
296
+ managed.outputBatchTimer = null;
297
+ }
298
+ this.flushOutput(managed);
299
+ }
300
+ else if (managed.outputBatchTimer === null) {
301
+ managed.outputBatchTimer = setTimeout(() => {
302
+ managed.outputBatchTimer = null;
303
+ this.flushOutput(managed);
304
+ }, OUTPUT_BATCH_WINDOW_MS);
305
+ managed.outputBatchTimer.unref?.();
306
+ }
307
+ }
308
+ flushOutput(managed) {
309
+ const batch = managed.outputBatch;
310
+ managed.outputBatch = "";
311
+ if (!batch)
312
+ return;
313
+ const bytes = Buffer.from(batch, "utf8");
314
+ if (bytes.byteLength <= MAX_OUTPUT_BYTES) {
315
+ this.broadcastBytes(managed, bytes);
316
+ }
317
+ else {
318
+ for (let offset = 0; offset < bytes.byteLength; offset += MAX_OUTPUT_BYTES) {
319
+ this.broadcastBytes(managed, bytes.subarray(offset, offset + MAX_OUTPUT_BYTES));
320
+ }
321
+ }
322
+ this.maybePauseAfterFlush(managed);
323
+ }
324
+ maybePauseAfterFlush(managed) {
325
+ if (managed.session.isPaused)
326
+ return;
327
+ for (const client of managed.clients) {
328
+ if (client.pending)
329
+ continue;
330
+ if (getBufferedAmount(client.ws) >= WS_OUTBOUND_PAUSE_HIGH_WATER_BYTES) {
331
+ managed.session.pause();
332
+ this.ensureDrainPoll(managed);
333
+ return;
334
+ }
335
+ }
336
+ }
337
+ ensureDrainPoll(managed) {
338
+ if (managed.drainPollTimer !== null)
339
+ return;
340
+ managed.drainPollTimer = setInterval(() => {
341
+ if (!managed.session.isPaused) {
342
+ this.stopDrainPoll(managed);
343
+ return;
344
+ }
345
+ let allLow = true;
346
+ for (const client of managed.clients) {
347
+ if (client.pending)
348
+ continue;
349
+ if (getBufferedAmount(client.ws) > WS_OUTBOUND_RESUME_LOW_WATER_BYTES) {
350
+ allLow = false;
351
+ break;
352
+ }
353
+ }
354
+ if (allLow) {
355
+ managed.session.resume();
356
+ this.stopDrainPoll(managed);
357
+ }
358
+ }, WS_OUTBOUND_DRAIN_POLL_MS);
359
+ managed.drainPollTimer.unref?.();
360
+ }
361
+ stopDrainPoll(managed) {
362
+ if (managed.drainPollTimer === null)
363
+ return;
364
+ clearInterval(managed.drainPollTimer);
365
+ managed.drainPollTimer = null;
366
+ }
367
+ recomputeResize(managed) {
368
+ const session = managed.session;
369
+ if (session.isExited)
370
+ return;
371
+ let cols = Infinity;
372
+ let rows = Infinity;
373
+ let single = null;
374
+ let count = 0;
375
+ for (const client of managed.clients) {
376
+ count++;
377
+ single = client;
378
+ if (client.cols > 0 && client.cols < cols)
379
+ cols = client.cols;
380
+ if (client.rows > 0 && client.rows < rows)
381
+ rows = client.rows;
382
+ }
383
+ if (count === 0)
384
+ return;
385
+ if (!Number.isFinite(cols) || !Number.isFinite(rows))
386
+ return;
387
+ if (count === 1 && single?.pixelWidth !== undefined && single?.pixelHeight !== undefined) {
388
+ session.resize(cols, rows, single.pixelWidth, single.pixelHeight);
389
+ }
390
+ else {
391
+ session.resize(cols, rows);
392
+ }
393
+ }
394
+ installSessionListeners(managed) {
395
+ const session = managed.session;
396
+ session.on("output", (data) => this.onSessionOutput(managed, data));
397
+ session.on("title", (title) => this.broadcast(managed, { type: "title", title }));
398
+ session.on("cwd", (cwd) => {
399
+ this.broadcast(managed, { type: "cwd", cwd });
400
+ managed.gitWatcher.stop();
401
+ managed.gitWatcher.start(cwd);
402
+ for (const client of managed.clients)
403
+ this.moveClientCoordinator(client, cwd);
404
+ if (!managed.automation)
405
+ this.hooks.onSessionEvent("cwd", cwd);
406
+ });
407
+ session.on("foreground", (process) => {
408
+ this.broadcast(managed, { type: "foreground", process });
409
+ this.hooks.onSessionActivity();
410
+ if (!managed.automation && session.lastEmittedCwd) {
411
+ this.hooks.onSessionEvent("foreground", session.lastEmittedCwd);
412
+ }
413
+ });
414
+ session.on("notification", (body) => {
415
+ this.broadcast(managed, { type: "notification", body });
416
+ if (!managed.automation && session.lastEmittedCwd) {
417
+ this.hooks.onSessionEvent("notification", session.lastEmittedCwd);
418
+ }
419
+ });
420
+ session.on("git-dirty", () => {
421
+ const cwd = session.lastEmittedCwd;
422
+ if (cwd)
423
+ this.coordinatorForCwd(cwd).signal();
424
+ if (!managed.automation && cwd)
425
+ this.hooks.onSessionEvent("git-dirty", cwd);
426
+ });
427
+ session.on("exit", (code) => this.handleExit(managed, code));
428
+ const automation = managed.automation;
429
+ if (automation) {
430
+ session.on("automation-exit", (exitCode) => this.hooks.onAutomationExit(automation.automationId, automation.runId, exitCode));
431
+ }
432
+ managed.gitWatcher.on("git-dirty", () => {
433
+ const cwd = session.lastEmittedCwd;
434
+ if (cwd)
435
+ this.coordinatorForCwd(cwd).signal();
436
+ });
437
+ for (const refEvent of GIT_DIFF_WATCHER_EVENT_NAMES) {
438
+ if (refEvent === "git-dirty")
439
+ continue;
440
+ const eventName = refEvent;
441
+ managed.gitWatcher.on(eventName, () => {
442
+ if (!managed.automation && session.lastEmittedCwd) {
443
+ this.hooks.onSessionEvent(eventName, session.lastEmittedCwd);
444
+ }
445
+ });
446
+ }
447
+ managed.gitWatcher.start(session.cwd);
448
+ }
449
+ moveClientCoordinator(client, cwd) {
450
+ const next = this.coordinatorForCwd(cwd);
451
+ if (client.coordinator === next)
452
+ return;
453
+ if (client.coordinator) {
454
+ client.coordinator.remove(client.ws);
455
+ this.releaseCoordinator(client.coordinator);
456
+ }
457
+ client.coordinator = next;
458
+ next.add(client.ws);
459
+ }
460
+ handleExit(managed, code) {
461
+ this.flushOutput(managed);
462
+ for (const client of managed.clients) {
463
+ this.hooks.onClientExit(client.ws, code);
464
+ this.sendControl(client.ws, { type: "exit", code });
465
+ try {
466
+ client.ws.close();
467
+ }
468
+ catch {
469
+ /* already closing */
470
+ }
471
+ }
472
+ if (!managed.automation && managed.session.lastEmittedCwd) {
473
+ this.hooks.onSessionEvent("exit", managed.session.lastEmittedCwd);
474
+ }
475
+ this.tearDown(managed);
476
+ this.hooks.onSessionActivity();
477
+ }
478
+ tearDown(managed) {
479
+ if (managed.graceTimer !== null) {
480
+ clearTimeout(managed.graceTimer);
481
+ managed.graceTimer = null;
482
+ }
483
+ managed.parkedAt = null;
484
+ if (managed.outputBatchTimer !== null) {
485
+ clearTimeout(managed.outputBatchTimer);
486
+ managed.outputBatchTimer = null;
487
+ }
488
+ this.stopDrainPoll(managed);
489
+ managed.gitWatcher.dispose();
490
+ for (const client of managed.clients) {
491
+ if (client.pendingTimer !== null) {
492
+ clearTimeout(client.pendingTimer);
493
+ client.pendingTimer = null;
494
+ }
495
+ client.pendingControl = [];
496
+ client.pendingBytes = [];
497
+ if (client.coordinator) {
498
+ client.coordinator.remove(client.ws);
499
+ this.releaseCoordinator(client.coordinator);
500
+ }
501
+ this.wsToClient.delete(client.ws);
502
+ }
503
+ managed.clients.clear();
504
+ this.sessions.delete(managed.id);
505
+ this.lastOutputAtByPid.delete(managed.session.pid);
506
+ try {
507
+ managed.session.dispose();
508
+ }
509
+ catch {
510
+ /* already torn down */
511
+ }
512
+ }
513
+ evictOldestDormant() {
514
+ let oldest = null;
515
+ let oldestKey = Infinity;
516
+ for (const managed of this.sessions.values()) {
517
+ if (managed.clients.size > 0)
518
+ continue;
519
+ // Evict the parked session whose grace fires soonest (armed earliest); a
520
+ // parked session with no timer is a fresh spawn nobody attached yet —
521
+ // yield it only after all armed ones.
522
+ const key = managed.parkedAt ?? managed.createdAt;
523
+ if (key < oldestKey) {
524
+ oldestKey = key;
525
+ oldest = managed;
526
+ }
527
+ }
528
+ if (oldest)
529
+ this.tearDown(oldest);
530
+ }
531
+ startGrace(managed) {
532
+ this.cancelGrace(managed);
533
+ managed.parkedAt = Date.now();
534
+ managed.graceTimer = setTimeout(() => {
535
+ managed.graceTimer = null;
536
+ managed.parkedAt = null;
537
+ this.tearDown(managed);
538
+ this.hooks.onSessionActivity();
539
+ }, this.graceMs);
540
+ managed.graceTimer.unref?.();
541
+ }
542
+ cancelGrace(managed) {
543
+ if (managed.graceTimer !== null) {
544
+ clearTimeout(managed.graceTimer);
545
+ managed.graceTimer = null;
546
+ }
547
+ managed.parkedAt = null;
548
+ }
549
+ coordinatorForCwd(cwd) {
550
+ const key = path.resolve(cwd);
551
+ let coordinator = this.coordinatorsByCwd.get(key);
552
+ if (!coordinator) {
553
+ coordinator = new GitDirtyCoordinator(key, this.sendControl);
554
+ this.coordinatorsByCwd.set(key, coordinator);
555
+ }
556
+ return coordinator;
557
+ }
558
+ releaseCoordinator(coordinator) {
559
+ if (coordinator.isEmpty)
560
+ this.coordinatorsByCwd.delete(coordinator.cwd);
561
+ }
562
+ }
563
+ //# sourceMappingURL=session-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,kCAAkC,EAClC,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,kCAAkC,EAClC,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,4BAA4B,GAE7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAqB,MAAM,sBAAsB,CAAC;AA0D5E,+EAA+E;AAC/E,uEAAuE;AACvE,6EAA6E;AAC7E,0EAA0E;AAC1E,yEAAyE;AACzE,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,6EAA6E;AAC7E,8EAA8E;AAC9E,qEAAqE;AACrE,mDAAmD;AACnD,MAAM,OAAO,cAAc;IACR,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,UAAU,GAAG,IAAI,GAAG,EAGlC,CAAC;IACa,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC3D,KAAK,CAAsB;IAC3B,WAAW,CAA6D;IACxE,OAAO,CAAS;IAEjC,YAAY,OAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACrD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB;YAAE,OAAO,KAAK,CAAC;QAC/D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,+CAA+C;IAC/C,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,IAAuB,EAAE,QAAgB;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,IAAI,MAAM;gBAAE,OAAO,IAAI,CAAC;QACpD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;YACxB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC5B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;YACxC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG;YAC1D,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,oBAAoB;YAC3E,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,KAAoB,EAAE,UAA8B;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,uBAAuB;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7E,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,uBAAuB;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,OAAO,GAAmB;YAC9B,OAAO;YACP,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,UAAU,EAAE,UAAU,IAAI,IAAI;YAC9B,WAAW,EAAE,EAAE;YACf,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI,cAAc,EAAE;YAChC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,yEAAyE;IACzE,8EAA8E;IAC9E,uEAAuE;IACvE,iBAAiB;IACjB,cAAc,CACZ,EAAgB,EAChB,KAAoB,EACpB,UAA8B;QAE9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,CAAC,EAAgB,EAAE,EAAU;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtD,0EAA0E;QAC1E,yCAAyC;QACzC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,MAAM,GAAkB;YAC5B,EAAE;YACF,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,CAAC;YACP,WAAW;SACZ,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,wEAAwE;QACxE,6EAA6E;QAC7E,0EAA0E;QAC1E,2EAA2E;QAC3E,uCAAuC;QACvC,MAAM,CAAC,YAAY,GAAG,UAAU,CAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAC7B,kCAAkC,CACnC,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,mEAAmE;IACnE,OAAO,CAAC,EAAgB,EAAE,MAAe;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAC5B,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM;YAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,cAAc;YAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY;YAAE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,EAAgB,EAAE,IAAY;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,2EAA2E;QAC3E,6EAA6E;QAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CACJ,EAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,UAAmB,EACnB,WAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QACrC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,mEAAmE;IACnE,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,CAAC,EAAgB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ;YAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,EAAU;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEO,cAAc,CAAC,EAAgB,EAAE,OAAuB;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC;YAC3E,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,EAAgB,EAAE,KAA8B;QACtE,IAAI,EAAE,CAAC,UAAU,KAAK,mBAAmB;YAAE,OAAO;QAClD,IAAI,iBAAiB,CAAC,EAAE,CAAC,GAAG,+BAA+B,EAAE,CAAC;YAC5D,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,OAAuB,EAAE,KAA8B;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,OAAuB,EAAE,OAA8B;QACvE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAuB,EAAE,IAAY;QAC3D,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,wBAAwB,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACtC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBACvC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC,EAAE,sBAAsB,CAAC,CAAC;YAC3B,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,OAAuB;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAClC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC3E,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,oBAAoB,CAAC,OAAuB;QAClD,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO;gBAAE,SAAS;YAC7B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,kCAAkC,EAAE,CAAC;gBACvE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAuB;QAC7C,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI;YAAE,OAAO;QAC5C,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,OAAO;oBAAE,SAAS;gBAC7B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,kCAAkC,EAAE,CAAC;oBACtE,MAAM,GAAG,KAAK,CAAC;oBACf,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC9B,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;IACnC,CAAC;IAEO,aAAa,CAAC,OAAuB;QAC3C,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI;YAAE,OAAO;QAC5C,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAChC,CAAC;IAEO,eAAe,CAAC,OAAuB;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO;QAC7B,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,MAAM,GAAyB,IAAI,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,EAAE,CAAC;YACR,MAAM,GAAG,MAAM,CAAC;YAChB,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9D,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI;gBAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAChE,CAAC;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QAC7D,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACzF,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,OAAuB;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO;gBAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAsB,EAAE,EAAE;YAClD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YAClE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;YACnC,IAAI,GAAG;gBAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG;gBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CACjD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;YACnC,IAAI,GAAG;gBAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,4BAA4B,EAAE,CAAC;YACpD,IAAI,QAAQ,KAAK,WAAW;gBAAE,SAAS;YACvC,MAAM,SAAS,GAAoB,QAAQ,CAAC;YAC5C,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACpC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oBAClD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEO,qBAAqB,CAAC,MAAqB,EAAE,GAAW;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO;QACxC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,OAAuB,EAAE,IAAmB;QAC7D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAEO,QAAQ,CAAC,OAAuB;QACtC,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAChC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QACxB,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACtC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACvC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACjC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAClC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;YAC7B,CAAC;YACD,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,MAAM,GAA0B,IAAI,CAAC;QACzC,IAAI,SAAS,GAAG,QAAQ,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;gBAAE,SAAS;YACvC,yEAAyE;YACzE,sEAAsE;YACtE,sCAAsC;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;YAClD,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;gBACpB,SAAS,GAAG,GAAG,CAAC;gBAChB,MAAM,GAAG,OAAO,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,UAAU,CAAC,OAAuB;QACxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,OAAuB;QACzC,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAChC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CAAC,GAAW;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,kBAAkB,CAAC,WAAgC;QACzD,IAAI,WAAW,CAAC,OAAO;YAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;CACF"}
package/dist/session.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare class Session extends EventEmitter<SessionEvents> {
14
14
  readonly shell: string;
15
15
  readonly cwd: string;
16
16
  readonly createdAt: number;
17
+ readonly id: string;
17
18
  private readonly pty;
18
19
  private readonly shellName;
19
20
  private currentCols;
@@ -27,6 +28,8 @@ export declare class Session extends EventEmitter<SessionEvents> {
27
28
  private pixelResizeSupported;
28
29
  private hookCleanupPaths;
29
30
  private pendingParse;
31
+ private readonly scrollbackChunks;
32
+ private scrollbackBytes;
30
33
  private readonly foregroundWatcher;
31
34
  private readonly reportInitialCommandExit;
32
35
  private hasEmittedAutomationExit;
@@ -46,6 +49,8 @@ export declare class Session extends EventEmitter<SessionEvents> {
46
49
  resize(cols: number, rows: number, pixelWidth?: number, pixelHeight?: number): void;
47
50
  kill(signal?: NodeJS.Signals): void;
48
51
  dispose(): void;
52
+ snapshotScrollback(): string;
53
+ private appendScrollback;
49
54
  private emitInitialMetadata;
50
55
  private onPtyOutput;
51
56
  private hasIncompleteOsc;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwB3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,UAAU,aAAa;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,EAAE,CAAC;IAChB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,aAAa,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,qBAAqB,CAAwC;IACrE,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,OAAO,CAAC,wBAAwB,CAAS;gBAE7B,KAAK,EAAE,aAAa;IAqFhC,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAOD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzB,KAAK,IAAI,IAAI;IAUb,MAAM,IAAI,IAAI;IAUd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IA4BnF,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAkB,GAAG,IAAI;IAS7C,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,WAAW;IA0DnB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAsEvB,OAAO,CAAC,+BAA+B;IAavC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,gBAAgB;CAUzB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}