@nodetool-ai/deploy 0.7.0-rc.23 → 0.8.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.
Files changed (121) hide show
  1. package/README.md +41 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/admin-client.d.ts +5 -39
  4. package/dist/admin-client.d.ts.map +1 -1
  5. package/dist/admin-client.js +9 -230
  6. package/dist/admin-client.js.map +1 -1
  7. package/dist/api-user-manager.d.ts.map +1 -1
  8. package/dist/api-user-manager.js +5 -2
  9. package/dist/api-user-manager.js.map +1 -1
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +0 -3
  12. package/dist/auth.js.map +1 -1
  13. package/dist/compose.d.ts.map +1 -1
  14. package/dist/compose.js +0 -3
  15. package/dist/compose.js.map +1 -1
  16. package/dist/configure.d.ts +1 -43
  17. package/dist/configure.d.ts.map +1 -1
  18. package/dist/configure.js +2 -43
  19. package/dist/configure.js.map +1 -1
  20. package/dist/deployment-config.d.ts +28 -786
  21. package/dist/deployment-config.d.ts.map +1 -1
  22. package/dist/deployment-config.js +34 -218
  23. package/dist/deployment-config.js.map +1 -1
  24. package/dist/docker-run.d.ts +0 -1
  25. package/dist/docker-run.d.ts.map +1 -1
  26. package/dist/docker-run.js +0 -20
  27. package/dist/docker-run.js.map +1 -1
  28. package/dist/docker.d.ts +6 -21
  29. package/dist/docker.d.ts.map +1 -1
  30. package/dist/docker.js +6 -53
  31. package/dist/docker.js.map +1 -1
  32. package/dist/image-spec.d.ts +1 -1
  33. package/dist/index.d.ts +0 -14
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -17
  36. package/dist/index.js.map +1 -1
  37. package/dist/manager.d.ts.map +1 -1
  38. package/dist/manager.js +0 -44
  39. package/dist/manager.js.map +1 -1
  40. package/dist/progress.d.ts.map +1 -1
  41. package/dist/progress.js +0 -1
  42. package/dist/progress.js.map +1 -1
  43. package/dist/remote-users.d.ts.map +1 -1
  44. package/dist/remote-users.js +1 -4
  45. package/dist/remote-users.js.map +1 -1
  46. package/dist/runpod-rest.d.ts +114 -0
  47. package/dist/runpod-rest.d.ts.map +1 -0
  48. package/dist/runpod-rest.js +150 -0
  49. package/dist/runpod-rest.js.map +1 -0
  50. package/dist/self-hosted.d.ts +17 -43
  51. package/dist/self-hosted.d.ts.map +1 -1
  52. package/dist/self-hosted.js +50 -124
  53. package/dist/self-hosted.js.map +1 -1
  54. package/dist/ssh.d.ts +9 -0
  55. package/dist/ssh.d.ts.map +1 -1
  56. package/dist/ssh.js +1 -5
  57. package/dist/ssh.js.map +1 -1
  58. package/dist/state.d.ts.map +1 -1
  59. package/dist/state.js +1 -11
  60. package/dist/state.js.map +1 -1
  61. package/dist/workflow-syncer.d.ts +3 -32
  62. package/dist/workflow-syncer.d.ts.map +1 -1
  63. package/dist/workflow-syncer.js +3 -162
  64. package/dist/workflow-syncer.js.map +1 -1
  65. package/package.json +29 -14
  66. package/dist/admin-operations.d.ts +0 -197
  67. package/dist/admin-operations.d.ts.map +0 -1
  68. package/dist/admin-operations.js +0 -433
  69. package/dist/admin-operations.js.map +0 -1
  70. package/dist/admin-routes.d.ts +0 -306
  71. package/dist/admin-routes.d.ts.map +0 -1
  72. package/dist/admin-routes.js +0 -383
  73. package/dist/admin-routes.js.map +0 -1
  74. package/dist/collection-routes.d.ts +0 -37
  75. package/dist/collection-routes.d.ts.map +0 -1
  76. package/dist/collection-routes.js +0 -43
  77. package/dist/collection-routes.js.map +0 -1
  78. package/dist/deploy-to-gcp.d.ts +0 -67
  79. package/dist/deploy-to-gcp.d.ts.map +0 -1
  80. package/dist/deploy-to-gcp.js +0 -268
  81. package/dist/deploy-to-gcp.js.map +0 -1
  82. package/dist/deploy-to-runpod.d.ts +0 -53
  83. package/dist/deploy-to-runpod.d.ts.map +0 -1
  84. package/dist/deploy-to-runpod.js +0 -207
  85. package/dist/deploy-to-runpod.js.map +0 -1
  86. package/dist/fly.d.ts +0 -40
  87. package/dist/fly.d.ts.map +0 -1
  88. package/dist/fly.js +0 -291
  89. package/dist/fly.js.map +0 -1
  90. package/dist/gcp.d.ts +0 -59
  91. package/dist/gcp.d.ts.map +0 -1
  92. package/dist/gcp.js +0 -339
  93. package/dist/gcp.js.map +0 -1
  94. package/dist/google-cloud-run-api.d.ts +0 -134
  95. package/dist/google-cloud-run-api.d.ts.map +0 -1
  96. package/dist/google-cloud-run-api.js +0 -532
  97. package/dist/google-cloud-run-api.js.map +0 -1
  98. package/dist/huggingface.d.ts +0 -69
  99. package/dist/huggingface.d.ts.map +0 -1
  100. package/dist/huggingface.js +0 -346
  101. package/dist/huggingface.js.map +0 -1
  102. package/dist/railway.d.ts +0 -65
  103. package/dist/railway.d.ts.map +0 -1
  104. package/dist/railway.js +0 -284
  105. package/dist/railway.js.map +0 -1
  106. package/dist/runpod-api.d.ts +0 -206
  107. package/dist/runpod-api.d.ts.map +0 -1
  108. package/dist/runpod-api.js +0 -703
  109. package/dist/runpod-api.js.map +0 -1
  110. package/dist/runpod.d.ts +0 -82
  111. package/dist/runpod.d.ts.map +0 -1
  112. package/dist/runpod.js +0 -188
  113. package/dist/runpod.js.map +0 -1
  114. package/dist/storage-routes.d.ts +0 -55
  115. package/dist/storage-routes.d.ts.map +0 -1
  116. package/dist/storage-routes.js +0 -160
  117. package/dist/storage-routes.js.map +0 -1
  118. package/dist/sync.d.ts +0 -38
  119. package/dist/sync.d.ts.map +0 -1
  120. package/dist/sync.js +0 -130
  121. package/dist/sync.js.map +0 -1
@@ -1,346 +0,0 @@
1
- /**
2
- * HuggingFace Spaces deployment implementation for NodeTool.
3
- *
4
- * Handles deployment to HuggingFace Spaces (Docker type), including:
5
- * - Dockerfile generation from image spec
6
- * - HF Space repository creation and management
7
- * - Git-based deployment (push Dockerfile to HF repo, Spaces builds it)
8
- * - Space metadata via README.md frontmatter
9
- */
10
- import { execFile } from "node:child_process";
11
- import { promisify } from "node:util";
12
- import * as fs from "node:fs/promises";
13
- import * as path from "node:path";
14
- import * as os from "node:os";
15
- import { loadImageSpec } from "./image-spec.js";
16
- import { generateDockerfile } from "./image-builder.js";
17
- import { StateManager } from "./state.js";
18
- import { DeploymentStatus } from "./deployment-config.js";
19
- const execFileAsync = promisify(execFile);
20
- // ---------------------------------------------------------------------------
21
- // Helpers
22
- // ---------------------------------------------------------------------------
23
- /**
24
- * Run the `huggingface-cli` command and return stdout.
25
- * Throws a descriptive error when the CLI is not installed.
26
- */
27
- async function hfCli(args, opts) {
28
- try {
29
- const { stdout } = await execFileAsync("huggingface-cli", args, {
30
- timeout: opts?.timeout ?? 60_000,
31
- cwd: opts?.cwd
32
- });
33
- return stdout;
34
- }
35
- catch (e) {
36
- const msg = e instanceof Error ? e.message : String(e);
37
- if (msg.includes("ENOENT")) {
38
- throw new Error("huggingface-cli not found. Install it with: pip install huggingface_hub[cli]\n" +
39
- "See https://huggingface.co/docs/huggingface_hub/guides/cli for details.");
40
- }
41
- throw new Error(`huggingface-cli failed: ${msg}`);
42
- }
43
- }
44
- /**
45
- * Run a git command and return stdout.
46
- */
47
- async function git(args, opts) {
48
- try {
49
- const { stdout } = await execFileAsync("git", args, {
50
- timeout: opts?.timeout ?? 60_000,
51
- cwd: opts?.cwd
52
- });
53
- return stdout;
54
- }
55
- catch (e) {
56
- const msg = e instanceof Error ? e.message : String(e);
57
- throw new Error(`git command failed: ${msg}`);
58
- }
59
- }
60
- /**
61
- * Generate the README.md content with HuggingFace Spaces YAML frontmatter.
62
- */
63
- function generateSpaceReadme(deployment) {
64
- const frontmatter = [
65
- "---",
66
- "title: NodeTool",
67
- 'emoji: "\\U0001F527"',
68
- "colorFrom: blue",
69
- "colorTo: purple",
70
- "sdk: docker",
71
- "app_port: 7777"
72
- ];
73
- if (deployment.hardware) {
74
- frontmatter.push(`hardware: ${deployment.hardware}`);
75
- }
76
- frontmatter.push("pinned: false");
77
- frontmatter.push("---");
78
- frontmatter.push("");
79
- return frontmatter.join("\n");
80
- }
81
- // ---------------------------------------------------------------------------
82
- // HuggingFaceDeployer class
83
- // ---------------------------------------------------------------------------
84
- /**
85
- * Handles deployment to HuggingFace Spaces.
86
- *
87
- * HF Spaces with Docker type build from a Dockerfile pushed to a git repo.
88
- * This deployer generates the Dockerfile from the image spec, pushes it to
89
- * the HF Space repository, and lets HuggingFace handle the build and deploy.
90
- */
91
- export class HuggingFaceDeployer {
92
- deploymentName;
93
- deployment;
94
- stateManager;
95
- constructor(deploymentName, deployment, stateManager) {
96
- this.deploymentName = deploymentName;
97
- this.deployment = deployment;
98
- this.stateManager = stateManager ?? new StateManager();
99
- }
100
- // ---------- Public API ----------
101
- /**
102
- * Generate a deployment plan showing what changes will be made.
103
- */
104
- async plan() {
105
- const planResult = {
106
- deployment_name: this.deploymentName,
107
- type: "huggingface",
108
- repo: this.deployment.repo,
109
- changes: [],
110
- will_create: [],
111
- will_update: [],
112
- will_destroy: []
113
- };
114
- const changes = planResult["changes"];
115
- const willCreate = planResult["will_create"];
116
- const currentState = await this.stateManager.readState(this.deploymentName);
117
- if (!currentState || !currentState["last_deployed"]) {
118
- changes.push("Initial deployment - will create HF Space repository");
119
- willCreate.push(`HuggingFace Space: ${this.deployment.repo}`);
120
- willCreate.push("Dockerfile (generated from image spec)");
121
- willCreate.push("README.md (Space metadata)");
122
- }
123
- else {
124
- changes.push("Will update Dockerfile and push to HF Space");
125
- planResult["will_update"].push(`HuggingFace Space: ${this.deployment.repo}`);
126
- }
127
- if (this.deployment.hardware) {
128
- changes.push(`Hardware: ${this.deployment.hardware}`);
129
- }
130
- if (this.deployment.environment) {
131
- const envKeys = Object.keys(this.deployment.environment);
132
- if (envKeys.length > 0) {
133
- changes.push(`Environment variables: ${envKeys.join(", ")}`);
134
- }
135
- }
136
- return planResult;
137
- }
138
- /**
139
- * Apply the deployment to HuggingFace Spaces.
140
- *
141
- * Steps:
142
- * 1. Load image spec and generate Dockerfile (not built locally)
143
- * 2. Create or clone the HF Space repository
144
- * 3. Write Dockerfile and README.md with Space metadata
145
- * 4. Git commit and push to HuggingFace
146
- * 5. HF Spaces auto-builds and deploys from the Dockerfile
147
- * 6. Update deployment state
148
- *
149
- * @param opts.dryRun If true, only show what would be done without executing.
150
- */
151
- async apply(opts) {
152
- if (!/^[\w-]+\/[\w.-]+$/.test(this.deployment.repo)) {
153
- throw new Error(`Invalid HuggingFace repo: "${this.deployment.repo}". Expected "owner/name"`);
154
- }
155
- if (opts?.dryRun) {
156
- return (await this.plan());
157
- }
158
- const results = {
159
- deployment_name: this.deploymentName,
160
- status: "success",
161
- steps: [],
162
- errors: []
163
- };
164
- const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "nodetool-hf-"));
165
- try {
166
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.DEPLOYING);
167
- // 1. Generate Dockerfile from image spec
168
- results.steps.push("Loading image spec...");
169
- const spec = await loadImageSpec(this.deployment.image);
170
- results.steps.push("Generating Dockerfile...");
171
- const dockerfileContent = generateDockerfile(spec);
172
- // 2. Create or clone the HF repo
173
- results.steps.push(`Setting up HuggingFace Space: ${this.deployment.repo}...`);
174
- const token = process.env.HF_TOKEN || process.env.HUGGING_FACE_HUB_TOKEN;
175
- const authArgs = token
176
- ? ["-c", `http.extraHeader=Authorization: Bearer ${token}`]
177
- : [];
178
- await this.ensureRepo(tmpDir, results, authArgs);
179
- const repoDir = path.join(tmpDir, "repo");
180
- // 3. Write Dockerfile
181
- results.steps.push("Writing Dockerfile...");
182
- await fs.writeFile(path.join(repoDir, "Dockerfile"), dockerfileContent, "utf-8");
183
- // 4. Write README.md with Space metadata
184
- results.steps.push("Writing Space metadata (README.md)...");
185
- const readme = generateSpaceReadme(this.deployment);
186
- await fs.writeFile(path.join(repoDir, "README.md"), readme, "utf-8");
187
- // 5. Git commit and push
188
- results.steps.push("Committing and pushing to HuggingFace...");
189
- await git(["config", "user.email", "deploy@nodetool.ai"], {
190
- cwd: repoDir
191
- });
192
- await git(["config", "user.name", "NodeTool Deploy"], { cwd: repoDir });
193
- await git(["add", "-A"], { cwd: repoDir });
194
- // Check if there are changes to commit
195
- try {
196
- await git(["diff", "--cached", "--quiet"], { cwd: repoDir });
197
- results.steps.push("No changes detected, skipping commit");
198
- }
199
- catch {
200
- // diff --quiet exits non-zero when there are changes
201
- await git(["commit", "-m", "Deploy NodeTool via nodetool deploy"], {
202
- cwd: repoDir
203
- });
204
- await git([...authArgs, "push", "origin", "main"], {
205
- cwd: repoDir,
206
- timeout: 120_000
207
- });
208
- results.steps.push("Pushed to HuggingFace Space");
209
- }
210
- results.steps.push("HuggingFace Spaces will now build and deploy the Dockerfile");
211
- // 6. Update state
212
- await this.stateManager.writeState(this.deploymentName, {
213
- status: DeploymentStatus.SERVING,
214
- repo: this.deployment.repo,
215
- space_url: `https://huggingface.co/spaces/${this.deployment.repo}`
216
- });
217
- }
218
- catch (e) {
219
- results.status = "error";
220
- results.errors.push(e instanceof Error ? e.message : String(e));
221
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.ERROR);
222
- throw e;
223
- }
224
- finally {
225
- // Clean up temp directory
226
- try {
227
- await fs.rm(tmpDir, { recursive: true, force: true });
228
- }
229
- catch {
230
- // ignore cleanup errors
231
- }
232
- }
233
- return results;
234
- }
235
- /**
236
- * Destroy the HuggingFace Space.
237
- */
238
- async destroy() {
239
- const results = {
240
- deployment_name: this.deploymentName,
241
- status: "success",
242
- steps: [],
243
- errors: []
244
- };
245
- try {
246
- results.steps.push(`Deleting HuggingFace Space: ${this.deployment.repo}...`);
247
- await hfCli([
248
- "repo",
249
- "delete",
250
- this.deployment.repo,
251
- "--type",
252
- "space",
253
- "--yes"
254
- ]);
255
- results.steps.push("Space deleted successfully");
256
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.DESTROYED);
257
- }
258
- catch (e) {
259
- results.status = "error";
260
- results.errors.push(e instanceof Error ? e.message : String(e));
261
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.ERROR);
262
- throw e;
263
- }
264
- return results;
265
- }
266
- /**
267
- * Get current deployment status.
268
- */
269
- async status() {
270
- const statusInfo = {
271
- deployment_name: this.deploymentName,
272
- type: "huggingface",
273
- repo: this.deployment.repo,
274
- space_url: `https://huggingface.co/spaces/${this.deployment.repo}`
275
- };
276
- // Get state from state manager
277
- const state = await this.stateManager.readState(this.deploymentName);
278
- if (state) {
279
- statusInfo["status"] = state["status"] ?? "unknown";
280
- statusInfo["last_deployed"] = state["last_deployed"];
281
- }
282
- // Try to get live status from HF
283
- try {
284
- const output = await hfCli([
285
- "repo",
286
- "info",
287
- this.deployment.repo,
288
- "--type",
289
- "space"
290
- ]);
291
- statusInfo["live_status"] = output.trim();
292
- }
293
- catch (e) {
294
- statusInfo["live_status_error"] =
295
- e instanceof Error ? e.message : String(e);
296
- }
297
- return statusInfo;
298
- }
299
- /**
300
- * Get logs from the HuggingFace Space.
301
- *
302
- * HuggingFace Spaces does not expose logs via the CLI. Logs are available
303
- * through the web UI at the Space URL.
304
- */
305
- async logs(_opts) {
306
- const spaceUrl = `https://huggingface.co/spaces/${this.deployment.repo}`;
307
- return (`HuggingFace Spaces logs are not available via the CLI.\n` +
308
- `View logs in the web UI: ${spaceUrl}\n` +
309
- `Navigate to the "Logs" tab in your Space settings.`);
310
- }
311
- // ---------- Private helpers ----------
312
- /**
313
- * Ensure the HF Space repository exists and is cloned to the target directory.
314
- * Creates the repo if it does not exist, then clones it.
315
- */
316
- async ensureRepo(targetDir, results, authArgs = []) {
317
- // Try to create the repo (may already exist)
318
- try {
319
- await hfCli([
320
- "repo",
321
- "create",
322
- this.deployment.repo,
323
- "--type",
324
- "space",
325
- "--space_sdk",
326
- "docker",
327
- "--yes"
328
- ]);
329
- results.steps.push(`Created HuggingFace Space: ${this.deployment.repo}`);
330
- }
331
- catch (e) {
332
- const msg = e instanceof Error ? e.message : String(e);
333
- // Ignore "already exists" errors
334
- if (!msg.includes("already exists") && !msg.includes("409")) {
335
- throw e;
336
- }
337
- results.steps.push(`HuggingFace Space already exists: ${this.deployment.repo}`);
338
- }
339
- // Clone into a subdirectory to avoid TOCTOU race on the temp dir
340
- const repoDir = path.join(targetDir, "repo");
341
- const repoUrl = `https://huggingface.co/spaces/${this.deployment.repo}`;
342
- await git([...authArgs, "clone", repoUrl, repoDir], { timeout: 120_000 });
343
- results.steps.push(`Cloned Space repository: ${this.deployment.repo}`);
344
- }
345
- }
346
- //# sourceMappingURL=huggingface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../src/huggingface.ts"],"names":[],"mappings":"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"}
package/dist/railway.d.ts DELETED
@@ -1,65 +0,0 @@
1
- /**
2
- * Railway deployment implementation for NodeTool.
3
- *
4
- * Handles deployment to Railway using the `railway` CLI, including:
5
- * - Docker image building and deployment
6
- * - Environment variable configuration
7
- * - Service management (create, destroy, status, logs)
8
- */
9
- import { StateManager } from "./state.js";
10
- import type { RailwayDeployment } from "./deployment-config.js";
11
- import type { DeployResult } from "./self-hosted.js";
12
- /**
13
- * Handles deployment to Railway.
14
- *
15
- * Orchestrates the entire Railway deployment process including:
16
- * - Docker image building from an image spec
17
- * - Linking to a Railway project
18
- * - Setting environment variables
19
- * - Deploying the service
20
- * - State management
21
- */
22
- export declare class RailwayDeployer {
23
- readonly deploymentName: string;
24
- readonly deployment: RailwayDeployment;
25
- readonly stateManager: StateManager;
26
- constructor(deploymentName: string, deployment: RailwayDeployment, stateManager?: StateManager);
27
- /**
28
- * Generate a deployment plan showing what changes will be made.
29
- */
30
- plan(): Promise<Record<string, unknown>>;
31
- /**
32
- * Apply the deployment to Railway.
33
- *
34
- * Steps:
35
- * 1. Load image spec and build Docker image
36
- * 2. Link to Railway project
37
- * 3. Set environment variables
38
- * 4. Deploy with `railway up`
39
- * 5. Update deployment state
40
- *
41
- * @param opts.dryRun If true, only show what would be done without executing.
42
- */
43
- apply(opts?: {
44
- dryRun?: boolean;
45
- }): Promise<DeployResult>;
46
- /**
47
- * Destroy the Railway service.
48
- */
49
- destroy(): Promise<DeployResult>;
50
- /**
51
- * Get current deployment status from Railway.
52
- */
53
- status(): Promise<Record<string, unknown>>;
54
- /**
55
- * Get logs from the Railway service.
56
- *
57
- * @param opts.follow Stream logs in real time.
58
- * @param opts.tail Number of recent log lines to fetch.
59
- */
60
- logs(opts?: {
61
- follow?: boolean;
62
- tail?: number;
63
- }): Promise<string>;
64
- }
65
- //# sourceMappingURL=railway.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"railway.d.ts","sourceRoot":"","sources":["../src/railway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsCrD;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGlC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,iBAAiB,EAC7B,YAAY,CAAC,EAAE,YAAY;IAS7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuC9C;;;;;;;;;;;OAWG;IACG,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IA0F/D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAgDtC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAqChD;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAgCxE"}