@stellar-agent-services/provider-kit 0.0.0-stage → 0.1.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.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +506 -2
  3. package/dist/approve/assets/index-BazIJAI2.css +1 -0
  4. package/dist/approve/assets/index-CL28cSJy.js +420 -0
  5. package/dist/approve/favicon.svg +1 -0
  6. package/dist/approve/index.html +18 -0
  7. package/dist/cli/approval-view.d.ts +80 -0
  8. package/dist/cli/approval-view.d.ts.map +1 -0
  9. package/dist/cli/approval-view.js +5 -0
  10. package/dist/cli/approval-view.js.map +1 -0
  11. package/dist/cli/approval.d.ts +132 -0
  12. package/dist/cli/approval.d.ts.map +1 -0
  13. package/dist/cli/approval.js +542 -0
  14. package/dist/cli/approval.js.map +1 -0
  15. package/dist/cli/check.d.ts +3 -0
  16. package/dist/cli/check.d.ts.map +1 -0
  17. package/dist/cli/check.js +137 -0
  18. package/dist/cli/check.js.map +1 -0
  19. package/dist/cli/dev-account.d.ts +28 -0
  20. package/dist/cli/dev-account.d.ts.map +1 -0
  21. package/dist/cli/dev-account.js +62 -0
  22. package/dist/cli/dev-account.js.map +1 -0
  23. package/dist/cli/dev.d.ts +27 -0
  24. package/dist/cli/dev.d.ts.map +1 -0
  25. package/dist/cli/dev.js +226 -0
  26. package/dist/cli/dev.js.map +1 -0
  27. package/dist/cli/discovery.d.ts +20 -0
  28. package/dist/cli/discovery.d.ts.map +1 -0
  29. package/dist/cli/discovery.js +202 -0
  30. package/dist/cli/discovery.js.map +1 -0
  31. package/dist/cli/env-file.d.ts +16 -0
  32. package/dist/cli/env-file.d.ts.map +1 -0
  33. package/dist/cli/env-file.js +77 -0
  34. package/dist/cli/env-file.js.map +1 -0
  35. package/dist/cli/fly.d.ts +28 -0
  36. package/dist/cli/fly.d.ts.map +1 -0
  37. package/dist/cli/fly.js +92 -0
  38. package/dist/cli/fly.js.map +1 -0
  39. package/dist/cli/index.d.ts +3 -0
  40. package/dist/cli/index.d.ts.map +1 -0
  41. package/dist/cli/index.js +11 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/cli/init.d.ts +3 -0
  44. package/dist/cli/init.d.ts.map +1 -0
  45. package/dist/cli/init.js +170 -0
  46. package/dist/cli/init.js.map +1 -0
  47. package/dist/cli/launch.d.ts +21 -0
  48. package/dist/cli/launch.d.ts.map +1 -0
  49. package/dist/cli/launch.js +627 -0
  50. package/dist/cli/launch.js.map +1 -0
  51. package/dist/cli/main.d.ts +2 -0
  52. package/dist/cli/main.d.ts.map +1 -0
  53. package/dist/cli/main.js +158 -0
  54. package/dist/cli/main.js.map +1 -0
  55. package/dist/cli/owner-chain.d.ts +88 -0
  56. package/dist/cli/owner-chain.d.ts.map +1 -0
  57. package/dist/cli/owner-chain.js +284 -0
  58. package/dist/cli/owner-chain.js.map +1 -0
  59. package/dist/cli/owner-steps.d.ts +33 -0
  60. package/dist/cli/owner-steps.d.ts.map +1 -0
  61. package/dist/cli/owner-steps.js +121 -0
  62. package/dist/cli/owner-steps.js.map +1 -0
  63. package/dist/cli/processes.d.ts +47 -0
  64. package/dist/cli/processes.d.ts.map +1 -0
  65. package/dist/cli/processes.js +129 -0
  66. package/dist/cli/processes.js.map +1 -0
  67. package/dist/cli/reconcile.d.ts +3 -0
  68. package/dist/cli/reconcile.d.ts.map +1 -0
  69. package/dist/cli/reconcile.js +76 -0
  70. package/dist/cli/reconcile.js.map +1 -0
  71. package/dist/cli/register.d.ts +9 -0
  72. package/dist/cli/register.d.ts.map +1 -0
  73. package/dist/cli/register.js +209 -0
  74. package/dist/cli/register.js.map +1 -0
  75. package/dist/cli/request-validation.d.ts +5 -0
  76. package/dist/cli/request-validation.d.ts.map +1 -0
  77. package/dist/cli/request-validation.js +144 -0
  78. package/dist/cli/request-validation.js.map +1 -0
  79. package/dist/cli/serve.d.ts +25 -0
  80. package/dist/cli/serve.d.ts.map +1 -0
  81. package/dist/cli/serve.js +73 -0
  82. package/dist/cli/serve.js.map +1 -0
  83. package/dist/cli/shared.d.ts +142 -0
  84. package/dist/cli/shared.d.ts.map +1 -0
  85. package/dist/cli/shared.js +110 -0
  86. package/dist/cli/shared.js.map +1 -0
  87. package/dist/cli/status.d.ts +32 -0
  88. package/dist/cli/status.d.ts.map +1 -0
  89. package/dist/cli/status.js +248 -0
  90. package/dist/cli/status.js.map +1 -0
  91. package/dist/cli/target.d.ts +14 -0
  92. package/dist/cli/target.d.ts.map +1 -0
  93. package/dist/cli/target.js +43 -0
  94. package/dist/cli/target.js.map +1 -0
  95. package/dist/cli/trustline.d.ts +3 -0
  96. package/dist/cli/trustline.d.ts.map +1 -0
  97. package/dist/cli/trustline.js +114 -0
  98. package/dist/cli/trustline.js.map +1 -0
  99. package/dist/cli/try.d.ts +54 -0
  100. package/dist/cli/try.d.ts.map +1 -0
  101. package/dist/cli/try.js +448 -0
  102. package/dist/cli/try.js.map +1 -0
  103. package/dist/cli/tunnel.d.ts +13 -0
  104. package/dist/cli/tunnel.d.ts.map +1 -0
  105. package/dist/cli/tunnel.js +43 -0
  106. package/dist/cli/tunnel.js.map +1 -0
  107. package/dist/cli/validators.d.ts +6 -0
  108. package/dist/cli/validators.d.ts.map +1 -0
  109. package/dist/cli/validators.js +14 -0
  110. package/dist/cli/validators.js.map +1 -0
  111. package/dist/define-service.d.ts +71 -0
  112. package/dist/define-service.d.ts.map +1 -0
  113. package/dist/define-service.js +86 -0
  114. package/dist/define-service.js.map +1 -0
  115. package/dist/gateway/config.d.ts +88 -0
  116. package/dist/gateway/config.d.ts.map +1 -0
  117. package/dist/gateway/config.js +201 -0
  118. package/dist/gateway/config.js.map +1 -0
  119. package/dist/gateway/openapi.d.ts +69 -0
  120. package/dist/gateway/openapi.d.ts.map +1 -0
  121. package/dist/gateway/openapi.js +677 -0
  122. package/dist/gateway/openapi.js.map +1 -0
  123. package/dist/gateway/upstream.d.ts +15 -0
  124. package/dist/gateway/upstream.d.ts.map +1 -0
  125. package/dist/gateway/upstream.js +95 -0
  126. package/dist/gateway/upstream.js.map +1 -0
  127. package/dist/http/bounded.d.ts +3 -0
  128. package/dist/http/bounded.d.ts.map +1 -0
  129. package/dist/http/bounded.js +23 -0
  130. package/dist/http/bounded.js.map +1 -0
  131. package/dist/http/node-server.d.ts +15 -0
  132. package/dist/http/node-server.d.ts.map +1 -0
  133. package/dist/http/node-server.js +120 -0
  134. package/dist/http/node-server.js.map +1 -0
  135. package/dist/http/rate-limit.d.ts +11 -0
  136. package/dist/http/rate-limit.d.ts.map +1 -0
  137. package/dist/http/rate-limit.js +35 -0
  138. package/dist/http/rate-limit.js.map +1 -0
  139. package/dist/http/router.d.ts +29 -0
  140. package/dist/http/router.d.ts.map +1 -0
  141. package/dist/http/router.js +329 -0
  142. package/dist/http/router.js.map +1 -0
  143. package/dist/index.d.ts +20 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +31 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/jobs/memory-store.d.ts +3 -0
  148. package/dist/jobs/memory-store.d.ts.map +1 -0
  149. package/dist/jobs/memory-store.js +121 -0
  150. package/dist/jobs/memory-store.js.map +1 -0
  151. package/dist/jobs/reconcile.d.ts +22 -0
  152. package/dist/jobs/reconcile.d.ts.map +1 -0
  153. package/dist/jobs/reconcile.js +82 -0
  154. package/dist/jobs/reconcile.js.map +1 -0
  155. package/dist/jobs/recovery.d.ts +19 -0
  156. package/dist/jobs/recovery.d.ts.map +1 -0
  157. package/dist/jobs/recovery.js +65 -0
  158. package/dist/jobs/recovery.js.map +1 -0
  159. package/dist/jobs/runner.d.ts +38 -0
  160. package/dist/jobs/runner.d.ts.map +1 -0
  161. package/dist/jobs/runner.js +194 -0
  162. package/dist/jobs/runner.js.map +1 -0
  163. package/dist/jobs/scheduler.d.ts +66 -0
  164. package/dist/jobs/scheduler.d.ts.map +1 -0
  165. package/dist/jobs/scheduler.js +197 -0
  166. package/dist/jobs/scheduler.js.map +1 -0
  167. package/dist/jobs/sqlite-store.d.ts +8 -0
  168. package/dist/jobs/sqlite-store.d.ts.map +1 -0
  169. package/dist/jobs/sqlite-store.js +231 -0
  170. package/dist/jobs/sqlite-store.js.map +1 -0
  171. package/dist/jobs/store.d.ts +118 -0
  172. package/dist/jobs/store.d.ts.map +1 -0
  173. package/dist/jobs/store.js +36 -0
  174. package/dist/jobs/store.js.map +1 -0
  175. package/dist/manifest.d.ts +11 -0
  176. package/dist/manifest.d.ts.map +1 -0
  177. package/dist/manifest.js +99 -0
  178. package/dist/manifest.js.map +1 -0
  179. package/dist/payments/chain.d.ts +23 -0
  180. package/dist/payments/chain.d.ts.map +1 -0
  181. package/dist/payments/chain.js +108 -0
  182. package/dist/payments/chain.js.map +1 -0
  183. package/dist/payments/facilitator.d.ts +44 -0
  184. package/dist/payments/facilitator.d.ts.map +1 -0
  185. package/dist/payments/facilitator.js +125 -0
  186. package/dist/payments/facilitator.js.map +1 -0
  187. package/dist/payments/onchain.d.ts +36 -0
  188. package/dist/payments/onchain.d.ts.map +1 -0
  189. package/dist/payments/onchain.js +191 -0
  190. package/dist/payments/onchain.js.map +1 -0
  191. package/dist/payments/payload-checks.d.ts +22 -0
  192. package/dist/payments/payload-checks.d.ts.map +1 -0
  193. package/dist/payments/payload-checks.js +113 -0
  194. package/dist/payments/payload-checks.js.map +1 -0
  195. package/dist/payments/settlement.d.ts +22 -0
  196. package/dist/payments/settlement.d.ts.map +1 -0
  197. package/dist/payments/settlement.js +65 -0
  198. package/dist/payments/settlement.js.map +1 -0
  199. package/dist/payments/x402-server.d.ts +8 -0
  200. package/dist/payments/x402-server.d.ts.map +1 -0
  201. package/dist/payments/x402-server.js +74 -0
  202. package/dist/payments/x402-server.js.map +1 -0
  203. package/dist/provider.d.ts +63 -0
  204. package/dist/provider.d.ts.map +1 -0
  205. package/dist/provider.js +177 -0
  206. package/dist/provider.js.map +1 -0
  207. package/dist/registration.d.ts +86 -0
  208. package/dist/registration.d.ts.map +1 -0
  209. package/dist/registration.js +162 -0
  210. package/dist/registration.js.map +1 -0
  211. package/dist/testing.d.ts +13 -0
  212. package/dist/testing.d.ts.map +1 -0
  213. package/dist/testing.js +48 -0
  214. package/dist/testing.js.map +1 -0
  215. package/dist/validation-request.d.ts +36 -0
  216. package/dist/validation-request.d.ts.map +1 -0
  217. package/dist/validation-request.js +101 -0
  218. package/dist/validation-request.js.map +1 -0
  219. package/package.json +55 -4
  220. package/schemas/gateway-config.schema.json +140 -0
@@ -0,0 +1,170 @@
1
+ // provider-kit init: writes a starter gateway config. It never overwrites a file.
2
+ //
3
+ // provider-kit init [--upstream <url>] one service to edit, which forwards to --upstream
4
+ // provider-kit init --openapi <file | url> [--upstream <base url>]
5
+ // a service per POST endpoint of an OpenAPI document,
6
+ // such as FastAPI's /openapi.json (gateway/openapi.ts),
7
+ // then loaded as `provider-kit serve` loads it
8
+ // --json prints what it wrote and skipped as JSON, for scripts and coding agents.
9
+ import { existsSync } from "node:fs";
10
+ import { writeFile } from "node:fs/promises";
11
+ import { Keypair } from "@stellar/stellar-sdk";
12
+ import { loadGatewayConfig } from "../gateway/config.js";
13
+ import { DESCRIPTION_TO_WRITE, FIRST_GUESS, gatewayFromOpenApi, PROVIDER_DESCRIPTION_TO_WRITE, readOpenApi } from "../gateway/openapi.js";
14
+ import { createProvider } from "../provider.js";
15
+ import { quote } from "./shared.js";
16
+ const DEFAULT_OUT = "provider.config.json";
17
+ /** Skipped operations listed, before "and N more". */
18
+ const SKIPPED_SHOWN = 15;
19
+ export async function init(flags) {
20
+ const out = flags.out ?? DEFAULT_OUT;
21
+ if (flags.openapi !== undefined)
22
+ return initFromOpenApi(flags.openapi, out, flags.upstream, flags.json === true);
23
+ const service = {
24
+ name: "my-service",
25
+ title: "My service",
26
+ description: DESCRIPTION_TO_WRITE,
27
+ price: FIRST_GUESS.price,
28
+ charge: FIRST_GUESS.charge,
29
+ expectedDurationSeconds: FIRST_GUESS.expectedDurationSeconds,
30
+ inputSchema: {
31
+ type: "object",
32
+ required: ["text"],
33
+ properties: { text: { type: "string", minLength: 1, maxLength: 10000 } },
34
+ additionalProperties: false,
35
+ },
36
+ outputSchema: { type: "object" },
37
+ capacity: { ...FIRST_GUESS.capacity },
38
+ upstream: { url: flags.upstream ?? "http://127.0.0.1:5000/run" },
39
+ };
40
+ await write(out, gatewayConfig({ name: "My provider", description: PROVIDER_DESCRIPTION_TO_WRITE }, [service]));
41
+ if (flags.json) {
42
+ console.log(JSON.stringify({ ok: true, out, services: [{ name: service.name, url: service.upstream.url, headers: [] }], skipped: [], warnings: [], credentials: [] }, null, 2));
43
+ return 0;
44
+ }
45
+ console.log(`Wrote ${out}. Next:
46
+ 1. Edit the service: name, description, price, schemas and upstream URL.
47
+ 2. provider-kit dev --config ${out} runs it here. With PAY_TO empty, a throwaway testnet account is paid.
48
+ 3. provider-kit try my-service '{"text":"Hello"}' --config ${out} one paid testnet call, from another terminal
49
+ 4. provider-kit launch --config ${out} --url https://your.domain registers it from your wallet, to go live
50
+ Where it runs in production, set baseUrl to your public HTTPS URL and remove "dev".`);
51
+ return 0;
52
+ }
53
+ /** init --openapi: a service per POST endpoint the gateway can call, and every other operation with the reason. */
54
+ async function initFromOpenApi(source, out, upstream, json) {
55
+ // With --json, standard output holds only the JSON at the end.
56
+ const say = json ? () => { } : (line) => console.log(line);
57
+ // Checked first, so nothing is read for a file that won't be written.
58
+ if (existsSync(out))
59
+ throw new Error(`${out} already exists; nothing was written`);
60
+ const { document, url } = await readOpenApi(source);
61
+ const gateway = await gatewayFromOpenApi(document, { ...(url === undefined ? {} : { url }), ...(upstream === undefined ? {} : { upstream }) });
62
+ const { api, services } = gateway;
63
+ say(`Read ${api.title}${api.version === undefined ? "" : ` ${api.version}`} (OpenAPI ${api.openapi}) from ${source}`);
64
+ if (services.length === 0) {
65
+ printSkipped(gateway.skipped, say);
66
+ throw new Error("none of its operations can be a service: the gateway POSTs a JSON object to the API and takes a JSON object back. Nothing was written.");
67
+ }
68
+ await write(out, gatewayConfig({ name: gateway.provider.name, description: gateway.provider.description ?? PROVIDER_DESCRIPTION_TO_WRITE }, services));
69
+ say(`\nWrote ${out} with ${count(services.length, "service")}:`);
70
+ const width = Math.max(...services.map((service) => service.name.length));
71
+ for (const service of services) {
72
+ const headers = Object.keys(service.upstream.headers ?? {});
73
+ say(` ${service.name.padEnd(width)} POST ${service.upstream.url}${headers.length === 0 ? "" : ` with ${headers.join(", ")}`}`);
74
+ }
75
+ if (gateway.skipped.length > 0)
76
+ printSkipped(gateway.skipped, say);
77
+ for (const warning of gateway.warnings)
78
+ say(`\n! ${warning}`);
79
+ const problem = await loadAsServeWould(out, ["PAY_TO", ...gateway.credentials.map((credential) => credential.name)]);
80
+ if (problem === undefined)
81
+ say("\n✓ The config passes Provider Standard v1, checked as provider-kit serve checks it.");
82
+ else
83
+ say(`\n✗ The config doesn't load yet:\n ${problem.split("\n").join("\n ")}`);
84
+ const steps = [
85
+ `Review ${out}: each service's price (${FIRST_GUESS.price} USDC for now), charge and description, which agents choose by.` +
86
+ (gateway.undescribed.length === 0 ? "" : `\n Write one for ${gateway.undescribed.join(", ")}: the document gives only a summary, or nothing.`),
87
+ ...gateway.credentials.map((credential) => `export ${credential.name}=... ${credential.holds}`),
88
+ `provider-kit dev --config ${quote(out)} runs it here. With PAY_TO empty, a throwaway testnet account is paid.`,
89
+ `${tryCommand(services, out)} one paid testnet call, from another terminal`,
90
+ `provider-kit launch --config ${quote(out)} --url https://your.domain registers it from your wallet, to go live`,
91
+ ];
92
+ say(`\nNext:\n${steps.map((step, index) => ` ${index + 1}. ${step}`).join("\n")}`);
93
+ if (json) {
94
+ const report = {
95
+ ok: problem === undefined,
96
+ out,
97
+ api: { title: api.title, ...(api.version === undefined ? {} : { version: api.version }), openapi: api.openapi },
98
+ services: services.map((service) => ({ name: service.name, url: service.upstream.url, headers: Object.keys(service.upstream.headers ?? {}), described: !gateway.undescribed.includes(service.name) })),
99
+ skipped: gateway.skipped,
100
+ warnings: gateway.warnings,
101
+ credentials: gateway.credentials.map(({ name, holds }) => ({ name, holds })),
102
+ ...(problem === undefined ? {} : { problem }),
103
+ };
104
+ console.log(JSON.stringify(report, null, 2));
105
+ }
106
+ return problem === undefined ? 0 : 1;
107
+ }
108
+ /** A gateway config for development on testnet, as both kinds of init write it. */
109
+ function gatewayConfig(provider, services) {
110
+ return {
111
+ $schema: "./node_modules/@stellar-agent-services/provider-kit/schemas/gateway-config.schema.json",
112
+ baseUrl: "http://localhost:8787",
113
+ dev: true,
114
+ network: "stellar:testnet",
115
+ payTo: "env:PAY_TO",
116
+ facilitator: "https://x402.org/facilitator",
117
+ provider: { ...provider, dataUse: { storesInputs: false, trainsOnInputs: false } },
118
+ store: "./jobs.sqlite",
119
+ services: services,
120
+ };
121
+ }
122
+ async function write(out, config) {
123
+ try {
124
+ await writeFile(out, `${JSON.stringify(config, null, 2)}\n`, { flag: "wx" });
125
+ }
126
+ catch (error) {
127
+ if (error.code === "EEXIST")
128
+ throw new Error(`${out} already exists; nothing was written`);
129
+ throw error;
130
+ }
131
+ }
132
+ /**
133
+ * Loads the written config as `provider-kit serve` does: the gateway config's schema, every service, the manifest
134
+ * against the standard. Variables it reads that aren't set here get stand-ins: only the file is checked. The
135
+ * problems, or undefined.
136
+ */
137
+ async function loadAsServeWould(path, variables) {
138
+ const env = { ...process.env };
139
+ for (const name of variables) {
140
+ if (env[name] === undefined || env[name] === "")
141
+ env[name] = name === "PAY_TO" ? Keypair.random().publicKey() : "stand-in";
142
+ }
143
+ try {
144
+ const { config } = await loadGatewayConfig(path, { env, openStore: false });
145
+ await createProvider(config).close();
146
+ return undefined;
147
+ }
148
+ catch (error) {
149
+ return error.message;
150
+ }
151
+ }
152
+ function printSkipped(skipped, say) {
153
+ say(`\nSkipped ${count(skipped.length, "operation")}:`);
154
+ const shown = skipped.slice(0, SKIPPED_SHOWN);
155
+ const methods = Math.max(...shown.map((operation) => operation.method.length));
156
+ const paths = Math.min(40, Math.max(...shown.map((operation) => operation.path.length)));
157
+ for (const { method, path, reason } of shown)
158
+ say(` ${method.padEnd(methods)} ${path.padEnd(paths)} ${reason}`);
159
+ if (skipped.length > shown.length)
160
+ say(` … and ${skipped.length - shown.length} more`);
161
+ }
162
+ /** How to try the first service: with its example input when it has one. */
163
+ function tryCommand(services, out) {
164
+ const service = services.find((candidate) => candidate.examples !== undefined) ?? services[0];
165
+ return `provider-kit try ${service.name}${service.examples === undefined ? " '<input JSON>'" : ""}${out === DEFAULT_OUT ? "" : ` --config ${quote(out)}`}`;
166
+ }
167
+ function count(n, noun) {
168
+ return `${n} ${noun}${n === 1 ? "" : "s"}`;
169
+ }
170
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type FlyRunner } from "./fly.js";
2
+ import { type Started } from "./processes.js";
3
+ import { type CliFlags, type OwnerIo } from "./shared.js";
4
+ /** Where `launch` reaches the outside world. Tests replace it. */
5
+ export interface LaunchIo extends OwnerIo {
6
+ log(line: string): void;
7
+ /** Whether someone is there to answer a question. */
8
+ interactive: boolean;
9
+ /** Asks yes or no. Enter means yes. */
10
+ confirm(question: string): Promise<boolean>;
11
+ fetch: typeof fetch;
12
+ /** Starts the provider's own command in the background, with `env` added. */
13
+ start(command: string, env: NodeJS.ProcessEnv): Started;
14
+ freePort(): Promise<number>;
15
+ fly: FlyRunner;
16
+ sleep(ms: number): Promise<void>;
17
+ env: NodeJS.ProcessEnv;
18
+ }
19
+ export declare function launchIo(flags: CliFlags): LaunchIo;
20
+ export declare function launch(flags: CliFlags, io?: LaunchIo): Promise<number>;
21
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/cli/launch.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAmE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG3G,OAAO,EAAuD,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEnG,OAAO,EAA2D,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAenH,kEAAkE;AAClE,MAAM,WAAW,QAAS,SAAQ,OAAO;IACvC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;IACxD,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAwBlD;AAcD,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAE,QAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA4O7F"}