@cyanheads/pubchem-mcp-server 0.6.3 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +6 -3
- package/changelog/0.6.x/0.6.4.md +23 -0
- package/changelog/0.6.x/0.6.5.md +22 -0
- package/dist/mcp-server/resources/definitions/assay.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/assay.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/compound-bioactivity.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/compound-image.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/compound-image.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/compound-safety.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/compound-safety.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/compound-xrefs.resource.js.map +1 -1
- package/dist/mcp-server/resources/definitions/compound.resource.js +3 -3
- package/dist/mcp-server/resources/definitions/compound.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.js +3 -3
- package/dist/mcp-server/tools/definitions/get-bioactivity.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.js +5 -5
- package/dist/mcp-server/tools/definitions/get-compound-3d-structure.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-details.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-details.tool.js +5 -5
- package/dist/mcp-server/tools/definitions/get-compound-details.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/get-compound-image.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/get-compound-interactions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/get-compound-safety.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-compound-xrefs.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/get-compound-xrefs.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/get-summary.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +13 -2
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-assays.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/search-assays.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-compounds.tool.d.ts +13 -2
- package/dist/mcp-server/tools/definitions/search-compounds.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-compounds.tool.js +93 -42
- package/dist/mcp-server/tools/definitions/search-compounds.tool.js.map +1 -1
- package/dist/services/pubchem/pubchem-client.d.ts +40 -26
- package/dist/services/pubchem/pubchem-client.d.ts.map +1 -1
- package/dist/services/pubchem/pubchem-client.js +242 -106
- package/dist/services/pubchem/pubchem-client.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +4 -4
- package/server.json +3 -3
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module mcp-server/tools/definitions/search-compounds
|
|
5
5
|
*/
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
8
8
|
import { getPubChemClient } from '../../../services/pubchem/pubchem-client.js';
|
|
9
9
|
import { COMPOUND_PROPERTIES } from '../../../services/pubchem/types.js';
|
|
10
10
|
const searchTypeEnum = z.enum([
|
|
@@ -17,6 +17,22 @@ const searchTypeEnum = z.enum([
|
|
|
17
17
|
const identifierTypeEnum = z.enum(['name', 'smiles', 'inchikey']);
|
|
18
18
|
const queryTypeEnum = z.enum(['smiles', 'cid']);
|
|
19
19
|
const propertyEnum = z.enum(COMPOUND_PROPERTIES);
|
|
20
|
+
/** How identifier-mode notices and errors name each identifierType, and what to check when
|
|
21
|
+
* PubChem rejects one as unreadable. Only SMILES has been seen to draw that rejection. */
|
|
22
|
+
const IDENTIFIER_FORMS = {
|
|
23
|
+
smiles: {
|
|
24
|
+
label: 'SMILES',
|
|
25
|
+
guidance: 'Check the SMILES syntax (balanced ring closures and parentheses, valid element symbols) and remove any "*" wildcard atoms.',
|
|
26
|
+
},
|
|
27
|
+
name: {
|
|
28
|
+
label: 'compound names',
|
|
29
|
+
guidance: 'Check that identifierType="name" matches the identifier form.',
|
|
30
|
+
},
|
|
31
|
+
inchikey: {
|
|
32
|
+
label: 'InChIKeys',
|
|
33
|
+
guidance: 'Check that identifierType="inchikey" matches the identifier form.',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
20
36
|
export const searchCompounds = tool('pubchem_search_compounds', {
|
|
21
37
|
title: 'Search Compounds',
|
|
22
38
|
description: 'Search PubChem for chemical compounds by identifier (name, SMILES, or InChIKey, batched up to 25), molecular formula in Hill notation, substructure or superstructure containment, or 2D Tanimoto similarity. Returns a page of CIDs — reach matches past maxResults with offset. Optionally hydrate results with properties to avoid a follow-up pubchem_get_compound_details call.',
|
|
@@ -26,7 +42,7 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
26
42
|
openWorldHint: true,
|
|
27
43
|
},
|
|
28
44
|
input: z.object({
|
|
29
|
-
searchType: searchTypeEnum.describe('Search strategy. "identifier": name/SMILES/InChIKey lookup. "formula": molecular formula. "substructure": find compounds containing the query as a substructure. "superstructure": find compounds that are themselves substructures of the query. "similarity": 2D Tanimoto similarity to the query.'),
|
|
45
|
+
searchType: searchTypeEnum.describe('Search strategy; each mode needs its own fields. "identifier": name/SMILES/InChIKey lookup — requires identifierType and identifiers. "formula": molecular formula — requires formula. "substructure": find compounds containing the query as a substructure. "superstructure": find compounds that are themselves substructures of the query. "similarity": 2D Tanimoto similarity to the query. substructure, superstructure, and similarity require query and queryType.'),
|
|
30
46
|
identifierType: identifierTypeEnum
|
|
31
47
|
.optional()
|
|
32
48
|
.describe('Required for identifier search. Type of chemical identifier: "name", "smiles", or "inchikey".'),
|
|
@@ -98,7 +114,7 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
98
114
|
unresolvedIdentifiers: z
|
|
99
115
|
.array(z.string())
|
|
100
116
|
.optional()
|
|
101
|
-
.describe('Identifier-mode only: input identifiers that resolved to no CID. Omitted when every identifier resolved and for non-identifier searches.'),
|
|
117
|
+
.describe('Identifier-mode only: input identifiers that resolved to no CID — PubChem had no match, or could not interpret the input as identifierType (the notice says which). Omitted when every identifier resolved and for non-identifier searches.'),
|
|
102
118
|
}),
|
|
103
119
|
// Agent-facing context — search strategy echo, total, the page boundary, and a notice
|
|
104
120
|
// covering unresolved identifiers, an empty page, and further pages. Reaches
|
|
@@ -133,7 +149,7 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
133
149
|
notice: z
|
|
134
150
|
.string()
|
|
135
151
|
.optional()
|
|
136
|
-
.describe('Recovery guidance when no compounds matched, when the offset runs past the matches observed, when identifiers
|
|
152
|
+
.describe('Recovery guidance when no compounds matched, when the offset runs past the matches observed, when identifiers had no match or could not be interpreted, when identifiers collided on one CID, or when further pages remain. Absent when this page is complete and every identifier resolved to its own CID.'),
|
|
137
153
|
},
|
|
138
154
|
errors: [
|
|
139
155
|
{
|
|
@@ -145,13 +161,13 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
145
161
|
{
|
|
146
162
|
reason: 'missing_formula',
|
|
147
163
|
code: JsonRpcErrorCode.ValidationError,
|
|
148
|
-
when: 'searchType is "formula" but the formula field was omitted',
|
|
164
|
+
when: 'searchType is "formula" but the formula field was omitted or blank',
|
|
149
165
|
recovery: 'Pass formula in Hill notation, for example "C6H12O6" or "CaH2O2".',
|
|
150
166
|
},
|
|
151
167
|
{
|
|
152
168
|
reason: 'missing_structure_args',
|
|
153
169
|
code: JsonRpcErrorCode.ValidationError,
|
|
154
|
-
when: 'substructure/superstructure/similarity search
|
|
170
|
+
when: 'substructure/superstructure/similarity search with query or queryType omitted, or a blank query',
|
|
155
171
|
recovery: 'Provide both query (SMILES string or CID as string) and queryType ("smiles" or "cid").',
|
|
156
172
|
},
|
|
157
173
|
{
|
|
@@ -160,6 +176,21 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
160
176
|
when: 'structure/similarity search with queryType "cid" but query is not a positive integer CID',
|
|
161
177
|
recovery: 'Pass a positive integer CID string (e.g. "2244"), or set queryType "smiles" with a SMILES query.',
|
|
162
178
|
},
|
|
179
|
+
{
|
|
180
|
+
reason: 'identifier_rejected',
|
|
181
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
182
|
+
when: 'identifier search where PubChem rejected every identifier in the batch as unreadable (HTTP 400) — for SMILES, a string it could not standardize into a structure. A batch with any other outcome lists rejected inputs in unresolvedIdentifiers instead',
|
|
183
|
+
recovery: 'Check each identifier against identifierType: for SMILES, balanced ring closures and parentheses, valid element symbols, and no "*" wildcard atoms; otherwise set identifierType to the form the identifiers are in.',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
reason: 'search_query_rejected',
|
|
187
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
188
|
+
// Raised by PubChemClient.searchByFormula / searchByStructure, which know the query form
|
|
189
|
+
// the runtime hint names.
|
|
190
|
+
thrownBy: 'service',
|
|
191
|
+
when: 'PubChem failed a formula, substructure, superstructure, or similarity search with HTTP 500 "Search status indicates failure" — its answer for a malformed SMILES or formula, a SMILES with a "*" wildcard atom, or a CID with no record',
|
|
192
|
+
recovery: 'Fix the SMILES syntax or remove "*" atoms, write the formula in Hill notation (e.g. "C6H12O6"), or confirm the CID exists with pubchem_get_compound_details.',
|
|
193
|
+
},
|
|
163
194
|
],
|
|
164
195
|
async handler(input, ctx) {
|
|
165
196
|
const client = getPubChemClient();
|
|
@@ -172,10 +203,11 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
172
203
|
const recordCap = input.offset + input.maxResults + 1;
|
|
173
204
|
let boundedSearch = false;
|
|
174
205
|
const identifierMap = new Map();
|
|
175
|
-
// Identifier-mode resolution tracking (#29):
|
|
176
|
-
//
|
|
206
|
+
// Identifier-mode resolution tracking (#29): every input that resolved to no CID, whether
|
|
207
|
+
// PubChem had no match or rejected the input as unreadable (#55).
|
|
177
208
|
const unresolvedIdentifiers = [];
|
|
178
|
-
|
|
209
|
+
// Agent-facing notices, identifier-mode signals first; the page-boundary notice joins below.
|
|
210
|
+
const noticeParts = [];
|
|
179
211
|
switch (input.searchType) {
|
|
180
212
|
case 'identifier': {
|
|
181
213
|
const { identifierType, identifiers } = input;
|
|
@@ -184,31 +216,47 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
184
216
|
...ctx.recoveryFor('missing_identifier_args'),
|
|
185
217
|
});
|
|
186
218
|
}
|
|
187
|
-
const
|
|
188
|
-
let cids;
|
|
219
|
+
const lookup = (id) => {
|
|
189
220
|
switch (identifierType) {
|
|
190
221
|
case 'name':
|
|
191
|
-
|
|
192
|
-
break;
|
|
222
|
+
return client.searchByName(id, ctx.signal);
|
|
193
223
|
case 'smiles':
|
|
194
|
-
|
|
195
|
-
break;
|
|
224
|
+
return client.searchBySmiles(id, ctx.signal);
|
|
196
225
|
case 'inchikey':
|
|
197
|
-
|
|
198
|
-
break;
|
|
226
|
+
return client.searchByInchiKey(id, ctx.signal);
|
|
199
227
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
|
|
228
|
+
};
|
|
229
|
+
// Settle every lookup so one unreadable input costs only itself. A rejected
|
|
230
|
+
// identifier is that input's own outcome; any other failure (5xx, rate limit,
|
|
231
|
+
// timeout, cancellation) is the call's, and fails it — absorbing an outage as
|
|
232
|
+
// "unresolved" would return a wrong answer as a success.
|
|
233
|
+
const outcomes = await Promise.allSettled(identifiers.map(lookup));
|
|
234
|
+
// Walk inputs in request order: a CID's echo goes to its first requester, unresolved
|
|
235
|
+
// inputs are collected by cause, and a CID with several distinct requesters is a
|
|
236
|
+
// collision (the output row can echo only one).
|
|
237
|
+
const notFoundIdentifiers = [];
|
|
238
|
+
const rejectedIdentifiers = [];
|
|
239
|
+
let rejectionFault;
|
|
206
240
|
const cidToIdentifiers = new Map();
|
|
207
|
-
for (const
|
|
241
|
+
for (const [i, id] of identifiers.entries()) {
|
|
242
|
+
const outcome = outcomes[i];
|
|
243
|
+
if (outcome?.status === 'rejected') {
|
|
244
|
+
const { reason } = outcome;
|
|
245
|
+
if (!(reason instanceof McpError && reason.data?.reason === 'identifier_rejected')) {
|
|
246
|
+
throw reason;
|
|
247
|
+
}
|
|
248
|
+
rejectedIdentifiers.push(id);
|
|
249
|
+
unresolvedIdentifiers.push(id);
|
|
250
|
+
rejectionFault ??= reason.data?.fault;
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const cids = outcome?.value ?? [];
|
|
208
254
|
if (cids.length === 0) {
|
|
255
|
+
notFoundIdentifiers.push(id);
|
|
209
256
|
unresolvedIdentifiers.push(id);
|
|
210
257
|
continue;
|
|
211
258
|
}
|
|
259
|
+
allCids.push(...cids);
|
|
212
260
|
for (const cid of cids) {
|
|
213
261
|
const owners = cidToIdentifiers.get(cid);
|
|
214
262
|
if (owners) {
|
|
@@ -221,27 +269,40 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
221
269
|
}
|
|
222
270
|
}
|
|
223
271
|
}
|
|
272
|
+
const { label, guidance } = IDENTIFIER_FORMS[identifierType];
|
|
273
|
+
if (rejectedIdentifiers.length === identifiers.length) {
|
|
274
|
+
throw ctx.fail('identifier_rejected', `PubChem could not interpret any of the ${identifiers.length} identifier(s) as ${label}: ${rejectedIdentifiers.join(', ')}.`, { fault: rejectionFault, ...ctx.recoveryFor('identifier_rejected') });
|
|
275
|
+
}
|
|
276
|
+
if (notFoundIdentifiers.length > 0) {
|
|
277
|
+
noticeParts.push(`${notFoundIdentifiers.length} of ${identifiers.length} identifier(s) did not resolve to a CID: ${notFoundIdentifiers.join(', ')}. Verify spelling and that identifierType="${identifierType}" matches the identifier form (name/smiles/inchikey).`);
|
|
278
|
+
}
|
|
279
|
+
if (rejectedIdentifiers.length > 0) {
|
|
280
|
+
noticeParts.push(`PubChem could not interpret ${rejectedIdentifiers.length} of ${identifiers.length} identifier(s) as ${label}: ${rejectedIdentifiers.join(', ')}. ${guidance}`);
|
|
281
|
+
}
|
|
224
282
|
for (const [cid, owners] of cidToIdentifiers) {
|
|
225
|
-
if (owners.length > 1)
|
|
226
|
-
|
|
283
|
+
if (owners.length > 1) {
|
|
284
|
+
noticeParts.push(`Identifiers ${owners.join(', ')} all resolved to CID ${cid}; the result row echoes only "${identifierMap.get(cid)}" for it.`);
|
|
285
|
+
}
|
|
227
286
|
}
|
|
228
|
-
allCids = resolutions.flatMap((r) => r.cids);
|
|
229
287
|
break;
|
|
230
288
|
}
|
|
231
289
|
case 'formula': {
|
|
232
|
-
|
|
290
|
+
// Blank means missing: PubChem answers a whitespace-only formula with unrelated
|
|
291
|
+
// compounds. A padded formula passes through — PubChem trims it.
|
|
292
|
+
if (!input.formula?.trim()) {
|
|
233
293
|
throw ctx.fail('missing_formula', undefined, {
|
|
234
294
|
...ctx.recoveryFor('missing_formula'),
|
|
235
295
|
});
|
|
236
296
|
}
|
|
237
297
|
boundedSearch = true;
|
|
238
|
-
allCids = await client.searchByFormula(input.formula, input.allowOtherElements, recordCap);
|
|
298
|
+
allCids = await client.searchByFormula(input.formula, input.allowOtherElements, recordCap, ctx.signal);
|
|
239
299
|
break;
|
|
240
300
|
}
|
|
241
301
|
case 'substructure':
|
|
242
302
|
case 'superstructure':
|
|
243
303
|
case 'similarity': {
|
|
244
|
-
|
|
304
|
+
// A whitespace-only SMILES query otherwise surfaces as an upstream HTTP 500.
|
|
305
|
+
if (!input.query?.trim() || !input.queryType) {
|
|
245
306
|
throw ctx.fail('missing_structure_args', undefined, {
|
|
246
307
|
...ctx.recoveryFor('missing_structure_args'),
|
|
247
308
|
});
|
|
@@ -252,7 +313,7 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
252
313
|
throw ctx.fail('invalid_cid_query', `queryType is "cid" but query "${input.query}" is not a positive integer CID.`, { ...ctx.recoveryFor('invalid_cid_query') });
|
|
253
314
|
}
|
|
254
315
|
boundedSearch = true;
|
|
255
|
-
allCids = await client.searchByStructure(input.searchType, input.query, input.queryType, input.threshold, recordCap);
|
|
316
|
+
allCids = await client.searchByStructure(input.searchType, input.query, input.queryType, input.threshold, recordCap, ctx.signal);
|
|
256
317
|
break;
|
|
257
318
|
}
|
|
258
319
|
}
|
|
@@ -283,16 +344,6 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
283
344
|
: { searchType: input.searchType, totalFoundAtLeast: observedTotal, offset: input.offset });
|
|
284
345
|
if (hasMore)
|
|
285
346
|
ctx.enrich({ nextOffset });
|
|
286
|
-
// Identifier-mode signals (#29): name inputs that did not resolve and flag CID
|
|
287
|
-
// collisions, so a partial miss is never silent. Empty for other search types.
|
|
288
|
-
const noticeParts = [];
|
|
289
|
-
if (unresolvedIdentifiers.length > 0) {
|
|
290
|
-
const requested = input.identifiers?.length ?? unresolvedIdentifiers.length;
|
|
291
|
-
noticeParts.push(`${unresolvedIdentifiers.length} of ${requested} identifier(s) did not resolve to a CID: ${unresolvedIdentifiers.join(', ')}. Verify spelling and that identifierType="${input.identifierType}" matches the identifier form (name/smiles/inchikey).`);
|
|
292
|
-
}
|
|
293
|
-
for (const c of collisions) {
|
|
294
|
-
noticeParts.push(`Identifiers ${c.identifiers.join(', ')} all resolved to CID ${c.cid}; the result row echoes only "${identifierMap.get(c.cid)}" for it.`);
|
|
295
|
-
}
|
|
296
347
|
if (pagedCids.length === 0) {
|
|
297
348
|
// An empty page is either "nothing matched" or "the offset ran past the matches" —
|
|
298
349
|
// say which, and name the bound the caller can page back inside.
|
|
@@ -329,7 +380,7 @@ export const searchCompounds = tool('pubchem_search_compounds', {
|
|
|
329
380
|
// Optionally hydrate with properties
|
|
330
381
|
let propsMap;
|
|
331
382
|
if (input.properties && input.properties.length > 0 && pagedCids.length > 0) {
|
|
332
|
-
const rows = await client.getProperties(pagedCids, input.properties);
|
|
383
|
+
const rows = await client.getProperties(pagedCids, input.properties, ctx.signal);
|
|
333
384
|
propsMap = new Map(rows.map((r) => [r.CID, r]));
|
|
334
385
|
}
|
|
335
386
|
const results = pagedCids.map((cid) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-compounds.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-compounds.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-compounds.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-compounds.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IAC5B,YAAY;IACZ,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAuD,CAAC,CAAC;AAErF;0FAC0F;AAC1F,MAAM,gBAAgB,GAGlB;IACF,MAAM,EAAE;QACN,KAAK,EAAE,QAAQ;QACf,QAAQ,EACN,4HAA4H;KAC/H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,+DAA+D;KAC1E;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,mEAAmE;KAC9E;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,EAAE;IAC9D,KAAK,EAAE,kBAAkB;IACzB,WAAW,EACT,sXAAsX;IACxX,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,cAAc,CAAC,QAAQ,CACjC,6cAA6c,CAC9c;QACD,cAAc,EAAE,kBAAkB;aAC/B,QAAQ,EAAE;aACV,QAAQ,CACP,+FAA+F,CAChG;QACH,WAAW,EAAE,CAAC;aACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACtD,OAAO,EAAE,2CAA2C;SACrD,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CACP,oOAAoO,CACrO;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,6FAA6F,CAC9F;QACH,kBAAkB,EAAE,CAAC;aAClB,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,iGAAiG,CAClG;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,0IAA0I,CAC3I;QACH,SAAS,EAAE,aAAa;aACrB,QAAQ,EAAE;aACV,QAAQ,CACP,qFAAqF,CACtF;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,4HAA4H,CAC7H;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,KAAK,CAAC;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CACP,sZAAsZ,CACvZ;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,mGAAmG,CACpG;QACH,UAAU,EAAE,CAAC;aACV,KAAK,CAAC,YAAY,CAAC;aACnB,QAAQ,EAAE;aACV,QAAQ,CACP,uJAAuJ,CACxJ;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAChD,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACP,2FAA2F,CAC5F;SACJ,CAAC;aACD,QAAQ,CAAC,0BAA0B,CAAC,CACxC;aACA,QAAQ,CAAC,qBAAqB,CAAC;QAClC,qBAAqB,EAAE,CAAC;aACrB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,6OAA6O,CAC9O;KACJ,CAAC;IACF,sFAAsF;IACtF,6EAA6E;IAC7E,2EAA2E;IAC3E,EAAE;IACF,kFAAkF;IAClF,wFAAwF;IACxF,sFAAsF;IACtF,wFAAwF;IACxF,yFAAyF;IACzF,kFAAkF;IAClF,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CACP,yFAAyF,CAC1F;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,yPAAyP,CAC1P;QACH,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,0MAA0M,CAC3M;QACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC1E,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,qGAAqG,CACtG;QACH,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACpE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC3E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,6SAA6S,CAC9S;KACJ;IACD,MAAM,EAAE;QACN;YACE,MAAM,EAAE,yBAAyB;YACjC,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,2EAA2E;YACjF,QAAQ,EACN,kGAAkG;SACrG;QACD;YACE,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,oEAAoE;YAC1E,QAAQ,EAAE,mEAAmE;SAC9E;QACD;YACE,MAAM,EAAE,wBAAwB;YAChC,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,iGAAiG;YACvG,QAAQ,EACN,wFAAwF;SAC3F;QACD;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,0FAA0F;YAChG,QAAQ,EACN,kGAAkG;SACrG;QACD;YACE,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,yPAAyP;YAC/P,QAAQ,EACN,sNAAsN;SACzN;QACD;YACE,MAAM,EAAE,uBAAuB;YAC/B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,yFAAyF;YACzF,0BAA0B;YAC1B,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,yOAAyO;YAC/O,QAAQ,EACN,8JAA8J;SACjK;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,wFAAwF;QACxF,wFAAwF;QACxF,wFAAwF;QACxF,wFAAwF;QACxF,wFAAwF;QACxF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QACtD,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAChD,0FAA0F;QAC1F,kEAAkE;QAClE,MAAM,qBAAqB,GAAa,EAAE,CAAC;QAC3C,6FAA6F;QAC7F,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,QAAQ,KAAK,CAAC,UAAU,EAAE,CAAC;YACzB,KAAK,YAAY,EAAE,CAAC;gBAClB,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;gBAC9C,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,EAAE;wBACnD,GAAG,GAAG,CAAC,WAAW,CAAC,yBAAyB,CAAC;qBAC9C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,CAAC,EAAU,EAAqB,EAAE;oBAC/C,QAAQ,cAAc,EAAE,CAAC;wBACvB,KAAK,MAAM;4BACT,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7C,KAAK,QAAQ;4BACX,OAAO,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC/C,KAAK,UAAU;4BACb,OAAO,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC;gBACF,4EAA4E;gBAC5E,8EAA8E;gBAC9E,8EAA8E;gBAC9E,yDAAyD;gBACzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAEnE,qFAAqF;gBACrF,iFAAiF;gBACjF,gDAAgD;gBAChD,MAAM,mBAAmB,GAAa,EAAE,CAAC;gBACzC,MAAM,mBAAmB,GAAa,EAAE,CAAC;gBACzC,IAAI,cAAuB,CAAC;gBAC5B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;gBACrD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,OAAO,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;wBACnC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;wBAC3B,IAAI,CAAC,CAAC,MAAM,YAAY,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB,CAAC,EAAE,CAAC;4BACnF,MAAM,MAAM,CAAC;wBACf,CAAC;wBACD,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC7B,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC/B,cAAc,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;wBACtC,SAAS;oBACX,CAAC;oBACD,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACtB,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC7B,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC/B,SAAS;oBACX,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACzC,IAAI,MAAM,EAAE,CAAC;4BACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5C,CAAC;6BAAM,CAAC;4BACN,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;4BAChC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBAC7D,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;oBACtD,MAAM,GAAG,CAAC,IAAI,CACZ,qBAAqB,EACrB,0CAA0C,WAAW,CAAC,MAAM,qBAAqB,KAAK,KAAK,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC5H,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CACrE,CAAC;gBACJ,CAAC;gBAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CACd,GAAG,mBAAmB,CAAC,MAAM,OAAO,WAAW,CAAC,MAAM,4CAA4C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,cAAc,uDAAuD,CACpP,CAAC;gBACJ,CAAC;gBACD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CACd,+BAA+B,mBAAmB,CAAC,MAAM,OAAO,WAAW,CAAC,MAAM,qBAAqB,KAAK,KAAK,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAC/J,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;oBAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtB,WAAW,CAAC,IAAI,CACd,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,GAAG,iCAAiC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAC9H,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,SAAS,EAAE,CAAC;gBACf,gFAAgF;gBAChF,iEAAiE;gBACjE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;oBAC3B,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE;wBAC3C,GAAG,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC;qBACtC,CAAC,CAAC;gBACL,CAAC;gBACD,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CACpC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,kBAAkB,EACxB,SAAS,EACT,GAAG,CAAC,MAAM,CACX,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,YAAY,EAAE,CAAC;gBAClB,6EAA6E;gBAC7E,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC7C,MAAM,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,SAAS,EAAE;wBAClD,GAAG,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC;qBAC7C,CAAC,CAAC;gBACL,CAAC;gBACD,6EAA6E;gBAC7E,6DAA6D;gBAC7D,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACzF,MAAM,GAAG,CAAC,IAAI,CACZ,mBAAmB,EACnB,iCAAiC,KAAK,CAAC,KAAK,kCAAkC,EAC9E,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAC5C,CAAC;gBACJ,CAAC;gBACD,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CACtC,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,SAAS,EACT,GAAG,CAAC,MAAM,CACX,CAAC;gBACF,MAAM;YACR,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAElF,uFAAuF;QACvF,2DAA2D;QAC3D,MAAM,YAAY,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QAClE,uFAAuF;QACvF,oFAAoF;QACpF,iCAAiC;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnD,qFAAqF;QACrF,wDAAwD;QACxD,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,UAAU,GAAG,aAAa,CAAC;QAE5D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa;YACb,YAAY;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;SAC3B,CAAC,CAAC;QAEH,iFAAiF;QACjF,GAAG,CAAC,MAAM,CACR,YAAY;YACV,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YACnF,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAC7F,CAAC;QACF,IAAI,OAAO;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAExC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,mFAAmF;YACnF,iEAAiE;YACjE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,WAAW,CAAC,IAAI,CACd,4BAA4B,KAAK,CAAC,UAAU,qHAAqH,CAClK,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,0EAA0E;gBAC1E,+DAA+D;gBAC/D,WAAW,CAAC,IAAI,CACd,UAAU,KAAK,CAAC,MAAM,gBAAgB,aAAa,0CAA0C,aAAa,GAAG,CAC9G,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,gFAAgF;YAChF,kFAAkF;YAClF,yEAAyE;YACzE,MAAM,kBAAkB,GAAG,YAAY;gBACrC,CAAC,CAAC,mBAAmB,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,OAAO,aAAa,iBAAiB,UAAU,qBAAqB;gBACvH,CAAC,CAAC,mBAAmB,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,0DAA0D,KAAK,CAAC,UAAU,wBAAwB,UAAU,qBAAqB,CAAC;YACvL,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,SAAS,CAAC,MAAM;gBACvB,GAAG,EAAE,KAAK,CAAC,UAAU;gBACrB,QAAQ,EACN,WAAW,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,kBAAkB,EAAE;oBAClD,CAAC,CAAC,kBAAkB;aACzB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,qCAAqC;QACrC,IAAI,QAA0D,CAAC;QAC/D,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACjF,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,MAAM,MAAM,GAIR,EAAE,GAAG,EAAE,CAAC;YAEZ,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,UAAU;gBAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/C,MAAM,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;gBACzC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;YAC5B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,OAAO,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7F,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAE1D,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;wBACjB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;wBAC7C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;oBACnE,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAC5D,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5E,KAAK,CAAC,IAAI,CACR,2BAA2B,MAAM,CAAC,qBAAqB,CAAC,MAAM,MAAM,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9G,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -9,11 +9,15 @@ export declare class PubChemClient {
|
|
|
9
9
|
private readonly viewBase;
|
|
10
10
|
private readonly sdqBase;
|
|
11
11
|
private readonly rateLimiter;
|
|
12
|
-
/** Shared HTTP core: rate-limit, 30s timeout, retry once on 5xx
|
|
13
|
-
* network error, and surface a clean timeout message. Returns
|
|
14
|
-
* extract the body (JSON, bytes, or text). Centralizing this keeps
|
|
15
|
-
* one resilience contract — the divergence that left fetchBinary
|
|
16
|
-
* timeout message (#16) cannot recur.
|
|
12
|
+
/** Shared HTTP core: rate-limit, 30s timeout, retry once on 5xx (except a rejected search
|
|
13
|
+
* query) and once on a transient network error, and surface a clean timeout message. Returns
|
|
14
|
+
* the ok Response; callers extract the body (JSON, bytes, or text). Centralizing this keeps
|
|
15
|
+
* every fetch variant on one resilience contract — the divergence that left fetchBinary
|
|
16
|
+
* without retry or a clean timeout message (#16) cannot recur.
|
|
17
|
+
*
|
|
18
|
+
* `init.signal` is the caller's cancellation, combined with the per-attempt timeout. Once it
|
|
19
|
+
* aborts — queued for a slot, mid-fetch, or in a retry backoff — the request ends with
|
|
20
|
+
* `RequestCancelled`: no retry, and no failed-request log, since nothing failed upstream. */
|
|
17
21
|
private fetchResponse;
|
|
18
22
|
private fetchJson;
|
|
19
23
|
private fetchBinary;
|
|
@@ -30,11 +34,20 @@ export declare class PubChemClient {
|
|
|
30
34
|
/** Poll a PubChem ListKey until results are ready.
|
|
31
35
|
*
|
|
32
36
|
* `listkey_count` asks PubChem to trim the page; the slice enforces the same bound
|
|
33
|
-
* locally, so the caller's saturation test holds whether or not the parameter is honored.
|
|
37
|
+
* locally, so the caller's saturation test holds whether or not the parameter is honored.
|
|
38
|
+
* A cancellation ends the wait before the next poll. */
|
|
34
39
|
private pollListKey;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
/** Resolve one caller-supplied identifier to its CIDs; [] when PubChem has no match.
|
|
41
|
+
*
|
|
42
|
+
* The identifier is the only variable in these requests, so an HTTP 400 is PubChem rejecting
|
|
43
|
+
* that identifier — for SMILES, a string it cannot standardize into a structure, including
|
|
44
|
+
* well-formed SMILES it cannot process such as a "*" wildcard atom. It is re-thrown as a
|
|
45
|
+
* ValidationError tagged `identifier_rejected`, so a batch caller can set that one input
|
|
46
|
+
* aside. Every other failure — 5xx, rate limit, timeout — keeps its own classification. */
|
|
47
|
+
private lookupIdentifier;
|
|
48
|
+
searchByName(name: string, signal?: AbortSignal): Promise<number[]>;
|
|
49
|
+
searchBySmiles(smiles: string, signal?: AbortSignal): Promise<number[]>;
|
|
50
|
+
searchByInchiKey(inchikey: string, signal?: AbortSignal): Promise<number[]>;
|
|
38
51
|
/** Formula search, bounded server-side by `maxRecords`.
|
|
39
52
|
*
|
|
40
53
|
* `MaxRecords` is mandatory rather than optional because an unbounded fast search moves
|
|
@@ -46,17 +59,18 @@ export declare class PubChemClient {
|
|
|
46
59
|
* `maxRecords` is saturated, and the true total is not recoverable — PubChem returns the
|
|
47
60
|
* CID list alone, with no match count beside it. Callers that need to distinguish the two
|
|
48
61
|
* compare the returned length against the cap they passed. */
|
|
49
|
-
searchByFormula(formula: string, allowOther: boolean, maxRecords: number): Promise<number[]>;
|
|
62
|
+
searchByFormula(formula: string, allowOther: boolean, maxRecords: number, signal?: AbortSignal): Promise<number[]>;
|
|
50
63
|
/** Substructure, superstructure, and 2D-similarity search, bounded server-side by
|
|
51
|
-
* `maxRecords`. Same cap contract as {@link searchByFormula}
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
* `maxRecords`. Same cap contract as {@link searchByFormula}; a query PubChem cannot search
|
|
65
|
+
* on throws `search_query_rejected` the same way. */
|
|
66
|
+
searchByStructure(mode: 'substructure' | 'superstructure' | 'similarity', query: string, queryType: 'smiles' | 'cid', threshold: number | undefined, maxRecords: number, signal?: AbortSignal): Promise<number[]>;
|
|
67
|
+
getProperties(cids: number[], properties: string[], signal?: AbortSignal): Promise<Array<Record<string, unknown> & {
|
|
54
68
|
CID: number;
|
|
55
69
|
}>>;
|
|
56
|
-
getSynonyms(cid: number): Promise<string[]>;
|
|
57
|
-
getImage(cid: number, size?: 'small' | 'large'): Promise<ArrayBuffer>;
|
|
58
|
-
getXrefs(cid: number, xrefType: string): Promise<(string | number)[]>;
|
|
59
|
-
getDescription(cid: number): Promise<Array<{
|
|
70
|
+
getSynonyms(cid: number, signal?: AbortSignal): Promise<string[]>;
|
|
71
|
+
getImage(cid: number, size?: 'small' | 'large', signal?: AbortSignal): Promise<ArrayBuffer>;
|
|
72
|
+
getXrefs(cid: number, xrefType: string, signal?: AbortSignal): Promise<(string | number)[]>;
|
|
73
|
+
getDescription(cid: number, signal?: AbortSignal): Promise<Array<{
|
|
60
74
|
source?: string;
|
|
61
75
|
text: string;
|
|
62
76
|
}>>;
|
|
@@ -66,18 +80,18 @@ export declare class PubChemClient {
|
|
|
66
80
|
* GHS classification" — a nonexistent CID and a real compound without safety data are
|
|
67
81
|
* different answers that call for different follow-up, and both used to surface as an
|
|
68
82
|
* absent result. */
|
|
69
|
-
getSafetyData(cid: number): Promise<SafetyLookup>;
|
|
70
|
-
getClassification(cid: number): Promise<CompoundClassification | null>;
|
|
71
|
-
getAssaySummary(cid: number): Promise<BioactivityRow[]>;
|
|
83
|
+
getSafetyData(cid: number, signal?: AbortSignal): Promise<SafetyLookup>;
|
|
84
|
+
getClassification(cid: number, signal?: AbortSignal): Promise<CompoundClassification | null>;
|
|
85
|
+
getAssaySummary(cid: number, signal?: AbortSignal): Promise<BioactivityRow[]>;
|
|
72
86
|
private parseAssayTable;
|
|
73
|
-
searchAssaysByTarget(targetType: string, query: string): Promise<number[]>;
|
|
74
|
-
getEntitySummary(entityType: string, identifier: string | number): Promise<Record<string, unknown> | null>;
|
|
87
|
+
searchAssaysByTarget(targetType: string, query: string, signal?: AbortSignal): Promise<number[]>;
|
|
88
|
+
getEntitySummary(entityType: string, identifier: string | number, signal?: AbortSignal): Promise<Record<string, unknown> | null>;
|
|
75
89
|
/** Fetch drug-drug, drug-food, and/or chemical-target interactions for a compound.
|
|
76
90
|
* Drug-drug and target data live in PubChem SDQ external tables (drugbankddi, bioactivity);
|
|
77
91
|
* drug-food is inline PUG View text. Each kind reads a window of `maxEntries` entries
|
|
78
92
|
* starting at `offset` records into that kind's own stream; absent data for a kind
|
|
79
|
-
* contributes an empty page rather than erroring. */
|
|
80
|
-
getInteractions(cid: number, kinds: Array<'drug-drug' | 'drug-food' | 'target'>, maxEntries: number, offset: number): Promise<InteractionsResult>;
|
|
93
|
+
* contributes an empty page rather than erroring. A cancellation fails the whole call. */
|
|
94
|
+
getInteractions(cid: number, kinds: Array<'drug-drug' | 'drug-food' | 'target'>, maxEntries: number, offset: number, signal?: AbortSignal): Promise<InteractionsResult>;
|
|
81
95
|
private getInteractionsForKind;
|
|
82
96
|
private getDrugDrugInteractions;
|
|
83
97
|
/** Chemical-target binding/activity from PubChem's `bioactivity` SDQ collection (BindingDB,
|
|
@@ -116,9 +130,9 @@ export declare class PubChemClient {
|
|
|
116
130
|
private resolveSdqTotal;
|
|
117
131
|
/** Fetch the default 3D conformer as raw V2000 SDF text. Throws a typed not-found when
|
|
118
132
|
* PubChem has no computed 3D coordinates (large molecules, mixtures, undefined salts). */
|
|
119
|
-
getSdf3d(cid: number): Promise<string>;
|
|
133
|
+
getSdf3d(cid: number, signal?: AbortSignal): Promise<string>;
|
|
120
134
|
/** List the conformer IDs PubChem has computed for a compound. Returns [] on not-found. */
|
|
121
|
-
getConformerIds(cid: number): Promise<string[]>;
|
|
135
|
+
getConformerIds(cid: number, signal?: AbortSignal): Promise<string[]>;
|
|
122
136
|
}
|
|
123
137
|
export declare function initPubChemClient(): void;
|
|
124
138
|
export declare function getPubChemClient(): PubChemClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubchem-client.d.ts","sourceRoot":"","sources":["../../../src/services/pubchem/pubchem-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"pubchem-client.d.ts","sourceRoot":"","sources":["../../../src/services/pubchem/pubchem-client.ts"],"names":[],"mappings":"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"}
|