n8n-nodes-tnl-intelligence 0.1.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.
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TNL_WEBHOOK_EVENT_TYPES = void 0;
4
+ exports.executeTnlOperation = executeTnlOperation;
5
+ exports.createTnlSubscription = createTnlSubscription;
6
+ exports.deleteTnlSubscription = deleteTnlSubscription;
7
+ exports.processTnlWebhook = processTnlWebhook;
8
+ exports.TNL_WEBHOOK_EVENT_TYPES = [
9
+ 'intelligence.published',
10
+ 'intelligence.updated',
11
+ 'intelligence.retracted',
12
+ 'intelligence.impact_changed',
13
+ 'digest.weekly_published',
14
+ ];
15
+ async function executeTnlOperation(context, credentials, request) {
16
+ const input = request.input;
17
+ switch (request.operation) {
18
+ case 'search_intelligence': {
19
+ const query = required(input.query, 'query');
20
+ const page = await apiRequest(context, credentials, '/v1/search', {
21
+ qs: pageQuery(input, { q: query }),
22
+ });
23
+ return result(request.operation, normalizePage(page, Boolean(input.includeBody)));
24
+ }
25
+ case 'get_intelligence': {
26
+ const id = identifier(input.id);
27
+ const story = await apiRequest(context, credentials, `/v1/news/${encodeURIComponent(id)}`, { qs: { include: input.includeBody ? 'sources,claims' : 'sources' } });
28
+ return result(request.operation, normalizeStory(record(story), Boolean(input.includeBody)));
29
+ }
30
+ case 'list_recent_changes': {
31
+ const page = await apiRequest(context, credentials, '/v1/news', {
32
+ qs: pageQuery(input, {
33
+ updated_since: timestamp(input.since, 'since'),
34
+ sort: 'pipeline',
35
+ }),
36
+ });
37
+ return result(request.operation, normalizePage(page));
38
+ }
39
+ case 'get_exposure': {
40
+ const id = identifier(input.value);
41
+ const kind = required(input.kind, 'kind');
42
+ const resource = kind === 'entity'
43
+ ? 'entities'
44
+ : kind === 'asset'
45
+ ? 'assets'
46
+ : kind === 'impact_path'
47
+ ? 'impact-paths'
48
+ : undefined;
49
+ if (!resource)
50
+ throw new Error('Exposure kind is invalid');
51
+ const page = await apiRequest(context, credentials, `/v1/${resource}/${encodeURIComponent(id)}/stories`, { qs: pageQuery(input) });
52
+ return result(request.operation, normalizePage(page));
53
+ }
54
+ case 'run_research': {
55
+ const task = researchTask({
56
+ workflowId: required(input.workflowId, 'workflowId'),
57
+ question: required(input.question, 'question'),
58
+ ...(input.from ? { from: timestamp(input.from, 'from') } : {}),
59
+ ...(input.to ? { to: timestamp(input.to, 'to') } : {}),
60
+ });
61
+ return result(request.operation, await researchRequest(context, credentials, task));
62
+ }
63
+ case 'get_research_result': {
64
+ return result(request.operation, await researchResultRequest(context, credentials, identifier(input.resultId)));
65
+ }
66
+ case 'get_weekly_edition': {
67
+ const to = input.weekEnding ? timestamp(input.weekEnding, 'weekEnding') : new Date().toISOString();
68
+ const from = new Date(Date.parse(to) - 7 * 86_400_000).toISOString();
69
+ const task = researchTask({
70
+ workflowId: 'weekly-consequential',
71
+ question: 'What were the most consequential developments in this period?',
72
+ from,
73
+ to,
74
+ });
75
+ return result(request.operation, await researchRequest(context, credentials, task));
76
+ }
77
+ }
78
+ }
79
+ async function createTnlSubscription(context, credentials, input) {
80
+ const payload = record(await request(context, {
81
+ method: 'POST',
82
+ url: endpoint(credentials.webhookUrl, '/v1/webhooks/subscriptions'),
83
+ headers: authorization(credentials),
84
+ body: input,
85
+ json: true,
86
+ timeout: 15_000,
87
+ }));
88
+ const data = record(payload.data);
89
+ const subscription = record(data.subscription);
90
+ return {
91
+ id: required(subscription.id, 'subscription id'),
92
+ secret: required(data.secret, 'webhook secret'),
93
+ keyId: required(subscription.activeKeyId, 'webhook key id'),
94
+ state: string(subscription.state) ?? 'pending',
95
+ };
96
+ }
97
+ async function deleteTnlSubscription(context, credentials, subscriptionId) {
98
+ await request(context, {
99
+ method: 'DELETE',
100
+ url: endpoint(credentials.webhookUrl, `/v1/webhooks/subscriptions/${encodeURIComponent(identifier(subscriptionId))}`),
101
+ headers: authorization(credentials),
102
+ json: true,
103
+ timeout: 15_000,
104
+ });
105
+ }
106
+ async function processTnlWebhook(options) {
107
+ const deliveryId = header(options.headers, 'tnl-webhook-id');
108
+ const timestampText = header(options.headers, 'tnl-webhook-timestamp');
109
+ const keyId = header(options.headers, 'tnl-webhook-key-id');
110
+ const supplied = header(options.headers, 'tnl-webhook-signature');
111
+ if (!/^dlv_[A-Za-z0-9_-]{12,100}$/.test(deliveryId))
112
+ throw new Error('Invalid webhook ID');
113
+ if (keyId !== options.keyId)
114
+ throw new Error('Unknown webhook key');
115
+ const unixTime = Number(timestampText);
116
+ const now = options.now ?? Math.floor(Date.now() / 1_000);
117
+ if (!Number.isInteger(unixTime) || Math.abs(now - unixTime) > 300)
118
+ throw new Error('Webhook timestamp is invalid');
119
+ const signature = supplied.match(/^v1=([a-f0-9]{64})$/)?.[1];
120
+ if (!signature)
121
+ throw new Error('Webhook signature is invalid');
122
+ const expected = await hmacHex(decodeSecret(options.secret), Buffer.concat([
123
+ Buffer.from(`v1.${unixTime}.${deliveryId}.`, 'utf8'),
124
+ options.rawBody,
125
+ ]));
126
+ if (!constantTimeEqual(expected, signature))
127
+ throw new Error('Webhook signature is invalid');
128
+ if (!(await options.replayStore.claim(deliveryId, (unixTime + 300) * 1_000)))
129
+ throw new Error('Webhook delivery was already processed');
130
+ const envelope = record(JSON.parse(options.rawBody.toString('utf8')));
131
+ const resource = record(envelope.resource);
132
+ const data = record(envelope.data);
133
+ const eventId = required(envelope.id, 'event id');
134
+ const eventType = required(envelope.type, 'event type');
135
+ if (!exports.TNL_WEBHOOK_EVENT_TYPES.includes(eventType))
136
+ throw new Error('Webhook event type is invalid');
137
+ const revision = number(resource.revision);
138
+ if (!revision || revision < 1)
139
+ throw new Error('Webhook revision is invalid');
140
+ const eventClaim = `${eventId}:${revision}`;
141
+ if (!(await options.eventDedupeStore.claim(eventClaim, Date.now() + 7 * 86_400_000)))
142
+ throw new Error('Webhook event was already processed');
143
+ return {
144
+ id: eventClaim,
145
+ deliveryId,
146
+ type: eventType,
147
+ occurredAt: required(envelope.occurredAt, 'occurredAt'),
148
+ publishedAt: required(envelope.publishedAt, 'publishedAt'),
149
+ resourceId: required(resource.id, 'resource id'),
150
+ revision,
151
+ canonicalUrl: string(resource.url),
152
+ summary: string(data.summary),
153
+ categories: strings(data.categories),
154
+ geographies: strings(data.geographies),
155
+ entities: strings(data.entities),
156
+ assets: strings(data.assets),
157
+ impactPaths: strings(data.impactPaths),
158
+ confidence: number(data.confidence),
159
+ envelope,
160
+ };
161
+ }
162
+ async function apiRequest(context, credentials, path, options = {}) {
163
+ return request(context, {
164
+ method: 'GET',
165
+ url: endpoint(credentials.baseUrl, path),
166
+ headers: authorization(credentials),
167
+ json: true,
168
+ timeout: 30_000,
169
+ ...options,
170
+ });
171
+ }
172
+ async function researchRequest(context, credentials, task) {
173
+ const payload = record(await request(context, {
174
+ method: 'POST',
175
+ url: endpoint(credentials.researchUrl, '/api/research/runs'),
176
+ headers: authorization(credentials),
177
+ body: { task },
178
+ json: true,
179
+ timeout: 45_000,
180
+ }));
181
+ if (!payload.data)
182
+ throw new Error('The research response is invalid');
183
+ return payload.data;
184
+ }
185
+ async function researchResultRequest(context, credentials, resultId) {
186
+ const payload = record(await request(context, {
187
+ method: 'GET',
188
+ url: endpoint(credentials.researchUrl, `/api/research/runs/${encodeURIComponent(resultId)}`),
189
+ headers: authorization(credentials),
190
+ json: true,
191
+ timeout: 30_000,
192
+ }));
193
+ if (!payload.data)
194
+ throw new Error('The research response is invalid');
195
+ return payload.data;
196
+ }
197
+ async function request(context, options) {
198
+ return context.helpers.httpRequest(options);
199
+ }
200
+ function researchTask(input) {
201
+ const taskTypes = {
202
+ 'what-changed': 'what_changed',
203
+ 'compare-sources': 'source_comparison',
204
+ 'validate-event': 'event_validation',
205
+ 'asset-exposure': 'asset_entity_exposure',
206
+ 'operational-risk': 'geopolitical_operational_risk',
207
+ 'weekly-consequential': 'weekly_consequential',
208
+ };
209
+ const taskType = taskTypes[input.workflowId];
210
+ if (!taskType)
211
+ throw new Error('Research workflow is invalid');
212
+ const to = input.to ?? new Date().toISOString();
213
+ const from = input.from ?? new Date(Date.parse(to) - 7 * 86_400_000).toISOString();
214
+ return {
215
+ schemaVersion: '1.0',
216
+ taskId: `task_n8n_${Date.now().toString(36)}`,
217
+ taskType,
218
+ question: input.question.trim(),
219
+ asOf: to,
220
+ timeWindow: { from, to },
221
+ depth: 'standard',
222
+ sourcePolicy: {
223
+ version: 'research-sources-1',
224
+ requirePrimary: taskType === 'event_validation',
225
+ minimumIndependentSources: taskType === 'weekly_consequential' ? 3 : 2,
226
+ freshnessMs: 7 * 86_400_000,
227
+ },
228
+ budget: {
229
+ maxToolCalls: 12,
230
+ maxDurationMs: 45_000,
231
+ maxInputTokens: 24_000,
232
+ maxOutputTokens: 4_000,
233
+ maxSources: 20,
234
+ maxCostUsd: 0.25,
235
+ },
236
+ outputFormat: 'json',
237
+ locale: 'en',
238
+ };
239
+ }
240
+ function normalizePage(value, includeBody = false) {
241
+ const page = record(value);
242
+ const metadata = record(page.page);
243
+ const items = Array.isArray(page.data)
244
+ ? page.data.map((story) => normalizeStory(record(story), includeBody))
245
+ : [];
246
+ return {
247
+ items,
248
+ nextCursor: string(metadata.next_cursor),
249
+ asOf: iso(page.lastSyncAt) ?? new Date().toISOString(),
250
+ count: items.length,
251
+ };
252
+ }
253
+ function normalizeStory(story, includeBody = false) {
254
+ const id = required(story.id, 'story id');
255
+ const sources = Array.isArray(story.sources) ? story.sources.map(record) : [];
256
+ return {
257
+ id,
258
+ revision: number(story.revision) ?? number(story.version) ?? 1,
259
+ title: string(story.title),
260
+ summary: string(story.excerpt),
261
+ category: string(story.category),
262
+ canonicalUrl: string(story.canonicalUrl) ??
263
+ `https://theneuralledger.com/news/${encodeURIComponent(string(story.slug) ?? id)}`,
264
+ eventAt: iso(story.date),
265
+ publishedAt: iso(story.publishedAt),
266
+ updatedAt: iso(story.updatedAt),
267
+ retrievedAt: new Date().toISOString(),
268
+ status: string(story.storyStatus),
269
+ impact: string(story.impact),
270
+ confidence: number(story.truthPosterior),
271
+ entities: unique([...strings(story.passiveEntities), ...strings(story.entities)]),
272
+ assets: unique(strings(story.impactedAssets)),
273
+ impactPaths: unique(strings(story.impactPaths)),
274
+ citations: sources.flatMap((source) => {
275
+ const url = string(source.url);
276
+ return url ? [{ label: string(source.name) ?? string(source.label) ?? 'Source', url }] : [];
277
+ }),
278
+ ...(includeBody && typeof story.body === 'string' ? { body: story.body } : {}),
279
+ };
280
+ }
281
+ function pageQuery(input, extra = {}) {
282
+ const size = number(input.pageSize) ?? 50;
283
+ if (!Number.isInteger(size) || size < 1 || size > 100)
284
+ throw new Error('Page size is invalid');
285
+ return compact({
286
+ page_size: size,
287
+ cursor: string(input.cursor),
288
+ published_since: input.from ? timestamp(input.from, 'from') : undefined,
289
+ published_until: input.to ? timestamp(input.to, 'to') : undefined,
290
+ category: string(input.category),
291
+ country: string(input.geography),
292
+ entity: string(input.entity),
293
+ impact_path: string(input.impactPath),
294
+ ...extra,
295
+ });
296
+ }
297
+ function endpoint(base, path) {
298
+ const url = new URL(required(base, 'service URL'));
299
+ if (!['http:', 'https:'].includes(url.protocol))
300
+ throw new Error('Service URL is invalid');
301
+ return `${url.toString().replace(/\/$/, '')}${path}`;
302
+ }
303
+ function authorization(credentials) {
304
+ return {
305
+ authorization: `Bearer ${required(credentials.apiKey, 'API key')}`,
306
+ accept: 'application/json',
307
+ 'content-type': 'application/json',
308
+ 'user-agent': 'n8n-nodes-tnl-intelligence/0.1.0',
309
+ };
310
+ }
311
+ async function hmacHex(secret, message) {
312
+ const key = await crypto.subtle.importKey('raw', ownedBuffer(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
313
+ const digest = new Uint8Array(await crypto.subtle.sign('HMAC', key, ownedBuffer(message)));
314
+ return [...digest].map((byte) => byte.toString(16).padStart(2, '0')).join('');
315
+ }
316
+ function decodeSecret(value) {
317
+ if (!/^[A-Za-z0-9_-]{43,128}$/.test(value))
318
+ throw new Error('Webhook secret is invalid');
319
+ const decoded = Buffer.from(value, 'base64url');
320
+ if (decoded.byteLength < 32 || decoded.byteLength > 64)
321
+ throw new Error('Webhook secret is invalid');
322
+ return new Uint8Array(decoded);
323
+ }
324
+ function ownedBuffer(value) {
325
+ return Uint8Array.from(value).buffer;
326
+ }
327
+ function constantTimeEqual(left, right) {
328
+ if (left.length !== right.length)
329
+ return false;
330
+ let difference = 0;
331
+ for (let index = 0; index < left.length; index += 1)
332
+ difference |= left.charCodeAt(index) ^ right.charCodeAt(index);
333
+ return difference === 0;
334
+ }
335
+ function header(headers, name) {
336
+ for (const [key, value] of Object.entries(headers)) {
337
+ if (key.toLowerCase() === name && typeof value === 'string' && value.length <= 500)
338
+ return value;
339
+ }
340
+ throw new Error(`Missing ${name} header`);
341
+ }
342
+ function result(operation, data) {
343
+ return { operation, data };
344
+ }
345
+ function required(value, field) {
346
+ const output = string(value);
347
+ if (!output)
348
+ throw new Error(`${field} is required`);
349
+ return output;
350
+ }
351
+ function identifier(value) {
352
+ const output = required(value, 'identifier');
353
+ if (output.length > 256)
354
+ throw new Error('identifier is invalid');
355
+ return output;
356
+ }
357
+ function timestamp(value, field) {
358
+ const parsed = Date.parse(required(value, field));
359
+ if (!Number.isFinite(parsed))
360
+ throw new Error(`${field} must be an ISO timestamp`);
361
+ return new Date(parsed).toISOString();
362
+ }
363
+ function iso(value) {
364
+ return typeof value === 'string' && Number.isFinite(Date.parse(value))
365
+ ? new Date(Date.parse(value)).toISOString()
366
+ : null;
367
+ }
368
+ function string(value) {
369
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
370
+ }
371
+ function number(value) {
372
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
373
+ }
374
+ function record(value) {
375
+ return value && typeof value === 'object' && !Array.isArray(value)
376
+ ? value
377
+ : {};
378
+ }
379
+ function strings(value) {
380
+ return Array.isArray(value)
381
+ ? value.filter((item) => typeof item === 'string' && Boolean(item.trim()))
382
+ : [];
383
+ }
384
+ function unique(values) {
385
+ return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
386
+ }
387
+ function compact(values) {
388
+ return Object.fromEntries(Object.entries(values).filter((entry) => entry[1] != null));
389
+ }
390
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../nodes/shared/runtime.ts"],"names":[],"mappings":";;;AAgDA,kDAoFC;AAED,sDAuBC;AAED,sDAeC;AAED,8CA8DC;AAvOY,QAAA,uBAAuB,GAAG;IACrC,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,6BAA6B;IAC7B,yBAAyB;CACjB,CAAC;AAmCJ,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,WAA2C,EAC3C,OAA4B;IAE5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE;gBAChE,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;aACnC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B,OAAO,EACP,WAAW,EACX,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACpC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CACtE,CAAC;YACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;gBAC9D,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE;oBACnB,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;oBAC9C,IAAI,EAAE,UAAU;iBACjB,CAAC;aACH,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,QAAQ,GACZ,IAAI,KAAK,QAAQ;gBACf,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,IAAI,KAAK,OAAO;oBAChB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,IAAI,KAAK,aAAa;wBACtB,CAAC,CAAC,cAAc;wBAChB,CAAC,CAAC,SAAS,CAAC;YACpB,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,OAAO,EACP,WAAW,EACX,OAAO,QAAQ,IAAI,kBAAkB,CAAC,EAAE,CAAC,UAAU,EACnD,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CACzB,CAAC;YACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,YAAY,CAAC;gBACxB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;gBACpD,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC;gBAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,OAAO,MAAM,CACX,OAAO,CAAC,SAAS,EACjB,MAAM,qBAAqB,CACzB,OAAO,EACP,WAAW,EACX,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC3B,CACF,CAAC;QACJ,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACnG,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,YAAY,CAAC;gBACxB,UAAU,EAAE,sBAAsB;gBAClC,QAAQ,EAAE,+DAA+D;gBACzE,IAAI;gBACJ,EAAE;aACH,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,WAA2C,EAC3C,KAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,OAAO,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,4BAA4B,CAAC;QACnE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM;KAChB,CAAC,CACH,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,iBAAiB,CAAC;QAChD,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAC/C,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAC3D,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS;KAC/C,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,OAAuB,EACvB,WAA2C,EAC3C,cAAsB;IAEtB,MAAM,OAAO,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,QAAQ;QAChB,GAAG,EAAE,QAAQ,CACX,WAAW,CAAC,UAAU,EACtB,8BAA8B,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAC/E;QACD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAQvC;IACC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAClE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3F,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG;QAC/D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,MAAM,CAAC,MAAM,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,IAAI,UAAU,GAAG,EAAE,MAAM,CAAC;QACpD,OAAO,CAAC,OAAO;KAChB,CAAC,CACH,CAAC;IACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,+BAAuB,CAAC,QAAQ,CAAC,SAAgC,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC5C,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,OAAO;QACL,EAAE,EAAE,UAAU;QACd,UAAU;QACV,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;QACvD,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;QAC1D,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;QAChD,QAAQ;QACR,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAA0B,EAC1B,WAA2C,EAC3C,IAAY,EACZ,UAAwC,EAAE;IAE1C,OAAO,OAAO,CAAC,OAAO,EAAE;QACtB,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;QACxC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,OAA0B,EAC1B,WAA2C,EAC3C,IAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,OAAO,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,CAAC;QAC5D,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,EAAE,IAAI,EAAE;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM;KAChB,CAAC,CACH,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAA0B,EAC1B,WAA2C,EAC3C,QAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,CACpB,MAAM,OAAO,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,QAAQ,CACX,WAAW,CAAC,WAAW,EACvB,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CACrD;QACD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,MAAM;KAChB,CAAC,CACH,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAuB,EAAE,OAA4B;IAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,KAKrB;IACC,MAAM,SAAS,GAA2B;QACxC,cAAc,EAAE,cAAc;QAC9B,iBAAiB,EAAE,mBAAmB;QACtC,gBAAgB,EAAE,kBAAkB;QACpC,gBAAgB,EAAE,uBAAuB;QACzC,kBAAkB,EAAE,+BAA+B;QACnD,sBAAsB,EAAE,sBAAsB;KAC/C,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC/D,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAC7C,QAAQ;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACxB,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE;YACZ,OAAO,EAAE,oBAAoB;YAC7B,cAAc,EAAE,QAAQ,KAAK,kBAAkB;YAC/C,yBAAyB,EAAE,QAAQ,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,WAAW,EAAE,CAAC,GAAG,UAAU;SAC5B;QACD,MAAM,EAAE;YACN,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,MAAM;YACtB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,IAAI;SACjB;QACD,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,WAAW,GAAG,KAAK;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;QACtE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,KAAK;QACL,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtD,KAAK,EAAE,KAAK,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAA8B,EAAE,WAAW,GAAG,KAAK;IACzE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9D,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChC,YAAY,EACV,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YAC1B,oCAAoC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACpF,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;QACnC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/C,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,CAAC,CAAC;QACF,GAAG,CAAC,WAAW,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,KAA8B,EAC9B,QAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC/F,OAAO,OAAO,CAAC;QACb,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACjE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACrC,GAAG,KAAK;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC3F,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,WAA2C;IAChE,OAAO;QACL,aAAa,EAAE,UAAU,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;QAClE,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,kCAAkC;KACjD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAkB,EAAE,OAAmB;IAC5D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,WAAW,CAAC,MAAM,CAAC,EACnB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAC5D,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE,IAAI,OAAO,CAAC,UAAU,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrG,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;QACjD,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,UAAU,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,MAAM,CAAC,OAAsD,EAAE,IAAY;IAClF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;IACnG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,MAAM,CAAC,SAAuB,EAAE,IAAa;IACpD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,KAAa;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAC;IACnF,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,GAAG,CAAC,KAAc;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,OAAO,CACd,MAA0D;IAE1D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAsC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "n8n-nodes-tnl-intelligence",
3
+ "version": "0.1.0",
4
+ "description": "TNL Intelligence actions and signed instant triggers for n8n.",
5
+ "license": "MIT",
6
+ "homepage": "https://theneuralledger.com",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "news",
10
+ "intelligence",
11
+ "research"
12
+ ],
13
+ "author": {
14
+ "name": "The Neural Ledger",
15
+ "email": "bekirdag@users.noreply.github.com"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/bekirdag/tnl-intelligence.git",
20
+ "directory": "integrations/n8n"
21
+ },
22
+ "scripts": {
23
+ "build": "n8n-node build",
24
+ "lint": "n8n-node lint",
25
+ "test": "node --test test/*.test.cjs",
26
+ "prepublishOnly": "n8n-node prerelease"
27
+ },
28
+ "files": ["dist", "README.md"],
29
+ "n8n": {
30
+ "n8nNodesApiVersion": 1,
31
+ "strict": true,
32
+ "credentials": ["dist/credentials/TnlApi.credentials.js"],
33
+ "nodes": [
34
+ "dist/nodes/TnlIntelligence/TnlIntelligence.node.js",
35
+ "dist/nodes/TnlTrigger/TnlTrigger.node.js"
36
+ ]
37
+ },
38
+ "devDependencies": {
39
+ "@n8n/node-cli": "0.39.3",
40
+ "eslint": "9.39.4",
41
+ "n8n-workflow": "2.30.2",
42
+ "prettier": "3.8.3",
43
+ "typescript": "5.9.3"
44
+ },
45
+ "peerDependencies": { "n8n-workflow": "*" },
46
+ "engines": { "node": ">=22" }
47
+ }