anycloud 0.0.3 → 0.0.5

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 (68) hide show
  1. package/dist/cli/commands/config/edit.js +15 -0
  2. package/dist/cli/commands/config/edit.js.map +1 -1
  3. package/dist/cli/commands/config/list.js +53 -18
  4. package/dist/cli/commands/config/list.js.map +1 -1
  5. package/dist/cli/commands/config/new.js +21 -0
  6. package/dist/cli/commands/config/new.js.map +1 -1
  7. package/dist/cli/commands/config/remove.js +10 -0
  8. package/dist/cli/commands/config/remove.js.map +1 -1
  9. package/dist/cli/commands/credentials/delete.js +10 -0
  10. package/dist/cli/commands/credentials/delete.js.map +1 -1
  11. package/dist/cli/commands/credentials/edit.js +16 -0
  12. package/dist/cli/commands/credentials/edit.js.map +1 -1
  13. package/dist/cli/commands/credentials/list.js +35 -13
  14. package/dist/cli/commands/credentials/list.js.map +1 -1
  15. package/dist/cli/commands/credentials/new.js +25 -0
  16. package/dist/cli/commands/credentials/new.js.map +1 -1
  17. package/dist/cli/commands/daemon/index.js +8 -6
  18. package/dist/cli/commands/daemon/index.js.map +1 -1
  19. package/dist/cli/commands/list.js +70 -19
  20. package/dist/cli/commands/list.js.map +1 -1
  21. package/dist/cli/commands/login.js +10 -0
  22. package/dist/cli/commands/login.js.map +1 -1
  23. package/dist/cli/commands/logs.js +95 -10
  24. package/dist/cli/commands/logs.js.map +1 -1
  25. package/dist/cli/commands/run.js +110 -0
  26. package/dist/cli/commands/run.js.map +1 -0
  27. package/dist/cli/commands/serve.js +15 -0
  28. package/dist/cli/commands/serve.js.map +1 -0
  29. package/dist/cli/commands/status.js +113 -0
  30. package/dist/cli/commands/status.js.map +1 -0
  31. package/dist/cli/commands/terminate.js +122 -8
  32. package/dist/cli/commands/terminate.js.map +1 -1
  33. package/dist/cli/commands/upgrade.js +66 -8
  34. package/dist/cli/commands/upgrade.js.map +1 -1
  35. package/dist/cli/index.js +6 -4
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/cli/services/api-client.js +51 -49
  38. package/dist/cli/services/api-client.js.map +1 -1
  39. package/dist/cli/services/config.js +2 -0
  40. package/dist/cli/services/config.js.map +1 -1
  41. package/dist/cli/services/non-interactive.js +3 -3
  42. package/dist/cli/services/non-interactive.js.map +1 -1
  43. package/dist/cli/services/oauth.js +4 -5
  44. package/dist/cli/services/oauth.js.map +1 -1
  45. package/dist/cli/utils/env-parser.js +27 -0
  46. package/dist/cli/utils/env-parser.js.map +1 -0
  47. package/dist/cli/utils/output.js +42 -0
  48. package/dist/cli/utils/output.js.map +1 -1
  49. package/dist/daemon/cluster.js +122 -17
  50. package/dist/daemon/cluster.js.map +1 -1
  51. package/dist/daemon/docker.js +62 -21
  52. package/dist/daemon/docker.js.map +1 -1
  53. package/dist/daemon/preemption.js +127 -0
  54. package/dist/daemon/preemption.js.map +1 -0
  55. package/dist/daemon/server.js +128 -16
  56. package/dist/daemon/server.js.map +1 -1
  57. package/dist/shared/assets/clouds/azure/regions-per-type.json +21584 -1117
  58. package/dist/shared/id-generator.js +20 -0
  59. package/dist/shared/id-generator.js.map +1 -0
  60. package/dist/shared/types.js +5 -1
  61. package/dist/shared/types.js.map +1 -1
  62. package/package.json +16 -8
  63. package/dist/cli/commands/daemon/start.js +0 -32
  64. package/dist/cli/commands/daemon/start.js.map +0 -1
  65. package/dist/cli/commands/job.js +0 -71
  66. package/dist/cli/commands/job.js.map +0 -1
  67. package/dist/cli/commands/new.js +0 -15
  68. package/dist/cli/commands/new.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ import { uniqueNamesGenerator, animals, NumberDictionary, colors, } from 'unique-names-generator';
2
+ const NUMBER_DICT = NumberDictionary.generate({ min: 1, max: 99 });
3
+ /**
4
+ * Generate a unique server/app ID using readable names
5
+ * Example: "blue-dolphin-42"
6
+ */
7
+ export function generateServerId() {
8
+ return uniqueNamesGenerator({
9
+ dictionaries: [colors, animals, NUMBER_DICT],
10
+ separator: '-',
11
+ });
12
+ }
13
+ /**
14
+ * Generate a unique job ID using timestamp
15
+ * Example: "anycloud-1732019234567"
16
+ */
17
+ export function generateJobId() {
18
+ return `anycloud-${Date.now()}`;
19
+ }
20
+ //# sourceMappingURL=id-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/shared/id-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,MAAM,GACP,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,CAAC;QAC1B,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;QAC5C,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAClC,CAAC"}
@@ -15,7 +15,7 @@ export var CloudType;
15
15
  // Deployment type enum
16
16
  export var DeploymentType;
17
17
  (function (DeploymentType) {
18
- DeploymentType["App"] = "app";
18
+ DeploymentType["Server"] = "server";
19
19
  DeploymentType["Job"] = "job";
20
20
  })(DeploymentType || (DeploymentType = {}));
21
21
  // Credential classes
@@ -78,4 +78,8 @@ export class CloudConfig {
78
78
  return USRegions.length ? USRegions[0] : regionsPerType[0];
79
79
  }
80
80
  }
81
+ // GET /health - Daemon basic health check
82
+ // Response: 200 status code if healthy
83
+ // GET /deploymentHealth - Daemon detailed health check
84
+ // Response: 200 status code if container running and healthy
81
85
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,iBAAiB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,OAAO,KAAK,iBAAiB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEzG,sBAAsB;AACtB,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,4BAAe,CAAA;AACjB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,uBAAuB;AACvB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,6BAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAKD,qBAAqB;AACrB,MAAM,OAAO,QAAQ;CAGpB;AAED,MAAM,OAAO,QAAQ;CAIpB;AAED,MAAM,OAAO,UAAU;CAKtB;AAoBD,oEAAoE;AACpE,0BAA0B;AAC1B,kFAAkF;AAClF,MAAM,4BAA4B,GAAG;IACnC,GAAG,EAAE;QACH,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,UAAU;KACnB;IACD,GAAG,EAAE;QACH,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,UAAU;KACnB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,cAAc;KACvB;CACF,CAAC;AAEF,4BAA4B;AAC5B,MAAM,OAAO,WAAW;IAStB,MAAM,CAAC,wBAAwB,CAAC,MAAmB;QACjD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,yCAAyC;YACzC,MAAM,CAAC,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;YAC1E,MAAM,CAAC,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAC5E,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,8BAA8B;YAC9B,8EAA8E;YAC9E,+DAA+D;YAC/D,MAAM,CAAC,MAAM,GAAG,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAC5E,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,qCAAqC;YACrC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAC3C,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,aAAa,CACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAAc,EAAE,aAAqB;QAC5D,QAAQ,aAAa,EAAE,CAAC;YACtB,KAAK,SAAS,CAAC,GAAG;gBAChB,OAAO,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnE,KAAK,SAAS,CAAC,GAAG;gBAChB,OAAO,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnE,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,WAAW,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,cAAwB;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF;AA2ID,0CAA0C;AAC1C,uCAAuC;AAEvC,uDAAuD;AACvD,6DAA6D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "anycloud",
3
- "version": "0.0.3",
4
- "description": "Deploy containers to any cloud provider",
3
+ "version": "0.0.5",
4
+ "description": "Deploy containerized jobs and servers to any cloud provider",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
7
7
  "bin": {
@@ -21,16 +21,20 @@
21
21
  "start": "yarn build && wrangler dev",
22
22
  "deploy:staging": "wrangler deploy --env staging",
23
23
  "deploy:production": "wrangler deploy --env production",
24
- "cli": "yarn build && node ./dist/cli/index.js",
24
+ "cli": "node ./dist/cli/index.js",
25
+ "cli:staging": "CONDUCTOR_URL=https://conductor.laplazahealth.org node ./dist/cli/index.js",
25
26
  "start:conductor": "node ./dist/conductor/server.js",
26
- "test": "vitest run",
27
- "test:watch": "vitest",
28
- "test:integration": "yarn test:daemon",
27
+ "test": "LOCAL=true vitest run",
28
+ "test:watch": "LOCAL=true vitest",
29
+ "test:integration": "yarn test:daemon && yarn test:preemption",
29
30
  "terminate": "export $(cat .dev.vars.staging | xargs) && ts-node-dev scripts/forceTerminate.ts",
30
31
  "watch:daemon": "ts-node-dev src/cli/index.ts daemon start",
31
32
  "test:daemon": "bash test/integration/daemon-basic.test.sh",
32
- "test:e2e": "bash test/integration/e2e.test.sh",
33
- "test:e2e:azure": "bash test/integration/e2e-azure.test.sh",
33
+ "test:daemon:private": "gh auth refresh --scopes write:packages,read:packages && GITHUB_TOKEN=$(gh auth token) bash test/integration/daemon-private-image.test.sh",
34
+ "test:preemption": "bash test/integration/daemon-preemption.test.sh",
35
+ "test:vmstartup": "bash test/integration/vmstartup.test.sh",
36
+ "test:conductor": "bash test/integration/conductor-startup.test.sh",
37
+ "test:e2e:azure": "bash scripts/test-jobs-integration-azure.sh",
34
38
  "test:all": "yarn test && yarn test:integration",
35
39
  "style": "yarn eslint . --ext .js,.ts && yarn prettier --check .",
36
40
  "fmt": "yarn prettier --write .",
@@ -46,18 +50,22 @@
46
50
  "@cloudflare/containers": "^0.0.30",
47
51
  "@google-cloud/compute": "^6.4.0",
48
52
  "@octokit/rest": "^21.0.2",
53
+ "@types/dotenv": "^8.2.3",
49
54
  "@types/express": "^5.0.5",
50
55
  "@types/node": "^22.0.0",
51
56
  "axios": "^1.6.0",
52
57
  "chalk": "^5.6.2",
58
+ "cli-table3": "^0.6.5",
53
59
  "commander": "^14.0.2",
54
60
  "dockerode": "^4.0.0",
61
+ "dotenv": "^17.2.3",
55
62
  "express": "^5.1.0",
56
63
  "gce-images": "^5.0.0",
57
64
  "ini": "^6.0.0",
58
65
  "node-forge": "^1.3.0",
59
66
  "open": "^10.2.0",
60
67
  "ora": "^9.0.0",
68
+ "posthog-node": "^5.11.2",
61
69
  "prompts": "^2.4.2",
62
70
  "semver": "^7.6.3",
63
71
  "systeminformation": "^5.21.0",
@@ -1,32 +0,0 @@
1
- import { Command } from 'commander';
2
- import { startServer } from '../../../daemon/server.js';
3
- import { log } from '../../../daemon/logger.js';
4
- export function createStartCommand() {
5
- return new Command('start')
6
- .description('Start the AnyCloud daemon')
7
- .argument('<cluster-secret>', 'Cluster secret for authentication')
8
- .argument('<conductor-url>', 'URL of the conductor to connect to')
9
- .requiredOption('--deployment-type <type>', 'Deployment type: app or job')
10
- .action(async (clusterSecret, conductorUrl, options) => {
11
- try {
12
- // Validate deployment type
13
- if (options.deploymentType !== 'app' &&
14
- options.deploymentType !== 'job') {
15
- log.error('Invalid deployment type. Must be either "app" or "job"');
16
- process.exit(1);
17
- }
18
- const deploymentType = options.deploymentType;
19
- log.info('Starting AnyCloud Daemon', {
20
- deploymentType,
21
- nodeVersion: process.version,
22
- });
23
- await startServer(clusterSecret, conductorUrl);
24
- log.info('Daemon started successfully');
25
- }
26
- catch (error) {
27
- log.error('Failed to start daemon', error);
28
- process.exit(1);
29
- }
30
- });
31
- }
32
- //# sourceMappingURL=start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAGhD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;SACjE,QAAQ,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SACjE,cAAc,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;SACzE,MAAM,CACL,KAAK,EACH,aAAqB,EACrB,YAAoB,EACpB,OAAmC,EACnC,EAAE;QACF,IAAI,CAAC;YACH,2BAA2B;YAC3B,IACE,OAAO,CAAC,cAAc,KAAK,KAAK;gBAChC,OAAO,CAAC,cAAc,KAAK,KAAK,EAChC,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,cAAqC,CAAC;YAErE,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACnC,cAAc;gBACd,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,MAAM,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAE/C,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1,71 +0,0 @@
1
- import { Command } from 'commander';
2
- import prompts from 'prompts';
3
- import { getGitHubToken } from '../services/auth.js';
4
- import { resolveDeploymentProfile, loadDeploymentProfiles, } from '../services/config.js';
5
- import { createDeployment } from '../services/api-client.js';
6
- import { printInfo, printError, createSpinner } from '../utils/output.js';
7
- import { isNonInteractive, getDeployProfileFromEnv, } from '../services/non-interactive.js';
8
- export function createJobCommand() {
9
- return new Command('job')
10
- .description('Create a new job deployment')
11
- .argument('<image>', 'Container image (e.g., alpine:latest, ghcr.io/user/job:latest)')
12
- .option('--deploy <profile>', 'Deployment profile name from anycloud.json')
13
- .requiredOption('--name <name>', 'Job name')
14
- .action(async (image, options) => {
15
- try {
16
- printInfo(`Creating job deployment for image: ${image}`);
17
- // Determine deployment profile
18
- let deployProfile = options.deploy;
19
- // Check for environment variable in non-interactive mode
20
- if (!deployProfile && isNonInteractive()) {
21
- deployProfile = getDeployProfileFromEnv();
22
- if (!deployProfile) {
23
- printError('Non-interactive mode: Deployment profile required.\n' +
24
- ' Provide --deploy flag or set ANYCLOUD_DEPLOY_PROFILE environment variable.');
25
- process.exit(1);
26
- }
27
- }
28
- // If --deploy not provided and not in non-interactive mode, prompt for profile selection
29
- if (!deployProfile) {
30
- const profiles = await loadDeploymentProfiles();
31
- const profileNames = Object.keys(profiles);
32
- if (profileNames.length === 0) {
33
- printError('No deployment profiles found in anycloud.json');
34
- printInfo('Please create anycloud.json with deployment profiles.');
35
- process.exit(1);
36
- }
37
- const selection = await prompts({
38
- type: 'select',
39
- name: 'profile',
40
- message: 'Select deployment profile:',
41
- choices: profileNames.map((name) => ({
42
- title: name,
43
- value: name,
44
- description: `${profiles[name].length} config(s)`,
45
- })),
46
- });
47
- if (!selection.profile) {
48
- process.exit(0); // User cancelled
49
- }
50
- deployProfile = selection.profile;
51
- }
52
- printInfo(`Using deployment profile: ${deployProfile}`);
53
- // Get GitHub token
54
- const accessToken = await getGitHubToken();
55
- // Resolve deployment profile and credentials
56
- const deployConfig = await resolveDeploymentProfile(deployProfile);
57
- // Create deployment with hardcoded 'job' type
58
- const spinner = createSpinner('Creating job deployment...').start();
59
- const response = await createDeployment(image, deployConfig, accessToken, options.name, 'job');
60
- spinner.succeed('Job deployment created!');
61
- console.log('');
62
- printInfo(`Job ID: ${response.clusterId}`);
63
- console.log('');
64
- }
65
- catch (error) {
66
- printError(`Failed to create job deployment: ${error.message}`);
67
- process.exit(1);
68
- }
69
- });
70
- }
71
- //# sourceMappingURL=job.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/cli/commands/job.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { Command } from 'commander';
2
- import { printError } from '../utils/output.js';
3
- export function createNewCommand() {
4
- return new Command('new')
5
- .description('Create a new app deployment (not yet supported)')
6
- .argument('<image>', 'Container image (e.g., nginx:alpine, ghcr.io/user/repo:latest)')
7
- .option('--deploy <profile>', 'Deployment profile name from anycloud.json')
8
- .option('--name <name>', 'Deployment name')
9
- .action(() => {
10
- printError('App deployments are not yet supported.');
11
- printError('Use "anycloud job" for job deployments.');
12
- process.exit(1);
13
- });
14
- }
15
- //# sourceMappingURL=new.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CACP,SAAS,EACT,gEAAgE,CACjE;SACA,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;SAC1C,MAAM,CAAC,GAAG,EAAE;QACX,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACrD,UAAU,CAAC,yCAAyC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}