@samanhappy/mcphub 0.10.6 → 0.11.1
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.fr.md +36 -152
- package/README.md +34 -255
- package/README.zh.md +33 -212
- package/dist/config/DaoConfigService.js +3 -3
- package/dist/config/DaoConfigService.js.map +1 -1
- package/dist/controllers/authController.js +2 -2
- package/dist/controllers/authController.js.map +1 -1
- package/dist/controllers/configController.js +32 -5
- package/dist/controllers/configController.js.map +1 -1
- package/dist/controllers/groupController.js +24 -24
- package/dist/controllers/groupController.js.map +1 -1
- package/dist/controllers/oauthClientController.js +13 -13
- package/dist/controllers/oauthClientController.js.map +1 -1
- package/dist/controllers/oauthDynamicRegistrationController.js +9 -9
- package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
- package/dist/controllers/oauthServerController.js +1 -1
- package/dist/controllers/oauthServerController.js.map +1 -1
- package/dist/controllers/openApiController.js +1 -1
- package/dist/controllers/openApiController.js.map +1 -1
- package/dist/controllers/serverController.js +134 -96
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/controllers/userController.js +22 -21
- package/dist/controllers/userController.js.map +1 -1
- package/dist/dao/DaoFactory.js +43 -0
- package/dist/dao/DaoFactory.js.map +1 -1
- package/dist/dao/DatabaseDaoFactory.js +86 -0
- package/dist/dao/DatabaseDaoFactory.js.map +1 -0
- package/dist/dao/GroupDaoDbImpl.js +131 -0
- package/dist/dao/GroupDaoDbImpl.js.map +1 -0
- package/dist/dao/OAuthClientDao.js +100 -0
- package/dist/dao/OAuthClientDao.js.map +1 -0
- package/dist/dao/OAuthClientDaoDbImpl.js +83 -0
- package/dist/dao/OAuthClientDaoDbImpl.js.map +1 -0
- package/dist/dao/OAuthTokenDao.js +161 -0
- package/dist/dao/OAuthTokenDao.js.map +1 -0
- package/dist/dao/OAuthTokenDaoDbImpl.js +92 -0
- package/dist/dao/OAuthTokenDaoDbImpl.js.map +1 -0
- package/dist/dao/ServerDaoDbImpl.js +109 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -0
- package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
- package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserConfigDaoDbImpl.js +61 -0
- package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserDaoDbImpl.js +90 -0
- package/dist/dao/UserDaoDbImpl.js.map +1 -0
- package/dist/dao/index.js +11 -0
- package/dist/dao/index.js.map +1 -1
- package/dist/db/entities/Group.js +49 -0
- package/dist/db/entities/Group.js.map +1 -0
- package/dist/db/entities/OAuthClient.js +66 -0
- package/dist/db/entities/OAuthClient.js.map +1 -0
- package/dist/db/entities/OAuthToken.js +66 -0
- package/dist/db/entities/OAuthToken.js.map +1 -0
- package/dist/db/entities/Server.js +93 -0
- package/dist/db/entities/Server.js.map +1 -0
- package/dist/db/entities/SystemConfig.js +66 -0
- package/dist/db/entities/SystemConfig.js.map +1 -0
- package/dist/db/entities/User.js +45 -0
- package/dist/db/entities/User.js.map +1 -0
- package/dist/db/entities/UserConfig.js +45 -0
- package/dist/db/entities/UserConfig.js.map +1 -0
- package/dist/db/entities/index.js +18 -2
- package/dist/db/entities/index.js.map +1 -1
- package/dist/db/repositories/GroupRepository.js +81 -0
- package/dist/db/repositories/GroupRepository.js.map +1 -0
- package/dist/db/repositories/OAuthClientRepository.js +68 -0
- package/dist/db/repositories/OAuthClientRepository.js.map +1 -0
- package/dist/db/repositories/OAuthTokenRepository.js +159 -0
- package/dist/db/repositories/OAuthTokenRepository.js.map +1 -0
- package/dist/db/repositories/ServerRepository.js +80 -0
- package/dist/db/repositories/ServerRepository.js.map +1 -0
- package/dist/db/repositories/SystemConfigRepository.js +64 -0
- package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserConfigRepository.js +69 -0
- package/dist/db/repositories/UserConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserRepository.js +68 -0
- package/dist/db/repositories/UserRepository.js.map +1 -0
- package/dist/db/repositories/index.js +8 -1
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/middlewares/auth.js +2 -2
- package/dist/middlewares/auth.js.map +1 -1
- package/dist/middlewares/userContext.js +1 -1
- package/dist/middlewares/userContext.js.map +1 -1
- package/dist/models/OAuth.js +90 -122
- package/dist/models/OAuth.js.map +1 -1
- package/dist/models/User.js +29 -48
- package/dist/models/User.js.map +1 -1
- package/dist/routes/index.js +2 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/scripts/migrate-to-database.js +5 -0
- package/dist/scripts/migrate-to-database.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/groupService.js +87 -113
- package/dist/services/groupService.js.map +1 -1
- package/dist/services/keepAliveService.js +58 -0
- package/dist/services/keepAliveService.js.map +1 -0
- package/dist/services/mcpOAuthProvider.js +22 -28
- package/dist/services/mcpOAuthProvider.js.map +1 -1
- package/dist/services/mcpService.js +73 -92
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/oauthServerService.js +26 -20
- package/dist/services/oauthServerService.js.map +1 -1
- package/dist/services/oauthService.js +11 -10
- package/dist/services/oauthService.js.map +1 -1
- package/dist/services/oauthSettingsStore.js +17 -12
- package/dist/services/oauthSettingsStore.js.map +1 -1
- package/dist/services/openApiGeneratorService.js +6 -7
- package/dist/services/openApiGeneratorService.js.map +1 -1
- package/dist/services/sseService.js +20 -62
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/userService.js +38 -45
- package/dist/services/userService.js.map +1 -1
- package/dist/utils/migration.js +235 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/oauthBearer.js +4 -4
- package/dist/utils/oauthBearer.js.map +1 -1
- package/frontend/dist/assets/index-BiA4eB7l.js +251 -0
- package/frontend/dist/assets/index-BiA4eB7l.js.map +1 -0
- package/frontend/dist/index.html +1 -1
- package/mcp_settings.json +23 -1
- package/package.json +1 -1
- package/frontend/dist/assets/index-DDht0WYq.js +0 -251
- package/frontend/dist/assets/index-DDht0WYq.js.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { loadOriginalSettings } from '../config/index.js';
|
|
2
|
+
import { initializeDatabase } from '../db/connection.js';
|
|
3
|
+
import { setDaoFactory } from '../dao/DaoFactory.js';
|
|
4
|
+
import { DatabaseDaoFactory } from '../dao/DatabaseDaoFactory.js';
|
|
5
|
+
import { UserRepository } from '../db/repositories/UserRepository.js';
|
|
6
|
+
import { ServerRepository } from '../db/repositories/ServerRepository.js';
|
|
7
|
+
import { GroupRepository } from '../db/repositories/GroupRepository.js';
|
|
8
|
+
import { SystemConfigRepository } from '../db/repositories/SystemConfigRepository.js';
|
|
9
|
+
import { UserConfigRepository } from '../db/repositories/UserConfigRepository.js';
|
|
10
|
+
import { OAuthClientRepository } from '../db/repositories/OAuthClientRepository.js';
|
|
11
|
+
import { OAuthTokenRepository } from '../db/repositories/OAuthTokenRepository.js';
|
|
12
|
+
/**
|
|
13
|
+
* Migrate from file-based configuration to database
|
|
14
|
+
*/
|
|
15
|
+
export async function migrateToDatabase() {
|
|
16
|
+
try {
|
|
17
|
+
console.log('Starting migration from file to database...');
|
|
18
|
+
// Initialize database connection
|
|
19
|
+
await initializeDatabase();
|
|
20
|
+
console.log('Database connection established');
|
|
21
|
+
// Load current settings from file
|
|
22
|
+
const settings = loadOriginalSettings();
|
|
23
|
+
console.log('Loaded settings from file');
|
|
24
|
+
// Create repositories
|
|
25
|
+
const userRepo = new UserRepository();
|
|
26
|
+
const serverRepo = new ServerRepository();
|
|
27
|
+
const groupRepo = new GroupRepository();
|
|
28
|
+
const systemConfigRepo = new SystemConfigRepository();
|
|
29
|
+
const userConfigRepo = new UserConfigRepository();
|
|
30
|
+
const oauthClientRepo = new OAuthClientRepository();
|
|
31
|
+
const oauthTokenRepo = new OAuthTokenRepository();
|
|
32
|
+
// Migrate users
|
|
33
|
+
if (settings.users && settings.users.length > 0) {
|
|
34
|
+
console.log(`Migrating ${settings.users.length} users...`);
|
|
35
|
+
for (const user of settings.users) {
|
|
36
|
+
const exists = await userRepo.exists(user.username);
|
|
37
|
+
if (!exists) {
|
|
38
|
+
await userRepo.create({
|
|
39
|
+
username: user.username,
|
|
40
|
+
password: user.password,
|
|
41
|
+
isAdmin: user.isAdmin || false,
|
|
42
|
+
});
|
|
43
|
+
console.log(` - Created user: ${user.username}`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(` - User already exists: ${user.username}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Migrate servers
|
|
51
|
+
if (settings.mcpServers) {
|
|
52
|
+
const serverNames = Object.keys(settings.mcpServers);
|
|
53
|
+
console.log(`Migrating ${serverNames.length} servers...`);
|
|
54
|
+
for (const [name, config] of Object.entries(settings.mcpServers)) {
|
|
55
|
+
const exists = await serverRepo.exists(name);
|
|
56
|
+
if (!exists) {
|
|
57
|
+
await serverRepo.create({
|
|
58
|
+
name,
|
|
59
|
+
type: config.type,
|
|
60
|
+
url: config.url,
|
|
61
|
+
command: config.command,
|
|
62
|
+
args: config.args,
|
|
63
|
+
env: config.env,
|
|
64
|
+
headers: config.headers,
|
|
65
|
+
enabled: config.enabled !== undefined ? config.enabled : true,
|
|
66
|
+
owner: config.owner,
|
|
67
|
+
enableKeepAlive: config.enableKeepAlive,
|
|
68
|
+
keepAliveInterval: config.keepAliveInterval,
|
|
69
|
+
tools: config.tools,
|
|
70
|
+
prompts: config.prompts,
|
|
71
|
+
options: config.options,
|
|
72
|
+
oauth: config.oauth,
|
|
73
|
+
});
|
|
74
|
+
console.log(` - Created server: ${name}`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
console.log(` - Server already exists: ${name}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Migrate groups
|
|
82
|
+
if (settings.groups && settings.groups.length > 0) {
|
|
83
|
+
console.log(`Migrating ${settings.groups.length} groups...`);
|
|
84
|
+
for (const group of settings.groups) {
|
|
85
|
+
const exists = await groupRepo.existsByName(group.name);
|
|
86
|
+
if (!exists) {
|
|
87
|
+
await groupRepo.create({
|
|
88
|
+
name: group.name,
|
|
89
|
+
description: group.description,
|
|
90
|
+
servers: Array.isArray(group.servers) ? group.servers : [],
|
|
91
|
+
owner: group.owner,
|
|
92
|
+
});
|
|
93
|
+
console.log(` - Created group: ${group.name}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.log(` - Group already exists: ${group.name}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Migrate system config
|
|
101
|
+
if (settings.systemConfig) {
|
|
102
|
+
console.log('Migrating system configuration...');
|
|
103
|
+
const systemConfig = {
|
|
104
|
+
routing: settings.systemConfig.routing || {},
|
|
105
|
+
install: settings.systemConfig.install || {},
|
|
106
|
+
smartRouting: settings.systemConfig.smartRouting || {},
|
|
107
|
+
mcpRouter: settings.systemConfig.mcpRouter || {},
|
|
108
|
+
nameSeparator: settings.systemConfig.nameSeparator,
|
|
109
|
+
oauth: settings.systemConfig.oauth || {},
|
|
110
|
+
oauthServer: settings.systemConfig.oauthServer || {},
|
|
111
|
+
enableSessionRebuild: settings.systemConfig.enableSessionRebuild,
|
|
112
|
+
};
|
|
113
|
+
await systemConfigRepo.update(systemConfig);
|
|
114
|
+
console.log(' - System configuration updated');
|
|
115
|
+
}
|
|
116
|
+
// Migrate user configs
|
|
117
|
+
if (settings.userConfigs) {
|
|
118
|
+
const usernames = Object.keys(settings.userConfigs);
|
|
119
|
+
console.log(`Migrating ${usernames.length} user configurations...`);
|
|
120
|
+
for (const [username, config] of Object.entries(settings.userConfigs)) {
|
|
121
|
+
const userConfig = {
|
|
122
|
+
routing: config.routing || {},
|
|
123
|
+
additionalConfig: config,
|
|
124
|
+
};
|
|
125
|
+
await userConfigRepo.update(username, userConfig);
|
|
126
|
+
console.log(` - Updated configuration for user: ${username}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Migrate OAuth clients
|
|
130
|
+
if (settings.oauthClients && settings.oauthClients.length > 0) {
|
|
131
|
+
console.log(`Migrating ${settings.oauthClients.length} OAuth clients...`);
|
|
132
|
+
for (const client of settings.oauthClients) {
|
|
133
|
+
const exists = await oauthClientRepo.exists(client.clientId);
|
|
134
|
+
if (!exists) {
|
|
135
|
+
await oauthClientRepo.create({
|
|
136
|
+
clientId: client.clientId,
|
|
137
|
+
clientSecret: client.clientSecret,
|
|
138
|
+
name: client.name,
|
|
139
|
+
redirectUris: client.redirectUris,
|
|
140
|
+
grants: client.grants,
|
|
141
|
+
scopes: client.scopes,
|
|
142
|
+
owner: client.owner,
|
|
143
|
+
metadata: client.metadata,
|
|
144
|
+
});
|
|
145
|
+
console.log(` - Created OAuth client: ${client.clientId}`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.log(` - OAuth client already exists: ${client.clientId}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Migrate OAuth tokens
|
|
153
|
+
if (settings.oauthTokens && settings.oauthTokens.length > 0) {
|
|
154
|
+
console.log(`Migrating ${settings.oauthTokens.length} OAuth tokens...`);
|
|
155
|
+
for (const token of settings.oauthTokens) {
|
|
156
|
+
const exists = await oauthTokenRepo.exists(token.accessToken);
|
|
157
|
+
if (!exists) {
|
|
158
|
+
await oauthTokenRepo.create({
|
|
159
|
+
accessToken: token.accessToken,
|
|
160
|
+
refreshToken: token.refreshToken,
|
|
161
|
+
accessTokenExpiresAt: new Date(token.accessTokenExpiresAt),
|
|
162
|
+
refreshTokenExpiresAt: token.refreshTokenExpiresAt
|
|
163
|
+
? new Date(token.refreshTokenExpiresAt)
|
|
164
|
+
: undefined,
|
|
165
|
+
scope: token.scope,
|
|
166
|
+
clientId: token.clientId,
|
|
167
|
+
username: token.username,
|
|
168
|
+
});
|
|
169
|
+
console.log(` - Created OAuth token for client: ${token.clientId}`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log(` - OAuth token already exists: ${token.accessToken.substring(0, 8)}...`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
console.log('✅ Migration completed successfully');
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.error('❌ Migration failed:', error);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Initialize database mode
|
|
186
|
+
* This function should be called during application startup when USE_DB=true
|
|
187
|
+
*/
|
|
188
|
+
export async function initializeDatabaseMode() {
|
|
189
|
+
try {
|
|
190
|
+
console.log('Initializing database mode...');
|
|
191
|
+
// Initialize database connection
|
|
192
|
+
await initializeDatabase();
|
|
193
|
+
console.log('Database connection established');
|
|
194
|
+
// Switch to database factory
|
|
195
|
+
setDaoFactory(DatabaseDaoFactory.getInstance());
|
|
196
|
+
console.log('Switched to database-backed DAO implementations');
|
|
197
|
+
// Check if migration is needed
|
|
198
|
+
const userRepo = new UserRepository();
|
|
199
|
+
const userCount = await userRepo.count();
|
|
200
|
+
if (userCount === 0) {
|
|
201
|
+
console.log('No users found in database, running migration...');
|
|
202
|
+
const migrated = await migrateToDatabase();
|
|
203
|
+
if (!migrated) {
|
|
204
|
+
throw new Error('Migration failed');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(`Database already contains ${userCount} users, skipping migration`);
|
|
209
|
+
}
|
|
210
|
+
console.log('✅ Database mode initialized successfully');
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
console.error('❌ Failed to initialize database mode:', error);
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* CLI tool for migration
|
|
220
|
+
*/
|
|
221
|
+
export async function runMigrationCli() {
|
|
222
|
+
console.log('MCPHub Configuration Migration Tool');
|
|
223
|
+
console.log('====================================\n');
|
|
224
|
+
const success = await migrateToDatabase();
|
|
225
|
+
if (success) {
|
|
226
|
+
console.log('\n✅ Migration completed successfully!');
|
|
227
|
+
console.log('You can now set USE_DB=true to use database-backed configuration');
|
|
228
|
+
process.exit(0);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
console.log('\n❌ Migration failed!');
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,15 @@ import { findUserByUsername } from '../models/User.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Resolve an MCPHub user from a raw OAuth bearer token.
|
|
6
6
|
*/
|
|
7
|
-
export const resolveOAuthUserFromToken = (token) => {
|
|
7
|
+
export const resolveOAuthUserFromToken = async (token) => {
|
|
8
8
|
if (!token || !isOAuthServerEnabled()) {
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
|
-
const oauthToken = getOAuthStoredToken(token);
|
|
11
|
+
const oauthToken = await getOAuthStoredToken(token);
|
|
12
12
|
if (!oauthToken || oauthToken.accessToken !== token) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
const dbUser = findUserByUsername(oauthToken.username);
|
|
15
|
+
const dbUser = await findUserByUsername(oauthToken.username);
|
|
16
16
|
return {
|
|
17
17
|
username: oauthToken.username,
|
|
18
18
|
password: '',
|
|
@@ -22,7 +22,7 @@ export const resolveOAuthUserFromToken = (token) => {
|
|
|
22
22
|
/**
|
|
23
23
|
* Resolve an MCPHub user from an Authorization header.
|
|
24
24
|
*/
|
|
25
|
-
export const resolveOAuthUserFromAuthHeader = (authHeader) => {
|
|
25
|
+
export const resolveOAuthUserFromAuthHeader = async (authHeader) => {
|
|
26
26
|
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthBearer.js","sourceRoot":"","sources":["../../src/utils/oauthBearer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,
|
|
1
|
+
{"version":3,"file":"oauthBearer.js","sourceRoot":"","sources":["../../src/utils/oauthBearer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,KAAc,EAAyB,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE7D,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;KAClC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,EACjD,UAAmB,EACI,EAAE;IACzB,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|