@kosuke-ai/cli 0.0.14 → 0.0.16
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/README.md +40 -0
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/build.d.ts +1 -0
- package/dist/kosuke/commands/build.d.ts.map +1 -1
- package/dist/kosuke/commands/build.js +5 -1
- package/dist/kosuke/commands/build.js.map +1 -1
- package/dist/kosuke/commands/getcode.d.ts.map +1 -1
- package/dist/kosuke/commands/getcode.js +13 -0
- package/dist/kosuke/commands/getcode.js.map +1 -1
- package/dist/kosuke/commands/requirements.d.ts.map +1 -1
- package/dist/kosuke/commands/requirements.js +50 -18
- package/dist/kosuke/commands/requirements.js.map +1 -1
- package/dist/kosuke/commands/review.d.ts.map +1 -1
- package/dist/kosuke/commands/review.js +15 -0
- package/dist/kosuke/commands/review.js.map +1 -1
- package/dist/kosuke/commands/ship.d.ts +1 -0
- package/dist/kosuke/commands/ship.d.ts.map +1 -1
- package/dist/kosuke/commands/ship.js +60 -2
- package/dist/kosuke/commands/ship.js.map +1 -1
- package/dist/kosuke/commands/test.d.ts.map +1 -1
- package/dist/kosuke/commands/test.js +31 -1
- package/dist/kosuke/commands/test.js.map +1 -1
- package/dist/kosuke/commands/tickets.d.ts.map +1 -1
- package/dist/kosuke/commands/tickets.js +12 -0
- package/dist/kosuke/commands/tickets.js.map +1 -1
- package/dist/kosuke/types.d.ts +2 -0
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/logger.d.ts +134 -0
- package/dist/kosuke/utils/logger.d.ts.map +1 -0
- package/dist/kosuke/utils/logger.js +223 -0
- package/dist/kosuke/utils/logger.js.map +1 -0
- package/dist/lib.d.ts +13 -2
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +12 -1
- package/dist/lib.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Logger - Centralized logging to kosuke-core
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic command execution tracking, token usage logging,
|
|
5
|
+
* and cost monitoring for all CLI commands.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import { join, dirname } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = dirname(__filename);
|
|
12
|
+
/**
|
|
13
|
+
* CLI Logger class
|
|
14
|
+
*/
|
|
15
|
+
class CliLogger {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.config = this.loadConfig();
|
|
18
|
+
this.cliVersion = this.loadVersion();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load configuration from environment variables
|
|
22
|
+
*/
|
|
23
|
+
loadConfig() {
|
|
24
|
+
const baseUrl = process.env.KOSUKE_BASE_URL || '';
|
|
25
|
+
const apiKey = process.env.KOSUKE_API_KEY || '';
|
|
26
|
+
const projectId = process.env.KOSUKE_PROJECT_ID || '';
|
|
27
|
+
const enabled = !!(baseUrl && apiKey && projectId);
|
|
28
|
+
if (!enabled) {
|
|
29
|
+
console.warn('⚠️ CLI logging disabled - missing KOSUKE_BASE_URL, KOSUKE_API_KEY, or KOSUKE_PROJECT_ID');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
baseUrl,
|
|
33
|
+
apiKey,
|
|
34
|
+
projectId,
|
|
35
|
+
enabled,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Load CLI version from package.json
|
|
40
|
+
*/
|
|
41
|
+
loadVersion() {
|
|
42
|
+
try {
|
|
43
|
+
const packagePath = join(__dirname, '..', '..', 'package.json');
|
|
44
|
+
const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
45
|
+
return packageJson.version || 'unknown';
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return 'unknown';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Calculate cost from token usage
|
|
53
|
+
* Uses Claude Sonnet 4.5 pricing
|
|
54
|
+
*/
|
|
55
|
+
calculateCost(tokensInput, tokensOutput, tokensCacheCreation = 0, tokensCacheRead = 0) {
|
|
56
|
+
const INPUT_COST_PER_MILLION = 3.0;
|
|
57
|
+
const OUTPUT_COST_PER_MILLION = 15.0;
|
|
58
|
+
const CACHE_CREATION_COST_PER_MILLION = 3.75;
|
|
59
|
+
const CACHE_READ_COST_PER_MILLION = 0.3;
|
|
60
|
+
const inputCost = (tokensInput / 1000000) * INPUT_COST_PER_MILLION;
|
|
61
|
+
const outputCost = (tokensOutput / 1000000) * OUTPUT_COST_PER_MILLION;
|
|
62
|
+
const cacheCreationCost = (tokensCacheCreation / 1000000) * CACHE_CREATION_COST_PER_MILLION;
|
|
63
|
+
const cacheReadCost = (tokensCacheRead / 1000000) * CACHE_READ_COST_PER_MILLION;
|
|
64
|
+
const totalCost = inputCost + outputCost + cacheCreationCost + cacheReadCost;
|
|
65
|
+
return totalCost.toFixed(6);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Log command execution to kosuke-core
|
|
69
|
+
*/
|
|
70
|
+
async logCommand(data) {
|
|
71
|
+
if (!this.config.enabled) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const controller = new AbortController();
|
|
76
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
77
|
+
const response = await fetch(`${this.config.baseUrl}/api/cli/logs`, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: {
|
|
80
|
+
'Content-Type': 'application/json',
|
|
81
|
+
'x-cli-api-key': this.config.apiKey,
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify(data),
|
|
84
|
+
signal: controller.signal,
|
|
85
|
+
});
|
|
86
|
+
clearTimeout(timeout);
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
const error = await response.json();
|
|
89
|
+
console.warn(`⚠️ Failed to log command: ${JSON.stringify(error)}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
// Non-blocking: log warning but don't throw
|
|
94
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
95
|
+
console.warn(`⚠️ Error logging command: ${message}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a new command execution context
|
|
100
|
+
*/
|
|
101
|
+
createContext(command) {
|
|
102
|
+
return {
|
|
103
|
+
command,
|
|
104
|
+
startTime: Date.now(),
|
|
105
|
+
startedAt: new Date().toISOString(),
|
|
106
|
+
tokensInput: 0,
|
|
107
|
+
tokensOutput: 0,
|
|
108
|
+
tokensCacheCreation: 0,
|
|
109
|
+
tokensCacheRead: 0,
|
|
110
|
+
inferenceTimeMs: 0,
|
|
111
|
+
fixesApplied: 0,
|
|
112
|
+
testsRun: 0,
|
|
113
|
+
testsPassed: 0,
|
|
114
|
+
testsFailed: 0,
|
|
115
|
+
iterations: 0,
|
|
116
|
+
filesModified: [],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Track tokens from an agent result
|
|
121
|
+
*/
|
|
122
|
+
trackTokens(context, tokensUsed) {
|
|
123
|
+
context.tokensInput += tokensUsed.input;
|
|
124
|
+
context.tokensOutput += tokensUsed.output;
|
|
125
|
+
context.tokensCacheCreation += tokensUsed.cacheCreation;
|
|
126
|
+
context.tokensCacheRead += tokensUsed.cacheRead;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Complete command execution and log it
|
|
130
|
+
*/
|
|
131
|
+
async complete(context, status, error) {
|
|
132
|
+
if (!this.config.enabled) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const executionTimeMs = Date.now() - context.startTime;
|
|
136
|
+
const completedAt = new Date().toISOString();
|
|
137
|
+
const logData = {
|
|
138
|
+
projectId: this.config.projectId,
|
|
139
|
+
command: context.command,
|
|
140
|
+
status,
|
|
141
|
+
errorMessage: error?.message,
|
|
142
|
+
tokensInput: context.tokensInput,
|
|
143
|
+
tokensOutput: context.tokensOutput,
|
|
144
|
+
tokensCacheCreation: context.tokensCacheCreation > 0 ? context.tokensCacheCreation : undefined,
|
|
145
|
+
tokensCacheRead: context.tokensCacheRead > 0 ? context.tokensCacheRead : undefined,
|
|
146
|
+
cost: this.calculateCost(context.tokensInput, context.tokensOutput, context.tokensCacheCreation, context.tokensCacheRead),
|
|
147
|
+
executionTimeMs,
|
|
148
|
+
inferenceTimeMs: context.inferenceTimeMs > 0 ? context.inferenceTimeMs : undefined,
|
|
149
|
+
fixesApplied: context.fixesApplied > 0 ? context.fixesApplied : undefined,
|
|
150
|
+
testsRun: context.testsRun > 0 ? context.testsRun : undefined,
|
|
151
|
+
testsPassed: context.testsPassed > 0 ? context.testsPassed : undefined,
|
|
152
|
+
testsFailed: context.testsFailed > 0 ? context.testsFailed : undefined,
|
|
153
|
+
iterations: context.iterations > 0 ? context.iterations : undefined,
|
|
154
|
+
filesModified: context.filesModified.length > 0 ? context.filesModified : undefined,
|
|
155
|
+
cliVersion: this.cliVersion,
|
|
156
|
+
startedAt: context.startedAt,
|
|
157
|
+
completedAt,
|
|
158
|
+
};
|
|
159
|
+
await this.logCommand(logData);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get project context (returns null if not configured)
|
|
163
|
+
*/
|
|
164
|
+
getProjectContext() {
|
|
165
|
+
if (!this.config.enabled) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
projectId: this.config.projectId,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if logging is enabled
|
|
174
|
+
*/
|
|
175
|
+
isEnabled() {
|
|
176
|
+
return this.config.enabled;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Export singleton instance
|
|
180
|
+
export const logger = new CliLogger();
|
|
181
|
+
/**
|
|
182
|
+
* Wrapper function to automatically track command execution
|
|
183
|
+
*
|
|
184
|
+
* Example usage:
|
|
185
|
+
* ```typescript
|
|
186
|
+
* export async function shipCommand(options: ShipOptions): Promise<void> {
|
|
187
|
+
* await withCommandTracking('ship', async (ctx) => {
|
|
188
|
+
* // ... command logic ...
|
|
189
|
+
* // Track tokens from agent results
|
|
190
|
+
* logger.trackTokens(ctx, result.tokensUsed);
|
|
191
|
+
* ctx.fixesApplied += result.fixCount;
|
|
192
|
+
* });
|
|
193
|
+
* }
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
export async function withCommandTracking(command, fn) {
|
|
197
|
+
const context = logger.createContext(command);
|
|
198
|
+
try {
|
|
199
|
+
const result = await fn(context);
|
|
200
|
+
await logger.complete(context, 'success');
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
await logger.complete(context, 'error', error);
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Handle command cancellation (SIGINT)
|
|
210
|
+
*/
|
|
211
|
+
export function setupCancellationHandler(context) {
|
|
212
|
+
const handler = async () => {
|
|
213
|
+
console.log('\n\n⚠️ Command cancelled by user');
|
|
214
|
+
await logger.complete(context, 'cancelled');
|
|
215
|
+
process.exit(130); // Standard exit code for SIGINT
|
|
216
|
+
};
|
|
217
|
+
process.on('SIGINT', handler);
|
|
218
|
+
// Return cleanup function
|
|
219
|
+
return () => {
|
|
220
|
+
process.off('SIGINT', handler);
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../kosuke/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
* getCodeCore,
|
|
12
12
|
* discoverFiles,
|
|
13
13
|
* runLint,
|
|
14
|
-
*
|
|
14
|
+
* logger,
|
|
15
|
+
* withCommandTracking,
|
|
16
|
+
* type ValidationResult,
|
|
17
|
+
* type CommandExecutionContext
|
|
15
18
|
* } from '@kosuke-ai/cli';
|
|
16
19
|
*
|
|
17
20
|
* // Run analysis programmatically
|
|
@@ -28,6 +31,13 @@
|
|
|
28
31
|
*
|
|
29
32
|
* // Discover files
|
|
30
33
|
* const files = await discoverFiles({ types: ['ts', 'tsx'] });
|
|
34
|
+
*
|
|
35
|
+
* // Track command execution with automatic logging
|
|
36
|
+
* await withCommandTracking('ship', async (ctx: CommandExecutionContext) => {
|
|
37
|
+
* // Your command logic here
|
|
38
|
+
* ctx.fixesApplied = 5;
|
|
39
|
+
* ctx.filesModified = ['src/app.ts'];
|
|
40
|
+
* });
|
|
31
41
|
* ```
|
|
32
42
|
*/
|
|
33
43
|
export { analyseCommand } from './kosuke/commands/analyse.js';
|
|
@@ -45,7 +55,8 @@ export { createBatches } from './kosuke/utils/batch-creator.js';
|
|
|
45
55
|
export { runLint, runTypecheck, runFormat, runTests, runComprehensiveLinting, detectPackageManager, readPackageJsonScripts, } from './kosuke/utils/validator.js';
|
|
46
56
|
export { getRepoLocalPath } from './kosuke/utils/repository-manager.js';
|
|
47
57
|
export { validateRepoAccess } from './kosuke/utils/repository-resolver.js';
|
|
48
|
-
export
|
|
58
|
+
export { logger, withCommandTracking, setupCancellationHandler } from './kosuke/utils/logger.js';
|
|
59
|
+
export type { Batch, Fix, AnalyseOptions, LintOptions, SyncRulesOptions, RulesAdaptation, GitInfo, GetCodeOptions, CodeExplorationResult, TicketsOptions, TicketsResult, Ticket, ShipOptions, ShipResult, BuildOptions, ReviewOptions, ReviewResult, TestOptions, TestResult, AnalysisResult, TestFailure, ConsoleLog, NetworkLog, DockerLog, CollectedLogs, PlaywrightResult, PlaywrightOptions, GeneratedTest, VisualDiff, VisualTestOptions, CommandName, ExecutionStatus, CliLogData, CommandExecutionContext, } from './kosuke/types.js';
|
|
49
60
|
export type { ValidationResult } from './kosuke/utils/validator.js';
|
|
50
61
|
export type { AgentVerbosity, AgentConfig, AgentResult } from './kosuke/utils/claude-agent.js';
|
|
51
62
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,YAAY,EACV,KAAK,EACL,GAAG,EACH,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EAEV,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,eAAe,EACf,UAAU,EACV,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
* getCodeCore,
|
|
12
12
|
* discoverFiles,
|
|
13
13
|
* runLint,
|
|
14
|
-
*
|
|
14
|
+
* logger,
|
|
15
|
+
* withCommandTracking,
|
|
16
|
+
* type ValidationResult,
|
|
17
|
+
* type CommandExecutionContext
|
|
15
18
|
* } from '@kosuke-ai/cli';
|
|
16
19
|
*
|
|
17
20
|
* // Run analysis programmatically
|
|
@@ -28,6 +31,13 @@
|
|
|
28
31
|
*
|
|
29
32
|
* // Discover files
|
|
30
33
|
* const files = await discoverFiles({ types: ['ts', 'tsx'] });
|
|
34
|
+
*
|
|
35
|
+
* // Track command execution with automatic logging
|
|
36
|
+
* await withCommandTracking('ship', async (ctx: CommandExecutionContext) => {
|
|
37
|
+
* // Your command logic here
|
|
38
|
+
* ctx.fixesApplied = 5;
|
|
39
|
+
* ctx.filesModified = ['src/app.ts'];
|
|
40
|
+
* });
|
|
31
41
|
* ```
|
|
32
42
|
*/
|
|
33
43
|
// Re-export commands
|
|
@@ -47,4 +57,5 @@ export { createBatches } from './kosuke/utils/batch-creator.js';
|
|
|
47
57
|
export { runLint, runTypecheck, runFormat, runTests, runComprehensiveLinting, detectPackageManager, readPackageJsonScripts, } from './kosuke/utils/validator.js';
|
|
48
58
|
export { getRepoLocalPath } from './kosuke/utils/repository-manager.js';
|
|
49
59
|
export { validateRepoAccess } from './kosuke/utils/repository-resolver.js';
|
|
60
|
+
export { logger, withCommandTracking, setupCancellationHandler } from './kosuke/utils/logger.js';
|
|
50
61
|
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElE,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
|