@kaitranntt/ccs 8.6.1 → 8.7.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +7 -0
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/cliproxy/config/provider-route.d.ts +3 -0
- package/dist/cliproxy/config/provider-route.d.ts.map +1 -1
- package/dist/cliproxy/config/provider-route.js +35 -1
- package/dist/cliproxy/config/provider-route.js.map +1 -1
- package/dist/cliproxy/executor/claude-launcher.d.ts.map +1 -1
- package/dist/cliproxy/executor/claude-launcher.js +38 -15
- package/dist/cliproxy/executor/claude-launcher.js.map +1 -1
- package/dist/cliproxy/executor/index.js +1 -1
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/launch-settings.d.ts +48 -0
- package/dist/cliproxy/executor/launch-settings.d.ts.map +1 -0
- package/dist/cliproxy/executor/launch-settings.js +154 -0
- package/dist/cliproxy/executor/launch-settings.js.map +1 -0
- package/dist/commands/bar/bar-paths.d.ts +1 -1
- package/dist/commands/bar/bar-paths.d.ts.map +1 -1
- package/dist/commands/bar/bar-server-probe.d.ts +4 -6
- package/dist/commands/bar/bar-server-probe.d.ts.map +1 -1
- package/dist/commands/bar/bar-server-probe.js +21 -15
- package/dist/commands/bar/bar-server-probe.js.map +1 -1
- package/dist/commands/bar/install-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/install-subcommand.js +2 -7
- package/dist/commands/bar/install-subcommand.js.map +1 -1
- package/dist/commands/bar/launch-descriptor.d.ts +20 -0
- package/dist/commands/bar/launch-descriptor.d.ts.map +1 -0
- package/dist/commands/bar/launch-descriptor.js +82 -0
- package/dist/commands/bar/launch-descriptor.js.map +1 -0
- package/dist/commands/bar/launch-subcommand.d.ts +3 -0
- package/dist/commands/bar/launch-subcommand.d.ts.map +1 -1
- package/dist/commands/bar/launch-subcommand.js +27 -15
- package/dist/commands/bar/launch-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +1 -1
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts +5 -4
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js +7 -5
- package/dist/commands/cliproxy/proxy-lifecycle-subcommand.js.map +1 -1
- package/dist/commands/cursor-command.d.ts.map +1 -1
- package/dist/commands/cursor-command.js +2 -0
- package/dist/commands/cursor-command.js.map +1 -1
- package/dist/config/loader/config-getters.d.ts +5 -0
- package/dist/config/loader/config-getters.d.ts.map +1 -1
- package/dist/config/loader/config-getters.js +7 -0
- package/dist/config/loader/config-getters.js.map +1 -1
- package/dist/config/loader/defaults-merger.d.ts.map +1 -1
- package/dist/config/loader/defaults-merger.js +5 -0
- package/dist/config/loader/defaults-merger.js.map +1 -1
- package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
- package/dist/config/loader/yaml-serializer.js +3 -2
- package/dist/config/loader/yaml-serializer.js.map +1 -1
- package/dist/config/schemas/index.d.ts +1 -1
- package/dist/config/schemas/index.d.ts.map +1 -1
- package/dist/config/schemas/index.js.map +1 -1
- package/dist/config/schemas/unified-config.d.ts.map +1 -1
- package/dist/config/schemas/unified-config.js +5 -0
- package/dist/config/schemas/unified-config.js.map +1 -1
- package/dist/config/schemas/websearch.d.ts +20 -2
- package/dist/config/schemas/websearch.d.ts.map +1 -1
- package/dist/config/schemas/websearch.js +1 -1
- package/dist/cursor/cursor-daemon-entry.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon-entry.js +32 -13
- package/dist/cursor/cursor-daemon-entry.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts +4 -1
- package/dist/cursor/cursor-daemon.d.ts.map +1 -1
- package/dist/cursor/cursor-daemon.js +14 -8
- package/dist/cursor/cursor-daemon.js.map +1 -1
- package/dist/cursor/cursor-runtime-probe.d.ts.map +1 -1
- package/dist/cursor/cursor-runtime-probe.js +2 -1
- package/dist/cursor/cursor-runtime-probe.js.map +1 -1
- package/dist/glmt/pipeline/response-builder.d.ts +5 -0
- package/dist/glmt/pipeline/response-builder.d.ts.map +1 -1
- package/dist/glmt/pipeline/response-builder.js +6 -7
- package/dist/glmt/pipeline/response-builder.js.map +1 -1
- package/dist/glmt/pipeline/types.d.ts +2 -7
- package/dist/glmt/pipeline/types.d.ts.map +1 -1
- package/dist/services/logging/log-redaction.d.ts.map +1 -1
- package/dist/services/logging/log-redaction.js +12 -2
- package/dist/services/logging/log-redaction.js.map +1 -1
- package/dist/shared/provider-preset-catalog.d.ts +1 -1
- package/dist/shared/provider-preset-catalog.d.ts.map +1 -1
- package/dist/shared/provider-preset-catalog.js +14 -0
- package/dist/shared/provider-preset-catalog.js.map +1 -1
- package/dist/targets/codex-adapter.d.ts.map +1 -1
- package/dist/targets/codex-adapter.js +8 -7
- package/dist/targets/codex-adapter.js.map +1 -1
- package/dist/targets/codex-cliproxy-provider-config.d.ts.map +1 -1
- package/dist/targets/codex-cliproxy-provider-config.js +12 -1
- package/dist/targets/codex-cliproxy-provider-config.js.map +1 -1
- package/dist/ui/assets/{Trans-BpNkQ7ek.js → Trans-By7poS8F.js} +1 -1
- package/dist/ui/assets/{accounts-BjBpKHAo.js → accounts-CT4cNpXE.js} +1 -1
- package/dist/ui/assets/{alert-dialog-pDQKbmfk.js → alert-dialog-D-4eNWT-.js} +1 -1
- package/dist/ui/assets/{api-Bz4gk1bk.js → api-BOsmB6JC.js} +1 -1
- package/dist/ui/assets/{auth-section-DPJ_tnXs.js → auth-section-BNu9bqxZ.js} +1 -1
- package/dist/ui/assets/{backups-section-DGeCRWP2.js → backups-section-QEZ5MeIb.js} +1 -1
- package/dist/ui/assets/{channels-BZHQSZ2O.js → channels-C8lOwrre.js} +1 -1
- package/dist/ui/assets/{checkbox-H7Yhg_4C.js → checkbox-DxCvOyao.js} +1 -1
- package/dist/ui/assets/{claude-extension-BFpic0ox.js → claude-extension-CvbfmbdL.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-E8zkuN9-.js → cliproxy-ai-providers-jeMd_Enz.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-CXij15eo.js → cliproxy-control-panel-Ylrw7Vt0.js} +1 -1
- package/dist/ui/assets/{cliproxy-DQizRbbC.js → cliproxy-daECx_cg.js} +1 -1
- package/dist/ui/assets/{codex-Clsf_Ll9.js → codex-7d3v_F3-.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-D-AtmCDF.js → confirm-dialog-BGbC3827.js} +1 -1
- package/dist/ui/assets/{copilot-D0Z8CZJb.js → copilot-DGVMqIvj.js} +1 -1
- package/dist/ui/assets/{cursor-BXf4OXxE.js → cursor-D94mZoOn.js} +1 -1
- package/dist/ui/assets/{droid-DUaaFFGf.js → droid-CijT6OtA.js} +1 -1
- package/dist/ui/assets/{globalenv-section-Bi6g0RHv.js → globalenv-section-Cro0fjBM.js} +1 -1
- package/dist/ui/assets/{health-qWLTnC0s.js → health-DFG40_kD.js} +1 -1
- package/dist/ui/assets/{index-BTfHfkkh.js → index-BTJNmedC.js} +1 -1
- package/dist/ui/assets/{index-2aTPFpCV.js → index-Bf0--BiU.js} +1 -1
- package/dist/ui/assets/{index-B8BRpC7W.js → index-Bf5DDwJP.js} +1 -1
- package/dist/ui/assets/{index-BBdOx52b.js → index-BfbJlKvM.js} +1 -1
- package/dist/ui/assets/{index-D4nxVNz2.js → index-D77S3tlM.js} +1 -1
- package/dist/ui/assets/{index-bTno3t7S.js → index-DLRoa85N.js} +1 -1
- package/dist/ui/assets/{index-Dx2jv0Ov.js → index-K_KarWwQ.js} +3 -3
- package/dist/ui/assets/{logs-dRi0gOyI.js → logs-Bc1-UurC.js} +1 -1
- package/dist/ui/assets/{masked-input-DtbQSbOn.js → masked-input-uuW_Ngh8.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-DxwDomuX.js → proxy-status-widget-BFrQZqYz.js} +1 -1
- package/dist/ui/assets/{raw-json-settings-editor-panel-CDlRVxaa.js → raw-json-settings-editor-panel-DEHwL2oY.js} +1 -1
- package/dist/ui/assets/{searchable-select-DNOKIELZ.js → searchable-select-pEfkrlZT.js} +1 -1
- package/dist/ui/assets/{separator-DlmzFyxp.js → separator-BTcnUF3t.js} +1 -1
- package/dist/ui/assets/{shared-D1fHDQQG.js → shared-DWBCHrPI.js} +1 -1
- package/dist/ui/assets/{table-B0nIYCuj.js → table-DdMU9lLS.js} +1 -1
- package/dist/ui/assets/{updates-BqVdDTJj.js → updates-DfYyQw34.js} +1 -1
- package/dist/ui/assets/{use-accounts-BkjSf38E.js → use-accounts-DnMcRpOC.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/bar-auth-token.d.ts +5 -0
- package/dist/utils/bar-auth-token.d.ts.map +1 -1
- package/dist/utils/bar-auth-token.js +23 -1
- package/dist/utils/bar-auth-token.js.map +1 -1
- package/dist/utils/openai-compat-launch-settings.d.ts.map +1 -1
- package/dist/utils/openai-compat-launch-settings.js +6 -0
- package/dist/utils/openai-compat-launch-settings.js.map +1 -1
- package/dist/utils/shell-executor.d.ts +2 -0
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/shell-executor.js +11 -7
- package/dist/utils/shell-executor.js.map +1 -1
- package/dist/utils/websearch/agy.d.ts +28 -0
- package/dist/utils/websearch/agy.d.ts.map +1 -0
- package/dist/utils/websearch/agy.js +83 -0
- package/dist/utils/websearch/agy.js.map +1 -0
- package/dist/utils/websearch/hook-config.d.ts.map +1 -1
- package/dist/utils/websearch/hook-config.js +3 -0
- package/dist/utils/websearch/hook-config.js.map +1 -1
- package/dist/utils/websearch/hook-env.d.ts.map +1 -1
- package/dist/utils/websearch/hook-env.js +13 -1
- package/dist/utils/websearch/hook-env.js.map +1 -1
- package/dist/utils/websearch/index.d.ts +2 -1
- package/dist/utils/websearch/index.d.ts.map +1 -1
- package/dist/utils/websearch/index.js +7 -2
- package/dist/utils/websearch/index.js.map +1 -1
- package/dist/utils/websearch/mcp-installer.d.ts +5 -4
- package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
- package/dist/utils/websearch/mcp-installer.js +7 -13
- package/dist/utils/websearch/mcp-installer.js.map +1 -1
- package/dist/utils/websearch/status.d.ts.map +1 -1
- package/dist/utils/websearch/status.js +25 -5
- package/dist/utils/websearch/status.js.map +1 -1
- package/dist/utils/websearch/types.d.ts +7 -1
- package/dist/utils/websearch/types.d.ts.map +1 -1
- package/dist/utils/websearch/types.js.map +1 -1
- package/dist/utils/websearch-manager.d.ts +2 -1
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +6 -1
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/routes/bar-routes.d.ts +16 -0
- package/dist/web-server/routes/bar-routes.d.ts.map +1 -1
- package/dist/web-server/routes/bar-routes.js.map +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cursor-routes.js +2 -0
- package/dist/web-server/routes/cursor-routes.js.map +1 -1
- package/dist/web-server/routes/index.d.ts.map +1 -1
- package/dist/web-server/routes/index.js +7 -5
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +8 -5
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
- package/dist/web-server/routes/websearch-routes.js +7 -0
- package/dist/web-server/routes/websearch-routes.js.map +1 -1
- package/dist/web-server/usage/native-quota-collector.d.ts +50 -8
- package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -1
- package/dist/web-server/usage/native-quota-collector.js +883 -71
- package/dist/web-server/usage/native-quota-collector.js.map +1 -1
- package/lib/hooks/websearch-transformer.cjs +73 -4
- package/package.json +1 -1
|
@@ -14,18 +14,38 @@
|
|
|
14
14
|
* - circuit breaker stops calling after repeated 429s for a cooldown
|
|
15
15
|
* - serve-stale-on-failure; only omit a row when there is genuinely no data
|
|
16
16
|
*
|
|
17
|
-
* Claude path: reads
|
|
17
|
+
* Claude path: reads per-profile .credentials.json (file-only, NO keychain)
|
|
18
|
+
* and polls api.anthropic.com/api/oauth/usage. If the file is absent the
|
|
19
|
+
* profile is emitted as a parked row (paused:true) — never a keychain call.
|
|
20
|
+
*
|
|
18
21
|
* Codex path: PRIMARY = live network (chatgpt.com/backend-api/wham/usage, via
|
|
19
22
|
* fetchCodexQuota), FALLBACK = local session logs (getCodexLocalQuota), mirroring
|
|
20
23
|
* the same safety pattern as the Claude path.
|
|
24
|
+
*
|
|
25
|
+
* Multi-profile: each Claude or Codex profile gets its own ProviderState so a
|
|
26
|
+
* 429 on one profile never trips the breaker of another. The active/default
|
|
27
|
+
* profile for each surface is live-polled (paused:false); all other profiles are
|
|
28
|
+
* cache-only (paused:true, force=false hardcoded) so the 2.5s /summary deadline
|
|
29
|
+
* is maintained — at most 2 live upstream calls per /summary regardless of
|
|
30
|
+
* profile count.
|
|
31
|
+
*
|
|
32
|
+
* NO macOS Keychain access anywhere in this module. The old global-default
|
|
33
|
+
* Claude reader (readClaudeCredentials) is kept for back-compat but is no longer
|
|
34
|
+
* used by the multi-profile path.
|
|
21
35
|
*/
|
|
22
36
|
import { type ClaudeNativeCredentials } from './claude-native-credentials';
|
|
23
37
|
import { type CodexLocalQuota } from './codex-local-quota-collector';
|
|
24
38
|
import type { ClaudeQuotaResult, CodexQuotaResult } from '../../cliproxy/quota/quota-types';
|
|
25
39
|
import type { BarSummaryRow } from '../routes/bar-routes';
|
|
26
40
|
export interface NativeQuotaDeps {
|
|
27
|
-
/** Read the native Claude Code credentials. */
|
|
41
|
+
/** Read the native Claude Code credentials (global default path). */
|
|
28
42
|
readCredentials?: () => ClaudeNativeCredentials | null;
|
|
43
|
+
/**
|
|
44
|
+
* Read credentials for a specific Claude profile (file-only, no keychain).
|
|
45
|
+
* Injected so tests never touch real fs or Keychain.
|
|
46
|
+
* profile: the profile name (e.g. "work"); returns null when absent/unparseable.
|
|
47
|
+
*/
|
|
48
|
+
readClaudeCredentialsForProfile?: (profile: string) => ClaudeNativeCredentials | null;
|
|
29
49
|
/** Fetch Claude quota with a directly-supplied native token. */
|
|
30
50
|
fetchClaudeQuota?: (accessToken: string, accountId?: string) => Promise<ClaudeQuotaResult>;
|
|
31
51
|
/**
|
|
@@ -40,6 +60,23 @@ export interface NativeQuotaDeps {
|
|
|
40
60
|
fetchCodexNetworkQuota?: (accountId: string) => Promise<CodexQuotaResult>;
|
|
41
61
|
/** Read Codex quota from local session logs (zero network, fallback). */
|
|
42
62
|
getCodexQuota?: () => Promise<CodexLocalQuota | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Read the native Codex auth for a profile (file-only, no keychain).
|
|
65
|
+
* DEFAULT_PROFILE ('default') reads ~/.codex/auth.json; other names read codex-instances/<name>/auth.json.
|
|
66
|
+
* Returns null when absent/unparseable.
|
|
67
|
+
*/
|
|
68
|
+
readCodexNativeAuth?: (profile: string) => {
|
|
69
|
+
accessToken: string;
|
|
70
|
+
accountId: string;
|
|
71
|
+
} | null;
|
|
72
|
+
/** Enumerate Claude profile names. Injected so tests never touch real fs. */
|
|
73
|
+
listClaudeProfiles?: () => string[];
|
|
74
|
+
/** Enumerate Codex profile names (including DEFAULT_PROFILE for bare ~/.codex). */
|
|
75
|
+
listCodexProfiles?: () => string[];
|
|
76
|
+
/** Resolve the default Claude profile name. */
|
|
77
|
+
defaultClaudeProfile?: () => string | null;
|
|
78
|
+
/** Resolve the default Codex profile name. */
|
|
79
|
+
defaultCodexProfile?: () => string | null;
|
|
43
80
|
/** Clock seam for deterministic backoff/TTL/breaker tests. */
|
|
44
81
|
now?: () => number;
|
|
45
82
|
/** Sleep seam (no real delay in tests). */
|
|
@@ -48,14 +85,19 @@ export interface NativeQuotaDeps {
|
|
|
48
85
|
/** Reset all module state. Tests call this to avoid cross-test pollution. */
|
|
49
86
|
export declare function resetNativeQuotaState(): void;
|
|
50
87
|
/**
|
|
51
|
-
* Build the native subscription rows
|
|
88
|
+
* Build the native subscription rows for /summary.
|
|
89
|
+
*
|
|
90
|
+
* When profile-enumeration deps are injected (listClaudeProfiles / listCodexProfiles
|
|
91
|
+
* etc.), all profiles are enumerated and the active/default profile is live-polled
|
|
92
|
+
* while non-default profiles are cache-only (parked). This keeps the 2.5s deadline:
|
|
93
|
+
* at most 2 live upstream calls per /summary regardless of profile count.
|
|
52
94
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
95
|
+
* When no enumeration deps are injected (legacy mode / old tests that stub only
|
|
96
|
+
* readCredentials + getDefaultCodexAccountId), the old single-profile collectors
|
|
97
|
+
* are used for backward compatibility.
|
|
55
98
|
*
|
|
56
|
-
* `opts.force` bypasses the TTL short-circuit on
|
|
57
|
-
*
|
|
58
|
-
* respected regardless of force (account protection).
|
|
99
|
+
* `opts.force` bypasses the TTL short-circuit on the ACTIVE profile. The circuit
|
|
100
|
+
* breaker is always respected regardless of force (account protection).
|
|
59
101
|
*/
|
|
60
102
|
export declare function getNativeAccountRows(deps?: NativeQuotaDeps, opts?: {
|
|
61
103
|
force?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"native-quota-collector.d.ts","sourceRoot":"","sources":["../../../src/web-server/usage/native-quota-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AA4D7E,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAAC;IACvD;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,uBAAuB,GAAG,IAAI,CAAC;IACtF,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACtD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7F,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IACnC,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAgDD,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAouCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,eAAoB,EAC1B,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmC1B;AA2ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,EAAE,CAS5D"}
|