@zhin.js/adapter-telegram 1.0.2 → 1.0.4

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/CHANGELOG.md CHANGED
@@ -1,16 +1,43 @@
1
- # @zhin.js/adapter-telegram
1
+ # Changelog
2
+
3
+ ## 1.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - f9faa1d: fix: test release
8
+ - Updated dependencies [f9faa1d]
9
+ - @zhin.js/logger@0.1.3
10
+ - zhin.js@1.0.19
11
+
12
+ ## 1.0.3
13
+
14
+ ### Patch Changes
15
+
16
+ - d16a69c: fix: test trust publish
17
+ - Updated dependencies [d16a69c]
18
+ - @zhin.js/logger@0.1.2
19
+ - zhin.js@1.0.18
2
20
 
3
21
  ## 1.0.2
4
22
 
5
23
  ### Patch Changes
6
24
 
7
- - Updated dependencies [15fc934]
8
- - zhin.js@1.0.2
25
+ - zhin.js@1.0.17
9
26
 
10
27
  ## 1.0.1
11
28
 
12
29
  ### Patch Changes
13
30
 
14
- - Updated dependencies [efdd58a]
15
- - @zhin.js/types@1.0.1
16
- - zhin.js@1.0.1
31
+ - cda76be: fix: add adapters
32
+
33
+ ## 1.0.0 (2025-01-19)
34
+
35
+ ### Features
36
+
37
+ - Initial release of Telegram adapter
38
+ - Support for text messages with formatting
39
+ - Rich media support (images, videos, audio, documents, stickers)
40
+ - Long polling and webhook modes
41
+ - Reply and quote functionality
42
+ - Callback query handling
43
+ - Private and group chat support
package/README.md CHANGED
@@ -1,326 +1,106 @@
1
1
  # @zhin.js/adapter-telegram
2
2
 
3
- Zhin.js Telegram 适配器,基于 `node-telegram-bot-api` 实现,支持 **Polling** 和 **Webhook** 两种模式。
3
+ Telegram adapter for zhin.js framework.
4
4
 
5
- ## 安装
5
+ ## Installation
6
6
 
7
7
  ```bash
8
8
  pnpm add @zhin.js/adapter-telegram
9
9
  ```
10
10
 
11
- ## 配置
12
-
13
- ### Polling 模式配置(推荐开发使用)
14
-
15
- ```typescript
16
- import { TelegramBotConfig } from '@zhin.js/adapter-telegram';
17
-
18
- const config: TelegramBotConfig = {
19
- context: 'telegram',
20
- name: 'my-telegram-bot',
21
- token: 'YOUR_BOT_TOKEN', // 从 @BotFather 获取的 Bot Token
22
- mode: 'polling' // 可选,默认就是 polling
23
- }
24
- ```
25
-
26
- ### Webhook 模式配置(推荐生产使用)
11
+ ## Configuration
27
12
 
28
13
  ```typescript
29
- import { TelegramWebhookConfig } from '@zhin.js/adapter-telegram';
30
-
31
- const config: TelegramWebhookConfig = {
32
- context: 'telegram-webhook',
33
- name: 'my-telegram-bot',
34
- token: 'YOUR_BOT_TOKEN',
35
- mode: 'webhook',
36
- webhookPath: '/telegram/webhook', // 内部路由路径
37
- webhookUrl: 'https://yourdomain.com/telegram/webhook', // 外部访问 URL
38
- secretToken: 'your-secret-token' // 可选的安全令牌
39
- }
14
+ import { defineConfig } from 'zhin.js'
15
+
16
+ export default defineConfig({
17
+ bots: [
18
+ {
19
+ name: 'my-telegram-bot',
20
+ context: 'telegram',
21
+ token: 'YOUR_BOT_TOKEN', // Get from @BotFather
22
+ polling: true, // Use long polling (default)
23
+ // OR use webhooks:
24
+ // polling: false,
25
+ // webhook: {
26
+ // domain: 'https://yourdomain.com',
27
+ // path: '/telegram-webhook',
28
+ // port: 8443
29
+ // }
30
+ }
31
+ ]
32
+ })
40
33
  ```
41
34
 
42
- ### 通用配置参数
43
-
44
- - `token` (必需): Telegram Bot Token,从 [@BotFather](https://t.me/BotFather) 获取
45
- - `name`: 机器人名称
46
- - `proxy`: 代理配置(可选)
47
- - `host`: 代理服务器地址
48
- - `port`: 代理服务器端口
49
- - `username`: 代理用户名(可选)
50
- - `password`: 代理密码(可选)
51
- - `fileDownload`: 文件下载配置(可选)
52
- - `enabled`: 是否启用自动文件下载(默认: false)
53
- - `downloadPath`: 文件下载路径(默认: './downloads')
54
- - `maxFileSize`: 最大文件大小,单位字节(默认: 20MB)
55
-
56
- ### 代理和文件下载配置示例
35
+ ## Features
57
36
 
58
- ```typescript
59
- const config: TelegramBotConfig = {
60
- context: 'telegram',
61
- name: 'my-telegram-bot',
62
- token: 'YOUR_BOT_TOKEN',
63
- proxy: {
64
- host: '127.0.0.1',
65
- port: 1080,
66
- username: 'user',
67
- password: 'pass'
68
- },
69
- fileDownload: {
70
- enabled: true,
71
- downloadPath: './telegram_files',
72
- maxFileSize: 50 * 1024 * 1024 // 50MB
73
- }
74
- }
75
- ```
37
+ - ✅ Send and receive text messages
38
+ - Support for rich media (images, videos, audio, documents)
39
+ - ✅ Message formatting (bold, italic, code, links)
40
+ - ✅ Reply to messages
41
+ - ✅ Mentions (@username)
42
+ - ✅ Stickers and locations
43
+ - ✅ Callback queries (inline buttons)
44
+ - ✅ Long polling and webhook modes
45
+ - ✅ Private and group chats
76
46
 
77
- ## 获取 Bot Token
47
+ ## Getting Your Bot Token
78
48
 
79
- 1. Telegram 中搜索 [@BotFather](https://t.me/BotFather)
80
- 2. 发送 `/newbot` 创建新机器人
81
- 3. 按照提示设置机器人名称和用户名
82
- 4. 获得 Bot Token,格式类似:`123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ`
49
+ 1. Talk to [@BotFather](https://t.me/botfather) on Telegram
50
+ 2. Send `/newbot` and follow the instructions
51
+ 3. Copy the bot token provided
52
+ 4. Add the token to your configuration
83
53
 
84
- ## 使用示例
54
+ ## Usage Examples
85
55
 
86
- ### Polling 模式使用
56
+ ### Basic Message Handling
87
57
 
88
58
  ```typescript
89
- import { createApp } from 'zhin.js';
90
- import '@zhin.js/adapter-telegram';
91
-
92
- const app = createApp();
59
+ import { addCommand, MessageCommand } from 'zhin.js'
93
60
 
94
- app.adapter('telegram', {
95
- context: 'telegram',
96
- name: 'my-bot',
97
- token: 'YOUR_BOT_TOKEN'
98
- });
99
-
100
- app.middleware((session, next) => {
101
-
102
- return next();
103
- });
104
-
105
- app.command('ping').action((session) => {
106
- session.send('pong!');
107
- });
108
-
109
- app.start();
61
+ addCommand(new MessageCommand('hello')
62
+ .action(async (message) => {
63
+ return 'Hello from Telegram!'
64
+ })
65
+ )
110
66
  ```
111
67
 
112
- ### Webhook 模式使用
68
+ ### Send Rich Media
113
69
 
114
70
  ```typescript
115
- import { createApp } from 'zhin.js';
116
- import '@zhin.js/adapter-telegram';
117
- import '@zhin.js/http'; // 需要 HTTP 插件支持
118
-
119
- const app = createApp();
120
-
121
- // 先加载 HTTP 插件
122
- app.plugin(require('@zhin.js/http'));
123
-
124
- // 配置 Telegram Webhook
125
- app.adapter('telegram-webhook', {
126
- context: 'telegram-webhook',
127
- name: 'webhook-bot',
128
- token: 'YOUR_BOT_TOKEN',
129
- mode: 'webhook',
130
- webhookPath: '/telegram/webhook',
131
- webhookUrl: 'https://your-domain.com/telegram/webhook',
132
- secretToken: 'your-secret-token'
133
- });
134
-
135
- app.command('start').action((session) => {
136
- session.send('欢迎使用 Telegram Bot(Webhook 模式)!');
137
- });
138
-
139
- app.start();
71
+ addCommand(new MessageCommand('photo')
72
+ .action(async (message) => {
73
+ return [
74
+ { type: 'image', data: { url: 'https://example.com/photo.jpg' } },
75
+ { type: 'text', data: { text: 'Check out this photo!' } }
76
+ ]
77
+ })
78
+ )
140
79
  ```
141
80
 
142
- ### 高级功能使用
81
+ ### Reply to Messages
143
82
 
144
83
  ```typescript
145
- import { createApp } from 'zhin.js';
146
- import '@zhin.js/adapter-telegram';
147
-
148
- const app = createApp();
149
-
150
- app.adapter('telegram', {
151
- context: 'telegram',
152
- name: 'advanced-bot',
153
- token: 'YOUR_BOT_TOKEN',
154
- fileDownload: {
155
- enabled: true,
156
- downloadPath: './downloads'
157
- }
158
- });
159
-
160
- // 处理图片消息
161
- app.middleware((session, next) => {
162
- const imageSegments = session.content.filter(seg => seg.type === 'image');
163
- if (imageSegments.length > 0) {
164
- console.log('收到图片消息:', imageSegments.map(seg => seg.data.file_id));
165
- }
166
- return next();
167
- });
168
-
169
- // 发送多媒体消息
170
- app.command('send-image').action(async (session) => {
171
- await session.send([
172
- { type: 'image', data: { url: 'https://example.com/image.jpg' } },
173
- { type: 'text', data: { text: '这是一张图片' } }
174
- ]);
175
- });
176
-
177
- // 回复消息
178
- app.command('echo').action(async (session) => {
179
- await session.$reply('你说: ' + session.content.find(s => s.type === 'text')?.data.text);
180
- });
181
-
182
- app.start();
84
+ addCommand(new MessageCommand('quote <text:text>')
85
+ .action(async (message, result) => {
86
+ await message.$reply(`You said: ${result.params.text}`, true) // true = quote original message
87
+ })
88
+ )
183
89
  ```
184
90
 
185
- ## 两种模式对比
186
-
187
- | 特性 | Polling 模式 | Webhook 模式 |
188
- |------|-------------|-------------|
189
- | **网络要求** | 机器人主动拉取 | 需要公网 HTTPS |
190
- | **实时性** | 较低(轮询间隔) | 高(实时推送) |
191
- | **服务器要求** | 低(无需公网IP) | 高(需要域名+SSL) |
192
- | **适用场景** | 开发、测试、小规模 | 生产、大规模 |
193
- | **资源消耗** | 中等(持续轮询) | 低(按需处理) |
194
- | **配置复杂度** | 简单 | 中等 |
195
-
196
- ### 选择建议
197
-
198
- - **开发阶段**: 使用 `telegram` (Polling 模式)
199
- - **生产部署**: 使用 `telegram-webhook` (Webhook 模式)
200
-
201
- ## 支持的消息类型
202
-
203
- ### 接收消息
204
- - **文本消息**: 支持文本格式化(粗体、斜体、代码等)
205
- - **图片消息**: 支持所有格式的图片和图片说明
206
- - **音频消息**: 支持音频文件,包含元数据(时长、表演者、标题等)
207
- - **语音消息**: 支持语音消息,包含时长和编码信息
208
- - **视频消息**: 支持视频文件和视频说明
209
- - **视频笔记**: 支持圆形视频消息
210
- - **文档消息**: 支持文档文件和文档说明
211
- - **贴纸消息**: 支持静态和动态贴纸
212
- - **位置消息**: 支持地理位置信息
213
- - **联系人消息**: 支持联系人信息
214
- - **回复消息**: 支持嵌套回复消息
215
- - **提及消息**: 支持 @用户名 和用户ID提及
216
- - **链接消息**: 自动解析URL和文本链接
217
- - **标签消息**: 支持 #标签 识别
218
-
219
- ### 发送消息
220
- - **文本消息**: 支持HTML格式化
221
- - **图片消息**: 支持发送图片文件、URL或file_id
222
- - **音频消息**: 支持发送音频文件,可设置元数据
223
- - **语音消息**: 支持发送语音文件
224
- - **视频消息**: 支持发送视频文件,可设置尺寸等属性
225
- - **视频笔记**: 支持发送圆形视频
226
- - **文档消息**: 支持发送任意格式的文件
227
- - **贴纸消息**: 支持发送贴纸(仅限file_id)
228
- - **位置消息**: 支持发送地理位置
229
- - **联系人消息**: 支持发送联系人信息
230
- - **回复消息**: 支持回复指定消息
231
-
232
- ## 聊天类型支持
233
-
234
- - `private`: 私聊
235
- - `group`: 群组
236
- - `supergroup`: 超级群组
237
- - `channel`: 频道
238
-
239
- ## 特性说明
240
-
241
- ### Webhook 模式安全性
242
- - **签名验证**: 使用 `secretToken` 验证请求来源
243
- - **HTTPS 要求**: Telegram 要求 Webhook URL 必须是 HTTPS
244
- - **路径隔离**: 支持自定义路径,避免与其他服务冲突
245
-
246
- ### 文件下载
247
- - 默认情况下,文件下载功能是关闭的,只提供文件的 `file_id`
248
- - 启用文件下载后,适配器会自动在后台下载消息中的文件到本地
249
- - 支持的文件类型:图片、音频、语音、视频、文档、贴纸等
250
- - 下载操作是异步的,不会阻塞消息处理流程
251
-
252
- ### 消息格式化
253
- - 支持 Telegram 的所有消息实体(粗体、斜体、代码、链接等)
254
- - 自动解析 @提及 和 #标签
255
- - 支持嵌套回复消息的完整解析
256
- - 保留原始消息的所有元数据
257
-
258
- ### 消息发送
259
- - 支持发送多种格式的多媒体内容
260
- - 自动根据内容类型选择合适的 Telegram API
261
- - 支持批量发送多个消息段
262
- - 智能处理回复消息
263
-
264
- ## 注意事项
265
-
266
- 1. **网络连接**: 如果在中国大陆使用,可能需要配置代理才能正常连接到 Telegram API
267
- 2. **安全性**: Bot Token 需要保密,不要在代码中硬编码或提交到版本控制系统
268
- 3. **环境变量**: 建议使用环境变量存储敏感信息
269
- 4. **文件大小限制**: Telegram Bot API 对文件大小有限制,建议设置合理的 `maxFileSize`
270
- 5. **频率限制**: 注意 Telegram 的频率限制,避免发送消息过于频繁
271
- 6. **Webhook 要求**: Webhook 模式需要:
272
- - 有效的 HTTPS 域名
273
- - SSL 证书
274
- - 能够接收 Telegram 服务器的 POST 请求
275
- - zhin.js 的 `@zhin.js/http` 插件支持
276
-
277
- ## 故障排除
278
-
279
- ### Webhook 模式问题
280
-
281
- 1. **Webhook 设置失败**
282
- ```
283
- Error: HTTPS URL must be provided for webhook
284
- ```
285
- - 确保 `webhookUrl` 使用 HTTPS 协议
286
- - 检查域名和 SSL 证书是否有效
287
-
288
- 2. **签名验证失败**
289
- ```
290
- Invalid Discord signature
291
- ```
292
- - 检查 `secretToken` 配置是否正确
293
- - 确认 Telegram 发送的请求头包含正确的签名
294
-
295
- 3. **路径冲突**
296
- ```
297
- 路由已存在
298
- ```
299
- - 确保 `webhookPath` 在应用中是唯一的
300
- - 避免与其他插件或适配器的路径冲突
91
+ ## Telegram-Specific Features
301
92
 
302
- ### Polling 模式问题
93
+ ### Callback Queries
303
94
 
304
- 1. **代理连接失败**
305
- - 检查代理服务器配置
306
- - 确认防火墙设置
307
- - 尝试不同的代理协议(SOCKS5)
95
+ The adapter automatically handles callback queries (from inline keyboards) as special messages.
308
96
 
309
- 2. **Token 无效**
310
- - 重新从 @BotFather 获取 Token
311
- - 检查 Token 格式是否正确
97
+ ### File Handling
312
98
 
313
- ## 更新日志
99
+ You can send files using:
100
+ - `file_id` (from received messages)
101
+ - URL
102
+ - Local file path
314
103
 
315
- ### v1.1.0
316
- - ✨ 新增 Webhook 模式支持
317
- - ✨ 使用 `useContext('router')` 集成 HTTP 服务
318
- - 🔒 添加签名验证安全机制
319
- - 📚 完善文档和示例
104
+ ## License
320
105
 
321
- ### v1.0.0
322
- - 🎉 初始版本
323
- - 🔄 Polling 模式支持
324
- - 🎯 完整的多媒体消息支持
325
- - 🌐 代理支持
326
- - 📁 文件下载功能
106
+ MIT
package/lib/index.d.ts CHANGED
@@ -1,85 +1,51 @@
1
- import TelegramBotApi from "node-telegram-bot-api";
2
- import { Bot, BotConfig, Adapter, Plugin, Message, SendOptions, SendContent, MessageSegment } from "zhin.js";
3
- declare module 'zhin.js' {
1
+ import { Telegraf } from "telegraf";
2
+ import type { Message as TelegramMessage } from "telegraf/types";
3
+ import { Bot, Adapter, Plugin, Message, SendOptions } from "zhin.js";
4
+ declare module "zhin.js" {
5
+ namespace Plugin {
6
+ interface Contexts {
7
+ telegram: TelegramAdapter;
8
+ }
9
+ }
4
10
  interface RegisteredAdapters {
5
- telegram: Adapter<TelegramBot>;
6
- 'telegram-webhook': Adapter<TelegramWebhookBot>;
11
+ telegram: TelegramAdapter;
7
12
  }
8
13
  }
9
- export interface TelegramBaseConfig extends BotConfig {
14
+ export interface TelegramBotConfig {
15
+ context: "telegram";
10
16
  token: string;
11
17
  name: string;
12
- proxy?: {
13
- host: string;
14
- port: number;
15
- username?: string;
16
- password?: string;
17
- };
18
- fileDownload?: {
19
- enabled: boolean;
20
- downloadPath?: string;
21
- maxFileSize?: number;
18
+ polling?: boolean;
19
+ webhook?: {
20
+ domain: string;
21
+ path?: string;
22
+ port?: number;
22
23
  };
23
- }
24
- export type TelegramBotConfig = TelegramBaseConfig & TelegramBotApi.ConstructorOptions & {
25
- context: 'telegram';
26
- mode?: 'polling';
27
- };
28
- export interface TelegramWebhookConfig extends TelegramBaseConfig {
29
- context: 'telegram-webhook';
30
- mode: 'webhook';
31
- webhookPath: string;
32
- webhookUrl: string;
33
- secretToken?: string;
24
+ allowedUpdates?: string[];
34
25
  }
35
26
  export interface TelegramBot {
36
27
  $config: TelegramBotConfig;
37
28
  }
38
- export interface TelegramWebhookBot {
39
- $config: TelegramWebhookConfig;
40
- }
41
- export declare class TelegramBot extends TelegramBotApi implements Bot<TelegramBotApi.Message, TelegramBotConfig> {
42
- private plugin;
43
- $connected?: boolean;
44
- constructor(plugin: Plugin, config: TelegramBotConfig);
45
- private handleTelegramMessage;
29
+ export declare class TelegramBot extends Telegraf implements Bot<TelegramBotConfig, TelegramMessage> {
30
+ adapter: TelegramAdapter;
31
+ $config: TelegramBotConfig;
32
+ $connected: boolean;
33
+ get $id(): string;
34
+ constructor(adapter: TelegramAdapter, $config: TelegramBotConfig);
46
35
  $connect(): Promise<void>;
47
36
  $disconnect(): Promise<void>;
48
- $formatMessage(msg: TelegramBotApi.Message): Message<TelegramBotApi.Message>;
49
- $sendMessage(options: SendOptions): Promise<void>;
50
- sendContentToChat(chatId: string, content: SendContent, extraOptions?: any): Promise<void>;
51
- getFileInfo(fileId: string): Promise<{
52
- file_id: string;
53
- file_unique_id: string;
54
- file_size: number | undefined;
55
- file_path: string | undefined;
56
- file_url: string;
57
- } | null>;
58
- downloadTelegramFile(fileId: string): Promise<string | null>;
59
- parseMessageContentSync(msg: TelegramBotApi.Message): MessageSegment[];
60
- downloadMessageFiles(msg: TelegramBotApi.Message): Promise<void>;
61
- parseTextWithEntities(text: string, entities?: TelegramBotApi.MessageEntity[]): MessageSegment[];
62
- static fileExists(filePath: string): Promise<boolean>;
63
- static getFileExtension(fileName: string): string;
64
- static isImageFile(fileName: string): boolean;
65
- static isAudioFile(fileName: string): boolean;
66
- static isVideoFile(fileName: string): boolean;
67
- static formatContentToText(content: SendContent): string;
68
- }
69
- export declare class TelegramWebhookBot extends TelegramBotApi implements Bot<TelegramBotApi.Message, TelegramWebhookConfig> {
70
- private plugin;
71
- $connected?: boolean;
72
- private router;
73
- constructor(plugin: Plugin, router: any, config: TelegramWebhookConfig);
74
- private setupWebhookRoute;
75
- private handleWebhook;
76
37
  private handleTelegramMessage;
77
- $connect(): Promise<void>;
78
- $disconnect(): Promise<void>;
79
- $formatMessage(msg: TelegramBotApi.Message): Message<TelegramBotApi.Message>;
80
- $sendMessage(options: SendOptions): Promise<void>;
81
- private downloadTelegramFile;
82
- static parseMessageContent: any;
83
- static formatSendContent: any;
38
+ $formatMessage(msg: TelegramMessage): Message<TelegramMessage>;
39
+ private $formatCallbackQuery;
40
+ private parseMessageContent;
41
+ private parseTextWithEntities;
42
+ $sendMessage(options: SendOptions): Promise<string>;
43
+ private sendContentToChat;
44
+ $recallMessage(id: string): Promise<void>;
45
+ }
46
+ declare class TelegramAdapter extends Adapter<TelegramBot> {
47
+ constructor(plugin: Plugin);
48
+ createBot(config: TelegramBotConfig): TelegramBot;
84
49
  }
50
+ export {};
85
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,IAAI,eAAe,EAAyB,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,GAAG,EACH,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EAKZ,MAAM,SAAS,CAAC;AAGjB,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,QAAQ,EAAE,eAAe,CAAC;SAC3B;KACF;IAED,UAAU,kBAAkB;QAC1B,QAAQ,EAAE,eAAe,CAAC;KAC3B;CACF;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAKD,qBAAa,WAAY,SAAQ,QAAS,YAAW,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAOvE,OAAO,EAAE,eAAe;IAAS,OAAO,EAAE,iBAAiB;IAN9E,UAAU,EAAE,OAAO,CAAS;IAE5B,IAAI,GAAG,WAEN;gBAEkB,OAAO,EAAE,eAAe,EAAS,OAAO,EAAE,iBAAiB;IAIxE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAWpB,qBAAqB;IAUnC,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAyD9D,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,mBAAmB;IAqI3B,OAAO,CAAC,qBAAqB;IAkFvB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YAc3C,iBAAiB;IAsLzB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAShD;AAED,cAAM,eAAgB,SAAQ,OAAO,CAAC,WAAW,CAAC;gBACpC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW;CAGlD"}