@kaitranntt/ccs 7.47.0 → 7.48.0-dev.2
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 +3 -3
- package/config/base-codex.settings.json +4 -4
- package/dist/ccs.js +68 -97
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +77 -15
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/extended-context-config.d.ts +1 -8
- package/dist/cliproxy/config/extended-context-config.d.ts.map +1 -1
- package/dist/cliproxy/config/extended-context-config.js +8 -24
- package/dist/cliproxy/config/extended-context-config.js.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +3 -1
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +210 -39
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +15 -4
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
- package/dist/cliproxy/executor/env-resolver.js +38 -2
- package/dist/cliproxy/executor/env-resolver.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +7 -4
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/executor/retry-handler.d.ts +1 -1
- package/dist/cliproxy/executor/retry-handler.js +2 -2
- package/dist/cliproxy/executor/retry-handler.js.map +1 -1
- package/dist/cliproxy/index.d.ts +1 -0
- package/dist/cliproxy/index.d.ts.map +1 -1
- package/dist/cliproxy/index.js +12 -3
- package/dist/cliproxy/index.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +6 -1
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/model-config.d.ts.map +1 -1
- package/dist/cliproxy/model-config.js +6 -6
- package/dist/cliproxy/model-config.js.map +1 -1
- package/dist/cliproxy/model-id-normalizer.d.ts +70 -0
- package/dist/cliproxy/model-id-normalizer.d.ts.map +1 -0
- package/dist/cliproxy/model-id-normalizer.js +120 -0
- package/dist/cliproxy/model-id-normalizer.js.map +1 -0
- package/dist/cliproxy/provider-capabilities.d.ts +6 -0
- package/dist/cliproxy/provider-capabilities.d.ts.map +1 -1
- package/dist/cliproxy/provider-capabilities.js +24 -2
- package/dist/cliproxy/provider-capabilities.js.map +1 -1
- package/dist/cliproxy/quota-fetcher-claude-normalizer.d.ts +18 -0
- package/dist/cliproxy/quota-fetcher-claude-normalizer.d.ts.map +1 -0
- package/dist/cliproxy/quota-fetcher-claude-normalizer.js +291 -0
- package/dist/cliproxy/quota-fetcher-claude-normalizer.js.map +1 -0
- package/dist/cliproxy/quota-fetcher-claude.d.ts +21 -0
- package/dist/cliproxy/quota-fetcher-claude.d.ts.map +1 -0
- package/dist/cliproxy/quota-fetcher-claude.js +263 -0
- package/dist/cliproxy/quota-fetcher-claude.js.map +1 -0
- package/dist/cliproxy/quota-manager.d.ts +7 -4
- package/dist/cliproxy/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota-manager.js +80 -21
- package/dist/cliproxy/quota-manager.js.map +1 -1
- package/dist/cliproxy/quota-types.d.ts +74 -2
- package/dist/cliproxy/quota-types.d.ts.map +1 -1
- package/dist/cliproxy/quota-types.js +1 -1
- package/dist/cliproxy/remote-proxy-client.d.ts +3 -10
- package/dist/cliproxy/remote-proxy-client.d.ts.map +1 -1
- package/dist/cliproxy/remote-proxy-client.js +32 -29
- package/dist/cliproxy/remote-proxy-client.js.map +1 -1
- package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
- package/dist/cliproxy/services/variant-settings.js +12 -13
- package/dist/cliproxy/services/variant-settings.js.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.d.ts.map +1 -1
- package/dist/cliproxy/tool-sanitization-proxy.js +15 -5
- package/dist/cliproxy/tool-sanitization-proxy.js.map +1 -1
- package/dist/cliproxy/types.d.ts +1 -1
- package/dist/cliproxy/types.d.ts.map +1 -1
- package/dist/commands/api-command.d.ts +13 -0
- package/dist/commands/api-command.d.ts.map +1 -1
- package/dist/commands/api-command.js +85 -24
- package/dist/commands/api-command.js.map +1 -1
- package/dist/commands/arg-extractor.d.ts +29 -0
- package/dist/commands/arg-extractor.d.ts.map +1 -0
- package/dist/commands/arg-extractor.js +81 -0
- package/dist/commands/arg-extractor.js.map +1 -0
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +3 -2
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts +13 -0
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +66 -126
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts +2 -1
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +172 -46
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/config-command.d.ts.map +1 -1
- package/dist/commands/config-command.js +17 -16
- package/dist/commands/config-command.js.map +1 -1
- package/dist/commands/config-image-analysis-command.d.ts.map +1 -1
- package/dist/commands/config-image-analysis-command.js +37 -27
- package/dist/commands/config-image-analysis-command.js.map +1 -1
- package/dist/commands/persist-command.d.ts.map +1 -1
- package/dist/commands/persist-command.js +455 -139
- package/dist/commands/persist-command.js.map +1 -1
- package/dist/management/checks/config-check.d.ts.map +1 -1
- package/dist/management/checks/config-check.js +2 -2
- package/dist/management/checks/config-check.js.map +1 -1
- package/dist/shared/extended-context-utils.d.ts +14 -0
- package/dist/shared/extended-context-utils.d.ts.map +1 -0
- package/dist/shared/extended-context-utils.js +35 -0
- package/dist/shared/extended-context-utils.js.map +1 -0
- package/dist/ui/assets/{accounts-BiL_RD2P.js → accounts-7x9sEJ6E.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BoSPpkH2.js → alert-dialog-CSG7wAU8.js} +1 -1
- package/dist/ui/assets/{api-BrHcZxrF.js → api-BF6fKWuJ.js} +1 -1
- package/dist/ui/assets/{auth-section-CNEQOji9.js → auth-section-BrRo7P5e.js} +1 -1
- package/dist/ui/assets/{backups-section-CYPJq2Y6.js → backups-section-BvoQ6sjn.js} +1 -1
- package/dist/ui/assets/cliproxy-Dp-l74Ht.js +3 -0
- package/dist/ui/assets/cliproxy-control-panel-D3_E45dZ.js +1 -0
- package/dist/ui/assets/{confirm-dialog-JGLPn0Pg.js → confirm-dialog-QJFlAs8u.js} +1 -1
- package/dist/ui/assets/{copilot-Bt-S8kHA.js → copilot-CRxuFhMs.js} +2 -2
- package/dist/ui/assets/{cursor-Qg3y30M0.js → cursor-Dsbkv6Oq.js} +1 -1
- package/dist/ui/assets/{globalenv-section-Dxrj87dw.js → globalenv-section-Cf_HiHep.js} +1 -1
- package/dist/ui/assets/{health-Bjnrp81E.js → health-CgHX0qCf.js} +1 -1
- package/dist/ui/assets/index-BNJ3rHVd.js +47 -0
- package/dist/ui/assets/{index-ApptKWow.js → index-BUC-Zfgc.js} +1 -1
- package/dist/ui/assets/{index-XJ9726WB.js → index-C-4XwF_5.js} +1 -1
- package/dist/ui/assets/{index-DOQkTkq-.js → index-D9YYXEsW.js} +1 -1
- package/dist/ui/assets/{index-UVFLMRYY.js → index-yfs5e5sm.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-PLX0fi09.js → proxy-status-widget-CNesfhAI.js} +1 -1
- package/dist/ui/assets/{separator-yZDNbi3M.js → separator-9gFbzNO-.js} +1 -1
- package/dist/ui/assets/{shared-DZ3QOOgF.js → shared-DfHvplPN.js} +1 -1
- package/dist/ui/assets/{switch-DsTWD8-1.js → switch-BMNi4Qdv.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/utils/claude-config-path.d.ts +11 -0
- package/dist/utils/claude-config-path.d.ts.map +1 -0
- package/dist/utils/claude-config-path.js +51 -0
- package/dist/utils/claude-config-path.js.map +1 -0
- package/dist/utils/websearch/hook-config.d.ts.map +1 -1
- package/dist/utils/websearch/hook-config.js +9 -23
- package/dist/utils/websearch/hook-config.js.map +1 -1
- package/dist/web-server/jsonl-parser.d.ts +0 -4
- package/dist/web-server/jsonl-parser.d.ts.map +1 -1
- package/dist/web-server/jsonl-parser.js +52 -29
- package/dist/web-server/jsonl-parser.js.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-stats-routes.js +105 -3
- package/dist/web-server/routes/cliproxy-stats-routes.js.map +1 -1
- package/dist/web-server/routes/persist-routes.d.ts.map +1 -1
- package/dist/web-server/routes/persist-routes.js +54 -44
- package/dist/web-server/routes/persist-routes.js.map +1 -1
- package/dist/web-server/routes/route-helpers.d.ts +0 -5
- package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
- package/dist/web-server/routes/route-helpers.js +52 -6
- package/dist/web-server/routes/route-helpers.js.map +1 -1
- package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
- package/dist/web-server/routes/settings-routes.js +72 -10
- package/dist/web-server/routes/settings-routes.js.map +1 -1
- package/dist/web-server/shared-routes.js +2 -2
- package/dist/web-server/shared-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/cliproxy-CDDlPp51.js +0 -3
- package/dist/ui/assets/cliproxy-control-panel-XSSdoJ3f.js +0 -1
- package/dist/ui/assets/index-Ce5AiHY_.js +0 -47
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Quota Fetcher for Claude (Anthropic) Accounts
|
|
4
|
+
*
|
|
5
|
+
* Fetches policy limits from Claude API and normalizes 5h + weekly windows.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
|
+
if (mod && mod.__esModule) return mod;
|
|
25
|
+
var result = {};
|
|
26
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
27
|
+
__setModuleDefault(result, mod);
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.fetchAllClaudeQuotas = exports.fetchClaudeQuota = exports.CLAUDE_POLICY_LIMITS_URL = exports.buildClaudeCoreUsageSummary = exports.buildClaudeQuotaWindows = void 0;
|
|
32
|
+
const path = __importStar(require("node:path"));
|
|
33
|
+
const fsp = __importStar(require("node:fs/promises"));
|
|
34
|
+
const config_generator_1 = require("./config-generator");
|
|
35
|
+
const account_manager_1 = require("./account-manager");
|
|
36
|
+
const auth_utils_1 = require("./auth-utils");
|
|
37
|
+
const quota_fetcher_claude_normalizer_1 = require("./quota-fetcher-claude-normalizer");
|
|
38
|
+
Object.defineProperty(exports, "buildClaudeQuotaWindows", { enumerable: true, get: function () { return quota_fetcher_claude_normalizer_1.buildClaudeQuotaWindows; } });
|
|
39
|
+
Object.defineProperty(exports, "buildClaudeCoreUsageSummary", { enumerable: true, get: function () { return quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary; } });
|
|
40
|
+
exports.CLAUDE_POLICY_LIMITS_URL = 'https://api.anthropic.com/api/claude_code/policy_limits';
|
|
41
|
+
const CLAUDE_QUOTA_TIMEOUT_MS = 10000;
|
|
42
|
+
const CLAUDE_QUOTA_MAX_ATTEMPTS = 2;
|
|
43
|
+
const CLAUDE_USER_AGENT = 'ccs-cli/claude-quota';
|
|
44
|
+
function asString(value) {
|
|
45
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
|
|
46
|
+
}
|
|
47
|
+
function toObject(value) {
|
|
48
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
49
|
+
return null;
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function extractAccessToken(data) {
|
|
53
|
+
const direct = asString(data['access_token']);
|
|
54
|
+
if (direct)
|
|
55
|
+
return direct;
|
|
56
|
+
const nested = toObject(data['token']);
|
|
57
|
+
if (nested) {
|
|
58
|
+
const nestedToken = asString(nested['access_token']);
|
|
59
|
+
if (nestedToken)
|
|
60
|
+
return nestedToken;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
function extractExpiry(data) {
|
|
65
|
+
const direct = asString(data['expired']);
|
|
66
|
+
if (direct)
|
|
67
|
+
return direct;
|
|
68
|
+
const nested = toObject(data['token']);
|
|
69
|
+
if (nested) {
|
|
70
|
+
return asString(nested['expiry']);
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
function isAuthExpired(expiry) {
|
|
75
|
+
return expiry ? (0, auth_utils_1.isTokenExpired)(expiry) : false;
|
|
76
|
+
}
|
|
77
|
+
async function readJsonFile(filePath) {
|
|
78
|
+
try {
|
|
79
|
+
const raw = await fsp.readFile(filePath, 'utf-8');
|
|
80
|
+
const parsed = JSON.parse(raw);
|
|
81
|
+
return toObject(parsed);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function readAuthCandidate(filePath) {
|
|
88
|
+
const data = await readJsonFile(filePath);
|
|
89
|
+
if (!data)
|
|
90
|
+
return null;
|
|
91
|
+
const accessToken = extractAccessToken(data);
|
|
92
|
+
if (!accessToken)
|
|
93
|
+
return null;
|
|
94
|
+
const expiry = extractExpiry(data);
|
|
95
|
+
return {
|
|
96
|
+
accessToken,
|
|
97
|
+
isExpired: isAuthExpired(expiry),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function readClaudeAuthData(accountId) {
|
|
101
|
+
const authDirs = [(0, config_generator_1.getAuthDir)(), (0, account_manager_1.getPausedDir)()];
|
|
102
|
+
const sanitizedId = (0, auth_utils_1.sanitizeEmail)(accountId);
|
|
103
|
+
const expectedFiles = [`claude-${sanitizedId}.json`, `anthropic-${sanitizedId}.json`];
|
|
104
|
+
for (const authDir of authDirs) {
|
|
105
|
+
for (const expectedFile of expectedFiles) {
|
|
106
|
+
const filePath = path.join(authDir, expectedFile);
|
|
107
|
+
const authData = await readAuthCandidate(filePath);
|
|
108
|
+
if (authData) {
|
|
109
|
+
return authData;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
let files;
|
|
113
|
+
try {
|
|
114
|
+
files = await fsp.readdir(authDir);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
for (const file of files) {
|
|
120
|
+
if (!file.endsWith('.json') ||
|
|
121
|
+
(!file.startsWith('claude-') && !file.startsWith('anthropic-'))) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const filePath = path.join(authDir, file);
|
|
125
|
+
const data = await readJsonFile(filePath);
|
|
126
|
+
if (!data)
|
|
127
|
+
continue;
|
|
128
|
+
const accessToken = extractAccessToken(data);
|
|
129
|
+
if (!accessToken)
|
|
130
|
+
continue;
|
|
131
|
+
const fileEmail = asString(data['email']);
|
|
132
|
+
const typeValue = asString(data['type']);
|
|
133
|
+
const isClaudeType = typeValue === null || typeValue === 'claude' || typeValue === 'anthropic';
|
|
134
|
+
const matchesEmail = fileEmail === accountId;
|
|
135
|
+
const matchesFile = file.includes(sanitizedId);
|
|
136
|
+
if ((matchesEmail || matchesFile) && isClaudeType) {
|
|
137
|
+
const expiry = extractExpiry(data);
|
|
138
|
+
return {
|
|
139
|
+
accessToken,
|
|
140
|
+
isExpired: isAuthExpired(expiry),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
function buildEmptyResult(error, accountId, needsReauth = false) {
|
|
148
|
+
return {
|
|
149
|
+
success: false,
|
|
150
|
+
windows: [],
|
|
151
|
+
coreUsage: { fiveHour: null, weekly: null },
|
|
152
|
+
lastUpdated: Date.now(),
|
|
153
|
+
error,
|
|
154
|
+
accountId,
|
|
155
|
+
needsReauth,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Fetch quota for a single Claude account.
|
|
160
|
+
*/
|
|
161
|
+
async function fetchClaudeQuota(accountId, verbose = false) {
|
|
162
|
+
const authData = await readClaudeAuthData(accountId);
|
|
163
|
+
if (!authData) {
|
|
164
|
+
return buildEmptyResult('Auth file not found for Claude account', accountId);
|
|
165
|
+
}
|
|
166
|
+
if (authData.isExpired) {
|
|
167
|
+
return buildEmptyResult('Token expired - re-authenticate with ccs cliproxy auth claude', accountId, true);
|
|
168
|
+
}
|
|
169
|
+
let lastError = 'Unknown error';
|
|
170
|
+
for (let attempt = 1; attempt <= CLAUDE_QUOTA_MAX_ATTEMPTS; attempt++) {
|
|
171
|
+
const controller = new AbortController();
|
|
172
|
+
const timeoutId = setTimeout(() => controller.abort(), CLAUDE_QUOTA_TIMEOUT_MS);
|
|
173
|
+
try {
|
|
174
|
+
const response = await fetch(exports.CLAUDE_POLICY_LIMITS_URL, {
|
|
175
|
+
method: 'GET',
|
|
176
|
+
signal: controller.signal,
|
|
177
|
+
headers: {
|
|
178
|
+
Authorization: `Bearer ${authData.accessToken}`,
|
|
179
|
+
Accept: 'application/json',
|
|
180
|
+
'User-Agent': CLAUDE_USER_AGENT,
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
clearTimeout(timeoutId);
|
|
184
|
+
if (verbose) {
|
|
185
|
+
console.error(`[i] Claude policy limits status: ${response.status} (attempt ${attempt})`);
|
|
186
|
+
}
|
|
187
|
+
if (response.status === 401) {
|
|
188
|
+
return buildEmptyResult('Authentication required for policy limits', accountId, true);
|
|
189
|
+
}
|
|
190
|
+
if (response.status === 404) {
|
|
191
|
+
// Some accounts may not expose policy limits; treat as empty but successful.
|
|
192
|
+
return {
|
|
193
|
+
success: true,
|
|
194
|
+
windows: [],
|
|
195
|
+
coreUsage: { fiveHour: null, weekly: null },
|
|
196
|
+
lastUpdated: Date.now(),
|
|
197
|
+
accountId,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if (response.status === 403) {
|
|
201
|
+
return buildEmptyResult('Not authorized for policy limits', accountId);
|
|
202
|
+
}
|
|
203
|
+
if (!response.ok) {
|
|
204
|
+
lastError = `Policy limits API error: ${response.status}`;
|
|
205
|
+
if (attempt < CLAUDE_QUOTA_MAX_ATTEMPTS &&
|
|
206
|
+
(response.status === 429 || response.status >= 500)) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
return buildEmptyResult(lastError, accountId);
|
|
210
|
+
}
|
|
211
|
+
let payload;
|
|
212
|
+
try {
|
|
213
|
+
payload = await response.json();
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return buildEmptyResult('Invalid policy limits format', accountId);
|
|
217
|
+
}
|
|
218
|
+
if (!toObject(payload)) {
|
|
219
|
+
return buildEmptyResult('Invalid policy limits format', accountId);
|
|
220
|
+
}
|
|
221
|
+
const windows = (0, quota_fetcher_claude_normalizer_1.buildClaudeQuotaWindows)(payload);
|
|
222
|
+
const coreUsage = (0, quota_fetcher_claude_normalizer_1.buildClaudeCoreUsageSummary)(windows);
|
|
223
|
+
return {
|
|
224
|
+
success: true,
|
|
225
|
+
windows,
|
|
226
|
+
coreUsage,
|
|
227
|
+
lastUpdated: Date.now(),
|
|
228
|
+
accountId,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
clearTimeout(timeoutId);
|
|
233
|
+
lastError =
|
|
234
|
+
error instanceof Error && error.name === 'AbortError'
|
|
235
|
+
? 'Policy limits request timeout'
|
|
236
|
+
: error instanceof Error
|
|
237
|
+
? error.message
|
|
238
|
+
: 'Unknown error';
|
|
239
|
+
if (verbose) {
|
|
240
|
+
const errorDetails = error instanceof Error ? (error.stack ?? error.message) : JSON.stringify(error);
|
|
241
|
+
console.error(`[!] Claude policy limits failed (attempt ${attempt}): ${lastError}${errorDetails ? `\n${errorDetails}` : ''}`);
|
|
242
|
+
}
|
|
243
|
+
if (attempt >= CLAUDE_QUOTA_MAX_ATTEMPTS) {
|
|
244
|
+
return buildEmptyResult(lastError, accountId);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return buildEmptyResult(lastError, accountId);
|
|
249
|
+
}
|
|
250
|
+
exports.fetchClaudeQuota = fetchClaudeQuota;
|
|
251
|
+
/**
|
|
252
|
+
* Fetch quota for all Claude accounts.
|
|
253
|
+
*/
|
|
254
|
+
async function fetchAllClaudeQuotas(verbose = false) {
|
|
255
|
+
const accounts = (0, account_manager_1.getProviderAccounts)('claude');
|
|
256
|
+
const results = await Promise.all(accounts.map(async (account) => ({
|
|
257
|
+
account: account.id,
|
|
258
|
+
quota: await fetchClaudeQuota(account.id, verbose),
|
|
259
|
+
})));
|
|
260
|
+
return results;
|
|
261
|
+
}
|
|
262
|
+
exports.fetchAllClaudeQuotas = fetchAllClaudeQuotas;
|
|
263
|
+
//# sourceMappingURL=quota-fetcher-claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-fetcher-claude.js","sourceRoot":"","sources":["../../src/cliproxy/quota-fetcher-claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,15 +13,17 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { CLIProxyProvider } from './types';
|
|
15
15
|
import { QuotaResult } from './quota-fetcher';
|
|
16
|
+
import type { ClaudeQuotaResult } from './quota-types';
|
|
16
17
|
import { type AccountInfo } from './account-manager';
|
|
18
|
+
type ManagedQuotaResult = QuotaResult | ClaudeQuotaResult;
|
|
17
19
|
/**
|
|
18
20
|
* Get cached quota result if still valid
|
|
19
21
|
*/
|
|
20
|
-
export declare function getCachedQuota(provider: CLIProxyProvider, accountId: string):
|
|
22
|
+
export declare function getCachedQuota(provider: CLIProxyProvider, accountId: string): ManagedQuotaResult | null;
|
|
21
23
|
/**
|
|
22
24
|
* Cache quota result
|
|
23
25
|
*/
|
|
24
|
-
export declare function setCachedQuota(provider: CLIProxyProvider, accountId: string, result:
|
|
26
|
+
export declare function setCachedQuota(provider: CLIProxyProvider, accountId: string, result: ManagedQuotaResult): void;
|
|
25
27
|
/**
|
|
26
28
|
* Clear all cached quota results
|
|
27
29
|
*/
|
|
@@ -68,7 +70,7 @@ export declare function findHealthyAccount(provider: CLIProxyProvider, exclude:
|
|
|
68
70
|
* Checks if default account has sufficient quota, auto-switches if needed.
|
|
69
71
|
* Respects paused accounts, tier priority, and cooldown settings.
|
|
70
72
|
*
|
|
71
|
-
* @param provider - CLIProxy provider
|
|
73
|
+
* @param provider - CLIProxy provider
|
|
72
74
|
* @returns PreflightResult with account to use and any switch info
|
|
73
75
|
*/
|
|
74
76
|
export declare function preflightCheck(provider: CLIProxyProvider): Promise<PreflightResult>;
|
|
@@ -91,7 +93,7 @@ export declare function getQuotaStatus(provider: CLIProxyProvider): Promise<{
|
|
|
91
93
|
* critical_interval (60s) when quota hits warn_threshold (20%).
|
|
92
94
|
* Auto-stops on exhaustion or when stopQuotaMonitor() is called.
|
|
93
95
|
*
|
|
94
|
-
* Only monitors
|
|
96
|
+
* Only monitors providers with quota-based account rotation.
|
|
95
97
|
* No-op for other providers, manual mode, or if disabled in config.
|
|
96
98
|
*/
|
|
97
99
|
export declare function startQuotaMonitor(provider: CLIProxyProvider, accountId: string): void;
|
|
@@ -99,4 +101,5 @@ export declare function startQuotaMonitor(provider: CLIProxyProvider, accountId:
|
|
|
99
101
|
* Stop the runtime quota monitor. Safe to call multiple times.
|
|
100
102
|
*/
|
|
101
103
|
export declare function stopQuotaMonitor(): void;
|
|
104
|
+
export {};
|
|
102
105
|
//# sourceMappingURL=quota-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAqB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../../src/cliproxy/quota-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAqB,MAAM,iBAAiB,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAK3B,KAAK,kBAAkB,GAAG,WAAW,GAAG,iBAAiB,CAAC;AA2B1D;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAY3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAmED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAYnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjF;AA8BD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAoCD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAuDjE;AAkCD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2EzF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACxE,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,WAAW,CAAC;QACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ,CAAC,CAwBD;AA2FD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAiCrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
|
|
@@ -38,8 +38,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.stopQuotaMonitor = exports.startQuotaMonitor = exports.getQuotaStatus = exports.preflightCheck = exports.findHealthyAccount = exports.clearCooldown = exports.applyCooldown = exports.isOnCooldown = exports.clearQuotaCache = exports.setCachedQuota = exports.getCachedQuota = void 0;
|
|
40
40
|
const quota_fetcher_1 = require("./quota-fetcher");
|
|
41
|
+
const quota_fetcher_claude_1 = require("./quota-fetcher-claude");
|
|
41
42
|
const account_manager_1 = require("./account-manager");
|
|
42
43
|
const unified_config_loader_1 = require("../config/unified-config-loader");
|
|
44
|
+
const MANAGED_QUOTA_PROVIDERS = ['agy', 'claude'];
|
|
45
|
+
function isManagedQuotaProvider(provider) {
|
|
46
|
+
return MANAGED_QUOTA_PROVIDERS.includes(provider);
|
|
47
|
+
}
|
|
43
48
|
const CACHE_TTL_MS = 30000; // 30 seconds
|
|
44
49
|
const quotaCache = new Map();
|
|
45
50
|
// Request deduplication: track in-flight fetch promises to avoid parallel duplicate requests
|
|
@@ -89,12 +94,22 @@ async function fetchQuotaWithDedup(provider, accountId, verbose = false) {
|
|
|
89
94
|
return pending;
|
|
90
95
|
}
|
|
91
96
|
// Start new fetch and track it
|
|
92
|
-
const fetchPromise = (
|
|
97
|
+
const fetchPromise = fetchManagedQuota(provider, accountId, verbose)
|
|
93
98
|
.then((result) => {
|
|
94
99
|
setCachedQuota(provider, accountId, result);
|
|
95
100
|
return result;
|
|
96
101
|
})
|
|
97
102
|
.catch(() => {
|
|
103
|
+
if (provider === 'claude') {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
windows: [],
|
|
107
|
+
coreUsage: { fiveHour: null, weekly: null },
|
|
108
|
+
lastUpdated: Date.now(),
|
|
109
|
+
error: 'Failed to fetch Claude quota',
|
|
110
|
+
accountId,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
98
113
|
return { success: false, models: [], lastUpdated: Date.now() };
|
|
99
114
|
})
|
|
100
115
|
.finally(() => {
|
|
@@ -103,6 +118,12 @@ async function fetchQuotaWithDedup(provider, accountId, verbose = false) {
|
|
|
103
118
|
pendingFetches.set(key, fetchPromise);
|
|
104
119
|
return fetchPromise;
|
|
105
120
|
}
|
|
121
|
+
async function fetchManagedQuota(provider, accountId, verbose) {
|
|
122
|
+
if (provider === 'claude') {
|
|
123
|
+
return (0, quota_fetcher_claude_1.fetchClaudeQuota)(accountId, verbose);
|
|
124
|
+
}
|
|
125
|
+
return (0, quota_fetcher_1.fetchAccountQuota)(provider, accountId, verbose);
|
|
126
|
+
}
|
|
106
127
|
const cooldownMap = new Map();
|
|
107
128
|
/**
|
|
108
129
|
* Check if account is on cooldown
|
|
@@ -144,30 +165,54 @@ exports.clearCooldown = clearCooldown;
|
|
|
144
165
|
* @param fn - Async function to apply to each item
|
|
145
166
|
* @param concurrency - Number of concurrent operations (default: 10)
|
|
146
167
|
*/
|
|
147
|
-
async function batchedMap(items, fn, concurrency = 10) {
|
|
168
|
+
async function batchedMap(items, fn, concurrency = 10, delayMs = 100) {
|
|
148
169
|
const results = [];
|
|
149
170
|
for (let i = 0; i < items.length; i += concurrency) {
|
|
171
|
+
if (i > 0 && delayMs > 0) {
|
|
172
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
173
|
+
}
|
|
150
174
|
const batch = items.slice(i, i + concurrency);
|
|
151
175
|
const batchResults = await Promise.all(batch.map(fn));
|
|
152
176
|
results.push(...batchResults);
|
|
153
177
|
}
|
|
154
178
|
return results;
|
|
155
179
|
}
|
|
180
|
+
function calculateAgyQuotaPercent(quota) {
|
|
181
|
+
if (!quota.success || quota.models.length === 0)
|
|
182
|
+
return null;
|
|
183
|
+
const total = quota.models.reduce((sum, model) => sum + model.percentage, 0);
|
|
184
|
+
return total / quota.models.length;
|
|
185
|
+
}
|
|
186
|
+
function calculateClaudeQuotaPercent(quota) {
|
|
187
|
+
if (!quota.success)
|
|
188
|
+
return null;
|
|
189
|
+
const coreWindows = [quota.coreUsage?.fiveHour, quota.coreUsage?.weekly].filter((window) => !!window);
|
|
190
|
+
if (coreWindows.length > 0) {
|
|
191
|
+
return Math.min(...coreWindows.map((window) => window.remainingPercent));
|
|
192
|
+
}
|
|
193
|
+
const usageWindows = quota.windows.filter((window) => window.rateLimitType !== 'overage');
|
|
194
|
+
if (usageWindows.length > 0) {
|
|
195
|
+
return Math.min(...usageWindows.map((window) => window.remainingPercent));
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
156
199
|
/**
|
|
157
|
-
* Calculate
|
|
200
|
+
* Calculate normalized quota percentage for managed providers.
|
|
158
201
|
*/
|
|
159
|
-
function
|
|
160
|
-
if (
|
|
161
|
-
return
|
|
202
|
+
function calculateQuotaPercent(quota) {
|
|
203
|
+
if ('models' in quota) {
|
|
204
|
+
return calculateAgyQuotaPercent(quota);
|
|
162
205
|
}
|
|
163
|
-
|
|
164
|
-
return total / quota.models.length;
|
|
206
|
+
return calculateClaudeQuotaPercent(quota);
|
|
165
207
|
}
|
|
166
208
|
/**
|
|
167
209
|
* Find healthy account with remaining quota
|
|
168
210
|
* Respects tier priority and skips paused/cooldown accounts
|
|
169
211
|
*/
|
|
170
212
|
async function findHealthyAccount(provider, exclude) {
|
|
213
|
+
if (!isManagedQuotaProvider(provider)) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
171
216
|
const config = (0, unified_config_loader_1.loadOrCreateUnifiedConfig)();
|
|
172
217
|
const tierPriority = config.quota_management?.auto?.tier_priority ?? ['ultra', 'pro', 'free'];
|
|
173
218
|
const threshold = config.quota_management?.auto?.exhaustion_threshold ?? 5;
|
|
@@ -182,7 +227,7 @@ async function findHealthyAccount(provider, exclude) {
|
|
|
182
227
|
if (!quota) {
|
|
183
228
|
quota = await fetchQuotaWithDedup(provider, account.id);
|
|
184
229
|
}
|
|
185
|
-
const avgQuota =
|
|
230
|
+
const avgQuota = calculateQuotaPercent(quota) ?? 0;
|
|
186
231
|
return {
|
|
187
232
|
id: account.id,
|
|
188
233
|
tier: account.tier || 'unknown',
|
|
@@ -236,12 +281,12 @@ async function findAndSwitch(provider, excludeAccountId, reason) {
|
|
|
236
281
|
* Checks if default account has sufficient quota, auto-switches if needed.
|
|
237
282
|
* Respects paused accounts, tier priority, and cooldown settings.
|
|
238
283
|
*
|
|
239
|
-
* @param provider - CLIProxy provider
|
|
284
|
+
* @param provider - CLIProxy provider
|
|
240
285
|
* @returns PreflightResult with account to use and any switch info
|
|
241
286
|
*/
|
|
242
287
|
async function preflightCheck(provider) {
|
|
243
|
-
// Only
|
|
244
|
-
if (provider
|
|
288
|
+
// Only providers with quota-based account rotation need preflight checks.
|
|
289
|
+
if (!isManagedQuotaProvider(provider)) {
|
|
245
290
|
const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
246
291
|
return { proceed: true, accountId: defaultAccount?.id || '' };
|
|
247
292
|
}
|
|
@@ -277,8 +322,17 @@ async function preflightCheck(provider) {
|
|
|
277
322
|
if (!quota) {
|
|
278
323
|
quota = await fetchQuotaWithDedup(provider, defaultAccount.id);
|
|
279
324
|
}
|
|
280
|
-
// Calculate
|
|
281
|
-
|
|
325
|
+
// Calculate normalized quota percentage.
|
|
326
|
+
// Null means quota data is unavailable (e.g. provider does not expose limits for this account).
|
|
327
|
+
const quotaPercent = calculateQuotaPercent(quota);
|
|
328
|
+
if (quotaPercent === null) {
|
|
329
|
+
return {
|
|
330
|
+
proceed: true,
|
|
331
|
+
accountId: defaultAccount.id,
|
|
332
|
+
reason: 'Quota unavailable, using default account',
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
const avgQuota = quotaPercent;
|
|
282
336
|
const threshold = quotaConfig.auto?.exhaustion_threshold ?? 5;
|
|
283
337
|
if (avgQuota < threshold) {
|
|
284
338
|
// Apply cooldown to exhausted account
|
|
@@ -288,7 +342,7 @@ async function preflightCheck(provider) {
|
|
|
288
342
|
return {
|
|
289
343
|
proceed: true,
|
|
290
344
|
accountId: defaultAccount.id,
|
|
291
|
-
quotaPercent
|
|
345
|
+
quotaPercent,
|
|
292
346
|
};
|
|
293
347
|
}
|
|
294
348
|
exports.preflightCheck = preflightCheck;
|
|
@@ -301,10 +355,10 @@ async function getQuotaStatus(provider) {
|
|
|
301
355
|
const defaultAccount = (0, account_manager_1.getDefaultAccount)(provider);
|
|
302
356
|
const results = await Promise.all(accounts.map(async (account) => {
|
|
303
357
|
let quota = getCachedQuota(provider, account.id);
|
|
304
|
-
if (!quota && provider
|
|
358
|
+
if (!quota && isManagedQuotaProvider(provider)) {
|
|
305
359
|
quota = await fetchQuotaWithDedup(provider, account.id);
|
|
306
360
|
}
|
|
307
|
-
const avgQuota = quota ?
|
|
361
|
+
const avgQuota = quota ? calculateQuotaPercent(quota) : null;
|
|
308
362
|
return {
|
|
309
363
|
account,
|
|
310
364
|
quota: avgQuota,
|
|
@@ -338,7 +392,12 @@ function scheduleNextPoll(provider, accountId, monitorConfig, intervalMs) {
|
|
|
338
392
|
const quota = await fetchQuotaWithDedup(provider, accountId);
|
|
339
393
|
if (monitorStopped)
|
|
340
394
|
return; // Re-check after async fetch
|
|
341
|
-
const avgQuota =
|
|
395
|
+
const avgQuota = calculateQuotaPercent(quota);
|
|
396
|
+
if (avgQuota === null) {
|
|
397
|
+
// Quota data unavailable: keep polling, but do not treat unknown as healthy/exhausted.
|
|
398
|
+
scheduleNextPoll(provider, accountId, monitorConfig, monitorConfig.normal_interval_seconds * 1000);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
342
401
|
if (avgQuota <= monitorConfig.exhaustion_threshold) {
|
|
343
402
|
// EXHAUSTED: cooldown + switch default + stop monitoring.
|
|
344
403
|
// NOTE: Monitor stops here intentionally. The current session continues
|
|
@@ -378,12 +437,12 @@ function scheduleNextPoll(provider, accountId, monitorConfig, intervalMs) {
|
|
|
378
437
|
* critical_interval (60s) when quota hits warn_threshold (20%).
|
|
379
438
|
* Auto-stops on exhaustion or when stopQuotaMonitor() is called.
|
|
380
439
|
*
|
|
381
|
-
* Only monitors
|
|
440
|
+
* Only monitors providers with quota-based account rotation.
|
|
382
441
|
* No-op for other providers, manual mode, or if disabled in config.
|
|
383
442
|
*/
|
|
384
443
|
function startQuotaMonitor(provider, accountId) {
|
|
385
|
-
// Only
|
|
386
|
-
if (provider
|
|
444
|
+
// Only managed providers support runtime quota monitoring.
|
|
445
|
+
if (!isManagedQuotaProvider(provider))
|
|
387
446
|
return;
|
|
388
447
|
// Prevent duplicate monitors
|
|
389
448
|
if (monitorTimer)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-manager.js","sourceRoot":"","sources":["../../src/cliproxy/quota-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quota-manager.js","sourceRoot":"","sources":["../../src/cliproxy/quota-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,mDAAiE;AACjE,iEAA0D;AAE1D,uDAO2B;AAC3B,2EAA4E;AAM5E,MAAM,uBAAuB,GAAoC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEnF,SAAS,sBAAsB,CAAC,QAA0B;IACxD,OAAO,uBAAuB,CAAC,QAAQ,CAAC,QAAgC,CAAC,CAAC;AAC5E,CAAC;AAWD,MAAM,YAAY,GAAG,KAAM,CAAC,CAAC,aAAa;AAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;AAEjD,6FAA6F;AAC7F,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuC,CAAC;AAEtE,SAAS,WAAW,CAAC,QAA0B,EAAE,SAAiB;IAChE,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,QAA0B,EAC1B,SAAiB;IAEjB,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QAChD,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAfD,wCAeC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,QAA0B,EAC1B,SAAiB,EACjB,MAA0B;IAE1B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAPD,wCAOC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAFD,0CAEC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAA8B,EAC9B,SAAiB,EACjB,OAAO,GAAG,KAAK;IAEf,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE7C,qCAAqC;IACrC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;SACjE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,KAAK,CAAC,GAAuB,EAAE;QAC9B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,KAAK,EAAE,8BAA8B;gBACrC,SAAS;aACV,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACjE,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACtC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAA8B,EAC9B,SAAiB,EACjB,OAAgB;IAEhB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAA,uCAAgB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAA,iCAAiB,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAUD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;AAErD;;GAEG;AACH,SAAgB,YAAY,CAAC,QAA0B,EAAE,SAAiB;IACxE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAZD,oCAYC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,QAA0B,EAC1B,SAAiB,EACjB,OAAe;IAEf,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAPD,sCAOC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,QAA0B,EAAE,SAAiB;IACzE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAHD,sCAGC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,KAAU,EACV,EAA2B,EAC3B,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,GAAG;IAEb,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAkBD,SAAS,wBAAwB,CAAC,KAAkB;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAwB;IAC3D,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAC7E,CAAC,MAAM,EAAwC,EAAE,CAAC,CAAC,CAAC,MAAM,CAC3D,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;IAC1F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAAyB;IACtD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACtB,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CACtC,QAA0B,EAC1B,OAAiB;IAEjB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,iDAAyB,GAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAE/C,4BAA4B;IAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAA,iCAAe,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAC/F,CAAC;IAEF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,+EAA+E;IAC/E,MAAM,UAAU,GAAG,MAAM,UAAU,CACjC,SAAS,EACT,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEnD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;YAC/B,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF,sBAAsB;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,8CAA8C;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9C,IAAI,UAAU,KAAK,UAAU;YAAE,OAAO,UAAU,GAAG,UAAU,CAAC;QAC9D,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AA1DD,gDA0DC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,QAA8B,EAC9B,gBAAwB,EACxB,MAAc;IAEd,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE3E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,8DAA8D;QAC9D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,gBAAgB;YAC3B,MAAM,EAAE,GAAG,MAAM,6BAA6B;SAC/C,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAA,mCAAiB,EAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAA,8BAAY,EAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,WAAW,CAAC,EAAE;QACzB,YAAY,EAAE,gBAAgB;QAC9B,MAAM;QACN,YAAY,EAAE,WAAW,CAAC,SAAS;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,cAAc,CAAC,QAA0B;IAC7D,0EAA0E;IAC1E,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,iDAAyB,GAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,+CAA+C;IAC/C,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,IAAI,WAAW,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1E,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC7E,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IACzD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QACxF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAA,iCAAe,EAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QACjD,OAAO,MAAM,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IACvF,CAAC;IAED,iBAAiB;IACjB,IAAI,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,OAAO,MAAM,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,6BAA6B,CAAC,CAAC;IACzF,CAAC;IAED,6CAA6C;IAC7C,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,yCAAyC;IACzC,gGAAgG;IAChG,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,cAAc,CAAC,EAAE;YAC5B,MAAM,EAAE,0CAA0C;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC;IAC9B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,oBAAoB,IAAI,CAAC,CAAC;IAE9D,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;QACzB,sCAAsC;QACtC,aAAa,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC;QACpF,OAAO,MAAM,aAAa,CACxB,QAAQ,EACR,cAAc,CAAC,EAAE,EACjB,oBAAoB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,cAAc,CAAC,EAAE;QAC5B,YAAY;KACb,CAAC;AACJ,CAAC;AA3ED,wCA2EC;AAED;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,QAA0B;IAS7D,MAAM,QAAQ,GAAG,IAAA,qCAAmB,EAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC7B,IAAI,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,OAAO;YACL,OAAO;YACP,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,IAAA,iCAAe,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9C,SAAS,EAAE,cAAc,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE;SAC7C,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAhCD,wCAgCC;AAED,+EAA+E;AAC/E,kEAAkE;AAClE,+EAA+E;AAE/E,gDAAgD;AAChD,IAAI,YAAY,GAAyC,IAAI,CAAC;AAE9D,4DAA4D;AAC5D,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,iEAAiE;AACjE,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,SAAS,gBAAgB,CACvB,QAA8B,EAC9B,SAAiB,EACjB,aAAmC,EACnC,UAAkB;IAElB,YAAY,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;QACnC,oEAAoE;QACpE,IAAI,cAAc;YAAE,OAAO;QAE3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7D,IAAI,cAAc;gBAAE,OAAO,CAAC,6BAA6B;YACzD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAE9C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,uFAAuF;gBACvF,gBAAgB,CACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,CAAC,uBAAuB,GAAG,IAAI,CAC7C,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;gBACnD,0DAA0D;gBAC1D,wEAAwE;gBACxE,sEAAsE;gBACtE,wEAAwE;gBACxE,MAAM,EAAE,qBAAqB,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;gBACnE,MAAM,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACjF,YAAY,GAAG,IAAI,CAAC;gBACpB,OAAO,CAAC,eAAe;YACzB,CAAC;YAED,IAAI,QAAQ,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC;gBAC7C,kDAAkD;gBAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,kBAAkB,GAAC,CAAC;oBAC/D,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBACvC,oBAAoB,GAAG,IAAI,CAAC;gBAC9B,CAAC;gBACD,gBAAgB,CACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,CAAC,yBAAyB,GAAG,IAAI,CAC/C,CAAC;gBACF,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,gBAAgB,CACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,CAAC,uBAAuB,GAAG,IAAI,CAC7C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;YACpD,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,qDAAqD;IACrD,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;QAChF,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,QAA0B,EAAE,SAAiB;IAC7E,2DAA2D;IAC3D,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAAE,OAAO;IAE9C,6BAA6B;IAC7B,IAAI,YAAY;QAAE,OAAO;IAEzB,MAAM,MAAM,GAAG,IAAA,iDAAyB,GAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,0DAA0D;IAC1D,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,kDAAkD;IAClD,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO;QAAE,OAAO;IAElD,0FAA0F;IAC1F,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC;IAClD,IAAI,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACvE,OAAO,CAAC,qEAAqE;IAC/E,CAAC;IAED,oBAAoB,GAAG,KAAK,CAAC;IAC7B,cAAc,GAAG,KAAK,CAAC;IAEvB,sCAAsC;IACtC,gBAAgB,CACd,QAAQ,EACR,SAAS,EACT,WAAW,CAAC,eAAe,EAC3B,WAAW,CAAC,eAAe,CAAC,uBAAuB,GAAG,IAAI,CAC3D,CAAC;AACJ,CAAC;AAjCD,8CAiCC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,cAAc,GAAG,IAAI,CAAC;IACtB,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,YAAY,CAAC,CAAC;QAC3B,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,oBAAoB,GAAG,KAAK,CAAC;AAC/B,CAAC;AAPD,4CAOC"}
|