mira-app-server 1.0.13 → 1.0.14
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/README.md +67 -0
- package/dist/AuthRouter.d.ts +37 -0
- package/dist/AuthRouter.d.ts.map +1 -0
- package/dist/AuthRouter.js +250 -0
- package/dist/AuthRouter.js.map +1 -0
- package/dist/HttpServer.d.ts +28 -0
- package/dist/HttpServer.d.ts.map +1 -0
- package/dist/HttpServer.js +382 -0
- package/dist/HttpServer.js.map +1 -0
- package/dist/MiraServer.d.ts +25 -0
- package/dist/MiraServer.d.ts.map +1 -0
- package/dist/MiraServer.js +86 -0
- package/dist/MiraServer.js.map +1 -0
- package/dist/UserStorage.d.ts +62 -0
- package/dist/UserStorage.d.ts.map +1 -0
- package/dist/UserStorage.js +407 -0
- package/dist/UserStorage.js.map +1 -0
- package/dist/WebSocketServer.d.ts +12 -0
- package/dist/WebSocketServer.d.ts.map +1 -0
- package/dist/WebSocketServer.js +24 -0
- package/dist/WebSocketServer.js.map +1 -0
- package/dist/cli.js +114 -37
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -11
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +19 -0
- package/dist/server.js.map +1 -0
- package/package.json +24 -5
- package/.dockerignore +0 -91
- package/Dockerfile +0 -79
- package/Dockerfile.optimized +0 -80
- package/docker-build.bat +0 -31
- package/docker-build.sh +0 -37
- package/src/cli.ts +0 -46
- package/src/index.ts +0 -13
- package/tsconfig.json +0 -23
package/README.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Mira Server
|
|
2
|
+
|
|
3
|
+
Mira Server是一个基于mira-core的独立服务器应用程序。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
### 全局安装
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g mira-app-server
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### 本地安装
|
|
13
|
+
```bash
|
|
14
|
+
npm install mira-app-server
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 使用方法
|
|
18
|
+
|
|
19
|
+
### 全局安装后使用
|
|
20
|
+
安装完成后,你可以在任何地方使用`mira-server`命令:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 使用默认配置启动
|
|
24
|
+
mira-server
|
|
25
|
+
|
|
26
|
+
# 自定义端口启动
|
|
27
|
+
mira-server --http-port 3001 --ws-port 8082
|
|
28
|
+
|
|
29
|
+
# 自定义数据目录
|
|
30
|
+
mira-server --data-path /path/to/your/data
|
|
31
|
+
|
|
32
|
+
# 查看帮助
|
|
33
|
+
mira-server --help
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 可用选项
|
|
37
|
+
|
|
38
|
+
- `--http-port <port>`: HTTP服务器端口 (默认: 3000)
|
|
39
|
+
- `--ws-port <port>`: WebSocket服务器端口 (默认: 8081)
|
|
40
|
+
- `--data-path <path>`: 数据目录路径 (默认: ./data)
|
|
41
|
+
- `--help`: 显示帮助信息
|
|
42
|
+
|
|
43
|
+
### 本地开发
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 安装依赖
|
|
47
|
+
npm install
|
|
48
|
+
|
|
49
|
+
# 构建项目
|
|
50
|
+
npm run build
|
|
51
|
+
|
|
52
|
+
# 启动开发服务器
|
|
53
|
+
npm run dev
|
|
54
|
+
|
|
55
|
+
# 使用TypeScript直接运行CLI
|
|
56
|
+
npm run cli -- --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 项目结构
|
|
60
|
+
|
|
61
|
+
- `src/cli.ts`: CLI入口文件
|
|
62
|
+
- `src/index.ts`: 服务器主文件
|
|
63
|
+
- `dist/`: 编译后的JavaScript文件
|
|
64
|
+
|
|
65
|
+
## 许可证
|
|
66
|
+
|
|
67
|
+
ISC
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Router, Request, Response } from 'express';
|
|
2
|
+
import { UserStorage, User } from './UserStorage';
|
|
3
|
+
declare class AuthService {
|
|
4
|
+
private userStorage;
|
|
5
|
+
constructor(dataDir?: string);
|
|
6
|
+
initialize(): Promise<void>;
|
|
7
|
+
authenticateUser(username: string, password: string): Promise<User | null>;
|
|
8
|
+
generateToken(userId: number): Promise<string>;
|
|
9
|
+
validateToken(token: string): Promise<User | null>;
|
|
10
|
+
revokeToken(token: string): Promise<boolean>;
|
|
11
|
+
getUserInfo(user: User): {
|
|
12
|
+
id: number;
|
|
13
|
+
username: string;
|
|
14
|
+
role: string;
|
|
15
|
+
permissions: string[];
|
|
16
|
+
created_at: number;
|
|
17
|
+
updated_at: number;
|
|
18
|
+
is_active: boolean;
|
|
19
|
+
email?: string;
|
|
20
|
+
};
|
|
21
|
+
cleanupExpiredTokens(): Promise<number>;
|
|
22
|
+
close(): Promise<void>;
|
|
23
|
+
getUserStorage(): UserStorage;
|
|
24
|
+
}
|
|
25
|
+
export declare class AuthRouter {
|
|
26
|
+
private router;
|
|
27
|
+
private authService;
|
|
28
|
+
constructor(dataDir?: string);
|
|
29
|
+
initialize(): Promise<void>;
|
|
30
|
+
private setupRoutes;
|
|
31
|
+
authMiddleware(): (req: Request, res: Response, next: any) => Promise<Response<any, Record<string, any>> | undefined>;
|
|
32
|
+
getRouter(): Router;
|
|
33
|
+
getAuthService(): AuthService;
|
|
34
|
+
getUserStorage(): UserStorage;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=AuthRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthRouter.d.ts","sourceRoot":"","sources":["../src/AuthRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAElD,cAAM,WAAW;IACb,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,MAAiB;IAIhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK1E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAKlD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,WAAW,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;IAKhB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,cAAc,IAAI,WAAW;CAGhC;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,MAAiB;IAkBhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,CAAC,WAAW;IAwJZ,cAAc,KACH,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,GAAG;IAmCjD,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,WAAW;IAI7B,cAAc,IAAI,WAAW;CAGvC"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthRouter = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const UserStorage_1 = require("./UserStorage");
|
|
6
|
+
class AuthService {
|
|
7
|
+
constructor(dataDir = './data') {
|
|
8
|
+
this.userStorage = new UserStorage_1.UserStorage(dataDir);
|
|
9
|
+
}
|
|
10
|
+
async initialize() {
|
|
11
|
+
await this.userStorage.initialize();
|
|
12
|
+
}
|
|
13
|
+
// 验证用户凭据
|
|
14
|
+
async authenticateUser(username, password) {
|
|
15
|
+
return await this.userStorage.authenticateUser(username, password);
|
|
16
|
+
}
|
|
17
|
+
// 生成令牌
|
|
18
|
+
async generateToken(userId) {
|
|
19
|
+
return await this.userStorage.createSession(userId);
|
|
20
|
+
}
|
|
21
|
+
// 验证令牌
|
|
22
|
+
async validateToken(token) {
|
|
23
|
+
return await this.userStorage.validateSession(token);
|
|
24
|
+
}
|
|
25
|
+
// 撤销令牌
|
|
26
|
+
async revokeToken(token) {
|
|
27
|
+
return await this.userStorage.revokeSession(token);
|
|
28
|
+
}
|
|
29
|
+
// 获取用户信息(不包含密码)
|
|
30
|
+
getUserInfo(user) {
|
|
31
|
+
return this.userStorage.getUserInfo(user);
|
|
32
|
+
}
|
|
33
|
+
// 清理过期令牌
|
|
34
|
+
async cleanupExpiredTokens() {
|
|
35
|
+
return await this.userStorage.cleanupExpiredSessions();
|
|
36
|
+
}
|
|
37
|
+
async close() {
|
|
38
|
+
await this.userStorage.close();
|
|
39
|
+
}
|
|
40
|
+
getUserStorage() {
|
|
41
|
+
return this.userStorage;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class AuthRouter {
|
|
45
|
+
constructor(dataDir = './data') {
|
|
46
|
+
this.router = (0, express_1.Router)();
|
|
47
|
+
this.authService = new AuthService(dataDir);
|
|
48
|
+
this.setupRoutes();
|
|
49
|
+
// 每小时清理一次过期令牌
|
|
50
|
+
setInterval(async () => {
|
|
51
|
+
try {
|
|
52
|
+
const cleaned = await this.authService.cleanupExpiredTokens();
|
|
53
|
+
if (cleaned > 0) {
|
|
54
|
+
console.log(`🧹 清理了 ${cleaned} 个过期会话`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('清理过期会话时出错:', error);
|
|
59
|
+
}
|
|
60
|
+
}, 60 * 60 * 1000);
|
|
61
|
+
}
|
|
62
|
+
async initialize() {
|
|
63
|
+
await this.authService.initialize();
|
|
64
|
+
}
|
|
65
|
+
setupRoutes() {
|
|
66
|
+
// 登录路由
|
|
67
|
+
this.router.post('/login', async (req, res) => {
|
|
68
|
+
try {
|
|
69
|
+
const { username, password } = req.body;
|
|
70
|
+
console.log('📝 Login attempt:', { username, passwordLength: password?.length });
|
|
71
|
+
if (!username || !password) {
|
|
72
|
+
return res.status(400).json({
|
|
73
|
+
success: false,
|
|
74
|
+
message: '用户名和密码不能为空',
|
|
75
|
+
code: 'MISSING_CREDENTIALS'
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const user = await this.authService.authenticateUser(username, password);
|
|
79
|
+
if (user) {
|
|
80
|
+
const token = await this.authService.generateToken(user.id);
|
|
81
|
+
res.json({
|
|
82
|
+
success: true,
|
|
83
|
+
message: '登录成功',
|
|
84
|
+
data: {
|
|
85
|
+
token,
|
|
86
|
+
user: this.authService.getUserInfo(user)
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
console.log(`✅ User ${username} logged in successfully`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
res.status(401).json({
|
|
93
|
+
success: false,
|
|
94
|
+
message: '用户名或密码错误',
|
|
95
|
+
code: 'INVALID_CREDENTIALS'
|
|
96
|
+
});
|
|
97
|
+
console.log(`❌ Failed login attempt for username: ${username}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error('Login error:', error);
|
|
102
|
+
res.status(500).json({
|
|
103
|
+
success: false,
|
|
104
|
+
message: '服务器内部错误',
|
|
105
|
+
code: 'INTERNAL_ERROR'
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
// 登出路由
|
|
110
|
+
this.router.post('/logout', async (req, res) => {
|
|
111
|
+
try {
|
|
112
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
113
|
+
if (token) {
|
|
114
|
+
const revoked = await this.authService.revokeToken(token);
|
|
115
|
+
console.log(`🔓 Token ${revoked ? 'successfully' : 'failed to'} revoked`);
|
|
116
|
+
}
|
|
117
|
+
res.json({
|
|
118
|
+
success: true,
|
|
119
|
+
message: '退出成功'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error('Logout error:', error);
|
|
124
|
+
res.status(500).json({
|
|
125
|
+
success: false,
|
|
126
|
+
message: '服务器内部错误'
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// 获取用户信息路由
|
|
131
|
+
this.router.get('/profile', async (req, res) => {
|
|
132
|
+
try {
|
|
133
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
134
|
+
if (!token) {
|
|
135
|
+
return res.status(401).json({
|
|
136
|
+
success: false,
|
|
137
|
+
message: '未提供认证令牌',
|
|
138
|
+
code: 'NO_TOKEN'
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const user = await this.authService.validateToken(token);
|
|
142
|
+
if (user) {
|
|
143
|
+
res.json({
|
|
144
|
+
success: true,
|
|
145
|
+
data: {
|
|
146
|
+
user: this.authService.getUserInfo(user)
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
res.status(401).json({
|
|
152
|
+
success: false,
|
|
153
|
+
message: '无效或过期的认证令牌',
|
|
154
|
+
code: 'INVALID_TOKEN'
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error('Profile error:', error);
|
|
160
|
+
res.status(500).json({
|
|
161
|
+
success: false,
|
|
162
|
+
message: '服务器内部错误'
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
// 验证令牌路由(用于中间件)
|
|
167
|
+
this.router.get('/verify', async (req, res) => {
|
|
168
|
+
try {
|
|
169
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
170
|
+
if (!token) {
|
|
171
|
+
return res.status(401).json({
|
|
172
|
+
success: false,
|
|
173
|
+
message: '未提供认证令牌',
|
|
174
|
+
code: 'NO_TOKEN'
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const user = await this.authService.validateToken(token);
|
|
178
|
+
if (user) {
|
|
179
|
+
res.json({
|
|
180
|
+
success: true,
|
|
181
|
+
message: '令牌有效',
|
|
182
|
+
data: {
|
|
183
|
+
user: this.authService.getUserInfo(user)
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
res.status(401).json({
|
|
189
|
+
success: false,
|
|
190
|
+
message: '无效或过期的认证令牌',
|
|
191
|
+
code: 'INVALID_TOKEN'
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
console.error('Token verification error:', error);
|
|
197
|
+
res.status(500).json({
|
|
198
|
+
success: false,
|
|
199
|
+
message: '服务器内部错误'
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// 认证中间件
|
|
205
|
+
authMiddleware() {
|
|
206
|
+
return async (req, res, next) => {
|
|
207
|
+
try {
|
|
208
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
209
|
+
if (!token) {
|
|
210
|
+
return res.status(401).json({
|
|
211
|
+
success: false,
|
|
212
|
+
message: '未提供认证令牌',
|
|
213
|
+
code: 'NO_TOKEN'
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const user = await this.authService.validateToken(token);
|
|
217
|
+
if (user) {
|
|
218
|
+
// 将用户信息添加到请求对象中
|
|
219
|
+
req.user = this.authService.getUserInfo(user);
|
|
220
|
+
next();
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
res.status(401).json({
|
|
224
|
+
success: false,
|
|
225
|
+
message: '无效或过期的认证令牌',
|
|
226
|
+
code: 'INVALID_TOKEN'
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
console.error('Auth middleware error:', error);
|
|
232
|
+
res.status(500).json({
|
|
233
|
+
success: false,
|
|
234
|
+
message: '认证服务错误'
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
getRouter() {
|
|
240
|
+
return this.router;
|
|
241
|
+
}
|
|
242
|
+
getAuthService() {
|
|
243
|
+
return this.authService;
|
|
244
|
+
}
|
|
245
|
+
getUserStorage() {
|
|
246
|
+
return this.authService.getUserStorage();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.AuthRouter = AuthRouter;
|
|
250
|
+
//# sourceMappingURL=AuthRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthRouter.js","sourceRoot":"","sources":["../src/AuthRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HttpRouter } from "mira-app-core";
|
|
2
|
+
import { Express } from 'express';
|
|
3
|
+
import http from 'http';
|
|
4
|
+
import { MiraBackend } from "mira-app-core";
|
|
5
|
+
import { AuthRouter } from "./AuthRouter";
|
|
6
|
+
export declare class MiraHttpServer {
|
|
7
|
+
app: Express;
|
|
8
|
+
httpServer: http.Server;
|
|
9
|
+
httpRouter: HttpRouter;
|
|
10
|
+
authRouter: AuthRouter;
|
|
11
|
+
backend: MiraBackend;
|
|
12
|
+
constructor(backend: MiraBackend, dataDir?: string);
|
|
13
|
+
initialize(): Promise<void>;
|
|
14
|
+
request(options: {
|
|
15
|
+
method: string;
|
|
16
|
+
url: string;
|
|
17
|
+
headers?: Record<string, string>;
|
|
18
|
+
data?: any;
|
|
19
|
+
}): Promise<any>;
|
|
20
|
+
private setupMiddleware;
|
|
21
|
+
private setupRoutes;
|
|
22
|
+
start(port?: number): Promise<void>;
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
getApp(): Express;
|
|
25
|
+
getHttpServer(): http.Server;
|
|
26
|
+
getAuthRouter(): AuthRouter;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=HttpServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpServer.d.ts","sourceRoot":"","sources":["../src/HttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAU,MAAM,SAAS,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAqH1C,qBAAa,cAAc;IAEvB,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;gBAET,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,MAAiB;IAU/C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,OAAO,CAAC,OAAO,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,CAAC;KACd,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBhB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,WAAW;IAgOZ,KAAK,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAezC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,MAAM,IAAI,OAAO;IAIjB,aAAa,IAAI,IAAI,CAAC,MAAM;IAI5B,aAAa,IAAI,UAAU;CAGrC"}
|