kratos-mcp 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +351 -0
  3. package/dist/host-middleware-v2.d.ts +3 -0
  4. package/dist/host-middleware-v2.d.ts.map +1 -0
  5. package/dist/host-middleware-v2.js +471 -0
  6. package/dist/host-middleware-v2.js.map +1 -0
  7. package/dist/index.d.ts +21 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +939 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/memory-server/concept-store-enhanced.d.ts +88 -0
  12. package/dist/memory-server/concept-store-enhanced.d.ts.map +1 -0
  13. package/dist/memory-server/concept-store-enhanced.js +392 -0
  14. package/dist/memory-server/concept-store-enhanced.js.map +1 -0
  15. package/dist/memory-server/concept-store.d.ts +58 -0
  16. package/dist/memory-server/concept-store.d.ts.map +1 -0
  17. package/dist/memory-server/concept-store.js +329 -0
  18. package/dist/memory-server/concept-store.js.map +1 -0
  19. package/dist/memory-server/context-broker.d.ts +63 -0
  20. package/dist/memory-server/context-broker.d.ts.map +1 -0
  21. package/dist/memory-server/context-broker.js +340 -0
  22. package/dist/memory-server/context-broker.js.map +1 -0
  23. package/dist/memory-server/database.d.ts +61 -0
  24. package/dist/memory-server/database.d.ts.map +1 -0
  25. package/dist/memory-server/database.js +309 -0
  26. package/dist/memory-server/database.js.map +1 -0
  27. package/dist/modules/prd/index.d.ts +47 -0
  28. package/dist/modules/prd/index.d.ts.map +1 -0
  29. package/dist/modules/prd/index.js +220 -0
  30. package/dist/modules/prd/index.js.map +1 -0
  31. package/dist/modules/prompt/index.d.ts +47 -0
  32. package/dist/modules/prompt/index.d.ts.map +1 -0
  33. package/dist/modules/prompt/index.js +313 -0
  34. package/dist/modules/prompt/index.js.map +1 -0
  35. package/dist/project-manager.d.ts +69 -0
  36. package/dist/project-manager.d.ts.map +1 -0
  37. package/dist/project-manager.js +207 -0
  38. package/dist/project-manager.js.map +1 -0
  39. package/dist/security/data-retention.d.ts +104 -0
  40. package/dist/security/data-retention.d.ts.map +1 -0
  41. package/dist/security/data-retention.js +444 -0
  42. package/dist/security/data-retention.js.map +1 -0
  43. package/dist/security/encryption.d.ts +48 -0
  44. package/dist/security/encryption.d.ts.map +1 -0
  45. package/dist/security/encryption.js +131 -0
  46. package/dist/security/encryption.js.map +1 -0
  47. package/dist/security/pii-detector.d.ts +61 -0
  48. package/dist/security/pii-detector.d.ts.map +1 -0
  49. package/dist/security/pii-detector.js +220 -0
  50. package/dist/security/pii-detector.js.map +1 -0
  51. package/dist/tools/ci-hooks.d.ts +48 -0
  52. package/dist/tools/ci-hooks.d.ts.map +1 -0
  53. package/dist/tools/ci-hooks.js +452 -0
  54. package/dist/tools/ci-hooks.js.map +1 -0
  55. package/dist/tools/migrate-to-sqlite.d.ts +32 -0
  56. package/dist/tools/migrate-to-sqlite.d.ts.map +1 -0
  57. package/dist/tools/migrate-to-sqlite.js +341 -0
  58. package/dist/tools/migrate-to-sqlite.js.map +1 -0
  59. package/dist/types/index.d.ts +151 -0
  60. package/dist/types/index.d.ts.map +1 -0
  61. package/dist/types/index.js +2 -0
  62. package/dist/types/index.js.map +1 -0
  63. package/dist/utils/logger.d.ts +9 -0
  64. package/dist/utils/logger.d.ts.map +1 -0
  65. package/dist/utils/logger.js +33 -0
  66. package/dist/utils/logger.js.map +1 -0
  67. package/dist/utils/mcp-logger.d.ts +14 -0
  68. package/dist/utils/mcp-logger.d.ts.map +1 -0
  69. package/dist/utils/mcp-logger.js +40 -0
  70. package/dist/utils/mcp-logger.js.map +1 -0
  71. package/package.json +88 -0
@@ -0,0 +1,452 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from 'child_process';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import { Logger } from '../utils/logger.js';
6
+ const logger = new Logger('CI-Hooks');
7
+ /**
8
+ * CI/CD Integration Hooks for Kratos Protocol
9
+ *
10
+ * These hooks can be integrated into your CI/CD pipeline to:
11
+ * - Run leak detection tests
12
+ * - Perform TTL cleanup
13
+ * - Validate project configurations
14
+ * - Generate memory reports
15
+ */
16
+ class KratosCIHooks {
17
+ /**
18
+ * Pre-commit hook: Run leak detection tests
19
+ */
20
+ static async preCommitHook() {
21
+ logger.info('Running pre-commit leak detection...');
22
+ try {
23
+ // Run leak detection tests
24
+ const testResult = await KratosCIHooks.runCommand('npm', ['run', 'test:leak']);
25
+ if (testResult.exitCode !== 0) {
26
+ logger.error('❌ Leak detection tests failed!');
27
+ logger.error('Output:', testResult.output);
28
+ return false;
29
+ }
30
+ logger.info('✅ Leak detection tests passed');
31
+ return true;
32
+ }
33
+ catch (error) {
34
+ logger.error('Pre-commit hook failed:', error);
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Pre-push hook: Validate all project configurations
40
+ */
41
+ static async prePushHook() {
42
+ logger.info('Running pre-push validation...');
43
+ try {
44
+ // Find all Kratos projects in the repository
45
+ const projects = await KratosCIHooks.findKratosProjects();
46
+ if (projects.length === 0) {
47
+ logger.info('No Kratos projects found, skipping validation');
48
+ return true;
49
+ }
50
+ logger.info(`Found ${projects.length} Kratos projects`);
51
+ // Validate each project
52
+ for (const project of projects) {
53
+ const isValid = await KratosCIHooks.validateProject(project);
54
+ if (!isValid) {
55
+ logger.error(`❌ Project validation failed: ${project}`);
56
+ return false;
57
+ }
58
+ }
59
+ logger.info('✅ All projects validated successfully');
60
+ return true;
61
+ }
62
+ catch (error) {
63
+ logger.error('Pre-push hook failed:', error);
64
+ return false;
65
+ }
66
+ }
67
+ /**
68
+ * Nightly cleanup: Remove expired memories and compact databases
69
+ */
70
+ static async nightlyCleanup() {
71
+ logger.info('Running nightly cleanup...');
72
+ try {
73
+ const projects = await KratosCIHooks.findKratosProjects();
74
+ for (const project of projects) {
75
+ await KratosCIHooks.cleanupProject(project);
76
+ }
77
+ // Generate cleanup report
78
+ await KratosCIHooks.generateCleanupReport(projects);
79
+ logger.info('✅ Nightly cleanup completed');
80
+ }
81
+ catch (error) {
82
+ logger.error('Nightly cleanup failed:', error);
83
+ throw error;
84
+ }
85
+ }
86
+ /**
87
+ * Security audit: Check for potential data leaks and vulnerabilities
88
+ */
89
+ static async securityAudit() {
90
+ logger.info('Running security audit...');
91
+ const report = {
92
+ timestamp: new Date().toISOString(),
93
+ projects: [],
94
+ globalConcepts: {},
95
+ vulnerabilities: [],
96
+ recommendations: [],
97
+ };
98
+ try {
99
+ const projects = await KratosCIHooks.findKratosProjects();
100
+ for (const project of projects) {
101
+ const projectAudit = await KratosCIHooks.auditProject(project);
102
+ report.projects.push(projectAudit);
103
+ // Check for vulnerabilities
104
+ if (projectAudit.secretsFound > 0) {
105
+ report.vulnerabilities.push({
106
+ type: 'secrets-in-memories',
107
+ project: project,
108
+ count: projectAudit.secretsFound,
109
+ severity: 'high'
110
+ });
111
+ }
112
+ if (projectAudit.crossProjectRefs > 0) {
113
+ report.vulnerabilities.push({
114
+ type: 'cross-project-references',
115
+ project: project,
116
+ count: projectAudit.crossProjectRefs,
117
+ severity: 'medium'
118
+ });
119
+ }
120
+ }
121
+ // Global concept store audit
122
+ report.globalConcepts = await KratosCIHooks.auditConceptStore();
123
+ // Generate recommendations
124
+ report.recommendations = KratosCIHooks.generateSecurityRecommendations(report);
125
+ const passed = report.vulnerabilities.length === 0;
126
+ logger.info(passed ? '✅ Security audit passed' : '⚠️ Security issues found');
127
+ return { passed, report };
128
+ }
129
+ catch (error) {
130
+ logger.error('Security audit failed:', error);
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * Memory report: Generate statistics about memory usage across projects
136
+ */
137
+ static async generateMemoryReport() {
138
+ logger.info('Generating memory usage report...');
139
+ const report = {
140
+ timestamp: new Date().toISOString(),
141
+ summary: {
142
+ totalProjects: 0,
143
+ totalMemories: 0,
144
+ totalConcepts: 0,
145
+ diskUsage: 0,
146
+ },
147
+ projects: [],
148
+ topTags: {},
149
+ recommendations: [],
150
+ };
151
+ try {
152
+ const projects = await KratosCIHooks.findKratosProjects();
153
+ report.summary.totalProjects = projects.length;
154
+ const allTags = new Map();
155
+ for (const project of projects) {
156
+ const projectStats = await KratosCIHooks.getProjectStats(project);
157
+ report.projects.push(projectStats);
158
+ report.summary.totalMemories += projectStats.memoryCount;
159
+ report.summary.diskUsage += projectStats.diskUsage;
160
+ // Aggregate tags
161
+ for (const [tag, count] of Object.entries(projectStats.topTags)) {
162
+ allTags.set(tag, (allTags.get(tag) || 0) + count);
163
+ }
164
+ }
165
+ // Get global concept stats
166
+ const conceptStats = await KratosCIHooks.getConceptStats();
167
+ report.summary.totalConcepts = conceptStats.totalConcepts;
168
+ // Top tags across all projects
169
+ report.topTags = Object.fromEntries(Array.from(allTags.entries())
170
+ .sort(([, a], [, b]) => b - a)
171
+ .slice(0, 20));
172
+ // Generate recommendations
173
+ report.recommendations = KratosCIHooks.generateMemoryRecommendations(report);
174
+ logger.info('✅ Memory report generated');
175
+ return report;
176
+ }
177
+ catch (error) {
178
+ logger.error('Memory report generation failed:', error);
179
+ throw error;
180
+ }
181
+ }
182
+ // Helper methods
183
+ static async findKratosProjects() {
184
+ const projects = [];
185
+ // Search for .kratos directories
186
+ const findCommand = process.platform === 'win32'
187
+ ? ['find', '.', '-name', '.kratos', '-type', 'd']
188
+ : ['find', '.', '-name', '.kratos', '-type', 'd'];
189
+ const result = await KratosCIHooks.runCommand('find', ['.', '-name', '.kratos', '-type', 'd']);
190
+ if (result.exitCode === 0) {
191
+ const lines = result.output.split('\n').filter(line => line.trim());
192
+ for (const line of lines) {
193
+ const projectRoot = path.dirname(line);
194
+ projects.push(path.resolve(projectRoot));
195
+ }
196
+ }
197
+ return projects;
198
+ }
199
+ static async validateProject(projectPath) {
200
+ const kratosDir = path.join(projectPath, '.kratos');
201
+ // Check required files
202
+ const requiredFiles = ['project.json'];
203
+ for (const file of requiredFiles) {
204
+ if (!await fs.pathExists(path.join(kratosDir, file))) {
205
+ logger.error(`Missing required file: ${file} in ${projectPath}`);
206
+ return false;
207
+ }
208
+ }
209
+ // Validate project.json
210
+ try {
211
+ const projectConfig = await fs.readJson(path.join(kratosDir, 'project.json'));
212
+ if (!projectConfig.project_id || !projectConfig.name) {
213
+ logger.error(`Invalid project.json in ${projectPath}`);
214
+ return false;
215
+ }
216
+ }
217
+ catch (error) {
218
+ logger.error(`Invalid project.json in ${projectPath}:`, error);
219
+ return false;
220
+ }
221
+ return true;
222
+ }
223
+ static async cleanupProject(projectPath) {
224
+ logger.info(`Cleaning up project: ${projectPath}`);
225
+ const dbPath = path.join(projectPath, '.kratos', 'memory.db');
226
+ if (await fs.pathExists(dbPath)) {
227
+ // Run VACUUM on SQLite database to reclaim space
228
+ await KratosCIHooks.runCommand('sqlite3', [dbPath, 'VACUUM;']);
229
+ // Clean up expired memories (handled by the database itself via triggers)
230
+ logger.info(`Database cleaned: ${dbPath}`);
231
+ }
232
+ }
233
+ static async auditProject(projectPath) {
234
+ const audit = {
235
+ project: projectPath,
236
+ memoryCount: 0,
237
+ secretsFound: 0,
238
+ crossProjectRefs: 0,
239
+ largestMemory: 0,
240
+ oldestMemory: null,
241
+ diskUsage: 0,
242
+ };
243
+ try {
244
+ const dbPath = path.join(projectPath, '.kratos', 'memory.db');
245
+ if (await fs.pathExists(dbPath)) {
246
+ const stats = await fs.stat(dbPath);
247
+ audit.diskUsage = stats.size;
248
+ // Run security queries on the database
249
+ const secretsResult = await KratosCIHooks.runCommand('sqlite3', [
250
+ dbPath,
251
+ `SELECT COUNT(*) FROM memories WHERE
252
+ text LIKE '%api_key%' OR
253
+ text LIKE '%password%' OR
254
+ text LIKE '%secret%' OR
255
+ text LIKE '%token%';`
256
+ ]);
257
+ if (secretsResult.exitCode === 0) {
258
+ audit.secretsFound = parseInt(secretsResult.output.trim()) || 0;
259
+ }
260
+ }
261
+ }
262
+ catch (error) {
263
+ logger.warn(`Audit failed for ${projectPath}:`, error);
264
+ }
265
+ return audit;
266
+ }
267
+ static async auditConceptStore() {
268
+ const audit = {
269
+ totalConcepts: 0,
270
+ averageLength: 0,
271
+ topTags: {},
272
+ diskUsage: 0,
273
+ };
274
+ try {
275
+ const conceptDbPath = path.join(require('os').homedir(), '.kratos', 'concept_store.db');
276
+ if (await fs.pathExists(conceptDbPath)) {
277
+ const stats = await fs.stat(conceptDbPath);
278
+ audit.diskUsage = stats.size;
279
+ const countResult = await KratosCIHooks.runCommand('sqlite3', [
280
+ conceptDbPath,
281
+ 'SELECT COUNT(*) FROM concepts;'
282
+ ]);
283
+ if (countResult.exitCode === 0) {
284
+ audit.totalConcepts = parseInt(countResult.output.trim()) || 0;
285
+ }
286
+ }
287
+ }
288
+ catch (error) {
289
+ logger.warn('Concept store audit failed:', error);
290
+ }
291
+ return audit;
292
+ }
293
+ static async getProjectStats(projectPath) {
294
+ const stats = {
295
+ project: projectPath,
296
+ memoryCount: 0,
297
+ diskUsage: 0,
298
+ topTags: {},
299
+ avgImportance: 0,
300
+ };
301
+ try {
302
+ const dbPath = path.join(projectPath, '.kratos', 'memory.db');
303
+ if (await fs.pathExists(dbPath)) {
304
+ const fileStats = await fs.stat(dbPath);
305
+ stats.diskUsage = fileStats.size;
306
+ // Get memory count
307
+ const countResult = await KratosCIHooks.runCommand('sqlite3', [
308
+ dbPath,
309
+ 'SELECT COUNT(*) FROM memories;'
310
+ ]);
311
+ if (countResult.exitCode === 0) {
312
+ stats.memoryCount = parseInt(countResult.output.trim()) || 0;
313
+ }
314
+ }
315
+ }
316
+ catch (error) {
317
+ logger.warn(`Stats collection failed for ${projectPath}:`, error);
318
+ }
319
+ return stats;
320
+ }
321
+ static async getConceptStats() {
322
+ const stats = {
323
+ totalConcepts: 0,
324
+ diskUsage: 0,
325
+ };
326
+ try {
327
+ const conceptDbPath = path.join(require('os').homedir(), '.kratos', 'concept_store.db');
328
+ if (await fs.pathExists(conceptDbPath)) {
329
+ const fileStats = await fs.stat(conceptDbPath);
330
+ stats.diskUsage = fileStats.size;
331
+ const countResult = await KratosCIHooks.runCommand('sqlite3', [
332
+ conceptDbPath,
333
+ 'SELECT COUNT(*) FROM concepts;'
334
+ ]);
335
+ if (countResult.exitCode === 0) {
336
+ stats.totalConcepts = parseInt(countResult.output.trim()) || 0;
337
+ }
338
+ }
339
+ }
340
+ catch (error) {
341
+ logger.warn('Concept stats collection failed:', error);
342
+ }
343
+ return stats;
344
+ }
345
+ static generateSecurityRecommendations(report) {
346
+ const recommendations = [];
347
+ if (report.vulnerabilities.some((v) => v.type === 'secrets-in-memories')) {
348
+ recommendations.push('Review and remove any secrets stored in memories');
349
+ recommendations.push('Implement stronger redaction patterns in middleware');
350
+ }
351
+ if (report.vulnerabilities.some((v) => v.type === 'cross-project-references')) {
352
+ recommendations.push('Audit cross-project references for potential data leaks');
353
+ recommendations.push('Consider using concept store for shared knowledge');
354
+ }
355
+ return recommendations;
356
+ }
357
+ static generateMemoryRecommendations(report) {
358
+ const recommendations = [];
359
+ const avgMemoriesPerProject = report.summary.totalMemories / report.summary.totalProjects;
360
+ if (avgMemoriesPerProject > 1000) {
361
+ recommendations.push('Consider implementing more aggressive TTL policies');
362
+ recommendations.push('Review memory importance scoring to prioritize retention');
363
+ }
364
+ if (report.summary.diskUsage > 100 * 1024 * 1024) { // 100MB
365
+ recommendations.push('Database size is large - consider archiving old memories');
366
+ recommendations.push('Run VACUUM on SQLite databases to reclaim space');
367
+ }
368
+ return recommendations;
369
+ }
370
+ static async generateCleanupReport(projects) {
371
+ const report = {
372
+ timestamp: new Date().toISOString(),
373
+ projectsCleaned: projects.length,
374
+ totalSizeReclaimed: 0,
375
+ memoriesExpired: 0,
376
+ };
377
+ const reportPath = path.join(process.cwd(), '.kratos-cleanup-report.json');
378
+ await fs.writeJson(reportPath, report, { spaces: 2 });
379
+ logger.info(`Cleanup report saved: ${reportPath}`);
380
+ }
381
+ static async runCommand(command, args) {
382
+ return new Promise((resolve) => {
383
+ const child = spawn(command, args, { stdio: 'pipe' });
384
+ let output = '';
385
+ child.stdout.on('data', (data) => {
386
+ output += data.toString();
387
+ });
388
+ child.stderr.on('data', (data) => {
389
+ output += data.toString();
390
+ });
391
+ child.on('close', (code) => {
392
+ resolve({
393
+ exitCode: code || 0,
394
+ output: output.trim(),
395
+ });
396
+ });
397
+ child.on('error', (error) => {
398
+ resolve({
399
+ exitCode: 1,
400
+ output: error.message,
401
+ });
402
+ });
403
+ });
404
+ }
405
+ }
406
+ // CLI interface
407
+ async function main() {
408
+ const command = process.argv[2];
409
+ try {
410
+ switch (command) {
411
+ case 'pre-commit':
412
+ const preCommitPassed = await KratosCIHooks.preCommitHook();
413
+ process.exit(preCommitPassed ? 0 : 1);
414
+ break;
415
+ case 'pre-push':
416
+ const prePushPassed = await KratosCIHooks.prePushHook();
417
+ process.exit(prePushPassed ? 0 : 1);
418
+ break;
419
+ case 'nightly-cleanup':
420
+ await KratosCIHooks.nightlyCleanup();
421
+ break;
422
+ case 'security-audit':
423
+ const { passed, report } = await KratosCIHooks.securityAudit();
424
+ console.log(JSON.stringify(report, null, 2));
425
+ process.exit(passed ? 0 : 1);
426
+ break;
427
+ case 'memory-report':
428
+ const memoryReport = await KratosCIHooks.generateMemoryReport();
429
+ console.log(JSON.stringify(memoryReport, null, 2));
430
+ break;
431
+ default:
432
+ console.log('Usage: kratos-ci-hooks <command>');
433
+ console.log('Commands:');
434
+ console.log(' pre-commit - Run leak detection tests');
435
+ console.log(' pre-push - Validate project configurations');
436
+ console.log(' nightly-cleanup - Clean up expired memories');
437
+ console.log(' security-audit - Check for security vulnerabilities');
438
+ console.log(' memory-report - Generate memory usage statistics');
439
+ process.exit(1);
440
+ }
441
+ }
442
+ catch (error) {
443
+ logger.error('CI hook failed:', error);
444
+ process.exit(1);
445
+ }
446
+ }
447
+ // Run if this is the main module
448
+ if (import.meta.url === `file://${process.argv[1]}`) {
449
+ main();
450
+ }
451
+ export { KratosCIHooks };
452
+ //# sourceMappingURL=ci-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-hooks.js","sourceRoot":"","sources":["../../src/tools/ci-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ interface MigrationStats {
3
+ totalFound: number;
4
+ migrated: number;
5
+ skipped: number;
6
+ errors: number;
7
+ conceptsCreated: number;
8
+ }
9
+ declare class KratosMigrationTool {
10
+ private stats;
11
+ migrateProject(projectRoot: string, options?: {
12
+ dryRun?: boolean;
13
+ createBackup?: boolean;
14
+ extractConcepts?: boolean;
15
+ }): Promise<MigrationStats>;
16
+ private findLegacyMemories;
17
+ private findJsonFiles;
18
+ private loadLegacyMemory;
19
+ private convertMemory;
20
+ private inferImportance;
21
+ private calculateTTL;
22
+ private shouldBeConcept;
23
+ private extractConceptBody;
24
+ private extractConceptTags;
25
+ private generateConceptId;
26
+ private initializeProject;
27
+ private getGitHash;
28
+ private createBackup;
29
+ private createMigrationLog;
30
+ }
31
+ export { KratosMigrationTool };
32
+ //# sourceMappingURL=migrate-to-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-to-sqlite.d.ts","sourceRoot":"","sources":["../../src/tools/migrate-to-sqlite.ts"],"names":[],"mappings":";AA6BA,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,cAAM,mBAAmB;IACvB,OAAO,CAAC,KAAK,CAMX;IAEI,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QACjD,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,cAAc,CAAC;YA0FlB,kBAAkB;YAmBlB,aAAa;YAkBb,gBAAgB;IAiB9B,OAAO,CAAC,aAAa;IAuCrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,iBAAiB;YAUX,iBAAiB;YAgCjB,UAAU;YAkBV,YAAY;YAYZ,kBAAkB;CAWjC;AAqDD,OAAO,EAAE,mBAAmB,EAAE,CAAC"}