@shieldedtech/moth-cli 0.2.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/README.md +67 -0
- package/dist/adapters/passphrase.d.ts +2 -0
- package/dist/adapters/passphrase.d.ts.map +1 -0
- package/dist/adapters/passphrase.js +62 -0
- package/dist/adapters/passphrase.js.map +1 -0
- package/dist/base-command.d.ts +155 -0
- package/dist/base-command.d.ts.map +1 -0
- package/dist/base-command.js +497 -0
- package/dist/base-command.js.map +1 -0
- package/dist/commands/airdrop.d.ts +18 -0
- package/dist/commands/airdrop.d.ts.map +1 -0
- package/dist/commands/airdrop.js +36 -0
- package/dist/commands/airdrop.js.map +1 -0
- package/dist/commands/balance.d.ts +18 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +124 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/call.d.ts +26 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +102 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/config.d.ts +22 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +50 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/daemon/call.d.ts +27 -0
- package/dist/commands/daemon/call.d.ts.map +1 -0
- package/dist/commands/daemon/call.js +108 -0
- package/dist/commands/daemon/call.js.map +1 -0
- package/dist/commands/daemon/deploy.d.ts +27 -0
- package/dist/commands/daemon/deploy.d.ts.map +1 -0
- package/dist/commands/daemon/deploy.js +105 -0
- package/dist/commands/daemon/deploy.js.map +1 -0
- package/dist/commands/daemon/dust/deregister.d.ts +19 -0
- package/dist/commands/daemon/dust/deregister.d.ts.map +1 -0
- package/dist/commands/daemon/dust/deregister.js +52 -0
- package/dist/commands/daemon/dust/deregister.js.map +1 -0
- package/dist/commands/daemon/dust/register.d.ts +20 -0
- package/dist/commands/daemon/dust/register.d.ts.map +1 -0
- package/dist/commands/daemon/dust/register.js +60 -0
- package/dist/commands/daemon/dust/register.js.map +1 -0
- package/dist/commands/daemon/key/gen.d.ts +19 -0
- package/dist/commands/daemon/key/gen.d.ts.map +1 -0
- package/dist/commands/daemon/key/gen.js +66 -0
- package/dist/commands/daemon/key/gen.js.map +1 -0
- package/dist/commands/daemon/key/list.d.ts +17 -0
- package/dist/commands/daemon/key/list.d.ts.map +1 -0
- package/dist/commands/daemon/key/list.js +43 -0
- package/dist/commands/daemon/key/list.js.map +1 -0
- package/dist/commands/daemon/key/revoke.d.ts +20 -0
- package/dist/commands/daemon/key/revoke.d.ts.map +1 -0
- package/dist/commands/daemon/key/revoke.js +37 -0
- package/dist/commands/daemon/key/revoke.js.map +1 -0
- package/dist/commands/daemon/maintenance/insert-vk.d.ts +24 -0
- package/dist/commands/daemon/maintenance/insert-vk.d.ts.map +1 -0
- package/dist/commands/daemon/maintenance/insert-vk.js +87 -0
- package/dist/commands/daemon/maintenance/insert-vk.js.map +1 -0
- package/dist/commands/daemon/maintenance/insert-vks-batch.d.ts +24 -0
- package/dist/commands/daemon/maintenance/insert-vks-batch.d.ts.map +1 -0
- package/dist/commands/daemon/maintenance/insert-vks-batch.js +117 -0
- package/dist/commands/daemon/maintenance/insert-vks-batch.js.map +1 -0
- package/dist/commands/daemon/serve.d.ts +23 -0
- package/dist/commands/daemon/serve.d.ts.map +1 -0
- package/dist/commands/daemon/serve.js +289 -0
- package/dist/commands/daemon/serve.js.map +1 -0
- package/dist/commands/daemon/submit-tx.d.ts +22 -0
- package/dist/commands/daemon/submit-tx.d.ts.map +1 -0
- package/dist/commands/daemon/submit-tx.js +89 -0
- package/dist/commands/daemon/submit-tx.js.map +1 -0
- package/dist/commands/daemon/transfer.d.ts +24 -0
- package/dist/commands/daemon/transfer.d.ts.map +1 -0
- package/dist/commands/daemon/transfer.js +135 -0
- package/dist/commands/daemon/transfer.js.map +1 -0
- package/dist/commands/deploy.d.ts +26 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +135 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dust/deregister.d.ts +18 -0
- package/dist/commands/dust/deregister.d.ts.map +1 -0
- package/dist/commands/dust/deregister.js +48 -0
- package/dist/commands/dust/deregister.js.map +1 -0
- package/dist/commands/dust/register.d.ts +21 -0
- package/dist/commands/dust/register.d.ts.map +1 -0
- package/dist/commands/dust/register.js +120 -0
- package/dist/commands/dust/register.js.map +1 -0
- package/dist/commands/dust/status.d.ts +17 -0
- package/dist/commands/dust/status.d.ts.map +1 -0
- package/dist/commands/dust/status.js +47 -0
- package/dist/commands/dust/status.js.map +1 -0
- package/dist/commands/info.d.ts +17 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +37 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/maintenance/insert-vk.d.ts +23 -0
- package/dist/commands/maintenance/insert-vk.d.ts.map +1 -0
- package/dist/commands/maintenance/insert-vk.js +92 -0
- package/dist/commands/maintenance/insert-vk.js.map +1 -0
- package/dist/commands/maintenance/insert-vks-batch.d.ts +23 -0
- package/dist/commands/maintenance/insert-vks-batch.d.ts.map +1 -0
- package/dist/commands/maintenance/insert-vks-batch.js +130 -0
- package/dist/commands/maintenance/insert-vks-batch.js.map +1 -0
- package/dist/commands/mint.d.ts +24 -0
- package/dist/commands/mint.d.ts.map +1 -0
- package/dist/commands/mint.js +116 -0
- package/dist/commands/mint.js.map +1 -0
- package/dist/commands/state.d.ts +20 -0
- package/dist/commands/state.d.ts.map +1 -0
- package/dist/commands/state.js +36 -0
- package/dist/commands/state.js.map +1 -0
- package/dist/commands/transfer/batch.d.ts +21 -0
- package/dist/commands/transfer/batch.d.ts.map +1 -0
- package/dist/commands/transfer/batch.js +71 -0
- package/dist/commands/transfer/batch.js.map +1 -0
- package/dist/commands/transfer.d.ts +24 -0
- package/dist/commands/transfer.d.ts.map +1 -0
- package/dist/commands/transfer.js +123 -0
- package/dist/commands/transfer.js.map +1 -0
- package/dist/commands/tui.d.ts +17 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +18 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/wallet/address.d.ts +25 -0
- package/dist/commands/wallet/address.d.ts.map +1 -0
- package/dist/commands/wallet/address.js +47 -0
- package/dist/commands/wallet/address.js.map +1 -0
- package/dist/commands/wallet/generate.d.ts +20 -0
- package/dist/commands/wallet/generate.d.ts.map +1 -0
- package/dist/commands/wallet/generate.js +75 -0
- package/dist/commands/wallet/generate.js.map +1 -0
- package/dist/commands/wallet/import.d.ts +20 -0
- package/dist/commands/wallet/import.d.ts.map +1 -0
- package/dist/commands/wallet/import.js +85 -0
- package/dist/commands/wallet/import.js.map +1 -0
- package/dist/commands/wallet/list.d.ts +17 -0
- package/dist/commands/wallet/list.d.ts.map +1 -0
- package/dist/commands/wallet/list.js +23 -0
- package/dist/commands/wallet/list.js.map +1 -0
- package/dist/commands/wallet/remove.d.ts +21 -0
- package/dist/commands/wallet/remove.d.ts.map +1 -0
- package/dist/commands/wallet/remove.js +31 -0
- package/dist/commands/wallet/remove.js.map +1 -0
- package/dist/commands/wallet/status.d.ts +18 -0
- package/dist/commands/wallet/status.d.ts.map +1 -0
- package/dist/commands/wallet/status.js +62 -0
- package/dist/commands/wallet/status.js.map +1 -0
- package/dist/commands/wallet/use.d.ts +20 -0
- package/dist/commands/wallet/use.d.ts.map +1 -0
- package/dist/commands/wallet/use.js +19 -0
- package/dist/commands/wallet/use.js.map +1 -0
- package/dist/formatters/index.d.ts +5 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +68 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
- package/templates/dapp/api/package.json +21 -0
- package/templates/dapp/api/src/index.ts +2 -0
- package/templates/dapp/api/src/providers.ts +23 -0
- package/templates/dapp/api/src/types.ts +23 -0
- package/templates/dapp/api/tsconfig.json +11 -0
- package/templates/dapp/root/README.md +20 -0
- package/templates/dapp/root/tsconfig.json +15 -0
- package/templates/dapp/ui/index.html +13 -0
- package/templates/dapp/ui/package.json +24 -0
- package/templates/dapp/ui/public/vite.svg +1 -0
- package/templates/dapp/ui/src/App.tsx +36 -0
- package/templates/dapp/ui/src/index.css +29 -0
- package/templates/dapp/ui/src/main.tsx +10 -0
- package/templates/dapp/ui/tsconfig.json +8 -0
- package/templates/dapp/ui/vite.config.ts +14 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// In-process balance query. Spins up its own sync, waits for it to
|
|
2
|
+
// reach synced=true, reads the WalletBalances snapshot, and exits.
|
|
3
|
+
//
|
|
4
|
+
// This is the standalone counterpart to `moth wallet status` (which
|
|
5
|
+
// reads the same snapshot from a daemon-hosted facade). Use the
|
|
6
|
+
// daemon-mode version when a daemon is already running — it's
|
|
7
|
+
// instant. This command is for "no daemon, one-off check".
|
|
8
|
+
import { Flags } from '@oclif/core';
|
|
9
|
+
import { BaseCommand } from '../base-command.js';
|
|
10
|
+
import { getPassphrase } from '../adapters/passphrase.js';
|
|
11
|
+
import { startWalletSync, NIGHT_TOKEN_ID, NIGHT_DENOMINATION, formatBalance, } from '@shieldedtech/moth-wallet';
|
|
12
|
+
export default class Balance extends BaseCommand {
|
|
13
|
+
static description = "Show the wallet's NIGHT (shielded + unshielded), DUST, and any non-NIGHT token balances. Spins up its own sync, so first-call latency is the full sync time; subsequent calls share the on-disk cache and complete faster. Use `moth wallet status` instead when a daemon is already running for this wallet — that path is instant.";
|
|
14
|
+
static flags = {
|
|
15
|
+
...BaseCommand.baseFlags,
|
|
16
|
+
'wait-timeout-ms': Flags.integer({
|
|
17
|
+
description: 'How long to wait for the sync to reach synced=true before reading balances. Default 5 minutes. After timeout the command emits whatever the latest snapshot showed (likely 0s if sync was still catching up) with synced=false.',
|
|
18
|
+
default: 300_000,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
async run() {
|
|
22
|
+
const { flags } = await this.parse(Balance);
|
|
23
|
+
this.outputFormat = flags.output ?? 'text';
|
|
24
|
+
this.verbose = flags.verbose;
|
|
25
|
+
const walletName = await this.resolveWalletName(flags);
|
|
26
|
+
const passphrase = await getPassphrase();
|
|
27
|
+
const wallet = await this.walletManager.unlock(walletName, passphrase);
|
|
28
|
+
const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
|
|
29
|
+
process.stderr.write('Syncing wallet…\n');
|
|
30
|
+
const synced = await startWalletSync(wallet.walletKeys, network, (msg) => this.log_verbose(`[sync] ${msg}`), walletName);
|
|
31
|
+
try {
|
|
32
|
+
await waitForSynced(synced, flags['wait-timeout-ms']);
|
|
33
|
+
const b = synced.balances;
|
|
34
|
+
const unshNight = (b.unshielded[NIGHT_TOKEN_ID] ?? 0n);
|
|
35
|
+
const shNight = (b.shielded[NIGHT_TOKEN_ID] ?? 0n);
|
|
36
|
+
const totalNight = unshNight + shNight;
|
|
37
|
+
const otherTokens = [];
|
|
38
|
+
for (const [tokenId, amount] of Object.entries(b.unshielded)) {
|
|
39
|
+
if (tokenId === NIGHT_TOKEN_ID)
|
|
40
|
+
continue;
|
|
41
|
+
otherTokens.push({ tokenId, type: 'unshielded', amount: amount.toString() });
|
|
42
|
+
}
|
|
43
|
+
for (const [tokenId, amount] of Object.entries(b.shielded)) {
|
|
44
|
+
if (tokenId === NIGHT_TOKEN_ID)
|
|
45
|
+
continue;
|
|
46
|
+
otherTokens.push({ tokenId, type: 'shielded', amount: amount.toString() });
|
|
47
|
+
}
|
|
48
|
+
const result = {
|
|
49
|
+
wallet: walletName,
|
|
50
|
+
network: network.id,
|
|
51
|
+
synced: b.synced,
|
|
52
|
+
balances: {
|
|
53
|
+
night: {
|
|
54
|
+
unshielded: unshNight.toString(),
|
|
55
|
+
shielded: shNight.toString(),
|
|
56
|
+
total: totalNight.toString(),
|
|
57
|
+
totalDecimal: formatBalance(totalNight, NIGHT_DENOMINATION),
|
|
58
|
+
},
|
|
59
|
+
dust: b.dust.toString(),
|
|
60
|
+
otherTokens,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
if (this.outputFormat === 'json') {
|
|
64
|
+
this.outputSuccess(result);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.log(`Wallet: ${walletName}`);
|
|
68
|
+
this.log(`Network: ${network.id}`);
|
|
69
|
+
this.log(`Synced: ${b.synced ? 'yes' : 'no (snapshot may be incomplete)'}`);
|
|
70
|
+
this.log('');
|
|
71
|
+
this.log('NIGHT:');
|
|
72
|
+
this.log(` unshielded: ${formatBalance(unshNight, NIGHT_DENOMINATION)} (${unshNight.toString()} STARS)`);
|
|
73
|
+
this.log(` shielded: ${formatBalance(shNight, NIGHT_DENOMINATION)} (${shNight.toString()} STARS)`);
|
|
74
|
+
this.log(` total: ${formatBalance(totalNight, NIGHT_DENOMINATION)} (${totalNight.toString()} STARS)`);
|
|
75
|
+
this.log('');
|
|
76
|
+
this.log(`DUST: ${b.dust.toString()} SPECK`);
|
|
77
|
+
if (otherTokens.length > 0) {
|
|
78
|
+
this.log('');
|
|
79
|
+
this.log('Other tokens:');
|
|
80
|
+
for (const t of otherTokens) {
|
|
81
|
+
this.log(` ${t.tokenId.slice(0, 16)}… ${t.type.padEnd(10)} ${t.amount}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
// Always stop the sync subscription so the process can exit
|
|
87
|
+
// cleanly. Without this, leftover WS handles keep the event
|
|
88
|
+
// loop alive past the command's nominal completion.
|
|
89
|
+
await synced.stop().catch(() => { });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve once `balances.synced` flips to true, or once `timeoutMs`
|
|
95
|
+
* elapses (whichever comes first). On timeout the latest snapshot is
|
|
96
|
+
* returned — the caller can read `b.synced` to know whether the
|
|
97
|
+
* answer is authoritative or pending.
|
|
98
|
+
*/
|
|
99
|
+
function waitForSynced(synced, timeoutMs) {
|
|
100
|
+
return new Promise((resolveOuter) => {
|
|
101
|
+
if (synced.balances.synced)
|
|
102
|
+
return resolveOuter();
|
|
103
|
+
let settled = false;
|
|
104
|
+
const finish = () => {
|
|
105
|
+
if (settled)
|
|
106
|
+
return;
|
|
107
|
+
settled = true;
|
|
108
|
+
try {
|
|
109
|
+
unsub();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
/* idempotent */
|
|
113
|
+
}
|
|
114
|
+
clearTimeout(timer);
|
|
115
|
+
resolveOuter();
|
|
116
|
+
};
|
|
117
|
+
const unsub = synced.subscribe((b) => {
|
|
118
|
+
if (b.synced)
|
|
119
|
+
finish();
|
|
120
|
+
});
|
|
121
|
+
const timer = setTimeout(finish, timeoutMs).unref();
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseCommand } from '../base-command.js';
|
|
2
|
+
export default class Call extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
circuit: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
address: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
artifact: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
witnesses: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'project-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
args: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
};
|
|
24
|
+
run(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,OAAgB,WAAW,SAA2C;IAEtE,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;;MAyBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoE3B"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { BaseCommand } from '../base-command.js';
|
|
4
|
+
import { callCircuit, describeProver, loadContractArtifact, parseArgs, resolveProverConfig, startWalletSync, } from '@shieldedtech/moth-wallet';
|
|
5
|
+
import { getPassphrase } from '../adapters/passphrase.js';
|
|
6
|
+
export default class Call extends BaseCommand {
|
|
7
|
+
static description = 'Call a circuit on a deployed contract';
|
|
8
|
+
static args = {
|
|
9
|
+
circuit: Args.string({
|
|
10
|
+
description: 'Circuit name to call',
|
|
11
|
+
required: false,
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
static flags = {
|
|
15
|
+
...BaseCommand.baseFlags,
|
|
16
|
+
address: Flags.string({
|
|
17
|
+
required: false,
|
|
18
|
+
description: 'Deployed contract address',
|
|
19
|
+
}),
|
|
20
|
+
artifact: Flags.string({
|
|
21
|
+
required: false,
|
|
22
|
+
description: 'Path to compiled contract artifact (managed/ directory)',
|
|
23
|
+
}),
|
|
24
|
+
witnesses: Flags.string({
|
|
25
|
+
description: 'Path to witness provider JS file',
|
|
26
|
+
}),
|
|
27
|
+
'project-dir': Flags.string({
|
|
28
|
+
description: 'Project directory for SDK dependency resolution',
|
|
29
|
+
env: 'MOTH_PROJECT_DIR',
|
|
30
|
+
}),
|
|
31
|
+
args: Flags.string({
|
|
32
|
+
description: 'Circuit arguments as JSON or @file.json. A JSON array supplies positional arguments ' +
|
|
33
|
+
'in circuit order; a single non-array value is treated as one argument. Bytes<N> values ' +
|
|
34
|
+
'are hex strings like "0x0011..." (decoded to Uint8Array); Uint<..>/Field values MUST be ' +
|
|
35
|
+
'bigint-literal strings like "5000000n" (a bare JSON number fails at proving time).',
|
|
36
|
+
}),
|
|
37
|
+
yes: Flags.boolean({ char: 'y', description: 'Skip confirmation prompt', default: false }),
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
const { args, flags } = await this.parse(Call);
|
|
41
|
+
this.outputFormat = flags.output ?? 'text';
|
|
42
|
+
this.verbose = flags.verbose;
|
|
43
|
+
const circuit = await this.promptIfMissing(args.circuit, 'Circuit name');
|
|
44
|
+
const address = await this.promptIfMissing(flags.address, 'Contract address');
|
|
45
|
+
const artifactPath = await this.promptIfMissing(flags.artifact, 'Path to compiled contract artifact');
|
|
46
|
+
const circuitArgs = flags.args ? await parseArgs(flags.args) : {};
|
|
47
|
+
// Validate artifact
|
|
48
|
+
const artifact = await loadContractArtifact(resolve(artifactPath));
|
|
49
|
+
this.log_verbose(`Loaded artifact: ${artifact.path} (circuits: ${artifact.circuits.join(', ')})`);
|
|
50
|
+
const walletName = await this.resolveWalletName(flags);
|
|
51
|
+
const passphrase = await getPassphrase();
|
|
52
|
+
const wallet = await this.walletManager.unlock(walletName, passphrase);
|
|
53
|
+
const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
|
|
54
|
+
// SR-003: Confirm before transaction
|
|
55
|
+
await this.confirmTransaction({
|
|
56
|
+
'Operation': `Call circuit "${circuit}"`,
|
|
57
|
+
'Contract': address,
|
|
58
|
+
'Artifact': artifact.path,
|
|
59
|
+
'Network': network.id,
|
|
60
|
+
'Wallet': walletName,
|
|
61
|
+
'Prover': describeProver(resolveProverConfig(network)),
|
|
62
|
+
'Arguments': flags.args ?? '(none)',
|
|
63
|
+
}, flags);
|
|
64
|
+
// Sync wallet before call — needed for transaction balancing (DUST fees + signing)
|
|
65
|
+
process.stderr.write('Syncing wallet before call...\n');
|
|
66
|
+
const syncedWallet = await startWalletSync(wallet.walletKeys, network, (msg) => {
|
|
67
|
+
this.log_verbose(msg);
|
|
68
|
+
if (msg.includes('syncing') || msg.includes('synced')) {
|
|
69
|
+
process.stderr.write(`\r ${msg}${''.padEnd(20)}`);
|
|
70
|
+
}
|
|
71
|
+
}, walletName);
|
|
72
|
+
process.stderr.write('\n');
|
|
73
|
+
try {
|
|
74
|
+
process.stderr.write('Calling circuit...\n');
|
|
75
|
+
const result = await callCircuit({
|
|
76
|
+
contractAddress: address,
|
|
77
|
+
circuitName: circuit,
|
|
78
|
+
args: circuitArgs,
|
|
79
|
+
keys: wallet.keys,
|
|
80
|
+
walletKeys: wallet.walletKeys,
|
|
81
|
+
witnesses: flags.witnesses ? (await import(resolve(flags.witnesses))).default : undefined,
|
|
82
|
+
network,
|
|
83
|
+
syncedWallet,
|
|
84
|
+
artifactPath: artifact.path,
|
|
85
|
+
projectDir: flags['project-dir'] ? resolve(flags['project-dir']) : undefined,
|
|
86
|
+
timeoutMs: flags.timeout ? flags.timeout * 1000 : 120_000,
|
|
87
|
+
});
|
|
88
|
+
this.outputSuccess({
|
|
89
|
+
txHash: result.hash,
|
|
90
|
+
status: result.status,
|
|
91
|
+
blockHash: result.blockHash,
|
|
92
|
+
blockHeight: result.blockHeight,
|
|
93
|
+
fees: result.fees,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
await syncedWallet.stop();
|
|
98
|
+
wallet.lock();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseCommand } from '../base-command.js';
|
|
2
|
+
export default class Config extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
action: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
6
|
+
key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
};
|
|
20
|
+
run(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,OAAgB,WAAW,SAAqC;IAEhE,OAAgB,IAAI;;;;MAIlB;IAEF,OAAgB,KAAK;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqC3B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { BaseCommand } from '../base-command.js';
|
|
3
|
+
const ALLOWED_KEYS = ['default-network', 'prover', 'proof-server-url', 'node-url', 'indexer-url', 'check-matrix', 'matrix-url'];
|
|
4
|
+
export default class Config extends BaseCommand {
|
|
5
|
+
static description = 'Get or set configuration values';
|
|
6
|
+
static args = {
|
|
7
|
+
action: Args.string({ description: 'Action: get or set', required: false, options: ['get', 'set'] }),
|
|
8
|
+
key: Args.string({ description: 'Configuration key', required: true }),
|
|
9
|
+
value: Args.string({ description: 'Value to set (required for set)' }),
|
|
10
|
+
};
|
|
11
|
+
static flags = {
|
|
12
|
+
...BaseCommand.baseFlags,
|
|
13
|
+
};
|
|
14
|
+
async run() {
|
|
15
|
+
const { args, flags } = await this.parse(Config);
|
|
16
|
+
this.outputFormat = flags.output ?? 'text';
|
|
17
|
+
if (!ALLOWED_KEYS.includes(args.key)) {
|
|
18
|
+
this.outputError('INVALID_INPUT', `Unknown config key "${args.key}". Valid keys: ${ALLOWED_KEYS.join(', ')}`);
|
|
19
|
+
this.exit(1);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const configKey = `config/${args.key}`;
|
|
23
|
+
const encoder = new TextEncoder();
|
|
24
|
+
const decoder = new TextDecoder();
|
|
25
|
+
if (args.action === 'get') {
|
|
26
|
+
const data = await this.storage.read(configKey);
|
|
27
|
+
if (!data) {
|
|
28
|
+
this.outputError('INVALID_INPUT', `Config key "${args.key}" is not set`);
|
|
29
|
+
this.exit(1);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.outputSuccess({ key: args.key, value: decoder.decode(data) });
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
if (!args.value) {
|
|
36
|
+
this.outputError('INVALID_INPUT', 'Value is required for set');
|
|
37
|
+
this.exit(1);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (args.key === 'prover' && args.value !== 'server' && args.value !== 'wasm') {
|
|
41
|
+
this.outputError('INVALID_INPUT', 'Prover must be "server" or "wasm"');
|
|
42
|
+
this.exit(1);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
await this.storage.write(configKey, encoder.encode(args.value));
|
|
46
|
+
this.outputSuccess({ key: args.key, value: args.value });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
export default class DaemonCall extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
circuit: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
address: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
artifact: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
witnesses: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
'project-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
args: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'timeout-ms': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
bind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
};
|
|
25
|
+
run(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon/call.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAWrE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,OAAgB,WAAW,SAC2O;IAEtQ,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;;;MAyBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmE3B"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Call a contract circuit through the running TUI daemon. The CLI sends
|
|
2
|
+
// intent (contract address, circuit, args, artifact path); the TUI
|
|
3
|
+
// loads the artifact and witnesses, derives keys from its in-memory
|
|
4
|
+
// seed, builds + balances + proves + signs + submits the call.
|
|
5
|
+
// Spending keys never leave the TUI.
|
|
6
|
+
//
|
|
7
|
+
// Path-based fields (--artifact, --witnesses, --project-dir) refer to
|
|
8
|
+
// files on the TUI host's filesystem. In single-host mode (local
|
|
9
|
+
// daemon + local CLI) this is fine and matches the existing `moth
|
|
10
|
+
// call` UX. A future remote-host mode would have to ship artifact
|
|
11
|
+
// bytes over the wire.
|
|
12
|
+
import { Args, Flags } from '@oclif/core';
|
|
13
|
+
import { resolve } from 'node:path';
|
|
14
|
+
import { BaseCommand, daemonClientFlags } from '../../base-command.js';
|
|
15
|
+
export default class DaemonCall extends BaseCommand {
|
|
16
|
+
static description = 'Call a contract circuit through the running TUI daemon. The TUI does the whole pipeline (build, balance, prove via the proof server, sign, submit); spending keys never leave the TUI. Triggers an L3 confirmation modal showing the contract, circuit, and args.';
|
|
17
|
+
static args = {
|
|
18
|
+
circuit: Args.string({
|
|
19
|
+
description: 'Circuit name to call',
|
|
20
|
+
required: false,
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
static flags = {
|
|
24
|
+
...BaseCommand.baseFlags,
|
|
25
|
+
...daemonClientFlags,
|
|
26
|
+
address: Flags.string({
|
|
27
|
+
description: 'Deployed contract address (bech32m)',
|
|
28
|
+
required: true,
|
|
29
|
+
}),
|
|
30
|
+
artifact: Flags.string({
|
|
31
|
+
description: 'Path to compiled contract artifact (managed/ directory) on the TUI host',
|
|
32
|
+
required: true,
|
|
33
|
+
}),
|
|
34
|
+
witnesses: Flags.string({
|
|
35
|
+
description: 'Path to witness provider JS file on the TUI host',
|
|
36
|
+
}),
|
|
37
|
+
'project-dir': Flags.string({
|
|
38
|
+
description: 'Project directory for SDK dependency resolution',
|
|
39
|
+
env: 'MOTH_PROJECT_DIR',
|
|
40
|
+
}),
|
|
41
|
+
args: Flags.string({
|
|
42
|
+
description: 'Circuit arguments as JSON or @file.json',
|
|
43
|
+
}),
|
|
44
|
+
'timeout-ms': Flags.integer({
|
|
45
|
+
description: 'Override the RPC timeout (default: 600000)',
|
|
46
|
+
default: 600_000,
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
49
|
+
async run() {
|
|
50
|
+
const { args, flags } = await this.parse(DaemonCall);
|
|
51
|
+
this.outputFormat = flags.output ?? 'text';
|
|
52
|
+
this.verbose = flags.verbose;
|
|
53
|
+
const circuit = await this.promptIfMissing(args.circuit, 'Circuit name');
|
|
54
|
+
const walletName = await this.resolveWalletName(flags);
|
|
55
|
+
const network = await this.getNetworkConfig(flags.network, this.getNetworkOverrides(flags));
|
|
56
|
+
// Resolve filesystem paths now so we hand the daemon something
|
|
57
|
+
// unambiguous. The daemon will re-resolve against its own CWD —
|
|
58
|
+
// since CLI and TUI both run on the same host in this mode, the
|
|
59
|
+
// results match.
|
|
60
|
+
const artifactPath = resolve(flags.artifact);
|
|
61
|
+
const witnessesPath = flags.witnesses ? resolve(flags.witnesses) : undefined;
|
|
62
|
+
const projectDir = flags['project-dir'] ? resolve(flags['project-dir']) : undefined;
|
|
63
|
+
const client = await this.connectDaemonOrExit(network.id, walletName, { bind: flags.bind });
|
|
64
|
+
if (!client)
|
|
65
|
+
return;
|
|
66
|
+
try {
|
|
67
|
+
const state = await client.call('getState');
|
|
68
|
+
if (!state.ready) {
|
|
69
|
+
this.outputError('WALLET_ERROR', `TUI is running but the wallet facade for "${walletName}" is still initializing on ${network.id}. Wait for the TUI to finish unlocking / starting sync and retry.`);
|
|
70
|
+
this.exit(1);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.log_verbose(`Calling circuit "${circuit}" on ${flags.address} via daemon ${client.daemonVersion}`);
|
|
74
|
+
const result = await client.call('callCircuit', {
|
|
75
|
+
contractAddress: flags.address,
|
|
76
|
+
circuitName: circuit,
|
|
77
|
+
args: flags.args,
|
|
78
|
+
artifactPath,
|
|
79
|
+
witnessesPath,
|
|
80
|
+
projectDir,
|
|
81
|
+
}, { timeoutMs: flags['timeout-ms'] });
|
|
82
|
+
if (this.outputFormat === 'json') {
|
|
83
|
+
this.outputSuccess(result);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.log(`Circuit call submitted. Transaction hash: ${result.txHash}`);
|
|
87
|
+
this.log(`Status: ${result.status}`);
|
|
88
|
+
if (result.blockHash)
|
|
89
|
+
this.log(`Block hash: ${result.blockHash}`);
|
|
90
|
+
if (result.blockHeight !== null)
|
|
91
|
+
this.log(`Block height: ${result.blockHeight}`);
|
|
92
|
+
if (result.fees) {
|
|
93
|
+
this.log(`Fees: paid ${result.fees.paid}, estimated ${result.fees.estimated}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
const { category, message } = this.renderDaemonError(err);
|
|
99
|
+
this.outputError(category, message);
|
|
100
|
+
this.exit(1);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
client.close();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../../src/commands/daemon/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
export default class DaemonDeploy extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
artifact: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
artifact: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
witnesses: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'project-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
args: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
'private-state': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
'timeout-ms': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
bind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
network: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
wallet: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
'proof-server': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
prover: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
indexer: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
'node-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
};
|
|
25
|
+
run(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/daemon/deploy.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AAWrE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,OAAgB,WAAW,SAC2Q;IAEtS,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;;;MAuBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoE3B"}
|