n8n-nodes-seo-scanner 1.2.23 → 1.2.24

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.
@@ -59,7 +59,7 @@ function readBoolean(value) {
59
59
  return value;
60
60
  if (typeof value === 'string') {
61
61
  const normalized = value.trim().toLowerCase();
62
- if (['true', '1', 'yes', 'si', 'sí'].includes(normalized))
62
+ if (['true', '1', 'yes', 'si', ''].includes(normalized))
63
63
  return true;
64
64
  if (['false', '0', 'no'].includes(normalized))
65
65
  return false;
@@ -137,15 +137,18 @@ async function notifyCallbackError(params) {
137
137
  if (!params.callbackUrl || !params.reportId)
138
138
  return;
139
139
  const headers = { 'Content-Type': 'application/json' };
140
- if (params.apiKey)
141
- headers['X-API-Key'] = params.apiKey;
140
+ if (params.apiToken)
141
+ headers['X-API-Token'] = params.apiToken;
142
+ const body = {
143
+ reportId: params.reportId,
144
+ error: params.message,
145
+ };
146
+ if (params.apiToken)
147
+ body.apiToken = params.apiToken;
142
148
  await fetch(params.callbackUrl, {
143
149
  method: 'POST',
144
150
  headers,
145
- body: JSON.stringify({
146
- reportId: params.reportId,
147
- error: params.message,
148
- }),
151
+ body: JSON.stringify(body),
149
152
  });
150
153
  }
151
154
  function getIncomingWebhookPayload(input) {
@@ -162,6 +165,8 @@ function getIncomingWebhookPayload(input) {
162
165
  apiKey: readString(source.apiKey) ||
163
166
  readHeader(headers, 'x-api-key') ||
164
167
  readBearerToken(authorization),
168
+ apiToken: readString(source.apiToken) ||
169
+ readHeader(headers, 'x-api-token'),
165
170
  scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
166
171
  maxInternalUrls: readNumber(source.maxInternalUrls),
167
172
  };
@@ -174,10 +179,10 @@ class SeoScanner {
174
179
  icon: 'file:seoScanner.svg',
175
180
  group: ['transform'],
176
181
  version: 1,
177
- description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
182
+ description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
178
183
  usableAsTool: {
179
184
  replacements: {
180
- description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
185
+ description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
181
186
  },
182
187
  },
183
188
  defaults: { name: 'SEO UOPIX' },
@@ -191,59 +196,59 @@ class SeoScanner {
191
196
  ],
192
197
  properties: [
193
198
  {
194
- displayName: 'URL de la página',
199
+ displayName: 'URL de la página',
195
200
  name: 'url',
196
201
  type: 'string',
197
202
  default: '',
198
203
  placeholder: 'https://example.com/pagina',
199
- description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
204
+ description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
200
205
  },
201
206
  {
202
207
  displayName: 'Escanear todo el sitio',
203
208
  name: 'scanInternalLinks',
204
209
  type: 'boolean',
205
210
  default: false,
206
- description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
211
+ description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
207
212
  },
208
213
  {
209
- displayName: 'Límite de páginas a escanear',
214
+ displayName: 'Límite de páginas a escanear',
210
215
  name: 'maxInternalUrls',
211
216
  type: 'number',
212
217
  default: 20,
213
218
  typeOptions: { minValue: 1, maxValue: 100 },
214
- description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
219
+ description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
215
220
  displayOptions: { show: { scanInternalLinks: [true] } },
216
221
  },
217
222
  {
218
- displayName: 'Ignorar Fallos (Uno por línea)',
223
+ displayName: 'Ignorar Fallos (Uno por línea)',
219
224
  name: 'ignoredIssues',
220
225
  type: 'string',
221
226
  typeOptions: { alwaysOpenEditWindow: true },
222
227
  default: '',
223
- description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
228
+ description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
224
229
  },
225
230
  {
226
- displayName: 'Ignorar Páginas (Una por línea)',
231
+ displayName: 'Ignorar Páginas (Una por línea)',
227
232
  name: 'ignoredPages',
228
233
  type: 'string',
229
234
  typeOptions: { alwaysOpenEditWindow: true },
230
235
  default: '',
231
- description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
236
+ description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
232
237
  displayOptions: { show: { scanInternalLinks: [true] } },
233
238
  },
234
239
  {
235
- displayName: 'Timeout por página (segundos)',
240
+ displayName: 'Timeout por página (segundos)',
236
241
  name: 'timeoutSeconds',
237
242
  type: 'number',
238
243
  default: 15,
239
- description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
244
+ description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
240
245
  },
241
246
  {
242
247
  displayName: 'User-Agent personalizado',
243
248
  name: 'customUserAgent',
244
249
  type: 'boolean',
245
250
  default: false,
246
- description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
251
+ description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
247
252
  },
248
253
  {
249
254
  displayName: 'User-Agent',
@@ -251,7 +256,7 @@ class SeoScanner {
251
256
  type: 'string',
252
257
  default: '',
253
258
  placeholder: 'Mozilla/5.0 (compatible; MiBot/1.0)',
254
- description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
259
+ description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
255
260
  displayOptions: { show: { customUserAgent: [true] } },
256
261
  },
257
262
  {
@@ -259,7 +264,7 @@ class SeoScanner {
259
264
  name: 'simulateGooglebot',
260
265
  type: 'boolean',
261
266
  default: false,
262
- description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
267
+ description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
263
268
  },
264
269
  {
265
270
  displayName: 'Seguir redirecciones',
@@ -274,7 +279,7 @@ class SeoScanner {
274
279
  type: 'string',
275
280
  default: '',
276
281
  placeholder: 'es-ES,es;q=0.9,en;q=0.8',
277
- description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
282
+ description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
278
283
  },
279
284
  {
280
285
  displayName: 'Generar informe HTML',
@@ -288,14 +293,14 @@ class SeoScanner {
288
293
  name: 'useJsRendering',
289
294
  type: 'boolean',
290
295
  default: false,
291
- description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
296
+ description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
292
297
  },
293
298
  {
294
299
  displayName: 'Enviar resultados a API externa',
295
300
  name: 'sendToExternalApi',
296
301
  type: 'boolean',
297
302
  default: false,
298
- description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
303
+ description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
299
304
  },
300
305
  {
301
306
  displayName: 'Callback URL',
@@ -303,7 +308,7 @@ class SeoScanner {
303
308
  type: 'string',
304
309
  default: '',
305
310
  placeholder: 'http://localhost:3000/api/reports',
306
- description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
311
+ description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
307
312
  displayOptions: { show: { sendToExternalApi: [true] } },
308
313
  },
309
314
  {
@@ -312,7 +317,7 @@ class SeoScanner {
312
317
  type: 'string',
313
318
  default: '',
314
319
  placeholder: '',
315
- description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
320
+ description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
316
321
  displayOptions: { show: { sendToExternalApi: [true] } },
317
322
  },
318
323
  {
@@ -328,11 +333,11 @@ class SeoScanner {
328
333
  displayName: 'Opciones de detalle',
329
334
  name: 'detailOptions',
330
335
  type: 'collection',
331
- placeholder: 'Añadir opción',
336
+ placeholder: 'Añadir opción',
332
337
  default: {},
333
338
  options: [
334
339
  {
335
- displayName: 'Incluir detalle de imágenes',
340
+ displayName: 'Incluir detalle de imágenes',
336
341
  name: 'includeImageDetails',
337
342
  type: 'boolean',
338
343
  default: true,
@@ -367,11 +372,11 @@ class SeoScanner {
367
372
  description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
368
373
  },
369
374
  {
370
- displayName: 'Máximo enlaces a comprobar',
375
+ displayName: 'Máximo enlaces a comprobar',
371
376
  name: 'maxBrokenLinksToCheck',
372
377
  type: 'number',
373
378
  default: 15,
374
- description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
379
+ description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
375
380
  },
376
381
  {
377
382
  displayName: 'Comprobar contraste de colores',
@@ -388,7 +393,7 @@ class SeoScanner {
388
393
  description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
389
394
  },
390
395
  ],
391
- description: 'Qué detalles incluir en la salida',
396
+ description: 'Qué detalles incluir en la salida',
392
397
  },
393
398
  ],
394
399
  };
@@ -404,15 +409,18 @@ class SeoScanner {
404
409
  credentials = {};
405
410
  }
406
411
  const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
412
+ const apiToken = incoming.apiToken || '';
407
413
  const appBaseUrl = readString(credentials?.appBaseUrl) ||
408
414
  getOriginFromUrl(incoming.callbackUrl || '') ||
409
415
  DEFAULT_APP_BASE_URL;
410
416
  let licenseWarning = '';
411
417
  try {
412
- await validateApiKeyWithApp({
413
- appBaseUrl,
414
- apiKey,
415
- });
418
+ if (!apiToken) {
419
+ await validateApiKeyWithApp({
420
+ appBaseUrl,
421
+ apiKey,
422
+ });
423
+ }
416
424
  }
417
425
  catch (e) {
418
426
  const msg = e instanceof Error ? e.message : String(e);
@@ -420,7 +428,7 @@ class SeoScanner {
420
428
  await notifyCallbackError({
421
429
  callbackUrl: incoming.callbackUrl || '',
422
430
  reportId: incoming.reportId || '',
423
- apiKey,
431
+ apiToken,
424
432
  message: errorMessage,
425
433
  }).catch(() => undefined);
426
434
  return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
@@ -433,12 +441,12 @@ class SeoScanner {
433
441
  headers: { 'Accept': 'application/json' }
434
442
  });
435
443
  if (!res.ok) {
436
- throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
444
+ throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
437
445
  }
438
446
  const jsonText = await res.text();
439
447
  const data = JSON.parse(jsonText);
440
448
  if (!data.hasOwnProperty(apiKey)) {
441
- throw new Error('La licencia introducida no es válida.');
449
+ throw new Error('La licencia introducida no es válida.');
442
450
  }
443
451
  }
444
452
  catch (e) {
@@ -519,14 +527,14 @@ class SeoScanner {
519
527
  baseUrl = new URL(url).href;
520
528
  }
521
529
  catch {
522
- return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
530
+ return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
523
531
  }
524
532
  try {
525
533
  const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
526
534
  if (statusCode >= 400) {
527
535
  return [[{
528
536
  json: {
529
- error: `La página devolvió código ${statusCode}`,
537
+ error: `La página devolvió código ${statusCode}`,
530
538
  statusCode,
531
539
  url: baseUrl,
532
540
  },
@@ -618,7 +626,7 @@ class SeoScanner {
618
626
  if (mainResult.brokenLinks.length > 0) {
619
627
  const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
620
628
  if (!isIgnored(msg)) {
621
- const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
629
+ const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
622
630
  mainResult.problemsBySeverity.important.push({
623
631
  message: msg,
624
632
  recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
@@ -663,7 +671,7 @@ class SeoScanner {
663
671
  mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
664
672
  mainResult.sitemapError = robotsSitemap.sitemapError;
665
673
  if (robotsSitemap.robotsTxtBlocked) {
666
- const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
674
+ const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
667
675
  if (!isIgnored(msg)) {
668
676
  mainResult.problemsBySeverity.critical.push({
669
677
  message: msg,
@@ -681,7 +689,7 @@ class SeoScanner {
681
689
  if (!isIgnored(msg)) {
682
690
  mainResult.problemsBySeverity.info.push({
683
691
  message: msg,
684
- recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
692
+ recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
685
693
  });
686
694
  }
687
695
  }
@@ -732,7 +740,7 @@ class SeoScanner {
732
740
  sitemapInSitemap: mainResult.sitemapInSitemap,
733
741
  },
734
742
  scannedUrls: 1,
735
- message: `Escaneada 1 página: ${finalUrl}`,
743
+ message: `Escaneada 1 página: ${finalUrl}`,
736
744
  pageTextContent: mainResult.pageTextContent ?? '',
737
745
  };
738
746
  let internalResults = [];
@@ -755,12 +763,12 @@ class SeoScanner {
755
763
  internalResults.push(result);
756
764
  }
757
765
  catch {
758
- internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
766
+ internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
759
767
  }
760
768
  }
761
769
  output.internalPages = internalResults;
762
770
  output.scannedUrls = 1 + internalResults.length;
763
- output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
771
+ output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
764
772
  if (analyzeOpts.checkBrokenLinks) {
765
773
  const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
766
774
  const seenInternal = new Set();
@@ -832,24 +840,24 @@ class SeoScanner {
832
840
  dupDesc.push(p.url);
833
841
  }
834
842
  if (dupTitle.length > 0 || dupDesc.length > 0) {
835
- const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
843
+ const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
836
844
  if (!isIgnored(msg)) {
837
845
  mainResult.duplicateContent = [];
838
846
  let elementText = '';
839
847
  if (dupTitle.length > 0) {
840
848
  mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
841
- elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
849
+ elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
842
850
  }
843
851
  if (dupDesc.length > 0) {
844
852
  mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
845
- elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
853
+ elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
846
854
  }
847
855
  mainResult.problemsBySeverity.important.push({
848
856
  message: msg,
849
- recommendation: 'Usar títulos y meta descriptions únicos por página.',
857
+ recommendation: 'Usar títulos y meta descriptions únicos por página.',
850
858
  element: elementText.trim()
851
859
  });
852
- mainResult.issues.push('Contenido duplicado detectado (título o description)');
860
+ mainResult.issues.push('Contenido duplicado detectado (título o description)');
853
861
  mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
854
862
  }
855
863
  }
@@ -874,12 +882,12 @@ class SeoScanner {
874
882
  }
875
883
  if (orphanPages.length > 0) {
876
884
  mainResult.isOrphan = false;
877
- const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
885
+ const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
878
886
  if (!isIgnored(msg)) {
879
- const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
887
+ const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
880
888
  mainResult.problemsBySeverity.warning.push({
881
889
  message: msg,
882
- recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
890
+ recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
883
891
  element: orphansList
884
892
  });
885
893
  mainResult.warnings.push(msg);
@@ -888,7 +896,7 @@ class SeoScanner {
888
896
  output.summary.orphanPagesCount = orphanPages.length;
889
897
  }
890
898
  else {
891
- mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
899
+ mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
892
900
  output.summary.orphanPagesCount = 0;
893
901
  }
894
902
  }
@@ -940,12 +948,12 @@ class SeoScanner {
940
948
  }
941
949
  const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
942
950
  if (invalidCross.length > 0) {
943
- const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
951
+ const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
944
952
  if (!isIgnored(msg)) {
945
953
  const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
946
954
  resultObj.problemsBySeverity.important.push({
947
955
  message: msg,
948
- recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
956
+ recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
949
957
  element: crossList
950
958
  });
951
959
  resultObj.issues.push(msg);
@@ -953,7 +961,7 @@ class SeoScanner {
953
961
  }
954
962
  }
955
963
  else if (resultObj.crossHreflang.length > 0) {
956
- resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
964
+ resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
957
965
  }
958
966
  };
959
967
  await verifyCrossHreflang(mainResult);
@@ -988,7 +996,7 @@ class SeoScanner {
988
996
  if (sendToExternalApi) {
989
997
  let callbackUrl = '';
990
998
  let reportId = '';
991
- let apiKeyExt = '';
999
+ let apiTokenExt = '';
992
1000
  try {
993
1001
  callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
994
1002
  }
@@ -998,15 +1006,15 @@ class SeoScanner {
998
1006
  }
999
1007
  catch { }
1000
1008
  try {
1001
- apiKeyExt = (this.getNodeParameter('apiToken', 0) || '').trim();
1009
+ apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
1002
1010
  }
1003
1011
  catch { }
1004
1012
  if (!callbackUrl && incoming.callbackUrl)
1005
1013
  callbackUrl = incoming.callbackUrl;
1006
1014
  if (!reportId && incoming.reportId)
1007
1015
  reportId = incoming.reportId;
1008
- if (!apiKeyExt && incoming.apiKey)
1009
- apiKeyExt = incoming.apiKey;
1016
+ if (!apiTokenExt && incoming.apiToken)
1017
+ apiTokenExt = incoming.apiToken;
1010
1018
  if (callbackUrl && reportId) {
1011
1019
  try {
1012
1020
  const callbackBody = {
@@ -1017,8 +1025,10 @@ class SeoScanner {
1017
1025
  const headers = {
1018
1026
  'Content-Type': 'application/json',
1019
1027
  };
1020
- if (apiKeyExt)
1021
- headers['X-API-Key'] = apiKeyExt;
1028
+ if (apiTokenExt) {
1029
+ headers['X-API-Token'] = apiTokenExt;
1030
+ callbackBody.apiToken = apiTokenExt;
1031
+ }
1022
1032
  const callbackResponse = await fetch(callbackUrl, {
1023
1033
  method: 'POST',
1024
1034
  headers,
@@ -1026,11 +1036,11 @@ class SeoScanner {
1026
1036
  });
1027
1037
  if (!callbackResponse.ok) {
1028
1038
  const responseText = await callbackResponse.text().catch(() => '');
1029
- throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
1039
+ throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
1030
1040
  }
1031
1041
  output.externalApiSent = true;
1032
1042
  output.externalApiUrl = callbackUrl;
1033
- output.externalApiKeyUsed = Boolean(apiKeyExt);
1043
+ output.externalApiKeyUsed = Boolean(apiTokenExt);
1034
1044
  }
1035
1045
  catch (callbackErr) {
1036
1046
  output.externalApiSent = false;
@@ -1044,7 +1054,7 @@ class SeoScanner {
1044
1054
  const msg = e instanceof Error ? e.message : String(e);
1045
1055
  return [[{
1046
1056
  json: {
1047
- error: 'No se pudo escanear la página',
1057
+ error: 'No se pudo escanear la página',
1048
1058
  detail: msg,
1049
1059
  url: baseUrl,
1050
1060
  },
@@ -1 +1 @@
1
- {"version":3,"file":"SeoScanner.node.js","sourceRoot":"","sources":["../nodes/SeoScanner/SeoScanner.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SeoScanner.node.js","sourceRoot":"","sources":["../nodes/SeoScanner/SeoScanner.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,+CAAmD;AAEnD,iDAAuE;AACvE,qDAAuD;AACvD,+CAAsD;AACtD,yCAAmD;AACnD,iDAA0G;AAC1G,+CAAsD;AACtD,+CAAuD;AACvD,yCAA4C;AAC5C,iDAAmC;AAEnC,MAAM,UAAU,GAAG,iHAAiH,CAAC;AACrI,MAAM,YAAY,GAAG,0EAA0E,CAAC;AAChG,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACjD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAYpC,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACvE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,OAAoB,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACJ,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;QACrD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAGpC;IACA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,uBAAuB,EAAE;QAClE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,QAAQ,EAAE,kBAAkB;YAC5B,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM;SAC1B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,IAAyC,CAAC;IAC9C,IAAI,CAAC;QACJ,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACR,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,wBAAwB,QAAQ,CAAC,MAAM,yBAAyB,CAAC,CAAC;IACjG,CAAC;AACF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAKlC;IACA,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO;IAEpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE9D,MAAM,IAAI,GAA2B;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,OAAO;KACrB,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAErD,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC1B,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAChE,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE3D,OAAO;QACN,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,MAAM,EACL,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC;YAChC,eAAe,CAAC,aAAa,CAAC;QAC/B,QAAQ,EACP,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3B,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC;QACnC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACvF,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC;KACnD,CAAC;AACH,CAAC;AAED,MAAa,UAAU;IAAvB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,8FAA8F;YAC3G,YAAY,EAAE;gBACb,YAAY,EAAE;oBACb,WAAW,EACV,iuBAAiuB;iBACluB;aACD;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;YAC/B,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,KAAK;iBACf;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,kBAAkB;oBAC/B,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,4BAA4B;oBACzC,WAAW,EAAE,uEAAuE;iBACpF;gBACD;oBACC,WAAW,EAAE,wBAAwB;oBACrC,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,iJAAiJ;iBAC9J;gBACD;oBACC,WAAW,EAAE,8BAA8B;oBAC3C,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;oBAC3C,WAAW,EAAE,qHAAqH;oBAClI,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,gCAAgC;oBAC7C,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;oBAC3C,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,oHAAoH;iBACjI;gBACD;oBACC,WAAW,EAAE,iCAAiC;oBAC9C,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;oBAC3C,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,oFAAoF;oBACjG,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,kEAAkE;iBAC/E;gBACD;oBACC,WAAW,EAAE,0BAA0B;oBACvC,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,uGAAuG;iBACpH;gBACD;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,sBAAsB;oBAC5B,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,qCAAqC;oBAClD,WAAW,EAAE,6GAA6G;oBAC1H,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACrD;gBACD;oBACC,WAAW,EAAE,mBAAmB;oBAChC,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,sFAAsF;iBACnG;gBACD;oBACC,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,+DAA+D;iBAC5E;gBACD;oBACC,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,yBAAyB;oBACtC,WAAW,EAAE,6FAA6F;iBAC1G;gBACD;oBACC,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,uPAAuP;iBACpQ;gBACD;oBACC,WAAW,EAAE,2BAA2B;oBACxC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,6NAA6N;iBAC1O;gBACD;oBACC,WAAW,EAAE,iCAAiC;oBAC9C,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,mGAAmG;iBAChH;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,mCAAmC;oBAChD,WAAW,EAAE,mHAAmH;oBAChI,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,EAAE;oBACf,WAAW,EAAE,+HAA+H;oBAC5I,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC/B,WAAW,EAAE,gFAAgF;oBAC7F,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;iBACvD;gBACD;oBACC,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,eAAe;oBAC5B,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,6BAA6B;4BAC1C,IAAI,EAAE,qBAAqB;4BAC3B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,+CAA+C;yBAC5D;wBACD;4BACC,WAAW,EAAE,4BAA4B;4BACzC,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,6CAA6C;yBAC1D;wBACD;4BACC,WAAW,EAAE,6BAA6B;4BAC1C,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,gDAAgD;yBAC7D;wBACD;4BACC,WAAW,EAAE,yBAAyB;4BACtC,IAAI,EAAE,wBAAwB;4BAC9B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,+CAA+C;yBAC5D;wBACD;4BACC,WAAW,EAAE,yBAAyB;4BACtC,IAAI,EAAE,kBAAkB;4BACxB,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,mFAAmF;yBAChG;wBACD;4BACC,WAAW,EAAE,4BAA4B;4BACzC,IAAI,EAAE,uBAAuB;4BAC7B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;4BACX,WAAW,EAAE,4GAA4G;yBACzH;wBACD;4BACC,WAAW,EAAE,gCAAgC;4BAC7C,IAAI,EAAE,eAAe;4BACrB,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,4DAA4D;yBACzE;wBACD;4BACC,WAAW,EAAE,iCAAiC;4BAC9C,IAAI,EAAE,wBAAwB;4BAC9B,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,KAAK;4BACd,WAAW,EAAE,4FAA4F;yBACzG;qBACD;oBACD,WAAW,EAAE,mCAAmC;iBAChD;aACD;SACD,CAAC;IA2pBH,CAAC;IAzpBA,KAAK,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,WAAW,GAAgB,EAAE,CAAC;QAClC,IAAI,CAAC;YACJ,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACR,WAAW,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzC,MAAM,UAAU,GACf,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC;YACnC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;YAC5C,oBAAoB,CAAC;QACtB,IAAI,cAAc,GAAG,EAAE,CAAC;QAGxB,IAAI,CAAC;YACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,qBAAqB,CAAC;oBAC3B,UAAU;oBACV,MAAM;iBACN,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,sBAAsB,GAAG,EAAE,CAAC;YACjD,MAAM,mBAAmB,CAAC;gBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;gBACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;gBACjC,QAAQ;gBACR,OAAO,EAAE,YAAY;aACrB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAE1B,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAiB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,CAAC;gBAEL,MAAM,aAAa,GAAG,kCAAkC,CAAC;gBAEzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;oBACtC,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;iBACzC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBAGD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA2B,CAAC;gBAG5D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAC1D,CAAC;YACD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvD,cAAc,GAAG,mCAAmC,GAAG,EAAE,CAAC;YAC3D,CAAC;QACF,CAAC;QAED,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,GAAG,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAClF,IAAI,QAAQ,CAAC,GAAG;YAAE,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAErC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC;YAAC,iBAAiB,GAAI,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACzG,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS;YAAE,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAC7F,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBACxD,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACR,eAAe,GAAG,EAAE,CAAC;YACtB,CAAC;YACD,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC5C,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9E,CAAC;QACF,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/G,MAAM,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC;QACxC,MAAM,eAAe,GAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAa,KAAK,KAAK,CAAC;QAC3F,MAAM,cAAc,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QAC1G,MAAM,cAAc,GAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC;QACxF,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,MAAM,iBAAiB,GAAI,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC;QAC9F,MAAM,eAAe,GAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC;QAC1F,IAAI,iBAAiB,EAAE,CAAC;YACvB,SAAS,GAAG,YAAY,CAAC;QAC1B,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAY,EAAE,IAAI,EAAE,CAAC;gBACpF,IAAI,MAAM;oBAAE,SAAS,GAAG,MAAM,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACF,CAAC;QACD,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;QACjF,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/E,MAAM,oBAAoB,GAAI,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC;QAClG,MAAM,kBAAkB,GAAG,oBAAoB,IAAI,mBAAmB,CAAC;QACvE,MAAM,UAAU,GAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAiB,IAAI,EAAE,CAAC;QACpF,MAAM,aAAa,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvI,MAAM,YAAY,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,CAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErI,MAAM,WAAW,GAAmB;YACnC,mBAAmB,EAAG,UAAU,CAAC,mBAA+B,KAAK,KAAK;YAC1E,kBAAkB,EAAG,UAAU,CAAC,kBAA8B,KAAK,KAAK;YACxE,kBAAkB,EAAG,UAAU,CAAC,kBAA8B,KAAK,KAAK;YACxE,sBAAsB,EAAG,UAAU,CAAC,sBAAkC,KAAK,KAAK;YAChF,sBAAsB,EAAG,UAAU,CAAC,sBAAkC,KAAK,IAAI;YAC/E,gBAAgB,EAAG,UAAU,CAAC,gBAA4B,KAAK,IAAI;YACnE,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;YAChG,aAAa,EAAG,UAAU,CAAC,aAAyB,KAAK,KAAK;YAC9D,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAiB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAiB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,MAAM,IAAA,wBAAS,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC1I,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,CAAC;4BACR,IAAI,EAAE;gCACL,KAAK,EAAE,6BAA6B,UAAU,EAAE;gCAChD,UAAU;gCACV,GAAG,EAAE,OAAO;6BACG;4BAChB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;yBACvB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC5F,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC/B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;YAC3C,UAAU,CAAC,eAAe,GAAG,eAAe,CAAC;YAE7C,MAAM,SAAS,GAAG,IAAA,oCAAmB,EAAC,IAAI,CAAC,CAAC;YAC5C,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC;YACvC,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;YAC1C,UAAU,CAAC,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAE3F,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBACpC,UAAU,CAAC,MAAM,GAAG,MAAM,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACR,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACjC,UAAU,CAAC,WAAW,GAAG,MAAM,IAAA,iCAAkB,EAChD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,EACb,IAAI,EACJ,eAAe,EACf,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,OAAO,EAClB,SAAS,CAAC,SAAS,IAAI,UAAU,EACjC,SAAS,CACT,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACR,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC;YACpC,CAAC;YAED,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAGpH,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,EAAE;gBACpC,IAAI,CAAC;oBACJ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBACrE,OAAO,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACR,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC,CAAC;YACF,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAiE,EAAE,EAAE;gBACtG,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,IAAI,UAAU,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAChC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9B,MAAM,MAAM,GAAG;4BACd,GAAG,EAAE,IAAI,CAAC,GAAG;4BACb,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,IAAqB;4BAC5B,eAAe,EAAE,IAAqB;yBACtC,CAAC;wBACF,IAAI,IAAI,CAAC,QAAQ;4BAAE,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;4BAC1D,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjD,SAAS;oBACV,CAAC;oBACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,wBAAS,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7E,MAAM,MAAM,GAAG;wBACd,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,UAAU,EAAE,UAAU;wBACtB,KAAK,EAAE,IAAqB;wBAC5B,eAAe,EAAE,IAAqB;qBACtC,CAAC;oBACF,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvD,MAAM,MAAM,GAAG,IAAA,gCAAiB,EAAC,IAAI,CAAC,CAAC;wBACvC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC5B,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;oBACjD,CAAC;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACnB,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7C,CAAC;yBAAM,CAAC;wBACP,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7C,CAAC;oBACD,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;wBAC3C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;4BAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;4BACb,UAAU,EAAE,UAAU,IAAI,CAAC;4BAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;yBACvB,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBACD,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,iCAAiC,CAAC;oBAC9E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACrM,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,oEAAoE;4BACpF,OAAO,EAAE,MAAM;yBACf,CAAC,CAAC;wBACH,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,oBAAoB,CAAC,CAAC;wBAC7E,UAAU,CAAC,eAAe,CAAC,SAAS,GAAG,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;oBACvF,CAAC;gBACF,CAAC;YACF,CAAC,CAAC;YACF,IAAI,WAAW,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,IAAI,EAAE,CAAC;gBACzD,MAAM,OAAO,GAA6D,EAAE,CAAC;gBAC7E,IAAI,UAAU,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,uBAAuB,EAAE,CAAC;wBACpD,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;4BAAE,SAAS;wBAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9E,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;wBAC9C,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;4BAAE,SAAS;wBACvD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,CAAC;gBACF,CAAC;gBACD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;oBAChD,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/E,CAAC;gBACD,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAGD,IAAI,CAAC;gBACJ,MAAM,aAAa,GAAG,MAAM,IAAA,mCAAqB,EAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;gBACtI,UAAU,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;gBAC7D,UAAU,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;gBACrD,UAAU,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;gBAC7D,UAAU,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;gBACzD,UAAU,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;gBAC7D,UAAU,CAAC,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,CAAC;gBACjE,UAAU,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;gBACrD,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAG,sEAAsE,CAAC;oBACnF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAC3C,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,2EAA2E;yBAC3F,CAAC,CAAC;wBACH,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;wBACtD,UAAU,CAAC,eAAe,CAAC,QAAQ,GAAG,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACrF,CAAC;gBACF,CAAC;gBACD,IAAI,aAAa,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBACvE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBAC1D,CAAC;gBACD,IAAI,aAAa,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;oBACnH,MAAM,GAAG,GAAG,4CAA4C,CAAC;oBACzD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;4BACvC,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,+EAA+E;yBAC/F,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBACD,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBACpC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACrD,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,UAAU,CAAC,cAAc,GAAG,uCAAuC,CAAC;gBACpE,UAAU,CAAC,YAAY,GAAG,4BAA4B,CAAC;YACxD,CAAC;YAED,MAAM,MAAM,GAAgB;gBAC3B,QAAQ,EAAE,UAAoC;gBAC9C,cAAc;gBACd,OAAO,EAAE;oBACR,GAAG,EAAE,QAAQ;oBACb,UAAU;oBACV,cAAc;oBACd,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;oBAC/C,aAAa,EAAE,UAAU,CAAC,aAAa;oBACvC,cAAc,EAAE,UAAU,CAAC,cAAc;oBACzC,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;oBACjD,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM;oBAC/C,gBAAgB,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM;oBAC/C,mBAAmB,EAAE,UAAU,CAAC,cAAc,CAAC,MAAM;oBACrD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;oBACxD,UAAU,EAAE,UAAU,CAAC,UAAU;oBACjC,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;oBACrC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM;oBACzC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;oBACrC,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,YAAY,EAAE,UAAU,CAAC,WAAW;oBACpC,kBAAkB,EAAE,UAAU,CAAC,iBAAiB;oBAChD,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;oBAC7C,aAAa,EAAE,UAAU,CAAC,aAAa;oBACvC,aAAa,EAAE,UAAU,CAAC,aAAa;oBACvC,QAAQ,EAAE,UAAU,CAAC,eAAe;oBACpC,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ;oBAClD,cAAc,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS;oBACpD,YAAY,EAAE,UAAU,CAAC,eAAe,CAAC,OAAO;oBAChD,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,IAAI;oBAC1C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;oBAC7C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;oBAC7C,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;iBAC7C;gBACD,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,uBAAuB,QAAQ,EAAE;gBAC1C,eAAe,EAAG,UAAwB,CAAC,eAAe,IAAI,EAAE;aAChE,CAAC;YAEF,IAAI,eAAe,GAAgB,EAAE,CAAC;YACtC,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;YACzD,IAAI,iBAAiB,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClE,IAAI,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC;gBAC1C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvF,CAAC;gBACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;gBAE1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACJ,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,wBAAS,EAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;wBAChL,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAW,EAAC,SAAS,EAAE,UAAU,EAAE,EAAE,GAAG,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1G,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;wBAClB,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;wBAC7B,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;wBAChC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;wBAClC,sBAAsB,CAAC,GAAG,CAAC,IAAA,gCAAqB,EAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;wBACzE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACR,eAAe,CAAC,IAAI,CAAC,IAAA,mCAAoB,EAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC,CAAC;oBAC/F,CAAC;gBACF,CAAC;gBACD,MAAM,CAAC,aAAa,GAAG,eAA2C,CAAC;gBACnE,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;gBAChD,MAAM,CAAC,OAAO,GAAG,cAAc,MAAM,CAAC,WAAW,2BAA2B,eAAe,CAAC,MAAM,qBAAqB,CAAC;gBAExH,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;oBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,qBAAqB,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC1F,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;oBACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;oBACvC,MAAM,WAAW,GAA6D,EAAE,CAAC;oBACjF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;wBACnD,MAAM,IAAI,GAAG,IAAA,gCAAqB,EAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC5C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACvB,IAAI,WAAW,CAAC,MAAM,GAAG,YAAY;gCAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;wBACtG,CAAC;oBACF,CAAC,CAAC;oBACF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE;wBACnD,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;wBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC5C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACvB,IAAI,WAAW,CAAC,MAAM,GAAG,YAAY;gCAAE,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvG,CAAC;oBACF,CAAC,CAAC;oBACF,IAAI,UAAU,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,uBAAuB;4BAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;oBAC5F,CAAC;yBAAM,CAAC;wBACP,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,iBAAiB;4BAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClE,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,mBAAmB;wBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;oBACvF,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;wBACjC,IAAI,WAAW,CAAC,MAAM,IAAI,YAAY;4BAAE,MAAM;wBAC9C,IAAI,CAAC,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC;4BACvC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB;gCAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;wBACnF,CAAC;6BAAM,CAAC;4BACP,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,EAAE;gCAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC/D,CAAC;wBACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,IAAI,EAAE;4BAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;oBACrF,CAAC;oBACD,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnG,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;gBACxC,MAAM,CAAC,oBAAoB,GAAG,QAAQ,CAAC;gBACvC,MAAM,CAAC,mBAAmB,GAAG;oBAC5B,oBAAoB,EAAE,eAAe,CAAC,MAAM;oBAC5C,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;oBAC1E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,YAAY,EAAE,QAAQ;iBACtB,CAAC;gBAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChE,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACzE,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;oBACjC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBAC1D,IAAI,SAAS,IAAI,EAAE,IAAI,SAAS,KAAK,EAAE;wBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC9D,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,KAAK,EAAE;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5D,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,MAAM,GAAG,GAAG,qEAAqE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,YAAY,CAAC;oBAC9H,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,UAAU,CAAC,gBAAgB,GAAG,EAAE,CAAC;wBACjC,IAAI,WAAW,GAAG,EAAE,CAAC;wBACrB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;4BAC7E,WAAW,IAAI,uBAAuB,UAAU,CAAC,KAAK,+BAA+B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;wBACnI,CAAC;wBACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACxB,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;4BAClF,WAAW,IAAI,iCAAiC,UAAU,CAAC,eAAe,+BAA+B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;wBACpJ,CAAC;wBACD,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;4BAC5C,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,qDAAqD;4BACrE,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;yBAC3B,CAAC,CAAC;wBACH,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;wBAC/E,UAAU,CAAC,eAAe,CAAC,SAAS,GAAG,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;oBACvF,CAAC;gBACF,CAAC;gBACA,MAAM,CAAC,OAAuB,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3F,CAAC;YAGD,IAAI,UAAU,CAAC,kBAAkB,IAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC7C,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAA,gCAAqB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5F,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAC3B,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAA,gCAAqB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5F,CAAC,CAAC,CAAC;gBACJ,CAAC;gBACD,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAA,gCAAqB,EAAC,UAAU,CAAC,CAAC;oBAE/C,IAAI,IAAI,KAAK,IAAA,gCAAqB,EAAC,UAAU,CAAC,QAAQ,CAAC;wBACtD,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gCAAqB,EAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;wBACtE,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC9B,CAAC;gBACF,CAAC;gBACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;oBAC5B,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,MAAM,mDAAmD,CAAC;oBACrF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACnI,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC;4BAC1C,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,6GAA6G;4BAC7H,OAAO,EAAE,WAAW;yBACpB,CAAC,CAAC;wBACH,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9B,UAAU,CAAC,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;oBACnF,CAAC;oBACA,MAAM,CAAC,OAAuB,CAAC,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;oBAC1E,MAAM,CAAC,OAAuB,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC;YAGD,MAAM,mBAAmB,GAAG,KAAK,EAAE,SAAoB,EAAE,EAAE;gBAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBACnE,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;gBAC7B,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACrC,IAAI,IAAA,gCAAqB,EAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAA,gCAAqB,EAAC,SAAS,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAG3F,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,CAAC;oBAClD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gCAAqB,EAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAA,gCAAqB,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEhH,IAAI,aAAa,GAAG,KAAK,CAAC;oBAC1B,IAAI,QAAQ,GAAG,GAAG,CAAC;oBACnB,IAAI,UAAU,GAAG,EAAE,CAAC;oBAEpB,IAAI,cAAc,EAAE,CAAC;wBACpB,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,gCAAqB,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAA,gCAAqB,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAChI,CAAC;yBAAM,CAAC;wBACP,IAAI,CAAC;4BACJ,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,wBAAS,EAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;4BACpH,QAAQ,GAAG,UAAU,CAAC;4BACtB,IAAI,QAAQ,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;gCAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCACnC,OAAO,CAAC,iCAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAO,EAAE,EAAE;oCACnE,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oCAC5C,IAAI,UAAU,IAAI,IAAA,gCAAqB,EAAC,UAAU,CAAC,KAAK,IAAA,gCAAqB,EAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;wCACnG,aAAa,GAAG,IAAI,CAAC;oCACtB,CAAC;gCACF,CAAC,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACZ,UAAU,GAAG,cAAc,CAAC;wBAC7B,CAAC;oBACF,CAAC;oBAED,IAAI,aAAa,EAAE,CAAC;wBACnB,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnE,CAAC;yBAAM,IAAI,UAAU,EAAE,CAAC;wBACvB,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;oBACvF,CAAC;yBAAM,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;wBAC7B,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACrG,CAAC;yBAAM,CAAC;wBACP,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;oBAChH,CAAC;gBACF,CAAC;gBAED,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,2CAA2C,YAAY,CAAC,MAAM,2BAA2B,CAAC;oBACtG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACpF,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;4BAC3C,OAAO,EAAE,GAAG;4BACZ,cAAc,EAAE,kHAAkH;4BAClI,OAAO,EAAE,SAAS;yBAClB,CAAC,CAAC;wBACH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,SAAS,CAAC,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC;oBACrF,CAAC;gBACF,CAAC;qBAAM,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;gBAC1F,CAAC;YACF,CAAC,CAAC;YAEF,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,iBAAiB,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAErD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,MAAM,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;YAED,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC;iBAC5D,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC;iBAC1E,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;YACrC,KAAK,MAAM,UAAU,IAAI,qBAAqB,EAAE,CAAC;gBAChD,MAAM,UAAU,GAAG,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAA,gCAAqB,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7H,IAAI,UAAU,EAAE,CAAC;oBAChB,UAAU,CAAC,aAAa,GAAG,IAAA,oCAAsB,EAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAChG,CAAC;YACF,CAAC;YAED,MAAM,CAAC,GAAG,GAAG,MAAM,IAAA,yBAAc,EAAC;gBACjC,QAAQ,EAAE,UAAU;gBACpB,aAAa,EAAE,eAAe;gBAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;gBACrC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,UAAU;aAC5C,CAA2B,CAAC;YAE7B,IAAI,aAAiC,CAAC;YACtC,IAAI,kBAAkB,EAAE,CAAC;gBACxB,aAAa,GAAG,IAAA,mCAAqB,EAAC,UAAU,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC5G,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;gBAElC,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;YAC7B,CAAC;YAGD,MAAM,iBAAiB,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAa,IAAI,KAAK,CAAC,IAAI,mBAAmB,CAAC;YACvH,IAAI,iBAAiB,EAAE,CAAC;gBACvB,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC;oBAAC,WAAW,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAClG,IAAI,CAAC;oBAAC,QAAQ,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAC5F,IAAI,CAAC;oBAAC,WAAW,GAAG,CAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAG/F,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;oBAAE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;gBAC7E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;oBAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACjE,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ;oBAAE,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAEvE,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACJ,MAAM,YAAY,GAA4B;4BAC7C,QAAQ;4BACR,IAAI,EAAE,MAAM;4BACZ,UAAU,EAAE,aAAa,IAAI,IAAI;yBACjC,CAAC;wBACF,MAAM,OAAO,GAA2B;4BACvC,cAAc,EAAE,kBAAkB;yBAClC,CAAC;wBACF,IAAI,WAAW,EAAE,CAAC;4BACjB,OAAO,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;4BACrC,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;wBACrC,CAAC;wBAED,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;4BACjD,MAAM,EAAE,MAAM;4BACd,OAAO;4BACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;yBAClC,CAAC,CAAC;wBACH,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;4BAC1B,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;4BACnE,MAAM,IAAI,KAAK,CAAC,gCAAgC,gBAAgB,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACpI,CAAC;wBACD,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC9B,MAAM,CAAC,cAAc,GAAG,WAAW,CAAC;wBACpC,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;oBAClD,CAAC;oBAAC,OAAO,WAAW,EAAE,CAAC;wBACtB,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;wBAC/B,MAAM,CAAC,gBAAgB,GAAG,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACpG,CAAC;gBACF,CAAC;YACF,CAAC;YAED,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC;wBACR,IAAI,EAAE;4BACL,KAAK,EAAE,+BAA+B;4BACtC,MAAM,EAAE,GAAG;4BACX,GAAG,EAAE,OAAO;yBACG;wBAChB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACF,CAAC;CACD;AA53BD,gCA43BC"}
@@ -59,7 +59,7 @@ function readBoolean(value) {
59
59
  return value;
60
60
  if (typeof value === 'string') {
61
61
  const normalized = value.trim().toLowerCase();
62
- if (['true', '1', 'yes', 'si', 'sí'].includes(normalized))
62
+ if (['true', '1', 'yes', 'si', ''].includes(normalized))
63
63
  return true;
64
64
  if (['false', '0', 'no'].includes(normalized))
65
65
  return false;
@@ -137,15 +137,18 @@ async function notifyCallbackError(params) {
137
137
  if (!params.callbackUrl || !params.reportId)
138
138
  return;
139
139
  const headers = { 'Content-Type': 'application/json' };
140
- if (params.apiKey)
141
- headers['X-API-Key'] = params.apiKey;
140
+ if (params.apiToken)
141
+ headers['X-API-Token'] = params.apiToken;
142
+ const body = {
143
+ reportId: params.reportId,
144
+ error: params.message,
145
+ };
146
+ if (params.apiToken)
147
+ body.apiToken = params.apiToken;
142
148
  await fetch(params.callbackUrl, {
143
149
  method: 'POST',
144
150
  headers,
145
- body: JSON.stringify({
146
- reportId: params.reportId,
147
- error: params.message,
148
- }),
151
+ body: JSON.stringify(body),
149
152
  });
150
153
  }
151
154
  function getIncomingWebhookPayload(input) {
@@ -162,6 +165,8 @@ function getIncomingWebhookPayload(input) {
162
165
  apiKey: readString(source.apiKey) ||
163
166
  readHeader(headers, 'x-api-key') ||
164
167
  readBearerToken(authorization),
168
+ apiToken: readString(source.apiToken) ||
169
+ readHeader(headers, 'x-api-token'),
165
170
  scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
166
171
  maxInternalUrls: readNumber(source.maxInternalUrls),
167
172
  };
@@ -174,10 +179,10 @@ class SeoScanner {
174
179
  icon: 'file:seoScanner.svg',
175
180
  group: ['transform'],
176
181
  version: 1,
177
- description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
182
+ description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
178
183
  usableAsTool: {
179
184
  replacements: {
180
- description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
185
+ description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
181
186
  },
182
187
  },
183
188
  defaults: { name: 'SEO UOPIX' },
@@ -191,59 +196,59 @@ class SeoScanner {
191
196
  ],
192
197
  properties: [
193
198
  {
194
- displayName: 'URL de la página',
199
+ displayName: 'URL de la página',
195
200
  name: 'url',
196
201
  type: 'string',
197
202
  default: '',
198
203
  placeholder: 'https://example.com/pagina',
199
- description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
204
+ description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
200
205
  },
201
206
  {
202
207
  displayName: 'Escanear todo el sitio',
203
208
  name: 'scanInternalLinks',
204
209
  type: 'boolean',
205
210
  default: false,
206
- description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
211
+ description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
207
212
  },
208
213
  {
209
- displayName: 'Límite de páginas a escanear',
214
+ displayName: 'Límite de páginas a escanear',
210
215
  name: 'maxInternalUrls',
211
216
  type: 'number',
212
217
  default: 20,
213
218
  typeOptions: { minValue: 1, maxValue: 100 },
214
- description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
219
+ description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
215
220
  displayOptions: { show: { scanInternalLinks: [true] } },
216
221
  },
217
222
  {
218
- displayName: 'Ignorar Fallos (Uno por línea)',
223
+ displayName: 'Ignorar Fallos (Uno por línea)',
219
224
  name: 'ignoredIssues',
220
225
  type: 'string',
221
226
  typeOptions: { alwaysOpenEditWindow: true },
222
227
  default: '',
223
- description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
228
+ description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
224
229
  },
225
230
  {
226
- displayName: 'Ignorar Páginas (Una por línea)',
231
+ displayName: 'Ignorar Páginas (Una por línea)',
227
232
  name: 'ignoredPages',
228
233
  type: 'string',
229
234
  typeOptions: { alwaysOpenEditWindow: true },
230
235
  default: '',
231
- description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
236
+ description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
232
237
  displayOptions: { show: { scanInternalLinks: [true] } },
233
238
  },
234
239
  {
235
- displayName: 'Timeout por página (segundos)',
240
+ displayName: 'Timeout por página (segundos)',
236
241
  name: 'timeoutSeconds',
237
242
  type: 'number',
238
243
  default: 15,
239
- description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
244
+ description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
240
245
  },
241
246
  {
242
247
  displayName: 'User-Agent personalizado',
243
248
  name: 'customUserAgent',
244
249
  type: 'boolean',
245
250
  default: false,
246
- description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
251
+ description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
247
252
  },
248
253
  {
249
254
  displayName: 'User-Agent',
@@ -251,7 +256,7 @@ class SeoScanner {
251
256
  type: 'string',
252
257
  default: '',
253
258
  placeholder: 'Mozilla/5.0 (compatible; MiBot/1.0)',
254
- description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
259
+ description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
255
260
  displayOptions: { show: { customUserAgent: [true] } },
256
261
  },
257
262
  {
@@ -259,7 +264,7 @@ class SeoScanner {
259
264
  name: 'simulateGooglebot',
260
265
  type: 'boolean',
261
266
  default: false,
262
- description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
267
+ description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
263
268
  },
264
269
  {
265
270
  displayName: 'Seguir redirecciones',
@@ -274,7 +279,7 @@ class SeoScanner {
274
279
  type: 'string',
275
280
  default: '',
276
281
  placeholder: 'es-ES,es;q=0.9,en;q=0.8',
277
- description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
282
+ description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
278
283
  },
279
284
  {
280
285
  displayName: 'Generar informe HTML',
@@ -288,14 +293,14 @@ class SeoScanner {
288
293
  name: 'useJsRendering',
289
294
  type: 'boolean',
290
295
  default: false,
291
- description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
296
+ description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
292
297
  },
293
298
  {
294
299
  displayName: 'Enviar resultados a API externa',
295
300
  name: 'sendToExternalApi',
296
301
  type: 'boolean',
297
302
  default: false,
298
- description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
303
+ description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
299
304
  },
300
305
  {
301
306
  displayName: 'Callback URL',
@@ -303,7 +308,7 @@ class SeoScanner {
303
308
  type: 'string',
304
309
  default: '',
305
310
  placeholder: 'http://localhost:3000/api/reports',
306
- description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
311
+ description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
307
312
  displayOptions: { show: { sendToExternalApi: [true] } },
308
313
  },
309
314
  {
@@ -312,7 +317,7 @@ class SeoScanner {
312
317
  type: 'string',
313
318
  default: '',
314
319
  placeholder: '',
315
- description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
320
+ description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
316
321
  displayOptions: { show: { sendToExternalApi: [true] } },
317
322
  },
318
323
  {
@@ -328,11 +333,11 @@ class SeoScanner {
328
333
  displayName: 'Opciones de detalle',
329
334
  name: 'detailOptions',
330
335
  type: 'collection',
331
- placeholder: 'Añadir opción',
336
+ placeholder: 'Añadir opción',
332
337
  default: {},
333
338
  options: [
334
339
  {
335
- displayName: 'Incluir detalle de imágenes',
340
+ displayName: 'Incluir detalle de imágenes',
336
341
  name: 'includeImageDetails',
337
342
  type: 'boolean',
338
343
  default: true,
@@ -367,11 +372,11 @@ class SeoScanner {
367
372
  description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
368
373
  },
369
374
  {
370
- displayName: 'Máximo enlaces a comprobar',
375
+ displayName: 'Máximo enlaces a comprobar',
371
376
  name: 'maxBrokenLinksToCheck',
372
377
  type: 'number',
373
378
  default: 15,
374
- description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
379
+ description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
375
380
  },
376
381
  {
377
382
  displayName: 'Comprobar contraste de colores',
@@ -388,7 +393,7 @@ class SeoScanner {
388
393
  description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
389
394
  },
390
395
  ],
391
- description: 'Qué detalles incluir en la salida',
396
+ description: 'Qué detalles incluir en la salida',
392
397
  },
393
398
  ],
394
399
  };
@@ -404,15 +409,18 @@ class SeoScanner {
404
409
  credentials = {};
405
410
  }
406
411
  const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
412
+ const apiToken = incoming.apiToken || '';
407
413
  const appBaseUrl = readString(credentials?.appBaseUrl) ||
408
414
  getOriginFromUrl(incoming.callbackUrl || '') ||
409
415
  DEFAULT_APP_BASE_URL;
410
416
  let licenseWarning = '';
411
417
  try {
412
- await validateApiKeyWithApp({
413
- appBaseUrl,
414
- apiKey,
415
- });
418
+ if (!apiToken) {
419
+ await validateApiKeyWithApp({
420
+ appBaseUrl,
421
+ apiKey,
422
+ });
423
+ }
416
424
  }
417
425
  catch (e) {
418
426
  const msg = e instanceof Error ? e.message : String(e);
@@ -420,7 +428,7 @@ class SeoScanner {
420
428
  await notifyCallbackError({
421
429
  callbackUrl: incoming.callbackUrl || '',
422
430
  reportId: incoming.reportId || '',
423
- apiKey,
431
+ apiToken,
424
432
  message: errorMessage,
425
433
  }).catch(() => undefined);
426
434
  return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
@@ -433,12 +441,12 @@ class SeoScanner {
433
441
  headers: { 'Accept': 'application/json' }
434
442
  });
435
443
  if (!res.ok) {
436
- throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
444
+ throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
437
445
  }
438
446
  const jsonText = await res.text();
439
447
  const data = JSON.parse(jsonText);
440
448
  if (!data.hasOwnProperty(apiKey)) {
441
- throw new Error('La licencia introducida no es válida.');
449
+ throw new Error('La licencia introducida no es válida.');
442
450
  }
443
451
  }
444
452
  catch (e) {
@@ -519,14 +527,14 @@ class SeoScanner {
519
527
  baseUrl = new URL(url).href;
520
528
  }
521
529
  catch {
522
- return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
530
+ return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
523
531
  }
524
532
  try {
525
533
  const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
526
534
  if (statusCode >= 400) {
527
535
  return [[{
528
536
  json: {
529
- error: `La página devolvió código ${statusCode}`,
537
+ error: `La página devolvió código ${statusCode}`,
530
538
  statusCode,
531
539
  url: baseUrl,
532
540
  },
@@ -618,7 +626,7 @@ class SeoScanner {
618
626
  if (mainResult.brokenLinks.length > 0) {
619
627
  const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
620
628
  if (!isIgnored(msg)) {
621
- const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
629
+ const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
622
630
  mainResult.problemsBySeverity.important.push({
623
631
  message: msg,
624
632
  recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
@@ -663,7 +671,7 @@ class SeoScanner {
663
671
  mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
664
672
  mainResult.sitemapError = robotsSitemap.sitemapError;
665
673
  if (robotsSitemap.robotsTxtBlocked) {
666
- const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
674
+ const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
667
675
  if (!isIgnored(msg)) {
668
676
  mainResult.problemsBySeverity.critical.push({
669
677
  message: msg,
@@ -681,7 +689,7 @@ class SeoScanner {
681
689
  if (!isIgnored(msg)) {
682
690
  mainResult.problemsBySeverity.info.push({
683
691
  message: msg,
684
- recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
692
+ recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
685
693
  });
686
694
  }
687
695
  }
@@ -732,7 +740,7 @@ class SeoScanner {
732
740
  sitemapInSitemap: mainResult.sitemapInSitemap,
733
741
  },
734
742
  scannedUrls: 1,
735
- message: `Escaneada 1 página: ${finalUrl}`,
743
+ message: `Escaneada 1 página: ${finalUrl}`,
736
744
  pageTextContent: mainResult.pageTextContent ?? '',
737
745
  };
738
746
  let internalResults = [];
@@ -755,12 +763,12 @@ class SeoScanner {
755
763
  internalResults.push(result);
756
764
  }
757
765
  catch {
758
- internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
766
+ internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
759
767
  }
760
768
  }
761
769
  output.internalPages = internalResults;
762
770
  output.scannedUrls = 1 + internalResults.length;
763
- output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
771
+ output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
764
772
  if (analyzeOpts.checkBrokenLinks) {
765
773
  const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
766
774
  const seenInternal = new Set();
@@ -832,24 +840,24 @@ class SeoScanner {
832
840
  dupDesc.push(p.url);
833
841
  }
834
842
  if (dupTitle.length > 0 || dupDesc.length > 0) {
835
- const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
843
+ const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
836
844
  if (!isIgnored(msg)) {
837
845
  mainResult.duplicateContent = [];
838
846
  let elementText = '';
839
847
  if (dupTitle.length > 0) {
840
848
  mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
841
- elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
849
+ elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
842
850
  }
843
851
  if (dupDesc.length > 0) {
844
852
  mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
845
- elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
853
+ elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
846
854
  }
847
855
  mainResult.problemsBySeverity.important.push({
848
856
  message: msg,
849
- recommendation: 'Usar títulos y meta descriptions únicos por página.',
857
+ recommendation: 'Usar títulos y meta descriptions únicos por página.',
850
858
  element: elementText.trim()
851
859
  });
852
- mainResult.issues.push('Contenido duplicado detectado (título o description)');
860
+ mainResult.issues.push('Contenido duplicado detectado (título o description)');
853
861
  mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
854
862
  }
855
863
  }
@@ -874,12 +882,12 @@ class SeoScanner {
874
882
  }
875
883
  if (orphanPages.length > 0) {
876
884
  mainResult.isOrphan = false;
877
- const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
885
+ const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
878
886
  if (!isIgnored(msg)) {
879
- const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
887
+ const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
880
888
  mainResult.problemsBySeverity.warning.push({
881
889
  message: msg,
882
- recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
890
+ recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
883
891
  element: orphansList
884
892
  });
885
893
  mainResult.warnings.push(msg);
@@ -888,7 +896,7 @@ class SeoScanner {
888
896
  output.summary.orphanPagesCount = orphanPages.length;
889
897
  }
890
898
  else {
891
- mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
899
+ mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
892
900
  output.summary.orphanPagesCount = 0;
893
901
  }
894
902
  }
@@ -940,12 +948,12 @@ class SeoScanner {
940
948
  }
941
949
  const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
942
950
  if (invalidCross.length > 0) {
943
- const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
951
+ const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
944
952
  if (!isIgnored(msg)) {
945
953
  const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
946
954
  resultObj.problemsBySeverity.important.push({
947
955
  message: msg,
948
- recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
956
+ recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
949
957
  element: crossList
950
958
  });
951
959
  resultObj.issues.push(msg);
@@ -953,7 +961,7 @@ class SeoScanner {
953
961
  }
954
962
  }
955
963
  else if (resultObj.crossHreflang.length > 0) {
956
- resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
964
+ resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
957
965
  }
958
966
  };
959
967
  await verifyCrossHreflang(mainResult);
@@ -988,7 +996,7 @@ class SeoScanner {
988
996
  if (sendToExternalApi) {
989
997
  let callbackUrl = '';
990
998
  let reportId = '';
991
- let apiKeyExt = '';
999
+ let apiTokenExt = '';
992
1000
  try {
993
1001
  callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
994
1002
  }
@@ -998,15 +1006,15 @@ class SeoScanner {
998
1006
  }
999
1007
  catch { }
1000
1008
  try {
1001
- apiKeyExt = (this.getNodeParameter('apiToken', 0) || '').trim();
1009
+ apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
1002
1010
  }
1003
1011
  catch { }
1004
1012
  if (!callbackUrl && incoming.callbackUrl)
1005
1013
  callbackUrl = incoming.callbackUrl;
1006
1014
  if (!reportId && incoming.reportId)
1007
1015
  reportId = incoming.reportId;
1008
- if (!apiKeyExt && incoming.apiKey)
1009
- apiKeyExt = incoming.apiKey;
1016
+ if (!apiTokenExt && incoming.apiToken)
1017
+ apiTokenExt = incoming.apiToken;
1010
1018
  if (callbackUrl && reportId) {
1011
1019
  try {
1012
1020
  const callbackBody = {
@@ -1017,8 +1025,10 @@ class SeoScanner {
1017
1025
  const headers = {
1018
1026
  'Content-Type': 'application/json',
1019
1027
  };
1020
- if (apiKeyExt)
1021
- headers['X-API-Key'] = apiKeyExt;
1028
+ if (apiTokenExt) {
1029
+ headers['X-API-Token'] = apiTokenExt;
1030
+ callbackBody.apiToken = apiTokenExt;
1031
+ }
1022
1032
  const callbackResponse = await fetch(callbackUrl, {
1023
1033
  method: 'POST',
1024
1034
  headers,
@@ -1026,11 +1036,11 @@ class SeoScanner {
1026
1036
  });
1027
1037
  if (!callbackResponse.ok) {
1028
1038
  const responseText = await callbackResponse.text().catch(() => '');
1029
- throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
1039
+ throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
1030
1040
  }
1031
1041
  output.externalApiSent = true;
1032
1042
  output.externalApiUrl = callbackUrl;
1033
- output.externalApiKeyUsed = Boolean(apiKeyExt);
1043
+ output.externalApiKeyUsed = Boolean(apiTokenExt);
1034
1044
  }
1035
1045
  catch (callbackErr) {
1036
1046
  output.externalApiSent = false;
@@ -1044,7 +1054,7 @@ class SeoScanner {
1044
1054
  const msg = e instanceof Error ? e.message : String(e);
1045
1055
  return [[{
1046
1056
  json: {
1047
- error: 'No se pudo escanear la página',
1057
+ error: 'No se pudo escanear la página',
1048
1058
  detail: msg,
1049
1059
  url: baseUrl,
1050
1060
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-seo-scanner",
3
- "version": "1.2.23",
3
+ "version": "1.2.24",
4
4
  "description": "Nodo n8n: escaneo SEO técnico completo de una página web, con opción de escanear enlaces internos, informe HTML tipo dashboard, detección de CMS/plugins, crawl extendido (DNS, CDN, SSL, analytics).",
5
5
  "license": "MIT",
6
6
  "keywords": [