@birchcraft/mcp-weapp-cli 1.0.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 (62) hide show
  1. package/README.md +207 -0
  2. package/dist/cli-client.d.ts +132 -0
  3. package/dist/cli-client.d.ts.map +1 -0
  4. package/dist/cli-client.js +363 -0
  5. package/dist/cli-client.js.map +1 -0
  6. package/dist/client.d.ts +9 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +129 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/config.d.ts +52 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +171 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +43 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server.d.ts +41 -0
  19. package/dist/server.d.ts.map +1 -0
  20. package/dist/server.js +292 -0
  21. package/dist/server.js.map +1 -0
  22. package/dist/tools/auth.d.ts +6 -0
  23. package/dist/tools/auth.d.ts.map +1 -0
  24. package/dist/tools/auth.js +128 -0
  25. package/dist/tools/auth.js.map +1 -0
  26. package/dist/tools/automation.d.ts +35 -0
  27. package/dist/tools/automation.d.ts.map +1 -0
  28. package/dist/tools/automation.js +245 -0
  29. package/dist/tools/automation.js.map +1 -0
  30. package/dist/tools/build.d.ts +14 -0
  31. package/dist/tools/build.d.ts.map +1 -0
  32. package/dist/tools/build.js +210 -0
  33. package/dist/tools/build.js.map +1 -0
  34. package/dist/tools/cloud.d.ts +72 -0
  35. package/dist/tools/cloud.d.ts.map +1 -0
  36. package/dist/tools/cloud.js +479 -0
  37. package/dist/tools/cloud.js.map +1 -0
  38. package/dist/tools/index.d.ts +23 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +35 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/preview.d.ts +41 -0
  43. package/dist/tools/preview.d.ts.map +1 -0
  44. package/dist/tools/preview.js +311 -0
  45. package/dist/tools/preview.js.map +1 -0
  46. package/dist/tools/project.d.ts +50 -0
  47. package/dist/tools/project.d.ts.map +1 -0
  48. package/dist/tools/project.js +308 -0
  49. package/dist/tools/project.js.map +1 -0
  50. package/dist/types.d.ts +133 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +29 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/utils/helpers.d.ts +45 -0
  55. package/dist/utils/helpers.d.ts.map +1 -0
  56. package/dist/utils/helpers.js +116 -0
  57. package/dist/utils/helpers.js.map +1 -0
  58. package/dist/utils/logger.d.ts +22 -0
  59. package/dist/utils/logger.d.ts.map +1 -0
  60. package/dist/utils/logger.js +50 -0
  61. package/dist/utils/logger.js.map +1 -0
  62. package/package.json +54 -0
@@ -0,0 +1,245 @@
1
+ /**
2
+ * 自动化测试工具模块
3
+ * 提供开启自动化功能和自动化测试回放功能
4
+ */
5
+ import { cliClient } from '../cli-client.js';
6
+ import { isValidProjectPath, formatError } from '../utils/helpers.js';
7
+ /**
8
+ * 执行开启自动化工具
9
+ */
10
+ async function executeAuto(args) {
11
+ // 验证项目路径
12
+ if (!isValidProjectPath(args.project)) {
13
+ return {
14
+ content: [
15
+ {
16
+ type: 'text',
17
+ text: `错误: 无效的项目路径: ${args.project}\n请确保路径存在且包含 project.config.json 文件。`,
18
+ },
19
+ ],
20
+ isError: true,
21
+ };
22
+ }
23
+ // 验证 autoPort 参数
24
+ if (args.autoPort !== undefined) {
25
+ if (!Number.isInteger(args.autoPort) || args.autoPort <= 0 || args.autoPort > 65535) {
26
+ return {
27
+ content: [
28
+ {
29
+ type: 'text',
30
+ text: `错误: autoPort 必须是 1-65535 之间的整数`,
31
+ },
32
+ ],
33
+ isError: true,
34
+ };
35
+ }
36
+ }
37
+ try {
38
+ const result = await cliClient.auto(args.project, {
39
+ autoPort: args.autoPort,
40
+ autoAccount: args.autoAccount,
41
+ trustProject: args.trustProject,
42
+ ticket: args.ticket,
43
+ });
44
+ if (result.success) {
45
+ const outputLines = ['✅ 自动化功能开启成功!'];
46
+ outputLines.push('', '📋 配置信息:');
47
+ outputLines.push(` 项目路径: ${args.project}`);
48
+ if (args.autoPort) {
49
+ outputLines.push(` 自动化端口: ${args.autoPort}`);
50
+ }
51
+ if (args.autoAccount) {
52
+ outputLines.push(` 自动化账号: ${args.autoAccount}`);
53
+ }
54
+ if (args.trustProject) {
55
+ outputLines.push(` 信任项目: 是`);
56
+ }
57
+ if (result.stdout) {
58
+ outputLines.push('', '📝 输出信息:', result.stdout);
59
+ }
60
+ outputLines.push('', '提示: 自动化功能已开启,可以通过自动化脚本控制微信开发者工具。');
61
+ return {
62
+ content: [
63
+ {
64
+ type: 'text',
65
+ text: outputLines.join('\n'),
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ else {
71
+ return {
72
+ content: [
73
+ {
74
+ type: 'text',
75
+ text: `❌ 开启自动化功能失败 (退出码: ${result.code})\n\n${result.stderr || result.stdout || '未知错误'}`,
76
+ },
77
+ ],
78
+ isError: true,
79
+ };
80
+ }
81
+ }
82
+ catch (error) {
83
+ return {
84
+ content: [
85
+ {
86
+ type: 'text',
87
+ text: `❌ 执行开启自动化命令时出错: ${formatError(error)}`,
88
+ },
89
+ ],
90
+ isError: true,
91
+ };
92
+ }
93
+ }
94
+ /**
95
+ * 执行自动化测试回放工具
96
+ */
97
+ async function executeAutoReplay(args) {
98
+ // 验证项目路径
99
+ if (!isValidProjectPath(args.project)) {
100
+ return {
101
+ content: [
102
+ {
103
+ type: 'text',
104
+ text: `错误: 无效的项目路径: ${args.project}\n请确保路径存在且包含 project.config.json 文件。`,
105
+ },
106
+ ],
107
+ isError: true,
108
+ };
109
+ }
110
+ try {
111
+ const result = await cliClient.autoReplay(args.project, {
112
+ replayAll: args.replayAll,
113
+ replayConfigPath: args.replayConfigPath,
114
+ trustProject: args.trustProject,
115
+ ticket: args.ticket,
116
+ });
117
+ if (result.success) {
118
+ const outputLines = ['✅ 自动化测试回放执行成功!'];
119
+ outputLines.push('', '📋 配置信息:');
120
+ outputLines.push(` 项目路径: ${args.project}`);
121
+ if (args.replayAll) {
122
+ outputLines.push(` 回放模式: 全部回放`);
123
+ }
124
+ if (args.replayConfigPath) {
125
+ outputLines.push(` 回放配置文件: ${args.replayConfigPath}`);
126
+ }
127
+ if (args.trustProject) {
128
+ outputLines.push(` 信任项目: 是`);
129
+ }
130
+ if (result.stdout) {
131
+ outputLines.push('', '📝 输出信息:', result.stdout);
132
+ }
133
+ outputLines.push('', '提示: 自动化测试回放已完成。');
134
+ return {
135
+ content: [
136
+ {
137
+ type: 'text',
138
+ text: outputLines.join('\n'),
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ else {
144
+ return {
145
+ content: [
146
+ {
147
+ type: 'text',
148
+ text: `❌ 自动化测试回放失败 (退出码: ${result.code})\n\n${result.stderr || result.stdout || '未知错误'}`,
149
+ },
150
+ ],
151
+ isError: true,
152
+ };
153
+ }
154
+ }
155
+ catch (error) {
156
+ return {
157
+ content: [
158
+ {
159
+ type: 'text',
160
+ text: `❌ 执行自动化测试回放命令时出错: ${formatError(error)}`,
161
+ },
162
+ ],
163
+ isError: true,
164
+ };
165
+ }
166
+ }
167
+ /**
168
+ * 自动化工具定义数组
169
+ */
170
+ export const automationTools = [
171
+ {
172
+ name: 'weapp_auto',
173
+ description: '开启微信开发者工具的自动化功能,允许通过自动化脚本控制开发者工具',
174
+ inputSchema: {
175
+ type: 'object',
176
+ properties: {
177
+ project: {
178
+ type: 'string',
179
+ description: '小程序项目路径,必须是包含 project.config.json 的目录',
180
+ },
181
+ autoPort: {
182
+ type: 'number',
183
+ description: '自动化服务监听的端口号,范围为 1-65535',
184
+ },
185
+ autoAccount: {
186
+ type: 'string',
187
+ description: '自动化账号,用于标识自动化会话',
188
+ },
189
+ trustProject: {
190
+ type: 'boolean',
191
+ description: '是否信任项目,启用后可跳过某些安全提示',
192
+ default: false,
193
+ },
194
+ ticket: {
195
+ type: 'string',
196
+ description: '登录票据,用于验证身份',
197
+ },
198
+ },
199
+ required: ['project'],
200
+ },
201
+ handler: executeAuto,
202
+ },
203
+ {
204
+ name: 'weapp_auto_replay',
205
+ description: '执行自动化测试回放,根据录制好的测试用例自动运行测试',
206
+ inputSchema: {
207
+ type: 'object',
208
+ properties: {
209
+ project: {
210
+ type: 'string',
211
+ description: '小程序项目路径,必须是包含 project.config.json 的目录',
212
+ },
213
+ replayAll: {
214
+ type: 'boolean',
215
+ description: '是否回放所有测试用例,为 true 时回放全部,为 false 时根据配置文件回放',
216
+ default: false,
217
+ },
218
+ replayConfigPath: {
219
+ type: 'string',
220
+ description: '回放配置文件的路径,指定要回放的测试用例配置',
221
+ },
222
+ trustProject: {
223
+ type: 'boolean',
224
+ description: '是否信任项目,启用后可跳过某些安全提示',
225
+ default: false,
226
+ },
227
+ ticket: {
228
+ type: 'string',
229
+ description: '登录票据,用于验证身份',
230
+ },
231
+ },
232
+ required: ['project'],
233
+ },
234
+ handler: executeAutoReplay,
235
+ },
236
+ ];
237
+ /**
238
+ * 工具执行映射表(向后兼容)
239
+ * @deprecated 直接使用工具的 handler 方法
240
+ */
241
+ export const automationToolExecutors = {
242
+ weapp_auto: executeAuto,
243
+ weapp_auto_replay: executeAutoReplay,
244
+ };
245
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/tools/automation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ToolDefinition, ToolResult } from '../types.js';
2
+ /**
3
+ * 构建工具定义数组
4
+ */
5
+ export declare const buildTools: ToolDefinition[];
6
+ /**
7
+ * 执行构建工具(向后兼容)
8
+ * @param name 工具名称
9
+ * @param args 工具参数
10
+ * @returns 工具执行结果
11
+ * @deprecated 直接使用工具的 handler 方法
12
+ */
13
+ export declare function executeBuildTool(name: string, args: Record<string, any>): Promise<ToolResult>;
14
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AAqJjF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAAc,EAyCtC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * 构建相关工具
3
+ * 提供 npm 构建和缓存清除功能
4
+ */
5
+ import { cliClient } from '../cli-client.js';
6
+ import { formatError } from '../utils/helpers.js';
7
+ /**
8
+ * 执行构建 npm 工具
9
+ */
10
+ async function executeBuildNpm(args) {
11
+ try {
12
+ // 兼容 project 和 projectPath 两个参数名
13
+ const projectPath = args.project || args.projectPath;
14
+ if (!projectPath || typeof projectPath !== 'string') {
15
+ return {
16
+ content: [
17
+ {
18
+ type: 'text',
19
+ text: '错误: project 或 projectPath 是必需参数,必须提供小程序项目的绝对路径',
20
+ },
21
+ ],
22
+ isError: true,
23
+ };
24
+ }
25
+ // 验证 compileType
26
+ if (args.compileType && !['miniprogram', 'plugin'].includes(args.compileType)) {
27
+ return {
28
+ content: [
29
+ {
30
+ type: 'text',
31
+ text: `错误: compileType 必须是 'miniprogram' 或 'plugin'`,
32
+ },
33
+ ],
34
+ isError: true,
35
+ };
36
+ }
37
+ const result = await cliClient.buildNpm(projectPath, args.compileType);
38
+ if (result.success) {
39
+ const typeInfo = args.compileType ? ` (${args.compileType})` : '';
40
+ // 合并 stdout 和 stderr
41
+ const output = [result.stdout, result.stderr].filter(Boolean).join('\n');
42
+ return {
43
+ content: [
44
+ {
45
+ type: 'text',
46
+ text: `✓ npm 构建成功${typeInfo}\n\n项目路径: ${projectPath}${output ? `\n\n输出信息:\n${output}` : ''}`,
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ else {
52
+ // 合并 stdout 和 stderr
53
+ const output = [result.stdout, result.stderr].filter(Boolean).join('\n');
54
+ return {
55
+ content: [
56
+ {
57
+ type: 'text',
58
+ text: `✗ npm 构建失败 (退出码: ${result.code})\n\n${output || '未知错误'}`,
59
+ },
60
+ ],
61
+ isError: true,
62
+ };
63
+ }
64
+ }
65
+ catch (error) {
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: `执行失败: ${formatError(error)}`,
71
+ },
72
+ ],
73
+ isError: true,
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * 执行清除缓存工具
79
+ */
80
+ async function executeClearCache(args) {
81
+ try {
82
+ const clean = args.clean || 'all';
83
+ // 验证 clean 参数
84
+ const validCacheTypes = ['storage', 'file', 'compile', 'auth', 'network', 'session', 'all'];
85
+ if (!validCacheTypes.includes(clean)) {
86
+ return {
87
+ content: [
88
+ {
89
+ type: 'text',
90
+ text: `错误: clean 必须是以下值之一: ${validCacheTypes.join(', ')}`,
91
+ },
92
+ ],
93
+ isError: true,
94
+ };
95
+ }
96
+ const result = await cliClient.clearCache(clean);
97
+ if (result.success) {
98
+ const cacheTypeMap = {
99
+ storage: '数据缓存',
100
+ file: '文件缓存',
101
+ compile: '编译缓存',
102
+ auth: '登录授权缓存',
103
+ network: '网络缓存',
104
+ session: '会话缓存',
105
+ all: '全部缓存',
106
+ };
107
+ return {
108
+ content: [
109
+ {
110
+ type: 'text',
111
+ text: `✓ 缓存清除成功\n\n清除类型: ${cacheTypeMap[clean]} (${clean})${result.stdout ? `\n\n输出信息:\n${result.stdout}` : ''}`,
112
+ },
113
+ ],
114
+ };
115
+ }
116
+ else {
117
+ return {
118
+ content: [
119
+ {
120
+ type: 'text',
121
+ text: `✗ 缓存清除失败 (退出码: ${result.code})\n\n${result.stderr || result.stdout || '未知错误'}`,
122
+ },
123
+ ],
124
+ isError: true,
125
+ };
126
+ }
127
+ }
128
+ catch (error) {
129
+ return {
130
+ content: [
131
+ {
132
+ type: 'text',
133
+ text: `执行失败: ${formatError(error)}`,
134
+ },
135
+ ],
136
+ isError: true,
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * 构建工具定义数组
142
+ */
143
+ export const buildTools = [
144
+ {
145
+ name: 'weapp_build_npm',
146
+ description: '构建 npm 包,将 node_modules 中的依赖构建为小程序可用的模块',
147
+ inputSchema: {
148
+ type: 'object',
149
+ properties: {
150
+ project: {
151
+ type: 'string',
152
+ description: '小程序项目目录的绝对路径(与 projectPath 二选一)',
153
+ },
154
+ projectPath: {
155
+ type: 'string',
156
+ description: '小程序项目目录的绝对路径(与 project 二选一,推荐使用 project)',
157
+ },
158
+ compileType: {
159
+ type: 'string',
160
+ enum: ['miniprogram', 'plugin'],
161
+ description: '编译类型:miniprogram(普通小程序)或 plugin(插件)。默认为 miniprogram',
162
+ },
163
+ },
164
+ required: [],
165
+ },
166
+ handler: executeBuildNpm,
167
+ },
168
+ {
169
+ name: 'weapp_clear_cache',
170
+ description: '清除微信开发者工具的缓存数据',
171
+ inputSchema: {
172
+ type: 'object',
173
+ properties: {
174
+ clean: {
175
+ type: 'string',
176
+ enum: ['storage', 'file', 'compile', 'auth', 'network', 'session', 'all'],
177
+ description: '要清除的缓存类型:storage(数据缓存)、file(文件缓存)、compile(编译缓存)、auth(登录授权缓存)、network(网络缓存)、session(会话缓存)、all(全部缓存)。默认为 all',
178
+ default: 'all',
179
+ },
180
+ },
181
+ },
182
+ handler: executeClearCache,
183
+ },
184
+ ];
185
+ /**
186
+ * 执行构建工具(向后兼容)
187
+ * @param name 工具名称
188
+ * @param args 工具参数
189
+ * @returns 工具执行结果
190
+ * @deprecated 直接使用工具的 handler 方法
191
+ */
192
+ export async function executeBuildTool(name, args) {
193
+ switch (name) {
194
+ case 'weapp_build_npm':
195
+ return executeBuildNpm(args);
196
+ case 'weapp_clear_cache':
197
+ return executeClearCache(args);
198
+ default:
199
+ return {
200
+ content: [
201
+ {
202
+ type: 'text',
203
+ text: `未知的构建工具: ${name}`,
204
+ },
205
+ ],
206
+ isError: true,
207
+ };
208
+ }
209
+ }
210
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * 云开发相关工具
3
+ * 提供云环境管理、云函数部署等操作
4
+ */
5
+ import { ToolDefinition, ToolResult } from '../types.js';
6
+ /**
7
+ * 执行获取云环境列表
8
+ */
9
+ declare function executeCloudEnvList(args: {
10
+ project: string;
11
+ }): Promise<ToolResult>;
12
+ /**
13
+ * 执行获取云函数列表
14
+ */
15
+ declare function executeCloudFunctionsList(args: {
16
+ project: string;
17
+ env: string;
18
+ }): Promise<ToolResult>;
19
+ /**
20
+ * 执行获取云函数信息
21
+ */
22
+ declare function executeCloudFunctionsInfo(args: {
23
+ project: string;
24
+ env: string;
25
+ names: string[];
26
+ }): Promise<ToolResult>;
27
+ /**
28
+ * 执行部署云函数
29
+ */
30
+ declare function executeCloudFunctionsDeploy(args: {
31
+ project: string;
32
+ env: string;
33
+ names?: string[];
34
+ paths?: string[];
35
+ remoteNpmInstall?: boolean;
36
+ }): Promise<ToolResult>;
37
+ /**
38
+ * 执行增量部署云函数
39
+ */
40
+ declare function executeCloudFunctionsIncDeploy(args: {
41
+ project: string;
42
+ env: string;
43
+ names?: string[];
44
+ paths?: string[];
45
+ remoteNpmInstall?: boolean;
46
+ }): Promise<ToolResult>;
47
+ /**
48
+ * 执行下载云函数
49
+ */
50
+ declare function executeCloudFunctionsDownload(args: {
51
+ project: string;
52
+ env: string;
53
+ name: string;
54
+ }): Promise<ToolResult>;
55
+ /**
56
+ * 云开发工具定义
57
+ */
58
+ export declare const cloudTools: ToolDefinition[];
59
+ /**
60
+ * 工具执行映射表(向后兼容)
61
+ * @deprecated 直接使用工具的 handler 方法
62
+ */
63
+ export declare const cloudToolExecutors: {
64
+ weapp_cloud_env_list: typeof executeCloudEnvList;
65
+ weapp_cloud_functions_list: typeof executeCloudFunctionsList;
66
+ weapp_cloud_functions_info: typeof executeCloudFunctionsInfo;
67
+ weapp_cloud_functions_deploy: typeof executeCloudFunctionsDeploy;
68
+ weapp_cloud_functions_inc_deploy: typeof executeCloudFunctionsIncDeploy;
69
+ weapp_cloud_functions_download: typeof executeCloudFunctionsDownload;
70
+ };
71
+ export {};
72
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/tools/cloud.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,iBAAe,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCjF;AAED;;GAEG;AACH,iBAAe,yBAAyB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCpG;AAED;;GAEG;AACH,iBAAe,yBAAyB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmCtB;AAED;;GAEG;AACH,iBAAe,2BAA2B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CAkEtB;AAED;;GAEG;AACH,iBAAe,8BAA8B,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CA+DtB;AAED;;GAEG;AACH,iBAAe,6BAA6B,CAAC,IAAI,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,UAAU,CAAC,CAmCtB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAAc,EA8JtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;CAO9B,CAAC"}