@zenalexa/unicli 0.224.0 → 0.225.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/AGENTS.md +5 -5
- package/README.md +92 -92
- package/README.zh-CN.md +69 -69
- package/dist/adapters/marxists-cn/archive.d.ts +61 -0
- package/dist/adapters/marxists-cn/archive.d.ts.map +1 -0
- package/dist/adapters/marxists-cn/archive.js +861 -0
- package/dist/adapters/marxists-cn/archive.js.map +1 -0
- package/dist/adapters/twitter/lists-extra.d.ts +17 -1
- package/dist/adapters/twitter/lists-extra.d.ts.map +1 -1
- package/dist/adapters/twitter/lists-extra.js +123 -21
- package/dist/adapters/twitter/lists-extra.js.map +1 -1
- package/dist/adapters/twitter/post.js +1 -0
- package/dist/adapters/twitter/post.js.map +1 -1
- package/dist/adapters/twitter/thread.d.ts +13 -1
- package/dist/adapters/twitter/thread.d.ts.map +1 -1
- package/dist/adapters/twitter/thread.js +76 -33
- package/dist/adapters/twitter/thread.js.map +1 -1
- package/dist/adapters/xueqiu/extra.js +2 -2
- package/dist/adapters/xueqiu/extra.js.map +1 -1
- package/dist/browser/cdp-client.d.ts +10 -0
- package/dist/browser/cdp-client.d.ts.map +1 -1
- package/dist/browser/cdp-client.js +21 -0
- package/dist/browser/cdp-client.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/architecture.d.ts +3 -1
- package/dist/commands/architecture.d.ts.map +1 -1
- package/dist/commands/architecture.js +13 -5
- package/dist/commands/architecture.js.map +1 -1
- package/dist/commands/delivery.d.ts.map +1 -1
- package/dist/commands/delivery.js.map +1 -1
- package/dist/commands/describe.d.ts.map +1 -1
- package/dist/commands/describe.js +104 -9
- package/dist/commands/describe.js.map +1 -1
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +3 -13
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/do.d.ts +2 -1
- package/dist/commands/do.d.ts.map +1 -1
- package/dist/commands/do.js +43 -4
- package/dist/commands/do.js.map +1 -1
- package/dist/commands/social.d.ts.map +1 -1
- package/dist/commands/social.js +3 -13
- package/dist/commands/social.js.map +1 -1
- package/dist/core/architecture-tree.d.ts +26 -6
- package/dist/core/architecture-tree.d.ts.map +1 -1
- package/dist/core/architecture-tree.js +184 -40
- package/dist/core/architecture-tree.js.map +1 -1
- package/dist/core/capability-matrix.d.ts +63 -0
- package/dist/core/capability-matrix.d.ts.map +1 -0
- package/dist/core/capability-matrix.js +316 -0
- package/dist/core/capability-matrix.js.map +1 -0
- package/dist/core/command-contract-lint.d.ts.map +1 -1
- package/dist/core/command-contract-lint.js +3 -1
- package/dist/core/command-contract-lint.js.map +1 -1
- package/dist/core/command-contract.d.ts +10 -3
- package/dist/core/command-contract.d.ts.map +1 -1
- package/dist/core/command-contract.js +87 -5
- package/dist/core/command-contract.js.map +1 -1
- package/dist/discovery/aliases.d.ts.map +1 -1
- package/dist/discovery/aliases.js +93 -0
- package/dist/discovery/aliases.js.map +1 -1
- package/dist/discovery/core-catalog.d.ts +1 -0
- package/dist/discovery/core-catalog.d.ts.map +1 -1
- package/dist/discovery/core-catalog.js +22 -5
- package/dist/discovery/core-catalog.js.map +1 -1
- package/dist/discovery/intents.d.ts.map +1 -1
- package/dist/discovery/intents.js +124 -0
- package/dist/discovery/intents.js.map +1 -1
- package/dist/engine/cascade.d.ts.map +1 -1
- package/dist/engine/cascade.js +21 -25
- package/dist/engine/cascade.js.map +1 -1
- package/dist/engine/chromium-cookies.d.ts +27 -0
- package/dist/engine/chromium-cookies.d.ts.map +1 -1
- package/dist/engine/chromium-cookies.js +53 -14
- package/dist/engine/chromium-cookies.js.map +1 -1
- package/dist/engine/cookie-capture.d.ts +30 -0
- package/dist/engine/cookie-capture.d.ts.map +1 -0
- package/dist/engine/cookie-capture.js +104 -0
- package/dist/engine/cookie-capture.js.map +1 -0
- package/dist/engine/cookie-extractor.d.ts.map +1 -1
- package/dist/engine/cookie-extractor.js +4 -12
- package/dist/engine/cookie-extractor.js.map +1 -1
- package/dist/engine/cookie-refresh.d.ts +59 -8
- package/dist/engine/cookie-refresh.d.ts.map +1 -1
- package/dist/engine/cookie-refresh.js +80 -58
- package/dist/engine/cookie-refresh.js.map +1 -1
- package/dist/engine/cookie-source.d.ts +110 -0
- package/dist/engine/cookie-source.d.ts.map +1 -0
- package/dist/engine/cookie-source.js +207 -0
- package/dist/engine/cookie-source.js.map +1 -0
- package/dist/engine/cookies.d.ts +37 -25
- package/dist/engine/cookies.d.ts.map +1 -1
- package/dist/engine/cookies.js +58 -157
- package/dist/engine/cookies.js.map +1 -1
- package/dist/engine/delivery/index.d.ts +2 -1
- package/dist/engine/delivery/index.d.ts.map +1 -1
- package/dist/engine/delivery/index.js +2 -1
- package/dist/engine/delivery/index.js.map +1 -1
- package/dist/engine/delivery/spec.d.ts +44 -0
- package/dist/engine/delivery/spec.d.ts.map +1 -0
- package/dist/engine/delivery/spec.js +82 -0
- package/dist/engine/delivery/spec.js.map +1 -0
- package/dist/engine/executor.d.ts +17 -6
- package/dist/engine/executor.d.ts.map +1 -1
- package/dist/engine/executor.js +131 -68
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/runtime.d.ts.map +1 -1
- package/dist/engine/runtime.js +9 -4
- package/dist/engine/runtime.js.map +1 -1
- package/dist/engine/step-observer.d.ts +62 -0
- package/dist/engine/step-observer.d.ts.map +1 -0
- package/dist/engine/step-observer.js +38 -0
- package/dist/engine/step-observer.js.map +1 -0
- package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
- package/dist/engine/steps/browser-helpers.js +2 -8
- package/dist/engine/steps/browser-helpers.js.map +1 -1
- package/dist/engine/steps/fetch-text.d.ts.map +1 -1
- package/dist/engine/steps/fetch-text.js +106 -33
- package/dist/engine/steps/fetch-text.js.map +1 -1
- package/dist/engine/steps/fetch.d.ts +20 -0
- package/dist/engine/steps/fetch.d.ts.map +1 -1
- package/dist/engine/steps/fetch.js.map +1 -1
- package/dist/engine/steps/index.d.ts +2 -0
- package/dist/engine/steps/index.d.ts.map +1 -1
- package/dist/engine/steps/index.js +2 -0
- package/dist/engine/steps/index.js.map +1 -1
- package/dist/engine/steps/split-text.d.ts +26 -0
- package/dist/engine/steps/split-text.d.ts.map +1 -0
- package/dist/engine/steps/split-text.js +89 -0
- package/dist/engine/steps/split-text.js.map +1 -0
- package/dist/engine/steps/to-entries.d.ts +9 -0
- package/dist/engine/steps/to-entries.d.ts.map +1 -0
- package/dist/engine/steps/to-entries.js +27 -0
- package/dist/engine/steps/to-entries.js.map +1 -0
- package/dist/engine/text-normalize.d.ts +14 -0
- package/dist/engine/text-normalize.d.ts.map +1 -1
- package/dist/engine/text-normalize.js +64 -0
- package/dist/engine/text-normalize.js.map +1 -1
- package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
- package/dist/fast-path/handlers/discovery.js +7 -7
- package/dist/fast-path/handlers/discovery.js.map +1 -1
- package/dist/manifest-compact.txt +3 -3
- package/dist/manifest.json +493 -3
- package/dist/mcp/tools.js +1 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/output/auth-guidance.d.ts +17 -3
- package/dist/output/auth-guidance.d.ts.map +1 -1
- package/dist/output/auth-guidance.js +27 -3
- package/dist/output/auth-guidance.js.map +1 -1
- package/dist/output/error-map.d.ts.map +1 -1
- package/dist/output/error-map.js +4 -0
- package/dist/output/error-map.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
- package/skills/unicli/SKILL.md +1 -1
- package/skills/unicli-claude-code/SKILL.md +1 -1
- package/skills/unicli-hermes/SKILL.md +1 -1
- package/src/adapters/12306/price.yaml +91 -0
- package/src/adapters/12306/stations.yaml +52 -0
- package/src/adapters/12306/trains.yaml +129 -0
- package/src/adapters/marxists-cn/archive.test.ts +173 -0
- package/src/adapters/marxists-cn/archive.ts +1049 -0
- package/src/adapters/twitter/lists-extra.test.ts +115 -0
- package/src/adapters/twitter/lists-extra.ts +146 -26
- package/src/adapters/twitter/post.ts +1 -0
- package/src/adapters/twitter/thread.test.ts +25 -1
- package/src/adapters/twitter/thread.ts +99 -47
- package/src/adapters/xueqiu/extra.ts +5 -2
package/dist/engine/cascade.js
CHANGED
|
@@ -7,45 +7,33 @@
|
|
|
7
7
|
* Probe mechanism: make a test fetch with each strategy,
|
|
8
8
|
* first valid (non-error, non-empty) response wins.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { acquireCookies, formatCookieHeader } from "./cookies.js";
|
|
11
11
|
import { USER_AGENT } from "../constants.js";
|
|
12
12
|
/** Strategy probe order — auto-probeable strategies only */
|
|
13
13
|
const CASCADE_ORDER = ["public", "cookie", "header"];
|
|
14
14
|
/** Cache of resolved strategies per site */
|
|
15
15
|
const strategyCache = new Map();
|
|
16
16
|
/**
|
|
17
|
-
* Build headers for a given strategy.
|
|
17
|
+
* Build headers for a given strategy from already-acquired cookies. Pure: the
|
|
18
|
+
* caller owns cookie acquisition so the disk/browser/CDP read happens once per
|
|
19
|
+
* probe instead of once per buildHeaders call.
|
|
18
20
|
*/
|
|
19
|
-
function buildHeaders(strategy,
|
|
21
|
+
function buildHeaders(strategy, cookies) {
|
|
20
22
|
const headers = {
|
|
21
23
|
"User-Agent": USER_AGENT,
|
|
22
24
|
Accept: "application/json",
|
|
23
25
|
};
|
|
24
|
-
if (strategy === "public") {
|
|
26
|
+
if (strategy === "public" || !cookies) {
|
|
25
27
|
return headers;
|
|
26
28
|
}
|
|
27
|
-
|
|
28
|
-
const cookies = loadCookies(site);
|
|
29
|
-
if (cookies) {
|
|
30
|
-
headers["Cookie"] = formatCookieHeader(cookies);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
29
|
+
headers["Cookie"] = formatCookieHeader(cookies);
|
|
33
30
|
if (strategy === "header") {
|
|
34
31
|
// Extract CSRF token from cookies — common patterns
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
"_csrf",
|
|
41
|
-
"x-csrf-token",
|
|
42
|
-
"bili_jct",
|
|
43
|
-
];
|
|
44
|
-
for (const key of csrfKeys) {
|
|
45
|
-
if (cookies[key]) {
|
|
46
|
-
headers["X-Csrf-Token"] = cookies[key];
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
32
|
+
const csrfKeys = ["ct0", "csrf_token", "_csrf", "x-csrf-token", "bili_jct"];
|
|
33
|
+
for (const key of csrfKeys) {
|
|
34
|
+
if (cookies[key]) {
|
|
35
|
+
headers["X-Csrf-Token"] = cookies[key];
|
|
36
|
+
break;
|
|
49
37
|
}
|
|
50
38
|
}
|
|
51
39
|
}
|
|
@@ -58,7 +46,15 @@ async function probeStrategy(url, strategy, site) {
|
|
|
58
46
|
const confidence = 1.0 -
|
|
59
47
|
CASCADE_ORDER.indexOf(strategy) * 0.1;
|
|
60
48
|
try {
|
|
61
|
-
|
|
49
|
+
// Public needs no auth; for cookie/header acquire across disk → browser → CDP
|
|
50
|
+
// so a logged-in Chrome session is reused even when no cookie file exists yet.
|
|
51
|
+
let cookies = null;
|
|
52
|
+
if (strategy !== "public") {
|
|
53
|
+
const outcome = await acquireCookies(site);
|
|
54
|
+
if (outcome.status === "loaded")
|
|
55
|
+
cookies = outcome.cookies;
|
|
56
|
+
}
|
|
57
|
+
const headers = buildHeaders(strategy, cookies);
|
|
62
58
|
const resp = await fetch(url, {
|
|
63
59
|
headers,
|
|
64
60
|
signal: AbortSignal.timeout(5000),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/engine/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/engine/cascade.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,11 +34,38 @@ export declare function resolveCookieDb(browser: BrowserId, profile?: string): {
|
|
|
34
34
|
userDataRoot: string;
|
|
35
35
|
platform: Platform;
|
|
36
36
|
};
|
|
37
|
+
export interface RawCookieRow {
|
|
38
|
+
host: string;
|
|
39
|
+
name: string;
|
|
40
|
+
encrypted: Buffer;
|
|
41
|
+
plain: string;
|
|
42
|
+
path: string;
|
|
43
|
+
expires: number;
|
|
44
|
+
isSecure: number;
|
|
45
|
+
isHttpOnly: number;
|
|
46
|
+
}
|
|
37
47
|
/**
|
|
38
48
|
* Read all cookies for a domain from a browser's local DB.
|
|
39
49
|
* Returns full structured rows for callers that want secure/httpOnly metadata.
|
|
40
50
|
*/
|
|
41
51
|
export declare function readCookies(opts: ReadOptions): CookieRow[];
|
|
52
|
+
/**
|
|
53
|
+
* Decode raw cookie rows into typed CookieRows, tolerant of individual rows
|
|
54
|
+
* that cannot be decrypted (e.g. a single Chrome v20 App-Bound-Encryption row).
|
|
55
|
+
*
|
|
56
|
+
* Resilience contract (the reason this is a separate, tested function):
|
|
57
|
+
* - a plain (unencrypted) row never calls `decrypt`;
|
|
58
|
+
* - an encrypted row that throws is SKIPPED, not fatal — one bad row must not
|
|
59
|
+
* wipe the whole cookie set (the prior `.map()` threw on the first failure,
|
|
60
|
+
* and the caller swallowed it → all cookies silently vanished);
|
|
61
|
+
* - BUT if every encrypted row fails AND nothing else survived, we THROW a
|
|
62
|
+
* typed ChromiumCookieError instead of returning [] — so "decryption is
|
|
63
|
+
* broken (likely v20)" is never silently indistinguishable from "no cookies".
|
|
64
|
+
*
|
|
65
|
+
* `decrypt` is injected so the resilience logic is unit-testable without a real
|
|
66
|
+
* keystore.
|
|
67
|
+
*/
|
|
68
|
+
export declare function decodeCookieRows(rows: RawCookieRow[], decrypt: (encrypted: Buffer) => string): CookieRow[];
|
|
42
69
|
/**
|
|
43
70
|
* Convenience: read cookies for a domain and flatten to a name→value record,
|
|
44
71
|
* matching the shape that engine/cookies.ts already passes to fetch headers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chromium-cookies.d.ts","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,gCAAgC,CAAC;AA6FxC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CA+BzD;AAkBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,MAAM,GACf;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAmCA;
|
|
1
|
+
{"version":3,"file":"chromium-cookies.d.ts","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,gCAAgC,CAAC;AA6FxC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CA+BzD;AAkBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,MAAM,GACf;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAmCA;AAsCD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwFD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,CAqB1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GACrC,SAAS,EAAE,CA0Cb;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7E;AAED,kEAAkE;AAClE,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAOlC,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,EAAE,CAWrD"}
|
|
@@ -299,25 +299,64 @@ export function readCookies(opts) {
|
|
|
299
299
|
const snap = snapshotDb(dbPath);
|
|
300
300
|
try {
|
|
301
301
|
const rows = readRowsForDomain(snap.dbPath, opts.domain);
|
|
302
|
-
return rows
|
|
303
|
-
const value = r.encrypted.length > 0
|
|
304
|
-
? decryptValue(r.encrypted, key, platform)
|
|
305
|
-
: r.plain;
|
|
306
|
-
return {
|
|
307
|
-
host: r.host,
|
|
308
|
-
name: r.name,
|
|
309
|
-
value,
|
|
310
|
-
path: r.path,
|
|
311
|
-
expires: r.expires,
|
|
312
|
-
secure: r.isSecure === 1,
|
|
313
|
-
httpOnly: r.isHttpOnly === 1,
|
|
314
|
-
};
|
|
315
|
-
});
|
|
302
|
+
return decodeCookieRows(rows, (enc) => decryptValue(enc, key, platform));
|
|
316
303
|
}
|
|
317
304
|
finally {
|
|
318
305
|
snap.cleanup();
|
|
319
306
|
}
|
|
320
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Decode raw cookie rows into typed CookieRows, tolerant of individual rows
|
|
310
|
+
* that cannot be decrypted (e.g. a single Chrome v20 App-Bound-Encryption row).
|
|
311
|
+
*
|
|
312
|
+
* Resilience contract (the reason this is a separate, tested function):
|
|
313
|
+
* - a plain (unencrypted) row never calls `decrypt`;
|
|
314
|
+
* - an encrypted row that throws is SKIPPED, not fatal — one bad row must not
|
|
315
|
+
* wipe the whole cookie set (the prior `.map()` threw on the first failure,
|
|
316
|
+
* and the caller swallowed it → all cookies silently vanished);
|
|
317
|
+
* - BUT if every encrypted row fails AND nothing else survived, we THROW a
|
|
318
|
+
* typed ChromiumCookieError instead of returning [] — so "decryption is
|
|
319
|
+
* broken (likely v20)" is never silently indistinguishable from "no cookies".
|
|
320
|
+
*
|
|
321
|
+
* `decrypt` is injected so the resilience logic is unit-testable without a real
|
|
322
|
+
* keystore.
|
|
323
|
+
*/
|
|
324
|
+
export function decodeCookieRows(rows, decrypt) {
|
|
325
|
+
const out = [];
|
|
326
|
+
let encryptedTotal = 0;
|
|
327
|
+
let encryptedFailed = 0;
|
|
328
|
+
for (const r of rows) {
|
|
329
|
+
let value;
|
|
330
|
+
if (r.encrypted.length > 0) {
|
|
331
|
+
encryptedTotal += 1;
|
|
332
|
+
try {
|
|
333
|
+
value = decrypt(r.encrypted);
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
encryptedFailed += 1;
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
value = r.plain;
|
|
342
|
+
}
|
|
343
|
+
out.push({
|
|
344
|
+
host: r.host,
|
|
345
|
+
name: r.name,
|
|
346
|
+
value,
|
|
347
|
+
path: r.path,
|
|
348
|
+
expires: r.expires,
|
|
349
|
+
secure: r.isSecure === 1,
|
|
350
|
+
httpOnly: r.isHttpOnly === 1,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
if (encryptedTotal > 0 &&
|
|
354
|
+
encryptedFailed === encryptedTotal &&
|
|
355
|
+
out.length === 0) {
|
|
356
|
+
throw new ChromiumCookieError("encryption_unsupported", `all ${encryptedTotal} encrypted cookie rows failed to decrypt (likely Chrome v20 App-Bound Encryption)`, "Start Chrome with --remote-debugging-port to use the CDP path, or run: unicli auth import <site>");
|
|
357
|
+
}
|
|
358
|
+
return out;
|
|
359
|
+
}
|
|
321
360
|
/**
|
|
322
361
|
* Convenience: read cookies for a domain and flatten to a name→value record,
|
|
323
362
|
* matching the shape that engine/cookies.ts already passes to fetch headers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chromium-cookies.js","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chromium-cookies.js","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse an array of raw `Set-Cookie` header lines into a `name → value` map.
|
|
3
|
+
* Only the leading `name=value` pair of each line is kept; cookie attributes
|
|
4
|
+
* (Path, Domain, HttpOnly, …) after the first `;` are intentionally dropped —
|
|
5
|
+
* we re-send the pair on same-host requests and do not honor attribute scoping
|
|
6
|
+
* beyond the host check performed by the caller.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseSetCookiePairs(lines: string[]): Record<string, string>;
|
|
9
|
+
/**
|
|
10
|
+
* Merge captured cookie pairs onto an existing `Cookie` request header.
|
|
11
|
+
* Existing cookies are preserved; a captured cookie of the same name wins and
|
|
12
|
+
* moves to the end. Returns the original header unchanged when nothing was
|
|
13
|
+
* captured.
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeCookieHeader(existing: string | undefined, captured: Record<string, string>): string;
|
|
16
|
+
/**
|
|
17
|
+
* Conservative same-host check for cookie capture. Returns true only when the
|
|
18
|
+
* final response URL shares a registrable domain with the original request URL.
|
|
19
|
+
*
|
|
20
|
+
* Limitation (stated honestly): without a Public Suffix List we approximate the
|
|
21
|
+
* registrable domain as the last two dot-labels. This is correct for
|
|
22
|
+
* single-label TLDs (12306.cn, example.com) and ERRS ON THE SIDE OF REJECTION
|
|
23
|
+
* for multi-label eTLDs (foo.co.uk vs bar.co.uk both reduce to "co.uk" → would
|
|
24
|
+
* be treated as same; to avoid the FALSE-ACCEPT that introduces, we additionally
|
|
25
|
+
* require the full hostnames to be equal OR one to be a dot-suffix of the other).
|
|
26
|
+
* Rejecting is safe (cookies simply are not captured); false-accept would leak
|
|
27
|
+
* cookies, which we must not do.
|
|
28
|
+
*/
|
|
29
|
+
export declare function sameRegistrableHost(requestUrl: string, finalUrl: string): boolean;
|
|
30
|
+
//# sourceMappingURL=cookie-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-capture.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-capture.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAuBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
//! @owner src::engine::cookie_capture
|
|
2
|
+
//! @does Parses response Set-Cookie headers and merges them into a request Cookie header, with same-host scoping
|
|
3
|
+
//! @needs none (pure string/URL logic)
|
|
4
|
+
//! @feeds ./steps/fetch-text, ./steps/fetch (capture_cookies option)
|
|
5
|
+
//! @breaks never throws; unparseable input yields conservative (empty / false) results
|
|
6
|
+
//! @invariants capture is host-scoped; a cross-site final URL never contributes cookies
|
|
7
|
+
//! @side-effects none (pure)
|
|
8
|
+
//! @perf O(n) over the Set-Cookie line count
|
|
9
|
+
//! @concurrency pure; safe to call concurrently
|
|
10
|
+
//! @test tests/unit/engine/cookie-capture.test.ts
|
|
11
|
+
//! @stability stable
|
|
12
|
+
//! @since 2026-05-30
|
|
13
|
+
/**
|
|
14
|
+
* Parse an array of raw `Set-Cookie` header lines into a `name → value` map.
|
|
15
|
+
* Only the leading `name=value` pair of each line is kept; cookie attributes
|
|
16
|
+
* (Path, Domain, HttpOnly, …) after the first `;` are intentionally dropped —
|
|
17
|
+
* we re-send the pair on same-host requests and do not honor attribute scoping
|
|
18
|
+
* beyond the host check performed by the caller.
|
|
19
|
+
*/
|
|
20
|
+
export function parseSetCookiePairs(lines) {
|
|
21
|
+
const out = {};
|
|
22
|
+
for (const line of lines) {
|
|
23
|
+
const head = line.split(";", 1)[0]?.trim() ?? "";
|
|
24
|
+
const eq = head.indexOf("=");
|
|
25
|
+
if (eq <= 0)
|
|
26
|
+
continue;
|
|
27
|
+
const name = head.slice(0, eq).trim();
|
|
28
|
+
const value = head.slice(eq + 1).trim();
|
|
29
|
+
if (name)
|
|
30
|
+
out[name] = value;
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Merge captured cookie pairs onto an existing `Cookie` request header.
|
|
36
|
+
* Existing cookies are preserved; a captured cookie of the same name wins and
|
|
37
|
+
* moves to the end. Returns the original header unchanged when nothing was
|
|
38
|
+
* captured.
|
|
39
|
+
*/
|
|
40
|
+
export function mergeCookieHeader(existing, captured) {
|
|
41
|
+
const capturedNames = Object.keys(captured);
|
|
42
|
+
if (capturedNames.length === 0)
|
|
43
|
+
return existing ?? "";
|
|
44
|
+
const pairs = new Map();
|
|
45
|
+
if (existing) {
|
|
46
|
+
for (const part of existing.split(";")) {
|
|
47
|
+
const seg = part.trim();
|
|
48
|
+
if (!seg)
|
|
49
|
+
continue;
|
|
50
|
+
const eq = seg.indexOf("=");
|
|
51
|
+
if (eq <= 0)
|
|
52
|
+
continue;
|
|
53
|
+
pairs.set(seg.slice(0, eq).trim(), seg.slice(eq + 1).trim());
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Drop survivors that a captured cookie overrides, so captured wins and
|
|
57
|
+
// appears at the end in capture order.
|
|
58
|
+
for (const name of capturedNames) {
|
|
59
|
+
pairs.delete(name);
|
|
60
|
+
}
|
|
61
|
+
const merged = [];
|
|
62
|
+
for (const [name, value] of pairs)
|
|
63
|
+
merged.push(`${name}=${value}`);
|
|
64
|
+
for (const name of capturedNames)
|
|
65
|
+
merged.push(`${name}=${captured[name]}`);
|
|
66
|
+
return merged.join("; ");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Conservative same-host check for cookie capture. Returns true only when the
|
|
70
|
+
* final response URL shares a registrable domain with the original request URL.
|
|
71
|
+
*
|
|
72
|
+
* Limitation (stated honestly): without a Public Suffix List we approximate the
|
|
73
|
+
* registrable domain as the last two dot-labels. This is correct for
|
|
74
|
+
* single-label TLDs (12306.cn, example.com) and ERRS ON THE SIDE OF REJECTION
|
|
75
|
+
* for multi-label eTLDs (foo.co.uk vs bar.co.uk both reduce to "co.uk" → would
|
|
76
|
+
* be treated as same; to avoid the FALSE-ACCEPT that introduces, we additionally
|
|
77
|
+
* require the full hostnames to be equal OR one to be a dot-suffix of the other).
|
|
78
|
+
* Rejecting is safe (cookies simply are not captured); false-accept would leak
|
|
79
|
+
* cookies, which we must not do.
|
|
80
|
+
*/
|
|
81
|
+
export function sameRegistrableHost(requestUrl, finalUrl) {
|
|
82
|
+
let reqHost;
|
|
83
|
+
let finHost;
|
|
84
|
+
try {
|
|
85
|
+
reqHost = new URL(requestUrl).hostname.toLowerCase();
|
|
86
|
+
finHost = new URL(finalUrl).hostname.toLowerCase();
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (!reqHost || !finHost)
|
|
92
|
+
return false;
|
|
93
|
+
if (reqHost === finHost)
|
|
94
|
+
return true;
|
|
95
|
+
// Accept a subdomain relationship on the same registrable domain only when
|
|
96
|
+
// one host is a dot-suffix of the other (www.12306.cn ↔ kyfw.12306.cn share
|
|
97
|
+
// the suffix 12306.cn, and one is not a suffix of the other), so we compare
|
|
98
|
+
// the last-two-labels registrable domain AND require it to be non-trivial.
|
|
99
|
+
const reg = (h) => h.split(".").slice(-2).join(".");
|
|
100
|
+
const reqReg = reg(reqHost);
|
|
101
|
+
const finReg = reg(finHost);
|
|
102
|
+
return reqReg.length > 0 && reqReg === finReg;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=cookie-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-capture.js","sourceRoot":"","sources":["../../src/engine/cookie-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-extractor.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"cookie-extractor.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBjC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAWR"}
|
|
@@ -8,22 +8,15 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { writeFileSync, mkdirSync } from "node:fs";
|
|
10
10
|
import { join } from "node:path";
|
|
11
|
+
import { cookieDir } from "./cookie-source.js";
|
|
11
12
|
/**
|
|
12
13
|
* Extract cookies for a domain from a running Chrome instance.
|
|
13
14
|
* Connects to Chrome's CDP debug port, calls Network.getCookies,
|
|
14
15
|
* and returns cookies as a flat key-value record.
|
|
15
16
|
*/
|
|
16
17
|
export async function extractCookiesViaCDP(domain, port) {
|
|
17
|
-
const { CDPClient } = await import("../browser/cdp-client.js");
|
|
18
|
-
const
|
|
19
|
-
let cdpPort = port ?? 9222;
|
|
20
|
-
if (!port && rawPort) {
|
|
21
|
-
const p = parseInt(rawPort, 10);
|
|
22
|
-
if (!Number.isInteger(p) || p < 1 || p > 65535) {
|
|
23
|
-
throw new Error(`Invalid UNICLI_CDP_PORT: "${rawPort}"`);
|
|
24
|
-
}
|
|
25
|
-
cdpPort = p;
|
|
26
|
-
}
|
|
18
|
+
const { CDPClient, resolveCdpPort } = await import("../browser/cdp-client.js");
|
|
19
|
+
const cdpPort = resolveCdpPort(port);
|
|
27
20
|
const client = await CDPClient.connectToChrome(cdpPort);
|
|
28
21
|
try {
|
|
29
22
|
const { cookies } = (await client.send("Network.getCookies", {
|
|
@@ -52,8 +45,7 @@ export function saveCookies(site, cookies) {
|
|
|
52
45
|
if (!/^[a-zA-Z0-9._-]+$/.test(site)) {
|
|
53
46
|
throw new Error(`Invalid site name: "${site}" — only alphanumeric, dot, dash, underscore allowed`);
|
|
54
47
|
}
|
|
55
|
-
const dir =
|
|
56
|
-
join(process.env.HOME ?? "~", ".unicli", "cookies");
|
|
48
|
+
const dir = cookieDir();
|
|
57
49
|
mkdirSync(dir, { recursive: true });
|
|
58
50
|
const filePath = join(dir, `${site}.json`);
|
|
59
51
|
writeFileSync(filePath, JSON.stringify(cookies, null, 2), "utf-8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-extractor.js","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cookie-extractor.js","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,IAAa;IAEb,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GACjC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC3D,IAAI,EAAE;gBACJ,WAAW,MAAM,EAAE;gBACnB,eAAe,MAAM,EAAE;gBACvB,UAAU,MAAM,EAAE;gBAClB,cAAc,MAAM,EAAE;aACvB;SACF,CAAC,CAA6B,CAAC;QAEhC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAA+B;IAE/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,sDAAsD,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,13 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @owner src::engine::cookie-refresh
|
|
3
|
+
* @does Refreshes a site's login session by navigating Chrome to it over
|
|
4
|
+
* CDP and re-reading cookies, surfacing the real cause of a miss
|
|
5
|
+
* (no browser / no cookies / error) instead of a bare boolean.
|
|
6
|
+
* @needs ./cookie-extractor (saveCookies), ../browser/page (lazy),
|
|
7
|
+
* ../browser/cdp-client (resolveCdpPort, lazy)
|
|
8
|
+
* @feeds src::engine::runtime (maybeRefreshCookies — the auto 401/403 path)
|
|
9
|
+
* @breaks never throws — every failure becomes a typed SessionRefreshOutcome
|
|
10
|
+
* @invariants navigation (page.goto) happens BEFORE reading cookies so the live
|
|
11
|
+
* server session is rebuilt; this is the navigate-then-read refresh,
|
|
12
|
+
* deliberately distinct from cookies.ts acquireCookies(skipDisk)
|
|
13
|
+
* which is a pure DB/CDP read with no navigation
|
|
14
|
+
* @side-effects connects to Chrome via CDP, navigates a page, persists cookies to disk
|
|
15
|
+
* @concurrency stateless; the page is opened and closed within one call
|
|
16
|
+
* @test tests/unit/engine/cookie-refresh.test.ts
|
|
17
|
+
* @stability stable
|
|
18
|
+
* @since 2026-05-30
|
|
19
|
+
*/
|
|
20
|
+
/** The slice of a live browser page a session refresh needs. */
|
|
21
|
+
export interface PageSession {
|
|
22
|
+
goto(url: string, opts: {
|
|
23
|
+
settleMs: number;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
cookies(): Promise<Record<string, string>>;
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
/** Injectable IO so the refresh policy is testable without Chrome or a network. */
|
|
29
|
+
export interface SessionRefreshDeps {
|
|
30
|
+
connect(port: number): Promise<PageSession>;
|
|
31
|
+
persist(site: string, cookies: Record<string, string>): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Typed result of a refresh attempt. Names WHY a refresh did not happen instead
|
|
35
|
+
* of collapsing connect failure, an empty cookie jar, and unexpected errors all
|
|
36
|
+
* to `false` (the old behavior, which left runtime.ts unable to tell the agent
|
|
37
|
+
* what actually went wrong).
|
|
7
38
|
*/
|
|
39
|
+
export type SessionRefreshOutcome = {
|
|
40
|
+
status: "refreshed";
|
|
41
|
+
site: string;
|
|
42
|
+
cookieCount: number;
|
|
43
|
+
} | {
|
|
44
|
+
status: "no-browser";
|
|
45
|
+
detail: string;
|
|
46
|
+
} | {
|
|
47
|
+
status: "no-cookies";
|
|
48
|
+
detail: string;
|
|
49
|
+
} | {
|
|
50
|
+
status: "error";
|
|
51
|
+
detail: string;
|
|
52
|
+
};
|
|
53
|
+
export declare const defaultSessionRefreshDeps: SessionRefreshDeps;
|
|
8
54
|
/**
|
|
9
|
-
* Attempt to refresh cookies for a site by navigating Chrome to it
|
|
10
|
-
*
|
|
55
|
+
* Attempt to refresh cookies for a site by navigating Chrome to it and reading
|
|
56
|
+
* the resulting session cookies. Returns a typed outcome; never throws.
|
|
57
|
+
*
|
|
58
|
+
* Persistence goes through the canonical writer (saveCookies) so the on-disk
|
|
59
|
+
* format always matches what the loaders expect ({name: value}); hand-rolling
|
|
60
|
+
* the write here once emitted an array format the loaders silently rejected,
|
|
61
|
+
* leaving the adapter unauthenticated after a "successful" refresh.
|
|
11
62
|
*/
|
|
12
|
-
export declare function refreshCookies(site: string, domain?: string): Promise<
|
|
63
|
+
export declare function refreshCookies(site: string, domain?: string, deps?: SessionRefreshDeps): Promise<SessionRefreshOutcome>;
|
|
13
64
|
//# sourceMappingURL=cookie-refresh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-refresh.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-refresh.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cookie-refresh.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOxC,eAAO,MAAM,yBAAyB,EAAE,kBAGvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE,kBAA8C,GACnD,OAAO,CAAC,qBAAqB,CAAC,CAuDhC"}
|