@devflow-tools/database 0.8.10 → 0.8.11
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/CHANGELOG.md +17 -0
- package/README.md +68 -0
- package/dist/database.d.ts +17 -2
- package/dist/database.js +197 -24
- package/package.json +2 -2
- package/src/database.ts +219 -25
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.8.11](https://github.com/shilongfeicool/dev-flow/compare/v0.8.10...v0.8.11) (2026-07-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **database:** add kind and workflow_run_id columns, add cleanupStaleRecords method ([b93ca4e](https://github.com/shilongfeicool/dev-flow/commit/b93ca4ede19aff7ea249c1cbca05e4b6c507d628))
|
|
12
|
+
* **database:** drop FK constraint, closeSession dual-path query, idempotent listSkillExecutions, session_id index ([5d9091a](https://github.com/shilongfeicool/dev-flow/commit/5d9091a9f0586c0dee247e1d8b778e4b3fa07653))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **database:** add sessions table, add session_id to skill_executions and tool_call_events, remove tokens_used ([1decff8](https://github.com/shilongfeicool/dev-flow/commit/1decff8ff68f3581228f4f3dc31414e0acdcac66))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
## [0.8.10](https://github.com/shilongfeicool/dev-flow/compare/v0.8.6...v0.8.10) (2026-07-10)
|
|
7
24
|
|
|
8
25
|
|
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# @devflow-tools/database
|
|
2
|
+
|
|
3
|
+
DevFlow 数据库层 — 基于 better-sqlite3 的 SQLite + WAL 模式持久化存储,管理 runs、tool call events、skill executions、project stats 和 settings。
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @devflow-tools/database
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { DevFlowDatabase } from '@devflow-tools/database';
|
|
15
|
+
|
|
16
|
+
const db = new DevFlowDatabase('/path/to/project');
|
|
17
|
+
|
|
18
|
+
// 记录 tool call 事件
|
|
19
|
+
db.insertToolCallEvent({
|
|
20
|
+
eventId: 'evt:123',
|
|
21
|
+
executionId: 'exec:456',
|
|
22
|
+
toolName: 'bash',
|
|
23
|
+
command: 'npm test',
|
|
24
|
+
exitCode: 0,
|
|
25
|
+
durationMs: 1200,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// 查询事件
|
|
29
|
+
const events = db.listToolCallEvents('exec:456');
|
|
30
|
+
|
|
31
|
+
// 项目统计
|
|
32
|
+
const stats = db.getProjectStats('/path/to/project');
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
- **SQLite + WAL 模式** — 高并发读写的本地持久化存储
|
|
38
|
+
- **runs 表** — AI agent 执行运行记录
|
|
39
|
+
- **tool_call_events 表** — 每次 tool 调用的详细事件(exitCode、stderr、output、durationMs)
|
|
40
|
+
- **skill_executions 表** — skill 执行生命周期管理(start → running → completed/failed)
|
|
41
|
+
- **project_stats 表** — 项目维度的聚合统计
|
|
42
|
+
- **settings 表** — KV 配置存储
|
|
43
|
+
|
|
44
|
+
## Tables
|
|
45
|
+
|
|
46
|
+
| 表名 | 说明 |
|
|
47
|
+
|------|------|
|
|
48
|
+
| `runs` | Agent 运行记录(id、source、tool、status、token_used) |
|
|
49
|
+
| `tool_call_events` | Tool 调用事件(event_id、execution_id、tool_name、command、exit_code、stderr、output、is_mcp_tool) |
|
|
50
|
+
| `skill_executions` | Skill 执行记录(execution_id、skill_name、status、total_tool_calls、mcp_compliance_rate) |
|
|
51
|
+
| `project_stats` | 项目聚合统计(total_runs、successful_runs、total_tokens) |
|
|
52
|
+
| `settings` | KV 配置(key、value) |
|
|
53
|
+
|
|
54
|
+
## API
|
|
55
|
+
|
|
56
|
+
- `new DevFlowDatabase(projectRoot)` — 构造函数,自动创建 `.devflow/devflow.db` 并初始化 schema
|
|
57
|
+
- `.insertToolCallEvent(data)` — 记录工具调用事件
|
|
58
|
+
- `.updateToolCallEvent(eventId, updates)` — 更新事件(如回填 output)
|
|
59
|
+
- `.listToolCallEvents(executionId)` — 列出某次执行的所有事件
|
|
60
|
+
- `.insertSkillExecution(data)` — 创建 skill 执行记录
|
|
61
|
+
- `.updateSkillExecution(id, data)` — 更新 skill 执行状态
|
|
62
|
+
- `.getProjectStats(root)` — 获取项目统计
|
|
63
|
+
- `.upsertProjectStats(root, data)` — 更新或插入项目统计
|
|
64
|
+
- `.getSetting(key)` / `.setSetting(key, value)` — KV 配置读写
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
MIT
|
package/dist/database.d.ts
CHANGED
|
@@ -15,8 +15,20 @@ export declare class DevFlowDatabase {
|
|
|
15
15
|
setSetting(key: string, value: string): void;
|
|
16
16
|
getSetting(key: string): string | null;
|
|
17
17
|
deleteSetting(key: string): void;
|
|
18
|
+
insertSession(params: {
|
|
19
|
+
id: string;
|
|
20
|
+
projectRoot: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
startedAt: number;
|
|
23
|
+
}): void;
|
|
24
|
+
getSession(id: string): any | null;
|
|
25
|
+
listSessions(limit: number, offset: number, projectRoot?: string): any[];
|
|
26
|
+
closeSession(id: string, finishedAt?: number): void;
|
|
27
|
+
listToolCallEventsBySession(sessionId: string): any[];
|
|
28
|
+
listToolCallEventsBySessions(sessionIds: string[]): Record<string, any[]>;
|
|
18
29
|
insertSkillExecution(params: {
|
|
19
30
|
executionId: string;
|
|
31
|
+
sessionId?: string;
|
|
20
32
|
skillName: string;
|
|
21
33
|
startedAt: number;
|
|
22
34
|
status: string;
|
|
@@ -28,7 +40,6 @@ export declare class DevFlowDatabase {
|
|
|
28
40
|
status?: string;
|
|
29
41
|
finishedAt?: number;
|
|
30
42
|
totalDuration?: number;
|
|
31
|
-
totalTokens?: number;
|
|
32
43
|
mcpComplianceRate?: number;
|
|
33
44
|
missedMcpTools?: string[];
|
|
34
45
|
totalToolCalls?: number;
|
|
@@ -40,6 +51,7 @@ export declare class DevFlowDatabase {
|
|
|
40
51
|
insertToolCallEvent(params: {
|
|
41
52
|
eventId: string;
|
|
42
53
|
executionId: string;
|
|
54
|
+
sessionId?: string;
|
|
43
55
|
timestamp: number;
|
|
44
56
|
toolName: string;
|
|
45
57
|
toolType: string;
|
|
@@ -47,25 +59,28 @@ export declare class DevFlowDatabase {
|
|
|
47
59
|
mcpToolName?: string;
|
|
48
60
|
mcpEnforced: boolean;
|
|
49
61
|
mcpFallback: boolean;
|
|
62
|
+
kind?: string;
|
|
50
63
|
input: unknown;
|
|
51
64
|
output?: unknown;
|
|
52
|
-
tokensUsed: number;
|
|
53
65
|
duration: number;
|
|
54
66
|
parentToolCallId?: string;
|
|
55
67
|
subagentId?: string;
|
|
56
68
|
error?: string;
|
|
57
69
|
blocked: boolean;
|
|
58
70
|
blockReason?: string;
|
|
71
|
+
workflowRunId?: string;
|
|
59
72
|
}): void;
|
|
60
73
|
listToolCallEvents(executionId: string): any[];
|
|
61
74
|
updateToolCallEvent(eventId: string, updates: {
|
|
62
75
|
output?: string;
|
|
63
76
|
error?: string;
|
|
77
|
+
duration?: number;
|
|
64
78
|
}): void;
|
|
65
79
|
getMcpCompliance(): {
|
|
66
80
|
overall: number;
|
|
67
81
|
bySkill: Record<string, number>;
|
|
68
82
|
missedTools: string[];
|
|
69
83
|
};
|
|
84
|
+
cleanupStaleRecords(): void;
|
|
70
85
|
close(): void;
|
|
71
86
|
}
|
package/dist/database.js
CHANGED
|
@@ -115,8 +115,7 @@ class DevFlowDatabase {
|
|
|
115
115
|
subagent_id TEXT,
|
|
116
116
|
error TEXT,
|
|
117
117
|
blocked INTEGER DEFAULT 0 CHECK (blocked IN (0, 1)),
|
|
118
|
-
block_reason TEXT
|
|
119
|
-
FOREIGN KEY (execution_id) REFERENCES skill_executions(execution_id) ON DELETE CASCADE
|
|
118
|
+
block_reason TEXT
|
|
120
119
|
);
|
|
121
120
|
|
|
122
121
|
CREATE INDEX IF NOT EXISTS idx_executions_skill ON skill_executions(skill_name);
|
|
@@ -126,7 +125,46 @@ class DevFlowDatabase {
|
|
|
126
125
|
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON tool_call_events(timestamp);
|
|
127
126
|
CREATE INDEX IF NOT EXISTS idx_events_tool_type ON tool_call_events(tool_type);
|
|
128
127
|
CREATE INDEX IF NOT EXISTS idx_events_mcp ON tool_call_events(is_mcp_tool);
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_events_session ON tool_call_events(session_id);
|
|
129
|
+
|
|
130
|
+
-- Sessions table: top-level container per Claude Code session
|
|
131
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
132
|
+
id TEXT PRIMARY KEY,
|
|
133
|
+
project_root TEXT NOT NULL,
|
|
134
|
+
label TEXT,
|
|
135
|
+
started_at INTEGER NOT NULL,
|
|
136
|
+
finished_at INTEGER,
|
|
137
|
+
duration_ms INTEGER DEFAULT 0,
|
|
138
|
+
total_tool_calls INTEGER DEFAULT 0,
|
|
139
|
+
mcp_tool_calls INTEGER DEFAULT 0,
|
|
140
|
+
direct_tool_calls INTEGER DEFAULT 0,
|
|
141
|
+
subagent_count INTEGER DEFAULT 0,
|
|
142
|
+
status TEXT NOT NULL DEFAULT 'running' CHECK (status IN ('running', 'completed', 'failed'))
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_root);
|
|
146
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_started ON sessions(started_at DESC);
|
|
129
147
|
`);
|
|
148
|
+
// Migration: add session_id to skill_executions (SQLite compat — ignore if exists)
|
|
149
|
+
try {
|
|
150
|
+
this.db.exec('ALTER TABLE skill_executions ADD COLUMN session_id TEXT REFERENCES sessions(id)');
|
|
151
|
+
}
|
|
152
|
+
catch { }
|
|
153
|
+
// Migration: add session_id to tool_call_events
|
|
154
|
+
try {
|
|
155
|
+
this.db.exec('ALTER TABLE tool_call_events ADD COLUMN session_id TEXT REFERENCES sessions(id)');
|
|
156
|
+
}
|
|
157
|
+
catch { }
|
|
158
|
+
// Migration: kind column for event type classification
|
|
159
|
+
try {
|
|
160
|
+
this.db.exec("ALTER TABLE tool_call_events ADD COLUMN kind TEXT DEFAULT 'tool_use'");
|
|
161
|
+
}
|
|
162
|
+
catch { }
|
|
163
|
+
// Migration: workflow run persistence
|
|
164
|
+
try {
|
|
165
|
+
this.db.exec('ALTER TABLE tool_call_events ADD COLUMN workflow_run_id TEXT');
|
|
166
|
+
}
|
|
167
|
+
catch { }
|
|
130
168
|
}
|
|
131
169
|
insertRun(run) {
|
|
132
170
|
this.db.prepare(`
|
|
@@ -234,13 +272,146 @@ class DevFlowDatabase {
|
|
|
234
272
|
deleteSetting(key) {
|
|
235
273
|
this.db.prepare('DELETE FROM settings WHERE key = ?').run(key);
|
|
236
274
|
}
|
|
275
|
+
// ---- Sessions ----
|
|
276
|
+
insertSession(params) {
|
|
277
|
+
this.db.prepare(`
|
|
278
|
+
INSERT OR IGNORE INTO sessions (id, project_root, label, started_at, status)
|
|
279
|
+
VALUES (?, ?, ?, ?, 'running')
|
|
280
|
+
`).run(params.id, params.projectRoot, params.label ?? null, params.startedAt);
|
|
281
|
+
}
|
|
282
|
+
getSession(id) {
|
|
283
|
+
const row = this.db.prepare('SELECT * FROM sessions WHERE id = ?').get(id);
|
|
284
|
+
if (!row)
|
|
285
|
+
return null;
|
|
286
|
+
return {
|
|
287
|
+
id: row.id,
|
|
288
|
+
projectRoot: row.project_root,
|
|
289
|
+
label: row.label,
|
|
290
|
+
startedAt: row.started_at,
|
|
291
|
+
finishedAt: row.finished_at,
|
|
292
|
+
durationMs: row.duration_ms,
|
|
293
|
+
totalToolCalls: row.total_tool_calls,
|
|
294
|
+
mcpToolCalls: row.mcp_tool_calls,
|
|
295
|
+
directToolCalls: row.direct_tool_calls,
|
|
296
|
+
subagentCount: row.subagent_count,
|
|
297
|
+
status: row.status,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
listSessions(limit, offset, projectRoot) {
|
|
301
|
+
let query = 'SELECT * FROM sessions';
|
|
302
|
+
const params = [];
|
|
303
|
+
if (projectRoot) {
|
|
304
|
+
query += ' WHERE project_root = ?';
|
|
305
|
+
params.push(projectRoot);
|
|
306
|
+
}
|
|
307
|
+
query += ' ORDER BY started_at DESC LIMIT ? OFFSET ?';
|
|
308
|
+
params.push(Number(limit), Number(offset));
|
|
309
|
+
const rows = this.db.prepare(query).all(...params);
|
|
310
|
+
return rows.map((row) => ({
|
|
311
|
+
id: row.id,
|
|
312
|
+
projectRoot: row.project_root,
|
|
313
|
+
label: row.label,
|
|
314
|
+
startedAt: row.started_at,
|
|
315
|
+
finishedAt: row.finished_at,
|
|
316
|
+
durationMs: row.duration_ms,
|
|
317
|
+
totalToolCalls: row.total_tool_calls,
|
|
318
|
+
mcpToolCalls: row.mcp_tool_calls,
|
|
319
|
+
directToolCalls: row.direct_tool_calls,
|
|
320
|
+
subagentCount: row.subagent_count,
|
|
321
|
+
status: row.status,
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
closeSession(id, finishedAt) {
|
|
325
|
+
const events = this.db.prepare('SELECT * FROM tool_call_events WHERE session_id = ? OR execution_id = ?').all(id, id);
|
|
326
|
+
// deduplicate by event_id
|
|
327
|
+
const seen = new Set();
|
|
328
|
+
const unique = events.filter((e) => {
|
|
329
|
+
if (seen.has(e.event_id))
|
|
330
|
+
return false;
|
|
331
|
+
seen.add(e.event_id);
|
|
332
|
+
return true;
|
|
333
|
+
});
|
|
334
|
+
const totalToolCalls = unique.length;
|
|
335
|
+
const mcpToolCalls = unique.filter((e) => e.is_mcp_tool === 1).length;
|
|
336
|
+
const directToolCalls = totalToolCalls - mcpToolCalls;
|
|
337
|
+
const subagentCount = unique.filter((e) => e.tool_type === 'subagent').length;
|
|
338
|
+
const timestamps = unique.map((e) => e.timestamp).filter(Boolean);
|
|
339
|
+
const durationMs = timestamps.length >= 2
|
|
340
|
+
? Math.max(...timestamps) - Math.min(...timestamps)
|
|
341
|
+
: 0;
|
|
342
|
+
this.db.prepare(`
|
|
343
|
+
UPDATE sessions
|
|
344
|
+
SET finished_at = ?, duration_ms = ?, total_tool_calls = ?,
|
|
345
|
+
mcp_tool_calls = ?, direct_tool_calls = ?, subagent_count = ?,
|
|
346
|
+
status = 'completed'
|
|
347
|
+
WHERE id = ?
|
|
348
|
+
`).run(finishedAt ?? Date.now(), durationMs, totalToolCalls, mcpToolCalls, directToolCalls, subagentCount, id);
|
|
349
|
+
}
|
|
350
|
+
listToolCallEventsBySession(sessionId) {
|
|
351
|
+
const rows = this.db.prepare('SELECT * FROM tool_call_events WHERE session_id = ? ORDER BY timestamp ASC').all(sessionId);
|
|
352
|
+
return rows.map(row => ({
|
|
353
|
+
eventId: row.event_id,
|
|
354
|
+
executionId: row.execution_id,
|
|
355
|
+
sessionId: row.session_id,
|
|
356
|
+
timestamp: row.timestamp,
|
|
357
|
+
toolName: row.tool_name,
|
|
358
|
+
toolType: row.tool_type,
|
|
359
|
+
isMcpTool: row.is_mcp_tool === 1,
|
|
360
|
+
mcpToolName: row.mcp_tool_name,
|
|
361
|
+
mcpEnforced: row.mcp_enforced === 1,
|
|
362
|
+
mcpFallback: row.mcp_fallback === 1,
|
|
363
|
+
kind: row.kind,
|
|
364
|
+
input: row.input ? JSON.parse(row.input) : null,
|
|
365
|
+
output: row.output ? JSON.parse(row.output) : null,
|
|
366
|
+
duration: row.duration,
|
|
367
|
+
parentToolCallId: row.parent_tool_call_id,
|
|
368
|
+
subagentId: row.subagent_id,
|
|
369
|
+
error: row.error,
|
|
370
|
+
blocked: row.blocked === 1,
|
|
371
|
+
blockReason: row.block_reason,
|
|
372
|
+
}));
|
|
373
|
+
}
|
|
374
|
+
listToolCallEventsBySessions(sessionIds) {
|
|
375
|
+
if (sessionIds.length === 0)
|
|
376
|
+
return {};
|
|
377
|
+
const placeholders = sessionIds.map(() => '?').join(',');
|
|
378
|
+
const rows = this.db.prepare(`SELECT * FROM tool_call_events WHERE session_id IN (${placeholders}) ORDER BY timestamp ASC`).all(...sessionIds);
|
|
379
|
+
const grouped = {};
|
|
380
|
+
for (const row of rows) {
|
|
381
|
+
const sid = row.session_id;
|
|
382
|
+
if (!grouped[sid])
|
|
383
|
+
grouped[sid] = [];
|
|
384
|
+
grouped[sid].push({
|
|
385
|
+
eventId: row.event_id,
|
|
386
|
+
executionId: row.execution_id,
|
|
387
|
+
sessionId: row.session_id,
|
|
388
|
+
timestamp: row.timestamp,
|
|
389
|
+
toolName: row.tool_name,
|
|
390
|
+
toolType: row.tool_type,
|
|
391
|
+
isMcpTool: row.is_mcp_tool === 1,
|
|
392
|
+
mcpToolName: row.mcp_tool_name,
|
|
393
|
+
mcpEnforced: row.mcp_enforced === 1,
|
|
394
|
+
mcpFallback: row.mcp_fallback === 1,
|
|
395
|
+
kind: row.kind,
|
|
396
|
+
input: row.input ? JSON.parse(row.input) : null,
|
|
397
|
+
output: row.output ? JSON.parse(row.output) : null,
|
|
398
|
+
duration: row.duration,
|
|
399
|
+
parentToolCallId: row.parent_tool_call_id,
|
|
400
|
+
subagentId: row.subagent_id,
|
|
401
|
+
error: row.error,
|
|
402
|
+
blocked: row.blocked === 1,
|
|
403
|
+
blockReason: row.block_reason,
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
return grouped;
|
|
407
|
+
}
|
|
237
408
|
// ---- Skill Executions ----
|
|
238
409
|
insertSkillExecution(params) {
|
|
239
410
|
this.db.prepare(`
|
|
240
411
|
INSERT INTO skill_executions
|
|
241
|
-
(execution_id, skill_name, started_at, status, required_mcp_tools, available_mcp_tools)
|
|
242
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
243
|
-
`).run(params.executionId, params.skillName, params.startedAt, params.status, params.requiredMcpTools ? JSON.stringify(params.requiredMcpTools) : null, params.availableMcpTools ? JSON.stringify(params.availableMcpTools) : null);
|
|
412
|
+
(execution_id, session_id, skill_name, started_at, status, required_mcp_tools, available_mcp_tools)
|
|
413
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
414
|
+
`).run(params.executionId, params.sessionId ?? null, params.skillName, params.startedAt, params.status, params.requiredMcpTools ? JSON.stringify(params.requiredMcpTools) : null, params.availableMcpTools ? JSON.stringify(params.availableMcpTools) : null);
|
|
244
415
|
}
|
|
245
416
|
getSkillExecution(executionId) {
|
|
246
417
|
const row = this.db.prepare('SELECT * FROM skill_executions WHERE execution_id = ?').get(executionId);
|
|
@@ -248,6 +419,7 @@ class DevFlowDatabase {
|
|
|
248
419
|
return null;
|
|
249
420
|
return {
|
|
250
421
|
executionId: row.execution_id,
|
|
422
|
+
sessionId: row.session_id,
|
|
251
423
|
skillName: row.skill_name,
|
|
252
424
|
startedAt: row.started_at,
|
|
253
425
|
finishedAt: row.finished_at,
|
|
@@ -258,7 +430,6 @@ class DevFlowDatabase {
|
|
|
258
430
|
mcpToolCalls: row.mcp_tool_calls,
|
|
259
431
|
directToolCalls: row.direct_tool_calls,
|
|
260
432
|
subagentCount: row.subagent_count,
|
|
261
|
-
totalTokens: row.total_tokens,
|
|
262
433
|
totalDuration: row.total_duration,
|
|
263
434
|
mcpComplianceRate: row.mcp_compliance_rate,
|
|
264
435
|
missedMcpTools: row.missed_mcp_tools ? JSON.parse(row.missed_mcp_tools) : null,
|
|
@@ -280,10 +451,6 @@ class DevFlowDatabase {
|
|
|
280
451
|
sets.push('total_duration = ?');
|
|
281
452
|
values.push(updates.totalDuration);
|
|
282
453
|
}
|
|
283
|
-
if (updates.totalTokens !== undefined) {
|
|
284
|
-
sets.push('total_tokens = ?');
|
|
285
|
-
values.push(updates.totalTokens);
|
|
286
|
-
}
|
|
287
454
|
if (updates.mcpComplianceRate !== undefined) {
|
|
288
455
|
sets.push('mcp_compliance_rate = ?');
|
|
289
456
|
values.push(updates.mcpComplianceRate);
|
|
@@ -314,13 +481,6 @@ class DevFlowDatabase {
|
|
|
314
481
|
}
|
|
315
482
|
}
|
|
316
483
|
listSkillExecutions(limit, skillName) {
|
|
317
|
-
// Auto-timeout stale running executions (> 30 minutes)
|
|
318
|
-
const timeoutThreshold = Date.now() - 30 * 60 * 1000;
|
|
319
|
-
this.db.prepare(`
|
|
320
|
-
UPDATE skill_executions
|
|
321
|
-
SET status = 'failed', finished_at = ?
|
|
322
|
-
WHERE status = 'running' AND started_at < ?
|
|
323
|
-
`).run(Date.now(), timeoutThreshold);
|
|
324
484
|
let query = 'SELECT * FROM skill_executions';
|
|
325
485
|
const params = [];
|
|
326
486
|
if (skillName) {
|
|
@@ -332,6 +492,7 @@ class DevFlowDatabase {
|
|
|
332
492
|
const rows = this.db.prepare(query).all(...params);
|
|
333
493
|
return rows.map(row => ({
|
|
334
494
|
executionId: row.execution_id,
|
|
495
|
+
sessionId: row.session_id,
|
|
335
496
|
skillName: row.skill_name,
|
|
336
497
|
startedAt: row.started_at,
|
|
337
498
|
finishedAt: row.finished_at,
|
|
@@ -340,7 +501,6 @@ class DevFlowDatabase {
|
|
|
340
501
|
mcpToolCalls: row.mcp_tool_calls,
|
|
341
502
|
directToolCalls: row.direct_tool_calls,
|
|
342
503
|
subagentCount: row.subagent_count,
|
|
343
|
-
totalTokens: row.total_tokens,
|
|
344
504
|
totalDuration: row.total_duration,
|
|
345
505
|
mcpComplianceRate: row.mcp_compliance_rate,
|
|
346
506
|
}));
|
|
@@ -349,11 +509,11 @@ class DevFlowDatabase {
|
|
|
349
509
|
insertToolCallEvent(params) {
|
|
350
510
|
this.db.prepare(`
|
|
351
511
|
INSERT INTO tool_call_events
|
|
352
|
-
(event_id, execution_id, timestamp, tool_name, tool_type, is_mcp_tool,
|
|
353
|
-
mcp_tool_name, mcp_enforced, mcp_fallback, input, output,
|
|
354
|
-
parent_tool_call_id, subagent_id, error, blocked, block_reason)
|
|
355
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
356
|
-
`).run(params.eventId, params.executionId, params.timestamp, params.toolName, params.toolType, params.isMcpTool ? 1 : 0, params.mcpToolName || null, params.mcpEnforced ? 1 : 0, params.mcpFallback ? 1 : 0, JSON.stringify(params.input) ?? null, params.output ? JSON.stringify(params.output) : null, params.
|
|
512
|
+
(event_id, execution_id, session_id, timestamp, tool_name, tool_type, is_mcp_tool,
|
|
513
|
+
mcp_tool_name, mcp_enforced, mcp_fallback, kind, input, output, duration,
|
|
514
|
+
parent_tool_call_id, subagent_id, error, blocked, block_reason, workflow_run_id)
|
|
515
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
516
|
+
`).run(params.eventId, params.executionId || null, params.sessionId ?? null, params.timestamp, params.toolName, params.toolType, params.isMcpTool ? 1 : 0, params.mcpToolName || null, params.mcpEnforced ? 1 : 0, params.mcpFallback ? 1 : 0, params.kind ?? 'tool_use', JSON.stringify(params.input) ?? null, params.output ? JSON.stringify(params.output) : null, params.duration, params.parentToolCallId || null, params.subagentId || null, params.error || null, params.blocked ? 1 : 0, params.blockReason || null, params.workflowRunId || null);
|
|
357
517
|
// Update execution summary counters
|
|
358
518
|
this.db.prepare(`
|
|
359
519
|
UPDATE skill_executions
|
|
@@ -369,6 +529,7 @@ class DevFlowDatabase {
|
|
|
369
529
|
return rows.map(row => ({
|
|
370
530
|
eventId: row.event_id,
|
|
371
531
|
executionId: row.execution_id,
|
|
532
|
+
sessionId: row.session_id,
|
|
372
533
|
timestamp: row.timestamp,
|
|
373
534
|
toolName: row.tool_name,
|
|
374
535
|
toolType: row.tool_type,
|
|
@@ -376,9 +537,9 @@ class DevFlowDatabase {
|
|
|
376
537
|
mcpToolName: row.mcp_tool_name,
|
|
377
538
|
mcpEnforced: row.mcp_enforced === 1,
|
|
378
539
|
mcpFallback: row.mcp_fallback === 1,
|
|
540
|
+
kind: row.kind,
|
|
379
541
|
input: row.input ? JSON.parse(row.input) : null,
|
|
380
542
|
output: row.output ? JSON.parse(row.output) : null,
|
|
381
|
-
tokensUsed: row.tokens_used,
|
|
382
543
|
duration: row.duration,
|
|
383
544
|
parentToolCallId: row.parent_tool_call_id,
|
|
384
545
|
subagentId: row.subagent_id,
|
|
@@ -398,6 +559,10 @@ class DevFlowDatabase {
|
|
|
398
559
|
sets.push('error = ?');
|
|
399
560
|
values.push(updates.error);
|
|
400
561
|
}
|
|
562
|
+
if (updates.duration !== undefined) {
|
|
563
|
+
sets.push('duration = ?');
|
|
564
|
+
values.push(updates.duration);
|
|
565
|
+
}
|
|
401
566
|
if (sets.length > 0) {
|
|
402
567
|
values.push(eventId);
|
|
403
568
|
this.db.prepare(`UPDATE tool_call_events SET ${sets.join(', ')} WHERE event_id = ?`).run(...values);
|
|
@@ -441,6 +606,14 @@ class DevFlowDatabase {
|
|
|
441
606
|
const missedTools = missedRows.map((row) => row.mcp_tool_name);
|
|
442
607
|
return { overall, bySkill, missedTools };
|
|
443
608
|
}
|
|
609
|
+
cleanupStaleRecords() {
|
|
610
|
+
const cutoff = Date.now() - 30 * 60 * 1000;
|
|
611
|
+
try {
|
|
612
|
+
this.db.prepare(`UPDATE skill_executions SET status = 'failed', finished_at = ? WHERE status = 'running' AND started_at < ?`).run(Date.now(), cutoff);
|
|
613
|
+
this.db.prepare(`UPDATE sessions SET status = 'failed', finished_at = ? WHERE status = 'running' AND started_at < ?`).run(Date.now(), cutoff);
|
|
614
|
+
}
|
|
615
|
+
catch { /* best-effort */ }
|
|
616
|
+
}
|
|
444
617
|
close() {
|
|
445
618
|
this.db.close();
|
|
446
619
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devflow-tools/database",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.11",
|
|
4
4
|
"description": "DevFlow SQLite database package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
"typescript": "^5.5.0",
|
|
14
14
|
"vitest": "^2.0.0"
|
|
15
15
|
},
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "a0a0b61377aa88ebbd380f50a5d532f63175ef45"
|
|
17
17
|
}
|
package/src/database.ts
CHANGED
|
@@ -119,8 +119,7 @@ export class DevFlowDatabase {
|
|
|
119
119
|
subagent_id TEXT,
|
|
120
120
|
error TEXT,
|
|
121
121
|
blocked INTEGER DEFAULT 0 CHECK (blocked IN (0, 1)),
|
|
122
|
-
block_reason TEXT
|
|
123
|
-
FOREIGN KEY (execution_id) REFERENCES skill_executions(execution_id) ON DELETE CASCADE
|
|
122
|
+
block_reason TEXT
|
|
124
123
|
);
|
|
125
124
|
|
|
126
125
|
CREATE INDEX IF NOT EXISTS idx_executions_skill ON skill_executions(skill_name);
|
|
@@ -130,7 +129,35 @@ export class DevFlowDatabase {
|
|
|
130
129
|
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON tool_call_events(timestamp);
|
|
131
130
|
CREATE INDEX IF NOT EXISTS idx_events_tool_type ON tool_call_events(tool_type);
|
|
132
131
|
CREATE INDEX IF NOT EXISTS idx_events_mcp ON tool_call_events(is_mcp_tool);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_events_session ON tool_call_events(session_id);
|
|
133
|
+
|
|
134
|
+
-- Sessions table: top-level container per Claude Code session
|
|
135
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
136
|
+
id TEXT PRIMARY KEY,
|
|
137
|
+
project_root TEXT NOT NULL,
|
|
138
|
+
label TEXT,
|
|
139
|
+
started_at INTEGER NOT NULL,
|
|
140
|
+
finished_at INTEGER,
|
|
141
|
+
duration_ms INTEGER DEFAULT 0,
|
|
142
|
+
total_tool_calls INTEGER DEFAULT 0,
|
|
143
|
+
mcp_tool_calls INTEGER DEFAULT 0,
|
|
144
|
+
direct_tool_calls INTEGER DEFAULT 0,
|
|
145
|
+
subagent_count INTEGER DEFAULT 0,
|
|
146
|
+
status TEXT NOT NULL DEFAULT 'running' CHECK (status IN ('running', 'completed', 'failed'))
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_root);
|
|
150
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_started ON sessions(started_at DESC);
|
|
133
151
|
`);
|
|
152
|
+
|
|
153
|
+
// Migration: add session_id to skill_executions (SQLite compat — ignore if exists)
|
|
154
|
+
try { this.db.exec('ALTER TABLE skill_executions ADD COLUMN session_id TEXT REFERENCES sessions(id)'); } catch {}
|
|
155
|
+
// Migration: add session_id to tool_call_events
|
|
156
|
+
try { this.db.exec('ALTER TABLE tool_call_events ADD COLUMN session_id TEXT REFERENCES sessions(id)'); } catch {}
|
|
157
|
+
// Migration: kind column for event type classification
|
|
158
|
+
try { this.db.exec("ALTER TABLE tool_call_events ADD COLUMN kind TEXT DEFAULT 'tool_use'"); } catch {}
|
|
159
|
+
// Migration: workflow run persistence
|
|
160
|
+
try { this.db.exec('ALTER TABLE tool_call_events ADD COLUMN workflow_run_id TEXT'); } catch {}
|
|
134
161
|
}
|
|
135
162
|
|
|
136
163
|
insertRun(run: any): void {
|
|
@@ -290,10 +317,165 @@ export class DevFlowDatabase {
|
|
|
290
317
|
this.db.prepare('DELETE FROM settings WHERE key = ?').run(key);
|
|
291
318
|
}
|
|
292
319
|
|
|
320
|
+
// ---- Sessions ----
|
|
321
|
+
|
|
322
|
+
insertSession(params: {
|
|
323
|
+
id: string;
|
|
324
|
+
projectRoot: string;
|
|
325
|
+
label?: string;
|
|
326
|
+
startedAt: number;
|
|
327
|
+
}): void {
|
|
328
|
+
this.db.prepare(`
|
|
329
|
+
INSERT OR IGNORE INTO sessions (id, project_root, label, started_at, status)
|
|
330
|
+
VALUES (?, ?, ?, ?, 'running')
|
|
331
|
+
`).run(params.id, params.projectRoot, params.label ?? null, params.startedAt);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
getSession(id: string): any | null {
|
|
335
|
+
const row = this.db.prepare('SELECT * FROM sessions WHERE id = ?').get(id) as any;
|
|
336
|
+
if (!row) return null;
|
|
337
|
+
return {
|
|
338
|
+
id: row.id,
|
|
339
|
+
projectRoot: row.project_root,
|
|
340
|
+
label: row.label,
|
|
341
|
+
startedAt: row.started_at,
|
|
342
|
+
finishedAt: row.finished_at,
|
|
343
|
+
durationMs: row.duration_ms,
|
|
344
|
+
totalToolCalls: row.total_tool_calls,
|
|
345
|
+
mcpToolCalls: row.mcp_tool_calls,
|
|
346
|
+
directToolCalls: row.direct_tool_calls,
|
|
347
|
+
subagentCount: row.subagent_count,
|
|
348
|
+
status: row.status,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
listSessions(limit: number, offset: number, projectRoot?: string): any[] {
|
|
353
|
+
let query = 'SELECT * FROM sessions';
|
|
354
|
+
const params: any[] = [];
|
|
355
|
+
if (projectRoot) {
|
|
356
|
+
query += ' WHERE project_root = ?';
|
|
357
|
+
params.push(projectRoot);
|
|
358
|
+
}
|
|
359
|
+
query += ' ORDER BY started_at DESC LIMIT ? OFFSET ?';
|
|
360
|
+
params.push(Number(limit), Number(offset));
|
|
361
|
+
|
|
362
|
+
const rows = this.db.prepare(query).all(...params) as any[];
|
|
363
|
+
return rows.map((row: any) => ({
|
|
364
|
+
id: row.id,
|
|
365
|
+
projectRoot: row.project_root,
|
|
366
|
+
label: row.label,
|
|
367
|
+
startedAt: row.started_at,
|
|
368
|
+
finishedAt: row.finished_at,
|
|
369
|
+
durationMs: row.duration_ms,
|
|
370
|
+
totalToolCalls: row.total_tool_calls,
|
|
371
|
+
mcpToolCalls: row.mcp_tool_calls,
|
|
372
|
+
directToolCalls: row.direct_tool_calls,
|
|
373
|
+
subagentCount: row.subagent_count,
|
|
374
|
+
status: row.status,
|
|
375
|
+
}));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
closeSession(id: string, finishedAt?: number): void {
|
|
379
|
+
const events = this.db.prepare(
|
|
380
|
+
'SELECT * FROM tool_call_events WHERE session_id = ? OR execution_id = ?'
|
|
381
|
+
).all(id, id) as any[];
|
|
382
|
+
|
|
383
|
+
// deduplicate by event_id
|
|
384
|
+
const seen = new Set<string>();
|
|
385
|
+
const unique = events.filter((e: any) => {
|
|
386
|
+
if (seen.has(e.event_id)) return false;
|
|
387
|
+
seen.add(e.event_id);
|
|
388
|
+
return true;
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
const totalToolCalls = unique.length;
|
|
392
|
+
const mcpToolCalls = unique.filter((e: any) => e.is_mcp_tool === 1).length;
|
|
393
|
+
const directToolCalls = totalToolCalls - mcpToolCalls;
|
|
394
|
+
const subagentCount = unique.filter((e: any) => e.tool_type === 'subagent').length;
|
|
395
|
+
|
|
396
|
+
const timestamps = unique.map((e: any) => e.timestamp).filter(Boolean) as number[];
|
|
397
|
+
const durationMs = timestamps.length >= 2
|
|
398
|
+
? Math.max(...timestamps) - Math.min(...timestamps)
|
|
399
|
+
: 0;
|
|
400
|
+
|
|
401
|
+
this.db.prepare(`
|
|
402
|
+
UPDATE sessions
|
|
403
|
+
SET finished_at = ?, duration_ms = ?, total_tool_calls = ?,
|
|
404
|
+
mcp_tool_calls = ?, direct_tool_calls = ?, subagent_count = ?,
|
|
405
|
+
status = 'completed'
|
|
406
|
+
WHERE id = ?
|
|
407
|
+
`).run(finishedAt ?? Date.now(), durationMs, totalToolCalls, mcpToolCalls, directToolCalls, subagentCount, id);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
listToolCallEventsBySession(sessionId: string): any[] {
|
|
411
|
+
const rows = this.db.prepare(
|
|
412
|
+
'SELECT * FROM tool_call_events WHERE session_id = ? ORDER BY timestamp ASC'
|
|
413
|
+
).all(sessionId) as any[];
|
|
414
|
+
|
|
415
|
+
return rows.map(row => ({
|
|
416
|
+
eventId: row.event_id,
|
|
417
|
+
executionId: row.execution_id,
|
|
418
|
+
sessionId: row.session_id,
|
|
419
|
+
timestamp: row.timestamp,
|
|
420
|
+
toolName: row.tool_name,
|
|
421
|
+
toolType: row.tool_type,
|
|
422
|
+
isMcpTool: row.is_mcp_tool === 1,
|
|
423
|
+
mcpToolName: row.mcp_tool_name,
|
|
424
|
+
mcpEnforced: row.mcp_enforced === 1,
|
|
425
|
+
mcpFallback: row.mcp_fallback === 1,
|
|
426
|
+
kind: row.kind,
|
|
427
|
+
input: row.input ? JSON.parse(row.input) : null,
|
|
428
|
+
output: row.output ? JSON.parse(row.output) : null,
|
|
429
|
+
duration: row.duration,
|
|
430
|
+
parentToolCallId: row.parent_tool_call_id,
|
|
431
|
+
subagentId: row.subagent_id,
|
|
432
|
+
error: row.error,
|
|
433
|
+
blocked: row.blocked === 1,
|
|
434
|
+
blockReason: row.block_reason,
|
|
435
|
+
}));
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
listToolCallEventsBySessions(sessionIds: string[]): Record<string, any[]> {
|
|
439
|
+
if (sessionIds.length === 0) return {};
|
|
440
|
+
const placeholders = sessionIds.map(() => '?').join(',');
|
|
441
|
+
const rows = this.db.prepare(
|
|
442
|
+
`SELECT * FROM tool_call_events WHERE session_id IN (${placeholders}) ORDER BY timestamp ASC`
|
|
443
|
+
).all(...sessionIds) as any[];
|
|
444
|
+
|
|
445
|
+
const grouped: Record<string, any[]> = {};
|
|
446
|
+
for (const row of rows) {
|
|
447
|
+
const sid = row.session_id as string;
|
|
448
|
+
if (!grouped[sid]) grouped[sid] = [];
|
|
449
|
+
grouped[sid].push({
|
|
450
|
+
eventId: row.event_id,
|
|
451
|
+
executionId: row.execution_id,
|
|
452
|
+
sessionId: row.session_id,
|
|
453
|
+
timestamp: row.timestamp,
|
|
454
|
+
toolName: row.tool_name,
|
|
455
|
+
toolType: row.tool_type,
|
|
456
|
+
isMcpTool: row.is_mcp_tool === 1,
|
|
457
|
+
mcpToolName: row.mcp_tool_name,
|
|
458
|
+
mcpEnforced: row.mcp_enforced === 1,
|
|
459
|
+
mcpFallback: row.mcp_fallback === 1,
|
|
460
|
+
kind: row.kind,
|
|
461
|
+
input: row.input ? JSON.parse(row.input) : null,
|
|
462
|
+
output: row.output ? JSON.parse(row.output) : null,
|
|
463
|
+
duration: row.duration,
|
|
464
|
+
parentToolCallId: row.parent_tool_call_id,
|
|
465
|
+
subagentId: row.subagent_id,
|
|
466
|
+
error: row.error,
|
|
467
|
+
blocked: row.blocked === 1,
|
|
468
|
+
blockReason: row.block_reason,
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
return grouped;
|
|
472
|
+
}
|
|
473
|
+
|
|
293
474
|
// ---- Skill Executions ----
|
|
294
475
|
|
|
295
476
|
insertSkillExecution(params: {
|
|
296
477
|
executionId: string;
|
|
478
|
+
sessionId?: string;
|
|
297
479
|
skillName: string;
|
|
298
480
|
startedAt: number;
|
|
299
481
|
status: string;
|
|
@@ -302,10 +484,11 @@ export class DevFlowDatabase {
|
|
|
302
484
|
}): void {
|
|
303
485
|
this.db.prepare(`
|
|
304
486
|
INSERT INTO skill_executions
|
|
305
|
-
(execution_id, skill_name, started_at, status, required_mcp_tools, available_mcp_tools)
|
|
306
|
-
VALUES (?, ?, ?, ?, ?, ?)
|
|
487
|
+
(execution_id, session_id, skill_name, started_at, status, required_mcp_tools, available_mcp_tools)
|
|
488
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
307
489
|
`).run(
|
|
308
490
|
params.executionId,
|
|
491
|
+
params.sessionId ?? null,
|
|
309
492
|
params.skillName,
|
|
310
493
|
params.startedAt,
|
|
311
494
|
params.status,
|
|
@@ -319,6 +502,7 @@ export class DevFlowDatabase {
|
|
|
319
502
|
if (!row) return null;
|
|
320
503
|
return {
|
|
321
504
|
executionId: row.execution_id,
|
|
505
|
+
sessionId: row.session_id,
|
|
322
506
|
skillName: row.skill_name,
|
|
323
507
|
startedAt: row.started_at,
|
|
324
508
|
finishedAt: row.finished_at,
|
|
@@ -329,7 +513,6 @@ export class DevFlowDatabase {
|
|
|
329
513
|
mcpToolCalls: row.mcp_tool_calls,
|
|
330
514
|
directToolCalls: row.direct_tool_calls,
|
|
331
515
|
subagentCount: row.subagent_count,
|
|
332
|
-
totalTokens: row.total_tokens,
|
|
333
516
|
totalDuration: row.total_duration,
|
|
334
517
|
mcpComplianceRate: row.mcp_compliance_rate,
|
|
335
518
|
missedMcpTools: row.missed_mcp_tools ? JSON.parse(row.missed_mcp_tools) : null,
|
|
@@ -341,7 +524,6 @@ export class DevFlowDatabase {
|
|
|
341
524
|
status?: string;
|
|
342
525
|
finishedAt?: number;
|
|
343
526
|
totalDuration?: number;
|
|
344
|
-
totalTokens?: number;
|
|
345
527
|
mcpComplianceRate?: number;
|
|
346
528
|
missedMcpTools?: string[];
|
|
347
529
|
totalToolCalls?: number;
|
|
@@ -355,7 +537,6 @@ export class DevFlowDatabase {
|
|
|
355
537
|
if (updates.status !== undefined) { sets.push('status = ?'); values.push(updates.status); }
|
|
356
538
|
if (updates.finishedAt !== undefined) { sets.push('finished_at = ?'); values.push(updates.finishedAt); }
|
|
357
539
|
if (updates.totalDuration !== undefined) { sets.push('total_duration = ?'); values.push(updates.totalDuration); }
|
|
358
|
-
if (updates.totalTokens !== undefined) { sets.push('total_tokens = ?'); values.push(updates.totalTokens); }
|
|
359
540
|
if (updates.mcpComplianceRate !== undefined) { sets.push('mcp_compliance_rate = ?'); values.push(updates.mcpComplianceRate); }
|
|
360
541
|
if (updates.missedMcpTools !== undefined) { sets.push('missed_mcp_tools = ?'); values.push(JSON.stringify(updates.missedMcpTools)); }
|
|
361
542
|
if (updates.totalToolCalls !== undefined) { sets.push('total_tool_calls = ?'); values.push(updates.totalToolCalls); }
|
|
@@ -370,14 +551,6 @@ export class DevFlowDatabase {
|
|
|
370
551
|
}
|
|
371
552
|
|
|
372
553
|
listSkillExecutions(limit: number, skillName?: string): any[] {
|
|
373
|
-
// Auto-timeout stale running executions (> 30 minutes)
|
|
374
|
-
const timeoutThreshold = Date.now() - 30 * 60 * 1000;
|
|
375
|
-
this.db.prepare(`
|
|
376
|
-
UPDATE skill_executions
|
|
377
|
-
SET status = 'failed', finished_at = ?
|
|
378
|
-
WHERE status = 'running' AND started_at < ?
|
|
379
|
-
`).run(Date.now(), timeoutThreshold);
|
|
380
|
-
|
|
381
554
|
let query = 'SELECT * FROM skill_executions';
|
|
382
555
|
const params: any[] = [];
|
|
383
556
|
|
|
@@ -392,6 +565,7 @@ export class DevFlowDatabase {
|
|
|
392
565
|
const rows = this.db.prepare(query).all(...params) as any[];
|
|
393
566
|
return rows.map(row => ({
|
|
394
567
|
executionId: row.execution_id,
|
|
568
|
+
sessionId: row.session_id,
|
|
395
569
|
skillName: row.skill_name,
|
|
396
570
|
startedAt: row.started_at,
|
|
397
571
|
finishedAt: row.finished_at,
|
|
@@ -400,7 +574,6 @@ export class DevFlowDatabase {
|
|
|
400
574
|
mcpToolCalls: row.mcp_tool_calls,
|
|
401
575
|
directToolCalls: row.direct_tool_calls,
|
|
402
576
|
subagentCount: row.subagent_count,
|
|
403
|
-
totalTokens: row.total_tokens,
|
|
404
577
|
totalDuration: row.total_duration,
|
|
405
578
|
mcpComplianceRate: row.mcp_compliance_rate,
|
|
406
579
|
}));
|
|
@@ -411,6 +584,7 @@ export class DevFlowDatabase {
|
|
|
411
584
|
insertToolCallEvent(params: {
|
|
412
585
|
eventId: string;
|
|
413
586
|
executionId: string;
|
|
587
|
+
sessionId?: string;
|
|
414
588
|
timestamp: number;
|
|
415
589
|
toolName: string;
|
|
416
590
|
toolType: string;
|
|
@@ -418,25 +592,27 @@ export class DevFlowDatabase {
|
|
|
418
592
|
mcpToolName?: string;
|
|
419
593
|
mcpEnforced: boolean;
|
|
420
594
|
mcpFallback: boolean;
|
|
595
|
+
kind?: string;
|
|
421
596
|
input: unknown;
|
|
422
597
|
output?: unknown;
|
|
423
|
-
tokensUsed: number;
|
|
424
598
|
duration: number;
|
|
425
599
|
parentToolCallId?: string;
|
|
426
600
|
subagentId?: string;
|
|
427
601
|
error?: string;
|
|
428
602
|
blocked: boolean;
|
|
429
603
|
blockReason?: string;
|
|
604
|
+
workflowRunId?: string;
|
|
430
605
|
}): void {
|
|
431
606
|
this.db.prepare(`
|
|
432
607
|
INSERT INTO tool_call_events
|
|
433
|
-
(event_id, execution_id, timestamp, tool_name, tool_type, is_mcp_tool,
|
|
434
|
-
mcp_tool_name, mcp_enforced, mcp_fallback, input, output,
|
|
435
|
-
parent_tool_call_id, subagent_id, error, blocked, block_reason)
|
|
436
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
608
|
+
(event_id, execution_id, session_id, timestamp, tool_name, tool_type, is_mcp_tool,
|
|
609
|
+
mcp_tool_name, mcp_enforced, mcp_fallback, kind, input, output, duration,
|
|
610
|
+
parent_tool_call_id, subagent_id, error, blocked, block_reason, workflow_run_id)
|
|
611
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
437
612
|
`).run(
|
|
438
613
|
params.eventId,
|
|
439
|
-
params.executionId,
|
|
614
|
+
params.executionId || null,
|
|
615
|
+
params.sessionId ?? null,
|
|
440
616
|
params.timestamp,
|
|
441
617
|
params.toolName,
|
|
442
618
|
params.toolType,
|
|
@@ -444,15 +620,16 @@ export class DevFlowDatabase {
|
|
|
444
620
|
params.mcpToolName || null,
|
|
445
621
|
params.mcpEnforced ? 1 : 0,
|
|
446
622
|
params.mcpFallback ? 1 : 0,
|
|
623
|
+
params.kind ?? 'tool_use',
|
|
447
624
|
JSON.stringify(params.input) ?? null,
|
|
448
625
|
params.output ? JSON.stringify(params.output) : null,
|
|
449
|
-
params.tokensUsed,
|
|
450
626
|
params.duration,
|
|
451
627
|
params.parentToolCallId || null,
|
|
452
628
|
params.subagentId || null,
|
|
453
629
|
params.error || null,
|
|
454
630
|
params.blocked ? 1 : 0,
|
|
455
631
|
params.blockReason || null,
|
|
632
|
+
params.workflowRunId || null,
|
|
456
633
|
);
|
|
457
634
|
|
|
458
635
|
// Update execution summary counters
|
|
@@ -479,6 +656,7 @@ export class DevFlowDatabase {
|
|
|
479
656
|
return rows.map(row => ({
|
|
480
657
|
eventId: row.event_id,
|
|
481
658
|
executionId: row.execution_id,
|
|
659
|
+
sessionId: row.session_id,
|
|
482
660
|
timestamp: row.timestamp,
|
|
483
661
|
toolName: row.tool_name,
|
|
484
662
|
toolType: row.tool_type,
|
|
@@ -486,9 +664,9 @@ export class DevFlowDatabase {
|
|
|
486
664
|
mcpToolName: row.mcp_tool_name,
|
|
487
665
|
mcpEnforced: row.mcp_enforced === 1,
|
|
488
666
|
mcpFallback: row.mcp_fallback === 1,
|
|
667
|
+
kind: row.kind,
|
|
489
668
|
input: row.input ? JSON.parse(row.input) : null,
|
|
490
669
|
output: row.output ? JSON.parse(row.output) : null,
|
|
491
|
-
tokensUsed: row.tokens_used,
|
|
492
670
|
duration: row.duration,
|
|
493
671
|
parentToolCallId: row.parent_tool_call_id,
|
|
494
672
|
subagentId: row.subagent_id,
|
|
@@ -498,7 +676,7 @@ export class DevFlowDatabase {
|
|
|
498
676
|
}));
|
|
499
677
|
}
|
|
500
678
|
|
|
501
|
-
updateToolCallEvent(eventId: string, updates: { output?: string; error?: string }): void {
|
|
679
|
+
updateToolCallEvent(eventId: string, updates: { output?: string; error?: string; duration?: number }): void {
|
|
502
680
|
const sets: string[] = [];
|
|
503
681
|
const values: any[] = [];
|
|
504
682
|
|
|
@@ -510,6 +688,10 @@ export class DevFlowDatabase {
|
|
|
510
688
|
sets.push('error = ?');
|
|
511
689
|
values.push(updates.error);
|
|
512
690
|
}
|
|
691
|
+
if (updates.duration !== undefined) {
|
|
692
|
+
sets.push('duration = ?');
|
|
693
|
+
values.push(updates.duration);
|
|
694
|
+
}
|
|
513
695
|
|
|
514
696
|
if (sets.length > 0) {
|
|
515
697
|
values.push(eventId);
|
|
@@ -569,6 +751,18 @@ export class DevFlowDatabase {
|
|
|
569
751
|
return { overall, bySkill, missedTools };
|
|
570
752
|
}
|
|
571
753
|
|
|
754
|
+
cleanupStaleRecords(): void {
|
|
755
|
+
const cutoff = Date.now() - 30 * 60 * 1000;
|
|
756
|
+
try {
|
|
757
|
+
this.db.prepare(
|
|
758
|
+
`UPDATE skill_executions SET status = 'failed', finished_at = ? WHERE status = 'running' AND started_at < ?`
|
|
759
|
+
).run(Date.now(), cutoff);
|
|
760
|
+
this.db.prepare(
|
|
761
|
+
`UPDATE sessions SET status = 'failed', finished_at = ? WHERE status = 'running' AND started_at < ?`
|
|
762
|
+
).run(Date.now(), cutoff);
|
|
763
|
+
} catch { /* best-effort */ }
|
|
764
|
+
}
|
|
765
|
+
|
|
572
766
|
close(): void {
|
|
573
767
|
this.db.close();
|
|
574
768
|
}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/types.ts","./src/node-sqlite.ts","./src/database.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","../../node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@types/better-sqlite3/index.d.ts","../../node_modules/@types/d3-array/index.d.ts","../../node_modules/@types/d3-color/index.d.ts","../../node_modules/@types/d3-selection/index.d.ts","../../node_modules/@types/d3-drag/index.d.ts","../../node_modules/@types/d3-ease/index.d.ts","../../node_modules/@types/d3-interpolate/index.d.ts","../../node_modules/@types/d3-path/index.d.ts","../../node_modules/@types/d3-time/index.d.ts","../../node_modules/@types/d3-scale/index.d.ts","../../node_modules/@types/d3-shape/index.d.ts","../../node_modules/@types/d3-timer/index.d.ts","../../node_modules/@types/d3-transition/index.d.ts","../../node_modules/@types/d3-zoom/index.d.ts","../../node_modules/@types/dagre/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/long/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/turndown/index.d.ts","../../node_modules/@types/validator/lib/isboolean.d.ts","../../node_modules/@types/validator/lib/isemail.d.ts","../../node_modules/@types/validator/lib/isfqdn.d.ts","../../node_modules/@types/validator/lib/isiban.d.ts","../../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../../node_modules/@types/validator/lib/isiso4217.d.ts","../../node_modules/@types/validator/lib/isiso6391.d.ts","../../node_modules/@types/validator/lib/istaxid.d.ts","../../node_modules/@types/validator/lib/isurl.d.ts","../../node_modules/@types/validator/index.d.ts","../../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/q/index.d.ts","../../../../node_modules/@types/source-list-map/index.d.ts","../../../../node_modules/@types/tapable/index.d.ts","../../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/uglify-js/index.d.ts","../../../../node_modules/anymatch/index.d.ts","../../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/lib/source.d.ts","../../../../node_modules/@types/webpack-sources/lib/compatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/concatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/originalsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/prefixsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/rawsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/replacesource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../../node_modules/@types/webpack-sources/lib/cachedsource.d.ts","../../../../node_modules/@types/webpack-sources/index.d.ts","../../../../node_modules/@types/webpack/index.d.ts"],"fileIdsList":[[55,102],[55,102,150],[55,102,155,164],[55,102,154],[55,102,160],[55,102,159],[55,102,155,158,164],[55,102,175],[55,102,172,173,174],[55,102,178,179,180,181,182,183,184,185,186],[55,99,102],[55,101,102],[102],[55,102,107,135],[55,102,103,108,113,121,132,143],[55,102,103,104,113,121],[50,51,52,55,102],[55,102,105,144],[55,102,106,107,114,122],[55,102,107,132,140],[55,102,108,110,113,121],[55,101,102,109],[55,102,110,111],[55,102,112,113],[55,101,102,113],[55,102,113,114,115,132,143],[55,102,113,114,115,128,132,135],[55,102,110,113,116,121,132,143],[55,102,113,114,116,117,121,132,140,143],[55,102,116,118,132,140,143],[53,54,55,56,57,58,59,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[55,102,113,119],[55,102,120,143,148],[55,102,110,113,121,132],[55,102,122],[55,102,123],[55,101,102,124],[55,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[55,102,126],[55,102,127],[55,102,113,128,129],[55,102,128,130,144,146],[55,102,113,132,133,135],[55,102,134,135],[55,102,132,133],[55,102,135],[55,102,136],[55,99,102,132,137],[55,102,113,138,139],[55,102,138,139],[55,102,107,121,132,140],[55,102,141],[55,102,121,142],[55,102,116,127,143],[55,102,107,144],[55,102,132,145],[55,102,120,146],[55,102,147],[55,97,102],[55,97,102,113,115,124,132,135,143,146,148],[55,102,132,149],[55,69,73,102,143],[55,69,102,132,143],[55,64,102],[55,66,69,102,140,143],[55,102,121,140],[55,64,102,150],[55,66,69,102,121,143],[55,61,62,65,68,102,113,132,143],[55,69,76,102],[55,61,67,102],[55,69,90,91,102],[55,65,69,102,135,143,150],[55,90,102,150],[55,63,64,102,150],[55,69,102],[55,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,102],[55,69,84,102],[55,69,76,77,102],[55,67,69,77,78,102],[55,68,102],[55,61,64,69,102],[55,69,73,77,78,102],[55,73,102],[55,67,69,72,102,143],[55,61,66,69,76,102],[55,102,132],[55,64,69,90,102,148,150],[47,55,102,114,123],[48,55,102],[46,55,102],[55,102,193],[55,102,150,198,199,200,201,202,203,204,205,206,207,208],[55,102,197,198,207],[55,102,198,207],[55,102,191,197,198,207],[55,102,197,198,199,200,201,202,203,204,205,206,208],[55,102,198],[55,102,107,197,207],[55,102,107,150,192,193,194,195,209]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0b1a4ab354a2e47e1396af5bc2663a77cd9f91eb857b9f0fdfcd77cc95c8d0","signature":"651a6436cc80d726a120b278fcef7487a66061442629a7c83b27977438c3ed36"},{"version":"657e625c494216f3408129290bf5b41a8705a50df8fdc07aca2766a936d71f7f","signature":"26148e89bad3ba3e1bce158941c54b89a49aa81fbf0498319821dfa66ff18f41"},{"version":"84bde9373a3a284bfb460374e2b32d2792e6201d5f6fa3b24ace3782e33ed3e1","signature":"3980a5f3fcd575035099ff1ae99e50c01f022f964df4bb9585a27d922e058874"},"6bc2754c2ac8a86af4e715582635e9fc4903772da54a9ec1f9e134fbc874175a",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"1123a83f35cf56c97de746f0a7250012153c61a167e4a61668bf50e558162d14","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"c2a6a737189ced24ffe0634e9239b087e4c26378d0490f95141b9b9b042b746c","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"469532350a366536390c6eb3bde6839ec5c81fe1227a6b7b6a70202954d70c40","impliedFormat":1},{"version":"54e79224429e911b5d6aeb3cf9097ec9fd0f140d5a1461bbdece3066b17c232c","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"421c3f008f6ef4a5db2194d58a7b960ef6f33e94b033415649cd557be09ef619","impliedFormat":1},{"version":"57568ff84b8ba1a4f8c817141644b49252cc39ec7b899e4bfba0ec0557c910a0","impliedFormat":1},{"version":"443d1020635af05e3cb8c45974bc76f03a8b11f95563774b26afb51b1a8666d7","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"09ddcfcfbe77a8232d155ca1030005106b1328f6210df43629d0be750da07c16","affectsGlobalScope":true,"impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"f80cb0ced191be0a08767ee613ec61b89d193ab698c7c0c8133b49a183c5ea26","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d","impliedFormat":1},{"version":"3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","impliedFormat":1},{"version":"f9a2dd6a6084665f093ed0e9664b8e673be2a45e342a59dd4e0e4e552e68a9ad","impliedFormat":1},{"version":"67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","impliedFormat":1},{"version":"d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956","impliedFormat":1},{"version":"4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","impliedFormat":1},{"version":"8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","impliedFormat":1},{"version":"ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","impliedFormat":1},{"version":"083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","impliedFormat":1},{"version":"274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","impliedFormat":1},{"version":"6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","impliedFormat":1},{"version":"5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","impliedFormat":1},{"version":"f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","impliedFormat":1},{"version":"0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","impliedFormat":1},{"version":"8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb","impliedFormat":1},{"version":"9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1","impliedFormat":1},{"version":"d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","impliedFormat":1},{"version":"89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b","impliedFormat":1},{"version":"99c7f3bbc03f6eb3e663c26c104d639617620c2925e76fc284f7bedf1877fa2b","impliedFormat":1}],"root":[[46,49]],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[151,1],[152,2],[153,1],[154,1],[156,3],[157,1],[158,4],[159,1],[161,5],[155,1],[162,6],[160,1],[163,1],[164,3],[165,7],[166,1],[167,1],[168,1],[169,1],[170,1],[171,1],[172,1],[176,8],[173,1],[175,9],[177,1],[187,10],[178,1],[179,1],[180,1],[181,1],[182,1],[183,1],[184,1],[185,1],[186,1],[60,1],[174,1],[44,1],[45,1],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[18,1],[19,1],[4,1],[20,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[35,1],[32,1],[33,1],[34,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[1,1],[99,11],[100,11],[101,12],[55,13],[102,14],[103,15],[104,16],[50,1],[53,17],[51,1],[52,1],[105,18],[106,19],[107,20],[108,21],[109,22],[110,23],[111,23],[112,24],[113,25],[114,26],[115,27],[56,1],[54,1],[116,28],[117,29],[118,30],[150,31],[119,32],[120,33],[121,34],[122,35],[123,36],[124,37],[125,38],[126,39],[127,40],[128,41],[129,41],[130,42],[131,1],[132,43],[134,44],[133,45],[135,46],[136,47],[137,48],[138,49],[139,50],[140,51],[141,52],[142,53],[143,54],[144,55],[145,56],[146,57],[147,58],[57,1],[58,1],[59,1],[98,59],[148,60],[149,61],[76,62],[86,63],[75,62],[96,64],[67,65],[66,66],[95,2],[89,67],[94,68],[69,69],[83,70],[68,71],[92,72],[64,73],[63,2],[93,74],[65,75],[70,76],[71,1],[74,76],[61,1],[97,77],[87,78],[78,79],[79,80],[81,81],[77,82],[80,83],[90,2],[72,84],[73,85],[82,86],[62,87],[85,78],[84,76],[88,1],[91,88],[48,89],[49,90],[47,91],[46,1],[188,1],[189,1],[190,1],[191,1],[192,1],[194,92],[193,1],[209,93],[208,94],[199,95],[200,96],[207,97],[201,96],[202,95],[203,95],[204,95],[205,98],[198,99],[206,94],[197,1],[210,100],[196,1],[195,1]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/types.ts","./src/node-sqlite.ts","./src/database.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","../../node_modules/buffer/index.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@types/better-sqlite3/index.d.ts","../../node_modules/@types/d3-array/index.d.ts","../../node_modules/@types/d3-color/index.d.ts","../../node_modules/@types/d3-selection/index.d.ts","../../node_modules/@types/d3-drag/index.d.ts","../../node_modules/@types/d3-ease/index.d.ts","../../node_modules/@types/d3-interpolate/index.d.ts","../../node_modules/@types/d3-path/index.d.ts","../../node_modules/@types/d3-time/index.d.ts","../../node_modules/@types/d3-scale/index.d.ts","../../node_modules/@types/d3-shape/index.d.ts","../../node_modules/@types/d3-timer/index.d.ts","../../node_modules/@types/d3-transition/index.d.ts","../../node_modules/@types/d3-zoom/index.d.ts","../../node_modules/@types/dagre/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/long/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/minimist/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/turndown/index.d.ts","../../node_modules/@types/validator/lib/isboolean.d.ts","../../node_modules/@types/validator/lib/isemail.d.ts","../../node_modules/@types/validator/lib/isfqdn.d.ts","../../node_modules/@types/validator/lib/isiban.d.ts","../../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../../node_modules/@types/validator/lib/isiso4217.d.ts","../../node_modules/@types/validator/lib/isiso6391.d.ts","../../node_modules/@types/validator/lib/istaxid.d.ts","../../node_modules/@types/validator/lib/isurl.d.ts","../../node_modules/@types/validator/index.d.ts","../../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/q/index.d.ts","../../../../node_modules/@types/source-list-map/index.d.ts","../../../../node_modules/@types/tapable/index.d.ts","../../../../node_modules/@types/uglify-js/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/uglify-js/index.d.ts","../../../../node_modules/anymatch/index.d.ts","../../../../node_modules/@types/webpack/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/node_modules/source-map/source-map.d.ts","../../../../node_modules/@types/webpack-sources/lib/source.d.ts","../../../../node_modules/@types/webpack-sources/lib/compatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/concatsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/originalsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/prefixsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/rawsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/replacesource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sizeonlysource.d.ts","../../../../node_modules/@types/webpack-sources/lib/sourcemapsource.d.ts","../../../../node_modules/@types/webpack-sources/lib/index.d.ts","../../../../node_modules/@types/webpack-sources/lib/cachedsource.d.ts","../../../../node_modules/@types/webpack-sources/index.d.ts","../../../../node_modules/@types/webpack/index.d.ts"],"fileIdsList":[[55,102],[55,102,150],[55,102,155,164],[55,102,154],[55,102,160],[55,102,159],[55,102,155,158,164],[55,102,175],[55,102,172,173,174],[55,102,178,179,180,181,182,183,184,185,186],[55,99,102],[55,101,102],[102],[55,102,107,135],[55,102,103,108,113,121,132,143],[55,102,103,104,113,121],[50,51,52,55,102],[55,102,105,144],[55,102,106,107,114,122],[55,102,107,132,140],[55,102,108,110,113,121],[55,101,102,109],[55,102,110,111],[55,102,112,113],[55,101,102,113],[55,102,113,114,115,132,143],[55,102,113,114,115,128,132,135],[55,102,110,113,116,121,132,143],[55,102,113,114,116,117,121,132,140,143],[55,102,116,118,132,140,143],[53,54,55,56,57,58,59,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[55,102,113,119],[55,102,120,143,148],[55,102,110,113,121,132],[55,102,122],[55,102,123],[55,101,102,124],[55,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[55,102,126],[55,102,127],[55,102,113,128,129],[55,102,128,130,144,146],[55,102,113,132,133,135],[55,102,134,135],[55,102,132,133],[55,102,135],[55,102,136],[55,99,102,132,137],[55,102,113,138,139],[55,102,138,139],[55,102,107,121,132,140],[55,102,141],[55,102,121,142],[55,102,116,127,143],[55,102,107,144],[55,102,132,145],[55,102,120,146],[55,102,147],[55,97,102],[55,97,102,113,115,124,132,135,143,146,148],[55,102,132,149],[55,69,73,102,143],[55,69,102,132,143],[55,64,102],[55,66,69,102,140,143],[55,102,121,140],[55,64,102,150],[55,66,69,102,121,143],[55,61,62,65,68,102,113,132,143],[55,69,76,102],[55,61,67,102],[55,69,90,91,102],[55,65,69,102,135,143,150],[55,90,102,150],[55,63,64,102,150],[55,69,102],[55,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,102],[55,69,84,102],[55,69,76,77,102],[55,67,69,77,78,102],[55,68,102],[55,61,64,69,102],[55,69,73,77,78,102],[55,73,102],[55,67,69,72,102,143],[55,61,66,69,76,102],[55,102,132],[55,64,69,90,102,148,150],[47,55,102,114,123],[48,55,102],[46,55,102],[55,102,193],[55,102,150,198,199,200,201,202,203,204,205,206,207,208],[55,102,197,198,207],[55,102,198,207],[55,102,191,197,198,207],[55,102,197,198,199,200,201,202,203,204,205,206,208],[55,102,198],[55,102,107,197,207],[55,102,107,150,192,193,194,195,209]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0b1a4ab354a2e47e1396af5bc2663a77cd9f91eb857b9f0fdfcd77cc95c8d0","signature":"651a6436cc80d726a120b278fcef7487a66061442629a7c83b27977438c3ed36"},{"version":"657e625c494216f3408129290bf5b41a8705a50df8fdc07aca2766a936d71f7f","signature":"26148e89bad3ba3e1bce158941c54b89a49aa81fbf0498319821dfa66ff18f41"},{"version":"6543c99bf8df46a7bbe47104cfd7aa8c6b80658307e49316aeed910ead20eb74","signature":"3b4a3e0349ffdfa7c3f38e4a1600b1c0ea8ff89fd2e626836d8955896e1e5455"},"6bc2754c2ac8a86af4e715582635e9fc4903772da54a9ec1f9e134fbc874175a",{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","impliedFormat":1},{"version":"1123a83f35cf56c97de746f0a7250012153c61a167e4a61668bf50e558162d14","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"c2a6a737189ced24ffe0634e9239b087e4c26378d0490f95141b9b9b042b746c","impliedFormat":1},{"version":"b1538a92b9bae8d230267210c5db38c2eb6bdb352128a3ce3aa8c6acf9fc9622","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"469532350a366536390c6eb3bde6839ec5c81fe1227a6b7b6a70202954d70c40","impliedFormat":1},{"version":"54e79224429e911b5d6aeb3cf9097ec9fd0f140d5a1461bbdece3066b17c232c","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"421c3f008f6ef4a5db2194d58a7b960ef6f33e94b033415649cd557be09ef619","impliedFormat":1},{"version":"57568ff84b8ba1a4f8c817141644b49252cc39ec7b899e4bfba0ec0557c910a0","impliedFormat":1},{"version":"443d1020635af05e3cb8c45974bc76f03a8b11f95563774b26afb51b1a8666d7","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"09ddcfcfbe77a8232d155ca1030005106b1328f6210df43629d0be750da07c16","affectsGlobalScope":true,"impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"f80cb0ced191be0a08767ee613ec61b89d193ab698c7c0c8133b49a183c5ea26","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"6767cce098e1e6369c26258b7a1f9e569c5467d501a47a090136d5ea6e80ae6d","impliedFormat":1},{"version":"3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","impliedFormat":1},{"version":"f9a2dd6a6084665f093ed0e9664b8e673be2a45e342a59dd4e0e4e552e68a9ad","impliedFormat":1},{"version":"67fc055eb86a0632e2e072838f889ffe1754083cb13c8c80a06a7d895d877aae","impliedFormat":1},{"version":"d558a0fe921ebcc88d3212c2c42108abf9f0d694d67ebdeba37d7728c044f579","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"bee79f5862fe1278d2ba275298862bce3f7abf1e59d9c669c4b9a4b2bba96956","impliedFormat":1},{"version":"4fb0b7d532aa6fb850b6cd2f1ee4f00802d877b5c66a51903bc1fb0624126349","impliedFormat":1},{"version":"2887592574fcdfd087647c539dcb0fbe5af2521270dad4a37f9d17c16190d579","impliedFormat":1},{"version":"b90c59ac4682368a01c83881b814738eb151de8a58f52eb7edadea2bcffb11b9","impliedFormat":1},{"version":"8560a87b2e9f8e2c3808c8f6172c9b7eb6c9b08cb9f937db71c285ecf292c81d","impliedFormat":1},{"version":"ffe3931ff864f28d80ae2f33bd11123ad3d7bad9896b910a1e61504cc093e1f5","impliedFormat":1},{"version":"083c1bd82f8dc3a1ed6fc9e8eaddf141f7c05df418eca386598821e045253af9","impliedFormat":1},{"version":"274ebe605bd7f71ce161f9f5328febc7d547a2929f803f04b44ec4a7d8729517","impliedFormat":1},{"version":"6ca0207e70d985a24396583f55836b10dc181063ab6069733561bfde404d1bad","impliedFormat":1},{"version":"5908142efeaab38ffdf43927ee0af681ae77e0d7672b956dfb8b6c705dbfe106","impliedFormat":1},{"version":"f772b188b943549b5c5eb803133314b8aa7689eced80eed0b70e2f30ca07ab9c","impliedFormat":1},{"version":"0026b816ef05cfbf290e8585820eef0f13250438669107dfc44482bac007b14f","impliedFormat":1},{"version":"8ef5aad624890acfe0fa48230edce255f00934016d16acb8de0edac0ea5b21bb","impliedFormat":1},{"version":"9af6248ff4baf0c1ddc62bb0bc43197437bd5fb2c95ff8e10e4cf2e699ea45c1","impliedFormat":1},{"version":"d84398556ba4595ee6be554671da142cfe964cbdebb2f0c517a10f76f2b016c0","impliedFormat":1},{"version":"89b42f8ee5d387a39db85ee2c7123a391c3ede266a2bcd502c85ad55626c3b2b","impliedFormat":1},{"version":"99c7f3bbc03f6eb3e663c26c104d639617620c2925e76fc284f7bedf1877fa2b","impliedFormat":1}],"root":[[46,49]],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[151,1],[152,2],[153,1],[154,1],[156,3],[157,1],[158,4],[159,1],[161,5],[155,1],[162,6],[160,1],[163,1],[164,3],[165,7],[166,1],[167,1],[168,1],[169,1],[170,1],[171,1],[172,1],[176,8],[173,1],[175,9],[177,1],[187,10],[178,1],[179,1],[180,1],[181,1],[182,1],[183,1],[184,1],[185,1],[186,1],[60,1],[174,1],[44,1],[45,1],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[18,1],[19,1],[4,1],[20,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[35,1],[32,1],[33,1],[34,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[1,1],[99,11],[100,11],[101,12],[55,13],[102,14],[103,15],[104,16],[50,1],[53,17],[51,1],[52,1],[105,18],[106,19],[107,20],[108,21],[109,22],[110,23],[111,23],[112,24],[113,25],[114,26],[115,27],[56,1],[54,1],[116,28],[117,29],[118,30],[150,31],[119,32],[120,33],[121,34],[122,35],[123,36],[124,37],[125,38],[126,39],[127,40],[128,41],[129,41],[130,42],[131,1],[132,43],[134,44],[133,45],[135,46],[136,47],[137,48],[138,49],[139,50],[140,51],[141,52],[142,53],[143,54],[144,55],[145,56],[146,57],[147,58],[57,1],[58,1],[59,1],[98,59],[148,60],[149,61],[76,62],[86,63],[75,62],[96,64],[67,65],[66,66],[95,2],[89,67],[94,68],[69,69],[83,70],[68,71],[92,72],[64,73],[63,2],[93,74],[65,75],[70,76],[71,1],[74,76],[61,1],[97,77],[87,78],[78,79],[79,80],[81,81],[77,82],[80,83],[90,2],[72,84],[73,85],[82,86],[62,87],[85,78],[84,76],[88,1],[91,88],[48,89],[49,90],[47,91],[46,1],[188,1],[189,1],[190,1],[191,1],[192,1],[194,92],[193,1],[209,93],[208,94],[199,95],[200,96],[207,97],[201,96],[202,95],[203,95],[204,95],[205,98],[198,99],[206,94],[197,1],[210,100],[196,1],[195,1]],"latestChangedDtsFile":"./dist/database.d.ts","version":"5.9.3"}
|