openclaw-observability 1.0.6 → 2026.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +207 -72
- package/dist/index.js.map +1 -1
- package/dist/storage/duckdb-local-writer.d.ts +29 -1
- package/dist/storage/duckdb-local-writer.d.ts.map +1 -1
- package/dist/storage/duckdb-local-writer.js +236 -20
- package/dist/storage/duckdb-local-writer.js.map +1 -1
- package/dist/storage/duckdb-local-writer.test.js +211 -0
- package/dist/storage/duckdb-local-writer.test.js.map +1 -1
- package/dist/storage/mysql-writer.d.ts.map +1 -1
- package/dist/storage/mysql-writer.js +8 -4
- package/dist/storage/mysql-writer.js.map +1 -1
- package/dist/storage/schema.d.ts.map +1 -1
- package/dist/storage/schema.js +23 -2
- package/dist/storage/schema.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/web/api.d.ts +2 -0
- package/dist/web/api.d.ts.map +1 -1
- package/dist/web/api.js.map +1 -1
- package/dist/web/routes.js +1 -1
- package/dist/web/routes.js.map +1 -1
- package/dist/web/ui.js +3 -0
- package/dist/web/ui.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -10,9 +10,31 @@ export declare class DuckDBLocalWriter implements AuditWriter {
|
|
|
10
10
|
private pool;
|
|
11
11
|
private config;
|
|
12
12
|
private initialized;
|
|
13
|
-
|
|
13
|
+
/** Promise for an in-progress initialization (allows concurrent callers to await) */
|
|
14
|
+
private _initPromise;
|
|
15
|
+
/**
|
|
16
|
+
* Application-layer ID counter.
|
|
17
|
+
* Combines timestamp (ms) with a per-instance counter to generate unique IDs
|
|
18
|
+
* without relying on DuckDB SEQUENCE (which causes WAL write-write conflicts
|
|
19
|
+
* when multiple plugin instances exist).
|
|
20
|
+
*
|
|
21
|
+
* Format: timestamp_ms * 10000 + counter % 10000
|
|
22
|
+
* This gives ~10,000 unique IDs per millisecond.
|
|
23
|
+
*/
|
|
24
|
+
private _idCounter;
|
|
14
25
|
constructor(config: DuckDBConfig);
|
|
26
|
+
/** Generate a unique BIGINT ID without DuckDB SEQUENCE */
|
|
27
|
+
private _nextId;
|
|
15
28
|
initialize(maxRetries?: number, retryDelayMs?: number): Promise<void>;
|
|
29
|
+
private _initializeWithRetry;
|
|
30
|
+
/**
|
|
31
|
+
* Attempt to recover from a corrupted WAL file.
|
|
32
|
+
* Backs up the WAL file (for post-mortem analysis) and removes it
|
|
33
|
+
* so DuckDB can start fresh from the main database file.
|
|
34
|
+
*
|
|
35
|
+
* @returns true if WAL was found and removed, false otherwise
|
|
36
|
+
*/
|
|
37
|
+
private _recoverCorruptedWal;
|
|
16
38
|
ensureReady(): Promise<boolean>;
|
|
17
39
|
private _doInitialize;
|
|
18
40
|
writeBatch(entries: BufferEntry[]): Promise<void>;
|
|
@@ -21,6 +43,12 @@ export declare class DuckDBLocalWriter implements AuditWriter {
|
|
|
21
43
|
writeAlerts(alerts: SecurityAlert[]): Promise<void>;
|
|
22
44
|
getPool(): QueryPool | null;
|
|
23
45
|
close(): Promise<void>;
|
|
46
|
+
/** Check if a column exists in a table */
|
|
47
|
+
private _hasColumn;
|
|
48
|
+
/** Check if an index exists */
|
|
49
|
+
private _hasIndex;
|
|
50
|
+
/** Ensure channel_id column exists (migration helper) - silent check */
|
|
51
|
+
private _ensureChannelIdColumn;
|
|
24
52
|
private _formatDate;
|
|
25
53
|
}
|
|
26
54
|
//# sourceMappingURL=duckdb-local-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-local-writer.d.ts","sourceRoot":"","sources":["../../src/storage/duckdb-local-writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"duckdb-local-writer.d.ts","sourceRoot":"","sources":["../../src/storage/duckdb-local-writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA2QzC,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAA8B;IAElD;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,EAAE,YAAY;IAIhC,0DAA0D;IAC1D,OAAO,CAAC,OAAO;IAIT,UAAU,CAAC,UAAU,SAAI,EAAE,YAAY,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAatD,oBAAoB;IAmDlC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAwBtB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAoBvB,aAAa;IAyJrB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAoBzC,YAAY;YAyBZ,aAAa;IAiDrB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzD,OAAO,IAAI,SAAS,GAAG,IAAI;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B,0CAA0C;YAC5B,UAAU;IA2BxB,+BAA+B;YACjB,SAAS;IA2BvB,wEAAwE;YAC1D,sBAAsB;IAmBpC,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -219,10 +219,21 @@ class DuckDBPool {
|
|
|
219
219
|
/* WARNING: MySQL schema is defined in schema.ts. */
|
|
220
220
|
/* When modifying table structure, update both places. */
|
|
221
221
|
/* ------------------------------------------------------------------ */
|
|
222
|
+
/**
|
|
223
|
+
* Schema statements — NO DuckDB SEQUENCE used.
|
|
224
|
+
* IDs are generated at the application layer to avoid WAL write-write conflicts
|
|
225
|
+
* when the plugin is accidentally loaded multiple times in the same process
|
|
226
|
+
* (e.g. during pnpm dev hot-reload).
|
|
227
|
+
*
|
|
228
|
+
* Migration: We DROP old sequences (if they exist from <=1.0.6) so leftover
|
|
229
|
+
* sequence state in WAL cannot cause conflicts on replay.
|
|
230
|
+
*/
|
|
222
231
|
const DUCKDB_SCHEMA_STATEMENTS = [
|
|
223
|
-
|
|
232
|
+
// Drop legacy sequences that cause WAL write-write conflicts
|
|
233
|
+
`DROP SEQUENCE IF EXISTS audit_actions_id_seq`,
|
|
234
|
+
`DROP SEQUENCE IF EXISTS audit_alerts_id_seq`,
|
|
224
235
|
`CREATE TABLE IF NOT EXISTS audit_actions (
|
|
225
|
-
id BIGINT
|
|
236
|
+
id BIGINT PRIMARY KEY,
|
|
226
237
|
session_id VARCHAR(64) NOT NULL,
|
|
227
238
|
action_type VARCHAR(32) NOT NULL,
|
|
228
239
|
action_name VARCHAR(255) NOT NULL,
|
|
@@ -233,16 +244,20 @@ const DUCKDB_SCHEMA_STATEMENTS = [
|
|
|
233
244
|
completion_tokens INTEGER DEFAULT NULL,
|
|
234
245
|
duration_ms INTEGER DEFAULT NULL,
|
|
235
246
|
user_id VARCHAR(128) DEFAULT '',
|
|
247
|
+
channel_id VARCHAR(128) DEFAULT '',
|
|
236
248
|
created_at TIMESTAMP DEFAULT current_timestamp
|
|
237
249
|
)`,
|
|
238
250
|
`CREATE INDEX IF NOT EXISTS idx_act_session ON audit_actions(session_id)`,
|
|
239
251
|
`CREATE INDEX IF NOT EXISTS idx_act_type ON audit_actions(action_type)`,
|
|
240
252
|
`CREATE INDEX IF NOT EXISTS idx_act_created ON audit_actions(created_at)`,
|
|
241
253
|
`CREATE INDEX IF NOT EXISTS idx_act_user ON audit_actions(user_id)`,
|
|
254
|
+
// Note: idx_act_channel is created after migration (see migration logic below)
|
|
255
|
+
// This prevents errors when table exists without channel_id column
|
|
242
256
|
`CREATE TABLE IF NOT EXISTS audit_sessions (
|
|
243
257
|
session_id VARCHAR(64) PRIMARY KEY,
|
|
244
258
|
user_id VARCHAR(128) DEFAULT '',
|
|
245
259
|
model_name VARCHAR(128) DEFAULT '',
|
|
260
|
+
channel_id VARCHAR(128) DEFAULT '',
|
|
246
261
|
start_time TIMESTAMP NOT NULL,
|
|
247
262
|
end_time TIMESTAMP DEFAULT NULL,
|
|
248
263
|
total_actions INTEGER DEFAULT 0,
|
|
@@ -250,9 +265,10 @@ const DUCKDB_SCHEMA_STATEMENTS = [
|
|
|
250
265
|
)`,
|
|
251
266
|
`CREATE INDEX IF NOT EXISTS idx_ses_user ON audit_sessions(user_id)`,
|
|
252
267
|
`CREATE INDEX IF NOT EXISTS idx_ses_start ON audit_sessions(start_time)`,
|
|
253
|
-
|
|
268
|
+
// Note: idx_ses_channel is created after migration (see migration logic below)
|
|
269
|
+
// This prevents errors when table exists without channel_id column
|
|
254
270
|
`CREATE TABLE IF NOT EXISTS audit_alerts (
|
|
255
|
-
id BIGINT
|
|
271
|
+
id BIGINT PRIMARY KEY,
|
|
256
272
|
alert_id VARCHAR(64) NOT NULL,
|
|
257
273
|
session_id VARCHAR(64) NOT NULL,
|
|
258
274
|
action_type VARCHAR(32) NOT NULL,
|
|
@@ -284,20 +300,41 @@ class DuckDBLocalWriter {
|
|
|
284
300
|
pool = null;
|
|
285
301
|
config;
|
|
286
302
|
initialized = false;
|
|
287
|
-
|
|
303
|
+
/** Promise for an in-progress initialization (allows concurrent callers to await) */
|
|
304
|
+
_initPromise = null;
|
|
305
|
+
/**
|
|
306
|
+
* Application-layer ID counter.
|
|
307
|
+
* Combines timestamp (ms) with a per-instance counter to generate unique IDs
|
|
308
|
+
* without relying on DuckDB SEQUENCE (which causes WAL write-write conflicts
|
|
309
|
+
* when multiple plugin instances exist).
|
|
310
|
+
*
|
|
311
|
+
* Format: timestamp_ms * 10000 + counter % 10000
|
|
312
|
+
* This gives ~10,000 unique IDs per millisecond.
|
|
313
|
+
*/
|
|
314
|
+
_idCounter = 0;
|
|
288
315
|
constructor(config) {
|
|
289
316
|
this.config = config;
|
|
290
317
|
}
|
|
318
|
+
/** Generate a unique BIGINT ID without DuckDB SEQUENCE */
|
|
319
|
+
_nextId() {
|
|
320
|
+
return Date.now() * 10000 + (this._idCounter++ % 10000);
|
|
321
|
+
}
|
|
291
322
|
async initialize(maxRetries = 3, retryDelayMs = 2000) {
|
|
292
323
|
if (this.initialized)
|
|
293
324
|
return;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
325
|
+
// If another call is already initializing, wait for it instead of returning early.
|
|
326
|
+
// This prevents "writer not ready" errors when gateway_start pre-init races with
|
|
327
|
+
// the first user request.
|
|
328
|
+
if (this._initPromise)
|
|
329
|
+
return this._initPromise;
|
|
330
|
+
this._initPromise = this._initializeWithRetry(maxRetries, retryDelayMs)
|
|
331
|
+
.finally(() => { this._initPromise = null; });
|
|
332
|
+
return this._initPromise;
|
|
333
|
+
}
|
|
334
|
+
async _initializeWithRetry(maxRetries, retryDelayMs) {
|
|
297
335
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
298
336
|
try {
|
|
299
337
|
await this._doInitialize();
|
|
300
|
-
this.initializing = false;
|
|
301
338
|
return;
|
|
302
339
|
}
|
|
303
340
|
catch (error) {
|
|
@@ -310,9 +347,23 @@ class DuckDBLocalWriter {
|
|
|
310
347
|
// Lock conflict: database is being used by another process (e.g., Gateway)
|
|
311
348
|
// This is expected when openclaw status runs while Gateway is active
|
|
312
349
|
// Don't log as error, just mark as not initialized
|
|
313
|
-
this.initializing = false;
|
|
314
350
|
return; // Silently return without initializing
|
|
315
351
|
}
|
|
352
|
+
// WAL corruption recovery: write-write conflict means the WAL has
|
|
353
|
+
// conflicting sequence/transaction data (usually from double plugin loading).
|
|
354
|
+
// Back up the corrupted WAL and retry with a clean state.
|
|
355
|
+
const isWalConflict = errMsg.includes('write-write conflict') ||
|
|
356
|
+
errMsg.includes('Failed to commit') ||
|
|
357
|
+
errMsg.includes('Failure while replaying WAL');
|
|
358
|
+
if (isWalConflict && attempt === 1) {
|
|
359
|
+
console.warn(`[openclaw-observability] WAL conflict detected: ${errMsg}. ` +
|
|
360
|
+
'Attempting recovery by backing up corrupted WAL file...');
|
|
361
|
+
const recovered = this._recoverCorruptedWal();
|
|
362
|
+
if (recovered) {
|
|
363
|
+
// Retry immediately (don't count this as a failed attempt)
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
316
367
|
// Real error: log and retry
|
|
317
368
|
console.error(`[openclaw-observability] DuckDB init attempt ${attempt}/${maxRetries} failed:`, errMsg);
|
|
318
369
|
if (attempt < maxRetries) {
|
|
@@ -320,9 +371,35 @@ class DuckDBLocalWriter {
|
|
|
320
371
|
}
|
|
321
372
|
}
|
|
322
373
|
}
|
|
323
|
-
this.initializing = false;
|
|
324
374
|
throw new Error('All DuckDB initialization attempts failed');
|
|
325
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Attempt to recover from a corrupted WAL file.
|
|
378
|
+
* Backs up the WAL file (for post-mortem analysis) and removes it
|
|
379
|
+
* so DuckDB can start fresh from the main database file.
|
|
380
|
+
*
|
|
381
|
+
* @returns true if WAL was found and removed, false otherwise
|
|
382
|
+
*/
|
|
383
|
+
_recoverCorruptedWal() {
|
|
384
|
+
const dbPath = this.config.path;
|
|
385
|
+
if (dbPath === ':memory:')
|
|
386
|
+
return false;
|
|
387
|
+
const walPath = dbPath + '.wal';
|
|
388
|
+
if (!fs.existsSync(walPath))
|
|
389
|
+
return false;
|
|
390
|
+
try {
|
|
391
|
+
const backupPath = walPath + '.corrupted.' + Date.now();
|
|
392
|
+
fs.renameSync(walPath, backupPath);
|
|
393
|
+
console.warn(`[openclaw-observability] Corrupted WAL backed up to: ${backupPath}. ` +
|
|
394
|
+
'Some recent data (not yet checkpointed) may be lost. ' +
|
|
395
|
+
'The main database file is intact.');
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
catch (err) {
|
|
399
|
+
console.error(`[openclaw-observability] Failed to back up corrupted WAL: ${err.message}`);
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
326
403
|
async ensureReady() {
|
|
327
404
|
if (this.initialized && this.pool)
|
|
328
405
|
return true;
|
|
@@ -407,6 +484,65 @@ class DuckDBLocalWriter {
|
|
|
407
484
|
for (const stmt of DUCKDB_SCHEMA_STATEMENTS) {
|
|
408
485
|
await this.pool.run(stmt);
|
|
409
486
|
}
|
|
487
|
+
// Migration: add channel_id column if it doesn't exist (for existing databases)
|
|
488
|
+
// Silently check if column exists before adding to avoid unnecessary logs
|
|
489
|
+
const hasChannelIdInActions = await this._hasColumn('audit_actions', 'channel_id');
|
|
490
|
+
if (!hasChannelIdInActions) {
|
|
491
|
+
try {
|
|
492
|
+
await this.pool.run(`ALTER TABLE audit_actions ADD COLUMN channel_id VARCHAR(128) DEFAULT ''`);
|
|
493
|
+
// Only log when actually adding the column (silent if already exists)
|
|
494
|
+
}
|
|
495
|
+
catch (err) {
|
|
496
|
+
const errMsg = err.message || String(err);
|
|
497
|
+
if (!errMsg.includes('already exists') && !errMsg.includes('duplicate column')) {
|
|
498
|
+
console.warn('[openclaw-observability] Failed to add channel_id to audit_actions:', errMsg);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
const hasChannelIdInSessions = await this._hasColumn('audit_sessions', 'channel_id');
|
|
503
|
+
if (!hasChannelIdInSessions) {
|
|
504
|
+
try {
|
|
505
|
+
await this.pool.run(`ALTER TABLE audit_sessions ADD COLUMN channel_id VARCHAR(128) DEFAULT ''`);
|
|
506
|
+
// Only log when actually adding the column (silent if already exists)
|
|
507
|
+
}
|
|
508
|
+
catch (err) {
|
|
509
|
+
const errMsg = err.message || String(err);
|
|
510
|
+
if (!errMsg.includes('already exists') && !errMsg.includes('duplicate column')) {
|
|
511
|
+
console.warn('[openclaw-observability] Failed to add channel_id to audit_sessions:', errMsg);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
// Create index if column exists and index doesn't exist (silent check)
|
|
516
|
+
const hasChannelIdColumn = await this._hasColumn('audit_actions', 'channel_id');
|
|
517
|
+
if (hasChannelIdColumn) {
|
|
518
|
+
const hasIndex = await this._hasIndex('audit_actions', 'idx_act_channel');
|
|
519
|
+
if (!hasIndex) {
|
|
520
|
+
try {
|
|
521
|
+
await this.pool.run(`CREATE INDEX idx_act_channel ON audit_actions(channel_id)`);
|
|
522
|
+
}
|
|
523
|
+
catch (err) {
|
|
524
|
+
const errMsg = err.message || String(err);
|
|
525
|
+
if (!errMsg.includes('already exists')) {
|
|
526
|
+
console.warn('[openclaw-observability] Failed to create idx_act_channel:', errMsg);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
const hasChannelIdInSessionsCol = await this._hasColumn('audit_sessions', 'channel_id');
|
|
532
|
+
if (hasChannelIdInSessionsCol) {
|
|
533
|
+
const hasIndex = await this._hasIndex('audit_sessions', 'idx_ses_channel');
|
|
534
|
+
if (!hasIndex) {
|
|
535
|
+
try {
|
|
536
|
+
await this.pool.run(`CREATE INDEX idx_ses_channel ON audit_sessions(channel_id)`);
|
|
537
|
+
}
|
|
538
|
+
catch (err) {
|
|
539
|
+
const errMsg = err.message || String(err);
|
|
540
|
+
if (!errMsg.includes('already exists')) {
|
|
541
|
+
console.warn('[openclaw-observability] Failed to create idx_ses_channel:', errMsg);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
410
546
|
// Checkpoint on startup: merge any leftover WAL from previous (possibly unclean) shutdown
|
|
411
547
|
// This is critical: if WAL exists without main file, data recovery depends on successful checkpoint
|
|
412
548
|
try {
|
|
@@ -452,19 +588,22 @@ class DuckDBLocalWriter {
|
|
|
452
588
|
async writeActions(actions) {
|
|
453
589
|
if (!this.pool)
|
|
454
590
|
return;
|
|
591
|
+
// Ensure channel_id column exists before writing (migration safety check)
|
|
592
|
+
await this._ensureChannelIdColumn('audit_actions');
|
|
455
593
|
const sql = `
|
|
456
594
|
INSERT INTO audit_actions
|
|
457
|
-
(session_id, action_type, action_name, model_name, input_params, output_result,
|
|
458
|
-
prompt_tokens, completion_tokens, duration_ms, user_id, created_at)
|
|
459
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
595
|
+
(id, session_id, action_type, action_name, model_name, input_params, output_result,
|
|
596
|
+
prompt_tokens, completion_tokens, duration_ms, user_id, channel_id, created_at)
|
|
597
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
460
598
|
`;
|
|
461
599
|
for (const a of actions) {
|
|
462
600
|
await this.pool.run(sql, [
|
|
601
|
+
this._nextId(),
|
|
463
602
|
a.sessionId, a.actionType, a.actionName, a.modelName,
|
|
464
603
|
a.inputParams ? JSON.stringify(a.inputParams) : null,
|
|
465
604
|
a.outputResult ? JSON.stringify(a.outputResult) : null,
|
|
466
605
|
a.promptTokens, a.completionTokens, a.durationMs,
|
|
467
|
-
a.userId,
|
|
606
|
+
a.userId, a.channelId || '',
|
|
468
607
|
this._formatDate(a.createdAt),
|
|
469
608
|
]);
|
|
470
609
|
}
|
|
@@ -493,17 +632,18 @@ class DuckDBLocalWriter {
|
|
|
493
632
|
// This prevents PRIMARY KEY constraint violations when multiple processes
|
|
494
633
|
// or concurrent transactions try to insert the same session_id
|
|
495
634
|
await this.pool.run(`INSERT INTO audit_sessions
|
|
496
|
-
(session_id, user_id, model_name, start_time, end_time, total_actions, total_tokens)
|
|
497
|
-
VALUES (?, ?, ?, CAST(? AS TIMESTAMP), CAST(? AS TIMESTAMP), ?, ?)
|
|
635
|
+
(session_id, user_id, model_name, channel_id, start_time, end_time, total_actions, total_tokens)
|
|
636
|
+
VALUES (?, ?, ?, ?, CAST(? AS TIMESTAMP), CAST(? AS TIMESTAMP), ?, ?)
|
|
498
637
|
ON CONFLICT (session_id) DO UPDATE SET
|
|
499
638
|
user_id = COALESCE(EXCLUDED.user_id, audit_sessions.user_id),
|
|
500
639
|
model_name = CASE WHEN EXCLUDED.model_name != '' THEN EXCLUDED.model_name ELSE audit_sessions.model_name END,
|
|
640
|
+
channel_id = CASE WHEN EXCLUDED.channel_id != '' THEN EXCLUDED.channel_id ELSE audit_sessions.channel_id END,
|
|
501
641
|
start_time = CASE WHEN audit_sessions.start_time < EXCLUDED.start_time THEN audit_sessions.start_time ELSE EXCLUDED.start_time END,
|
|
502
642
|
end_time = EXCLUDED.end_time,
|
|
503
643
|
total_actions = EXCLUDED.total_actions,
|
|
504
644
|
total_tokens = EXCLUDED.total_tokens`, [
|
|
505
645
|
session.sessionId,
|
|
506
|
-
session.userId, session.modelName,
|
|
646
|
+
session.userId, session.modelName, session.channelId || '',
|
|
507
647
|
this._formatDate(session.startTime), this._formatDate(session.endTime),
|
|
508
648
|
totalActions, totalTokens,
|
|
509
649
|
]);
|
|
@@ -514,12 +654,13 @@ class DuckDBLocalWriter {
|
|
|
514
654
|
return;
|
|
515
655
|
const sql = `
|
|
516
656
|
INSERT INTO audit_alerts
|
|
517
|
-
(alert_id, session_id, action_type, action_name, rule_id, rule_name,
|
|
657
|
+
(id, alert_id, session_id, action_type, action_name, rule_id, rule_name,
|
|
518
658
|
category, severity, finding, context, status, user_id, model_name, created_at)
|
|
519
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
659
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
520
660
|
`;
|
|
521
661
|
for (const a of alerts) {
|
|
522
662
|
await this.pool.run(sql, [
|
|
663
|
+
this._nextId(),
|
|
523
664
|
a.alertId, a.sessionId, a.actionType, a.actionName,
|
|
524
665
|
a.ruleId, a.ruleName, a.category, a.severity,
|
|
525
666
|
a.finding, a.context, a.status,
|
|
@@ -556,6 +697,81 @@ class DuckDBLocalWriter {
|
|
|
556
697
|
}
|
|
557
698
|
}
|
|
558
699
|
/* ---- Helpers ---- */
|
|
700
|
+
/** Check if a column exists in a table */
|
|
701
|
+
async _hasColumn(tableName, columnName) {
|
|
702
|
+
if (!this.pool)
|
|
703
|
+
return false;
|
|
704
|
+
try {
|
|
705
|
+
// Try DuckDB information_schema first
|
|
706
|
+
const [result] = await this.pool.query(`SELECT column_name FROM information_schema.columns
|
|
707
|
+
WHERE table_name = ? AND column_name = ?`, [tableName, columnName]);
|
|
708
|
+
return Array.isArray(result) && result.length > 0;
|
|
709
|
+
}
|
|
710
|
+
catch (err) {
|
|
711
|
+
// If information_schema is not available, try DESCRIBE as fallback
|
|
712
|
+
try {
|
|
713
|
+
const [descResult] = await this.pool.query(`DESCRIBE ${tableName}`);
|
|
714
|
+
if (Array.isArray(descResult)) {
|
|
715
|
+
return descResult.some((row) => {
|
|
716
|
+
const r = row;
|
|
717
|
+
return (r.column_name || r.name) === columnName;
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
catch (descErr) {
|
|
722
|
+
// Both methods failed, fallback to try-catch on ALTER
|
|
723
|
+
}
|
|
724
|
+
return false;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
/** Check if an index exists */
|
|
728
|
+
async _hasIndex(tableName, indexName) {
|
|
729
|
+
if (!this.pool)
|
|
730
|
+
return false;
|
|
731
|
+
try {
|
|
732
|
+
// Try DuckDB information_schema first
|
|
733
|
+
const [result] = await this.pool.query(`SELECT index_name FROM information_schema.indexes
|
|
734
|
+
WHERE table_name = ? AND index_name = ?`, [tableName, indexName]);
|
|
735
|
+
return Array.isArray(result) && result.length > 0;
|
|
736
|
+
}
|
|
737
|
+
catch (err) {
|
|
738
|
+
// If information_schema is not available, try SHOW INDEXES as fallback
|
|
739
|
+
try {
|
|
740
|
+
const [showResult] = await this.pool.query(`SHOW INDEXES FROM ${tableName}`);
|
|
741
|
+
if (Array.isArray(showResult)) {
|
|
742
|
+
return showResult.some((row) => {
|
|
743
|
+
const r = row;
|
|
744
|
+
return (r.index_name || r.name) === indexName;
|
|
745
|
+
});
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
catch (showErr) {
|
|
749
|
+
// Both methods failed, fallback to try-catch on CREATE INDEX
|
|
750
|
+
}
|
|
751
|
+
return false;
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
/** Ensure channel_id column exists (migration helper) - silent check */
|
|
755
|
+
async _ensureChannelIdColumn(tableName) {
|
|
756
|
+
if (!this.pool)
|
|
757
|
+
return;
|
|
758
|
+
const exists = await this._hasColumn(tableName, 'channel_id');
|
|
759
|
+
if (exists)
|
|
760
|
+
return; // Column exists, no action needed
|
|
761
|
+
try {
|
|
762
|
+
await this.pool.run(`ALTER TABLE ${tableName} ADD COLUMN channel_id VARCHAR(128) DEFAULT ''`);
|
|
763
|
+
// Only log when actually adding the column (silent if already exists)
|
|
764
|
+
}
|
|
765
|
+
catch (err) {
|
|
766
|
+
const errMsg = err.message || String(err);
|
|
767
|
+
// If column already exists, that's fine (silent success)
|
|
768
|
+
if (errMsg.includes('already exists') || errMsg.includes('duplicate column')) {
|
|
769
|
+
return; // Column exists, no action needed
|
|
770
|
+
}
|
|
771
|
+
// Other errors should be logged
|
|
772
|
+
console.warn(`[openclaw-observability] Failed to ensure channel_id in ${tableName}:`, errMsg);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
559
775
|
_formatDate(d) {
|
|
560
776
|
if (!d)
|
|
561
777
|
return new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-local-writer.js","sourceRoot":"","sources":["../../src/storage/duckdb-local-writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"duckdb-local-writer.js","sourceRoot":"","sources":["../../src/storage/duckdb-local-writer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,uCAAyB;AAOzB,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU;IACN,IAAI,CAAM;IACV,QAAQ,CAAM;IACtB;;;;OAIG;IACK,OAAO,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEnD,YAAY,QAAa,EAAE,IAAS;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,SAAS,CAAI,EAAoB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,mCAAmC;QAC9E,gEAAgE;QAChE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,MAAkB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,kEAAkE;YAClE,IAAI,OAAO,GAAG,GAAG,CAAC;YAClB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,8CAA8C;YAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAiB,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAiB,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,mFAAmF;YACnF,MAAM,UAAU,GAAG,GAAG;iBACnB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,MAAkB;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,IAAI,OAAO,GAAG,GAAG,CAAC;YAClB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/B,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;2EACuE;IACvE,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,CAAC;qBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAEhC,4CAA4C;IACpC,WAAW,CAAC,IAAS,EAAE,MAAiB;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEtB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,6FAA6F;IACrF,aAAa,CAAC,MAAW;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAU,EAAE,EAAE;YAChC,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IAChD,aAAa,CAAC,GAAY;QAChC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,mEAAmE;QACnE,oEAAoE;QACpE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAK,GAAW,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAI,GAAW,CAAC,MAAM,CAAC;YACnC,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACvF,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC;QACD,4BAA4B;QAC5B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAK,GAAW,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACvE,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,wEAAwE;AACxE,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,wEAAwE;AAExE;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAG;IAC/B,6DAA6D;IAC7D,8CAA8C;IAC9C,6CAA6C;IAE7C;;;;;;;;;;;;;;IAcE;IACF,yEAAyE;IACzE,uEAAuE;IACvE,yEAAyE;IACzE,mEAAmE;IACnE,+EAA+E;IAC/E,mEAAmE;IAEnE;;;;;;;;;IASE;IACF,oEAAoE;IACpE,wEAAwE;IACxE,+EAA+E;IAC/E,mEAAmE;IAEnE;;;;;;;;;;;;;;;;;;IAkBE;IACF,mEAAmE;IACnE,mEAAmE;IACnE,iEAAiE;IACjE,qEAAqE;IACrE,qEAAqE;IACrE,kEAAkE;CACnE,CAAC;AAEF,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,MAAa,iBAAiB;IACpB,IAAI,GAAsB,IAAI,CAAC;IAC/B,MAAM,CAAe;IACrB,WAAW,GAAG,KAAK,CAAC;IAC5B,qFAAqF;IAC7E,YAAY,GAAyB,IAAI,CAAC;IAElD;;;;;;;;OAQG;IACK,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,0DAA0D;IAClD,OAAO;QACb,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI;QAClD,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,mFAAmF;QACnF,iFAAiF;QACjF,0BAA0B;QAC1B,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAEhD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC;aACpE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,UAAkB,EAAE,YAAoB;QACzE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAI,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,gFAAgF;gBAChF,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBACnC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;gBAE7D,IAAI,cAAc,EAAE,CAAC;oBACnB,2EAA2E;oBAC3E,qEAAqE;oBACrE,mDAAmD;oBACnD,OAAO,CAAC,uCAAuC;gBACjD,CAAC;gBAED,kEAAkE;gBAClE,8EAA8E;gBAC9E,0DAA0D;gBAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC;oBACvC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBACnC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAErE,IAAI,aAAa,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CACV,mDAAmD,MAAM,IAAI;wBAC7D,yDAAyD,CAC1D,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC9C,IAAI,SAAS,EAAE,CAAC;wBACd,2DAA2D;wBAC3D,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,4BAA4B;gBAC5B,OAAO,CAAC,KAAK,CACX,gDAAgD,OAAO,IAAI,UAAU,UAAU,EAC/E,MAAM,CACP,CAAC;gBACF,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;oBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,MAAM,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,wDAAwD,UAAU,IAAI;gBACtE,uDAAuD;gBACvD,mCAAmC,CACpC,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,6DAA8D,GAAa,CAAC,OAAO,EAAE,CACtF,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oDAAoD;YACpD,MAAM,MAAM,GAAI,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACrC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC7D,IAAI,cAAc,EAAE,CAAC;gBACnB,+EAA+E;gBAC/E,OAAO,KAAK,CAAC;YACf,CAAC;YACD,gFAAgF;YAChF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,oCAAoC;QACpC,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6EAA6E;gBAC7E,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,uEAAuE;YACvE,mEAAmE;YACnE,iFAAiF;YACjF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,wEAAwE;gBACxE,oDAAoD;gBACpD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC9C,uEAAuE;gBACvE,gEAAgE;gBAChE,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjC,0DAA0D;gBAC1D,IAAI,CAAC;oBACH,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;wBAC1D,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAC9B,CAAC;yBAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBAC5D,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;gBACD,gEAAgE;gBAChE,IAAI,CAAC;oBACH,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBAC7D,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;oBAC7B,CAAC;yBAAM,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;wBACzE,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;oBAClC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,wDAAwD,MAAM,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE3C,wDAAwD;QACxD,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,gFAAgF;QAChF,0EAA0E;QAC1E,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QACnF,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;gBAC/F,sEAAsE;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC/E,OAAO,CAAC,IAAI,CAAC,qEAAqE,EAAE,MAAM,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QACrF,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;gBAChG,sEAAsE;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC/E,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,MAAM,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAChF,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;gBACnF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,CAAC,CAAC;oBACrF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QACxF,IAAI,yBAAyB,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;gBACpF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,CAAC,CAAC;oBACrF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0FAA0F;QAC1F,oGAAoG;QACpG,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAElF,oDAAoD;YACpD,IAAI,MAAM,KAAK,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CACV,iFAAiF;oBACjF,uEAAuE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qDAAqD;YACrD,MAAM,MAAM,GAAI,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,KAAK,CACX,uDAAuD,MAAM,IAAI;gBACjE,6DAA6D,CAC9D,CAAC;YACF,mCAAmC;QACrC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,uDAAuD,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,qBAAqB;IAErB,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,sEAAsE;YACtE,uDAAuD;QACzD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAmB,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAoB,CAAC,CAAC;QAE5F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAsB;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,0EAA0E;QAC1E,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAG;;;;;KAKX,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBACvB,IAAI,CAAC,OAAO,EAAE;gBACd,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS;gBACpD,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtD,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,UAAU;gBAChD,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;gBAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,QAAwB;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEtD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,kDAAkD;YAClD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACvC;;;;;iDAKyC,EACzC,CAAC,OAAO,CAAC,SAAS,CAAC,CACpB,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAErD,gEAAgE;YAChE,0EAA0E;YAC1E,+DAA+D;YAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACjB;;;;;;;;;;iDAUyC,EACzC;gBACE,OAAO,CAAC,SAAS;gBACjB,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;gBAC1D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtE,YAAY,EAAE,WAAW;aAC1B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAuB;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9C,MAAM,GAAG,GAAG;;;;;KAKX,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBACvB,IAAI,CAAC,OAAO,EAAE;gBACd,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;gBAClD,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBAC5C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM;gBAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iCAAiC;IAEjC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,0EAA0E;YAC1E,2EAA2E;YAC3E,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAClC,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxE,OAAO,CAAC,IAAI,CACV,uFAAuF;wBACvF,uDAAuD,CACxD,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAI,KAAe,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,OAAO,CAAC,KAAK,CACX,qDAAqD,MAAM,IAAI;oBAC/D,mEAAmE,CACpE,CAAC;gBACF,qCAAqC;YACvC,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,uBAAuB;IAEvB,0CAA0C;IAClC,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,UAAkB;QAC5D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACpC;kDAC0C,EAC1C,CAAC,SAAS,EAAE,UAAU,CAAC,CACxB,CAAC;YACF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mEAAmE;YACnE,IAAI,CAAC;gBACH,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;gBACpE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtC,MAAM,CAAC,GAAG,GAA8C,CAAC;wBACzD,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,sDAAsD;YACxD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,+BAA+B;IACvB,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,SAAiB;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACpC;iDACyC,EACzC,CAAC,SAAS,EAAE,SAAS,CAAC,CACvB,CAAC;YACF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,IAAI,CAAC;gBACH,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;gBAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtC,MAAM,CAAC,GAAG,GAA6C,CAAC;wBACxD,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;oBAChD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,6DAA6D;YAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACpD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,MAAM;YAAE,OAAO,CAAC,kCAAkC;QAEtD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,SAAS,gDAAgD,CAAC,CAAC;YAC9F,sEAAsE;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAI,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YACrD,yDAAyD;YACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC7E,OAAO,CAAC,kCAAkC;YAC5C,CAAC;YACD,gCAAgC;YAChC,OAAO,CAAC,IAAI,CAAC,2DAA2D,SAAS,GAAG,EAAE,MAAM,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,CAAmC;QACrD,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,IAAI;YAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;CACF;AA7gBD,8CA6gBC"}
|