gitlab-auto-reviewers 2.0.0 → 2.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.
- package/LICENSE +1 -1
- package/README.md +20 -10
- package/dist/bin/cli.js +155 -85
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/index.d.ts +1 -8
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +26 -9
- package/dist/bin/index.js.map +1 -1
- package/dist/bin/mcp.js +0 -0
- package/dist/cli/cicd-integration.d.ts +127 -0
- package/dist/cli/cicd-integration.d.ts.map +1 -0
- package/dist/cli/cicd-integration.js +385 -0
- package/dist/cli/cicd-integration.js.map +1 -0
- package/dist/cli/commands.d.ts +21 -4
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +417 -71
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/config.d.ts +145 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +277 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/consistency-validator.d.ts +175 -0
- package/dist/cli/consistency-validator.d.ts.map +1 -0
- package/dist/cli/consistency-validator.js +599 -0
- package/dist/cli/consistency-validator.js.map +1 -0
- package/dist/cli/data-source-consistency.d.ts +105 -0
- package/dist/cli/data-source-consistency.d.ts.map +1 -0
- package/dist/cli/data-source-consistency.js +271 -0
- package/dist/cli/data-source-consistency.js.map +1 -0
- package/dist/cli/data-source-selector.d.ts +103 -0
- package/dist/cli/data-source-selector.d.ts.map +1 -0
- package/dist/cli/data-source-selector.js +242 -0
- package/dist/cli/data-source-selector.js.map +1 -0
- package/dist/cli/enhanced-cli.d.ts +104 -0
- package/dist/cli/enhanced-cli.d.ts.map +1 -0
- package/dist/cli/enhanced-cli.js +321 -0
- package/dist/cli/enhanced-cli.js.map +1 -0
- package/dist/cli/enhanced-data-source-resolver.d.ts +67 -0
- package/dist/cli/enhanced-data-source-resolver.d.ts.map +1 -0
- package/dist/cli/enhanced-data-source-resolver.js +249 -0
- package/dist/cli/enhanced-data-source-resolver.js.map +1 -0
- package/dist/cli/enhanced-parameter-resolver.d.ts +111 -0
- package/dist/cli/enhanced-parameter-resolver.d.ts.map +1 -0
- package/dist/cli/enhanced-parameter-resolver.js +233 -0
- package/dist/cli/enhanced-parameter-resolver.js.map +1 -0
- package/dist/cli/errors.d.ts +105 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +577 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/output.d.ts +43 -3
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +157 -30
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parameter-source-tracker.d.ts +169 -0
- package/dist/cli/parameter-source-tracker.d.ts.map +1 -0
- package/dist/cli/parameter-source-tracker.js +252 -0
- package/dist/cli/parameter-source-tracker.js.map +1 -0
- package/dist/cli/template-engine.d.ts +109 -0
- package/dist/cli/template-engine.d.ts.map +1 -0
- package/dist/cli/template-engine.js +220 -0
- package/dist/cli/template-engine.js.map +1 -0
- package/dist/config/config.service.d.ts +24 -2
- package/dist/config/config.service.d.ts.map +1 -1
- package/dist/config/config.service.js +39 -6
- package/dist/config/config.service.js.map +1 -1
- package/dist/datasources/local-git-data-source.d.ts +39 -0
- package/dist/datasources/local-git-data-source.d.ts.map +1 -1
- package/dist/datasources/local-git-data-source.js +121 -1
- package/dist/datasources/local-git-data-source.js.map +1 -1
- package/dist/enhanced-config.js +26 -0
- package/dist/index.js +0 -0
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/services/blacklist.service.d.ts +11 -5
- package/dist/services/blacklist.service.d.ts.map +1 -1
- package/dist/services/blacklist.service.js +28 -7
- package/dist/services/blacklist.service.js.map +1 -1
- package/dist/services/reviewer-service.d.ts +24 -0
- package/dist/services/reviewer-service.d.ts.map +1 -1
- package/dist/services/reviewer-service.js +177 -7
- package/dist/services/reviewer-service.js.map +1 -1
- package/dist/services/whitelist.service.js +1 -1
- package/dist/services/whitelist.service.js.map +1 -1
- package/dist/types/enhanced-config.d.ts +121 -0
- package/dist/types/enhanced-config.d.ts.map +1 -0
- package/dist/types/enhanced-config.js +27 -0
- package/dist/types/enhanced-config.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -11
- package/dist/bin/deprecated-mcp.d.ts +0 -12
- package/dist/bin/deprecated-mcp.d.ts.map +0 -1
- package/dist/bin/deprecated-mcp.js +0 -73
- package/dist/bin/deprecated-mcp.js.map +0 -1
- package/dist/tools.d.ts +0 -22
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -176
- package/dist/tools.js.map +0 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Parameter Resolver
|
|
3
|
+
*
|
|
4
|
+
* This module implements parameter resolution with clear precedence rules:
|
|
5
|
+
* 1. CLI arguments (highest priority)
|
|
6
|
+
* 2. Environment variables (secondary)
|
|
7
|
+
* 3. Auto-detection (when available)
|
|
8
|
+
* 4. Default values (lowest priority)
|
|
9
|
+
*
|
|
10
|
+
* @module cli/enhanced-parameter-resolver
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Enhanced parameter resolver with precedence handling
|
|
14
|
+
*/
|
|
15
|
+
export class EnhancedParameterResolver {
|
|
16
|
+
logger;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new EnhancedParameterResolver instance.
|
|
19
|
+
*
|
|
20
|
+
* @param logger - Logger service for debugging and monitoring
|
|
21
|
+
*/
|
|
22
|
+
constructor(logger) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve parameter using precedence rules
|
|
27
|
+
*
|
|
28
|
+
* @param cliValue - Value from CLI argument
|
|
29
|
+
* @param envVarName - Environment variable name
|
|
30
|
+
* @param autoDetectFn - Optional auto-detection function
|
|
31
|
+
* @returns Resolved parameter value or null
|
|
32
|
+
*/
|
|
33
|
+
resolveParameter(cliValue, envVarName, autoDetectFn) {
|
|
34
|
+
// Priority 1: CLI argument
|
|
35
|
+
if (cliValue !== undefined) {
|
|
36
|
+
this.logger.debug('Using CLI argument', {
|
|
37
|
+
parameter: envVarName,
|
|
38
|
+
source: 'cli-argument'
|
|
39
|
+
});
|
|
40
|
+
return cliValue;
|
|
41
|
+
}
|
|
42
|
+
// Priority 2: Environment variable
|
|
43
|
+
const envValue = process.env[envVarName];
|
|
44
|
+
if (envValue) {
|
|
45
|
+
this.logger.debug('Using environment variable', {
|
|
46
|
+
parameter: envVarName,
|
|
47
|
+
source: 'environment-variable',
|
|
48
|
+
envVar: envVarName
|
|
49
|
+
});
|
|
50
|
+
return envValue;
|
|
51
|
+
}
|
|
52
|
+
// Priority 3: Auto-detection
|
|
53
|
+
if (autoDetectFn) {
|
|
54
|
+
const autoDetected = autoDetectFn();
|
|
55
|
+
if (autoDetected !== null) {
|
|
56
|
+
this.logger.debug('Using auto-detected value', {
|
|
57
|
+
parameter: envVarName,
|
|
58
|
+
source: 'auto-detection'
|
|
59
|
+
});
|
|
60
|
+
return autoDetected;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this.logger.debug('No value found for parameter', {
|
|
64
|
+
parameter: envVarName,
|
|
65
|
+
checkedSources: ['cli-argument', 'environment-variable', autoDetectFn ? 'auto-detection' : null].filter(Boolean)
|
|
66
|
+
});
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolve GitLab authentication token
|
|
71
|
+
*
|
|
72
|
+
* @param cliToken - Token from CLI argument
|
|
73
|
+
* @returns Resolved token or null
|
|
74
|
+
*/
|
|
75
|
+
resolveGitLabToken(cliToken) {
|
|
76
|
+
// Priority 1: CLI argument
|
|
77
|
+
if (cliToken) {
|
|
78
|
+
this.logger.debug('Using GitLab token from CLI argument');
|
|
79
|
+
return cliToken;
|
|
80
|
+
}
|
|
81
|
+
// Priority 2: Check standard token environment variables in order
|
|
82
|
+
for (const envVar of ['CI_JOB_TOKEN', 'GITLAB_TOKEN']) {
|
|
83
|
+
const token = process.env[envVar];
|
|
84
|
+
if (token) {
|
|
85
|
+
this.logger.debug('Using GitLab token from environment variable', { envVar });
|
|
86
|
+
return token;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.logger.debug('No GitLab token found in CLI arguments or environment variables');
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve merge request ID
|
|
94
|
+
*
|
|
95
|
+
* @param cliMrId - MR ID from CLI argument
|
|
96
|
+
* @returns Resolved MR ID or null
|
|
97
|
+
*/
|
|
98
|
+
resolveMergeRequestId(cliMrId) {
|
|
99
|
+
// Priority 1: CLI argument
|
|
100
|
+
if (cliMrId !== undefined) {
|
|
101
|
+
this.logger.debug('Using CLI argument', {
|
|
102
|
+
parameter: 'CI_MERGE_REQUEST_IID',
|
|
103
|
+
source: 'cli-argument'
|
|
104
|
+
});
|
|
105
|
+
return cliMrId;
|
|
106
|
+
}
|
|
107
|
+
// Priority 2: Environment variable (with parsing)
|
|
108
|
+
const envMrId = process.env.CI_MERGE_REQUEST_IID;
|
|
109
|
+
if (envMrId) {
|
|
110
|
+
this.logger.debug('Using environment variable', {
|
|
111
|
+
parameter: 'CI_MERGE_REQUEST_IID',
|
|
112
|
+
source: 'environment-variable',
|
|
113
|
+
envVar: 'CI_MERGE_REQUEST_IID'
|
|
114
|
+
});
|
|
115
|
+
const parsed = parseInt(envMrId, 10);
|
|
116
|
+
return isNaN(parsed) ? null : parsed;
|
|
117
|
+
}
|
|
118
|
+
this.logger.debug('No value found for parameter', {
|
|
119
|
+
parameter: 'CI_MERGE_REQUEST_IID',
|
|
120
|
+
checkedSources: ['cli-argument', 'environment-variable']
|
|
121
|
+
});
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Resolve GitLab URL
|
|
126
|
+
*
|
|
127
|
+
* @param cliUrl - URL from CLI argument
|
|
128
|
+
* @returns Resolved GitLab URL or null
|
|
129
|
+
*/
|
|
130
|
+
resolveGitLabUrl(cliUrl) {
|
|
131
|
+
return this.resolveParameter(cliUrl, 'CI_SERVER_URL', () => process.env.CI_SERVER_URL || null);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolve project identifier
|
|
135
|
+
*
|
|
136
|
+
* @param cliProject - Project from CLI argument
|
|
137
|
+
* @param autoDetectFn - Function to auto-detect project
|
|
138
|
+
* @returns Resolved project or null
|
|
139
|
+
*/
|
|
140
|
+
resolveProject(cliProject, autoDetectFn) {
|
|
141
|
+
return this.resolveParameter(cliProject, 'CI_PROJECT_PATH', () => {
|
|
142
|
+
// Try CI_PROJECT_PATH first, then CI_PROJECT_ID, then auto-detection
|
|
143
|
+
const projectPath = process.env.CI_PROJECT_PATH;
|
|
144
|
+
if (projectPath) {
|
|
145
|
+
return projectPath;
|
|
146
|
+
}
|
|
147
|
+
const projectId = process.env.CI_PROJECT_ID;
|
|
148
|
+
if (projectId) {
|
|
149
|
+
return projectId;
|
|
150
|
+
}
|
|
151
|
+
// Use auto-detection function if provided
|
|
152
|
+
return autoDetectFn ? autoDetectFn() : null;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get parameter source information for debugging
|
|
157
|
+
*
|
|
158
|
+
* @param cliValue - Value from CLI
|
|
159
|
+
* @param envVarName - Environment variable name
|
|
160
|
+
* @param autoDetectFn - Auto-detection function
|
|
161
|
+
* @returns Source information string
|
|
162
|
+
*/
|
|
163
|
+
getParameterSource(cliValue, envVarName, autoDetectFn) {
|
|
164
|
+
if (cliValue !== undefined) {
|
|
165
|
+
return 'cli-argument';
|
|
166
|
+
}
|
|
167
|
+
if (process.env[envVarName]) {
|
|
168
|
+
return `environment-variable:${envVarName}`;
|
|
169
|
+
}
|
|
170
|
+
if (autoDetectFn && autoDetectFn() !== null) {
|
|
171
|
+
return 'auto-detection';
|
|
172
|
+
}
|
|
173
|
+
return 'not-found';
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Resolve all core parameters and return source information
|
|
177
|
+
*
|
|
178
|
+
* @param cliOptions - CLI options
|
|
179
|
+
* @param autoDetectProject - Function to auto-detect project
|
|
180
|
+
* @returns Resolved parameters with source tracking
|
|
181
|
+
*/
|
|
182
|
+
resolveAllParameters(cliOptions, autoDetectProject) {
|
|
183
|
+
const project = this.resolveProject(cliOptions.project, autoDetectProject);
|
|
184
|
+
const mergeRequestId = this.resolveMergeRequestId(cliOptions.mr);
|
|
185
|
+
const gitlabUrl = this.resolveGitLabUrl(cliOptions.gitlabUrl);
|
|
186
|
+
const gitlabToken = this.resolveGitLabToken(cliOptions.gitlabToken);
|
|
187
|
+
return {
|
|
188
|
+
project,
|
|
189
|
+
mergeRequestId,
|
|
190
|
+
gitlabUrl,
|
|
191
|
+
gitlabToken,
|
|
192
|
+
sources: {
|
|
193
|
+
project: this.getParameterSource(cliOptions.project, 'CI_PROJECT_PATH', autoDetectProject),
|
|
194
|
+
mergeRequestId: this.getMergeRequestIdSource(cliOptions.mr),
|
|
195
|
+
gitlabUrl: this.getParameterSource(cliOptions.gitlabUrl, 'CI_SERVER_URL'),
|
|
196
|
+
gitlabToken: this.getGitLabTokenSource(cliOptions.gitlabToken),
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get merge request ID source information
|
|
202
|
+
*
|
|
203
|
+
* @param cliMrId - MR ID from CLI
|
|
204
|
+
* @returns Source information string
|
|
205
|
+
*/
|
|
206
|
+
getMergeRequestIdSource(cliMrId) {
|
|
207
|
+
if (cliMrId !== undefined) {
|
|
208
|
+
return 'cli-argument';
|
|
209
|
+
}
|
|
210
|
+
if (process.env.CI_MERGE_REQUEST_IID) {
|
|
211
|
+
return 'environment-variable:CI_MERGE_REQUEST_IID';
|
|
212
|
+
}
|
|
213
|
+
return 'not-found';
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get GitLab token source information
|
|
217
|
+
*
|
|
218
|
+
* @param cliToken - Token from CLI
|
|
219
|
+
* @returns Source information string
|
|
220
|
+
*/
|
|
221
|
+
getGitLabTokenSource(cliToken) {
|
|
222
|
+
if (cliToken) {
|
|
223
|
+
return 'cli-argument';
|
|
224
|
+
}
|
|
225
|
+
for (const envVar of ['CI_JOB_TOKEN', 'GITLAB_TOKEN']) {
|
|
226
|
+
if (process.env[envVar]) {
|
|
227
|
+
return `environment-variable:${envVar}`;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return 'not-found';
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=enhanced-parameter-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-parameter-resolver.js","sourceRoot":"","sources":["../../src/cli/enhanced-parameter-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Error Handling
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive error handling and validation for CLI operations.
|
|
5
|
+
* Includes specific error types, validation functions, and user-friendly error messages.
|
|
6
|
+
*
|
|
7
|
+
* @module cli/errors
|
|
8
|
+
*/
|
|
9
|
+
import { MCPError } from '../errors/error-handler.js';
|
|
10
|
+
/**
|
|
11
|
+
* CLI-specific error codes
|
|
12
|
+
*/
|
|
13
|
+
export declare enum CLIErrorCode {
|
|
14
|
+
SUCCESS = 0,
|
|
15
|
+
VALIDATION_ERROR = 1,
|
|
16
|
+
AUTHENTICATION_ERROR = 2,
|
|
17
|
+
NETWORK_ERROR = 3,
|
|
18
|
+
API_ERROR = 4,
|
|
19
|
+
PERMISSION_ERROR = 5,
|
|
20
|
+
CONFIGURATION_ERROR = 6,
|
|
21
|
+
TEMPLATE_ERROR = 7,
|
|
22
|
+
RATE_LIMITED = 8,
|
|
23
|
+
NOT_FOUND = 9,
|
|
24
|
+
UNKNOWN_ERROR = 99
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* CLI Error class with specific error codes and user guidance
|
|
28
|
+
*/
|
|
29
|
+
export declare class CLIError extends MCPError {
|
|
30
|
+
exitCode: CLIErrorCode;
|
|
31
|
+
userGuidance?: string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new CLI error with specific exit code and user guidance
|
|
34
|
+
*
|
|
35
|
+
* @param message - The error message
|
|
36
|
+
* @param exitCode - CLI exit code for this error
|
|
37
|
+
* @param userGuidance - Optional user guidance for resolving the error
|
|
38
|
+
* @param details - Optional additional error details
|
|
39
|
+
* @param cause - Optional underlying error that caused this error
|
|
40
|
+
*/
|
|
41
|
+
constructor(message: string, exitCode: CLIErrorCode, userGuidance?: string | undefined, details?: Record<string, unknown>, cause?: Error);
|
|
42
|
+
/**
|
|
43
|
+
* Get formatted error message with guidance
|
|
44
|
+
*/
|
|
45
|
+
getFormattedMessage(): string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parameter validation functions
|
|
49
|
+
*/
|
|
50
|
+
export declare class ParameterValidator {
|
|
51
|
+
/**
|
|
52
|
+
* Validate repository path
|
|
53
|
+
*/
|
|
54
|
+
static validateRepositoryPath(repoPath: string | undefined): string;
|
|
55
|
+
/**
|
|
56
|
+
* Validate merge request IID
|
|
57
|
+
*/
|
|
58
|
+
static validateMergeRequestIid(mrIid: number | undefined): number | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Validate branch name
|
|
61
|
+
*/
|
|
62
|
+
static validateBranchName(branch: string | undefined): string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Validate GitLab URL
|
|
65
|
+
*/
|
|
66
|
+
static validateGitLabUrl(url: string | undefined): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Validate GitLab token
|
|
69
|
+
*/
|
|
70
|
+
static validateGitLabToken(token: string | undefined): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Validate output format
|
|
73
|
+
*/
|
|
74
|
+
static validateFormat(format: string | undefined): 'json' | 'text' | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Validate that either MR IID or branch is provided
|
|
77
|
+
*/
|
|
78
|
+
static validateMergeRequestIdentifier(mergeRequestIid: number | undefined, branch: string | undefined): void;
|
|
79
|
+
/**
|
|
80
|
+
* Validate conflicting options
|
|
81
|
+
*/
|
|
82
|
+
static validateConflictingOptions(verbose: boolean, quiet: boolean): void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Error detection and classification functions
|
|
86
|
+
*/
|
|
87
|
+
export declare class ErrorClassifier {
|
|
88
|
+
/**
|
|
89
|
+
* Classify an error and return appropriate CLI error code
|
|
90
|
+
*/
|
|
91
|
+
static classifyError(error: Error): CLIErrorCode;
|
|
92
|
+
/**
|
|
93
|
+
* Get user-friendly error message with guidance
|
|
94
|
+
*/
|
|
95
|
+
static getErrorGuidance(_error: Error, errorCode: CLIErrorCode): string;
|
|
96
|
+
/**
|
|
97
|
+
* Extract wait time from rate limit error
|
|
98
|
+
*/
|
|
99
|
+
static extractRateLimitWaitTime(error: Error): number | undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Format error for CLI output
|
|
103
|
+
*/
|
|
104
|
+
export declare function formatCLIError(error: Error, format?: 'json' | 'text', verbose?: boolean): string;
|
|
105
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAiB,MAAM,4BAA4B,CAAC;AAErE;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,IAAI;IACX,gBAAgB,IAAI;IACpB,oBAAoB,IAAI;IACxB,aAAa,IAAI;IACjB,SAAS,IAAI;IACb,gBAAgB,IAAI;IACpB,mBAAmB,IAAI;IACvB,cAAc,IAAI;IAClB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,aAAa,KAAK;CACnB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IAY3B,QAAQ,EAAE,YAAY;IACtB,YAAY,CAAC,EAAE,MAAM;IAZ9B;;;;;;;;OAQG;gBAED,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,YAAY,EACtB,YAAY,CAAC,EAAE,MAAM,YAAA,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAMf;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAW9B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAyBnE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IA0B7E;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAmDzE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IA+CrE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAkDzE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAqB9E;;OAEG;IACH,MAAM,CAAC,8BAA8B,CACnC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,IAAI;IAoBP;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;CAU1E;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY;IAmDhD;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM;IAiPvE;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;CAwBlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAAM,GAAG,MAAe,EAChC,OAAO,GAAE,OAAe,GACvB,MAAM,CAwDR"}
|