@postman-cse/onboarding-bootstrap 2.9.5 → 2.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -259433,6 +259433,18 @@ async function retry(operation, options = {}) {
259433
259433
  }
259434
259434
  throw new Error("Retry exhausted without returning or throwing");
259435
259435
  }
259436
+ function fullJitterDelayMs(attempt, baseMs, capMs, random = Math.random) {
259437
+ const ceiling = Math.min(capMs, baseMs * 2 ** Math.max(0, attempt));
259438
+ return Math.floor(random() * Math.max(0, ceiling));
259439
+ }
259440
+ function parseRetryAfterMs2(value) {
259441
+ if (!value) return void 0;
259442
+ const trimmed = value.trim();
259443
+ if (/^\d+$/.test(trimmed)) return Number(trimmed) * 1e3;
259444
+ const when = Date.parse(trimmed);
259445
+ if (!Number.isNaN(when)) return Math.max(0, when - Date.now());
259446
+ return void 0;
259447
+ }
259436
259448
 
259437
259449
  // src/lib/postman/postman-ec-client.ts
259438
259450
  var EC_WRITE_MAX_ATTEMPTS = 3;
@@ -264046,6 +264058,12 @@ var BOOTSTRAP_BARE_UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9
264046
264058
  function isMissingPatchValueError(error2) {
264047
264059
  return error2 instanceof HttpError && error2.status === 400 && error2.responseBody.includes("Remove operation must point to an existing value");
264048
264060
  }
264061
+ function isRejectedPatchError(error2) {
264062
+ return error2 instanceof HttpError && error2.status === 400 && /REJECTED_PATCH|must update at least one/i.test(
264063
+ `${error2.message}
264064
+ ${error2.responseBody ?? ""}`
264065
+ );
264066
+ }
264049
264067
  function canonicalize(value) {
264050
264068
  if (Array.isArray(value)) return value.map(canonicalize);
264051
264069
  if (value && typeof value === "object") {
@@ -264109,6 +264127,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264109
264127
  static DEFAULT_GENERATION_POLL_DELAY_MS = 2e3;
264110
264128
  gateway;
264111
264129
  sleep;
264130
+ random;
264112
264131
  generationPollAttempts;
264113
264132
  generationPollDelayMs;
264114
264133
  createIdentity;
@@ -264116,6 +264135,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264116
264135
  this.gateway = options.gateway;
264117
264136
  this.createIdentity = options.createIdentity ?? import_node_crypto2.randomUUID;
264118
264137
  this.sleep = options.sleep ?? ((delayMs) => new Promise((resolve5) => setTimeout(resolve5, delayMs)));
264138
+ this.random = options.random ?? Math.random;
264119
264139
  this.generationPollAttempts = resolvePollBudget(
264120
264140
  options.generationPollAttempts,
264121
264141
  process.env.POSTMAN_GENERATION_POLL_ATTEMPTS,
@@ -264890,7 +264910,7 @@ ${error2.responseBody ?? ""}`
264890
264910
  if (!retriable || attempt === maxAttempts - 1) {
264891
264911
  throw error2;
264892
264912
  }
264893
- await this.sleep(Math.min(2e3, 300 * 2 ** attempt));
264913
+ await this.sleep(fullJitterDelayMs(attempt, 300, 2e3, this.random));
264894
264914
  }
264895
264915
  }
264896
264916
  }
@@ -265141,14 +265161,19 @@ ${error2.responseBody ?? ""}`
265141
265161
  { type: "afterResponse", code: exec2.join("\n"), language: "text/javascript" }
265142
265162
  ];
265143
265163
  for (const script of plan.scripts) {
265144
- await this.gateway.requestJson({
265145
- service: "collection",
265146
- method: "patch",
265147
- path: `/v3/collections/${cid}/items/${script.itemId}`,
265148
- retry: "safe",
265149
- headers: { "X-Entity-Type": "http-request" },
265150
- body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265151
- });
265164
+ try {
265165
+ await this.gateway.requestJson({
265166
+ service: "collection",
265167
+ method: "patch",
265168
+ path: `/v3/collections/${cid}/items/${script.itemId}`,
265169
+ retry: "safe",
265170
+ headers: { "X-Entity-Type": "http-request" },
265171
+ body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265172
+ });
265173
+ } catch (error2) {
265174
+ if (isRejectedPatchError(error2)) continue;
265175
+ throw error2;
265176
+ }
265152
265177
  }
265153
265178
  if (!items.some((i) => String(i.name ?? "") === "00 - Resolve Secrets")) {
265154
265179
  const created = await this.gateway.requestJson({
@@ -265353,36 +265378,47 @@ ${error2.responseBody ?? ""}`
265353
265378
  async createItemTree(cid, items, parentId) {
265354
265379
  for (const item of items) {
265355
265380
  const kind = String(item.$kind ?? "http-request");
265356
- let created;
265357
- try {
265358
- created = await this.gateway.requestJson({
265359
- service: "collection",
265360
- method: "post",
265361
- path: `/v3/collections/${cid}/items/`,
265362
- retry: "none",
265363
- headers: { "X-Entity-Type": kind },
265364
- body: this.buildItemCreateBody(item, parentId)
265365
- });
265366
- } catch (error2) {
265367
- if (!isAmbiguousTransportError(error2)) throw error2;
265368
- const name = String(item.name ?? "Untitled");
265369
- const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265370
- if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265371
- if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265372
- const position = asRecord8(candidate.position);
265373
- const parent = asRecord8(position?.parent);
265374
- const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265375
- return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265376
- });
265377
- const match = adoptExactMatch(
265378
- `collection-item:${cid}:${parentId}:${kind}:${name}`,
265379
- matches,
265380
- (candidate) => String(candidate.id ?? "")
265381
- );
265382
- if (!match) throw error2;
265383
- created = { data: { id: match.id } };
265381
+ const maxAttempts = 4;
265382
+ let newId = "";
265383
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
265384
+ let created;
265385
+ try {
265386
+ created = await this.gateway.requestJson({
265387
+ service: "collection",
265388
+ method: "post",
265389
+ path: `/v3/collections/${cid}/items/`,
265390
+ retry: "none",
265391
+ headers: { "X-Entity-Type": kind },
265392
+ body: this.buildItemCreateBody(item, parentId)
265393
+ });
265394
+ } catch (error2) {
265395
+ if (!isAmbiguousTransportError(error2)) throw error2;
265396
+ const name = String(item.name ?? "Untitled");
265397
+ const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265398
+ if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265399
+ if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265400
+ const position = asRecord8(candidate.position);
265401
+ const parent = asRecord8(position?.parent);
265402
+ const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265403
+ return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265404
+ });
265405
+ const match = adoptExactMatch(
265406
+ `collection-item:${cid}:${parentId}:${kind}:${name}`,
265407
+ matches,
265408
+ (candidate) => String(candidate.id ?? "")
265409
+ );
265410
+ if (match) {
265411
+ created = { data: { id: match.id } };
265412
+ } else {
265413
+ const retriable = error2 instanceof HttpError && error2.status >= 500;
265414
+ if (!retriable || attempt === maxAttempts) throw error2;
265415
+ await this.sleep(fullJitterDelayMs(attempt - 1, 300, 2e3, this.random));
265416
+ continue;
265417
+ }
265418
+ }
265419
+ newId = String(asRecord8(created?.data)?.id ?? "").trim();
265420
+ if (newId) break;
265384
265421
  }
265385
- const newId = String(asRecord8(created?.data)?.id ?? "").trim();
265386
265422
  if (!newId) {
265387
265423
  throw new Error(
265388
265424
  `Item create did not return an id for ${String(item.name ?? "item")}`
@@ -265425,6 +265461,30 @@ ${error2.responseBody ?? ""}`
265425
265461
  * - `remove` of /description always works (field exists as "")
265426
265462
  * - on update, GET the root first and only remove fields that currently exist
265427
265463
  */
265464
+ /**
265465
+ * GET a collection root, retrying through the v3 surface's read-after-write
265466
+ * 404 lag. A freshly generated/renamed collection can transiently report
265467
+ * RESOURCE_NOT_FOUND for a few seconds (worse under concurrent runner load);
265468
+ * retrying absorbs that instead of hard-failing the run.
265469
+ */
265470
+ async getCollectionRoot(cid) {
265471
+ const got = await retry(
265472
+ () => this.gateway.requestJson({
265473
+ service: "collection",
265474
+ method: "get",
265475
+ path: `/v3/collections/${cid}`,
265476
+ retry: "none"
265477
+ }),
265478
+ {
265479
+ maxAttempts: 6,
265480
+ delayMs: 1e3,
265481
+ backoffMultiplier: 2,
265482
+ maxDelayMs: 8e3,
265483
+ shouldRetry: (error2) => error2 instanceof HttpError && error2.status === 404
265484
+ }
265485
+ );
265486
+ return asRecord8(got?.data);
265487
+ }
265428
265488
  async applyCollectionLevelSettings(cid, v3, options = {}) {
265429
265489
  const ops = [];
265430
265490
  if (options.rename && typeof v3.name === "string" && v3.name) {
@@ -265432,12 +265492,7 @@ ${error2.responseBody ?? ""}`
265432
265492
  }
265433
265493
  let current = null;
265434
265494
  if (options.reconcileRemovals) {
265435
- const got = await this.gateway.requestJson({
265436
- service: "collection",
265437
- method: "get",
265438
- path: `/v3/collections/${cid}`
265439
- });
265440
- current = asRecord8(got?.data);
265495
+ current = await this.getCollectionRoot(cid);
265441
265496
  }
265442
265497
  const hasDescription = typeof v3.description === "string" && v3.description.length > 0;
265443
265498
  if (hasDescription) {
@@ -265476,6 +265531,9 @@ ${error2.responseBody ?? ""}`
265476
265531
  if (isMissingPatchValueError(error2) && ops.some((op) => op.op === "remove") && await this.verifyRootSettingsApplied(cid, ops)) {
265477
265532
  return;
265478
265533
  }
265534
+ if (isRejectedPatchError(error2) && await this.verifyRootSettingsApplied(cid, ops)) {
265535
+ return;
265536
+ }
265479
265537
  throw error2;
265480
265538
  }
265481
265539
  }
@@ -265599,7 +265657,9 @@ ${error2.responseBody ?? ""}`
265599
265657
  }
265600
265658
  /** Patch only the durable collection description without reconciling its item tree. */
265601
265659
  async updateCollectionDescription(collectionUid, description) {
265602
- await this.applyCollectionLevelSettings(this.bareModelId(collectionUid), { description });
265660
+ const cid = this.bareModelId(collectionUid);
265661
+ await this.getCollectionRoot(cid);
265662
+ await this.applyCollectionLevelSettings(cid, { description });
265603
265663
  }
265604
265664
  /**
265605
265665
  * Full-replace reconcile of a curated local v2.1.0 or collection v3 payload: delete every
@@ -265682,6 +265742,7 @@ function detectInnerError(body2) {
265682
265742
  return typeof innerStatus === "number" && innerStatus >= 400 ? innerStatus : 502;
265683
265743
  }
265684
265744
  function isTransientGatewayError(status, body2) {
265745
+ if (status === 429) return true;
265685
265746
  if (status === 502 || status === 503 || status === 504) return true;
265686
265747
  if (status >= 500 && (body2.includes("ESOCKETTIMEDOUT") || body2.includes("ETIMEDOUT") || body2.includes("ECONNRESET") || body2.includes("serverError") || body2.includes("downstream"))) {
265687
265748
  return true;
@@ -265700,8 +265761,10 @@ var AccessTokenGatewayClient = class {
265700
265761
  secretMasker;
265701
265762
  maxRetries;
265702
265763
  retryBaseDelayMs;
265764
+ retryMaxDelayMs;
265703
265765
  requestTimeoutMs;
265704
265766
  sleepImpl;
265767
+ randomImpl;
265705
265768
  constructor(options) {
265706
265769
  this.tokenProvider = options.tokenProvider;
265707
265770
  this.bifrostBaseUrl = String(
@@ -265713,8 +265776,10 @@ var AccessTokenGatewayClient = class {
265713
265776
  this.secretMasker = options.secretMasker ?? createSecretMasker([this.tokenProvider.current()]);
265714
265777
  this.maxRetries = options.maxRetries ?? 3;
265715
265778
  this.retryBaseDelayMs = options.retryBaseDelayMs ?? 400;
265779
+ this.retryMaxDelayMs = options.retryMaxDelayMs ?? 5e3;
265716
265780
  this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
265717
265781
  this.sleepImpl = options.sleepImpl ?? defaultSleep;
265782
+ this.randomImpl = options.randomImpl ?? Math.random;
265718
265783
  }
265719
265784
  configureTeamContext(teamId, orgMode) {
265720
265785
  this.teamId = String(teamId || "").trim();
@@ -265774,7 +265839,7 @@ var AccessTokenGatewayClient = class {
265774
265839
  response = await this.send(request);
265775
265840
  } catch (error2) {
265776
265841
  if (retryMode === "safe" && attempt < this.maxRetries) {
265777
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265842
+ const delay = this.retryDelayMs(attempt);
265778
265843
  attempt += 1;
265779
265844
  await this.sleepImpl(delay);
265780
265845
  continue;
@@ -265786,7 +265851,7 @@ var AccessTokenGatewayClient = class {
265786
265851
  const innerStatus = detectInnerError(okBody);
265787
265852
  if (innerStatus !== null) {
265788
265853
  if (retryMode === "safe" && isTransientGatewayError(innerStatus, okBody) && attempt < this.maxRetries) {
265789
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265854
+ const delay = this.retryDelayMs(attempt);
265790
265855
  attempt += 1;
265791
265856
  await this.sleepImpl(delay);
265792
265857
  continue;
@@ -265811,7 +265876,10 @@ var AccessTokenGatewayClient = class {
265811
265876
  throw this.toHttpError(request, response, retryBody);
265812
265877
  }
265813
265878
  if (retryMode === "safe" && isTransientGatewayError(response.status, body2) && attempt < this.maxRetries) {
265814
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265879
+ const delay = this.retryDelayMs(
265880
+ attempt,
265881
+ parseRetryAfterMs2(response.headers.get("retry-after"))
265882
+ );
265815
265883
  attempt += 1;
265816
265884
  await this.sleepImpl(delay);
265817
265885
  continue;
@@ -265819,6 +265887,18 @@ var AccessTokenGatewayClient = class {
265819
265887
  throw this.toHttpError(request, response, body2);
265820
265888
  }
265821
265889
  }
265890
+ /**
265891
+ * Full-jitter backoff (uniform in [0, min(cap, base * 2^attempt))) so
265892
+ * concurrent CI runners that fail together never retry in lockstep against
265893
+ * the shared gateway. A server-sent Retry-After beats the heuristic: it is
265894
+ * authoritative backpressure, honored verbatim (capped by the ceiling).
265895
+ */
265896
+ retryDelayMs(attempt, retryAfterMs) {
265897
+ if (retryAfterMs !== void 0) {
265898
+ return Math.min(this.retryMaxDelayMs, retryAfterMs);
265899
+ }
265900
+ return fullJitterDelayMs(attempt, this.retryBaseDelayMs, this.retryMaxDelayMs, this.randomImpl);
265901
+ }
265822
265902
  /**
265823
265903
  * The success path reads the body to inspect for an inner error, which
265824
265904
  * consumes the stream. Hand callers a fresh Response over the buffered text so
@@ -266556,6 +266636,9 @@ function createTelemetryContext(options) {
266556
266636
  var import_node_fs3 = require("node:fs");
266557
266637
  var import_node_path3 = require("node:path");
266558
266638
  function resolveActionVersion2() {
266639
+ if (false) {
266640
+ return void 0;
266641
+ }
266559
266642
  try {
266560
266643
  const raw = (0, import_node_fs3.readFileSync)((0, import_node_path3.join)(__dirname, "..", "package.json"), "utf8");
266561
266644
  return JSON.parse(raw).version ?? "unknown";
@@ -299355,940 +299438,6 @@ function getPositionFromMatch(match) {
299355
299438
  }
299356
299439
 
299357
299440
  // node_modules/@nodable/entities/src/entities.js
299358
- var BASIC_LATIN = {
299359
- amp: "&",
299360
- AMP: "&",
299361
- lt: "<",
299362
- LT: "<",
299363
- gt: ">",
299364
- GT: ">",
299365
- quot: '"',
299366
- QUOT: '"',
299367
- apos: "'",
299368
- lsquo: "\u2018",
299369
- rsquo: "\u2019",
299370
- ldquo: "\u201C",
299371
- rdquo: "\u201D",
299372
- lsquor: "\u201A",
299373
- rsquor: "\u2019",
299374
- ldquor: "\u201E",
299375
- bdquo: "\u201E",
299376
- comma: ",",
299377
- period: ".",
299378
- colon: ":",
299379
- semi: ";",
299380
- excl: "!",
299381
- quest: "?",
299382
- num: "#",
299383
- dollar: "$",
299384
- percent: "%",
299385
- ast: "*",
299386
- commat: "@",
299387
- lowbar: "_",
299388
- verbar: "|",
299389
- vert: "|",
299390
- sol: "/",
299391
- bsol: "\\",
299392
- lbrace: "{",
299393
- rbrace: "}",
299394
- lbrack: "[",
299395
- rbrack: "]",
299396
- lpar: "(",
299397
- rpar: ")",
299398
- nbsp: "\xA0",
299399
- iexcl: "\xA1",
299400
- cent: "\xA2",
299401
- pound: "\xA3",
299402
- curren: "\xA4",
299403
- yen: "\xA5",
299404
- brvbar: "\xA6",
299405
- sect: "\xA7",
299406
- uml: "\xA8",
299407
- copy: "\xA9",
299408
- COPY: "\xA9",
299409
- ordf: "\xAA",
299410
- laquo: "\xAB",
299411
- not: "\xAC",
299412
- shy: "\xAD",
299413
- reg: "\xAE",
299414
- REG: "\xAE",
299415
- macr: "\xAF",
299416
- deg: "\xB0",
299417
- plusmn: "\xB1",
299418
- sup2: "\xB2",
299419
- sup3: "\xB3",
299420
- acute: "\xB4",
299421
- micro: "\xB5",
299422
- para: "\xB6",
299423
- middot: "\xB7",
299424
- cedil: "\xB8",
299425
- sup1: "\xB9",
299426
- ordm: "\xBA",
299427
- raquo: "\xBB",
299428
- frac14: "\xBC",
299429
- frac12: "\xBD",
299430
- half: "\xBD",
299431
- frac34: "\xBE",
299432
- iquest: "\xBF",
299433
- times: "\xD7",
299434
- div: "\xF7",
299435
- divide: "\xF7"
299436
- };
299437
- var LATIN_ACCENTS = {
299438
- Agrave: "\xC0",
299439
- agrave: "\xE0",
299440
- Aacute: "\xC1",
299441
- aacute: "\xE1",
299442
- Acirc: "\xC2",
299443
- acirc: "\xE2",
299444
- Atilde: "\xC3",
299445
- atilde: "\xE3",
299446
- Auml: "\xC4",
299447
- auml: "\xE4",
299448
- Aring: "\xC5",
299449
- aring: "\xE5",
299450
- AElig: "\xC6",
299451
- aelig: "\xE6",
299452
- Ccedil: "\xC7",
299453
- ccedil: "\xE7",
299454
- Egrave: "\xC8",
299455
- egrave: "\xE8",
299456
- Eacute: "\xC9",
299457
- eacute: "\xE9",
299458
- Ecirc: "\xCA",
299459
- ecirc: "\xEA",
299460
- Euml: "\xCB",
299461
- euml: "\xEB",
299462
- Igrave: "\xCC",
299463
- igrave: "\xEC",
299464
- Iacute: "\xCD",
299465
- iacute: "\xED",
299466
- Icirc: "\xCE",
299467
- icirc: "\xEE",
299468
- Iuml: "\xCF",
299469
- iuml: "\xEF",
299470
- ETH: "\xD0",
299471
- eth: "\xF0",
299472
- Ntilde: "\xD1",
299473
- ntilde: "\xF1",
299474
- Ograve: "\xD2",
299475
- ograve: "\xF2",
299476
- Oacute: "\xD3",
299477
- oacute: "\xF3",
299478
- Ocirc: "\xD4",
299479
- ocirc: "\xF4",
299480
- Otilde: "\xD5",
299481
- otilde: "\xF5",
299482
- Ouml: "\xD6",
299483
- ouml: "\xF6",
299484
- Oslash: "\xD8",
299485
- oslash: "\xF8",
299486
- Ugrave: "\xD9",
299487
- ugrave: "\xF9",
299488
- Uacute: "\xDA",
299489
- uacute: "\xFA",
299490
- Ucirc: "\xDB",
299491
- ucirc: "\xFB",
299492
- Uuml: "\xDC",
299493
- uuml: "\xFC",
299494
- Yacute: "\xDD",
299495
- yacute: "\xFD",
299496
- THORN: "\xDE",
299497
- thorn: "\xFE",
299498
- szlig: "\xDF",
299499
- yuml: "\xFF",
299500
- Yuml: "\u0178"
299501
- };
299502
- var LATIN_EXTENDED = {
299503
- Amacr: "\u0100",
299504
- amacr: "\u0101",
299505
- Abreve: "\u0102",
299506
- abreve: "\u0103",
299507
- Aogon: "\u0104",
299508
- aogon: "\u0105",
299509
- Cacute: "\u0106",
299510
- cacute: "\u0107",
299511
- Ccirc: "\u0108",
299512
- ccirc: "\u0109",
299513
- Cdot: "\u010A",
299514
- cdot: "\u010B",
299515
- Ccaron: "\u010C",
299516
- ccaron: "\u010D",
299517
- Dcaron: "\u010E",
299518
- dcaron: "\u010F",
299519
- Dstrok: "\u0110",
299520
- dstrok: "\u0111",
299521
- Emacr: "\u0112",
299522
- emacr: "\u0113",
299523
- Ecaron: "\u011A",
299524
- ecaron: "\u011B",
299525
- Edot: "\u0116",
299526
- edot: "\u0117",
299527
- Eogon: "\u0118",
299528
- eogon: "\u0119",
299529
- Gcirc: "\u011C",
299530
- gcirc: "\u011D",
299531
- Gbreve: "\u011E",
299532
- gbreve: "\u011F",
299533
- Gdot: "\u0120",
299534
- gdot: "\u0121",
299535
- Gcedil: "\u0122",
299536
- Hcirc: "\u0124",
299537
- hcirc: "\u0125",
299538
- Hstrok: "\u0126",
299539
- hstrok: "\u0127",
299540
- Itilde: "\u0128",
299541
- itilde: "\u0129",
299542
- Imacr: "\u012A",
299543
- imacr: "\u012B",
299544
- Iogon: "\u012E",
299545
- iogon: "\u012F",
299546
- Idot: "\u0130",
299547
- IJlig: "\u0132",
299548
- ijlig: "\u0133",
299549
- Jcirc: "\u0134",
299550
- jcirc: "\u0135",
299551
- Kcedil: "\u0136",
299552
- kcedil: "\u0137",
299553
- kgreen: "\u0138",
299554
- Lacute: "\u0139",
299555
- lacute: "\u013A",
299556
- Lcedil: "\u013B",
299557
- lcedil: "\u013C",
299558
- Lcaron: "\u013D",
299559
- lcaron: "\u013E",
299560
- Lmidot: "\u013F",
299561
- lmidot: "\u0140",
299562
- Lstrok: "\u0141",
299563
- lstrok: "\u0142",
299564
- Nacute: "\u0143",
299565
- nacute: "\u0144",
299566
- Ncaron: "\u0147",
299567
- ncaron: "\u0148",
299568
- Ncedil: "\u0145",
299569
- ncedil: "\u0146",
299570
- ENG: "\u014A",
299571
- eng: "\u014B",
299572
- Omacr: "\u014C",
299573
- omacr: "\u014D",
299574
- Odblac: "\u0150",
299575
- odblac: "\u0151",
299576
- OElig: "\u0152",
299577
- oelig: "\u0153",
299578
- Racute: "\u0154",
299579
- racute: "\u0155",
299580
- Rcaron: "\u0158",
299581
- rcaron: "\u0159",
299582
- Rcedil: "\u0156",
299583
- rcedil: "\u0157",
299584
- Sacute: "\u015A",
299585
- sacute: "\u015B",
299586
- Scirc: "\u015C",
299587
- scirc: "\u015D",
299588
- Scedil: "\u015E",
299589
- scedil: "\u015F",
299590
- Scaron: "\u0160",
299591
- scaron: "\u0161",
299592
- Tcedil: "\u0162",
299593
- tcedil: "\u0163",
299594
- Tcaron: "\u0164",
299595
- tcaron: "\u0165",
299596
- Tstrok: "\u0166",
299597
- tstrok: "\u0167",
299598
- Utilde: "\u0168",
299599
- utilde: "\u0169",
299600
- Umacr: "\u016A",
299601
- umacr: "\u016B",
299602
- Ubreve: "\u016C",
299603
- ubreve: "\u016D",
299604
- Uring: "\u016E",
299605
- uring: "\u016F",
299606
- Udblac: "\u0170",
299607
- udblac: "\u0171",
299608
- Uogon: "\u0172",
299609
- uogon: "\u0173",
299610
- Wcirc: "\u0174",
299611
- wcirc: "\u0175",
299612
- Ycirc: "\u0176",
299613
- ycirc: "\u0177",
299614
- Zacute: "\u0179",
299615
- zacute: "\u017A",
299616
- Zdot: "\u017B",
299617
- zdot: "\u017C",
299618
- Zcaron: "\u017D",
299619
- zcaron: "\u017E"
299620
- };
299621
- var GREEK = {
299622
- Alpha: "\u0391",
299623
- alpha: "\u03B1",
299624
- Beta: "\u0392",
299625
- beta: "\u03B2",
299626
- Gamma: "\u0393",
299627
- gamma: "\u03B3",
299628
- Delta: "\u0394",
299629
- delta: "\u03B4",
299630
- Epsilon: "\u0395",
299631
- epsilon: "\u03B5",
299632
- epsiv: "\u03F5",
299633
- varepsilon: "\u03F5",
299634
- Zeta: "\u0396",
299635
- zeta: "\u03B6",
299636
- Eta: "\u0397",
299637
- eta: "\u03B7",
299638
- Theta: "\u0398",
299639
- theta: "\u03B8",
299640
- thetasym: "\u03D1",
299641
- vartheta: "\u03D1",
299642
- Iota: "\u0399",
299643
- iota: "\u03B9",
299644
- Kappa: "\u039A",
299645
- kappa: "\u03BA",
299646
- kappav: "\u03F0",
299647
- varkappa: "\u03F0",
299648
- Lambda: "\u039B",
299649
- lambda: "\u03BB",
299650
- Mu: "\u039C",
299651
- mu: "\u03BC",
299652
- Nu: "\u039D",
299653
- nu: "\u03BD",
299654
- Xi: "\u039E",
299655
- xi: "\u03BE",
299656
- Omicron: "\u039F",
299657
- omicron: "\u03BF",
299658
- Pi: "\u03A0",
299659
- pi: "\u03C0",
299660
- piv: "\u03D6",
299661
- varpi: "\u03D6",
299662
- Rho: "\u03A1",
299663
- rho: "\u03C1",
299664
- rhov: "\u03F1",
299665
- varrho: "\u03F1",
299666
- Sigma: "\u03A3",
299667
- sigma: "\u03C3",
299668
- sigmaf: "\u03C2",
299669
- sigmav: "\u03C2",
299670
- varsigma: "\u03C2",
299671
- Tau: "\u03A4",
299672
- tau: "\u03C4",
299673
- Upsilon: "\u03A5",
299674
- upsilon: "\u03C5",
299675
- upsi: "\u03C5",
299676
- Upsi: "\u03D2",
299677
- upsih: "\u03D2",
299678
- Phi: "\u03A6",
299679
- phi: "\u03C6",
299680
- phiv: "\u03D5",
299681
- varphi: "\u03D5",
299682
- Chi: "\u03A7",
299683
- chi: "\u03C7",
299684
- Psi: "\u03A8",
299685
- psi: "\u03C8",
299686
- Omega: "\u03A9",
299687
- omega: "\u03C9",
299688
- ohm: "\u03A9",
299689
- Gammad: "\u03DC",
299690
- gammad: "\u03DD",
299691
- digamma: "\u03DD"
299692
- };
299693
- var CYRILLIC = {
299694
- Afr: "\u{1D504}",
299695
- afr: "\u{1D51E}",
299696
- Acy: "\u0410",
299697
- acy: "\u0430",
299698
- Bcy: "\u0411",
299699
- bcy: "\u0431",
299700
- Vcy: "\u0412",
299701
- vcy: "\u0432",
299702
- Gcy: "\u0413",
299703
- gcy: "\u0433",
299704
- Dcy: "\u0414",
299705
- dcy: "\u0434",
299706
- IEcy: "\u0415",
299707
- iecy: "\u0435",
299708
- IOcy: "\u0401",
299709
- iocy: "\u0451",
299710
- ZHcy: "\u0416",
299711
- zhcy: "\u0436",
299712
- Zcy: "\u0417",
299713
- zcy: "\u0437",
299714
- Icy: "\u0418",
299715
- icy: "\u0438",
299716
- Jcy: "\u0419",
299717
- jcy: "\u0439",
299718
- Kcy: "\u041A",
299719
- kcy: "\u043A",
299720
- Lcy: "\u041B",
299721
- lcy: "\u043B",
299722
- Mcy: "\u041C",
299723
- mcy: "\u043C",
299724
- Ncy: "\u041D",
299725
- ncy: "\u043D",
299726
- Ocy: "\u041E",
299727
- ocy: "\u043E",
299728
- Pcy: "\u041F",
299729
- pcy: "\u043F",
299730
- Rcy: "\u0420",
299731
- rcy: "\u0440",
299732
- Scy: "\u0421",
299733
- scy: "\u0441",
299734
- Tcy: "\u0422",
299735
- tcy: "\u0442",
299736
- Ucy: "\u0423",
299737
- ucy: "\u0443",
299738
- Fcy: "\u0424",
299739
- fcy: "\u0444",
299740
- KHcy: "\u0425",
299741
- khcy: "\u0445",
299742
- TScy: "\u0426",
299743
- tscy: "\u0446",
299744
- CHcy: "\u0427",
299745
- chcy: "\u0447",
299746
- SHcy: "\u0428",
299747
- shcy: "\u0448",
299748
- SHCHcy: "\u0429",
299749
- shchcy: "\u0449",
299750
- HARDcy: "\u042A",
299751
- hardcy: "\u044A",
299752
- Ycy: "\u042B",
299753
- ycy: "\u044B",
299754
- SOFTcy: "\u042C",
299755
- softcy: "\u044C",
299756
- Ecy: "\u042D",
299757
- ecy: "\u044D",
299758
- YUcy: "\u042E",
299759
- yucy: "\u044E",
299760
- YAcy: "\u042F",
299761
- yacy: "\u044F",
299762
- DJcy: "\u0402",
299763
- djcy: "\u0452",
299764
- GJcy: "\u0403",
299765
- gjcy: "\u0453",
299766
- Jukcy: "\u0404",
299767
- jukcy: "\u0454",
299768
- DScy: "\u0405",
299769
- dscy: "\u0455",
299770
- Iukcy: "\u0406",
299771
- iukcy: "\u0456",
299772
- YIcy: "\u0407",
299773
- yicy: "\u0457",
299774
- Jsercy: "\u0408",
299775
- jsercy: "\u0458",
299776
- LJcy: "\u0409",
299777
- ljcy: "\u0459",
299778
- NJcy: "\u040A",
299779
- njcy: "\u045A",
299780
- TSHcy: "\u040B",
299781
- tshcy: "\u045B",
299782
- KJcy: "\u040C",
299783
- kjcy: "\u045C",
299784
- Ubrcy: "\u040E",
299785
- ubrcy: "\u045E",
299786
- DZcy: "\u040F",
299787
- dzcy: "\u045F"
299788
- };
299789
- var MATH = {
299790
- plus: "+",
299791
- pm: "\xB1",
299792
- times: "\xD7",
299793
- div: "\xF7",
299794
- divide: "\xF7",
299795
- sdot: "\u22C5",
299796
- star: "\u2606",
299797
- starf: "\u2605",
299798
- bigstar: "\u2605",
299799
- lowast: "\u2217",
299800
- ast: "*",
299801
- midast: "*",
299802
- compfn: "\u2218",
299803
- smallcircle: "\u2218",
299804
- bullet: "\u2022",
299805
- bull: "\u2022",
299806
- nbsp: "\xA0",
299807
- hellip: "\u2026",
299808
- mldr: "\u2026",
299809
- prime: "\u2032",
299810
- Prime: "\u2033",
299811
- tprime: "\u2034",
299812
- bprime: "\u2035",
299813
- backprime: "\u2035",
299814
- minus: "\u2212",
299815
- minusd: "\u2238",
299816
- dotminus: "\u2238",
299817
- plusdo: "\u2214",
299818
- dotplus: "\u2214",
299819
- plusmn: "\xB1",
299820
- minusplus: "\u2213",
299821
- mnplus: "\u2213",
299822
- mp: "\u2213",
299823
- setminus: "\u2216",
299824
- smallsetminus: "\u2216",
299825
- Backslash: "\u2216",
299826
- setmn: "\u2216",
299827
- ssetmn: "\u2216",
299828
- lowbar: "_",
299829
- verbar: "|",
299830
- vert: "|",
299831
- VerticalLine: "|",
299832
- colon: ":",
299833
- Colon: "\u2237",
299834
- Proportion: "\u2237",
299835
- ratio: "\u2236",
299836
- equals: "=",
299837
- ne: "\u2260",
299838
- nequiv: "\u2262",
299839
- equiv: "\u2261",
299840
- Congruent: "\u2261",
299841
- sim: "\u223C",
299842
- thicksim: "\u223C",
299843
- thksim: "\u223C",
299844
- sime: "\u2243",
299845
- simeq: "\u2243",
299846
- TildeEqual: "\u2243",
299847
- asymp: "\u2248",
299848
- approx: "\u2248",
299849
- thickapprox: "\u2248",
299850
- thkap: "\u2248",
299851
- TildeTilde: "\u2248",
299852
- ncong: "\u2247",
299853
- cong: "\u2245",
299854
- TildeFullEqual: "\u2245",
299855
- asympeq: "\u224D",
299856
- CupCap: "\u224D",
299857
- bump: "\u224E",
299858
- Bumpeq: "\u224E",
299859
- HumpDownHump: "\u224E",
299860
- bumpe: "\u224F",
299861
- bumpeq: "\u224F",
299862
- HumpEqual: "\u224F",
299863
- le: "\u2264",
299864
- LessEqual: "\u2264",
299865
- ge: "\u2265",
299866
- GreaterEqual: "\u2265",
299867
- lesseqgtr: "\u22DA",
299868
- lesseqqgtr: "\u2A8B",
299869
- greater: ">",
299870
- less: "<"
299871
- };
299872
- var MATH_ADVANCED = {
299873
- alefsym: "\u2135",
299874
- aleph: "\u2135",
299875
- beth: "\u2136",
299876
- gimel: "\u2137",
299877
- daleth: "\u2138",
299878
- forall: "\u2200",
299879
- ForAll: "\u2200",
299880
- part: "\u2202",
299881
- PartialD: "\u2202",
299882
- exist: "\u2203",
299883
- Exists: "\u2203",
299884
- nexist: "\u2204",
299885
- nexists: "\u2204",
299886
- empty: "\u2205",
299887
- emptyset: "\u2205",
299888
- emptyv: "\u2205",
299889
- varnothing: "\u2205",
299890
- nabla: "\u2207",
299891
- Del: "\u2207",
299892
- isin: "\u2208",
299893
- isinv: "\u2208",
299894
- in: "\u2208",
299895
- Element: "\u2208",
299896
- notin: "\u2209",
299897
- notinva: "\u2209",
299898
- ni: "\u220B",
299899
- niv: "\u220B",
299900
- SuchThat: "\u220B",
299901
- ReverseElement: "\u220B",
299902
- notni: "\u220C",
299903
- notniva: "\u220C",
299904
- prod: "\u220F",
299905
- Product: "\u220F",
299906
- coprod: "\u2210",
299907
- Coproduct: "\u2210",
299908
- sum: "\u2211",
299909
- Sum: "\u2211",
299910
- minus: "\u2212",
299911
- mp: "\u2213",
299912
- plusdo: "\u2214",
299913
- dotplus: "\u2214",
299914
- setminus: "\u2216",
299915
- lowast: "\u2217",
299916
- radic: "\u221A",
299917
- Sqrt: "\u221A",
299918
- prop: "\u221D",
299919
- propto: "\u221D",
299920
- Proportional: "\u221D",
299921
- varpropto: "\u221D",
299922
- infin: "\u221E",
299923
- infintie: "\u29DD",
299924
- ang: "\u2220",
299925
- angle: "\u2220",
299926
- angmsd: "\u2221",
299927
- measuredangle: "\u2221",
299928
- angsph: "\u2222",
299929
- mid: "\u2223",
299930
- VerticalBar: "\u2223",
299931
- nmid: "\u2224",
299932
- nsmid: "\u2224",
299933
- npar: "\u2226",
299934
- parallel: "\u2225",
299935
- spar: "\u2225",
299936
- nparallel: "\u2226",
299937
- nspar: "\u2226",
299938
- and: "\u2227",
299939
- wedge: "\u2227",
299940
- or: "\u2228",
299941
- vee: "\u2228",
299942
- cap: "\u2229",
299943
- cup: "\u222A",
299944
- int: "\u222B",
299945
- Integral: "\u222B",
299946
- conint: "\u222E",
299947
- ContourIntegral: "\u222E",
299948
- Conint: "\u222F",
299949
- DoubleContourIntegral: "\u222F",
299950
- Cconint: "\u2230",
299951
- there4: "\u2234",
299952
- therefore: "\u2234",
299953
- Therefore: "\u2234",
299954
- becaus: "\u2235",
299955
- because: "\u2235",
299956
- Because: "\u2235",
299957
- ratio: "\u2236",
299958
- Proportion: "\u2237",
299959
- minusd: "\u2238",
299960
- dotminus: "\u2238",
299961
- mDDot: "\u223A",
299962
- homtht: "\u223B",
299963
- sim: "\u223C",
299964
- bsimg: "\u223D",
299965
- backsim: "\u223D",
299966
- ac: "\u223E",
299967
- mstpos: "\u223E",
299968
- acd: "\u223F",
299969
- VerticalTilde: "\u2240",
299970
- wr: "\u2240",
299971
- wreath: "\u2240",
299972
- nsime: "\u2244",
299973
- nsimeq: "\u2244",
299974
- ncong: "\u2247",
299975
- simne: "\u2246",
299976
- ncongdot: "\u2A6D\u0338",
299977
- ngsim: "\u2275",
299978
- nsim: "\u2241",
299979
- napprox: "\u2249",
299980
- nap: "\u2249",
299981
- ngeq: "\u2271",
299982
- nge: "\u2271",
299983
- nleq: "\u2270",
299984
- nle: "\u2270",
299985
- ngtr: "\u226F",
299986
- ngt: "\u226F",
299987
- nless: "\u226E",
299988
- nlt: "\u226E",
299989
- nprec: "\u2280",
299990
- npr: "\u2280",
299991
- nsucc: "\u2281",
299992
- nsc: "\u2281"
299993
- };
299994
- var ARROWS = {
299995
- larr: "\u2190",
299996
- leftarrow: "\u2190",
299997
- LeftArrow: "\u2190",
299998
- uarr: "\u2191",
299999
- uparrow: "\u2191",
300000
- UpArrow: "\u2191",
300001
- rarr: "\u2192",
300002
- rightarrow: "\u2192",
300003
- RightArrow: "\u2192",
300004
- darr: "\u2193",
300005
- downarrow: "\u2193",
300006
- DownArrow: "\u2193",
300007
- harr: "\u2194",
300008
- leftrightarrow: "\u2194",
300009
- LeftRightArrow: "\u2194",
300010
- varr: "\u2195",
300011
- updownarrow: "\u2195",
300012
- UpDownArrow: "\u2195",
300013
- nwarr: "\u2196",
300014
- nwarrow: "\u2196",
300015
- UpperLeftArrow: "\u2196",
300016
- nearr: "\u2197",
300017
- nearrow: "\u2197",
300018
- UpperRightArrow: "\u2197",
300019
- searr: "\u2198",
300020
- searrow: "\u2198",
300021
- LowerRightArrow: "\u2198",
300022
- swarr: "\u2199",
300023
- swarrow: "\u2199",
300024
- LowerLeftArrow: "\u2199",
300025
- lArr: "\u21D0",
300026
- Leftarrow: "\u21D0",
300027
- uArr: "\u21D1",
300028
- Uparrow: "\u21D1",
300029
- rArr: "\u21D2",
300030
- Rightarrow: "\u21D2",
300031
- dArr: "\u21D3",
300032
- Downarrow: "\u21D3",
300033
- hArr: "\u21D4",
300034
- Leftrightarrow: "\u21D4",
300035
- iff: "\u21D4",
300036
- vArr: "\u21D5",
300037
- Updownarrow: "\u21D5",
300038
- lAarr: "\u21DA",
300039
- Lleftarrow: "\u21DA",
300040
- rAarr: "\u21DB",
300041
- Rrightarrow: "\u21DB",
300042
- lrarr: "\u21C6",
300043
- leftrightarrows: "\u21C6",
300044
- rlarr: "\u21C4",
300045
- rightleftarrows: "\u21C4",
300046
- lrhar: "\u21CB",
300047
- leftrightharpoons: "\u21CB",
300048
- ReverseEquilibrium: "\u21CB",
300049
- rlhar: "\u21CC",
300050
- rightleftharpoons: "\u21CC",
300051
- Equilibrium: "\u21CC",
300052
- udarr: "\u21C5",
300053
- UpArrowDownArrow: "\u21C5",
300054
- duarr: "\u21F5",
300055
- DownArrowUpArrow: "\u21F5",
300056
- llarr: "\u21C7",
300057
- leftleftarrows: "\u21C7",
300058
- rrarr: "\u21C9",
300059
- rightrightarrows: "\u21C9",
300060
- ddarr: "\u21CA",
300061
- downdownarrows: "\u21CA",
300062
- har: "\u21BD",
300063
- lhard: "\u21BD",
300064
- leftharpoondown: "\u21BD",
300065
- lharu: "\u21BC",
300066
- leftharpoonup: "\u21BC",
300067
- rhard: "\u21C1",
300068
- rightharpoondown: "\u21C1",
300069
- rharu: "\u21C0",
300070
- rightharpoonup: "\u21C0",
300071
- lsh: "\u21B0",
300072
- Lsh: "\u21B0",
300073
- rsh: "\u21B1",
300074
- Rsh: "\u21B1",
300075
- ldsh: "\u21B2",
300076
- rdsh: "\u21B3",
300077
- hookleftarrow: "\u21A9",
300078
- hookrightarrow: "\u21AA",
300079
- mapstoleft: "\u21A4",
300080
- mapstoup: "\u21A5",
300081
- map: "\u21A6",
300082
- mapsto: "\u21A6",
300083
- mapstodown: "\u21A7",
300084
- crarr: "\u21B5",
300085
- nleftarrow: "\u219A",
300086
- nleftrightarrow: "\u21AE",
300087
- nrightarrow: "\u219B",
300088
- nrarr: "\u219B",
300089
- larrtl: "\u21A2",
300090
- rarrtl: "\u21A3",
300091
- leftarrowtail: "\u21A2",
300092
- rightarrowtail: "\u21A3",
300093
- twoheadleftarrow: "\u219E",
300094
- twoheadrightarrow: "\u21A0",
300095
- Larr: "\u219E",
300096
- Rarr: "\u21A0",
300097
- larrhk: "\u21A9",
300098
- rarrhk: "\u21AA",
300099
- larrlp: "\u21AB",
300100
- looparrowleft: "\u21AB",
300101
- rarrlp: "\u21AC",
300102
- looparrowright: "\u21AC",
300103
- harrw: "\u21AD",
300104
- leftrightsquigarrow: "\u21AD",
300105
- nrarrw: "\u219D\u0338",
300106
- rarrw: "\u219D",
300107
- rightsquigarrow: "\u219D",
300108
- larrbfs: "\u291F",
300109
- rarrbfs: "\u2920",
300110
- nvHarr: "\u2904",
300111
- nvlArr: "\u2902",
300112
- nvrArr: "\u2903",
300113
- larrfs: "\u291D",
300114
- rarrfs: "\u291E",
300115
- Map: "\u2905",
300116
- larrsim: "\u2973",
300117
- rarrsim: "\u2974",
300118
- harrcir: "\u2948",
300119
- Uarrocir: "\u2949",
300120
- lurdshar: "\u294A",
300121
- ldrdhar: "\u2967",
300122
- ldrushar: "\u294B",
300123
- rdldhar: "\u2969",
300124
- lrhard: "\u296D",
300125
- uharr: "\u21BE",
300126
- uharl: "\u21BF",
300127
- dharr: "\u21C2",
300128
- dharl: "\u21C3",
300129
- Uarr: "\u219F",
300130
- Darr: "\u21A1",
300131
- zigrarr: "\u21DD",
300132
- nwArr: "\u21D6",
300133
- neArr: "\u21D7",
300134
- seArr: "\u21D8",
300135
- swArr: "\u21D9",
300136
- nharr: "\u21AE",
300137
- nhArr: "\u21CE",
300138
- nlarr: "\u219A",
300139
- nlArr: "\u21CD",
300140
- nrArr: "\u21CF",
300141
- larrb: "\u21E4",
300142
- LeftArrowBar: "\u21E4",
300143
- rarrb: "\u21E5",
300144
- RightArrowBar: "\u21E5"
300145
- };
300146
- var SHAPES = {
300147
- square: "\u25A1",
300148
- Square: "\u25A1",
300149
- squ: "\u25A1",
300150
- squf: "\u25AA",
300151
- squarf: "\u25AA",
300152
- blacksquar: "\u25AA",
300153
- blacksquare: "\u25AA",
300154
- FilledVerySmallSquare: "\u25AA",
300155
- blk34: "\u2593",
300156
- blk12: "\u2592",
300157
- blk14: "\u2591",
300158
- block: "\u2588",
300159
- srect: "\u25AD",
300160
- rect: "\u25AD",
300161
- sdot: "\u22C5",
300162
- sdotb: "\u22A1",
300163
- dotsquare: "\u22A1",
300164
- triangle: "\u25B5",
300165
- tri: "\u25B5",
300166
- trine: "\u25B5",
300167
- utri: "\u25B5",
300168
- triangledown: "\u25BF",
300169
- dtri: "\u25BF",
300170
- tridown: "\u25BF",
300171
- triangleleft: "\u25C3",
300172
- ltri: "\u25C3",
300173
- triangleright: "\u25B9",
300174
- rtri: "\u25B9",
300175
- blacktriangle: "\u25B4",
300176
- utrif: "\u25B4",
300177
- blacktriangledown: "\u25BE",
300178
- dtrif: "\u25BE",
300179
- blacktriangleleft: "\u25C2",
300180
- ltrif: "\u25C2",
300181
- blacktriangleright: "\u25B8",
300182
- rtrif: "\u25B8",
300183
- loz: "\u25CA",
300184
- lozenge: "\u25CA",
300185
- blacklozenge: "\u29EB",
300186
- lozf: "\u29EB",
300187
- bigcirc: "\u25EF",
300188
- xcirc: "\u25EF",
300189
- circ: "\u02C6",
300190
- Circle: "\u25CB",
300191
- cir: "\u25CB",
300192
- o: "\u25CB",
300193
- bullet: "\u2022",
300194
- bull: "\u2022",
300195
- hellip: "\u2026",
300196
- mldr: "\u2026",
300197
- nldr: "\u2025",
300198
- boxh: "\u2500",
300199
- HorizontalLine: "\u2500",
300200
- boxv: "\u2502",
300201
- boxdr: "\u250C",
300202
- boxdl: "\u2510",
300203
- boxur: "\u2514",
300204
- boxul: "\u2518",
300205
- boxvr: "\u251C",
300206
- boxvl: "\u2524",
300207
- boxhd: "\u252C",
300208
- boxhu: "\u2534",
300209
- boxvh: "\u253C",
300210
- boxH: "\u2550",
300211
- boxV: "\u2551",
300212
- boxdR: "\u2552",
300213
- boxDr: "\u2553",
300214
- boxDR: "\u2554",
300215
- boxDl: "\u2555",
300216
- boxdL: "\u2556",
300217
- boxDL: "\u2557",
300218
- boxuR: "\u2558",
300219
- boxUr: "\u2559",
300220
- boxUR: "\u255A",
300221
- boxUl: "\u255C",
300222
- boxuL: "\u255B",
300223
- boxUL: "\u255D",
300224
- boxvR: "\u255E",
300225
- boxVr: "\u255F",
300226
- boxVR: "\u2560",
300227
- boxVl: "\u2562",
300228
- boxvL: "\u2561",
300229
- boxVL: "\u2563",
300230
- boxHd: "\u2564",
300231
- boxhD: "\u2565",
300232
- boxHD: "\u2566",
300233
- boxHu: "\u2567",
300234
- boxhU: "\u2568",
300235
- boxHU: "\u2569",
300236
- boxvH: "\u256A",
300237
- boxVh: "\u256B",
300238
- boxVH: "\u256C"
300239
- };
300240
- var PUNCTUATION = {
300241
- excl: "!",
300242
- iexcl: "\xA1",
300243
- brvbar: "\xA6",
300244
- sect: "\xA7",
300245
- uml: "\xA8",
300246
- copy: "\xA9",
300247
- ordf: "\xAA",
300248
- laquo: "\xAB",
300249
- not: "\xAC",
300250
- shy: "\xAD",
300251
- reg: "\xAE",
300252
- macr: "\xAF",
300253
- deg: "\xB0",
300254
- plusmn: "\xB1",
300255
- sup2: "\xB2",
300256
- sup3: "\xB3",
300257
- acute: "\xB4",
300258
- micro: "\xB5",
300259
- para: "\xB6",
300260
- middot: "\xB7",
300261
- cedil: "\xB8",
300262
- sup1: "\xB9",
300263
- ordm: "\xBA",
300264
- raquo: "\xBB",
300265
- frac14: "\xBC",
300266
- frac12: "\xBD",
300267
- frac34: "\xBE",
300268
- iquest: "\xBF",
300269
- nbsp: "\xA0",
300270
- comma: ",",
300271
- period: ".",
300272
- colon: ":",
300273
- semi: ";",
300274
- vert: "|",
300275
- Verbar: "\u2016",
300276
- verbar: "|",
300277
- dblac: "\u02DD",
300278
- circ: "\u02C6",
300279
- caron: "\u02C7",
300280
- breve: "\u02D8",
300281
- dot: "\u02D9",
300282
- ring: "\u02DA",
300283
- ogon: "\u02DB",
300284
- tilde: "\u02DC",
300285
- DiacriticalGrave: "`",
300286
- DiacriticalAcute: "\xB4",
300287
- DiacriticalTilde: "\u02DC",
300288
- DiacriticalDot: "\u02D9",
300289
- DiacriticalDoubleAcute: "\u02DD",
300290
- grave: "`"
300291
- };
300292
299441
  var CURRENCY = {
300293
299442
  cent: "\xA2",
300294
299443
  pound: "\xA3",
@@ -300306,106 +299455,6 @@ var CURRENCY = {
300306
299455
  yuan: "\xA5",
300307
299456
  cedil: "\xB8"
300308
299457
  };
300309
- var FRACTIONS = {
300310
- frac12: "\xBD",
300311
- half: "\xBD",
300312
- frac13: "\u2153",
300313
- frac14: "\xBC",
300314
- frac15: "\u2155",
300315
- frac16: "\u2159",
300316
- frac18: "\u215B",
300317
- frac23: "\u2154",
300318
- frac25: "\u2156",
300319
- frac34: "\xBE",
300320
- frac35: "\u2157",
300321
- frac38: "\u215C",
300322
- frac45: "\u2158",
300323
- frac56: "\u215A",
300324
- frac58: "\u215D",
300325
- frac78: "\u215E",
300326
- frasl: "\u2044"
300327
- };
300328
- var MISC_SYMBOLS = {
300329
- trade: "\u2122",
300330
- TRADE: "\u2122",
300331
- telrec: "\u2315",
300332
- target: "\u2316",
300333
- ulcorn: "\u231C",
300334
- ulcorner: "\u231C",
300335
- urcorn: "\u231D",
300336
- urcorner: "\u231D",
300337
- dlcorn: "\u231E",
300338
- llcorner: "\u231E",
300339
- drcorn: "\u231F",
300340
- lrcorner: "\u231F",
300341
- intercal: "\u22BA",
300342
- intcal: "\u22BA",
300343
- oplus: "\u2295",
300344
- CirclePlus: "\u2295",
300345
- ominus: "\u2296",
300346
- CircleMinus: "\u2296",
300347
- otimes: "\u2297",
300348
- CircleTimes: "\u2297",
300349
- osol: "\u2298",
300350
- odot: "\u2299",
300351
- CircleDot: "\u2299",
300352
- oast: "\u229B",
300353
- circledast: "\u229B",
300354
- odash: "\u229D",
300355
- circleddash: "\u229D",
300356
- ocirc: "\u229A",
300357
- circledcirc: "\u229A",
300358
- boxplus: "\u229E",
300359
- plusb: "\u229E",
300360
- boxminus: "\u229F",
300361
- minusb: "\u229F",
300362
- boxtimes: "\u22A0",
300363
- timesb: "\u22A0",
300364
- boxdot: "\u22A1",
300365
- sdotb: "\u22A1",
300366
- veebar: "\u22BB",
300367
- vee: "\u2228",
300368
- barvee: "\u22BD",
300369
- and: "\u2227",
300370
- wedge: "\u2227",
300371
- Cap: "\u22D2",
300372
- Cup: "\u22D3",
300373
- Fork: "\u22D4",
300374
- pitchfork: "\u22D4",
300375
- epar: "\u22D5",
300376
- ltlarr: "\u2976",
300377
- nvap: "\u224D\u20D2",
300378
- nvsim: "\u223C\u20D2",
300379
- nvge: "\u2265\u20D2",
300380
- nvle: "\u2264\u20D2",
300381
- nvlt: "<\u20D2",
300382
- nvgt: ">\u20D2",
300383
- nvltrie: "\u22B4\u20D2",
300384
- nvrtrie: "\u22B5\u20D2",
300385
- Vdash: "\u22A9",
300386
- dashv: "\u22A3",
300387
- vDash: "\u22A8",
300388
- Vvdash: "\u22AA",
300389
- nvdash: "\u22AC",
300390
- nvDash: "\u22AD",
300391
- nVdash: "\u22AE",
300392
- nVDash: "\u22AF"
300393
- };
300394
- var ALL_ENTITIES = {
300395
- ...BASIC_LATIN,
300396
- ...LATIN_ACCENTS,
300397
- ...LATIN_EXTENDED,
300398
- ...GREEK,
300399
- ...CYRILLIC,
300400
- ...MATH,
300401
- ...MATH_ADVANCED,
300402
- ...ARROWS,
300403
- ...SHAPES,
300404
- ...PUNCTUATION,
300405
- ...CURRENCY,
300406
- ...FRACTIONS,
300407
- ...MISC_SYMBOLS
300408
- };
300409
299458
  var XML = {
300410
299459
  amp: "&",
300411
299460
  apos: "'",
@@ -301049,7 +300098,7 @@ var XmlNode = class {
301049
300098
  }
301050
300099
  };
301051
300100
 
301052
- // node_modules/xml-naming/src/index.js
300101
+ // node_modules/fast-xml-parser/node_modules/xml-naming/src/index.js
301053
300102
  var nameStartChar10 = ":A-Za-z_\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD";
301054
300103
  var nameChar10 = nameStartChar10 + "\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040";
301055
300104
  var nameStartChar11 = ":A-Za-z_\xC0-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";
@@ -301068,8 +300117,14 @@ var buildRegexes = (startChar, char, flags = "") => {
301068
300117
  };
301069
300118
  var regexes10 = buildRegexes(nameStartChar10, nameChar10);
301070
300119
  var regexes11 = buildRegexes(nameStartChar11, nameChar11, "u");
301071
- var getRegexes = (xmlVersion = "1.0") => xmlVersion === "1.1" ? regexes11 : regexes10;
301072
- var qName = (str, { xmlVersion = "1.0" } = {}) => getRegexes(xmlVersion).qName.test(str);
300120
+ var nameStartCharAscii = ":A-Za-z_";
300121
+ var nameCharAscii = nameStartCharAscii + "\\-\\.\\d";
300122
+ var regexesAscii = buildRegexes(nameStartCharAscii, nameCharAscii);
300123
+ var getRegexes = (xmlVersion = "1.0", asciiOnly = false) => {
300124
+ if (asciiOnly) return regexesAscii;
300125
+ return xmlVersion === "1.1" ? regexes11 : regexes10;
300126
+ };
300127
+ var qName = (str, { xmlVersion = "1.0", asciiOnly = false } = {}) => getRegexes(xmlVersion, asciiOnly).qName.test(str);
301073
300128
 
301074
300129
  // node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
301075
300130
  var DocTypeReader = class {
@@ -302231,17 +301286,16 @@ var Matcher = class {
302231
301286
  this.path[this.path.length - 1].values = void 0;
302232
301287
  }
302233
301288
  const currentLevel = this.path.length;
302234
- if (!this.siblingStacks[currentLevel]) {
302235
- this.siblingStacks[currentLevel] = /* @__PURE__ */ new Map();
301289
+ let level = this.siblingStacks[currentLevel];
301290
+ if (!level) {
301291
+ level = { counts: /* @__PURE__ */ new Map(), total: 0 };
301292
+ this.siblingStacks[currentLevel] = level;
302236
301293
  }
302237
- const siblings = this.siblingStacks[currentLevel];
302238
301294
  const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;
302239
- const counter = siblings.get(siblingKey) || 0;
302240
- let position = 0;
302241
- for (const count of siblings.values()) {
302242
- position += count;
302243
- }
302244
- siblings.set(siblingKey, counter + 1);
301295
+ const counter = level.counts.get(siblingKey) || 0;
301296
+ const position = level.total;
301297
+ level.counts.set(siblingKey, counter + 1);
301298
+ level.total++;
302245
301299
  const node = {
302246
301300
  tag: tagName,
302247
301301
  position,
@@ -302550,7 +301604,7 @@ var Matcher = class {
302550
301604
  snapshot() {
302551
301605
  return {
302552
301606
  path: this.path.map((node) => ({ ...node })),
302553
- siblingStacks: this.siblingStacks.map((map) => new Map(map)),
301607
+ siblingStacks: this.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level),
302554
301608
  keptAttrs: this._keptAttrs.map((entry) => ({ ...entry }))
302555
301609
  };
302556
301610
  }
@@ -302561,7 +301615,7 @@ var Matcher = class {
302561
301615
  restore(snapshot) {
302562
301616
  this._pathStringCache = null;
302563
301617
  this.path = snapshot.path.map((node) => ({ ...node }));
302564
- this.siblingStacks = snapshot.siblingStacks.map((map) => new Map(map));
301618
+ this.siblingStacks = snapshot.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level);
302565
301619
  this._keptAttrs = (snapshot.keptAttrs || []).map((entry) => ({ ...entry }));
302566
301620
  }
302567
301621
  /**
@@ -302899,27 +301953,6 @@ var SQL_PATTERNS = [
302899
301953
  ];
302900
301954
  var sql_default = SQL_PATTERNS;
302901
301955
 
302902
- // node_modules/is-unsafe/src/contexts/sql-strict.js
302903
- var SQL_STRICT_EXTRA = [
302904
- {
302905
- id: "sql-line-comment",
302906
- description: "SQL line comment: -- followed by whitespace or end of string",
302907
- pattern: /--(?:\s|$)/
302908
- },
302909
- {
302910
- id: "sql-stacked-query",
302911
- description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302912
- pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302913
- },
302914
- {
302915
- id: "sql-hex-encoding",
302916
- description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302917
- pattern: /\b0x[0-9a-f]{4,}/i
302918
- }
302919
- ];
302920
- var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302921
- var sql_strict_default = SQL_STRICT_PATTERNS;
302922
-
302923
301956
  // node_modules/is-unsafe/src/contexts/shell.js
302924
301957
  var SHELL_PATTERNS = [
302925
301958
  {
@@ -303231,8 +302264,38 @@ var LOG_PATTERNS = [
303231
302264
  ];
303232
302265
  var log_default = LOG_PATTERNS;
303233
302266
 
303234
- // node_modules/is-unsafe/src/registry.js
303235
- var CONTEXT_REGISTRY = {
302267
+ // node_modules/is-unsafe/src/contexts/sql-strict.js
302268
+ var SQL_STRICT_EXTRA = [
302269
+ {
302270
+ id: "sql-line-comment",
302271
+ description: "SQL line comment: -- followed by whitespace or end of string",
302272
+ pattern: /--(?:\s|$)/
302273
+ },
302274
+ {
302275
+ id: "sql-stacked-query",
302276
+ description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302277
+ pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302278
+ },
302279
+ {
302280
+ id: "sql-hex-encoding",
302281
+ description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302282
+ pattern: /\b0x[0-9a-f]{4,}/i
302283
+ }
302284
+ ];
302285
+ var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302286
+ var sql_strict_default = SQL_STRICT_PATTERNS;
302287
+
302288
+ // node_modules/is-unsafe/src/index.js
302289
+ html_default.label = "HTML";
302290
+ xml_default.label = "XML";
302291
+ svg_default.label = "SVG";
302292
+ sql_default.label = "SQL";
302293
+ sql_strict_default.label = "SQL-STRICT";
302294
+ shell_default.label = "SHELL";
302295
+ redos_default.label = "REDOS";
302296
+ nosql_default.label = "NOSQL";
302297
+ log_default.label = "LOG";
302298
+ var VALID_CONTEXTS = Object.freeze({
303236
302299
  HTML: html_default,
303237
302300
  XML: xml_default,
303238
302301
  SVG: svg_default,
@@ -303242,13 +302305,7 @@ var CONTEXT_REGISTRY = {
303242
302305
  REDOS: redos_default,
303243
302306
  NOSQL: nosql_default,
303244
302307
  LOG: log_default
303245
- };
303246
- var registry_default = CONTEXT_REGISTRY;
303247
- var VALID_CONTEXTS = Object.freeze(
303248
- Object.fromEntries(Object.keys(CONTEXT_REGISTRY).map((k) => [k, k]))
303249
- );
303250
-
303251
- // node_modules/is-unsafe/src/index.js
302308
+ });
303252
302309
  function assertString(value) {
303253
302310
  if (typeof value !== "string") {
303254
302311
  throw new TypeError(
@@ -303258,36 +302315,35 @@ function assertString(value) {
303258
302315
  }
303259
302316
  function assertContext(context) {
303260
302317
  if (context instanceof RegExp) return;
303261
- if (typeof context === "string") {
303262
- if (!registry_default[context]) {
303263
- throw new TypeError(
303264
- `is-unsafe: unknown context "${context}". Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303265
- );
303266
- }
303267
- return;
303268
- }
303269
302318
  if (Array.isArray(context)) {
303270
302319
  if (context.length === 0) {
303271
- throw new TypeError("is-unsafe: context array must not be empty");
302320
+ throw new TypeError("is-unsafe: context must not be an empty array");
303272
302321
  }
303273
- for (const c of context) {
303274
- if (typeof c !== "string" || !registry_default[c]) {
303275
- throw new TypeError(
303276
- `is-unsafe: unknown context "${c}" in array. Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303277
- );
302322
+ if (Array.isArray(context[0])) {
302323
+ for (const list of context) {
302324
+ if (!Array.isArray(list) || list.length === 0) {
302325
+ throw new TypeError(
302326
+ "is-unsafe: each context in the array must be a non-empty pattern array (PatternList)"
302327
+ );
302328
+ }
303278
302329
  }
303279
302330
  }
303280
302331
  return;
303281
302332
  }
303282
302333
  throw new TypeError(
303283
- `is-unsafe: second argument must be a context string, array of context strings, or RegExp. Got: ${typeof context}`
302334
+ `is-unsafe: second argument must be a PatternList (e.g. HTML), an array of PatternLists (e.g. [HTML, XML]), or a RegExp. Got: ${typeof context}`
303284
302335
  );
303285
302336
  }
303286
- function matchContext(value, contextName) {
303287
- const patterns = registry_default[contextName];
303288
- for (const rule of patterns) {
302337
+ function normalise(context) {
302338
+ if (context instanceof RegExp) return { lists: null, regex: context };
302339
+ if (Array.isArray(context[0])) return { lists: context, regex: null };
302340
+ return { lists: [context], regex: null };
302341
+ }
302342
+ function matchList(value, list) {
302343
+ const label = list.label ?? "CUSTOM";
302344
+ for (const rule of list) {
303289
302345
  if (rule.pattern.test(value)) {
303290
- return { context: contextName, id: rule.id, description: rule.description, pattern: rule.pattern };
302346
+ return { context: label, id: rule.id, description: rule.description, pattern: rule.pattern };
303291
302347
  }
303292
302348
  }
303293
302349
  return null;
@@ -303295,14 +302351,10 @@ function matchContext(value, contextName) {
303295
302351
  function isUnsafe(value, context) {
303296
302352
  assertString(value);
303297
302353
  assertContext(context);
303298
- if (context instanceof RegExp) {
303299
- return context.test(value);
303300
- }
303301
- if (typeof context === "string") {
303302
- return matchContext(value, context) !== null;
303303
- }
303304
- for (const c of context) {
303305
- if (matchContext(value, c) !== null) return true;
302354
+ const { lists, regex } = normalise(context);
302355
+ if (regex) return regex.test(value);
302356
+ for (const list of lists) {
302357
+ if (matchList(value, list) !== null) return true;
303306
302358
  }
303307
302359
  return false;
303308
302360
  }
@@ -303351,6 +302403,7 @@ var OrderedObjParser = class {
303351
302403
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
303352
302404
  this.entityExpansionCount = 0;
303353
302405
  this.currentExpandedLength = 0;
302406
+ this.doctypefound = false;
303354
302407
  let namedEntities = { ...XML };
303355
302408
  if (this.options.entityDecoder) {
303356
302409
  this.entityDecoder = this.options.entityDecoder;
@@ -303368,7 +302421,7 @@ var OrderedObjParser = class {
303368
302421
  // onExternalEntity: (name, value) => isUnsafe(value) ? 'block' : 'allow',
303369
302422
  onInputEntity: (name, value) => (
303370
302423
  //TODO: VALID_CONTEXTS.HTML should be set only if this.options.htmlEntities
303371
- isUnsafe(value, [VALID_CONTEXTS.HTML, VALID_CONTEXTS.XML]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
302424
+ isUnsafe(value, [html_default, xml_default]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
303372
302425
  )
303373
302426
  //postCheck: resolved => resolved
303374
302427
  });
@@ -303502,6 +302555,7 @@ var parseXml = function(xmlData) {
303502
302555
  this.entityDecoder.reset();
303503
302556
  this.entityExpansionCount = 0;
303504
302557
  this.currentExpandedLength = 0;
302558
+ this.doctypefound = false;
303505
302559
  const options = this.options;
303506
302560
  const docTypeReader = new DocTypeReader(options.processEntities);
303507
302561
  const xmlLen = xmlData.length;
@@ -303564,6 +302618,8 @@ var parseXml = function(xmlData) {
303564
302618
  }
303565
302619
  i = endIndex;
303566
302620
  } else if (c1 === 33 && xmlData.charCodeAt(i + 2) === 68) {
302621
+ if (this.doctypefound) throw new Error("Multiple DOCTYPE declarations found.");
302622
+ this.doctypefound = true;
303567
302623
  const result = docTypeReader.readDocType(xmlData, i);
303568
302624
  this.entityDecoder.addInputEntities(result.entities);
303569
302625
  i = result.i;
@@ -312938,8 +311994,8 @@ function resolveInputs(env = process.env) {
312938
311994
  breakingSummaryPath: getInput2("breaking-summary-path", env),
312939
311995
  breakingLogPath: getInput2("breaking-log-path", env),
312940
311996
  governanceMappingJson: parseGovernanceMappingJson(getInput2("governance-mapping-json", env)),
312941
- postmanApiKey: getInput2("postman-api-key", env) ?? "",
312942
- postmanAccessToken: getInput2("postman-access-token", env),
311997
+ postmanApiKey: getInput2("postman-api-key", env) || env.POSTMAN_API_KEY || "",
311998
+ postmanAccessToken: getInput2("postman-access-token", env) || env.POSTMAN_ACCESS_TOKEN,
312943
311999
  credentialPreflight: parseEnumInput(
312944
312000
  "credential-preflight",
312945
312001
  getInput2("credential-preflight", env),
@@ -313101,8 +312157,8 @@ function readActionInputs(actionCore) {
313101
312157
  if (specUrl && specPath) {
313102
312158
  throw new Error("Provide either spec-url or spec-path, not both.");
313103
312159
  }
313104
- const postmanApiKey = optionalInput(actionCore, "postman-api-key") ?? "";
313105
- const postmanAccessToken = optionalInput(actionCore, "postman-access-token");
312160
+ const postmanApiKey = optionalInput(actionCore, "postman-api-key") || process.env.POSTMAN_API_KEY || "";
312161
+ const postmanAccessToken = optionalInput(actionCore, "postman-access-token") || process.env.POSTMAN_ACCESS_TOKEN;
313106
312162
  const githubToken = optionalInput(actionCore, "github-token") || process.env.GITHUB_TOKEN;
313107
312163
  const ghFallbackToken = optionalInput(actionCore, "gh-fallback-token") || process.env.GH_FALLBACK_TOKEN;
313108
312164
  if (postmanApiKey) actionCore.setSecret(postmanApiKey);