@cyberdrk/onchain 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/SKILL.md +101 -4
- package/dist/cli/setup-wizard.d.ts.map +1 -1
- package/dist/cli/setup-wizard.js +34 -0
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/commands/polymarket.d.ts.map +1 -1
- package/dist/commands/polymarket.js +174 -3
- package/dist/commands/polymarket.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +11 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/mixins/etherscan.d.ts.map +1 -1
- package/dist/lib/mixins/etherscan.js +28 -11
- package/dist/lib/mixins/etherscan.js.map +1 -1
- package/dist/lib/mixins/polymarket.d.ts +8 -6
- package/dist/lib/mixins/polymarket.d.ts.map +1 -1
- package/dist/lib/mixins/polymarket.js +434 -6
- package/dist/lib/mixins/polymarket.js.map +1 -1
- package/dist/lib/mixins/solscan.d.ts.map +1 -1
- package/dist/lib/mixins/solscan.js +13 -0
- package/dist/lib/mixins/solscan.js.map +1 -1
- package/dist/lib/onchain-client-types.d.ts +44 -0
- package/dist/lib/onchain-client-types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -29,12 +29,107 @@ function parseOutcomePrices(prices) {
|
|
|
29
29
|
return [0.5, 0.5];
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
function eventMatchesTags(event, options) {
|
|
33
|
+
if (!options) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
const eventTags = (event.tags ?? []).map((t) => t.slug.toLowerCase());
|
|
37
|
+
const categoryTag = event.category?.toLowerCase();
|
|
38
|
+
const allEventTags = categoryTag ? [...eventTags, categoryTag] : eventTags;
|
|
39
|
+
// Check excludes first
|
|
40
|
+
if (options.excludeTags && options.excludeTags.length > 0) {
|
|
41
|
+
const excludeLower = options.excludeTags.map((t) => t.toLowerCase());
|
|
42
|
+
for (const tag of allEventTags) {
|
|
43
|
+
if (excludeLower.includes(tag)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Check includes (if specified, event must match at least one)
|
|
49
|
+
if (options.includeTags && options.includeTags.length > 0) {
|
|
50
|
+
const includeLower = options.includeTags.map((t) => t.toLowerCase());
|
|
51
|
+
let hasMatch = false;
|
|
52
|
+
for (const tag of allEventTags) {
|
|
53
|
+
if (includeLower.includes(tag)) {
|
|
54
|
+
hasMatch = true;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!hasMatch) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
32
64
|
export function withPolymarket(Base) {
|
|
33
65
|
class PolymarketMixin extends Base {
|
|
66
|
+
async getPolymarketTags(options) {
|
|
67
|
+
try {
|
|
68
|
+
const url = `${POLYMARKET_API_BASE}/tags`;
|
|
69
|
+
const response = await this.fetchWithTimeout(url, {
|
|
70
|
+
headers: { Accept: 'application/json' },
|
|
71
|
+
});
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
return { success: false, error: `Polymarket API error: ${response.status}` };
|
|
74
|
+
}
|
|
75
|
+
const data = (await response.json());
|
|
76
|
+
// If popular, we need to count events per tag
|
|
77
|
+
if (options?.popular) {
|
|
78
|
+
const tagCounts = new Map();
|
|
79
|
+
// Initialize all tags with 0 count
|
|
80
|
+
for (const tag of data) {
|
|
81
|
+
tagCounts.set(tag.slug, {
|
|
82
|
+
tag: { id: tag.id, slug: tag.slug, label: tag.label, eventCount: 0 },
|
|
83
|
+
count: 0,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Fetch events to count by tag (get more to get better counts)
|
|
87
|
+
const eventsUrl = `${POLYMARKET_API_BASE}/events?active=true&closed=false&limit=100&related_tags=true`;
|
|
88
|
+
const eventsResponse = await this.fetchWithTimeout(eventsUrl, {
|
|
89
|
+
headers: { Accept: 'application/json' },
|
|
90
|
+
});
|
|
91
|
+
if (eventsResponse.ok) {
|
|
92
|
+
const events = (await eventsResponse.json());
|
|
93
|
+
for (const event of events) {
|
|
94
|
+
if (event.tags) {
|
|
95
|
+
for (const eventTag of event.tags) {
|
|
96
|
+
const existing = tagCounts.get(eventTag.slug);
|
|
97
|
+
if (existing) {
|
|
98
|
+
existing.count++;
|
|
99
|
+
existing.tag.eventCount = existing.count;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Sort by count descending, filter out zero counts
|
|
106
|
+
const tags = Array.from(tagCounts.values())
|
|
107
|
+
.filter((t) => t.count > 0)
|
|
108
|
+
.sort((a, b) => b.count - a.count)
|
|
109
|
+
.map((t) => t.tag);
|
|
110
|
+
return { success: true, tags };
|
|
111
|
+
}
|
|
112
|
+
// Return all tags sorted by label
|
|
113
|
+
const tags = data
|
|
114
|
+
.map((t) => ({ id: t.id, slug: t.slug, label: t.label }))
|
|
115
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
116
|
+
return { success: true, tags };
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return {
|
|
120
|
+
success: false,
|
|
121
|
+
error: `Failed to fetch tags: ${error instanceof Error ? error.message : String(error)}`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
34
125
|
async getPolymarketTrending(options) {
|
|
35
126
|
try {
|
|
36
127
|
const limit = options?.limit ?? 10;
|
|
37
|
-
const
|
|
128
|
+
const hasFilters = (options?.excludeTags && options.excludeTags.length > 0) ||
|
|
129
|
+
(options?.includeTags && options.includeTags.length > 0);
|
|
130
|
+
// Fetch more events if we need to filter client-side
|
|
131
|
+
const fetchLimit = hasFilters ? Math.max(limit * 3, 50) : limit;
|
|
132
|
+
const url = `${POLYMARKET_API_BASE}/events?active=true&closed=false&limit=${fetchLimit}&order=volume&ascending=false&related_tags=true`;
|
|
38
133
|
const response = await this.fetchWithTimeout(url, {
|
|
39
134
|
headers: { Accept: 'application/json' },
|
|
40
135
|
});
|
|
@@ -44,8 +139,21 @@ export function withPolymarket(Base) {
|
|
|
44
139
|
const data = (await response.json());
|
|
45
140
|
const markets = [];
|
|
46
141
|
for (const event of data) {
|
|
142
|
+
// Apply tag filters at the event level
|
|
143
|
+
if (!eventMatchesTags(event, options)) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
47
146
|
const eventMarkets = event.markets ?? [];
|
|
48
147
|
for (const market of eventMarkets) {
|
|
148
|
+
const volume = Number.parseFloat(market.volume ?? event.volume ?? '0');
|
|
149
|
+
const liquidity = Number.parseFloat(market.liquidity ?? event.liquidity ?? '0');
|
|
150
|
+
// Apply volume/liquidity filters
|
|
151
|
+
if (options?.minVolume && volume < options.minVolume) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (options?.minLiquidity && liquidity < options.minLiquidity) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
49
157
|
const outcomes = parseOutcomes(market.outcomes);
|
|
50
158
|
const outcomePrices = parseOutcomePrices(market.outcomePrices);
|
|
51
159
|
markets.push({
|
|
@@ -53,14 +161,15 @@ export function withPolymarket(Base) {
|
|
|
53
161
|
question: market.question || event.title,
|
|
54
162
|
description: market.description || event.description,
|
|
55
163
|
endDate: market.endDate || event.endDate,
|
|
56
|
-
volume
|
|
57
|
-
liquidity
|
|
164
|
+
volume,
|
|
165
|
+
liquidity,
|
|
58
166
|
outcomes: outcomes.map((outcome, i) => ({
|
|
59
167
|
name: outcome,
|
|
60
168
|
price: outcomePrices[i] ?? 0.5,
|
|
61
169
|
})),
|
|
62
170
|
category: event.category,
|
|
63
171
|
slug: event.slug,
|
|
172
|
+
tags: event.tags?.map((t) => t.slug),
|
|
64
173
|
});
|
|
65
174
|
}
|
|
66
175
|
}
|
|
@@ -141,7 +250,11 @@ export function withPolymarket(Base) {
|
|
|
141
250
|
async searchPolymarkets(query, options) {
|
|
142
251
|
try {
|
|
143
252
|
const limit = options?.limit ?? 10;
|
|
144
|
-
const
|
|
253
|
+
const hasFilters = (options?.excludeTags && options.excludeTags.length > 0) ||
|
|
254
|
+
(options?.includeTags && options.includeTags.length > 0);
|
|
255
|
+
// Fetch more events if we need to filter client-side
|
|
256
|
+
const fetchLimit = hasFilters ? Math.max(limit * 3, 50) : limit;
|
|
257
|
+
const url = `${POLYMARKET_API_BASE}/events?title_contains=${encodeURIComponent(query)}&active=true&closed=false&limit=${fetchLimit}&related_tags=true`;
|
|
145
258
|
const response = await this.fetchWithTimeout(url, {
|
|
146
259
|
headers: { Accept: 'application/json' },
|
|
147
260
|
});
|
|
@@ -151,8 +264,21 @@ export function withPolymarket(Base) {
|
|
|
151
264
|
const data = (await response.json());
|
|
152
265
|
const markets = [];
|
|
153
266
|
for (const event of data) {
|
|
267
|
+
// Apply tag filters at the event level
|
|
268
|
+
if (!eventMatchesTags(event, options)) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
154
271
|
const eventMarkets = event.markets ?? [];
|
|
155
272
|
for (const market of eventMarkets) {
|
|
273
|
+
const volume = Number.parseFloat(market.volume ?? event.volume ?? '0');
|
|
274
|
+
const liquidity = Number.parseFloat(market.liquidity ?? event.liquidity ?? '0');
|
|
275
|
+
// Apply volume/liquidity filters
|
|
276
|
+
if (options?.minVolume && volume < options.minVolume) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
if (options?.minLiquidity && liquidity < options.minLiquidity) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
156
282
|
const outcomes = parseOutcomes(market.outcomes);
|
|
157
283
|
const outcomePrices = parseOutcomePrices(market.outcomePrices);
|
|
158
284
|
markets.push({
|
|
@@ -160,14 +286,15 @@ export function withPolymarket(Base) {
|
|
|
160
286
|
question: market.question || event.title,
|
|
161
287
|
description: market.description || event.description,
|
|
162
288
|
endDate: market.endDate || event.endDate,
|
|
163
|
-
volume
|
|
164
|
-
liquidity
|
|
289
|
+
volume,
|
|
290
|
+
liquidity,
|
|
165
291
|
outcomes: outcomes.map((outcome, i) => ({
|
|
166
292
|
name: outcome,
|
|
167
293
|
price: outcomePrices[i] ?? 0.5,
|
|
168
294
|
})),
|
|
169
295
|
category: event.category,
|
|
170
296
|
slug: event.slug,
|
|
297
|
+
tags: event.tags?.map((t) => t.slug),
|
|
171
298
|
});
|
|
172
299
|
}
|
|
173
300
|
}
|
|
@@ -180,7 +307,308 @@ export function withPolymarket(Base) {
|
|
|
180
307
|
};
|
|
181
308
|
}
|
|
182
309
|
}
|
|
310
|
+
async getPolymarketSentiment(topic, options) {
|
|
311
|
+
try {
|
|
312
|
+
const limit = options?.limit ?? 20;
|
|
313
|
+
const topicLower = topic.toLowerCase();
|
|
314
|
+
// Expand topic to better search terms for common queries
|
|
315
|
+
const searchTerms = expandTopicToSearchTerms(topicLower);
|
|
316
|
+
// Gather markets from multiple sources
|
|
317
|
+
const allMarkets = [];
|
|
318
|
+
// Search for each expanded term
|
|
319
|
+
for (const term of searchTerms) {
|
|
320
|
+
const searchResult = await this.searchPolymarkets(term, { limit: 30 });
|
|
321
|
+
if (searchResult.success) {
|
|
322
|
+
for (const market of searchResult.markets) {
|
|
323
|
+
// Avoid duplicates
|
|
324
|
+
if (!allMarkets.some((m) => m.id === market.id)) {
|
|
325
|
+
allMarkets.push(market);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Also check trending markets for the topic
|
|
331
|
+
const trendingResult = await this.getPolymarketTrending({ limit: 50 });
|
|
332
|
+
if (trendingResult.success) {
|
|
333
|
+
for (const market of trendingResult.markets) {
|
|
334
|
+
if (!allMarkets.some((m) => m.id === market.id)) {
|
|
335
|
+
// Check if market is relevant to topic
|
|
336
|
+
if (isMarketRelevantToTopic(market, topicLower, searchTerms)) {
|
|
337
|
+
allMarkets.push(market);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (allMarkets.length === 0) {
|
|
343
|
+
return {
|
|
344
|
+
success: false,
|
|
345
|
+
error: `No prediction markets found for "${topic}"`,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
const signals = [];
|
|
349
|
+
// Analyze each market to extract sentiment signals
|
|
350
|
+
for (const market of allMarkets) {
|
|
351
|
+
const signal = analyzeMarketSentiment(market, topicLower, searchTerms);
|
|
352
|
+
if (signal) {
|
|
353
|
+
signals.push(signal);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
if (signals.length === 0) {
|
|
357
|
+
return {
|
|
358
|
+
success: false,
|
|
359
|
+
error: `Found markets for "${topic}" but couldn't extract sentiment signals`,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
// Sort by volume (most liquid markets first)
|
|
363
|
+
signals.sort((a, b) => b.volume - a.volume);
|
|
364
|
+
// Take top signals
|
|
365
|
+
const topSignals = signals.slice(0, limit);
|
|
366
|
+
// Calculate overall sentiment
|
|
367
|
+
const sentiment = calculateOverallSentiment(topic, topSignals);
|
|
368
|
+
return { success: true, sentiment };
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
return {
|
|
372
|
+
success: false,
|
|
373
|
+
error: `Failed to analyze sentiment: ${error instanceof Error ? error.message : String(error)}`,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
}
|
|
183
377
|
}
|
|
184
378
|
return PolymarketMixin;
|
|
185
379
|
}
|
|
380
|
+
// Topic expansion for better search results
|
|
381
|
+
const TOPIC_EXPANSIONS = {
|
|
382
|
+
fed: ['fed', 'interest rate', 'fomc', 'federal reserve', 'rate cut', 'rate hike'],
|
|
383
|
+
rates: ['interest rate', 'fed', 'fomc', 'rate cut', 'rate hike'],
|
|
384
|
+
'interest rate': ['interest rate', 'fed', 'fomc', 'rate cut', 'rate hike'],
|
|
385
|
+
btc: ['bitcoin', 'btc'],
|
|
386
|
+
bitcoin: ['bitcoin', 'btc'],
|
|
387
|
+
eth: ['ethereum', 'eth'],
|
|
388
|
+
ethereum: ['ethereum', 'eth'],
|
|
389
|
+
sol: ['solana', 'sol'],
|
|
390
|
+
solana: ['solana', 'sol'],
|
|
391
|
+
trump: ['trump', 'donald trump', 'president trump'],
|
|
392
|
+
biden: ['biden', 'joe biden', 'president biden'],
|
|
393
|
+
ai: ['artificial intelligence', 'ai', 'openai', 'chatgpt', 'gpt'],
|
|
394
|
+
crypto: ['crypto', 'cryptocurrency', 'bitcoin', 'ethereum'],
|
|
395
|
+
recession: ['recession', 'economy', 'gdp'],
|
|
396
|
+
inflation: ['inflation', 'cpi', 'prices'],
|
|
397
|
+
};
|
|
398
|
+
// Keywords that indicate relevance for each topic
|
|
399
|
+
const TOPIC_KEYWORDS = {
|
|
400
|
+
fed: ['fed', 'interest', 'rate', 'fomc', 'powell', 'monetary', 'bps', 'basis point'],
|
|
401
|
+
rates: ['rate', 'interest', 'fed', 'fomc', 'bps', 'basis point'],
|
|
402
|
+
'interest rate': ['rate', 'interest', 'fed', 'fomc', 'bps', 'basis point'],
|
|
403
|
+
btc: ['bitcoin', 'btc', 'satoshi'],
|
|
404
|
+
bitcoin: ['bitcoin', 'btc', 'satoshi'],
|
|
405
|
+
eth: ['ethereum', 'eth', 'vitalik'],
|
|
406
|
+
ethereum: ['ethereum', 'eth', 'vitalik'],
|
|
407
|
+
sol: ['solana', 'sol'],
|
|
408
|
+
solana: ['solana', 'sol'],
|
|
409
|
+
trump: ['trump'],
|
|
410
|
+
biden: ['biden'],
|
|
411
|
+
ai: ['ai', 'artificial intelligence', 'openai', 'gpt', 'llm', 'chatgpt', 'claude', 'gemini'],
|
|
412
|
+
crypto: ['crypto', 'bitcoin', 'ethereum', 'token', 'coin'],
|
|
413
|
+
recession: ['recession', 'economy', 'gdp', 'contraction'],
|
|
414
|
+
inflation: ['inflation', 'cpi', 'prices', 'deflation'],
|
|
415
|
+
};
|
|
416
|
+
function expandTopicToSearchTerms(topic) {
|
|
417
|
+
const expanded = TOPIC_EXPANSIONS[topic];
|
|
418
|
+
if (expanded) {
|
|
419
|
+
return expanded;
|
|
420
|
+
}
|
|
421
|
+
return [topic];
|
|
422
|
+
}
|
|
423
|
+
function isMarketRelevantToTopic(market, topic, searchTerms) {
|
|
424
|
+
const questionLower = market.question.toLowerCase();
|
|
425
|
+
const descLower = market.description?.toLowerCase() ?? '';
|
|
426
|
+
const combined = `${questionLower} ${descLower}`;
|
|
427
|
+
// Check if any search term appears
|
|
428
|
+
for (const term of searchTerms) {
|
|
429
|
+
if (combined.includes(term.toLowerCase())) {
|
|
430
|
+
return true;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
// Check topic-specific keywords
|
|
434
|
+
const keywords = TOPIC_KEYWORDS[topic] ?? [topic];
|
|
435
|
+
for (const keyword of keywords) {
|
|
436
|
+
if (combined.includes(keyword.toLowerCase())) {
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
442
|
+
// Patterns for detecting bullish/bearish market questions
|
|
443
|
+
const BULLISH_PATTERNS = [
|
|
444
|
+
/above \$[\d,]+/i,
|
|
445
|
+
/over \$[\d,]+/i,
|
|
446
|
+
/reach \$[\d,]+/i,
|
|
447
|
+
/hit \$[\d,]+/i,
|
|
448
|
+
/exceed/i,
|
|
449
|
+
/increase/i,
|
|
450
|
+
/rise/i,
|
|
451
|
+
/rally/i,
|
|
452
|
+
/bull/i,
|
|
453
|
+
/new all[- ]?time high/i,
|
|
454
|
+
/ath/i,
|
|
455
|
+
/rate cut/i,
|
|
456
|
+
/decrease.*rate/i,
|
|
457
|
+
/lower.*rate/i,
|
|
458
|
+
/win/i,
|
|
459
|
+
/approve/i,
|
|
460
|
+
/pass/i,
|
|
461
|
+
/launch/i,
|
|
462
|
+
/release/i,
|
|
463
|
+
/adopt/i,
|
|
464
|
+
/accept/i,
|
|
465
|
+
/buy/i,
|
|
466
|
+
/acquire/i,
|
|
467
|
+
/no change.*rate/i, // No change is neutral-bullish for markets
|
|
468
|
+
];
|
|
469
|
+
const BEARISH_PATTERNS = [
|
|
470
|
+
/below \$[\d,]+/i,
|
|
471
|
+
/under \$[\d,]+/i,
|
|
472
|
+
/fall/i,
|
|
473
|
+
/drop/i,
|
|
474
|
+
/crash/i,
|
|
475
|
+
/bear/i,
|
|
476
|
+
/recession/i,
|
|
477
|
+
/rate hike/i,
|
|
478
|
+
/increase.*rate/i,
|
|
479
|
+
/raise.*rate/i,
|
|
480
|
+
/lose/i,
|
|
481
|
+
/reject/i,
|
|
482
|
+
/fail/i,
|
|
483
|
+
/ban/i,
|
|
484
|
+
/sell/i,
|
|
485
|
+
/dump/i,
|
|
486
|
+
/liquidat/i,
|
|
487
|
+
];
|
|
488
|
+
// Patterns that indicate neutral sentiment (informational, not directional)
|
|
489
|
+
const NEUTRAL_OVERRIDE_PATTERNS = [/who will/i, /which.*will/i, /when will/i, /what will/i];
|
|
490
|
+
function analyzeMarketSentiment(market, topic, searchTerms) {
|
|
491
|
+
// Check relevance using search terms and keywords
|
|
492
|
+
if (!isMarketRelevantToTopic(market, topic, searchTerms)) {
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
// Skip questions that are purely informational
|
|
496
|
+
for (const pattern of NEUTRAL_OVERRIDE_PATTERNS) {
|
|
497
|
+
if (pattern.test(market.question)) {
|
|
498
|
+
return null;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
// Find the "Yes" outcome probability
|
|
502
|
+
const yesOutcome = market.outcomes.find((o) => o.name.toLowerCase() === 'yes' || o.name.toLowerCase() === 'true');
|
|
503
|
+
const yesProbability = yesOutcome?.price ?? 0.5;
|
|
504
|
+
// Determine if the question is bullish or bearish in nature
|
|
505
|
+
let questionSentiment = 'neutral';
|
|
506
|
+
for (const pattern of BULLISH_PATTERNS) {
|
|
507
|
+
if (pattern.test(market.question)) {
|
|
508
|
+
questionSentiment = 'bullish';
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
if (questionSentiment === 'neutral') {
|
|
513
|
+
for (const pattern of BEARISH_PATTERNS) {
|
|
514
|
+
if (pattern.test(market.question)) {
|
|
515
|
+
questionSentiment = 'bearish';
|
|
516
|
+
break;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
// Calculate signal sentiment based on question type and probability
|
|
521
|
+
let signalSentiment;
|
|
522
|
+
let signalProbability;
|
|
523
|
+
if (questionSentiment === 'bullish') {
|
|
524
|
+
// For bullish questions, high "Yes" probability = bullish signal
|
|
525
|
+
signalSentiment = yesProbability > 0.5 ? 'bullish' : yesProbability < 0.3 ? 'bearish' : 'neutral';
|
|
526
|
+
signalProbability = yesProbability;
|
|
527
|
+
}
|
|
528
|
+
else if (questionSentiment === 'bearish') {
|
|
529
|
+
// For bearish questions, high "Yes" probability = bearish signal
|
|
530
|
+
signalSentiment = yesProbability > 0.5 ? 'bearish' : yesProbability < 0.3 ? 'bullish' : 'neutral';
|
|
531
|
+
signalProbability = yesProbability;
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
// Neutral question - can't determine sentiment
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
// Confidence is based on how extreme the probability is (away from 50%)
|
|
538
|
+
const confidence = Math.abs(yesProbability - 0.5) * 200; // 0-100 scale
|
|
539
|
+
return {
|
|
540
|
+
question: market.question,
|
|
541
|
+
sentiment: signalSentiment,
|
|
542
|
+
confidence: Math.round(confidence),
|
|
543
|
+
probability: signalProbability,
|
|
544
|
+
volume: market.volume,
|
|
545
|
+
slug: market.slug,
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
function calculateOverallSentiment(topic, signals) {
|
|
549
|
+
// Weight signals by volume
|
|
550
|
+
let weightedBullish = 0;
|
|
551
|
+
let weightedBearish = 0;
|
|
552
|
+
let totalWeight = 0;
|
|
553
|
+
for (const signal of signals) {
|
|
554
|
+
const weight = Math.log10(signal.volume + 1); // Log scale for volume weighting
|
|
555
|
+
totalWeight += weight;
|
|
556
|
+
if (signal.sentiment === 'bullish') {
|
|
557
|
+
weightedBullish += weight * (signal.confidence / 100);
|
|
558
|
+
}
|
|
559
|
+
else if (signal.sentiment === 'bearish') {
|
|
560
|
+
weightedBearish += weight * (signal.confidence / 100);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
// Calculate sentiment score (-100 to +100)
|
|
564
|
+
let sentimentScore = 0;
|
|
565
|
+
if (totalWeight > 0) {
|
|
566
|
+
const normalizedBullish = weightedBullish / totalWeight;
|
|
567
|
+
const normalizedBearish = weightedBearish / totalWeight;
|
|
568
|
+
sentimentScore = Math.round((normalizedBullish - normalizedBearish) * 100);
|
|
569
|
+
}
|
|
570
|
+
// Determine overall sentiment
|
|
571
|
+
let overallSentiment;
|
|
572
|
+
if (sentimentScore > 20) {
|
|
573
|
+
overallSentiment = 'bullish';
|
|
574
|
+
}
|
|
575
|
+
else if (sentimentScore < -20) {
|
|
576
|
+
overallSentiment = 'bearish';
|
|
577
|
+
}
|
|
578
|
+
else if (weightedBullish > 0 && weightedBearish > 0) {
|
|
579
|
+
overallSentiment = 'mixed';
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
overallSentiment = 'neutral';
|
|
583
|
+
}
|
|
584
|
+
// Calculate confidence based on signal agreement and volume
|
|
585
|
+
const bullishCount = signals.filter((s) => s.sentiment === 'bullish').length;
|
|
586
|
+
const bearishCount = signals.filter((s) => s.sentiment === 'bearish').length;
|
|
587
|
+
const agreement = Math.abs(bullishCount - bearishCount) / signals.length;
|
|
588
|
+
const avgConfidence = signals.reduce((sum, s) => sum + s.confidence, 0) / signals.length;
|
|
589
|
+
const confidence = Math.round(agreement * 50 + avgConfidence * 0.5);
|
|
590
|
+
// Generate summary
|
|
591
|
+
const topSignal = signals[0];
|
|
592
|
+
let summary;
|
|
593
|
+
if (overallSentiment === 'bullish') {
|
|
594
|
+
summary = `Polymarket shows bullish expectations for ${topic}. Top signal: "${topSignal.question}" at ${Math.round(topSignal.probability * 100)}% probability.`;
|
|
595
|
+
}
|
|
596
|
+
else if (overallSentiment === 'bearish') {
|
|
597
|
+
summary = `Polymarket shows bearish expectations for ${topic}. Top signal: "${topSignal.question}" at ${Math.round(topSignal.probability * 100)}% probability.`;
|
|
598
|
+
}
|
|
599
|
+
else if (overallSentiment === 'mixed') {
|
|
600
|
+
summary = `Polymarket shows mixed sentiment for ${topic} with ${bullishCount} bullish and ${bearishCount} bearish signals.`;
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
summary = `Polymarket shows neutral expectations for ${topic} based on ${signals.length} markets analyzed.`;
|
|
604
|
+
}
|
|
605
|
+
return {
|
|
606
|
+
topic,
|
|
607
|
+
overallSentiment,
|
|
608
|
+
sentimentScore,
|
|
609
|
+
confidence,
|
|
610
|
+
signals,
|
|
611
|
+
summary,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
186
614
|
//# sourceMappingURL=polymarket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polymarket.js","sourceRoot":"","sources":["../../../src/lib/mixins/polymarket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"polymarket.js","sourceRoot":"","sources":["../../../src/lib/mixins/polymarket.ts"],"names":[],"mappings":"AAaA,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAC/D,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAyC1D,SAAS,aAAa,CAAC,QAAuC;IAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAa,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAqC;IAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAa,CAAC;QAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAcD,SAAS,gBAAgB,CACvB,KAAsB,EACtB,OAA4D;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,uBAAuB;IACvB,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAW;IAEX,MAAe,eAAgB,SAAQ,IAAI;QACzC,KAAK,CAAC,iBAAiB,CAAC,OAA+B;YACrD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,GAAG,mBAAmB,OAAO,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAChD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/E,CAAC;gBAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAE3D,8CAA8C;gBAC9C,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;oBACrB,MAAM,SAAS,GAAuD,IAAI,GAAG,EAAE,CAAC;oBAEhF,mCAAmC;oBACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;4BACtB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE;4BACpE,KAAK,EAAE,CAAC;yBACT,CAAC,CAAC;oBACL,CAAC;oBAED,+DAA+D;oBAC/D,MAAM,SAAS,GAAG,GAAG,mBAAmB,8DAA8D,CAAC;oBACvG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;wBAC5D,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;qBACxC,CAAC,CAAC;oBAEH,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;wBACtB,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAsB,CAAC;wBAClE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;4BAC3B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gCACf,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oCAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oCAC9C,IAAI,QAAQ,EAAE,CAAC;wCACb,QAAQ,CAAC,KAAK,EAAE,CAAC;wCACjB,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;oCAC3C,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,mDAAmD;oBACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;yBACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;yBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;yBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAErB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACjC,CAAC;gBAED,kCAAkC;gBAClC,MAAM,IAAI,GAAoB,IAAI;qBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;qBACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAElD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACzF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,OAAiC;YAC3D,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,UAAU,GACd,CAAC,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxD,CAAC,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE3D,qDAAqD;gBACrD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAChE,MAAM,GAAG,GAAG,GAAG,mBAAmB,0CAA0C,UAAU,iDAAiD,CAAC;gBAExI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAChD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/E,CAAC;gBAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;gBAE1D,MAAM,OAAO,GAAuB,EAAE,CAAC;gBAEvC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,uCAAuC;oBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;wBACtC,SAAS;oBACX,CAAC;oBAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;oBACzC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;wBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;wBACvE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;wBAEhF,iCAAiC;wBACjC,IAAI,OAAO,EAAE,SAAS,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;4BACrD,SAAS;wBACX,CAAC;wBACD,IAAI,OAAO,EAAE,YAAY,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;4BAC9D,SAAS;wBACX,CAAC;wBAED,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAE/D,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,MAAM,CAAC,EAAE;4BACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;4BACxC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;4BACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;4BACxC,MAAM;4BACN,SAAS;4BACT,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gCACtC,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG;6BAC/B,CAAC,CAAC;4BACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBACrC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBACrG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,mBAAmB,CAAC,cAAsB;YAC9C,IAAI,CAAC;gBACH,mCAAmC;gBACnC,IAAI,GAAG,GAAG,GAAG,mBAAmB,gBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;gBAErF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAC9C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;oBAE1D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAE/D,OAAO;4BACL,OAAO,EAAE,IAAI;4BACb,MAAM,EAAE;gCACN,EAAE,EAAE,MAAM,CAAC,EAAE;gCACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;gCACxC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;gCACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;gCACxC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;gCAC/D,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC;gCACxE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oCACtC,IAAI,EAAE,OAAO;oCACb,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG;iCAC/B,CAAC,CAAC;gCACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;gCACxB,IAAI,EAAE,KAAK,CAAC,IAAI;6BACjB;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,6CAA6C;gBAC7C,GAAG,GAAG,GAAG,mBAAmB,YAAY,cAAc,EAAE,CAAC;gBACzD,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAC1C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,cAAc,aAAa,EAAE,CAAC;gBAC3E,CAAC;gBAED,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;gBAE3D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACN,EAAE,EAAE,QAAQ,CAAC,YAAY;wBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,OAAO,EAAE,QAAQ,CAAC,YAAY;wBAC9B,MAAM,EAAE,CAAC;wBACT,SAAS,EAAE,CAAC;wBACZ,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BACxC,IAAI,EAAE,KAAK,CAAC,OAAO;4BACnB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB,CAAC,CAAC;qBACJ;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,OAAiC;YACtE,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,UAAU,GACd,CAAC,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxD,CAAC,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE3D,qDAAqD;gBACrD,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAChE,MAAM,GAAG,GAAG,GAAG,mBAAmB,0BAA0B,kBAAkB,CAAC,KAAK,CAAC,mCAAmC,UAAU,oBAAoB,CAAC;gBAEvJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;oBAChD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC/E,CAAC;gBAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAC;gBAE1D,MAAM,OAAO,GAAuB,EAAE,CAAC;gBAEvC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;oBACzB,uCAAuC;oBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;wBACtC,SAAS;oBACX,CAAC;oBAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;oBACzC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;wBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;wBACvE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;wBAEhF,iCAAiC;wBACjC,IAAI,OAAO,EAAE,SAAS,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;4BACrD,SAAS;wBACX,CAAC;wBACD,IAAI,OAAO,EAAE,YAAY,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;4BAC9D,SAAS;wBACX,CAAC;wBAED,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAE/D,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,MAAM,CAAC,EAAE;4BACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;4BACxC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW;4BACpD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;4BACxC,MAAM;4BACN,SAAS;4BACT,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gCACtC,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG;6BAC/B,CAAC,CAAC;4BACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBACrC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC7F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,sBAAsB,CAAC,KAAa,EAAE,OAA4B;YACtE,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAEvC,yDAAyD;gBACzD,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAEzD,uCAAuC;gBACvC,MAAM,UAAU,GAAuB,EAAE,CAAC;gBAE1C,gCAAgC;gBAChC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;oBACvE,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;wBACzB,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;4BAC1C,mBAAmB;4BACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gCAChD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC1B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,4CAA4C;gBAC5C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;wBAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;4BAChD,uCAAuC;4BACvC,IAAI,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;gCAC7D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC1B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,oCAAoC,KAAK,GAAG;qBACpD,CAAC;gBACJ,CAAC;gBAED,MAAM,OAAO,GAAgC,EAAE,CAAC;gBAEhD,mDAAmD;gBACnD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;oBACvE,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,sBAAsB,KAAK,0CAA0C;qBAC7E,CAAC;gBACJ,CAAC;gBAED,6CAA6C;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;gBAE5C,mBAAmB;gBACnB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE3C,8BAA8B;gBAC9B,MAAM,SAAS,GAAG,yBAAyB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAE/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAChG,CAAC;YACJ,CAAC;QACH,CAAC;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,4CAA4C;AAC5C,MAAM,gBAAgB,GAA6B;IACjD,GAAG,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC;IACjF,KAAK,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;IAChE,eAAe,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;IAC1E,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IACvB,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IAC3B,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;IACxB,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;IAC7B,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,iBAAiB,CAAC;IACnD,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC;IAChD,EAAE,EAAE,CAAC,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC;IACjE,MAAM,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC;IAC3D,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;IAC1C,SAAS,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;CAC1C,CAAC;AAEF,kDAAkD;AAClD,MAAM,cAAc,GAA6B;IAC/C,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC;IACpF,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;IAChE,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC;IAC1E,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IAClC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACtC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;IACnC,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,EAAE,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC5F,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC;IAC1D,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;IACzD,SAAS,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;CACvD,CAAC;AAEF,SAAS,wBAAwB,CAAC,KAAa;IAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAwB,EAAE,KAAa,EAAE,WAAqB;IAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,GAAG,aAAa,IAAI,SAAS,EAAE,CAAC;IAEjD,mCAAmC;IACnC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0DAA0D;AAC1D,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,WAAW;IACX,OAAO;IACP,QAAQ;IACR,OAAO;IACP,wBAAwB;IACxB,MAAM;IACN,WAAW;IACX,iBAAiB;IACjB,cAAc;IACd,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,kBAAkB,EAAE,2CAA2C;CAChE,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,OAAO;IACP,SAAS;IACT,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,WAAW;CACZ,CAAC;AAEF,4EAA4E;AAC5E,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAE5F,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,KAAa,EACb,WAAqB;IAErB,kDAAkD;IAClD,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IAClH,MAAM,cAAc,GAAG,UAAU,EAAE,KAAK,IAAI,GAAG,CAAC;IAEhD,4DAA4D;IAC5D,IAAI,iBAAiB,GAAsC,SAAS,CAAC;IAErE,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,iBAAiB,GAAG,SAAS,CAAC;YAC9B,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,iBAAiB,GAAG,SAAS,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,eAAkD,CAAC;IACvD,IAAI,iBAAyB,CAAC;IAE9B,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,iEAAiE;QACjE,eAAe,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,iBAAiB,GAAG,cAAc,CAAC;IACrC,CAAC;SAAM,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC3C,iEAAiE;QACjE,eAAe,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,iBAAiB,GAAG,cAAc,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,+CAA+C;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc;IAEvE,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,eAAe;QAC1B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAClC,WAAW,EAAE,iBAAiB;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa,EAAE,OAAoC;IACpF,2BAA2B;IAC3B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iCAAiC;QAC/E,WAAW,IAAI,MAAM,CAAC;QAEtB,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,eAAe,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1C,eAAe,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,iBAAiB,GAAG,eAAe,GAAG,WAAW,CAAC;QACxD,MAAM,iBAAiB,GAAG,eAAe,GAAG,WAAW,CAAC;QACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,8BAA8B;IAC9B,IAAI,gBAA6D,CAAC;IAClE,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;QACxB,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;SAAM,IAAI,cAAc,GAAG,CAAC,EAAE,EAAE,CAAC;QAChC,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;SAAM,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACtD,gBAAgB,GAAG,OAAO,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,4DAA4D;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;IAEpE,mBAAmB;IACnB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAe,CAAC;IAEpB,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,GAAG,6CAA6C,KAAK,kBAAkB,SAAS,CAAC,QAAQ,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAClK,CAAC;SAAM,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,GAAG,6CAA6C,KAAK,kBAAkB,SAAS,CAAC,QAAQ,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAClK,CAAC;SAAM,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,GAAG,wCAAwC,KAAK,SAAS,YAAY,gBAAgB,YAAY,mBAAmB,CAAC;IAC9H,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,6CAA6C,KAAK,aAAa,OAAO,CAAC,MAAM,oBAAoB,CAAC;IAC9G,CAAC;IAED,OAAO;QACL,KAAK;QACL,gBAAgB;QAChB,cAAc;QACd,UAAU;QACV,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solscan.d.ts","sourceRoot":"","sources":["../../../src/lib/mixins/solscan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,KAAK,EAAoC,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAM5G,MAAM,WAAW,cAAc;IAC7B,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC3E;AAsCD,wBAAgB,WAAW,CAAC,KAAK,SAAS,mBAAmB,CAAC,iBAAiB,CAAC,EAC9E,IAAI,EAAE,KAAK,GACV,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"solscan.d.ts","sourceRoot":"","sources":["../../../src/lib/mixins/solscan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,KAAK,EAAoC,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAM5G,MAAM,WAAW,cAAc;IAC7B,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC3E;AAsCD,wBAAgB,WAAW,CAAC,KAAK,SAAS,mBAAmB,CAAC,iBAAiB,CAAC,EAC9E,IAAI,EAAE,KAAK,GACV,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAuH9B"}
|
|
@@ -20,6 +20,19 @@ export function withSolscan(Base) {
|
|
|
20
20
|
});
|
|
21
21
|
if (!response.ok) {
|
|
22
22
|
if (response.status === 401) {
|
|
23
|
+
// Try to get detailed error message from response
|
|
24
|
+
try {
|
|
25
|
+
const errorData = (await response.json());
|
|
26
|
+
if (errorData.error_message?.includes('upgrade')) {
|
|
27
|
+
return {
|
|
28
|
+
success: false,
|
|
29
|
+
error: 'Solscan Pro API plan required for transaction lookup. Visit https://solscan.io/apis to upgrade.',
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Ignore JSON parse errors
|
|
35
|
+
}
|
|
23
36
|
return { success: false, error: 'Invalid Solscan API key' };
|
|
24
37
|
}
|
|
25
38
|
return { success: false, error: `Solscan API error: ${response.status}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solscan.js","sourceRoot":"","sources":["../../../src/lib/mixins/solscan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solscan.js","sourceRoot":"","sources":["../../../src/lib/mixins/solscan.ts"],"names":[],"mappings":"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"}
|