opencontext-mcp 1.2.0 → 1.3.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 (73) hide show
  1. package/README.md +38 -12
  2. package/dist/cli/index.d.ts +25 -0
  3. package/dist/cli/index.js +97 -0
  4. package/dist/cli/index.js.map +1 -0
  5. package/dist/{config.d.ts → config/index.d.ts} +1 -1
  6. package/dist/config/index.js +62 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/index.js +53 -7
  9. package/dist/index.js.map +1 -1
  10. package/dist/init/constants.d.ts +6 -0
  11. package/dist/init/constants.js +17 -0
  12. package/dist/init/constants.js.map +1 -0
  13. package/dist/init/display.d.ts +9 -0
  14. package/dist/init/display.js +28 -0
  15. package/dist/init/display.js.map +1 -0
  16. package/dist/init/files.d.ts +12 -0
  17. package/dist/init/files.js +39 -0
  18. package/dist/init/files.js.map +1 -0
  19. package/dist/init/index.d.ts +6 -0
  20. package/dist/init/index.js +157 -0
  21. package/dist/init/index.js.map +1 -0
  22. package/dist/init/inspect.d.ts +21 -0
  23. package/dist/init/inspect.js +57 -0
  24. package/dist/init/inspect.js.map +1 -0
  25. package/dist/init/integrations/claude.d.ts +17 -0
  26. package/dist/init/integrations/claude.js +94 -0
  27. package/dist/init/integrations/claude.js.map +1 -0
  28. package/dist/init/integrations/opencode.d.ts +20 -0
  29. package/dist/init/integrations/opencode.js +108 -0
  30. package/dist/init/integrations/opencode.js.map +1 -0
  31. package/dist/init/integrations/workflow-files.d.ts +23 -0
  32. package/dist/init/integrations/workflow-files.js +102 -0
  33. package/dist/init/integrations/workflow-files.js.map +1 -0
  34. package/dist/init/prompts.d.ts +9 -0
  35. package/dist/init/prompts.js +17 -0
  36. package/dist/init/prompts.js.map +1 -0
  37. package/dist/server/http.d.ts +21 -0
  38. package/dist/server/http.js +63 -0
  39. package/dist/server/http.js.map +1 -0
  40. package/dist/{server.d.ts → server/index.d.ts} +3 -1
  41. package/dist/{server.js → server/index.js} +7 -4
  42. package/dist/server/index.js.map +1 -0
  43. package/dist/shared/constants.d.ts +27 -0
  44. package/dist/shared/constants.js +26 -0
  45. package/dist/shared/constants.js.map +1 -0
  46. package/dist/shared/errors.d.ts +17 -0
  47. package/dist/shared/errors.js +28 -0
  48. package/dist/shared/errors.js.map +1 -0
  49. package/dist/shared/types.d.ts +29 -0
  50. package/dist/shared/types.js +17 -0
  51. package/dist/shared/types.js.map +1 -0
  52. package/dist/{context-store.d.ts → store/context-store.d.ts} +2 -16
  53. package/dist/store/context-store.js +147 -0
  54. package/dist/store/context-store.js.map +1 -0
  55. package/dist/store/index-builder.d.ts +32 -0
  56. package/dist/store/index-builder.js +162 -0
  57. package/dist/store/index-builder.js.map +1 -0
  58. package/dist/validation/index.d.ts +16 -0
  59. package/dist/validation/index.js +39 -0
  60. package/dist/validation/index.js.map +1 -0
  61. package/dist/{validation.d.ts → validation/write-guard.d.ts} +0 -16
  62. package/dist/{validation.js → validation/write-guard.js} +2 -38
  63. package/dist/validation/write-guard.js.map +1 -0
  64. package/package.json +2 -2
  65. package/dist/config.js +0 -145
  66. package/dist/config.js.map +0 -1
  67. package/dist/context-store.js +0 -295
  68. package/dist/context-store.js.map +0 -1
  69. package/dist/server.js.map +0 -1
  70. package/dist/types.d.ts +0 -56
  71. package/dist/types.js +0 -63
  72. package/dist/types.js.map +0 -1
  73. package/dist/validation.js.map +0 -1
@@ -1,295 +0,0 @@
1
- import { mkdir, readdir, readFile, writeFile, stat, lstat, unlink } from "node:fs/promises";
2
- import * as path from "node:path";
3
- import { INDEX_FILENAME, UserInputError, isNodeError, STATUS_BADGES } from "./types.js";
4
- import { validateTopic, validateWritePayload, sanitizeTopicPath } from "./validation.js";
5
- import { DEFAULT_CONFIG } from "./config.js";
6
- /**
7
- * Manages context file storage operations.
8
- * Handles reading, writing, and listing context files in the configured directory.
9
- */
10
- export class ContextStore {
11
- basePath;
12
- config;
13
- contextDir;
14
- constructor(basePath = process.cwd(), config = DEFAULT_CONFIG) {
15
- this.basePath = basePath;
16
- this.config = config;
17
- this.contextDir = path.join(this.basePath, this.config.path);
18
- }
19
- /** Returns the absolute path to the context directory. */
20
- getContextDirectory() {
21
- return this.contextDir;
22
- }
23
- /** Returns the absolute path to a topic file. */
24
- getTopicFilePath(topic) {
25
- return path.join(this.contextDir, `${topic}.md`);
26
- }
27
- /**
28
- * Saves context content to a topic file.
29
- * Validates payload using WriteGuard before writing.
30
- * @param topicInput - Topic name (will be validated and trimmed)
31
- * @param content - Markdown content to save
32
- * @returns Success message with file location
33
- * @throws UserInputError if validation fails
34
- */
35
- async saveContext(topicInput, content) {
36
- const guardResult = validateWritePayload(topicInput, content, {
37
- maxFileSizeKb: this.config.guard.maxFileSizeKb,
38
- strictPatternCheck: this.config.guard.strictPatternCheck,
39
- });
40
- if (!guardResult.allowed) {
41
- console.error(`WriteGuard Rejected: ${guardResult.reason} (Code: ${guardResult.code})`);
42
- throw new UserInputError(`WriteGuard Rejected: ${guardResult.reason} (Code: ${guardResult.code})`);
43
- }
44
- const topic = validateTopic(topicInput);
45
- const filePath = sanitizeTopicPath(this.contextDir, topic);
46
- // Reject writes to existing symlinks — prevents symlink traversal attacks
47
- try {
48
- const fileStat = await lstat(filePath);
49
- if (fileStat.isSymbolicLink()) {
50
- throw new UserInputError(`Refusing to overwrite symlink at ${this.config.path}/${topic}.md. Delete the symlink first.`);
51
- }
52
- }
53
- catch (error) {
54
- if (isNodeError(error) && error.code === "ENOENT") {
55
- // File does not exist yet — normal case, continue
56
- }
57
- else {
58
- throw error;
59
- }
60
- }
61
- await mkdir(this.contextDir, { recursive: true });
62
- await writeFile(filePath, content, "utf8");
63
- return `Saved context topic "${topic}" to ${this.config.path}/${topic}.md.`;
64
- }
65
- /**
66
- * Reads context content from a topic file, or lists all topics if none specified.
67
- * @param topicInput - Optional topic name to read
68
- * @returns Topic content or list of available topics
69
- * @throws UserInputError if topic doesn't exist or is invalid
70
- */
71
- async readContext(topicInput) {
72
- if (topicInput !== undefined) {
73
- const topic = validateTopic(topicInput);
74
- try {
75
- const filePath = sanitizeTopicPath(this.contextDir, topic);
76
- return await readFile(filePath, "utf8");
77
- }
78
- catch (error) {
79
- if (isNodeError(error) && error.code === "ENOENT") {
80
- throw new UserInputError(`No context found for topic "${topic}" at ${this.config.path}/${topic}.md.`);
81
- }
82
- throw error;
83
- }
84
- }
85
- const topics = await this.listTopics();
86
- if (topics.length === 0) {
87
- return `No OpenContext topics found in ${this.config.path}/. Use save_context to create one.`;
88
- }
89
- if (!this.config.autoIndex) {
90
- return topics.map((t) => `- ${t}`).join("\n");
91
- }
92
- return this.rebuildContextIndex();
93
- }
94
- /**
95
- * Deletes a context topic file from the context directory.
96
- * @param topicInput - Topic name to delete
97
- * @returns Success message with confirmation
98
- * @throws UserInputError if topic doesn't exist or is invalid
99
- */
100
- async deleteContext(topicInput) {
101
- const topic = validateTopic(topicInput);
102
- const filePath = sanitizeTopicPath(this.contextDir, topic);
103
- try {
104
- await unlink(filePath);
105
- }
106
- catch (error) {
107
- if (isNodeError(error) && error.code === "ENOENT") {
108
- throw new UserInputError(`No context found for topic "${topic}" at ${this.config.path}/${topic}.md.`);
109
- }
110
- throw error;
111
- }
112
- if (this.config.autoIndex) {
113
- await this.rebuildContextIndex();
114
- }
115
- return `Deleted context topic "${topic}" from ${this.config.path}/${topic}.md.`;
116
- }
117
- /**
118
- * Lists all available context topics.
119
- * Scans the context directory for .md files and returns sorted topic names.
120
- * @returns Sorted array of topic names
121
- */
122
- async listTopics() {
123
- try {
124
- const entries = await readdir(this.contextDir, { withFileTypes: true });
125
- return entries
126
- .filter((entry) => entry.isFile() && entry.name.endsWith(".md"))
127
- .map((entry) => entry.name.slice(0, -".md".length))
128
- .sort((a, b) => a.localeCompare(b));
129
- }
130
- catch (error) {
131
- if (isNodeError(error) && error.code === "ENOENT") {
132
- return [];
133
- }
134
- throw error;
135
- }
136
- }
137
- /**
138
- * Parses YAML frontmatter from markdown content.
139
- * Returns extracted fields or empty object if no frontmatter found.
140
- * Uses simple line-by-line parsing — no external YAML dependency.
141
- */
142
- parseFrontmatter(content) {
143
- const trimmed = content.trim();
144
- if (!trimmed.startsWith("---")) {
145
- return {};
146
- }
147
- const endIdx = trimmed.indexOf("---", 3);
148
- if (endIdx === -1) {
149
- return {};
150
- }
151
- const block = trimmed.slice(3, endIdx);
152
- const result = {};
153
- for (const line of block.split("\n")) {
154
- const trimmedLine = line.trim();
155
- if (!trimmedLine || trimmedLine.startsWith("#"))
156
- continue;
157
- const colonIdx = trimmedLine.indexOf(":");
158
- if (colonIdx === -1)
159
- continue;
160
- const key = trimmedLine.slice(0, colonIdx).trim();
161
- let value = trimmedLine.slice(colonIdx + 1).trim();
162
- // Strip surrounding quotes
163
- if ((value.startsWith('"') && value.endsWith('"')) ||
164
- (value.startsWith("'") && value.endsWith("'"))) {
165
- value = value.slice(1, -1);
166
- }
167
- if (key === "description") {
168
- result.description = value;
169
- }
170
- else if (key === "status" &&
171
- (value === "active" || value === "deprecated" || value === "superseded")) {
172
- result.status = value;
173
- }
174
- else if (key === "supersedes") {
175
- result.supersedes = value;
176
- }
177
- else if (key === "superseded_by") {
178
- result.superseded_by = value;
179
- }
180
- }
181
- return result;
182
- }
183
- /**
184
- * Extracts a short description from markdown content.
185
- * Strategy: frontmatter description → first heading → first paragraph → fallback.
186
- * @param content - Raw markdown content
187
- * @returns Truncated description (max 120 chars)
188
- */
189
- extractDescription(content) {
190
- const trimmed = content.trim();
191
- if (!trimmed) {
192
- return "No summary available.";
193
- }
194
- // Use structured frontmatter parser
195
- const fm = this.parseFrontmatter(content);
196
- if (fm.description) {
197
- return fm.description.slice(0, 120);
198
- }
199
- const lines = trimmed.split("\n");
200
- // Strategy B: First heading
201
- for (const line of lines) {
202
- const headingMatch = line.match(/^#\s+(.+)$/);
203
- if (headingMatch?.[1]) {
204
- return headingMatch[1].slice(0, 120);
205
- }
206
- }
207
- // Strategy C: First non-empty paragraph line
208
- for (const line of lines) {
209
- const stripped = line.trim();
210
- if (stripped && !stripped.startsWith("#")) {
211
- return stripped.length > 120 ? stripped.slice(0, 120) + "..." : stripped;
212
- }
213
- }
214
- return "No summary available.";
215
- }
216
- /**
217
- * Rebuilds the auto-generated index.md file in the context directory.
218
- * Scans all topic files, extracts metadata, and writes a compact index.
219
- * @returns The generated index markdown content
220
- */
221
- async rebuildContextIndex() {
222
- let entries;
223
- try {
224
- entries = await readdir(this.contextDir, { withFileTypes: true });
225
- }
226
- catch (error) {
227
- if (isNodeError(error) && error.code === "ENOENT") {
228
- return "";
229
- }
230
- throw error;
231
- }
232
- const topicFiles = entries
233
- .filter((entry) => entry.isFile() &&
234
- entry.name.endsWith(".md") &&
235
- entry.name !== INDEX_FILENAME &&
236
- entry.name !== "README.md")
237
- .sort((a, b) => a.name.localeCompare(b.name));
238
- if (topicFiles.length === 0) {
239
- return "";
240
- }
241
- const topicEntries = [];
242
- for (const entry of topicFiles) {
243
- const filePath = path.join(this.contextDir, entry.name);
244
- const content = await readFile(filePath, "utf8");
245
- const fileStat = await stat(filePath);
246
- const topic = entry.name.slice(0, -".md".length);
247
- const description = this.extractDescription(content);
248
- const date = fileStat.mtime.toISOString().slice(0, 10);
249
- const sizeBytes = Buffer.byteLength(content, "utf8");
250
- const fm = this.parseFrontmatter(content);
251
- topicEntries.push({
252
- topic,
253
- filename: entry.name,
254
- description,
255
- date,
256
- sizeBytes,
257
- status: fm.status,
258
- supersedes: fm.supersedes,
259
- superseded_by: fm.superseded_by,
260
- });
261
- }
262
- const lines = [
263
- "# Project Context Index",
264
- "<!-- AUTO-GENERATED BY OPENCONTEXT - DO NOT EDIT MANUALLY -->",
265
- "",
266
- "Available context topics in this project:",
267
- "",
268
- ];
269
- for (const t of topicEntries) {
270
- const sizeStr = t.sizeBytes >= 1024
271
- ? `${(t.sizeBytes / 1024).toFixed(1)} KB`
272
- : `${t.sizeBytes} B`;
273
- const badge = t.status && t.status !== "active"
274
- ? ` ${STATUS_BADGES.get(t.status) ?? `[${t.status.toUpperCase()}]`}`
275
- : "";
276
- const supersedesNote = t.supersedes
277
- ? ` (supersedes: \`${t.supersedes}\`)`
278
- : "";
279
- const supersededByNote = t.superseded_by
280
- ? ` (superseded by: \`${t.superseded_by}\`)`
281
- : "";
282
- lines.push(`- **${t.topic}**${badge} (\`${t.filename}\`) - Updated: ${t.date} (${sizeStr})${supersedesNote}${supersededByNote}`);
283
- lines.push(` > ${t.description}`);
284
- }
285
- lines.push("");
286
- lines.push("---");
287
- lines.push("*To read a specific context topic, call `read_context` with the topic name.*");
288
- lines.push("");
289
- const indexContent = lines.join("\n");
290
- const indexPath = path.join(this.contextDir, INDEX_FILENAME);
291
- await writeFile(indexPath, indexContent, "utf8");
292
- return indexContent;
293
- }
294
- }
295
- //# sourceMappingURL=context-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-store.js","sourceRoot":"","sources":["../src/context-store.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,56 +0,0 @@
1
- /** MCP server identifier used in protocol handshakes. */
2
- export declare const SERVER_NAME = "opencontext-mcp";
3
- /** Current server version for compatibility checks. */
4
- export declare const SERVER_VERSION = "1.2.0";
5
- /** Filename for the auto-generated context index. */
6
- export declare const INDEX_FILENAME = "index.md";
7
- /** Topic names reserved by the system — cannot be written by external agents. */
8
- export declare const RESERVED_TOPICS: ReadonlySet<string>;
9
- /** Allowed values for the topic status field in YAML frontmatter. */
10
- export type TopicStatus = "active" | "deprecated" | "superseded";
11
- /** Parsed YAML frontmatter from a topic file. All fields optional. */
12
- export interface TopicFrontmatter {
13
- description?: string;
14
- status?: TopicStatus;
15
- /** The topic this one replaces (used by the newer topic). */
16
- supersedes?: string;
17
- /** The topic that replaced this one (used by the older topic). */
18
- superseded_by?: string;
19
- }
20
- /** Badge prefix used in index.md for non-active topics. */
21
- export declare const STATUS_BADGES: ReadonlyMap<TopicStatus, string>;
22
- /**
23
- * Regex pattern for validating topic names.
24
- * Allows lowercase alphanumeric with single hyphens or underscores as separators.
25
- * Examples: "api_contracts", "auth-rules", "migration-v2"
26
- */
27
- export declare const TOPIC_PATTERN: RegExp;
28
- /**
29
- * Custom error class for user input validation errors.
30
- * Thrown when topic names, content, or other user inputs fail validation.
31
- */
32
- export declare class UserInputError extends Error {
33
- constructor(message: string);
34
- }
35
- /**
36
- * Creates a standardized MCP tool response object.
37
- * @param text - Response message
38
- * @param isError - Whether this is an error response (default: false)
39
- */
40
- export declare function textResult(text: string, isError?: boolean): {
41
- isError?: boolean;
42
- content: {
43
- type: "text";
44
- text: string;
45
- }[];
46
- };
47
- /**
48
- * Safely extracts error message from unknown error types.
49
- * Handles Error objects, strings, and unknown values.
50
- */
51
- export declare function getErrorMessage(error: unknown): string;
52
- /**
53
- * Type guard to check if an error is a Node.js filesystem error.
54
- * Useful for handling ENOENT, EACCES, etc. from fs operations.
55
- */
56
- export declare function isNodeError(error: unknown): error is NodeJS.ErrnoException;
package/dist/types.js DELETED
@@ -1,63 +0,0 @@
1
- /** MCP server identifier used in protocol handshakes. */
2
- export const SERVER_NAME = "opencontext-mcp";
3
- /** Current server version for compatibility checks. */
4
- export const SERVER_VERSION = "1.2.0";
5
- /** Filename for the auto-generated context index. */
6
- export const INDEX_FILENAME = "index.md";
7
- /** Topic names reserved by the system — cannot be written by external agents. */
8
- export const RESERVED_TOPICS = new Set(["index"]);
9
- /** Badge prefix used in index.md for non-active topics. */
10
- export const STATUS_BADGES = new Map([
11
- ["deprecated", "[DEPRECATED]"],
12
- ["superseded", "[SUPERSEDED]"],
13
- ]);
14
- /**
15
- * Regex pattern for validating topic names.
16
- * Allows lowercase alphanumeric with single hyphens or underscores as separators.
17
- * Examples: "api_contracts", "auth-rules", "migration-v2"
18
- */
19
- export const TOPIC_PATTERN = /^[a-z0-9]+(?:[_-][a-z0-9]+)*$/;
20
- /**
21
- * Custom error class for user input validation errors.
22
- * Thrown when topic names, content, or other user inputs fail validation.
23
- */
24
- export class UserInputError extends Error {
25
- constructor(message) {
26
- super(message);
27
- this.name = "UserInputError";
28
- }
29
- }
30
- /**
31
- * Creates a standardized MCP tool response object.
32
- * @param text - Response message
33
- * @param isError - Whether this is an error response (default: false)
34
- */
35
- export function textResult(text, isError = false) {
36
- return {
37
- content: [
38
- {
39
- type: "text",
40
- text,
41
- },
42
- ],
43
- ...(isError ? { isError: true } : {}),
44
- };
45
- }
46
- /**
47
- * Safely extracts error message from unknown error types.
48
- * Handles Error objects, strings, and unknown values.
49
- */
50
- export function getErrorMessage(error) {
51
- if (error instanceof Error) {
52
- return error.message;
53
- }
54
- return "An unknown error occurred.";
55
- }
56
- /**
57
- * Type guard to check if an error is a Node.js filesystem error.
58
- * Useful for handling ENOENT, EACCES, etc. from fs operations.
59
- */
60
- export function isNodeError(error) {
61
- return error instanceof Error && "code" in error;
62
- }
63
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,uDAAuD;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;AAEzC,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAevE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAqC,IAAI,GAAG,CAAC;IACrE,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,YAAY,EAAE,cAAc,CAAC;CAC/B,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAE7D;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IACtD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI;aACL;SACF;QACD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA0B5E;;;GAGG;AACH,MAAM,kBAAkB,GAAa;IACnC,oDAAoD;IACpD,wBAAwB;IACxB,gDAAgD;CACjD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,cAAc,CACtB,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,KAAa;IACjE,qDAAqD;IACrD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,cAAc,CAAC,+EAA+E,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpD,oEAAoE;IACpE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,kBAAkB,EAAE,CAAC;QACnG,MAAM,IAAI,cAAc,CAAC,yEAAyE,CAAC,CAAC;IACtG,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,OAAe,EACf,OAAsB;IAEtB,MAAM,IAAI,GAA2B;QACnC,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,EAAE;QAC3C,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,KAAK;QACxC,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,IAAI,IAAI;KACxD,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,mGAAmG;YAC3G,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI,YAAY,8DAA8D;YACtF,IAAI,EAAE,gBAAgB;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,4DAA4D;YACpE,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,iBAAiB,YAAY,yCAAyC,QAAQ,UAAU;YAChG,IAAI,EAAE,mBAAmB;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,uCAAuC,OAAO,CAAC,MAAM,EAAE;oBAC/D,IAAI,EAAE,mBAAmB;iBAC1B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}