@burdenoff/vibe-agent 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.
- package/.env.example +8 -0
- package/LICENSE +22 -0
- package/README.md +290 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +445 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1043 -0
- package/dist/cli.js.map +1 -0
- package/dist/db/schema.d.ts +145 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +536 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/ModuleAuth.d.ts +61 -0
- package/dist/middleware/ModuleAuth.d.ts.map +1 -0
- package/dist/middleware/ModuleAuth.js +220 -0
- package/dist/middleware/ModuleAuth.js.map +1 -0
- package/dist/middleware/auth.d.ts +3 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +11 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/migrations/remove-notes-prompts.d.ts +13 -0
- package/dist/migrations/remove-notes-prompts.d.ts.map +1 -0
- package/dist/migrations/remove-notes-prompts.js +148 -0
- package/dist/migrations/remove-notes-prompts.js.map +1 -0
- package/dist/routes/bookmarks.d.ts +3 -0
- package/dist/routes/bookmarks.d.ts.map +1 -0
- package/dist/routes/bookmarks.js +186 -0
- package/dist/routes/bookmarks.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +108 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/files.d.ts +3 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +471 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/git.d.ts +3 -0
- package/dist/routes/git.d.ts.map +1 -0
- package/dist/routes/git.js +498 -0
- package/dist/routes/git.js.map +1 -0
- package/dist/routes/moduleRegistry.d.ts +41 -0
- package/dist/routes/moduleRegistry.d.ts.map +1 -0
- package/dist/routes/moduleRegistry.js +356 -0
- package/dist/routes/moduleRegistry.js.map +1 -0
- package/dist/routes/notifications.d.ts +3 -0
- package/dist/routes/notifications.d.ts.map +1 -0
- package/dist/routes/notifications.js +250 -0
- package/dist/routes/notifications.js.map +1 -0
- package/dist/routes/port-forward.d.ts +3 -0
- package/dist/routes/port-forward.d.ts.map +1 -0
- package/dist/routes/port-forward.js +205 -0
- package/dist/routes/port-forward.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +442 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/ssh.d.ts +3 -0
- package/dist/routes/ssh.d.ts.map +1 -0
- package/dist/routes/ssh.js +192 -0
- package/dist/routes/ssh.js.map +1 -0
- package/dist/routes/tasks.d.ts +3 -0
- package/dist/routes/tasks.d.ts.map +1 -0
- package/dist/routes/tasks.js +183 -0
- package/dist/routes/tasks.js.map +1 -0
- package/dist/routes/tmux.d.ts +3 -0
- package/dist/routes/tmux.d.ts.map +1 -0
- package/dist/routes/tmux.js +1191 -0
- package/dist/routes/tmux.js.map +1 -0
- package/dist/routes/tunnel.d.ts +25 -0
- package/dist/routes/tunnel.d.ts.map +1 -0
- package/dist/routes/tunnel.js +449 -0
- package/dist/routes/tunnel.js.map +1 -0
- package/dist/services/ModulePermissions.d.ts +100 -0
- package/dist/services/ModulePermissions.d.ts.map +1 -0
- package/dist/services/ModulePermissions.js +312 -0
- package/dist/services/ModulePermissions.js.map +1 -0
- package/dist/services/ModuleRegistryService.d.ts +152 -0
- package/dist/services/ModuleRegistryService.d.ts.map +1 -0
- package/dist/services/ModuleRegistryService.js +522 -0
- package/dist/services/ModuleRegistryService.js.map +1 -0
- package/dist/services/agent.service.d.ts +19 -0
- package/dist/services/agent.service.d.ts.map +1 -0
- package/dist/services/agent.service.js +88 -0
- package/dist/services/agent.service.js.map +1 -0
- package/dist/services/bootstrap.d.ts +22 -0
- package/dist/services/bootstrap.d.ts.map +1 -0
- package/dist/services/bootstrap.js +206 -0
- package/dist/services/bootstrap.js.map +1 -0
- package/dist/services/service-manager.d.ts +50 -0
- package/dist/services/service-manager.d.ts.map +1 -0
- package/dist/services/service-manager.js +382 -0
- package/dist/services/service-manager.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.service.js","sourceRoot":"","sources":["../../src/services/agent.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface BootstrapResult {
|
|
2
|
+
tool: string;
|
|
3
|
+
status: 'installed' | 'already_present' | 'failed';
|
|
4
|
+
version?: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Run full bootstrap - installs all required dependencies.
|
|
9
|
+
* Safe to run multiple times (idempotent).
|
|
10
|
+
*/
|
|
11
|
+
export declare function bootstrap(options?: {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
}): Promise<BootstrapResult[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Check which dependencies are available without installing.
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkDependencies(): Record<string, {
|
|
18
|
+
available: boolean;
|
|
19
|
+
version?: string;
|
|
20
|
+
}>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/services/bootstrap.ts"],"names":[],"mappings":"AAeA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwJD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA4B3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAa5F"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bootstrap Service
|
|
3
|
+
*
|
|
4
|
+
* Auto-installs all required system dependencies for the vibecontrols-agent:
|
|
5
|
+
* - tmux (terminal multiplexer)
|
|
6
|
+
* - ttyd (terminal web server)
|
|
7
|
+
* - cloudflared (Cloudflare tunnel)
|
|
8
|
+
* - bun (runtime - if not already present)
|
|
9
|
+
*
|
|
10
|
+
* Detects OS and uses appropriate package manager.
|
|
11
|
+
*/
|
|
12
|
+
import { execSync } from 'child_process';
|
|
13
|
+
import { platform, arch } from 'os';
|
|
14
|
+
const execOpts = { stdio: 'pipe', timeout: 120000 };
|
|
15
|
+
function commandExists(cmd) {
|
|
16
|
+
try {
|
|
17
|
+
execSync(`which ${cmd}`, execOpts);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function getVersion(cmd, flag = '--version') {
|
|
25
|
+
try {
|
|
26
|
+
return execSync(`${cmd} ${flag}`, execOpts).toString().trim().split('\n')[0];
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return 'unknown';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function isRoot() {
|
|
33
|
+
try {
|
|
34
|
+
return execSync('id -u', execOpts).toString().trim() === '0';
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function sudo(cmd) {
|
|
41
|
+
return isRoot() ? cmd : `sudo ${cmd}`;
|
|
42
|
+
}
|
|
43
|
+
function detectPackageManager() {
|
|
44
|
+
if (commandExists('apt-get'))
|
|
45
|
+
return 'apt';
|
|
46
|
+
if (commandExists('dnf'))
|
|
47
|
+
return 'dnf';
|
|
48
|
+
if (commandExists('yum'))
|
|
49
|
+
return 'yum';
|
|
50
|
+
if (commandExists('apk'))
|
|
51
|
+
return 'apk';
|
|
52
|
+
if (commandExists('brew'))
|
|
53
|
+
return 'brew';
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
function installTmux() {
|
|
57
|
+
if (commandExists('tmux')) {
|
|
58
|
+
return { tool: 'tmux', status: 'already_present', version: getVersion('tmux', '-V') };
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const pm = detectPackageManager();
|
|
62
|
+
switch (pm) {
|
|
63
|
+
case 'apt':
|
|
64
|
+
execSync(sudo('apt-get update -qq && apt-get install -y -qq tmux'), { ...execOpts, timeout: 180000 });
|
|
65
|
+
break;
|
|
66
|
+
case 'dnf':
|
|
67
|
+
case 'yum':
|
|
68
|
+
execSync(sudo(`${pm} install -y tmux`), execOpts);
|
|
69
|
+
break;
|
|
70
|
+
case 'apk':
|
|
71
|
+
execSync(sudo('apk add --no-cache tmux'), execOpts);
|
|
72
|
+
break;
|
|
73
|
+
case 'brew':
|
|
74
|
+
execSync('brew install tmux', execOpts);
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
return { tool: 'tmux', status: 'failed', error: 'Unknown package manager' };
|
|
78
|
+
}
|
|
79
|
+
return { tool: 'tmux', status: 'installed', version: getVersion('tmux', '-V') };
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
return { tool: 'tmux', status: 'failed', error: e.message };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function installTtyd() {
|
|
86
|
+
if (commandExists('ttyd')) {
|
|
87
|
+
return { tool: 'ttyd', status: 'already_present', version: getVersion('ttyd', '--version') };
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
const pm = detectPackageManager();
|
|
91
|
+
const osArch = arch();
|
|
92
|
+
// Try package manager first
|
|
93
|
+
if (pm === 'apt') {
|
|
94
|
+
try {
|
|
95
|
+
execSync(sudo('apt-get update -qq && apt-get install -y -qq ttyd'), { ...execOpts, timeout: 180000 });
|
|
96
|
+
if (commandExists('ttyd')) {
|
|
97
|
+
return { tool: 'ttyd', status: 'installed', version: getVersion('ttyd', '--version') };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Fall through to binary download
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Download pre-built binary
|
|
105
|
+
const archMap = { x64: 'x86_64', arm64: 'aarch64', arm: 'armhf' };
|
|
106
|
+
const ttydArch = archMap[osArch] || 'x86_64';
|
|
107
|
+
const url = `https://github.com/tsl0922/ttyd/releases/latest/download/ttyd.${ttydArch}`;
|
|
108
|
+
execSync(`curl -fsSL "${url}" -o /tmp/ttyd && chmod +x /tmp/ttyd`, { ...execOpts, timeout: 60000 });
|
|
109
|
+
execSync(sudo('mv /tmp/ttyd /usr/local/bin/ttyd'), execOpts);
|
|
110
|
+
return { tool: 'ttyd', status: 'installed', version: getVersion('ttyd', '--version') };
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
return { tool: 'ttyd', status: 'failed', error: e.message };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function installCloudflared() {
|
|
117
|
+
if (commandExists('cloudflared')) {
|
|
118
|
+
return { tool: 'cloudflared', status: 'already_present', version: getVersion('cloudflared', '--version') };
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const os = platform();
|
|
122
|
+
const osArch = arch();
|
|
123
|
+
if (os === 'linux') {
|
|
124
|
+
const archMap = { x64: 'amd64', arm64: 'arm64', arm: 'arm' };
|
|
125
|
+
const cfArch = archMap[osArch] || 'amd64';
|
|
126
|
+
const url = `https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${cfArch}`;
|
|
127
|
+
execSync(`curl -fsSL "${url}" -o /tmp/cloudflared && chmod +x /tmp/cloudflared`, { ...execOpts, timeout: 60000 });
|
|
128
|
+
execSync(sudo('mv /tmp/cloudflared /usr/local/bin/cloudflared'), execOpts);
|
|
129
|
+
}
|
|
130
|
+
else if (os === 'darwin') {
|
|
131
|
+
if (commandExists('brew')) {
|
|
132
|
+
execSync('brew install cloudflared', { ...execOpts, timeout: 180000 });
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
return { tool: 'cloudflared', status: 'failed', error: 'Install Homebrew first or download manually' };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
return { tool: 'cloudflared', status: 'failed', error: `Unsupported OS: ${os}` };
|
|
140
|
+
}
|
|
141
|
+
return { tool: 'cloudflared', status: 'installed', version: getVersion('cloudflared', '--version') };
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
return { tool: 'cloudflared', status: 'failed', error: e.message };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function installBun() {
|
|
148
|
+
if (commandExists('bun')) {
|
|
149
|
+
return { tool: 'bun', status: 'already_present', version: getVersion('bun', '--version') };
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
execSync('curl -fsSL https://bun.sh/install | bash', { ...execOpts, timeout: 120000 });
|
|
153
|
+
return { tool: 'bun', status: 'installed', version: getVersion('bun', '--version') };
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
return { tool: 'bun', status: 'failed', error: e.message };
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Run full bootstrap - installs all required dependencies.
|
|
161
|
+
* Safe to run multiple times (idempotent).
|
|
162
|
+
*/
|
|
163
|
+
export async function bootstrap(options) {
|
|
164
|
+
const verbose = options?.verbose ?? true;
|
|
165
|
+
const results = [];
|
|
166
|
+
const tools = [
|
|
167
|
+
{ name: 'bun', installer: installBun },
|
|
168
|
+
{ name: 'tmux', installer: installTmux },
|
|
169
|
+
{ name: 'ttyd', installer: installTtyd },
|
|
170
|
+
{ name: 'cloudflared', installer: installCloudflared },
|
|
171
|
+
];
|
|
172
|
+
for (const tool of tools) {
|
|
173
|
+
if (verbose)
|
|
174
|
+
process.stdout.write(` Checking ${tool.name}... `);
|
|
175
|
+
const result = tool.installer();
|
|
176
|
+
results.push(result);
|
|
177
|
+
if (verbose) {
|
|
178
|
+
if (result.status === 'already_present') {
|
|
179
|
+
console.log(`✅ already installed (${result.version})`);
|
|
180
|
+
}
|
|
181
|
+
else if (result.status === 'installed') {
|
|
182
|
+
console.log(`📦 installed (${result.version})`);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.log(`❌ failed: ${result.error}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return results;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check which dependencies are available without installing.
|
|
193
|
+
*/
|
|
194
|
+
export function checkDependencies() {
|
|
195
|
+
const deps = ['bun', 'tmux', 'ttyd', 'cloudflared'];
|
|
196
|
+
const result = {};
|
|
197
|
+
for (const dep of deps) {
|
|
198
|
+
const available = commandExists(dep);
|
|
199
|
+
result[dep] = {
|
|
200
|
+
available,
|
|
201
|
+
version: available ? getVersion(dep, dep === 'tmux' ? '-V' : '--version') : undefined,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/services/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AgentConfig } from './agent.service.js';
|
|
2
|
+
export interface ProcessInfo {
|
|
3
|
+
name: string;
|
|
4
|
+
pid: number;
|
|
5
|
+
port: number;
|
|
6
|
+
config: AgentConfig;
|
|
7
|
+
startTime: string;
|
|
8
|
+
status: 'running' | 'stopped' | 'unknown';
|
|
9
|
+
}
|
|
10
|
+
export interface LogOptions {
|
|
11
|
+
follow: boolean;
|
|
12
|
+
tail: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class ServiceManager {
|
|
15
|
+
private registryPath;
|
|
16
|
+
private logsDir;
|
|
17
|
+
constructor();
|
|
18
|
+
startDaemon(config: AgentConfig): Promise<void>;
|
|
19
|
+
stop(name: string): Promise<void>;
|
|
20
|
+
restart(name: string, config: AgentConfig): Promise<void>;
|
|
21
|
+
stopAll(): Promise<void>;
|
|
22
|
+
kill(name: string): Promise<void>;
|
|
23
|
+
killAll(): Promise<void>;
|
|
24
|
+
getStatus(name: string): Promise<ProcessInfo | null>;
|
|
25
|
+
getStatusAll(): Promise<ProcessInfo[]>;
|
|
26
|
+
listInstances(): Promise<ProcessInfo[]>;
|
|
27
|
+
showLogs(name: string, options: LogOptions): Promise<void>;
|
|
28
|
+
checkHealth(name: string): Promise<{
|
|
29
|
+
healthy: boolean;
|
|
30
|
+
details: any;
|
|
31
|
+
}>;
|
|
32
|
+
checkHealthAll(): Promise<{
|
|
33
|
+
[name: string]: {
|
|
34
|
+
healthy: boolean;
|
|
35
|
+
details: any;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
setConfig(key: string, value: string): Promise<void>;
|
|
39
|
+
getConfig(key?: string): Promise<any>;
|
|
40
|
+
private loadRegistry;
|
|
41
|
+
private saveRegistry;
|
|
42
|
+
private saveProcessInfo;
|
|
43
|
+
private updateProcessStatus;
|
|
44
|
+
private findProcessByName;
|
|
45
|
+
private getRunningProcesses;
|
|
46
|
+
private isProcessRunning;
|
|
47
|
+
private killProcessTree;
|
|
48
|
+
private appendToLog;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=service-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-manager.d.ts","sourceRoot":"","sources":["../../src/services/service-manager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;;IAYlB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE/C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKpD,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAetC,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;IAwBtE,cAAc,IAAI,OAAO,CAAC;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,GAAG,CAAA;SAAE,CAAA;KAAE,CAAC;IAWjF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAY7B,YAAY;YAcZ,YAAY;YAIZ,eAAe;YAoBf,mBAAmB;YAUnB,iBAAiB;YAejB,mBAAmB;YAKnB,gBAAgB;YAUhB,eAAe;IAoB7B,OAAO,CAAC,WAAW;CASpB"}
|