@truefoundry/trueforge 0.1.0 → 0.1.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.md +30 -0
- package/dist/_frontend/assets/{ConnectorSettings-H37ZFC6Z-BoDzRBt-.js → ConnectorSettings-4CYGRWPH-EWp5lwOt.js} +1 -1
- package/dist/_frontend/assets/ConnectorSettings-4CYGRWPH-EWp5lwOt.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-4CYGRWPH-EWp5lwOt.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-KEMFRWIR-2H2_fGVk.js → DockLayout-FEDQX2UT-DbN-pvPO.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-ZVWCKEIS-DFGUqK6q.js → DrawerLayout-NMA7P64K-0IGRaUAW.js} +2 -2
- package/dist/_frontend/assets/DrawerLayout-NMA7P64K-0IGRaUAW.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-NMA7P64K-0IGRaUAW.js.gz +0 -0
- package/dist/_frontend/assets/{ModelSettings-QJMYHCMD-DaR_pzAb.js → ModelSettings-H5FKRZLK-CEQWPDWn.js} +1 -1
- package/dist/_frontend/assets/ModelSettings-H5FKRZLK-CEQWPDWn.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-H5FKRZLK-CEQWPDWn.js.gz +0 -0
- package/dist/_frontend/assets/{SandboxSettings-BUBMLW7Q-ChiNe2Y8.js → SandboxSettings-CBSC3C3G-PWbj0tIQ.js} +1 -1
- package/dist/_frontend/assets/SandboxSettings-CBSC3C3G-PWbj0tIQ.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-CBSC3C3G-PWbj0tIQ.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-EGSH7BUA-Cvx-hLzU.js +2 -0
- package/dist/_frontend/assets/SettingsBuilder-EGSH7BUA-Cvx-hLzU.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-EGSH7BUA-Cvx-hLzU.js.gz +0 -0
- package/dist/_frontend/assets/ShellRouteSync-53FTXNZZ-BIksLzSL.js +1 -0
- package/dist/_frontend/assets/ShellRouteSync-53FTXNZZ-BIksLzSL.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-53FTXNZZ-BIksLzSL.js.gz +0 -0
- package/dist/_frontend/assets/{SidebarLayout-F3XFXW7B-BQV8bkzL.js → SidebarLayout-5WM2BHZG-Ceb_9WvC.js} +2 -2
- package/dist/_frontend/assets/SidebarLayout-5WM2BHZG-Ceb_9WvC.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-5WM2BHZG-Ceb_9WvC.js.gz +0 -0
- package/dist/_frontend/assets/{SkillSettings-IRMGDFRG-ChKre3S8.js → SkillSettings-A2OQSQUT-C-AShr7L.js} +1 -1
- package/dist/_frontend/assets/SkillSettings-A2OQSQUT-C-AShr7L.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-A2OQSQUT-C-AShr7L.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-2AQ3HW6L-DexVXzlD.js +1 -0
- package/dist/_frontend/assets/{WidgetLayout-SZMABKIR-BRKArpEm.js → WidgetLayout-IKGVAZFV-Q2dDfnNQ.js} +1 -1
- package/dist/_frontend/assets/WidgetLayout-IKGVAZFV-Q2dDfnNQ.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-IKGVAZFV-Q2dDfnNQ.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-7EEOWDLE-BIwInB6G.js → chunk-4STVL6W6-DO6mK5-E.js} +2 -2
- package/dist/_frontend/assets/chunk-4STVL6W6-DO6mK5-E.js.br +0 -0
- package/dist/_frontend/assets/chunk-4STVL6W6-DO6mK5-E.js.gz +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-BpHQergm.js +12 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-BpHQergm.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-BpHQergm.js.gz +0 -0
- package/dist/_frontend/assets/chunk-BMLCISMH-BtIzChti.js +4 -0
- package/dist/_frontend/assets/chunk-BMLCISMH-BtIzChti.js.br +0 -0
- package/dist/_frontend/assets/chunk-BMLCISMH-BtIzChti.js.gz +0 -0
- package/dist/_frontend/assets/{cssMode-Bb1lR8Ti.js → cssMode-tBxiXBbi.js} +1 -1
- package/dist/_frontend/assets/cssMode-tBxiXBbi.js.br +0 -0
- package/dist/_frontend/assets/cssMode-tBxiXBbi.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-BrrF7mKG.js → freemarker2-C8-_g6KH.js} +1 -1
- package/dist/_frontend/assets/freemarker2-C8-_g6KH.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-C8-_g6KH.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-WQ7HMT1b.js → handlebars-CVTAyJx2.js} +1 -1
- package/dist/_frontend/assets/handlebars-CVTAyJx2.js.br +0 -0
- package/dist/_frontend/assets/handlebars-CVTAyJx2.js.gz +0 -0
- package/dist/_frontend/assets/{html-CoOPnhCb.js → html-CFO-PVK6.js} +1 -1
- package/dist/_frontend/assets/html-CFO-PVK6.js.br +0 -0
- package/dist/_frontend/assets/html-CFO-PVK6.js.gz +0 -0
- package/dist/_frontend/assets/{htmlMode-BW7taYty.js → htmlMode-CFCanlO-.js} +1 -1
- package/dist/_frontend/assets/htmlMode-CFCanlO-.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-CFCanlO-.js.gz +0 -0
- package/dist/_frontend/assets/{index-DFQqb6R1.js → index-BIWWiCC7.js} +3 -3
- package/dist/_frontend/assets/index-BIWWiCC7.js.br +0 -0
- package/dist/_frontend/assets/index-BIWWiCC7.js.gz +0 -0
- package/dist/_frontend/assets/{index-ChCGltYc.js → index-CSSyjy0I.js} +262 -265
- package/dist/_frontend/assets/index-CSSyjy0I.js.br +0 -0
- package/dist/_frontend/assets/index-CSSyjy0I.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-CPINtbIt.js → javascript-MIQGaM22.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-C8qDzOfb.js → jsonMode-D5gVPPeB.js} +1 -1
- package/dist/_frontend/assets/jsonMode-D5gVPPeB.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-D5gVPPeB.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-zGC9H1Dt.js → liquid-DHNaEubO.js} +1 -1
- package/dist/_frontend/assets/liquid-DHNaEubO.js.br +0 -0
- package/dist/_frontend/assets/liquid-DHNaEubO.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-B6VPH2Sv.js → lspLanguageFeatures-QCSfugnT.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-QCSfugnT.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-QCSfugnT.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-BrQrGCP9.js → mdx-BXTfxgKC.js} +1 -1
- package/dist/_frontend/assets/mdx-BXTfxgKC.js.br +0 -0
- package/dist/_frontend/assets/mdx-BXTfxgKC.js.gz +0 -0
- package/dist/_frontend/assets/{python-zKGpYLwR.js → python-2xJ5-a_I.js} +1 -1
- package/dist/_frontend/assets/python-2xJ5-a_I.js.br +0 -0
- package/dist/_frontend/assets/python-2xJ5-a_I.js.gz +0 -0
- package/dist/_frontend/assets/{razor-BJ38lYsd.js → razor-pc2nnHiH.js} +1 -1
- package/dist/_frontend/assets/razor-pc2nnHiH.js.br +0 -0
- package/dist/_frontend/assets/razor-pc2nnHiH.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-dPLqGMg8.js → tsMode-DDOTqjiA.js} +1 -1
- package/dist/_frontend/assets/tsMode-DDOTqjiA.js.br +0 -0
- package/dist/_frontend/assets/tsMode-DDOTqjiA.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-BJlivWry.js → typescript-B8kVUDuw.js} +1 -1
- package/dist/_frontend/assets/typescript-B8kVUDuw.js.br +0 -0
- package/dist/_frontend/assets/typescript-B8kVUDuw.js.gz +0 -0
- package/dist/_frontend/assets/{workers-fMwav4jB.js → workers-BKOSx8Az.js} +1 -1
- package/dist/_frontend/assets/workers-BKOSx8Az.js.br +0 -0
- package/dist/_frontend/assets/workers-BKOSx8Az.js.gz +0 -0
- package/dist/_frontend/assets/{xml-DZW470wi.js → xml--HuG4XfW.js} +1 -1
- package/dist/_frontend/assets/xml--HuG4XfW.js.br +0 -0
- package/dist/_frontend/assets/xml--HuG4XfW.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-Bs1DumYp.js → yaml-BM2qwYh9.js} +1 -1
- package/dist/_frontend/assets/yaml-BM2qwYh9.js.br +0 -0
- package/dist/_frontend/assets/yaml-BM2qwYh9.js.gz +0 -0
- package/dist/_frontend/index.html +1 -1
- package/dist/_frontend/index.html.br +0 -0
- package/dist/_frontend/index.html.gz +0 -0
- package/dist/cli.js +23 -1
- package/dist/cli.js.map +1 -1
- package/dist/main.js +388 -77
- package/dist/main.js.map +1 -1
- package/package.json +11 -7
- package/dist/_frontend/assets/ConnectorSettings-H37ZFC6Z-BoDzRBt-.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-H37ZFC6Z-BoDzRBt-.js.gz +0 -0
- package/dist/_frontend/assets/DrawerLayout-ZVWCKEIS-DFGUqK6q.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-ZVWCKEIS-DFGUqK6q.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-QJMYHCMD-DaR_pzAb.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-QJMYHCMD-DaR_pzAb.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-BUBMLW7Q-ChiNe2Y8.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-BUBMLW7Q-ChiNe2Y8.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js +0 -2
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js.gz +0 -0
- package/dist/_frontend/assets/SidebarLayout-F3XFXW7B-BQV8bkzL.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-F3XFXW7B-BQV8bkzL.js.gz +0 -0
- package/dist/_frontend/assets/SkillSettings-IRMGDFRG-ChKre3S8.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-IRMGDFRG-ChKre3S8.js.gz +0 -0
- package/dist/_frontend/assets/WidgetLayout-SZMABKIR-BRKArpEm.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-SZMABKIR-BRKArpEm.js.gz +0 -0
- package/dist/_frontend/assets/chunk-7EEOWDLE-BIwInB6G.js.br +0 -0
- package/dist/_frontend/assets/chunk-7EEOWDLE-BIwInB6G.js.gz +0 -0
- package/dist/_frontend/assets/chunk-LRQHHZDX-eb14Z2nA.js +0 -1
- package/dist/_frontend/assets/chunk-LRQHHZDX-eb14Z2nA.js.br +0 -0
- package/dist/_frontend/assets/chunk-LRQHHZDX-eb14Z2nA.js.gz +0 -0
- package/dist/_frontend/assets/cssMode-Bb1lR8Ti.js.br +0 -0
- package/dist/_frontend/assets/cssMode-Bb1lR8Ti.js.gz +0 -0
- package/dist/_frontend/assets/freemarker2-BrrF7mKG.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-BrrF7mKG.js.gz +0 -0
- package/dist/_frontend/assets/handlebars-WQ7HMT1b.js.br +0 -0
- package/dist/_frontend/assets/handlebars-WQ7HMT1b.js.gz +0 -0
- package/dist/_frontend/assets/html-CoOPnhCb.js.br +0 -0
- package/dist/_frontend/assets/html-CoOPnhCb.js.gz +0 -0
- package/dist/_frontend/assets/htmlMode-BW7taYty.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-BW7taYty.js.gz +0 -0
- package/dist/_frontend/assets/index-ChCGltYc.js.br +0 -0
- package/dist/_frontend/assets/index-ChCGltYc.js.gz +0 -0
- package/dist/_frontend/assets/index-DFQqb6R1.js.br +0 -0
- package/dist/_frontend/assets/index-DFQqb6R1.js.gz +0 -0
- package/dist/_frontend/assets/jsonMode-C8qDzOfb.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-C8qDzOfb.js.gz +0 -0
- package/dist/_frontend/assets/liquid-zGC9H1Dt.js.br +0 -0
- package/dist/_frontend/assets/liquid-zGC9H1Dt.js.gz +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-B6VPH2Sv.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-B6VPH2Sv.js.gz +0 -0
- package/dist/_frontend/assets/mdx-BrQrGCP9.js.br +0 -0
- package/dist/_frontend/assets/mdx-BrQrGCP9.js.gz +0 -0
- package/dist/_frontend/assets/python-zKGpYLwR.js.br +0 -0
- package/dist/_frontend/assets/python-zKGpYLwR.js.gz +0 -0
- package/dist/_frontend/assets/razor-BJ38lYsd.js.br +0 -0
- package/dist/_frontend/assets/razor-BJ38lYsd.js.gz +0 -0
- package/dist/_frontend/assets/tsMode-dPLqGMg8.js.br +0 -0
- package/dist/_frontend/assets/tsMode-dPLqGMg8.js.gz +0 -0
- package/dist/_frontend/assets/typescript-BJlivWry.js.br +0 -0
- package/dist/_frontend/assets/typescript-BJlivWry.js.gz +0 -0
- package/dist/_frontend/assets/workers-fMwav4jB.js.br +0 -0
- package/dist/_frontend/assets/workers-fMwav4jB.js.gz +0 -0
- package/dist/_frontend/assets/xml-DZW470wi.js.br +0 -0
- package/dist/_frontend/assets/xml-DZW470wi.js.gz +0 -0
- package/dist/_frontend/assets/yaml-Bs1DumYp.js.br +0 -0
- package/dist/_frontend/assets/yaml-Bs1DumYp.js.gz +0 -0
package/dist/cli.js
CHANGED
|
@@ -2,12 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
// src/cli.ts
|
|
4
4
|
import { parseArgs } from "util";
|
|
5
|
+
|
|
6
|
+
// src/packageVersion.ts
|
|
7
|
+
import { readFileSync } from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import { fileURLToPath } from "url";
|
|
10
|
+
var PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
11
|
+
function readPackageVersion() {
|
|
12
|
+
const packageJsonPath = path.join(PACKAGE_ROOT, "package.json");
|
|
13
|
+
const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
14
|
+
if (typeof parsed !== "object" || parsed === null || !("version" in parsed)) {
|
|
15
|
+
throw new Error(`${packageJsonPath} is missing a version field`);
|
|
16
|
+
}
|
|
17
|
+
const { version } = parsed;
|
|
18
|
+
if (typeof version !== "string" || version.length === 0) {
|
|
19
|
+
throw new Error(`${packageJsonPath} version must be a non-empty string`);
|
|
20
|
+
}
|
|
21
|
+
return version;
|
|
22
|
+
}
|
|
23
|
+
var PACKAGE_VERSION = readPackageVersion();
|
|
24
|
+
|
|
25
|
+
// src/cli.ts
|
|
5
26
|
function printUsage() {
|
|
6
27
|
console.log(`Usage:
|
|
7
28
|
npx @truefoundry/trueforge
|
|
8
29
|
npx @truefoundry/trueforge --port <n>
|
|
9
30
|
|
|
10
|
-
Start the agent server.
|
|
31
|
+
TrueForge v${PACKAGE_VERSION}. Start the agent server.
|
|
32
|
+
Defaults to standalone mode (SQLite, no Redis) \u2014 local use only, not production-safe.
|
|
11
33
|
Set STANDALONE=false with Postgres and Redis for multi-replica peering.
|
|
12
34
|
|
|
13
35
|
Options:
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["/**\n * CLI entry for `@truefoundry/trueforge` (`package.json` `bin` → `dist/cli.js`).\n *\n * Kept separate from `main.ts` so Docker / `pnpm start` can boot with env only\n * (`node dist/main.js`), while `npx @truefoundry/trueforge` gets a shebang, `--help`,\n * and `--port`. Flags must be applied before importing `./main` because config\n * reads `process.env` at module load.\n *\n * Topology defaults from env / config (`STANDALONE=true` unless set): standalone\n * uses SQLite with no Redis; `STANDALONE=false` uses Postgres + Redis peering.\n */\nimport { parseArgs } from 'node:util';\n\nfunction printUsage(): void {\n console.log(`Usage:\n npx @truefoundry/trueforge\n npx @truefoundry/trueforge --port <n>\n\
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/packageVersion.ts"],"sourcesContent":["/**\n * CLI entry for `@truefoundry/trueforge` (`package.json` `bin` → `dist/cli.js`).\n *\n * Kept separate from `main.ts` so Docker / `pnpm start` can boot with env only\n * (`node dist/main.js`), while `npx @truefoundry/trueforge` gets a shebang, `--help`,\n * and `--port`. Flags must be applied before importing `./main` because config\n * reads `process.env` at module load.\n *\n * Topology defaults from env / config (`STANDALONE=true` unless set): standalone\n * uses SQLite with no Redis; `STANDALONE=false` uses Postgres + Redis peering.\n */\nimport { parseArgs } from 'node:util';\n\nimport { PACKAGE_VERSION } from './packageVersion';\n\nfunction printUsage(): void {\n console.log(`Usage:\n npx @truefoundry/trueforge\n npx @truefoundry/trueforge --port <n>\n\nTrueForge v${PACKAGE_VERSION}. Start the agent server.\nDefaults to standalone mode (SQLite, no Redis) — local use only, not production-safe.\nSet STANDALONE=false with Postgres and Redis for multi-replica peering.\n\nOptions:\n --port <n> HTTP port (default: 8790, or PORT env)\n -h, --help Show this help\n`);\n}\n\nfunction applyPort(raw: string | undefined): void {\n if (raw === undefined) {\n return;\n }\n const port = Number(raw);\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\n throw new Error(`Invalid --port \"${raw}\" (expected integer 1–65535)`);\n }\n process.env['PORT'] = String(port);\n}\n\ntry {\n const { values } = parseArgs({\n args: process.argv.slice(2),\n options: {\n port: { type: 'string' },\n help: { type: 'boolean', short: 'h', default: false },\n },\n allowPositionals: false,\n strict: true,\n });\n\n if (values.help) {\n printUsage();\n } else {\n applyPort(values.port);\n await import('./main.js');\n }\n} catch (error) {\n console.error(error);\n process.exit(1);\n}\n","/**\n * Package version for logs, the OpenAPI document, and the CLI.\n *\n * Read from `package.json` next to this module's package root — the same\n * `src/` vs `dist/` layout as `config.ts` (`import.meta` → parent).\n */\nimport { readFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');\n\nfunction readPackageVersion(): string {\n const packageJsonPath = path.join(PACKAGE_ROOT, 'package.json');\n const parsed: unknown = JSON.parse(readFileSync(packageJsonPath, 'utf8'));\n if (typeof parsed !== 'object' || parsed === null || !('version' in parsed)) {\n throw new Error(`${packageJsonPath} is missing a version field`);\n }\n const { version } = parsed;\n if (typeof version !== 'string' || version.length === 0) {\n throw new Error(`${packageJsonPath} version must be a non-empty string`);\n }\n return version;\n}\n\nexport const PACKAGE_VERSION = readPackageVersion();\n"],"mappings":";;;AAWA,SAAS,iBAAiB;;;ACL1B,SAAS,oBAAoB;AAC7B,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAE9B,IAAM,eAAe,KAAK,QAAQ,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,IAAI;AAEpF,SAAS,qBAA6B;AACpC,QAAM,kBAAkB,KAAK,KAAK,cAAc,cAAc;AAC9D,QAAM,SAAkB,KAAK,MAAM,aAAa,iBAAiB,MAAM,CAAC;AACxE,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,EAAE,aAAa,SAAS;AAC3E,UAAM,IAAI,MAAM,GAAG,eAAe,6BAA6B;AAAA,EACjE;AACA,QAAM,EAAE,QAAQ,IAAI;AACpB,MAAI,OAAO,YAAY,YAAY,QAAQ,WAAW,GAAG;AACvD,UAAM,IAAI,MAAM,GAAG,eAAe,qCAAqC;AAAA,EACzE;AACA,SAAO;AACT;AAEO,IAAM,kBAAkB,mBAAmB;;;ADVlD,SAAS,aAAmB;AAC1B,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA,aAID,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAO3B;AACD;AAEA,SAAS,UAAU,KAA+B;AAChD,MAAI,QAAQ,QAAW;AACrB;AAAA,EACF;AACA,QAAM,OAAO,OAAO,GAAG;AACvB,MAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO,OAAO;AACvD,UAAM,IAAI,MAAM,mBAAmB,GAAG,mCAA8B;AAAA,EACtE;AACA,UAAQ,IAAI,MAAM,IAAI,OAAO,IAAI;AACnC;AAEA,IAAI;AACF,QAAM,EAAE,OAAO,IAAI,UAAU;AAAA,IAC3B,MAAM,QAAQ,KAAK,MAAM,CAAC;AAAA,IAC1B,SAAS;AAAA,MACP,MAAM,EAAE,MAAM,SAAS;AAAA,MACvB,MAAM,EAAE,MAAM,WAAW,OAAO,KAAK,SAAS,MAAM;AAAA,IACtD;AAAA,IACA,kBAAkB;AAAA,IAClB,QAAQ;AAAA,EACV,CAAC;AAED,MAAI,OAAO,MAAM;AACf,eAAW;AAAA,EACb,OAAO;AACL,cAAU,OAAO,IAAI;AACrB,UAAM,OAAO,WAAW;AAAA,EAC1B;AACF,SAAS,OAAO;AACd,UAAQ,MAAM,KAAK;AACnB,UAAQ,KAAK,CAAC;AAChB;","names":[]}
|