@probelabs/visor 0.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 (116) hide show
  1. package/README.md +1240 -0
  2. package/action.yml +142 -0
  3. package/defaults/.visor.yaml +184 -0
  4. package/dist/action-cli-bridge.d.ts +104 -0
  5. package/dist/action-cli-bridge.d.ts.map +1 -0
  6. package/dist/action-cli-bridge.js +372 -0
  7. package/dist/action-cli-bridge.js.map +1 -0
  8. package/dist/ai-review-service.d.ts +84 -0
  9. package/dist/ai-review-service.d.ts.map +1 -0
  10. package/dist/ai-review-service.js +674 -0
  11. package/dist/ai-review-service.js.map +1 -0
  12. package/dist/check-execution-engine.d.ts +165 -0
  13. package/dist/check-execution-engine.d.ts.map +1 -0
  14. package/dist/check-execution-engine.js +1172 -0
  15. package/dist/check-execution-engine.js.map +1 -0
  16. package/dist/cli-main.d.ts +6 -0
  17. package/dist/cli-main.d.ts.map +1 -0
  18. package/dist/cli-main.js +247 -0
  19. package/dist/cli-main.js.map +1 -0
  20. package/dist/cli.d.ts +47 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +224 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/commands.d.ts +10 -0
  25. package/dist/commands.d.ts.map +1 -0
  26. package/dist/commands.js +53 -0
  27. package/dist/commands.js.map +1 -0
  28. package/dist/config.d.ts +63 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +369 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/dependency-resolver.d.ts +54 -0
  33. package/dist/dependency-resolver.d.ts.map +1 -0
  34. package/dist/dependency-resolver.js +163 -0
  35. package/dist/dependency-resolver.js.map +1 -0
  36. package/dist/event-mapper.d.ts +125 -0
  37. package/dist/event-mapper.d.ts.map +1 -0
  38. package/dist/event-mapper.js +311 -0
  39. package/dist/event-mapper.js.map +1 -0
  40. package/dist/failure-condition-evaluator.d.ts +81 -0
  41. package/dist/failure-condition-evaluator.d.ts.map +1 -0
  42. package/dist/failure-condition-evaluator.js +445 -0
  43. package/dist/failure-condition-evaluator.js.map +1 -0
  44. package/dist/git-repository-analyzer.d.ts +45 -0
  45. package/dist/git-repository-analyzer.d.ts.map +1 -0
  46. package/dist/git-repository-analyzer.js +285 -0
  47. package/dist/git-repository-analyzer.js.map +1 -0
  48. package/dist/github-check-service.d.ts +104 -0
  49. package/dist/github-check-service.d.ts.map +1 -0
  50. package/dist/github-check-service.js +382 -0
  51. package/dist/github-check-service.js.map +1 -0
  52. package/dist/github-comments.d.ts +109 -0
  53. package/dist/github-comments.d.ts.map +1 -0
  54. package/dist/github-comments.js +289 -0
  55. package/dist/github-comments.js.map +1 -0
  56. package/dist/index.d.ts +2 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +1265 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/output-formatters.d.ts +66 -0
  61. package/dist/output-formatters.d.ts.map +1 -0
  62. package/dist/output-formatters.js +624 -0
  63. package/dist/output-formatters.js.map +1 -0
  64. package/dist/pr-analyzer.d.ts +47 -0
  65. package/dist/pr-analyzer.d.ts.map +1 -0
  66. package/dist/pr-analyzer.js +194 -0
  67. package/dist/pr-analyzer.js.map +1 -0
  68. package/dist/pr-detector.d.ts +78 -0
  69. package/dist/pr-detector.d.ts.map +1 -0
  70. package/dist/pr-detector.js +357 -0
  71. package/dist/pr-detector.js.map +1 -0
  72. package/dist/providers/ai-check-provider.d.ts +40 -0
  73. package/dist/providers/ai-check-provider.d.ts.map +1 -0
  74. package/dist/providers/ai-check-provider.js +416 -0
  75. package/dist/providers/ai-check-provider.js.map +1 -0
  76. package/dist/providers/check-provider-registry.d.ts +67 -0
  77. package/dist/providers/check-provider-registry.d.ts.map +1 -0
  78. package/dist/providers/check-provider-registry.js +138 -0
  79. package/dist/providers/check-provider-registry.js.map +1 -0
  80. package/dist/providers/check-provider.interface.d.ts +78 -0
  81. package/dist/providers/check-provider.interface.d.ts.map +1 -0
  82. package/dist/providers/check-provider.interface.js +11 -0
  83. package/dist/providers/check-provider.interface.js.map +1 -0
  84. package/dist/providers/index.d.ts +10 -0
  85. package/dist/providers/index.d.ts.map +1 -0
  86. package/dist/providers/index.js +19 -0
  87. package/dist/providers/index.js.map +1 -0
  88. package/dist/providers/script-check-provider.d.ts +20 -0
  89. package/dist/providers/script-check-provider.d.ts.map +1 -0
  90. package/dist/providers/script-check-provider.js +163 -0
  91. package/dist/providers/script-check-provider.js.map +1 -0
  92. package/dist/providers/tool-check-provider.d.ts +19 -0
  93. package/dist/providers/tool-check-provider.d.ts.map +1 -0
  94. package/dist/providers/tool-check-provider.js +125 -0
  95. package/dist/providers/tool-check-provider.js.map +1 -0
  96. package/dist/providers/webhook-check-provider.d.ts +21 -0
  97. package/dist/providers/webhook-check-provider.d.ts.map +1 -0
  98. package/dist/providers/webhook-check-provider.js +173 -0
  99. package/dist/providers/webhook-check-provider.js.map +1 -0
  100. package/dist/reviewer.d.ts +88 -0
  101. package/dist/reviewer.d.ts.map +1 -0
  102. package/dist/reviewer.js +760 -0
  103. package/dist/reviewer.js.map +1 -0
  104. package/dist/types/cli.d.ts +41 -0
  105. package/dist/types/cli.d.ts.map +1 -0
  106. package/dist/types/cli.js +3 -0
  107. package/dist/types/cli.js.map +1 -0
  108. package/dist/types/config.d.ts +315 -0
  109. package/dist/types/config.d.ts.map +1 -0
  110. package/dist/types/config.js +6 -0
  111. package/dist/types/config.js.map +1 -0
  112. package/dist/utils/env-resolver.d.ts +38 -0
  113. package/dist/utils/env-resolver.d.ts.map +1 -0
  114. package/dist/utils/env-resolver.js +130 -0
  115. package/dist/utils/env-resolver.js.map +1 -0
  116. package/package.json +116 -0
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GitRepositoryAnalyzer = void 0;
37
+ const simple_git_1 = require("simple-git");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ class GitRepositoryAnalyzer {
41
+ git;
42
+ cwd;
43
+ constructor(workingDirectory = process.cwd()) {
44
+ this.cwd = workingDirectory;
45
+ this.git = (0, simple_git_1.simpleGit)(workingDirectory);
46
+ }
47
+ /**
48
+ * Analyze the current git repository state and return data compatible with PRInfo interface
49
+ */
50
+ async analyzeRepository() {
51
+ // Check if we're in a git repository
52
+ const isRepo = await this.isGitRepository();
53
+ if (!isRepo) {
54
+ return this.createEmptyRepositoryInfo('Not a git repository');
55
+ }
56
+ try {
57
+ // Get current branch and status
58
+ const [status, currentBranch] = await Promise.all([
59
+ this.git.status(),
60
+ this.getCurrentBranch(),
61
+ ]);
62
+ // Get uncommitted changes
63
+ const uncommittedFiles = await this.getUncommittedChanges();
64
+ // Get recent commit info
65
+ const recentCommits = await this.git.log({ maxCount: 1 });
66
+ const lastCommit = recentCommits.latest;
67
+ // Create repository info
68
+ const repositoryInfo = {
69
+ title: this.generateTitle(status, currentBranch),
70
+ body: this.generateDescription(status, lastCommit),
71
+ author: lastCommit?.author_name || 'unknown',
72
+ base: await this.getBaseBranch(),
73
+ head: currentBranch,
74
+ files: uncommittedFiles,
75
+ totalAdditions: uncommittedFiles.reduce((sum, file) => sum + file.additions, 0),
76
+ totalDeletions: uncommittedFiles.reduce((sum, file) => sum + file.deletions, 0),
77
+ isGitRepository: true,
78
+ workingDirectory: this.cwd,
79
+ };
80
+ return repositoryInfo;
81
+ }
82
+ catch (error) {
83
+ console.error('Error analyzing git repository:', error);
84
+ return this.createEmptyRepositoryInfo('Error analyzing git repository');
85
+ }
86
+ }
87
+ /**
88
+ * Convert GitRepositoryInfo to PRInfo format for compatibility with existing PRReviewer
89
+ */
90
+ toPRInfo(repositoryInfo) {
91
+ return {
92
+ number: 0, // Local analysis doesn't have PR number
93
+ title: repositoryInfo.title,
94
+ body: repositoryInfo.body,
95
+ author: repositoryInfo.author,
96
+ base: repositoryInfo.base,
97
+ head: repositoryInfo.head,
98
+ files: repositoryInfo.files.map((file) => ({
99
+ filename: file.filename,
100
+ additions: file.additions,
101
+ deletions: file.deletions,
102
+ changes: file.changes,
103
+ patch: file.patch,
104
+ status: file.status,
105
+ })),
106
+ totalAdditions: repositoryInfo.totalAdditions,
107
+ totalDeletions: repositoryInfo.totalDeletions,
108
+ };
109
+ }
110
+ async isGitRepository() {
111
+ try {
112
+ await this.git.checkIsRepo();
113
+ return true;
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ }
119
+ async getCurrentBranch() {
120
+ try {
121
+ const branchSummary = await this.git.branch();
122
+ return branchSummary.current || 'unknown';
123
+ }
124
+ catch {
125
+ return 'unknown';
126
+ }
127
+ }
128
+ async getBaseBranch() {
129
+ try {
130
+ // Try to get the default branch from remote
131
+ const branches = await this.git.branch(['-r']);
132
+ const mainBranches = ['origin/main', 'origin/master', 'origin/develop'];
133
+ for (const mainBranch of mainBranches) {
134
+ if (branches.all.includes(mainBranch)) {
135
+ return mainBranch.replace('origin/', '');
136
+ }
137
+ }
138
+ // Fallback to main/master
139
+ return 'main';
140
+ }
141
+ catch {
142
+ return 'main';
143
+ }
144
+ }
145
+ async getRemoteInfo() {
146
+ try {
147
+ const remotes = await this.git.getRemotes(true);
148
+ const origin = remotes.find(r => r.name === 'origin');
149
+ return origin
150
+ ? { name: origin.name, url: origin.refs.fetch || origin.refs.push || '' }
151
+ : null;
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ }
157
+ async getUncommittedChanges() {
158
+ try {
159
+ const status = await this.git.status();
160
+ const changes = [];
161
+ // Process different types of changes
162
+ const fileChanges = [
163
+ ...status.created.map(f => ({ file: f, status: 'added' })),
164
+ ...status.deleted.map(f => ({ file: f, status: 'removed' })),
165
+ ...status.modified.map(f => ({ file: f, status: 'modified' })),
166
+ ...status.renamed.map(f => ({
167
+ file: typeof f === 'string' ? f : f.to || f.from,
168
+ status: 'renamed',
169
+ })),
170
+ ];
171
+ for (const { file, status } of fileChanges) {
172
+ const filePath = path.join(this.cwd, file);
173
+ const fileChange = await this.analyzeFileChange(file, status, filePath);
174
+ changes.push(fileChange);
175
+ }
176
+ return changes;
177
+ }
178
+ catch (error) {
179
+ console.error('Error getting uncommitted changes:', error);
180
+ return [];
181
+ }
182
+ }
183
+ async analyzeFileChange(filename, status, filePath) {
184
+ let additions = 0;
185
+ let deletions = 0;
186
+ let patch;
187
+ let content;
188
+ try {
189
+ // Get diff for the file if it exists and is not binary
190
+ if (status !== 'added' && fs.existsSync(filePath)) {
191
+ const diff = await this.git.diff(['--', filename]).catch(() => '');
192
+ if (diff) {
193
+ patch = diff;
194
+ // Count additions and deletions from diff
195
+ const lines = diff.split('\n');
196
+ additions = lines.filter(line => line.startsWith('+')).length;
197
+ deletions = lines.filter(line => line.startsWith('-')).length;
198
+ }
199
+ }
200
+ // For added files, count lines as additions
201
+ if (status === 'added' && fs.existsSync(filePath)) {
202
+ try {
203
+ const stats = fs.statSync(filePath);
204
+ if (stats.isFile() && stats.size < 1024 * 1024) {
205
+ // Skip files larger than 1MB
206
+ content = fs.readFileSync(filePath, 'utf8');
207
+ additions = content.split('\n').length;
208
+ patch = content; // For new files, the entire content is the "patch"
209
+ }
210
+ }
211
+ catch {
212
+ // Skip binary or unreadable files
213
+ }
214
+ }
215
+ // For removed files, we can't easily count the lines without the previous version
216
+ if (status === 'removed') {
217
+ deletions = 1; // Placeholder - in real git we'd need the previous version
218
+ }
219
+ }
220
+ catch (error) {
221
+ console.error(`Error analyzing file change for ${filename}:`, error);
222
+ }
223
+ return {
224
+ filename,
225
+ status,
226
+ additions,
227
+ deletions,
228
+ changes: additions + deletions,
229
+ content,
230
+ patch,
231
+ };
232
+ }
233
+ generateTitle(status, branch) {
234
+ if (status.files.length === 0) {
235
+ return `Local Analysis: ${branch} (No changes)`;
236
+ }
237
+ const changeTypes = [];
238
+ if (status.created.length > 0)
239
+ changeTypes.push(`${status.created.length} added`);
240
+ if (status.modified.length > 0)
241
+ changeTypes.push(`${status.modified.length} modified`);
242
+ if (status.deleted.length > 0)
243
+ changeTypes.push(`${status.deleted.length} deleted`);
244
+ if (status.renamed.length > 0)
245
+ changeTypes.push(`${status.renamed.length} renamed`);
246
+ return `Local Analysis: ${branch} (${changeTypes.join(', ')})`;
247
+ }
248
+ generateDescription(status, lastCommit) {
249
+ let description = `Analysis of local git repository working directory.\n\n`;
250
+ if (lastCommit) {
251
+ description += `**Last Commit:** ${lastCommit.message}\n`;
252
+ description += `**Author:** ${lastCommit.author_name} <${lastCommit.author_email}>\n`;
253
+ description += `**Date:** ${lastCommit.date}\n\n`;
254
+ }
255
+ if (status.files.length === 0) {
256
+ description += `**Status:** Working directory is clean - no uncommitted changes found.\n`;
257
+ }
258
+ else {
259
+ description += `**Changes Summary:**\n`;
260
+ description += `- Files to be committed: ${status.staged.length}\n`;
261
+ description += `- Modified files: ${status.modified.length}\n`;
262
+ description += `- Untracked files: ${status.not_added.length}\n`;
263
+ if (status.conflicted.length > 0) {
264
+ description += `- Conflicted files: ${status.conflicted.length}\n`;
265
+ }
266
+ }
267
+ return description;
268
+ }
269
+ createEmptyRepositoryInfo(reason) {
270
+ return {
271
+ title: `Local Analysis: ${reason}`,
272
+ body: `Unable to analyze repository: ${reason}`,
273
+ author: 'system',
274
+ base: 'main',
275
+ head: 'HEAD',
276
+ files: [],
277
+ totalAdditions: 0,
278
+ totalDeletions: 0,
279
+ isGitRepository: false,
280
+ workingDirectory: this.cwd,
281
+ };
282
+ }
283
+ }
284
+ exports.GitRepositoryAnalyzer = GitRepositoryAnalyzer;
285
+ //# sourceMappingURL=git-repository-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-repository-analyzer.js","sourceRoot":"","sources":["../src/git-repository-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * GitHub Check Service for creating and managing check runs based on failure conditions
3
+ */
4
+ import { Octokit } from '@octokit/rest';
5
+ import { FailureConditionResult } from './types/config';
6
+ import { ReviewIssue } from './reviewer';
7
+ export interface CheckRunOptions {
8
+ owner: string;
9
+ repo: string;
10
+ head_sha: string;
11
+ name: string;
12
+ details_url?: string;
13
+ external_id?: string;
14
+ }
15
+ export interface CheckRunAnnotation {
16
+ path: string;
17
+ start_line: number;
18
+ end_line: number;
19
+ annotation_level: 'notice' | 'warning' | 'failure';
20
+ message: string;
21
+ title?: string;
22
+ raw_details?: string;
23
+ }
24
+ export interface CheckRunSummary {
25
+ title: string;
26
+ summary: string;
27
+ text?: string;
28
+ }
29
+ export type CheckRunStatus = 'queued' | 'in_progress' | 'completed';
30
+ export type CheckRunConclusion = 'success' | 'failure' | 'neutral' | 'cancelled' | 'timed_out' | 'action_required';
31
+ /**
32
+ * Service for managing GitHub Check Runs based on Visor failure conditions
33
+ */
34
+ export declare class GitHubCheckService {
35
+ private octokit;
36
+ private maxAnnotations;
37
+ constructor(octokit: Octokit);
38
+ /**
39
+ * Create a new check run in queued status
40
+ */
41
+ createCheckRun(options: CheckRunOptions, summary?: CheckRunSummary): Promise<{
42
+ id: number;
43
+ url: string;
44
+ }>;
45
+ /**
46
+ * Update check run to in_progress status
47
+ */
48
+ updateCheckRunInProgress(owner: string, repo: string, check_run_id: number, summary?: CheckRunSummary): Promise<void>;
49
+ /**
50
+ * Complete a check run with results based on failure conditions
51
+ */
52
+ completeCheckRun(owner: string, repo: string, check_run_id: number, checkName: string, failureResults: FailureConditionResult[], reviewIssues?: ReviewIssue[], executionError?: string): Promise<void>;
53
+ /**
54
+ * Determine check run conclusion based on failure conditions and issues
55
+ */
56
+ private determineCheckRunConclusion;
57
+ /**
58
+ * Format detailed check results for the check run summary
59
+ */
60
+ private formatCheckDetails;
61
+ /**
62
+ * Convert review issues to GitHub check run annotations
63
+ */
64
+ private convertIssuesToAnnotations;
65
+ /**
66
+ * Map Visor issue severity to GitHub annotation level
67
+ */
68
+ private mapSeverityToAnnotationLevel;
69
+ /**
70
+ * Group issues by category
71
+ */
72
+ private groupIssuesByCategory;
73
+ /**
74
+ * Get emoji for issue category
75
+ */
76
+ private getCategoryEmoji;
77
+ /**
78
+ * Get icon for issue severity
79
+ */
80
+ private getSeverityIcon;
81
+ /**
82
+ * Create multiple check runs for different checks with failure condition support
83
+ */
84
+ createMultipleCheckRuns(options: CheckRunOptions, checkResults: Array<{
85
+ checkName: string;
86
+ failureResults: FailureConditionResult[];
87
+ reviewIssues: ReviewIssue[];
88
+ executionError?: string;
89
+ }>): Promise<Array<{
90
+ checkName: string;
91
+ id: number;
92
+ url: string;
93
+ }>>;
94
+ /**
95
+ * Get check runs for a specific commit
96
+ */
97
+ getCheckRuns(owner: string, repo: string, ref: string): Promise<Array<{
98
+ id: number;
99
+ name: string;
100
+ status: string;
101
+ conclusion: string | null;
102
+ }>>;
103
+ }
104
+ //# sourceMappingURL=github-check-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-check-service.d.ts","sourceRoot":"","sources":["../src/github-check-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,iBAAiB,CAAC;AAEtB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAM;gBAEhB,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BvC;;OAEG;IACG,wBAAwB,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,sBAAsB,EAAE,EACxC,YAAY,GAAE,WAAW,EAAO,EAChC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAgChB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAmGnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8F1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAapC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACG,uBAAuB,CAC3B,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,KAAK,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,sBAAsB,EAAE,CAAC;QACzC,YAAY,EAAE,WAAW,EAAE,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC,GACD,OAAO,CAAC,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA2CjE;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CAuB3F"}