@ravi-hq/ravi 0.5.3 → 0.5.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.
- package/README.md +62 -68
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/bin/ravi-secrets.d.ts +3 -3
- package/dist/bin/ravi-secrets.js +7 -7
- package/dist/bin/ravi-secrets.js.map +1 -1
- package/dist/channels/email-trusted.d.ts.map +1 -1
- package/dist/channels/email-trusted.js +5 -7
- package/dist/channels/email-trusted.js.map +1 -1
- package/dist/channels/email-untrusted.d.ts.map +1 -1
- package/dist/channels/email-untrusted.js +5 -7
- package/dist/channels/email-untrusted.js.map +1 -1
- package/dist/channels/email.d.ts +12 -22
- package/dist/channels/email.d.ts.map +1 -1
- package/dist/channels/email.js +48 -54
- package/dist/channels/email.js.map +1 -1
- package/dist/cli.d.ts +15 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +271 -211
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +62 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +75 -33
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +7 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -76
- package/dist/index.js.map +1 -1
- package/dist/sse-pool.d.ts +5 -2
- package/dist/sse-pool.d.ts.map +1 -1
- package/dist/sse-pool.js +9 -7
- package/dist/sse-pool.js.map +1 -1
- package/dist/sse.d.ts +7 -21
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +10 -33
- package/dist/sse.js.map +1 -1
- package/dist/tools/contacts.d.ts +14 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +186 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/email-send.d.ts.map +1 -1
- package/dist/tools/email-send.js +11 -4
- package/dist/tools/email-send.js.map +1 -1
- package/dist/tools/identity.d.ts +2 -2
- package/dist/tools/identity.d.ts.map +1 -1
- package/dist/tools/identity.js +14 -6
- package/dist/tools/identity.js.map +1 -1
- package/dist/tools/inbox.js +7 -7
- package/dist/tools/inbox.js.map +1 -1
- package/dist/tools/passwords.d.ts.map +1 -1
- package/dist/tools/passwords.js +20 -7
- package/dist/tools/passwords.js.map +1 -1
- package/dist/tools/secrets.d.ts +15 -0
- package/dist/tools/secrets.d.ts.map +1 -0
- package/dist/tools/{vault.js → secrets.js} +23 -23
- package/dist/tools/secrets.js.map +1 -0
- package/dist/tools/sms-send.d.ts.map +1 -1
- package/dist/tools/sms-send.js +3 -1
- package/dist/tools/sms-send.js.map +1 -1
- package/dist/types.d.ts +18 -12
- package/dist/types.d.ts.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -13
- package/dist/channels/sms-trusted.d.ts +0 -161
- package/dist/channels/sms-trusted.d.ts.map +0 -1
- package/dist/channels/sms-trusted.js +0 -306
- package/dist/channels/sms-trusted.js.map +0 -1
- package/dist/channels/sms-untrusted.d.ts +0 -124
- package/dist/channels/sms-untrusted.d.ts.map +0 -1
- package/dist/channels/sms-untrusted.js +0 -269
- package/dist/channels/sms-untrusted.js.map +0 -1
- package/dist/channels/sms.d.ts +0 -279
- package/dist/channels/sms.d.ts.map +0 -1
- package/dist/channels/sms.js +0 -385
- package/dist/channels/sms.js.map +0 -1
- package/dist/service.d.ts +0 -107
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -211
- package/dist/service.js.map +0 -1
- package/dist/tools/vault.d.ts +0 -15
- package/dist/tools/vault.d.ts.map +0 -1
- package/dist/tools/vault.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@ import { execFile } from "node:child_process";
|
|
|
2
2
|
import { platform } from "node:os";
|
|
3
3
|
import { RAVI_API_URL } from "./config.js";
|
|
4
4
|
import { RaviClient, RaviApiError } from "./client.js";
|
|
5
|
-
import { loadAuth, saveAuth, saveConfig, saveRecoveryKey } from "./auth.js";
|
|
5
|
+
import { loadAuth, saveAuth, updateAuth, saveConfig, saveRecoveryKey } from "./auth.js";
|
|
6
6
|
/** Try to open a URL in the user's default browser. Non-fatal on failure. */
|
|
7
7
|
function openBrowser(url) {
|
|
8
8
|
const cmd = platform() === "darwin" ? "open" :
|
|
@@ -141,228 +141,291 @@ async function promptChoice(prompt, count) {
|
|
|
141
141
|
stdin.on("end", onEnd);
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Run the full device-code authentication flow: initiate → poll → encryption
|
|
146
|
+
* setup → save credentials. Does NOT select an identity or configure OpenClaw.
|
|
147
|
+
*/
|
|
148
|
+
export async function performLogin() {
|
|
149
|
+
const apiUrl = RAVI_API_URL;
|
|
150
|
+
// Step 1: Initiate device code flow
|
|
151
|
+
const response = await fetch(`${apiUrl}/api/auth/device/`, {
|
|
152
|
+
method: "POST",
|
|
153
|
+
headers: { "Content-Type": "application/json" },
|
|
154
|
+
});
|
|
155
|
+
if (!response.ok) {
|
|
156
|
+
const detail = await response.text().catch(() => "");
|
|
157
|
+
throw new Error(`Failed to initiate device code flow (HTTP ${response.status}): ${detail}`);
|
|
158
|
+
}
|
|
159
|
+
const data = (await response.json());
|
|
160
|
+
// Step 2: Open browser and display user code
|
|
161
|
+
// Write the URL immediately so the user can copy-paste it (critical for headless VMs)
|
|
162
|
+
const url = new URL(data.verification_uri);
|
|
163
|
+
url.searchParams.set("user_code", data.user_code);
|
|
164
|
+
const verifyUrl = url.toString();
|
|
165
|
+
openBrowser(verifyUrl);
|
|
166
|
+
process.stderr.write(`\nTo authenticate, visit: ${verifyUrl}\n`);
|
|
167
|
+
process.stderr.write(`Code: ${data.user_code}\n`);
|
|
168
|
+
process.stderr.write(`(Attempting to open browser automatically)\n\n`);
|
|
169
|
+
process.stderr.write(`Waiting for authorization...\n`);
|
|
170
|
+
// Step 3: Poll for token until authorized or expired
|
|
171
|
+
const intervalMs = (data.interval || 5) * 1000;
|
|
172
|
+
const deadline = Date.now() + data.expires_in * 1000;
|
|
173
|
+
let consecutiveNetworkErrors = 0;
|
|
174
|
+
while (Date.now() < deadline) {
|
|
175
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
176
|
+
let tokenResponse;
|
|
177
|
+
try {
|
|
178
|
+
tokenResponse = await fetch(`${apiUrl}/api/auth/device/token/`, {
|
|
179
|
+
method: "POST",
|
|
180
|
+
headers: { "Content-Type": "application/json" },
|
|
181
|
+
body: JSON.stringify({ device_code: data.device_code }),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
consecutiveNetworkErrors++;
|
|
186
|
+
if (consecutiveNetworkErrors >= 3) {
|
|
187
|
+
throw new Error(`Network error during login — failed ${consecutiveNetworkErrors} consecutive times. ` +
|
|
188
|
+
`Check your network connection and that ${apiUrl} is reachable.`);
|
|
189
|
+
}
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
consecutiveNetworkErrors = 0;
|
|
193
|
+
if (tokenResponse.ok) {
|
|
194
|
+
const tokenData = (await tokenResponse.json());
|
|
195
|
+
const client = new RaviClient({ apiUrl, token: tokenData.access });
|
|
196
|
+
process.stderr.write(`\nAuthenticated as ${tokenData.user.email}\n\n`);
|
|
197
|
+
// Build auth.json — tokens first, encryption keys added below
|
|
198
|
+
const authData = {
|
|
199
|
+
access_token: tokenData.access,
|
|
200
|
+
refresh_token: tokenData.refresh,
|
|
201
|
+
user_email: tokenData.user.email,
|
|
202
|
+
};
|
|
203
|
+
// Step 4: Encryption setup — derive keypair and store in auth.json
|
|
204
|
+
let meta = null;
|
|
205
|
+
try {
|
|
206
|
+
meta = await client.getEncryptionMeta();
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
210
|
+
process.stderr.write(`WARNING: Could not check encryption status: ${msg}\n\n`);
|
|
211
|
+
}
|
|
212
|
+
if (meta && !meta.public_key) {
|
|
213
|
+
// First-time setup — prompt for PIN, derive keypair, store keys
|
|
214
|
+
try {
|
|
215
|
+
const pin = await promptAndConfirmPIN();
|
|
216
|
+
const { setupEncryption } = await import("./crypto.js");
|
|
217
|
+
const setup = await setupEncryption(pin);
|
|
218
|
+
const recoveryPath = saveRecoveryKey(setup.recoveryKey);
|
|
219
|
+
await client.updateEncryptionMeta({
|
|
220
|
+
salt: setup.salt,
|
|
221
|
+
public_key: setup.publicKey,
|
|
222
|
+
verifier: setup.verifier,
|
|
223
|
+
});
|
|
224
|
+
// Store derived keypair in auth.json (returned by setupEncryption)
|
|
225
|
+
const { bytesToBase64 } = await import("./crypto.js");
|
|
226
|
+
authData.pin_salt = setup.salt;
|
|
227
|
+
authData.public_key = setup.publicKey;
|
|
228
|
+
authData.private_key = bytesToBase64(setup.keyPair.secretKey);
|
|
229
|
+
process.stderr.write(`E2E encryption set up successfully!\n`);
|
|
230
|
+
process.stderr.write(`Recovery key saved to ${recoveryPath} — back this up!\n\n`);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
if (err instanceof Error && err.message === "Cancelled")
|
|
234
|
+
throw err;
|
|
235
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
236
|
+
process.stderr.write(`PIN setup skipped: ${msg}\n`);
|
|
237
|
+
process.stderr.write(`Run 'openclaw ravi login' again to set up encryption.\n\n`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else if (meta && meta.public_key) {
|
|
241
|
+
// Existing encryption — verify PIN, derive and store keypair (up to 3 attempts)
|
|
242
|
+
const { deriveKeyPair, verify, bytesToBase64 } = await import("./crypto.js");
|
|
243
|
+
let pinVerified = false;
|
|
244
|
+
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
245
|
+
try {
|
|
246
|
+
const pin = await promptExistingPIN();
|
|
247
|
+
const kp = await deriveKeyPair(pin, meta.salt);
|
|
248
|
+
const valid = await verify(kp, meta.verifier);
|
|
249
|
+
if (!valid) {
|
|
250
|
+
const remaining = 3 - attempt;
|
|
251
|
+
if (remaining > 0) {
|
|
252
|
+
process.stderr.write(`Incorrect PIN. ${remaining} attempt${remaining === 1 ? "" : "s"} remaining.\n`);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
process.stderr.write(`Incorrect PIN. No attempts remaining.\n`);
|
|
256
|
+
}
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
// Extra safety: verify derived public key matches server's stored key
|
|
260
|
+
const derivedPubB64 = bytesToBase64(kp.publicKey);
|
|
261
|
+
if (derivedPubB64 !== meta.public_key) {
|
|
262
|
+
process.stderr.write(`WARNING: Derived public key does not match server record — possible data corruption.\n`);
|
|
263
|
+
process.stderr.write(`Run 'openclaw ravi login' again or contact support.\n\n`);
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
authData.pin_salt = meta.salt;
|
|
267
|
+
authData.public_key = meta.public_key;
|
|
268
|
+
authData.private_key = bytesToBase64(kp.secretKey);
|
|
269
|
+
pinVerified = true;
|
|
270
|
+
process.stderr.write(`PIN verified — E2E encryption is ready.\n\n`);
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
if (err instanceof Error && err.message === "Cancelled")
|
|
275
|
+
throw err;
|
|
276
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
277
|
+
process.stderr.write(`PIN entry failed: ${msg}\n\n`);
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (!pinVerified) {
|
|
282
|
+
process.stderr.write(`Encryption keys not saved. Run 'openclaw ravi login' to try again.\n\n`);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Save auth to ~/.ravi/auth.json (like CLI)
|
|
286
|
+
saveAuth(authData);
|
|
287
|
+
process.stderr.write(`Credentials saved to ~/.ravi/auth.json\n\n`);
|
|
288
|
+
return { client, authData, userEmail: tokenData.user.email };
|
|
289
|
+
}
|
|
290
|
+
// Check whether the error is "still waiting" or a terminal failure
|
|
291
|
+
const error = (await tokenResponse.json().catch(() => ({})));
|
|
292
|
+
if (error.error !== "authorization_pending") {
|
|
293
|
+
throw new Error(`Device code flow failed: ${error.error ?? `HTTP ${tokenResponse.status}`}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
throw new Error("Device code expired. Please try again.");
|
|
297
|
+
}
|
|
144
298
|
// ─── Command Definitions ────────────────────────────────────────────────────
|
|
145
299
|
/**
|
|
146
300
|
* All CLI commands exposed by the Ravi plugin.
|
|
147
301
|
*
|
|
148
302
|
* OpenClaw registers these so the user can run `openclaw ravi login`,
|
|
149
|
-
* `openclaw ravi status`, etc.
|
|
303
|
+
* `openclaw ravi onboard`, `openclaw ravi status`, etc.
|
|
150
304
|
*/
|
|
151
305
|
export const cliCommands = [
|
|
152
306
|
// ── login ───────────────────────────────────────────────────────────────
|
|
153
307
|
{
|
|
154
308
|
name: "login",
|
|
155
309
|
description: "Authenticate with Ravi using device code flow. Opens a browser for login.",
|
|
310
|
+
handler: async (_args, _config) => {
|
|
311
|
+
await performLogin();
|
|
312
|
+
return "Login complete.";
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
// ── onboard ─────────────────────────────────────────────────────────────
|
|
316
|
+
{
|
|
317
|
+
name: "onboard",
|
|
318
|
+
description: "Full first-time setup: authenticate, select identity, configure OpenClaw and secrets provider.",
|
|
156
319
|
handler: async (_args, _config) => {
|
|
157
320
|
const apiUrl = RAVI_API_URL;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
321
|
+
let client;
|
|
322
|
+
// Step 1: Check existing auth — skip login if already authenticated
|
|
323
|
+
const existingAuth = loadAuth();
|
|
324
|
+
if (existingAuth?.access_token) {
|
|
325
|
+
client = new RaviClient({
|
|
326
|
+
apiUrl,
|
|
327
|
+
token: existingAuth.access_token,
|
|
328
|
+
refreshToken: existingAuth.refresh_token,
|
|
329
|
+
onTokenRefresh: (newToken) => {
|
|
330
|
+
updateAuth({ access_token: newToken });
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
process.stderr.write(`Already authenticated — skipping login.\n\n`);
|
|
166
334
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const intervalMs = (data.interval || 5) * 1000;
|
|
181
|
-
const deadline = Date.now() + data.expires_in * 1000;
|
|
182
|
-
let consecutiveNetworkErrors = 0;
|
|
183
|
-
while (Date.now() < deadline) {
|
|
184
|
-
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
185
|
-
let tokenResponse;
|
|
186
|
-
try {
|
|
187
|
-
tokenResponse = await fetch(`${apiUrl}/api/auth/device/token/`, {
|
|
188
|
-
method: "POST",
|
|
189
|
-
headers: { "Content-Type": "application/json" },
|
|
190
|
-
body: JSON.stringify({ device_code: data.device_code }),
|
|
335
|
+
else {
|
|
336
|
+
const result = await performLogin();
|
|
337
|
+
client = result.client;
|
|
338
|
+
}
|
|
339
|
+
// Step 2: Identity selection
|
|
340
|
+
let selectedUuid;
|
|
341
|
+
try {
|
|
342
|
+
const identities = await client.listIdentities();
|
|
343
|
+
if (identities.length === 1) {
|
|
344
|
+
selectedUuid = identities[0].uuid;
|
|
345
|
+
saveConfig({
|
|
346
|
+
identity_uuid: identities[0].uuid,
|
|
347
|
+
identity_name: identities[0].name,
|
|
191
348
|
});
|
|
349
|
+
process.stderr.write(`Auto-selected identity: ${identities[0].name}\n\n`);
|
|
192
350
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
consecutiveNetworkErrors = 0;
|
|
202
|
-
if (tokenResponse.ok) {
|
|
203
|
-
const tokenData = (await tokenResponse.json());
|
|
204
|
-
const client = new RaviClient({ apiUrl, token: tokenData.access });
|
|
205
|
-
process.stderr.write(`\nAuthenticated as ${tokenData.user.email}\n\n`);
|
|
206
|
-
// Build auth.json — tokens first, encryption keys added below
|
|
207
|
-
const authData = {
|
|
208
|
-
access_token: tokenData.access,
|
|
209
|
-
refresh_token: tokenData.refresh,
|
|
210
|
-
user_email: tokenData.user.email,
|
|
211
|
-
};
|
|
212
|
-
// Step 4: Encryption setup — derive keypair and store in auth.json
|
|
213
|
-
let meta = null;
|
|
214
|
-
try {
|
|
215
|
-
meta = await client.getEncryptionMeta();
|
|
216
|
-
}
|
|
217
|
-
catch (err) {
|
|
218
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
219
|
-
process.stderr.write(`WARNING: Could not check encryption status: ${msg}\n\n`);
|
|
220
|
-
}
|
|
221
|
-
if (meta && !meta.public_key) {
|
|
222
|
-
// First-time setup — prompt for PIN, derive keypair, store keys
|
|
223
|
-
try {
|
|
224
|
-
const pin = await promptAndConfirmPIN();
|
|
225
|
-
const { setupEncryption } = await import("./crypto.js");
|
|
226
|
-
const setup = await setupEncryption(pin);
|
|
227
|
-
const recoveryPath = saveRecoveryKey(setup.recoveryKey);
|
|
228
|
-
await client.updateEncryptionMeta({
|
|
229
|
-
salt: setup.salt,
|
|
230
|
-
public_key: setup.publicKey,
|
|
231
|
-
verifier: setup.verifier,
|
|
232
|
-
});
|
|
233
|
-
// Store derived keypair in auth.json (returned by setupEncryption)
|
|
234
|
-
const { bytesToBase64 } = await import("./crypto.js");
|
|
235
|
-
authData.pin_salt = setup.salt;
|
|
236
|
-
authData.public_key = setup.publicKey;
|
|
237
|
-
authData.private_key = bytesToBase64(setup.keyPair.secretKey);
|
|
238
|
-
process.stderr.write(`E2E encryption set up successfully!\n`);
|
|
239
|
-
process.stderr.write(`Recovery key saved to ${recoveryPath} — back this up!\n\n`);
|
|
240
|
-
}
|
|
241
|
-
catch (err) {
|
|
242
|
-
if (err instanceof Error && err.message === "Cancelled")
|
|
243
|
-
throw err;
|
|
244
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
245
|
-
process.stderr.write(`PIN setup skipped: ${msg}\n`);
|
|
246
|
-
process.stderr.write(`Run 'openclaw ravi login' again to set up encryption.\n\n`);
|
|
247
|
-
}
|
|
351
|
+
else if (identities.length > 1) {
|
|
352
|
+
// Interactive identity selection (matches Go CLI behavior)
|
|
353
|
+
process.stderr.write(`Select an identity:\n`);
|
|
354
|
+
for (let i = 0; i < identities.length; i++) {
|
|
355
|
+
const id = identities[i];
|
|
356
|
+
const details = [id.inbox, id.phone].filter(Boolean).join(", ");
|
|
357
|
+
process.stderr.write(` ${i + 1}. ${id.name}${details ? ` (${details})` : ""}\n`);
|
|
248
358
|
}
|
|
249
|
-
else if (meta && meta.public_key) {
|
|
250
|
-
// Existing encryption — verify PIN, derive and store keypair (up to 3 attempts)
|
|
251
|
-
const { deriveKeyPair, verify, bytesToBase64 } = await import("./crypto.js");
|
|
252
|
-
let pinVerified = false;
|
|
253
|
-
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
254
|
-
try {
|
|
255
|
-
const pin = await promptExistingPIN();
|
|
256
|
-
const kp = await deriveKeyPair(pin, meta.salt);
|
|
257
|
-
const valid = await verify(kp, meta.verifier);
|
|
258
|
-
if (!valid) {
|
|
259
|
-
const remaining = 3 - attempt;
|
|
260
|
-
if (remaining > 0) {
|
|
261
|
-
process.stderr.write(`Incorrect PIN. ${remaining} attempt${remaining === 1 ? "" : "s"} remaining.\n`);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
process.stderr.write(`Incorrect PIN. No attempts remaining.\n`);
|
|
265
|
-
}
|
|
266
|
-
continue;
|
|
267
|
-
}
|
|
268
|
-
// Extra safety: verify derived public key matches server's stored key
|
|
269
|
-
const derivedPubB64 = bytesToBase64(kp.publicKey);
|
|
270
|
-
if (derivedPubB64 !== meta.public_key) {
|
|
271
|
-
process.stderr.write(`WARNING: Derived public key does not match server record — possible data corruption.\n`);
|
|
272
|
-
process.stderr.write(`Run 'openclaw ravi login' again or contact support.\n\n`);
|
|
273
|
-
break;
|
|
274
|
-
}
|
|
275
|
-
authData.pin_salt = meta.salt;
|
|
276
|
-
authData.public_key = meta.public_key;
|
|
277
|
-
authData.private_key = bytesToBase64(kp.secretKey);
|
|
278
|
-
pinVerified = true;
|
|
279
|
-
process.stderr.write(`PIN verified — E2E encryption is ready.\n\n`);
|
|
280
|
-
break;
|
|
281
|
-
}
|
|
282
|
-
catch (err) {
|
|
283
|
-
if (err instanceof Error && err.message === "Cancelled")
|
|
284
|
-
throw err;
|
|
285
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
286
|
-
process.stderr.write(`PIN entry failed: ${msg}\n\n`);
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
if (!pinVerified) {
|
|
291
|
-
process.stderr.write(`Encryption keys not saved. Run 'openclaw ravi login' to try again.\n\n`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
// Save auth to ~/.ravi/auth.json (like CLI)
|
|
295
|
-
saveAuth(authData);
|
|
296
|
-
process.stderr.write(`Credentials saved to ~/.ravi/auth.json\n\n`);
|
|
297
|
-
// Step 5: Identity selection + OpenClaw config update
|
|
298
359
|
try {
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
process.stderr.write(`Auto-selected identity: ${identities[0].name}\n\n`);
|
|
308
|
-
}
|
|
309
|
-
else if (identities.length > 1) {
|
|
310
|
-
// Interactive identity selection (matches Go CLI behavior)
|
|
311
|
-
process.stderr.write(`Select an identity:\n`);
|
|
312
|
-
for (let i = 0; i < identities.length; i++) {
|
|
313
|
-
const id = identities[i];
|
|
314
|
-
const details = [id.inbox, id.phone].filter(Boolean).join(", ");
|
|
315
|
-
process.stderr.write(` ${i + 1}. ${id.name}${details ? ` (${details})` : ""}\n`);
|
|
316
|
-
}
|
|
317
|
-
try {
|
|
318
|
-
const idx = await promptChoice(`Enter number [1-${identities.length}]: `, identities.length);
|
|
319
|
-
const selected = identities[idx];
|
|
320
|
-
selectedUuid = selected.uuid;
|
|
321
|
-
saveConfig({
|
|
322
|
-
identity_uuid: selected.uuid,
|
|
323
|
-
identity_name: selected.name,
|
|
324
|
-
});
|
|
325
|
-
process.stderr.write(`Selected: ${selected.name}\n\n`);
|
|
326
|
-
}
|
|
327
|
-
catch {
|
|
328
|
-
// Fallback to first if prompt fails (non-interactive)
|
|
329
|
-
selectedUuid = identities[0].uuid;
|
|
330
|
-
saveConfig({
|
|
331
|
-
identity_uuid: identities[0].uuid,
|
|
332
|
-
identity_name: identities[0].name,
|
|
333
|
-
});
|
|
334
|
-
process.stderr.write(`Defaulting to: ${identities[0].name}\n\n`);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
process.stderr.write(`No identities found. Create one with the ravi_identity_create tool.\n`);
|
|
339
|
-
}
|
|
340
|
-
// Try to auto-configure OpenClaw with the selected identity
|
|
341
|
-
if (selectedUuid) {
|
|
342
|
-
const configPath = "plugins.entries.ravi.config.identityUuid";
|
|
343
|
-
const ok = await openclawConfigSet(configPath, selectedUuid);
|
|
344
|
-
if (ok) {
|
|
345
|
-
process.stderr.write(`OpenClaw config updated automatically (identityUuid set).\n`);
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
process.stderr.write(`To complete setup, run:\n\n`);
|
|
349
|
-
process.stderr.write(` openclaw config set ${configPath} "${selectedUuid}"\n`);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
360
|
+
const idx = await promptChoice(`Enter number [1-${identities.length}]: `, identities.length);
|
|
361
|
+
const selected = identities[idx];
|
|
362
|
+
selectedUuid = selected.uuid;
|
|
363
|
+
saveConfig({
|
|
364
|
+
identity_uuid: selected.uuid,
|
|
365
|
+
identity_name: selected.name,
|
|
366
|
+
});
|
|
367
|
+
process.stderr.write(`Selected: ${selected.name}\n\n`);
|
|
352
368
|
}
|
|
353
369
|
catch (err) {
|
|
354
|
-
|
|
355
|
-
|
|
370
|
+
if (err instanceof Error && err.message === "Cancelled")
|
|
371
|
+
throw err;
|
|
372
|
+
// Fallback to first if prompt fails (non-interactive)
|
|
373
|
+
selectedUuid = identities[0].uuid;
|
|
374
|
+
saveConfig({
|
|
375
|
+
identity_uuid: identities[0].uuid,
|
|
376
|
+
identity_name: identities[0].name,
|
|
377
|
+
});
|
|
378
|
+
process.stderr.write(`Defaulting to: ${identities[0].name}\n\n`);
|
|
356
379
|
}
|
|
357
|
-
return output || "Login complete.";
|
|
358
380
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
381
|
+
else {
|
|
382
|
+
process.stderr.write(`No identities found. Create one with the ravi_identity_create tool.\n`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
catch (err) {
|
|
386
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
387
|
+
process.stderr.write(`Could not list identities: ${detail}\nAdd identityUuid to your config manually.\n`);
|
|
388
|
+
}
|
|
389
|
+
// Step 3: Bind identity to get identity-scoped tokens
|
|
390
|
+
if (selectedUuid) {
|
|
391
|
+
try {
|
|
392
|
+
const bindResult = await client.bindIdentity(selectedUuid);
|
|
393
|
+
updateAuth({
|
|
394
|
+
bound_access_token: bindResult.access,
|
|
395
|
+
bound_refresh_token: bindResult.refresh,
|
|
396
|
+
});
|
|
397
|
+
process.stderr.write(`Identity bound — identity-scoped tokens saved.\n`);
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
401
|
+
process.stderr.write(`WARNING: Failed to bind identity: ${detail}\n`);
|
|
402
|
+
process.stderr.write(`Identity-scoped operations may not work. Run 'openclaw ravi onboard' to retry.\n\n`);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
// Step 4: Auto-configure OpenClaw with the selected identity
|
|
406
|
+
if (selectedUuid) {
|
|
407
|
+
const configPath = "plugins.entries.ravi.config.identityUuid";
|
|
408
|
+
const ok = await openclawConfigSet(configPath, selectedUuid);
|
|
409
|
+
if (ok) {
|
|
410
|
+
process.stderr.write(`OpenClaw config updated automatically (identityUuid set).\n`);
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
process.stderr.write(`To complete setup, run:\n\n`);
|
|
414
|
+
process.stderr.write(` openclaw config set ${configPath} "${selectedUuid}"\n\n`);
|
|
363
415
|
}
|
|
364
416
|
}
|
|
365
|
-
|
|
417
|
+
// Step 5: Auto-configure secrets provider
|
|
418
|
+
const srcOk = await openclawConfigSet("secrets.providers.ravi.source", "exec");
|
|
419
|
+
const cmdOk = await openclawConfigSet("secrets.providers.ravi.command", "ravi-secrets");
|
|
420
|
+
if (srcOk && cmdOk) {
|
|
421
|
+
process.stderr.write(`Secrets provider configured (ravi-secrets).\n`);
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
process.stderr.write(`To configure the secrets provider manually, run:\n\n`);
|
|
425
|
+
process.stderr.write(` openclaw config set secrets.providers.ravi.source exec\n`);
|
|
426
|
+
process.stderr.write(` openclaw config set secrets.providers.ravi.command ravi-secrets\n\n`);
|
|
427
|
+
}
|
|
428
|
+
return "Onboard complete.";
|
|
366
429
|
},
|
|
367
430
|
},
|
|
368
431
|
// ── status ──────────────────────────────────────────────────────────────
|
|
@@ -375,7 +438,14 @@ export const cliCommands = [
|
|
|
375
438
|
return `Not logged in. Run 'openclaw ravi login' to authenticate.`;
|
|
376
439
|
}
|
|
377
440
|
const apiUrl = RAVI_API_URL;
|
|
378
|
-
const client = new RaviClient({
|
|
441
|
+
const client = new RaviClient({
|
|
442
|
+
apiUrl,
|
|
443
|
+
token: auth.access_token,
|
|
444
|
+
refreshToken: auth.refresh_token,
|
|
445
|
+
onTokenRefresh: (newToken) => {
|
|
446
|
+
updateAuth({ access_token: newToken });
|
|
447
|
+
},
|
|
448
|
+
});
|
|
379
449
|
try {
|
|
380
450
|
const identities = await client.listIdentities();
|
|
381
451
|
const hasKeypair = !!(auth.public_key && auth.private_key);
|
|
@@ -390,7 +460,7 @@ export const cliCommands = [
|
|
|
390
460
|
output += ` Phone: ${identity.phone}\n`;
|
|
391
461
|
}
|
|
392
462
|
if (!hasKeypair) {
|
|
393
|
-
output += `\nWARNING: No encryption keypair — encrypted data (passwords,
|
|
463
|
+
output += `\nWARNING: No encryption keypair — encrypted data (passwords, secrets) will not be readable.\n`;
|
|
394
464
|
output += `Run 'openclaw ravi login' to set up E2E encryption.\n`;
|
|
395
465
|
}
|
|
396
466
|
return output;
|
|
@@ -407,15 +477,5 @@ export const cliCommands = [
|
|
|
407
477
|
}
|
|
408
478
|
},
|
|
409
479
|
},
|
|
410
|
-
// ── setup (alias for login) ─────────────────────────────────────────────
|
|
411
|
-
{
|
|
412
|
-
name: "setup",
|
|
413
|
-
description: "Alias for 'login' — authenticates and configures everything in one step.",
|
|
414
|
-
handler: async (args, config) => {
|
|
415
|
-
// Delegate to the login handler
|
|
416
|
-
const loginCmd = cliCommands.find((c) => c.name === "login");
|
|
417
|
-
return loginCmd.handler(args, config);
|
|
418
|
-
},
|
|
419
|
-
},
|
|
420
480
|
];
|
|
421
481
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAmB,MAAM,WAAW,CAAC;AAGzG,6EAA6E;AAC7E,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GACP,QAAQ,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,UAAU,CAAC;IACb,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;QACvB,0DAA0D;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACnF,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU;gBAAE,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;YACvE,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzB,SAAS;gBACT,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACxC,YAAY;gBACZ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,GAAG,IAAI,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB;IAChC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,qCAAqC,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAClF,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC/B,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AA6BD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC;IAE5B,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,MAAM,MAAM,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;IAEF,6CAA6C;IAC7C,sFAAsF;IACtF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjC,WAAW,CAAC,SAAS,CAAC,CAAC;IAEvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEvD,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACrD,IAAI,wBAAwB,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,aAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,yBAAyB,EAAE;gBAC9D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB,EAAE,CAAC;YAC3B,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,uCAAuC,wBAAwB,sBAAsB;oBACrF,0CAA0C,MAAM,gBAAgB,CACjE,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,wBAAwB,GAAG,CAAC,CAAC;QAE7B,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAI5C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;YAEvE,8DAA8D;YAC9D,MAAM,QAAQ,GAAe;gBAC3B,YAAY,EAAE,SAAS,CAAC,MAAM;gBAC9B,aAAa,EAAE,SAAS,CAAC,OAAO;gBAChC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;aACjC,CAAC;YAEF,mEAAmE;YACnE,IAAI,IAAI,GAAkE,IAAI,CAAC;YAC/E,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,GAAG,MAAM,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7B,gEAAgE;gBAChE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;oBACxC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBACxD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAExD,MAAM,MAAM,CAAC,oBAAoB,CAAC;wBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,UAAU,EAAE,KAAK,CAAC,SAAS;wBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;qBACzB,CAAC,CAAC;oBAEH,mEAAmE;oBACnE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBACtD,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC/B,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;oBACtC,QAAQ,CAAC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAE9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAY,sBAAsB,CAAC,CAAC;gBACpF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;wBAAE,MAAM,GAAG,CAAC;oBACnE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,gFAAgF;gBAChF,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7E,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;wBACtC,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;4BAC9B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gCAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;4BACxG,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;4BAClE,CAAC;4BACD,SAAS;wBACX,CAAC;wBAED,sEAAsE;wBACtE,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBAClD,IAAI,aAAa,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;4BACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;4BAC/G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;4BAChF,MAAM;wBACR,CAAC;wBAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC9B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;wBACtC,QAAQ,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBACnD,WAAW,GAAG,IAAI,CAAC;wBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;wBACpE,MAAM;oBACR,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;4BAAE,MAAM,GAAG,CAAC;wBACnE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAC;wBACrD,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAEnE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/D,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1D,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,CAAC,KAAK,IAAI,QAAQ,aAAa,CAAC,MAAM,EAAE,EAAE,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,2EAA2E;IAC3E;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EACT,2EAA2E;QAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,gGAAgG;QAClG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,IAAI,MAAkB,CAAC;YAEvB,oEAAoE;YACpE,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;YAChC,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC/B,MAAM,GAAG,IAAI,UAAU,CAAC;oBACtB,MAAM;oBACN,KAAK,EAAE,YAAY,CAAC,YAAY;oBAChC,YAAY,EAAE,YAAY,CAAC,aAAa;oBACxC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE;wBACnC,UAAU,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACzC,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,CAAC;YAED,6BAA6B;YAC7B,IAAI,YAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAEjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClC,UAAU,CAAC;wBACT,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;wBACjC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;qBAClC,CAAC,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;gBAC5E,CAAC;qBAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,2DAA2D;oBAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpF,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,mBAAmB,UAAU,CAAC,MAAM,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;wBAC7F,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;wBACjC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,UAAU,CAAC;4BACT,aAAa,EAAE,QAAQ,CAAC,IAAI;4BAC5B,aAAa,EAAE,QAAQ,CAAC,IAAI;yBAC7B,CAAC,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;oBACzD,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;4BAAE,MAAM,GAAG,CAAC;wBACnE,sDAAsD;wBACtD,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAClC,UAAU,CAAC;4BACT,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;4BACjC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;yBAClC,CAAC,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,+CAA+C,CAAC,CAAC;YAC5G,CAAC;YAED,sDAAsD;YACtD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC3D,UAAU,CAAC;wBACT,kBAAkB,EAAE,UAAU,CAAC,MAAM;wBACrC,mBAAmB,EAAE,UAAU,CAAC,OAAO;qBACxC,CAAC,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,MAAM,IAAI,CAAC,CAAC;oBACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,0CAA0C,CAAC;gBAC9D,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC7D,IAAI,EAAE,EAAE,CAAC;oBACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,UAAU,KAAK,YAAY,OAAO,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAED,0CAA0C;YAC1C,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,gCAAgC,EAAE,cAAc,CAAC,CAAC;YACxF,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACnF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAChG,CAAC;YAED,OAAO,mBAAmB,CAAC;QAC7B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sDAAsD;QACnE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;gBACxB,OAAO,2DAA2D,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;gBAC5B,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE;oBACnC,UAAU,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzC,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE3D,IAAI,MAAM,GAAG,oBAAoB,MAAM,IAAI,CAAC;gBAC5C,MAAM,IAAI,mBAAmB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC3D,MAAM,IAAI,iBAAiB,UAAU,CAAC,MAAM,MAAM,CAAC;gBAEnD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,KAAK,CAAC;oBACtD,IAAI,QAAQ,CAAC,KAAK;wBAAE,MAAM,IAAI,cAAc,QAAQ,CAAC,KAAK,IAAI,CAAC;oBAC/D,IAAI,QAAQ,CAAC,KAAK;wBAAE,MAAM,IAAI,cAAc,QAAQ,CAAC,KAAK,IAAI,CAAC;gBACjE,CAAC;gBAED,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,gGAAgG,CAAC;oBAC3G,MAAM,IAAI,uDAAuD,CAAC;gBACpE,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC9E,OAAO,yEAAyE,CAAC;gBACnF,CAAC;gBACD,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACtD,OAAO,gEAAgE,CAAC;gBAC1E,CAAC;gBACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,2BAA2B,OAAO,kEAAkE,CAAC;YAC9G,CAAC;QACH,CAAC;KACF;CAEF,CAAC"}
|