@readium/speech 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -401,7 +401,7 @@ const U = (t) => {
401
401
  ],
402
402
  testUtterance: "你好,我叫 {name},係越中文聲。"
403
403
  }
404
- }, ht = /* @__PURE__ */ new Map(), ni = /* @__PURE__ */ Object.assign({ "../../json/ar.json": () => import("./ar-CJhBAgKq.js"), "../../json/bg.json": () => import("./bg-JvP4LoOT.js"), "../../json/bho.json": () => import("./bho-CpuLBMN3.js"), "../../json/bn.json": () => import("./bn-84u93pMd.js"), "../../json/ca.json": () => import("./ca-DdScTbex.js"), "../../json/cmn.json": () => import("./cmn-Dd1zrvTE.js"), "../../json/cs.json": () => import("./cs-CDMne0uc.js"), "../../json/da.json": () => import("./da-oFf4cHgj.js"), "../../json/de.json": () => import("./de-Bjgc3bVq.js"), "../../json/el.json": () => import("./el-FkKIcghI.js"), "../../json/en.json": () => import("./en-BELFJRDQ.js"), "../../json/es.json": () => import("./es-nAmbEkcR.js"), "../../json/eu.json": () => import("./eu-DxWirHU-.js"), "../../json/fa.json": () => import("./fa-CTVUniYi.js"), "../../json/fi.json": () => import("./fi-Do6QFzRv.js"), "../../json/fr.json": () => import("./fr-B5-P9o29.js"), "../../json/gl.json": () => import("./gl-DqSXeC_F.js"), "../../json/he.json": () => import("./he-CpyNwgaH.js"), "../../json/hi.json": () => import("./hi-CeOBacbl.js"), "../../json/hr.json": () => import("./hr-CSpU18l6.js"), "../../json/hu.json": () => import("./hu-oONHmpR6.js"), "../../json/id.json": () => import("./id-BpZuB5Iw.js"), "../../json/it.json": () => import("./it-CM4X84UA.js"), "../../json/ja.json": () => import("./ja-e-iw3c4_.js"), "../../json/kk.json": () => import("./kk-BdLCAb2s.js"), "../../json/kn.json": () => import("./kn-BYRvouO5.js"), "../../json/ko.json": () => import("./ko-EIouMDK1.js"), "../../json/mr.json": () => import("./mr-DN-hwEV1.js"), "../../json/ms.json": () => import("./ms-B5E3oaWE.js"), "../../json/nb.json": () => import("./nb-DOw05HBh.js"), "../../json/nl.json": () => import("./nl-CEydw4A9.js"), "../../json/pl.json": () => import("./pl-Ivj_eAP7.js"), "../../json/pt.json": () => import("./pt-BPEGqRmW.js"), "../../json/ro.json": () => import("./ro-BQ617SOx.js"), "../../json/ru.json": () => import("./ru-Dieeph4H.js"), "../../json/sk.json": () => import("./sk-pEiOt4GQ.js"), "../../json/sl.json": () => import("./sl-Z6jWAR8J.js"), "../../json/sv.json": () => import("./sv-BT09piiZ.js"), "../../json/ta.json": () => import("./ta-B0YMGW5q.js"), "../../json/te.json": () => import("./te-ax-HNsAY.js"), "../../json/th.json": () => import("./th-C7Dbxwoz.js"), "../../json/tr.json": () => import("./tr-mipEichO.js"), "../../json/uk.json": () => import("./uk-CHdx7DHz.js"), "../../json/vi.json": () => import("./vi-DrlcEwAD.js"), "../../json/wuu.json": () => import("./wuu-C6uQvT6g.js"), "../../json/yue.json": () => import("./yue-CFroa59o.js") });
404
+ }, ut = /* @__PURE__ */ new Map(), ni = /* @__PURE__ */ Object.assign({ "../../json/ar.json": () => import("./ar-CJhBAgKq.js"), "../../json/bg.json": () => import("./bg-JvP4LoOT.js"), "../../json/bho.json": () => import("./bho-CpuLBMN3.js"), "../../json/bn.json": () => import("./bn-84u93pMd.js"), "../../json/ca.json": () => import("./ca-DdScTbex.js"), "../../json/cmn.json": () => import("./cmn-Dd1zrvTE.js"), "../../json/cs.json": () => import("./cs-CDMne0uc.js"), "../../json/da.json": () => import("./da-oFf4cHgj.js"), "../../json/de.json": () => import("./de-Bjgc3bVq.js"), "../../json/el.json": () => import("./el-FkKIcghI.js"), "../../json/en.json": () => import("./en-BELFJRDQ.js"), "../../json/es.json": () => import("./es-nAmbEkcR.js"), "../../json/eu.json": () => import("./eu-DxWirHU-.js"), "../../json/fa.json": () => import("./fa-CTVUniYi.js"), "../../json/fi.json": () => import("./fi-Do6QFzRv.js"), "../../json/fr.json": () => import("./fr-B5-P9o29.js"), "../../json/gl.json": () => import("./gl-DqSXeC_F.js"), "../../json/he.json": () => import("./he-CpyNwgaH.js"), "../../json/hi.json": () => import("./hi-CeOBacbl.js"), "../../json/hr.json": () => import("./hr-CSpU18l6.js"), "../../json/hu.json": () => import("./hu-oONHmpR6.js"), "../../json/id.json": () => import("./id-BpZuB5Iw.js"), "../../json/it.json": () => import("./it-CM4X84UA.js"), "../../json/ja.json": () => import("./ja-e-iw3c4_.js"), "../../json/kk.json": () => import("./kk-BdLCAb2s.js"), "../../json/kn.json": () => import("./kn-BYRvouO5.js"), "../../json/ko.json": () => import("./ko-EIouMDK1.js"), "../../json/mr.json": () => import("./mr-DN-hwEV1.js"), "../../json/ms.json": () => import("./ms-B5E3oaWE.js"), "../../json/nb.json": () => import("./nb-DOw05HBh.js"), "../../json/nl.json": () => import("./nl-CEydw4A9.js"), "../../json/pl.json": () => import("./pl-Ivj_eAP7.js"), "../../json/pt.json": () => import("./pt-BPEGqRmW.js"), "../../json/ro.json": () => import("./ro-BQ617SOx.js"), "../../json/ru.json": () => import("./ru-Dieeph4H.js"), "../../json/sk.json": () => import("./sk-pEiOt4GQ.js"), "../../json/sl.json": () => import("./sl-Z6jWAR8J.js"), "../../json/sv.json": () => import("./sv-BT09piiZ.js"), "../../json/ta.json": () => import("./ta-B0YMGW5q.js"), "../../json/te.json": () => import("./te-ax-HNsAY.js"), "../../json/th.json": () => import("./th-C7Dbxwoz.js"), "../../json/tr.json": () => import("./tr-mipEichO.js"), "../../json/uk.json": () => import("./uk-CHdx7DHz.js"), "../../json/vi.json": () => import("./vi-DrlcEwAD.js"), "../../json/wuu.json": () => import("./wuu-C6uQvT6g.js"), "../../json/yue.json": () => import("./yue-CFroa59o.js") });
405
405
  async function ri(t) {
406
406
  try {
407
407
  const e = t.split("-")[0], n = ni[`../../json/${e}.json`];
@@ -422,13 +422,13 @@ async function ri(t) {
422
422
  }
423
423
  }
424
424
  function dn(t) {
425
- return ht.has(t) || ht.set(t, ri(t)), ht.get(t);
425
+ return ut.has(t) || ut.set(t, ri(t)), ut.get(t);
426
426
  }
427
427
  const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "apple"], ai = (t) => ({
428
428
  ...t,
429
429
  quality: t.quality?.filter((e) => ii.includes(e)),
430
430
  localizedName: t.localizedName && si.includes(t.localizedName) ? t.localizedName : void 0
431
- }), Oe = {
431
+ }), Ae = {
432
432
  cmn: "cmn",
433
433
  "cmn-CN": "cmn-CN",
434
434
  "cmn-TW": "cmn-TW",
@@ -447,8 +447,8 @@ const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "a
447
447
  const [n, r] = e.split("-");
448
448
  e = `${n.toLowerCase()}-${r.toUpperCase()}`;
449
449
  }
450
- return Oe[e] || e;
451
- }, Nt = async (t) => {
450
+ return Ae[e] || e;
451
+ }, Rt = async (t) => {
452
452
  if (!t) return [];
453
453
  try {
454
454
  const e = D(t);
@@ -478,8 +478,8 @@ const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "a
478
478
  const e = D(t), n = j[e];
479
479
  if (n?.testUtterance)
480
480
  return n.testUtterance;
481
- if (e in Oe) {
482
- const i = Oe[e];
481
+ if (e in Ae) {
482
+ const i = Ae[e];
483
483
  if (i && j[i]?.testUtterance)
484
484
  return j[i].testUtterance;
485
485
  }
@@ -488,14 +488,14 @@ const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "a
488
488
  } catch (e) {
489
489
  return console.error(`Error in getTestUtterance for ${t}:`, e), "";
490
490
  }
491
- }, Ge = (t) => {
491
+ }, Me = (t) => {
492
492
  if (!t) return "";
493
493
  try {
494
494
  const e = D(t), n = j[e];
495
495
  if (n?.defaultRegion)
496
496
  return `${e}-${n.defaultRegion}`;
497
- if (e in Oe) {
498
- const i = Oe[e];
497
+ if (e in Ae) {
498
+ const i = Ae[e];
499
499
  if (i) {
500
500
  const s = j[i];
501
501
  if (s?.defaultRegion)
@@ -530,7 +530,7 @@ const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "a
530
530
  return g - f;
531
531
  });
532
532
  if (l.length === 0) {
533
- const d = Ge(i), [, u] = U(d);
533
+ const d = Me(i), [, u] = U(d);
534
534
  u && l.push(u);
535
535
  }
536
536
  return {
@@ -539,7 +539,7 @@ const ii = ["veryLow", "low", "normal", "high", "veryHigh"], si = ["android", "a
539
539
  };
540
540
  });
541
541
  };
542
- async function $e(t) {
542
+ async function qe(t) {
543
543
  const e = /* @__PURE__ */ new Map();
544
544
  for (const r of t) {
545
545
  if (r.source !== "json") continue;
@@ -548,7 +548,7 @@ async function $e(t) {
548
548
  }
549
549
  const n = /* @__PURE__ */ new Map();
550
550
  for (const [r, i] of e.entries()) {
551
- const s = /* @__PURE__ */ new Map(), o = await Nt(r), a = /* @__PURE__ */ new Map();
551
+ const s = /* @__PURE__ */ new Map(), o = await Rt(r), a = /* @__PURE__ */ new Map();
552
552
  o.forEach((c, l) => {
553
553
  a.set(c.name.toLowerCase(), l), c.altNames?.forEach((d) => {
554
554
  a.set(d.toLowerCase(), l);
@@ -566,21 +566,21 @@ const oi = [{ name: "Albert", nativeID: ["com.apple.speech.synthesis.voice.Alber
566
566
  voices: oi
567
567
  }, ci = [{ name: "Eddy", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Flo", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Grandma", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Grandpa", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Jacques", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Reed", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Rocko", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Sandy", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Shelley", localizedName: "apple", note: "Eloquence voices are preloaded by default on Apple devices.", language: "en-US", otherLanguages: ["en-GB", "de-DE", "fr-FR", "fr-CA", "es-ES", "es-MX", "fi-FI", "it-IT", "ja-JP", "ko-KR", "pt-BR", "zh-CN", "zh-HK"], os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Fred", language: "en-US", os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Junior", language: "en-US", os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Kathy", language: "en-US", os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "Ralph", language: "en-US", os: ["macOS", "iOS", "iPadOS"], preloaded: !0 }, { name: "eSpeak Arabic", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ar", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Bulgarian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "bg", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Bengali", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "bn", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Catalan", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ca", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Chinese (Mandarin, latin as English)", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "cmn", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Czech", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "cs", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Danish", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "da", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak German", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "de", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Greek", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "el", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Spanish (Spain)", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "es", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Estonian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "et", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Finnish", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "fi", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Gujarati", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "gu", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Croatian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "hr", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Hungarian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "hu", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Indonesian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "id", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Italian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "it", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Kannada", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "kn", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Korean", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ko", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Lithuanian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "lt", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Latvian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "lv", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Malayalm", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ml", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Marathi", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "mr", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Malay", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ms", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Norwegian Bokmål", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "nb", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Polish", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "pl", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Portuguese (Brazil)", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "pt-br", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Romanian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ro", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Russian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ru", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Slovak", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "sk", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Slovenian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "sl", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Serbian", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "sv", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Swedish", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "sv", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Swahili", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "sw", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Tamil", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "ta", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Telugu", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "te", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Turkish", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "tr", os: ["ChromeOS"], preloaded: !0 }, { name: "eSpeak Vietnamese (Northern)", note: "eSpeak voices are preloaded by default on Chrome OS.", language: "vi", os: ["ChromeOS"], preloaded: !0 }], ui = {
568
568
  voices: ci
569
- }, hi = li, di = ui, Lt = (t, e) => hi.voices.some(
569
+ }, hi = li, di = ui, Nt = (t, e) => hi.voices.some(
570
570
  (n) => t.includes(n.name) || e && n.nativeID?.some((r) => e.includes(r)) || n.altNames?.some((r) => t.includes(r))
571
571
  ), It = (t, e) => di.voices.some(
572
572
  (n) => t.includes(n.name)
573
- ) || e === "veryLow", pn = (t) => t?.length ? t.filter((e) => !(e.isNovelty || Lt(e.name, e.voiceURI))) : [], mn = (t) => t?.length ? t.filter((e) => !It(e.name, e.quality)) : [], gi = { ar: { normal: "محسن", high: "استثنائي" }, ca: { normal: "millorada", high: "prèmium" }, "cmn-CN": { normal: "优化音质", high: "高音质" }, "cmn-TW": { normal: "增強音質", high: "高音質" }, cs: { normal: "vylepšená verze", high: "prémiový" }, da: { normal: "forbedret", high: "høj kvalitet" }, de: { normal: "erweitert", high: "premium" }, el: { normal: "βελτιωμένη", high: "υψηλής ποιότητας" }, en: { normal: "Enhanced", high: "Premium" }, es: { normal: "mejorada", high: "premium" }, fi: { normal: "parannettu", high: "korkealaatuinen" }, fr: { normal: "premium", high: "de qualité" }, he: { normal: "משופר", high: "פרימיום" }, hi: { normal: "बेहतर", high: "प्रीमियम" }, hr: { normal: "poboljšani", high: "vrhunski" }, hu: { normal: "továbbfejlesztett", high: "prémium" }, id: { normal: "Ditingkatkan", high: "Premium" }, it: { normal: "ottimizzata", high: "premium" }, ja: { normal: "拡張", high: "プレミアム" }, ko: { normal: "고품질", high: "프리미엄" }, ms: { normal: "Dipertingkat", high: "Premium" }, nb: { normal: "forbedret", high: "premium" }, nl: { normal: "verbeterd", high: "premium" }, pl: { normal: "rozszerzony", high: "premium" }, pt: { normal: "melhorada", high: "premium" }, ro: { normal: "îmbunătățită", high: "premium" }, ru: { normal: "улучшенный", high: "высшее качество" }, sk: { normal: "vylepšený", high: "prémiový" }, sl: { normal: "izboljšano", high: "prvovrsten" }, sv: { normal: "förbättrad", high: "premium" }, th: { normal: "คุณภาพสูง", high: "คุณภาพสูง" }, tr: { normal: "Geliştirilmiş", high: "Yüksek Kaliteli" }, uk: { normal: "вдосконалений", high: "високої якості" }, vi: { normal: "Nâng cao", high: "Cao cấp" } }, fi = {
573
+ ) || e === "veryLow", pn = (t) => t?.length ? t.filter((e) => !(e.isNovelty || Nt(e.name, e.voiceURI))) : [], mn = (t) => t?.length ? t.filter((e) => !It(e.name, e.quality)) : [], gi = { ar: { normal: "محسن", high: "استثنائي" }, ca: { normal: "millorada", high: "prèmium" }, "cmn-CN": { normal: "优化音质", high: "高音质" }, "cmn-TW": { normal: "增強音質", high: "高音質" }, cs: { normal: "vylepšená verze", high: "prémiový" }, da: { normal: "forbedret", high: "høj kvalitet" }, de: { normal: "erweitert", high: "premium" }, el: { normal: "βελτιωμένη", high: "υψηλής ποιότητας" }, en: { normal: "Enhanced", high: "Premium" }, es: { normal: "mejorada", high: "premium" }, fi: { normal: "parannettu", high: "korkealaatuinen" }, fr: { normal: "premium", high: "de qualité" }, he: { normal: "משופר", high: "פרימיום" }, hi: { normal: "बेहतर", high: "प्रीमियम" }, hr: { normal: "poboljšani", high: "vrhunski" }, hu: { normal: "továbbfejlesztett", high: "prémium" }, id: { normal: "Ditingkatkan", high: "Premium" }, it: { normal: "ottimizzata", high: "premium" }, ja: { normal: "拡張", high: "プレミアム" }, ko: { normal: "고품질", high: "프리미엄" }, ms: { normal: "Dipertingkat", high: "Premium" }, nb: { normal: "forbedret", high: "premium" }, nl: { normal: "verbeterd", high: "premium" }, pl: { normal: "rozszerzony", high: "premium" }, pt: { normal: "melhorada", high: "premium" }, ro: { normal: "îmbunătățită", high: "premium" }, ru: { normal: "улучшенный", high: "высшее качество" }, sk: { normal: "vylepšený", high: "prémiový" }, sl: { normal: "izboljšano", high: "prvovrsten" }, sv: { normal: "förbättrad", high: "premium" }, th: { normal: "คุณภาพสูง", high: "คุณภาพสูง" }, tr: { normal: "Geliştirilmiş", high: "Yüksek Kaliteli" }, uk: { normal: "вдосконалений", high: "високої якості" }, vi: { normal: "Nâng cao", high: "Cao cấp" } }, fi = {
574
574
  quality: gi
575
- }, Pt = {
575
+ }, Lt = {
576
576
  apple: fi.quality
577
577
  // android: androidQualities.quality
578
578
  }, pi = (t, e, n) => {
579
579
  if (!t) return;
580
580
  const r = Array.isArray(n) ? n : n ? [n] : [];
581
581
  for (const i of r)
582
- if (i && Pt[i]) {
583
- const s = Pt[i], o = U(e)[0], a = s[e] || s[o];
582
+ if (i && Lt[i]) {
583
+ const s = Lt[i], o = U(e)[0], a = s[e] || s[o];
584
584
  if (a) {
585
585
  const c = t.toLowerCase(), { normal: l, high: d } = a;
586
586
  if (d && c.includes(d.toLowerCase()))
@@ -590,7 +590,7 @@ const oi = [{ name: "Albert", nativeID: ["com.apple.speech.synthesis.voice.Alber
590
590
  }
591
591
  }
592
592
  }, mi = (t, e) => {
593
- const n = Pt[e];
593
+ const n = Lt[e];
594
594
  if (n)
595
595
  for (const [r, { high: i, normal: s }] of Object.entries(n)) {
596
596
  const o = i && t.some((c) => c.includes(i)), a = s && t.some((c) => c.includes(s));
@@ -962,8 +962,8 @@ class k {
962
962
  return await Promise.all(
963
963
  e.filter((i) => i?.name && i?.lang).map(async (i) => {
964
964
  const s = D(i.lang), [o] = k.extractLangRegionFromBCP47(s), a = this.normalizeVoiceName(i.name), c = `${i.lang.toLowerCase()}_${a}`, l = n.get(c) || 1;
965
- let d = await Nt(s);
966
- (!d || d.length === 0) && (d = await Nt(o));
965
+ let d = await Rt(s);
966
+ (!d || d.length === 0) && (d = await Rt(o));
967
967
  const u = this.findMatchingJsonVoice(d, a), g = this.inferVoiceQuality(i, u, l);
968
968
  return u ? {
969
969
  ...u,
@@ -975,7 +975,7 @@ class k {
975
975
  quality: g,
976
976
  isDefault: i.default || !1,
977
977
  offlineAvailability: i.localService || !1,
978
- isNovelty: Lt(i.name, i.voiceURI),
978
+ isNovelty: Nt(i.name, i.voiceURI),
979
979
  isLowQuality: It(i.name, g)
980
980
  } : {
981
981
  source: "browser",
@@ -987,7 +987,7 @@ class k {
987
987
  quality: g,
988
988
  isDefault: i.default || !1,
989
989
  offlineAvailability: i.localService || !1,
990
- isNovelty: Lt(i.name, i.voiceURI),
990
+ isNovelty: Nt(i.name, i.voiceURI),
991
991
  isLowQuality: It(i.name, g)
992
992
  };
993
993
  })
@@ -1095,7 +1095,7 @@ class k {
1095
1095
  async sortVoicesByQuality(e) {
1096
1096
  const n = e || this.voices;
1097
1097
  if (!n?.length) return [];
1098
- const r = await $e(n);
1098
+ const r = await qe(n);
1099
1099
  return [...n].sort((i, s) => k.sortByQuality(i, s, r));
1100
1100
  }
1101
1101
  /**
@@ -1113,7 +1113,7 @@ class k {
1113
1113
  * Sort regions by default then alphabetically, sort voices by quality
1114
1114
  */
1115
1115
  static async sortByDefaultRegion(e, n) {
1116
- const r = await $e(e), i = Ge(n);
1116
+ const r = await qe(e), i = Me(n);
1117
1117
  e.sort((s, o) => {
1118
1118
  const [, a] = k.extractLangRegionFromBCP47(s.language), [, c] = k.extractLangRegionFromBCP47(o.language), l = i && a === i.split("-")[1], d = i && c === i.split("-")[1];
1119
1119
  return l && !d ? -1 : !l && d ? 1 : k.sortByQuality(s, o, r, n);
@@ -1123,13 +1123,13 @@ class k {
1123
1123
  * Sort voices alphabetically by language, then region, then quality
1124
1124
  */
1125
1125
  static async sortAlphabetically(e) {
1126
- const n = await $e(e);
1126
+ const n = await qe(e);
1127
1127
  e.sort((r, i) => {
1128
1128
  const [s] = k.extractLangRegionFromBCP47(r.language), [o] = k.extractLangRegionFromBCP47(i.language), a = k.getLanguageDisplayName(s).toLowerCase(), c = k.getLanguageDisplayName(o).toLowerCase(), l = a.localeCompare(c);
1129
1129
  if (l !== 0)
1130
1130
  return l;
1131
1131
  if (s === o) {
1132
- const d = Ge(s), [, u] = k.extractLangRegionFromBCP47(r.language), [, g] = k.extractLangRegionFromBCP47(i.language), f = d && u === d.split("-")[1], y = d && g === d.split("-")[1];
1132
+ const d = Me(s), [, u] = k.extractLangRegionFromBCP47(r.language), [, g] = k.extractLangRegionFromBCP47(i.language), f = d && u === d.split("-")[1], y = d && g === d.split("-")[1];
1133
1133
  if (f && !y) return -1;
1134
1134
  if (!f && y) return 1;
1135
1135
  if (u && g) {
@@ -1166,7 +1166,7 @@ class k {
1166
1166
  * Sort languages by region preference, then voices by quality
1167
1167
  */
1168
1168
  static async sortByPreferredRegion(e, n) {
1169
- const r = await $e(e);
1169
+ const r = await qe(e);
1170
1170
  e.sort((i, s) => {
1171
1171
  const [, o] = k.extractLangRegionFromBCP47(i.language), [, a] = k.extractLangRegionFromBCP47(s.language), c = o && n.regions.includes(o), l = a && n.regions.includes(a);
1172
1172
  if (c && l) {
@@ -1175,7 +1175,7 @@ class k {
1175
1175
  }
1176
1176
  if (c) return -1;
1177
1177
  if (l) return 1;
1178
- const d = Ge(n.baseLang), [, u] = k.extractLangRegionFromBCP47(d), g = o === u, f = a === u;
1178
+ const d = Me(n.baseLang), [, u] = k.extractLangRegionFromBCP47(d), g = o === u, f = a === u;
1179
1179
  if (g && !f) return -1;
1180
1180
  if (!g && f) return 1;
1181
1181
  if (o && a) {
@@ -1258,7 +1258,7 @@ const wi = ["webKit", "moz", "ms", "o"], Si = [
1258
1258
  const r = `on${n}`;
1259
1259
  t[r] = e && t.speechSynthesisUtterance ? be(t.speechSynthesisUtterance.prototype, r) : !1;
1260
1260
  }), t;
1261
- }, Oi = () => {
1261
+ }, Ai = () => {
1262
1262
  const e = typeof window < "u" && (window.navigator || {}).userAgent || "", n = () => /android/i.test(e), r = () => /kaios/i.test(e), i = () => typeof window.InstallTrigger < "u" ? !0 : /firefox/i.test(e), s = () => typeof window.GestureEvent < "u" || /safari/i.test(e);
1263
1263
  return {
1264
1264
  isAndroid: n(),
@@ -1267,13 +1267,13 @@ const wi = ["webKit", "moz", "ms", "o"], Si = [
1267
1267
  isKaiOS: r()
1268
1268
  };
1269
1269
  };
1270
- function Ai(t) {
1270
+ function Oi(t) {
1271
1271
  return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
1272
1272
  }
1273
- var dt, bn;
1273
+ var ht, bn;
1274
1274
  function Ti() {
1275
- if (bn) return dt;
1276
- bn = 1, dt = e;
1275
+ if (bn) return ht;
1276
+ bn = 1, ht = e;
1277
1277
  function t(r) {
1278
1278
  return r instanceof Buffer ? Buffer.from(r) : new r.constructor(r.buffer.slice(), r.byteOffset, r.length);
1279
1279
  }
@@ -1389,32 +1389,32 @@ function Ti() {
1389
1389
  return i.pop(), s.pop(), g;
1390
1390
  }
1391
1391
  }
1392
- return dt;
1392
+ return ht;
1393
1393
  }
1394
1394
  var Ri = Ti();
1395
- const cr = /* @__PURE__ */ Ai(Ri);
1396
- cr();
1397
- function qt(t) {
1395
+ const lr = /* @__PURE__ */ Oi(Ri);
1396
+ lr();
1397
+ function Pt(t) {
1398
1398
  if (t == null || typeof t != "object") return !1;
1399
1399
  let e = Object.getPrototypeOf(t);
1400
1400
  return e !== null && e !== Object.prototype && Object.getPrototypeOf(e) !== null ? !1 : !(Symbol.iterator in t) && !(Symbol.toStringTag in t);
1401
1401
  }
1402
- function re(t) {
1402
+ function ne(t) {
1403
1403
  return typeof t == "string";
1404
1404
  }
1405
1405
  function Ni(t) {
1406
1406
  return Number.isFinite(t);
1407
1407
  }
1408
- function ee(t) {
1408
+ function Y(t) {
1409
1409
  return Number.isSafeInteger(t) && t >= 0;
1410
1410
  }
1411
1411
  function G(t) {
1412
1412
  return t != null;
1413
1413
  }
1414
- function Li(t, e) {
1415
- return qt(t) && re(e) && e in t;
1414
+ function Ii(t, e) {
1415
+ return Pt(t) && ne(e) && e in t;
1416
1416
  }
1417
- var Ii = typeof globalThis == "object" && globalThis && globalThis.Object === Object && globalThis, Pi = typeof self == "object" && self && self.Object === Object && self, Wt = Ii || Pi || Function("return this")(), ue = Wt.Symbol, ur = Object.prototype, qi = ur.hasOwnProperty, $i = ur.toString, ve = ue ? ue.toStringTag : void 0;
1417
+ var Li = typeof globalThis == "object" && globalThis && globalThis.Object === Object && globalThis, Pi = typeof self == "object" && self && self.Object === Object && self, Gt = Li || Pi || Function("return this")(), ue = Gt.Symbol, cr = Object.prototype, qi = cr.hasOwnProperty, $i = cr.toString, ve = ue ? ue.toStringTag : void 0;
1418
1418
  function Di(t) {
1419
1419
  var e = qi.call(t, ve), n = t[ve];
1420
1420
  try {
@@ -1430,15 +1430,15 @@ function Ui(t) {
1430
1430
  return Bi.call(t);
1431
1431
  }
1432
1432
  var zi = "[object Null]", ji = "[object Undefined]", vn = ue ? ue.toStringTag : void 0;
1433
- function hr(t) {
1433
+ function ur(t) {
1434
1434
  return t == null ? t === void 0 ? ji : zi : vn && vn in Object(t) ? Di(t) : Ui(t);
1435
1435
  }
1436
- function dr(t) {
1436
+ function hr(t) {
1437
1437
  return t != null && typeof t == "object";
1438
1438
  }
1439
1439
  var Vi = "[object Symbol]";
1440
1440
  function Fi(t) {
1441
- return typeof t == "symbol" || dr(t) && hr(t) == Vi;
1441
+ return typeof t == "symbol" || hr(t) && ur(t) == Vi;
1442
1442
  }
1443
1443
  function Hi(t, e) {
1444
1444
  for (var n = -1, r = t == null ? 0 : t.length, i = Array(r); ++n < r; )
@@ -1446,11 +1446,11 @@ function Hi(t, e) {
1446
1446
  return i;
1447
1447
  }
1448
1448
  var Mi = Array.isArray, wn = ue ? ue.prototype : void 0, Sn = wn ? wn.toString : void 0;
1449
- function Kt(t) {
1449
+ function Wt(t) {
1450
1450
  if (typeof t == "string")
1451
1451
  return t;
1452
1452
  if (Mi(t))
1453
- return Hi(t, Kt) + "";
1453
+ return Hi(t, Wt) + "";
1454
1454
  if (Fi(t))
1455
1455
  return Sn ? Sn.call(t) : "";
1456
1456
  var e = t + "";
@@ -1466,22 +1466,22 @@ var Ki = /^\s+/;
1466
1466
  function Ji(t) {
1467
1467
  return t && t.slice(0, Wi(t) + 1).replace(Ki, "");
1468
1468
  }
1469
- function gr(t) {
1469
+ function dr(t) {
1470
1470
  var e = typeof t;
1471
1471
  return t != null && (e == "object" || e == "function");
1472
1472
  }
1473
- function fr(t) {
1473
+ function gr(t) {
1474
1474
  return t;
1475
1475
  }
1476
1476
  var Qi = "[object AsyncFunction]", Xi = "[object Function]", Zi = "[object GeneratorFunction]", Yi = "[object Proxy]";
1477
- function pr(t) {
1478
- if (!gr(t))
1477
+ function fr(t) {
1478
+ if (!dr(t))
1479
1479
  return !1;
1480
- var e = hr(t);
1480
+ var e = ur(t);
1481
1481
  return e == Xi || e == Zi || e == Qi || e == Yi;
1482
1482
  }
1483
- var gt = Wt["__core-js_shared__"], xn = (function() {
1484
- var t = /[^.]+$/.exec(gt && gt.keys && gt.keys.IE_PROTO || "");
1483
+ var dt = Gt["__core-js_shared__"], xn = (function() {
1484
+ var t = /[^.]+$/.exec(dt && dt.keys && dt.keys.IE_PROTO || "");
1485
1485
  return t ? "Symbol(src)_1." + t : "";
1486
1486
  })();
1487
1487
  function es(t) {
@@ -1505,15 +1505,15 @@ var is = /[\\^$.*+?()[\]{}|]/g, ss = /^\[object .+?Constructor\]$/, as = Functio
1505
1505
  "^" + ls.call(cs).replace(is, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
1506
1506
  );
1507
1507
  function hs(t) {
1508
- if (!gr(t) || es(t))
1508
+ if (!dr(t) || es(t))
1509
1509
  return !1;
1510
- var e = pr(t) ? us : ss;
1510
+ var e = fr(t) ? us : ss;
1511
1511
  return e.test(rs(t));
1512
1512
  }
1513
1513
  function ds(t, e) {
1514
1514
  return t?.[e];
1515
1515
  }
1516
- function Jt(t, e) {
1516
+ function Kt(t, e) {
1517
1517
  var n = ds(t, e);
1518
1518
  return hs(n) ? n : void 0;
1519
1519
  }
@@ -1550,7 +1550,7 @@ function bs(t) {
1550
1550
  }
1551
1551
  var kn = (function() {
1552
1552
  try {
1553
- var t = Jt(Object, "defineProperty");
1553
+ var t = Kt(Object, "defineProperty");
1554
1554
  return t({}, "", {}), t;
1555
1555
  } catch {
1556
1556
  }
@@ -1561,7 +1561,7 @@ var kn = (function() {
1561
1561
  value: bs(e),
1562
1562
  writable: !0
1563
1563
  });
1564
- } : fr, ws = ys(vs);
1564
+ } : gr, ws = ys(vs);
1565
1565
  function Ss(t, e, n, r) {
1566
1566
  for (var i = t.length, s = n + -1; ++s < i; )
1567
1567
  if (e(t[s], s, t))
@@ -1577,18 +1577,18 @@ function ks(t, e, n) {
1577
1577
  return r;
1578
1578
  return -1;
1579
1579
  }
1580
- function Qt(t, e, n) {
1580
+ function Jt(t, e, n) {
1581
1581
  return e === e ? ks(t, e, n) : Ss(t, xs, n);
1582
1582
  }
1583
1583
  function Cs(t, e) {
1584
1584
  var n = t == null ? 0 : t.length;
1585
- return !!n && Qt(t, e, 0) > -1;
1585
+ return !!n && Jt(t, e, 0) > -1;
1586
1586
  }
1587
1587
  function Es(t, e) {
1588
1588
  return t === e || t !== t && e !== e;
1589
1589
  }
1590
1590
  var Cn = Math.max;
1591
- function Os(t, e, n) {
1591
+ function As(t, e, n) {
1592
1592
  return e = Cn(e === void 0 ? t.length - 1 : e, 0), function() {
1593
1593
  for (var r = arguments, i = -1, s = Cn(r.length - e, 0), o = Array(s); ++i < s; )
1594
1594
  o[i] = r[e + i];
@@ -1598,28 +1598,28 @@ function Os(t, e, n) {
1598
1598
  return a[e] = n(o), gs(t, this, a);
1599
1599
  };
1600
1600
  }
1601
- function As(t, e) {
1602
- return ws(Os(t, e, fr), t + "");
1601
+ function Os(t, e) {
1602
+ return ws(As(t, e, gr), t + "");
1603
1603
  }
1604
1604
  var Ts = 9007199254740991;
1605
1605
  function Rs(t) {
1606
1606
  return typeof t == "number" && t > -1 && t % 1 == 0 && t <= Ts;
1607
1607
  }
1608
1608
  function Ns(t) {
1609
- return t != null && Rs(t.length) && !pr(t);
1609
+ return t != null && Rs(t.length) && !fr(t);
1610
1610
  }
1611
- var Ae = Jt(Object, "create");
1612
- function Ls() {
1613
- this.__data__ = Ae ? Ae(null) : {}, this.size = 0;
1611
+ var Oe = Kt(Object, "create");
1612
+ function Is() {
1613
+ this.__data__ = Oe ? Oe(null) : {}, this.size = 0;
1614
1614
  }
1615
- function Is(t) {
1615
+ function Ls(t) {
1616
1616
  var e = this.has(t) && delete this.__data__[t];
1617
1617
  return this.size -= e ? 1 : 0, e;
1618
1618
  }
1619
1619
  var Ps = "__lodash_hash_undefined__", qs = Object.prototype, $s = qs.hasOwnProperty;
1620
1620
  function Ds(t) {
1621
1621
  var e = this.__data__;
1622
- if (Ae) {
1622
+ if (Oe) {
1623
1623
  var n = e[t];
1624
1624
  return n === Ps ? void 0 : n;
1625
1625
  }
@@ -1628,29 +1628,29 @@ function Ds(t) {
1628
1628
  var _s = Object.prototype, Bs = _s.hasOwnProperty;
1629
1629
  function Us(t) {
1630
1630
  var e = this.__data__;
1631
- return Ae ? e[t] !== void 0 : Bs.call(e, t);
1631
+ return Oe ? e[t] !== void 0 : Bs.call(e, t);
1632
1632
  }
1633
1633
  var zs = "__lodash_hash_undefined__";
1634
1634
  function js(t, e) {
1635
1635
  var n = this.__data__;
1636
- return this.size += this.has(t) ? 0 : 1, n[t] = Ae && e === void 0 ? zs : e, this;
1636
+ return this.size += this.has(t) ? 0 : 1, n[t] = Oe && e === void 0 ? zs : e, this;
1637
1637
  }
1638
- function X(t) {
1638
+ function Q(t) {
1639
1639
  var e = -1, n = t == null ? 0 : t.length;
1640
1640
  for (this.clear(); ++e < n; ) {
1641
1641
  var r = t[e];
1642
1642
  this.set(r[0], r[1]);
1643
1643
  }
1644
1644
  }
1645
- X.prototype.clear = Ls;
1646
- X.prototype.delete = Is;
1647
- X.prototype.get = Ds;
1648
- X.prototype.has = Us;
1649
- X.prototype.set = js;
1645
+ Q.prototype.clear = Is;
1646
+ Q.prototype.delete = Ls;
1647
+ Q.prototype.get = Ds;
1648
+ Q.prototype.has = Us;
1649
+ Q.prototype.set = js;
1650
1650
  function Vs() {
1651
1651
  this.__data__ = [], this.size = 0;
1652
1652
  }
1653
- function at(t, e) {
1653
+ function st(t, e) {
1654
1654
  for (var n = t.length; n--; )
1655
1655
  if (Es(t[n][0], e))
1656
1656
  return n;
@@ -1658,21 +1658,21 @@ function at(t, e) {
1658
1658
  }
1659
1659
  var Fs = Array.prototype, Hs = Fs.splice;
1660
1660
  function Ms(t) {
1661
- var e = this.__data__, n = at(e, t);
1661
+ var e = this.__data__, n = st(e, t);
1662
1662
  if (n < 0)
1663
1663
  return !1;
1664
1664
  var r = e.length - 1;
1665
1665
  return n == r ? e.pop() : Hs.call(e, n, 1), --this.size, !0;
1666
1666
  }
1667
1667
  function Gs(t) {
1668
- var e = this.__data__, n = at(e, t);
1668
+ var e = this.__data__, n = st(e, t);
1669
1669
  return n < 0 ? void 0 : e[n][1];
1670
1670
  }
1671
1671
  function Ws(t) {
1672
- return at(this.__data__, t) > -1;
1672
+ return st(this.__data__, t) > -1;
1673
1673
  }
1674
1674
  function Ks(t, e) {
1675
- var n = this.__data__, r = at(n, t);
1675
+ var n = this.__data__, r = st(n, t);
1676
1676
  return r < 0 ? (++this.size, n.push([t, e])) : n[r][1] = e, this;
1677
1677
  }
1678
1678
  function ge(t) {
@@ -1687,34 +1687,34 @@ ge.prototype.delete = Ms;
1687
1687
  ge.prototype.get = Gs;
1688
1688
  ge.prototype.has = Ws;
1689
1689
  ge.prototype.set = Ks;
1690
- var Js = Jt(Wt, "Map");
1690
+ var Js = Kt(Gt, "Map");
1691
1691
  function Qs() {
1692
1692
  this.size = 0, this.__data__ = {
1693
- hash: new X(),
1693
+ hash: new Q(),
1694
1694
  map: new (Js || ge)(),
1695
- string: new X()
1695
+ string: new Q()
1696
1696
  };
1697
1697
  }
1698
1698
  function Xs(t) {
1699
1699
  var e = typeof t;
1700
1700
  return e == "string" || e == "number" || e == "symbol" || e == "boolean" ? t !== "__proto__" : t === null;
1701
1701
  }
1702
- function ot(t, e) {
1702
+ function at(t, e) {
1703
1703
  var n = t.__data__;
1704
1704
  return Xs(e) ? n[typeof e == "string" ? "string" : "hash"] : n.map;
1705
1705
  }
1706
1706
  function Zs(t) {
1707
- var e = ot(this, t).delete(t);
1707
+ var e = at(this, t).delete(t);
1708
1708
  return this.size -= e ? 1 : 0, e;
1709
1709
  }
1710
1710
  function Ys(t) {
1711
- return ot(this, t).get(t);
1711
+ return at(this, t).get(t);
1712
1712
  }
1713
1713
  function ea(t) {
1714
- return ot(this, t).has(t);
1714
+ return at(this, t).has(t);
1715
1715
  }
1716
1716
  function ta(t, e) {
1717
- var n = ot(this, t), r = n.size;
1717
+ var n = at(this, t), r = n.size;
1718
1718
  return n.set(t, e), this.size += n.size == r ? 0 : 1, this;
1719
1719
  }
1720
1720
  function fe(t) {
@@ -1730,7 +1730,7 @@ fe.prototype.get = Ys;
1730
1730
  fe.prototype.has = ea;
1731
1731
  fe.prototype.set = ta;
1732
1732
  function na(t) {
1733
- return t == null ? "" : Kt(t);
1733
+ return t == null ? "" : Wt(t);
1734
1734
  }
1735
1735
  function ra(t, e, n) {
1736
1736
  var r = -1, i = t.length;
@@ -1750,12 +1750,12 @@ function ga(t) {
1750
1750
  function fa(t) {
1751
1751
  return t.split("");
1752
1752
  }
1753
- var mr = "\\ud800-\\udfff", pa = "\\u0300-\\u036f", ma = "\\ufe20-\\ufe2f", ya = "\\u20d0-\\u20ff", ba = pa + ma + ya, va = "\\ufe0e\\ufe0f", wa = "[" + mr + "]", $t = "[" + ba + "]", Dt = "\\ud83c[\\udffb-\\udfff]", Sa = "(?:" + $t + "|" + Dt + ")", yr = "[^" + mr + "]", br = "(?:\\ud83c[\\udde6-\\uddff]){2}", vr = "[\\ud800-\\udbff][\\udc00-\\udfff]", xa = "\\u200d", wr = Sa + "?", Sr = "[" + va + "]?", ka = "(?:" + xa + "(?:" + [yr, br, vr].join("|") + ")" + Sr + wr + ")*", Ca = Sr + wr + ka, Ea = "(?:" + [yr + $t + "?", $t, br, vr, wa].join("|") + ")", Oa = RegExp(Dt + "(?=" + Dt + ")|" + Ea + Ca, "g");
1754
- function Aa(t) {
1755
- return t.match(Oa) || [];
1753
+ var pr = "\\ud800-\\udfff", pa = "\\u0300-\\u036f", ma = "\\ufe20-\\ufe2f", ya = "\\u20d0-\\u20ff", ba = pa + ma + ya, va = "\\ufe0e\\ufe0f", wa = "[" + pr + "]", qt = "[" + ba + "]", $t = "\\ud83c[\\udffb-\\udfff]", Sa = "(?:" + qt + "|" + $t + ")", mr = "[^" + pr + "]", yr = "(?:\\ud83c[\\udde6-\\uddff]){2}", br = "[\\ud800-\\udbff][\\udc00-\\udfff]", xa = "\\u200d", vr = Sa + "?", wr = "[" + va + "]?", ka = "(?:" + xa + "(?:" + [mr, yr, br].join("|") + ")" + wr + vr + ")*", Ca = wr + vr + ka, Ea = "(?:" + [mr + qt + "?", qt, yr, br, wa].join("|") + ")", Aa = RegExp($t + "(?=" + $t + ")|" + Ea + Ca, "g");
1754
+ function Oa(t) {
1755
+ return t.match(Aa) || [];
1756
1756
  }
1757
1757
  function En(t) {
1758
- return ga(t) ? Aa(t) : fa(t);
1758
+ return ga(t) ? Oa(t) : fa(t);
1759
1759
  }
1760
1760
  var Ta = "__lodash_hash_undefined__";
1761
1761
  function Ra(t) {
@@ -1764,25 +1764,25 @@ function Ra(t) {
1764
1764
  function Na(t) {
1765
1765
  return this.__data__.has(t);
1766
1766
  }
1767
- function Je(t) {
1767
+ function Ke(t) {
1768
1768
  var e = -1, n = t == null ? 0 : t.length;
1769
1769
  for (this.__data__ = new fe(); ++e < n; )
1770
1770
  this.add(t[e]);
1771
1771
  }
1772
- Je.prototype.add = Je.prototype.push = Ra;
1773
- Je.prototype.has = Na;
1774
- function La(t, e) {
1772
+ Ke.prototype.add = Ke.prototype.push = Ra;
1773
+ Ke.prototype.has = Na;
1774
+ function Ia(t, e) {
1775
1775
  return t.has(e);
1776
1776
  }
1777
- function Ia(t) {
1778
- return dr(t) && Ns(t);
1777
+ function La(t) {
1778
+ return hr(t) && Ns(t);
1779
1779
  }
1780
1780
  var Pa = 200;
1781
1781
  function qa(t, e, n, r) {
1782
1782
  var i = -1, s = Cs, o = !0, a = t.length, c = [], l = e.length;
1783
1783
  if (!a)
1784
1784
  return c;
1785
- e.length >= Pa && (s = La, o = !1, e = new Je(e));
1785
+ e.length >= Pa && (s = Ia, o = !1, e = new Ke(e));
1786
1786
  e:
1787
1787
  for (; ++i < a; ) {
1788
1788
  var d = t[i], u = d;
@@ -1796,35 +1796,35 @@ function qa(t, e, n, r) {
1796
1796
  return c;
1797
1797
  }
1798
1798
  function $a(t, e) {
1799
- for (var n = t.length; n-- && Qt(e, t[n], 0) > -1; )
1799
+ for (var n = t.length; n-- && Jt(e, t[n], 0) > -1; )
1800
1800
  ;
1801
1801
  return n;
1802
1802
  }
1803
1803
  function Da(t, e) {
1804
- for (var n = -1, r = t.length; ++n < r && Qt(e, t[n], 0) > -1; )
1804
+ for (var n = -1, r = t.length; ++n < r && Jt(e, t[n], 0) > -1; )
1805
1805
  ;
1806
1806
  return n;
1807
1807
  }
1808
- function On(t, e, n) {
1808
+ function An(t, e, n) {
1809
1809
  if (t = na(t), t && e === void 0)
1810
1810
  return Ji(t);
1811
- if (!t || !(e = Kt(e)))
1811
+ if (!t || !(e = Wt(e)))
1812
1812
  return t;
1813
1813
  var r = En(t), i = En(e), s = Da(r, i), o = $a(r, i) + 1;
1814
1814
  return ia(r, s, o).join("");
1815
1815
  }
1816
- var _a = As(function(t, e) {
1817
- return Ia(t) ? qa(t, e) : [];
1818
- }), ae = function() {
1819
- return ae = Object.assign || function(t) {
1816
+ var _a = Os(function(t, e) {
1817
+ return La(t) ? qa(t, e) : [];
1818
+ }), se = function() {
1819
+ return se = Object.assign || function(t) {
1820
1820
  for (var e, n = 1, r = arguments.length; n < r; n++) {
1821
1821
  e = arguments[n];
1822
1822
  for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
1823
1823
  }
1824
1824
  return t;
1825
- }, ae.apply(this, arguments);
1825
+ }, se.apply(this, arguments);
1826
1826
  }, Ba = "~", Ua = "~~";
1827
- function Xt(t, e) {
1827
+ function Qt(t, e) {
1828
1828
  for (var n = {}, r = {}, i = t.split(Ua), s = !1, o = 0; i.length > o; o++) {
1829
1829
  for (var a = i[o].split(Ba), c = 0; c < a.length; c += 2) {
1830
1830
  var l = a[c], d = a[c + 1], u = "&" + l + ";";
@@ -1832,16 +1832,16 @@ function Xt(t, e) {
1832
1832
  }
1833
1833
  s = !0;
1834
1834
  }
1835
- return e ? { entities: ae(ae({}, n), e.entities), characters: ae(ae({}, r), e.characters) } : { entities: n, characters: r };
1835
+ return e ? { entities: se(se({}, n), e.entities), characters: se(se({}, r), e.characters) } : { entities: n, characters: r };
1836
1836
  }
1837
- var ft = {
1837
+ var gt = {
1838
1838
  xml: /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,
1839
1839
  html4: /&notin;|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,
1840
1840
  html5: /&centerdot;|&copysr;|&divideontimes;|&gtcc;|&gtcir;|&gtdot;|&gtlPar;|&gtquest;|&gtrapprox;|&gtrarr;|&gtrdot;|&gtreqless;|&gtreqqless;|&gtrless;|&gtrsim;|&ltcc;|&ltcir;|&ltdot;|&lthree;|&ltimes;|&ltlarr;|&ltquest;|&ltrPar;|&ltri;|&ltrie;|&ltrif;|&notin;|&notinE;|&notindot;|&notinva;|&notinvb;|&notinvc;|&notni;|&notniva;|&notnivb;|&notnivc;|&parallel;|&timesb;|&timesbar;|&timesd;|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g
1841
1841
  }, he = {};
1842
- he.xml = Xt(`lt~<~gt~>~quot~"~apos~'~amp~&`);
1843
- he.html4 = Xt(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~‌~zwj~‍~lrm~‎~rlm~‏~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~­~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);
1844
- he.html5 = Xt('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~⁡~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~⁣~InvisibleTimes~⁢~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~​~NegativeThickSpace~​~NegativeThinSpace~​~NegativeVeryThinSpace~​~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~⁠~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~  ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~​~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~⁡~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~⁣~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~⁢~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®', he.html4);
1842
+ he.xml = Qt(`lt~<~gt~>~quot~"~apos~'~amp~&`);
1843
+ he.html4 = Qt(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~‌~zwj~‍~lrm~‎~rlm~‏~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~­~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);
1844
+ he.html5 = Qt('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~⁡~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~⁣~InvisibleTimes~⁢~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~​~NegativeThickSpace~​~NegativeThinSpace~​~NegativeVeryThinSpace~​~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~⁠~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~  ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~​~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~⁡~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~⁣~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~⁢~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®', he.html4);
1845
1845
  var za = {
1846
1846
  0: 65533,
1847
1847
  128: 8364,
@@ -1884,23 +1884,23 @@ var za = {
1884
1884
  }, Va = de(de({}, he), { all: he.html5 }), Fa = {
1885
1885
  scope: "body",
1886
1886
  level: "all"
1887
- }, pt = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g, mt = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g, An = {
1887
+ }, ft = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g, pt = /&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g, On = {
1888
1888
  xml: {
1889
- strict: pt,
1890
- attribute: mt,
1891
- body: ft.xml
1889
+ strict: ft,
1890
+ attribute: pt,
1891
+ body: gt.xml
1892
1892
  },
1893
1893
  html4: {
1894
- strict: pt,
1895
- attribute: mt,
1896
- body: ft.html4
1894
+ strict: ft,
1895
+ attribute: pt,
1896
+ body: gt.html4
1897
1897
  },
1898
1898
  html5: {
1899
- strict: pt,
1900
- attribute: mt,
1901
- body: ft.html5
1899
+ strict: ft,
1900
+ attribute: pt,
1901
+ body: gt.html5
1902
1902
  }
1903
- }, Ha = de(de({}, An), { all: An.html5 }), xr = String.fromCharCode, Ma = xr(65533);
1903
+ }, Ha = de(de({}, On), { all: On.html5 }), Sr = String.fromCharCode, Ma = Sr(65533);
1904
1904
  function Ga(t, e, n, r) {
1905
1905
  var i = t, s = t[t.length - 1];
1906
1906
  if (n && s === "=")
@@ -1913,7 +1913,7 @@ function Ga(t, e, n, r) {
1913
1913
  i = o;
1914
1914
  else if (t[0] === "&" && t[1] === "#") {
1915
1915
  var a = t[2], c = a == "x" || a == "X" ? parseInt(t.substr(3), 16) : parseInt(t.substr(2));
1916
- i = c >= 1114111 ? Ma : c > 65535 ? ja(c) : xr(za[c] || c);
1916
+ i = c >= 1114111 ? Ma : c > 65535 ? ja(c) : Sr(za[c] || c);
1917
1917
  }
1918
1918
  }
1919
1919
  return i;
@@ -1928,7 +1928,7 @@ function Tn(t, e) {
1928
1928
  });
1929
1929
  }
1930
1930
  var Wa = { strictlyTwoElementsInRangeArrays: !1, progressFn: null };
1931
- function Qe(t, e) {
1931
+ function Je(t, e) {
1932
1932
  if (!Array.isArray(t) || !t.length) return t;
1933
1933
  let n = { ...Wa, ...e }, r, i;
1934
1934
  if (n.strictlyTwoElementsInRangeArrays && !t.every((a, c) => !Array.isArray(a) || a.length !== 2 ? (r = c, i = a.length, !1) : !0)) throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${r}th range (${JSON.stringify(t[r], null, 4)}) has not two but ${i} elements!`);
@@ -1952,9 +1952,9 @@ function Ka(t, e) {
1952
1952
  ${JSON.stringify(e, null, 4)} (type ${typeof e})`);
1953
1953
  else r = { ...Rn };
1954
1954
  let i = t.filter((l) => Array.isArray(l)).map((l) => [...l]).filter((l) => l[2] !== void 0 || l[0] !== l[1]), s, o, a;
1955
- r.progressFn ? s = Qe(i, { progressFn: (l) => {
1955
+ r.progressFn ? s = Je(i, { progressFn: (l) => {
1956
1956
  a = Math.floor(l / 5), a !== o && (o = a, r.progressFn(a));
1957
- } }) : s = Qe(i);
1957
+ } }) : s = Je(i);
1958
1958
  let c = s.length - 1;
1959
1959
  for (let l = c; l > 0; l--) r.progressFn && (a = Math.floor((1 - l / c) * 78) + 21, a !== o && a > o && (o = a, r.progressFn(a))), (s[l][0] <= s[l - 1][0] || !r.joinRangesThatTouchEdges && s[l][0] < s[l - 1][1] || r.joinRangesThatTouchEdges && s[l][0] <= s[l - 1][1]) && (s[l - 1][0] = Math.min(s[l][0], s[l - 1][0]), s[l - 1][1] = Math.max(s[l][1], s[l - 1][1]), s[l][2] !== void 0 && (s[l - 1][0] >= s[l][0] || s[l - 1][1] <= s[l][1]) && s[l - 1][2] !== null && (s[l][2] === null && s[l - 1][2] !== null ? s[l - 1][2] = null : s[l - 1][2] != null ? +r.mergeType == 2 && s[l - 1][0] === s[l][0] ? s[l - 1][2] = s[l][2] : s[l - 1][2] += s[l][2] : s[l - 1][2] = s[l][2]), s.splice(l, 1), l = s.length);
1960
1960
  return s.length ? s : null;
@@ -1998,7 +1998,7 @@ function Za(t, e, n) {
1998
1998
  }
1999
1999
  return t;
2000
2000
  }
2001
- function yt(t, e = 1) {
2001
+ function mt(t, e = 1) {
2002
2002
  let n = " ";
2003
2003
  function r(s) {
2004
2004
  return Array.from(s).reverse().join("");
@@ -2034,7 +2034,7 @@ function yt(t, e = 1) {
2034
2034
  }
2035
2035
  return t;
2036
2036
  }
2037
- var Ln = { mergeType: 1, progressFn: null, joinRangesThatTouchEdges: !0 };
2037
+ var In = { mergeType: 1, progressFn: null, joinRangesThatTouchEdges: !0 };
2038
2038
  function Ya(t, e) {
2039
2039
  function n(l) {
2040
2040
  return !!l && typeof l == "object" && !Array.isArray(l);
@@ -2042,17 +2042,17 @@ function Ya(t, e) {
2042
2042
  if (!Array.isArray(t) || !t.length) return null;
2043
2043
  let r;
2044
2044
  if (e) if (n(e)) {
2045
- if (r = { ...Ln, ...e }, r.progressFn && n(r.progressFn) && !Object.keys(r.progressFn).length) r.progressFn = null;
2045
+ if (r = { ...In, ...e }, r.progressFn && n(r.progressFn) && !Object.keys(r.progressFn).length) r.progressFn = null;
2046
2046
  else if (r.progressFn && typeof r.progressFn != "function") throw new Error(`ranges-merge: [THROW_ID_01] resolvedOpts.progressFn must be a function! It was given of a type: "${typeof r.progressFn}", equal to ${JSON.stringify(r.progressFn, null, 4)}`);
2047
2047
  if (![1, 2, "1", "2"].includes(r.mergeType)) throw new Error(`ranges-merge: [THROW_ID_02] resolvedOpts.mergeType was customised to a wrong thing! It was given of a type: "${typeof r.mergeType}", equal to ${JSON.stringify(r.mergeType, null, 4)}`);
2048
2048
  if (typeof r.joinRangesThatTouchEdges != "boolean") throw new Error(`ranges-merge: [THROW_ID_04] resolvedOpts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof r.joinRangesThatTouchEdges}", equal to ${JSON.stringify(r.joinRangesThatTouchEdges, null, 4)}`);
2049
2049
  } else throw new Error(`ranges-merge: [THROW_ID_03] the second input argument must be a plain object. It was given as:
2050
2050
  ${JSON.stringify(e, null, 4)} (type ${typeof e})`);
2051
- else r = { ...Ln };
2051
+ else r = { ...In };
2052
2052
  let i = t.filter((l) => Array.isArray(l)).map((l) => [...l]).filter((l) => l[2] !== void 0 || l[0] !== l[1]), s, o, a;
2053
- r.progressFn ? s = Qe(i, { progressFn: (l) => {
2053
+ r.progressFn ? s = Je(i, { progressFn: (l) => {
2054
2054
  a = Math.floor(l / 5), a !== o && (o = a, r.progressFn != null && r.progressFn(a));
2055
- } }) : s = Qe(i);
2055
+ } }) : s = Je(i);
2056
2056
  let c = s.length - 1;
2057
2057
  for (let l = c; l > 0; l--) r.progressFn && (a = Math.floor((1 - l / c) * 78) + 21, a !== o && a > o && (o = a, r.progressFn(a))), (s[l][0] <= s[l - 1][0] || !r.joinRangesThatTouchEdges && s[l][0] < s[l - 1][1] || r.joinRangesThatTouchEdges && s[l][0] <= s[l - 1][1]) && (s[l - 1][0] = Math.min(s[l][0], s[l - 1][0]), s[l - 1][1] = Math.max(s[l][1], s[l - 1][1]), s[l][2] !== void 0 && (s[l - 1][0] >= s[l][0] || s[l - 1][1] <= s[l][1]) && s[l - 1][2] !== null && (s[l][2] === null && s[l - 1][2] !== null ? s[l - 1][2] = null : s[l - 1][2] != null ? +(r || {})?.mergeType == 2 && s[l - 1][0] === s[l][0] ? s[l - 1][2] = s[l][2] : s[l - 1][2] += s[l][2] : s[l - 1][2] = s[l][2]), s.splice(l, 1), l = s.length);
2058
2058
  return s.length ? s : null;
@@ -2060,8 +2060,8 @@ ${JSON.stringify(e, null, 4)} (type ${typeof e})`);
2060
2060
  var eo = { limitToBeAddedWhitespace: !1, limitLinebreaksCount: 1, mergeType: 1 }, to = class {
2061
2061
  constructor(e) {
2062
2062
  let n = { ...eo, ...e };
2063
- if (n.mergeType && n.mergeType !== 1 && n.mergeType !== 2) if (re(n.mergeType) && n.mergeType.trim() === "1") n.mergeType = 1;
2064
- else if (re(n.mergeType) && n.mergeType.trim() === "2") n.mergeType = 2;
2063
+ if (n.mergeType && n.mergeType !== 1 && n.mergeType !== 2) if (ne(n.mergeType) && n.mergeType.trim() === "1") n.mergeType = 1;
2064
+ else if (ne(n.mergeType) && n.mergeType.trim() === "2") n.mergeType = 2;
2065
2065
  else throw new Error(`ranges-push: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType, null, 4)}`);
2066
2066
  this.opts = n, this.ranges = [];
2067
2067
  }
@@ -2078,39 +2078,39 @@ var eo = { limitToBeAddedWhitespace: !1, limitLinebreaksCount: 1, mergeType: 1 }
2078
2078
  });
2079
2079
  return;
2080
2080
  }
2081
- e.length && ee(+e[0]) && ee(+e[1]) && this.add(...e);
2081
+ e.length && Y(+e[0]) && Y(+e[1]) && this.add(...e);
2082
2082
  }
2083
2083
  return;
2084
2084
  }
2085
2085
  throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_12] the first input argument, "from" is set (${JSON.stringify(e, null, 0)}) but second-one, "to" is not (${JSON.stringify(n, null, 0)})`);
2086
2086
  } else if (!G(e) && G(n)) throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_13] the second input argument, "to" is set (${JSON.stringify(n, null, 0)}) but first-one, "from" is not (${JSON.stringify(e, null, 0)})`);
2087
2087
  let i = +e, s = +n;
2088
- if (ee(i) && ee(s)) {
2089
- if (G(r) && !re(r) && !Ni(r)) throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_08] The third argument, the value to add, was given not as string but ${typeof r}, equal to:
2088
+ if (Y(i) && Y(s)) {
2089
+ if (G(r) && !ne(r) && !Ni(r)) throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_08] The third argument, the value to add, was given not as string but ${typeof r}, equal to:
2090
2090
  ${JSON.stringify(r, null, 4)}`);
2091
2091
  if (G(this.ranges) && Array.isArray(this.last()) && i === this.last()[1]) {
2092
2092
  if (this.last()[1] = s, this.last()[2], this.last()[2] !== null && G(r)) {
2093
2093
  let o = this.last()[2] && this.last()[2].length && (!this.opts?.mergeType || this.opts.mergeType === 1) ? `${this.last()[2]}${r}` : r;
2094
- this.opts.limitToBeAddedWhitespace && (o = yt(o, this.opts.limitLinebreaksCount)), re(o) && !o.length || (this.last()[2] = o);
2094
+ this.opts.limitToBeAddedWhitespace && (o = mt(o, this.opts.limitLinebreaksCount)), ne(o) && !o.length || (this.last()[2] = o);
2095
2095
  }
2096
2096
  } else {
2097
2097
  this.ranges || (this.ranges = []);
2098
- let o = r !== void 0 && !(re(r) && !r.length) ? [i, s, r && this.opts.limitToBeAddedWhitespace ? yt(r, this.opts.limitLinebreaksCount) : r] : [i, s];
2098
+ let o = r !== void 0 && !(ne(r) && !r.length) ? [i, s, r && this.opts.limitToBeAddedWhitespace ? mt(r, this.opts.limitLinebreaksCount) : r] : [i, s];
2099
2099
  this.ranges.push(o);
2100
2100
  }
2101
- } else throw ee(i) && i >= 0 ? new TypeError(`ranges-push/Ranges/add(): [THROW_ID_10] "to" value, the second input argument, must be a natural number or zero! Currently it's of a type "${typeof s}" equal to: ${JSON.stringify(s, null, 4)}`) : new TypeError(`ranges-push/Ranges/add(): [THROW_ID_09] "from" value, the first input argument, must be a natural number or zero! Currently it's of a type "${typeof i}" equal to: ${JSON.stringify(i, null, 4)}`);
2101
+ } else throw Y(i) && i >= 0 ? new TypeError(`ranges-push/Ranges/add(): [THROW_ID_10] "to" value, the second input argument, must be a natural number or zero! Currently it's of a type "${typeof s}" equal to: ${JSON.stringify(s, null, 4)}`) : new TypeError(`ranges-push/Ranges/add(): [THROW_ID_09] "from" value, the first input argument, must be a natural number or zero! Currently it's of a type "${typeof i}" equal to: ${JSON.stringify(i, null, 4)}`);
2102
2102
  }
2103
2103
  push(e, n, r) {
2104
2104
  this.add(e, n, r);
2105
2105
  }
2106
2106
  current() {
2107
- return Array.isArray(this.ranges) && this.ranges.length ? (this.ranges = Ya(this.ranges, { mergeType: this.opts.mergeType }), this.ranges && this.opts.limitToBeAddedWhitespace ? this.ranges.map((e) => G(e[2]) ? [e[0], e[1], yt(e[2], this.opts.limitLinebreaksCount)] : e) : this.ranges) : null;
2107
+ return Array.isArray(this.ranges) && this.ranges.length ? (this.ranges = Ya(this.ranges, { mergeType: this.opts.mergeType }), this.ranges && this.opts.limitToBeAddedWhitespace ? this.ranges.map((e) => G(e[2]) ? [e[0], e[1], mt(e[2], this.opts.limitLinebreaksCount)] : e) : this.ranges) : null;
2108
2108
  }
2109
2109
  wipe() {
2110
2110
  this.ranges = [];
2111
2111
  }
2112
2112
  replace(e) {
2113
- if (Array.isArray(e) && e.length) if (Array.isArray(e[0]) && ee(e[0][0])) this.ranges = Array.from(e);
2113
+ if (Array.isArray(e) && e.length) if (Array.isArray(e[0]) && Y(e[0][0])) this.ranges = Array.from(e);
2114
2114
  else throw new Error(`ranges-push/Ranges/replace(): [THROW_ID_11] Single range was given but we expected array of arrays! The first element, ${JSON.stringify(e[0], null, 4)} should be an array and its first element should be an integer, a string index.`);
2115
2115
  else this.ranges = [];
2116
2116
  }
@@ -2118,16 +2118,16 @@ ${JSON.stringify(r, null, 4)}`);
2118
2118
  return Array.isArray(this.ranges) && this.ranges.length ? this.ranges[this.ranges.length - 1] : null;
2119
2119
  }
2120
2120
  };
2121
- cr();
2122
- var bt = " ";
2121
+ lr();
2122
+ var yt = " ";
2123
2123
  function no({ str: t, idx: e = 0, stopAtNewlines: n = !1, stopAtRawNbsp: r = !1 }) {
2124
2124
  if (typeof t != "string" || !t.length || ((!e || typeof e != "number") && (e = 0), !t[e + 1])) return null;
2125
2125
  if (t[e + 1] && (t[e + 1].trim() || n && `
2126
- \r`.includes(t[e + 1]) || r && t[e + 1] === bt)) return e + 1;
2126
+ \r`.includes(t[e + 1]) || r && t[e + 1] === yt)) return e + 1;
2127
2127
  if (t[e + 2] && (t[e + 2].trim() || n && `
2128
- \r`.includes(t[e + 2]) || r && t[e + 2] === bt)) return e + 2;
2128
+ \r`.includes(t[e + 2]) || r && t[e + 2] === yt)) return e + 2;
2129
2129
  for (let i = e + 1, s = t.length; i < s; i++) if (t[i].trim() || n && `
2130
- \r`.includes(t[i]) || r && t[i] === bt) return i;
2130
+ \r`.includes(t[i]) || r && t[i] === yt) return i;
2131
2131
  return null;
2132
2132
  }
2133
2133
  function B(t, e = 0) {
@@ -2136,13 +2136,13 @@ function B(t, e = 0) {
2136
2136
  function ro(t) {
2137
2137
  return /[-_A-Za-z0-9]/.test(t);
2138
2138
  }
2139
- function In(t, e) {
2139
+ function Ln(t, e) {
2140
2140
  if (!t) return [];
2141
2141
  if (Array.isArray(t)) return t.filter((n) => typeof n == "string" && n.trim());
2142
2142
  if (typeof t == "string") return t.trim() ? [t] : [];
2143
2143
  throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_05] ${e} must be array containing zero or more strings or something falsey. Currently it's equal to: ${t}, that a type of ${typeof t}.`);
2144
2144
  }
2145
- function De(t, e, n, r) {
2145
+ function $e(t, e, n, r) {
2146
2146
  for (let i = e, s = t.length; i < s; i++) {
2147
2147
  if (t.startsWith(n, i)) return !0;
2148
2148
  if (t.startsWith(r, i)) return !1;
@@ -2150,13 +2150,13 @@ function De(t, e, n, r) {
2150
2150
  return !1;
2151
2151
  }
2152
2152
  function Pn(t, e, n) {
2153
- return t?.quotes, t?.quotes?.value && De(e, n + 1, t.quotes.value, ">"), t?.quotes?.next, De(e, t?.quotes?.next - 1, t?.quotes?.value, ">"), !t?.quotes || !De(e, n + 1, t.quotes.value, ">") && t?.quotes?.next !== -1 && De(e, t?.quotes?.next - 1, t?.quotes?.value, ">");
2153
+ return t?.quotes, t?.quotes?.value && $e(e, n + 1, t.quotes.value, ">"), t?.quotes?.next, $e(e, t?.quotes?.next - 1, t?.quotes?.value, ">"), !t?.quotes || !$e(e, n + 1, t.quotes.value, ">") && t?.quotes?.next !== -1 && $e(e, t?.quotes?.next - 1, t?.quotes?.value, ">");
2154
2154
  }
2155
2155
  function io(t, e) {
2156
2156
  return (e.match(new RegExp(t, "g")) || []).length;
2157
2157
  }
2158
- var we = /* @__PURE__ */ new Set(["!doctype", "abbr", "address", "area", "article", "aside", "audio", "base", "bdi", "bdo", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "doctype", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "math", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "param", "picture", "pre", "progress", "rb", "rp", "rt", "rtc", "ruby", "samp", "script", "section", "select", "slot", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "svg", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "ul", "var", "video", "wbr", "xml"]), vt = /* @__PURE__ */ new Set(["a", "b", "i", "p", "q", "s", "u"]), wt = /* @__PURE__ */ new Set([".", ",", ";", "!", "?"]), qn = /* @__PURE__ */ new Set([".", ",", "?", ";", ")", "…", '"', "»"]), so = /* @__PURE__ */ new Set(["a", "abbr", "acronym", "audio", "b", "bdi", "bdo", "big", "button", "canvas", "cite", "code", "data", "datalist", "del", "dfn", "em", "embed", "i", "iframe", "input", "ins", "kbd", "label", "map", "mark", "meter", "noscript", "object", "output", "picture", "progress", "q", "ruby", "s", "samp", "select", "slot", "small", "span", "strong", "sub", "sup", "svg", "template", "textarea", "time", "u", "tt", "var", "video", "wbr"]), $n = { ignoreTags: [], ignoreTagsWithTheirContents: [], onlyStripTags: [], stripTogetherWithTheirContents: ["script", "style", "xml"], skipHtmlDecoding: !1, trimOnlySpaces: !1, stripRecognisedHTMLOnly: !1, dumpLinkHrefsNearby: { enabled: !1, putOnNewLine: !1, wrapHeads: "", wrapTails: "" }, ignoreIndentations: !1, cb: null, reportProgressFunc: null, reportProgressFuncFrom: 0, reportProgressFuncTo: 100 };
2159
- function kr(t, e) {
2158
+ var we = /* @__PURE__ */ new Set(["!doctype", "abbr", "address", "area", "article", "aside", "audio", "base", "bdi", "bdo", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "doctype", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "math", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "param", "picture", "pre", "progress", "rb", "rp", "rt", "rtc", "ruby", "samp", "script", "section", "select", "slot", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "svg", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "ul", "var", "video", "wbr", "xml"]), bt = /* @__PURE__ */ new Set(["a", "b", "i", "p", "q", "s", "u"]), vt = /* @__PURE__ */ new Set([".", ",", ";", "!", "?"]), qn = /* @__PURE__ */ new Set([".", ",", "?", ";", ")", "…", '"', "»"]), so = /* @__PURE__ */ new Set(["a", "abbr", "acronym", "audio", "b", "bdi", "bdo", "big", "button", "canvas", "cite", "code", "data", "datalist", "del", "dfn", "em", "embed", "i", "iframe", "input", "ins", "kbd", "label", "map", "mark", "meter", "noscript", "object", "output", "picture", "progress", "q", "ruby", "s", "samp", "select", "slot", "small", "span", "strong", "sub", "sup", "svg", "template", "textarea", "time", "u", "tt", "var", "video", "wbr"]), $n = { ignoreTags: [], ignoreTagsWithTheirContents: [], onlyStripTags: [], stripTogetherWithTheirContents: ["script", "style", "xml"], skipHtmlDecoding: !1, trimOnlySpaces: !1, stripRecognisedHTMLOnly: !1, dumpLinkHrefsNearby: { enabled: !1, putOnNewLine: !1, wrapHeads: "", wrapTails: "" }, ignoreIndentations: !1, cb: null, reportProgressFunc: null, reportProgressFuncFrom: 0, reportProgressFuncTo: 100 };
2159
+ function xr(t, e) {
2160
2160
  let n = Date.now(), r = [], i = [], s = [], o = [], a = {};
2161
2161
  function c() {
2162
2162
  a = { attributes: [] };
@@ -2166,7 +2166,7 @@ function kr(t, e) {
2166
2166
  function C(h, v, x) {
2167
2167
  if (Array.isArray(v.stripTogetherWithTheirContents) && (v.stripTogetherWithTheirContents.includes(a.name) || v.stripTogetherWithTheirContents.includes("*"))) if (a.slashPresent && Array.isArray(r) && r.some((S) => S.name === a.name)) {
2168
2168
  for (let S = r.length; S--; ) if (r[S].name === a.name) {
2169
- o = o.filter(([T, L]) => (T < r[S].lastOpeningBracketAt || T >= h + 1) && (L <= r[S].lastOpeningBracketAt || L > h + 1));
2169
+ o = o.filter(([T, I]) => (T < r[S].lastOpeningBracketAt || T >= h + 1) && (I <= r[S].lastOpeningBracketAt || I > h + 1));
2170
2170
  let R = h + 1;
2171
2171
  a.lastClosingBracketAt && (R = a.lastClosingBracketAt + 1), o.push([r[S].lastOpeningBracketAt, R]), qn.has(t[h]) && v.cb ? v.cb({ tag: a, deleteFrom: r[S].lastOpeningBracketAt, deleteTo: h + 1, insert: null, rangesArr: x, proposedReturn: [r[S].lastOpeningBracketAt, h, null] }) : v.cb && v.cb({ tag: a, deleteFrom: r[S].lastOpeningBracketAt, deleteTo: h, insert: "", rangesArr: x, proposedReturn: [r[S].lastOpeningBracketAt, h, ""] }), r.splice(S, 1);
2172
2172
  break;
@@ -2175,17 +2175,17 @@ function kr(t, e) {
2175
2175
  else Array.isArray(v.ignoreTagsWithTheirContents) && pe(h, v, a) && (E = !1);
2176
2176
  }
2177
2177
  function N(h, v, x, S, R, T) {
2178
- if (Array.isArray(A.current()) && typeof x == "number" && A.current()[0][0] === 0 && A.current()[0][1] >= x) return "";
2178
+ if (Array.isArray(O.current()) && typeof x == "number" && O.current()[0][0] === 0 && O.current()[0][1] >= x) return "";
2179
2179
  if (t.length === S && T && !b?.dumpLinkHrefsNearby?.enabled) return null;
2180
- let L = "";
2181
- if (Number.isInteger(x) && x < R && (L += h.slice(x, R)), Number.isInteger(S) && S > T + 1) {
2180
+ let I = "";
2181
+ if (Number.isInteger(x) && x < R && (I += h.slice(x, R)), Number.isInteger(S) && S > T + 1) {
2182
2182
  let z = h.slice(T + 1, S);
2183
2183
  S && !B(t, S - 1) && (z = z.trimEnd()), z.includes(`
2184
- `) && P(S, h) ? L += " " : L += z;
2184
+ `) && P(S, h) ? I += " " : I += z;
2185
2185
  }
2186
- let Y = !qn.has(h[v]), un = h[S - 1] !== ">" || !h[x].trim(), hn = !['"', "("].includes(h[R - 1]), ti = ![";", ".", ":", "!"].includes(h[v]);
2187
- if ((Y || un && hn && ti) && (un || hn) && h[v] !== "!" && (!so.has(a.name) || typeof x == "number" && x < R || typeof S == "number" && S > T + 1)) {
2188
- let z = L.match(/\n/g);
2186
+ let Z = !qn.has(h[v]), un = h[S - 1] !== ">" || !h[x].trim(), hn = !['"', "("].includes(h[R - 1]), ti = ![";", ".", ":", "!"].includes(h[v]);
2187
+ if ((Z || un && hn && ti) && (un || hn) && h[v] !== "!" && (!so.has(a.name) || typeof x == "number" && x < R || typeof S == "number" && S > T + 1)) {
2188
+ let z = I.match(/\n/g);
2189
2189
  return Array.isArray(z) && z.length ? z.length === 1 ? `
2190
2190
  ` : z.length === 2 ? `
2191
2191
 
@@ -2196,7 +2196,7 @@ function kr(t, e) {
2196
2196
  }
2197
2197
  return "";
2198
2198
  }
2199
- function I(h, v) {
2199
+ function L(h, v) {
2200
2200
  if (h.dumpLinkHrefsNearby?.enabled && y.tagName && y.tagName === a.name && a.lastOpeningBracketAt && (y.openingTagEnds && a.lastOpeningBracketAt > y.openingTagEnds || !y.openingTagEnds) && (m = !0), m) {
2201
2201
  let x = h.dumpLinkHrefsNearby?.putOnNewLine ? `
2202
2202
 
@@ -2217,7 +2217,7 @@ function kr(t, e) {
2217
2217
  }
2218
2218
  if (typeof t != "string") throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_01] Input must be string! Currently it's: ${(typeof t).toLowerCase()}, equal to:
2219
2219
  ${JSON.stringify(t, null, 4)}`);
2220
- if (e) if (qt(e)) {
2220
+ if (e) if (Pt(e)) {
2221
2221
  if (e.reportProgressFunc && typeof e.reportProgressFunc != "function") throw new Error(`string-strip-html/stripHtml(): [THROW_ID_03] The Optional Options Object's key reportProgressFunc, callback function, should be a function but it was given as type ${typeof e.reportProgressFunc}, equal to ${JSON.stringify(e.reportProgressFunc, null, 4)}`);
2222
2222
  if (typeof e.dumpLinkHrefsNearby == "boolean" && e.dumpLinkHrefsNearby != null) throw new Error(`string-strip-html/stripHtml(): [THROW_ID_04] The Optional Options Object's key should be a plain object but it was given as type ${typeof e.dumpLinkHrefsNearby}, equal to ${JSON.stringify(e.dumpLinkHrefsNearby, null, 4)}`);
2223
2223
  } else throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_02] Optional Options Object must be a plain object! Currently it's: ${(typeof e).toLowerCase()}, equal to:
@@ -2226,12 +2226,12 @@ ${JSON.stringify(e, null, 4)}`);
2226
2226
  m && (y = { tagName: "", hrefValue: "", openingTagEnds: void 0 }, m = !1);
2227
2227
  }
2228
2228
  let b = { ...$n, ...e, dumpLinkHrefsNearby: Object.assign({}, $n.dumpLinkHrefsNearby, e?.dumpLinkHrefsNearby) };
2229
- if (Li(b, "returnRangesOnly")) throw new TypeError("string-strip-html/stripHtml(): [THROW_ID_05] The Optional Options Object's key returnRangesOnly has been removed from the API since v.5 release.");
2229
+ if (Ii(b, "returnRangesOnly")) throw new TypeError("string-strip-html/stripHtml(): [THROW_ID_05] The Optional Options Object's key returnRangesOnly has been removed from the API since v.5 release.");
2230
2230
  if (b.reportProgressFunc) {
2231
2231
  if (typeof b.reportProgressFuncFrom != "number") throw new Error(`string-strip-html/stripHtml(): [THROW_ID_06] The Optional Options Object's key reportProgressFuncFrom, callback function's "from" range, should be a number but it was given as type ${typeof b.reportProgressFuncFrom}, equal to ${JSON.stringify(b.reportProgressFuncFrom, null, 4)}`);
2232
2232
  if (typeof b.reportProgressFuncTo != "number") throw new Error(`string-strip-html/stripHtml(): [THROW_ID_07] The Optional Options Object's key reportProgressFuncTo, callback function's "to" range, should be a number but it was given as type ${typeof b.reportProgressFuncTo}, equal to ${JSON.stringify(b.reportProgressFuncTo, null, 4)}`);
2233
2233
  }
2234
- b.ignoreTags = In(b.ignoreTags, "resolvedOpts.ignoreTags"), b.onlyStripTags = In(b.onlyStripTags, "resolvedOpts.onlyStripTags");
2234
+ b.ignoreTags = Ln(b.ignoreTags, "resolvedOpts.ignoreTags"), b.onlyStripTags = Ln(b.onlyStripTags, "resolvedOpts.onlyStripTags");
2235
2235
  let ln = !!b.onlyStripTags.length;
2236
2236
  b.onlyStripTags.length && b.ignoreTags.length && (b.onlyStripTags = _a(b.onlyStripTags, ...b.ignoreTags)), b.stripTogetherWithTheirContents ? typeof b.stripTogetherWithTheirContents == "string" && b.stripTogetherWithTheirContents.length && (b.stripTogetherWithTheirContents = [b.stripTogetherWithTheirContents]) : b.stripTogetherWithTheirContents = [];
2237
2237
  let ye = {};
@@ -2239,11 +2239,11 @@ ${JSON.stringify(e, null, 4)}`);
2239
2239
  b.cb || (b.cb = ({ rangesArr: h, proposedReturn: v }) => {
2240
2240
  v && h.push(...v);
2241
2241
  });
2242
- let A = new to({ limitToBeAddedWhitespace: !0, limitLinebreaksCount: 2 });
2242
+ let O = new to({ limitToBeAddedWhitespace: !0, limitLinebreaksCount: 2 });
2243
2243
  if (!b.skipHtmlDecoding) for (; t !== Tn(t, { scope: "strict" }); ) t = Tn(t, { scope: "strict" });
2244
- let J = !1, H = !1, qe = 0, cn = 0, $ = t.length, ei = Math.floor($ / 2);
2244
+ let J = !1, H = !1, Pe = 0, cn = 0, $ = t.length, ei = Math.floor($ / 2);
2245
2245
  for (let h = 0; h < $; h++) {
2246
- if (b.reportProgressFunc && ($ > 1e3 && $ < 2e3 ? h === ei && b.reportProgressFunc(Math.floor((b.reportProgressFuncTo - b.reportProgressFuncFrom) / 2)) : $ >= 2e3 && (qe = b.reportProgressFuncFrom + Math.floor(h / $ * (b.reportProgressFuncTo - b.reportProgressFuncFrom)), qe !== cn && (cn = qe, b.reportProgressFunc(qe)))), Object.keys(a).length > 1 && a.lastClosingBracketAt && a.lastClosingBracketAt < h && t[h] !== " " && w === null && (w = h), !J && t[h] === "%" && t[h - 1] === "{" && t.includes("%}", h + 1)) {
2246
+ if (b.reportProgressFunc && ($ > 1e3 && $ < 2e3 ? h === ei && b.reportProgressFunc(Math.floor((b.reportProgressFuncTo - b.reportProgressFuncFrom) / 2)) : $ >= 2e3 && (Pe = b.reportProgressFuncFrom + Math.floor(h / $ * (b.reportProgressFuncTo - b.reportProgressFuncFrom)), Pe !== cn && (cn = Pe, b.reportProgressFunc(Pe)))), Object.keys(a).length > 1 && a.lastClosingBracketAt && a.lastClosingBracketAt < h && t[h] !== " " && w === null && (w = h), !J && t[h] === "%" && t[h - 1] === "{" && t.includes("%}", h + 1)) {
2247
2247
  u = null;
2248
2248
  let v = t.indexOf("%}", h) - 1;
2249
2249
  if (v > h) {
@@ -2254,16 +2254,16 @@ ${JSON.stringify(e, null, 4)}`);
2254
2254
  if (!J && _(h) && (!a || Object.keys(a).length < 2) && h > 1) {
2255
2255
  for (let v = h; v--; ) if (t[v - 1] === void 0 || _(v)) {
2256
2256
  let x = t[v - 1] === void 0 ? v : v + 1, S = t.slice(x, h + 1) || "";
2257
- if ((S.includes("/>") || S.includes("/ >") || S.includes('="') || S.includes("='")) && t !== `<${On(S.trim(), "/>")}>` && [...we].some((R) => On(S.trim().split(/\s+/).filter((T) => T.trim()).filter((T, L) => L === 0), "/>").toLowerCase() === R) && kr(`<${S.trim()}>`, b).result === "") {
2257
+ if ((S.includes("/>") || S.includes("/ >") || S.includes('="') || S.includes("='")) && t !== `<${An(S.trim(), "/>")}>` && [...we].some((R) => An(S.trim().split(/\s+/).filter((T) => T.trim()).filter((T, I) => I === 0), "/>").toLowerCase() === R) && xr(`<${S.trim()}>`, b).result === "") {
2258
2258
  (!s.length || s[s.length - 1][0] !== a.lastOpeningBracketAt) && s.push([x, h + 1]), (!o.length || o[o.length - 1][0] !== a.lastOpeningBracketAt) && o.push([x, h + 1]);
2259
2259
  let R = N(t, h, x, h + 1, x, h + 1), T = h + 1;
2260
2260
  if (t[T] && !t[T].trim()) {
2261
- for (let L = T; L < $; L++) if (t[L].trim()) {
2262
- T = L;
2261
+ for (let I = T; I < $; I++) if (t[I].trim()) {
2262
+ T = I;
2263
2263
  break;
2264
2264
  }
2265
2265
  }
2266
- b.cb({ tag: a, deleteFrom: x, deleteTo: T, insert: R, rangesArr: A, proposedReturn: [x, T, R] });
2266
+ b.cb({ tag: a, deleteFrom: x, deleteTo: T, insert: R, rangesArr: O, proposedReturn: [x, T, R] });
2267
2267
  }
2268
2268
  break;
2269
2269
  }
@@ -2283,9 +2283,9 @@ ${JSON.stringify(e, null, 4)}`);
2283
2283
  continue;
2284
2284
  }
2285
2285
  if (typeof a.name == "string" && a.name.toLowerCase() === "doctype" && (H = !0), P(h)) {
2286
- I(b);
2286
+ L(b);
2287
2287
  let v = N(t, h, a.leftOuterWhitespace, h, a.lastOpeningBracketAt, h);
2288
- (b.stripTogetherWithTheirContents.includes(a.name) || b.stripTogetherWithTheirContents.includes("*")) && (o = o.filter(([x, S]) => !(x === a.leftOuterWhitespace && S === h))), b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h, insert: `${v}${p}${v}`, rangesArr: A, proposedReturn: [a.leftOuterWhitespace, h, `${v}${p}${v}`] }), me(), C(h, b, A);
2288
+ (b.stripTogetherWithTheirContents.includes(a.name) || b.stripTogetherWithTheirContents.includes("*")) && (o = o.filter(([x, S]) => !(x === a.leftOuterWhitespace && S === h))), b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h, insert: `${v}${p}${v}`, rangesArr: O, proposedReturn: [a.leftOuterWhitespace, h, `${v}${p}${v}`] }), me(), C(h, b, O);
2289
2289
  }
2290
2290
  }
2291
2291
  if (a.quotes?.start && a.quotes.start < h && !a.quotes.end && f.nameEnds && f.equalsAt && !f.valueStarts && (f.valueStarts = h), !a.quotes && f.nameEnds && t[h] === "=" && !f.valueStarts && !f.equalsAt && (f.equalsAt = h), !a.quotes && f.nameStarts && f.nameEnds && !f.valueStarts && t[h].trim() && t[h] !== "=" && (a.attributes.push(f), f = {}), !a.quotes && f.nameStarts && !f.nameEnds && (H && `'"`.includes(t[f.nameStarts]) ? f.nameStarts < h && t[h] === t[f.nameStarts] && (f.nameEnds = h + 1, f.name = t.slice(f.nameStarts, f.nameEnds)) : t[h].trim() ? t[h] === "=" ? f.equalsAt || (f.nameEnds = h, f.equalsAt = h, f.name = t.slice(f.nameStarts, f.nameEnds)) : t[h] === "/" || _(h) ? (f.nameEnds = h, f.name = t.slice(f.nameStarts, f.nameEnds), a.attributes.push(f), f = {}) : P(h) && (f.nameEnds = h, f.name = t.slice(f.nameStarts, f.nameEnds), a.attributes.push(f), f = {}) : (f.nameEnds = h, f.name = t.slice(f.nameStarts, f.nameEnds))), !a.quotes && a.nameEnds < h && !t[h - 1].trim() && t[h].trim() && !"<>/!".includes(t[h]) && !f.nameStarts && !a.lastClosingBracketAt && (f.nameStarts = h), a.lastOpeningBracketAt !== null && a.lastOpeningBracketAt < h && t[h] === "/" && a.onlyPlausible && (a.onlyPlausible = !1), a.lastOpeningBracketAt !== null && a.lastOpeningBracketAt < h && t[h] !== "/" && (a.onlyPlausible === void 0 && ((!t[h].trim() || P(h)) && !a.slashPresent ? a.onlyPlausible = !0 : a.onlyPlausible = !1), t[h].trim() && a.nameStarts === void 0 && !P(h) && t[h] !== "/" && !_(h) && t[h] !== "!" && (a.nameStarts = h, a.nameContainsLetters = !1)), a.nameStarts && !a.quotes && typeof t[h] == "string" && t[h].toLowerCase() !== t[h].toUpperCase() && (a.nameContainsLetters = !0), _(h) && (Pn(a, t, h) || a.quotes.value && typeof a.lastOpeningBracketAt == "number" && io(a.quotes.value, t.slice(a.lastOpeningBracketAt, h)) % 2 === 1 && !t.slice(a.lastOpeningBracketAt + 1, h).includes("<") && !t.slice(a.lastOpeningBracketAt + 1, h).includes(">")) && a.lastOpeningBracketAt !== void 0 && (a.lastClosingBracketAt = h, w = null, Object.keys(f).length && (a.attributes.push(f), f = {}), b.dumpLinkHrefsNearby?.enabled && y.tagName && !y.openingTagEnds && (y.openingTagEnds = h)), (!H || t[h] === ">") && a.lastOpeningBracketAt !== void 0) {
@@ -2295,12 +2295,12 @@ ${JSON.stringify(e, null, 4)}`);
2295
2295
  a = {}, f = {};
2296
2296
  continue;
2297
2297
  }
2298
- if ((we.has(a.name) || vt.has(a.name)) && (a.onlyPlausible === !1 || a.onlyPlausible === !0 && a.attributes.length) || t[h + 1] === void 0) {
2299
- I(b);
2298
+ if ((we.has(a.name) || bt.has(a.name)) && (a.onlyPlausible === !1 || a.onlyPlausible === !0 && a.attributes.length) || t[h + 1] === void 0) {
2299
+ L(b);
2300
2300
  let v = N(t, h, a.leftOuterWhitespace, h + 1, a.lastOpeningBracketAt, a.lastClosingBracketAt);
2301
2301
  J && a.name === "script" && a.slashPresent && (J = !1);
2302
2302
  let x;
2303
- v === null || p === null ? x = null : x = `${v}${p}${v}`, b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h + 1, insert: x, rangesArr: A, proposedReturn: [a.leftOuterWhitespace, h + 1, x] }), me(), C(h, b, A);
2303
+ v === null || p === null ? x = null : x = `${v}${p}${v}`, b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h + 1, insert: x, rangesArr: O, proposedReturn: [a.leftOuterWhitespace, h + 1, x] }), me(), C(h, b, O);
2304
2304
  }
2305
2305
  if (!o.length || o[o.length - 1][0] !== a.lastOpeningBracketAt && o[o.length - 1][1] !== h + 1) if (b.stripTogetherWithTheirContents.includes(a.name) || b.stripTogetherWithTheirContents.includes("*")) {
2306
2306
  let v;
@@ -2313,7 +2313,7 @@ ${JSON.stringify(e, null, 4)}`);
2313
2313
  let v = a.lastClosingBracketAt === h ? h + 1 : h;
2314
2314
  b.trimOnlySpaces && v === $ - 1 && w !== null && w < h && (v = w), (!s.length || s[s.length - 1][0] !== a.lastOpeningBracketAt) && s.push([a.lastOpeningBracketAt, a.lastClosingBracketAt + 1]);
2315
2315
  let x = b.ignoreTags.includes(a.name), S = pe(h, b, a);
2316
- if (!E || b.stripRecognisedHTMLOnly && typeof a.name == "string" && !we.has(a.name.toLowerCase()) && !vt.has(a.name.toLowerCase()) || !ln && (x || S) || ln && !b.onlyStripTags.includes(a.name) || b.ignoreTagsWithTheirContents.includes(a.name)) {
2316
+ if (!E || b.stripRecognisedHTMLOnly && typeof a.name == "string" && !we.has(a.name.toLowerCase()) && !bt.has(a.name.toLowerCase()) || !ln && (x || S) || ln && !b.onlyStripTags.includes(a.name) || b.ignoreTagsWithTheirContents.includes(a.name)) {
2317
2317
  if (S) if (a.slashPresent) {
2318
2318
  for (let R = i.length; R--; ) if (i[R].name === a.name) {
2319
2319
  i.splice(R, 1);
@@ -2321,24 +2321,24 @@ ${JSON.stringify(e, null, 4)}`);
2321
2321
  }
2322
2322
  i.length || (E = !0);
2323
2323
  } else E && (E = !1), i.push(a);
2324
- b.cb({ tag: a, deleteFrom: null, deleteTo: null, insert: null, rangesArr: A, proposedReturn: null }), a = {}, f = {};
2325
- } else if (!a.onlyPlausible || a.attributes.length === 0 && a.name && (we.has(a.name.toLowerCase()) || vt.has(a.name.toLowerCase())) || a.attributes?.some((R) => R.equalsAt)) {
2324
+ b.cb({ tag: a, deleteFrom: null, deleteTo: null, insert: null, rangesArr: O, proposedReturn: null }), a = {}, f = {};
2325
+ } else if (!a.onlyPlausible || a.attributes.length === 0 && a.name && (we.has(a.name.toLowerCase()) || bt.has(a.name.toLowerCase())) || a.attributes?.some((R) => R.equalsAt)) {
2326
2326
  (!o.length || o[o.length - 1][0] !== a.lastOpeningBracketAt) && o.push([a.lastOpeningBracketAt, a.lastClosingBracketAt + 1]);
2327
2327
  let R = N(t, h, a.leftOuterWhitespace, v, a.lastOpeningBracketAt, a.lastClosingBracketAt);
2328
- p = "", m = !1, I(b, v);
2328
+ p = "", m = !1, L(b, v);
2329
2329
  let T;
2330
2330
  typeof p == "string" && p.length ? (T = `${R}${p}${R === `
2331
2331
 
2332
2332
  ` ? `
2333
- ` : R}`, v === a.lastClosingBracketAt + 1 && (!t[v] || !wt.has(t[v])) && (T += " "), a.leftOuterWhitespace === a.lastOpeningBracketAt && A.last() && A.last()[1] < a.lastOpeningBracketAt && (!b?.dumpLinkHrefsNearby?.putOnNewLine || !wt.has(t[v])) && (T = " " + T)) : T = R, T !== null && (a.leftOuterWhitespace === 0 || !B(t, v - 1)) && (!b.dumpLinkHrefsNearby?.enabled || a.name !== "a") && (T = void 0);
2334
- let L = 0;
2335
- if (m && wt.has(t[v])) {
2333
+ ` : R}`, v === a.lastClosingBracketAt + 1 && (!t[v] || !vt.has(t[v])) && (T += " "), a.leftOuterWhitespace === a.lastOpeningBracketAt && O.last() && O.last()[1] < a.lastOpeningBracketAt && (!b?.dumpLinkHrefsNearby?.putOnNewLine || !vt.has(t[v])) && (T = " " + T)) : T = R, T !== null && (a.leftOuterWhitespace === 0 || !B(t, v - 1)) && (!b.dumpLinkHrefsNearby?.enabled || a.name !== "a") && (T = void 0);
2334
+ let I = 0;
2335
+ if (m && vt.has(t[v])) {
2336
2336
  b.dumpLinkHrefsNearby?.putOnNewLine && (T = `${t[v]}${T || ""}`);
2337
- let Y = B(t, v);
2338
- Y && T?.endsWith(`
2339
- `) ? L += Y - h : (!Y || Y > h) && L++;
2337
+ let Z = B(t, v);
2338
+ Z && T?.endsWith(`
2339
+ `) ? I += Z - h : (!Z || Z > h) && I++;
2340
2340
  }
2341
- b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: v + L, insert: T, rangesArr: A, proposedReturn: [a.leftOuterWhitespace, v + L, T] }), me(), C(h, b, A);
2341
+ b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: v + I, insert: T, rangesArr: O, proposedReturn: [a.leftOuterWhitespace, v + I, T] }), me(), C(h, b, O);
2342
2342
  } else a = {};
2343
2343
  _(h) || (a = {});
2344
2344
  }
@@ -2348,7 +2348,7 @@ ${JSON.stringify(e, null, 4)}`);
2348
2348
  if (_(B(t, h))) continue;
2349
2349
  if (a.nameEnds && a.nameEnds < h && !a.lastClosingBracketAt && (a.onlyPlausible === !0 && a.attributes?.length || a.onlyPlausible === !1)) {
2350
2350
  let v = N(t, h, a.leftOuterWhitespace, h, a.lastOpeningBracketAt, h);
2351
- b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h, insert: v, rangesArr: A, proposedReturn: [a.leftOuterWhitespace, h, v] }), C(h, b, A), a = {}, f = {};
2351
+ b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: h, insert: v, rangesArr: O, proposedReturn: [a.leftOuterWhitespace, h, v] }), C(h, b, O), a = {}, f = {};
2352
2352
  }
2353
2353
  if (a.lastOpeningBracketAt !== void 0 && a.onlyPlausible && a.name && !a.quotes && (a.lastOpeningBracketAt = void 0, a.name = void 0, a.onlyPlausible = !1), (a.lastOpeningBracketAt === void 0 || !a.onlyPlausible) && !a.quotes && (a.lastOpeningBracketAt = h, a.slashPresent = !1, a.attributes = [], l === null ? a.leftOuterWhitespace = h : b.trimOnlySpaces && l === 0 ? a.leftOuterWhitespace = d || h : a.leftOuterWhitespace = l, `${t[h + 1]}${t[h + 2]}${t[h + 3]}` == "!--" || `${t[h + 1]}${t[h + 2]}${t[h + 3]}${t[h + 4]}${t[h + 5]}${t[h + 6]}${t[h + 7]}${t[h + 8]}` == "![CDATA[")) {
2354
2354
  let v = !0;
@@ -2358,32 +2358,32 @@ ${JSON.stringify(e, null, 4)}`);
2358
2358
  let R = S;
2359
2359
  (t[S + 1] === void 0 && !t[S].trim() || t[S] === ">") && (R += 1), (!s.length || s[s.length - 1][0] !== a.lastOpeningBracketAt) && s.push([a.lastOpeningBracketAt, x + 1]), (!o.length || o[o.length - 1][0] !== a.lastOpeningBracketAt) && o.push([a.lastOpeningBracketAt, x + 1]);
2360
2360
  let T = N(t, S, a.leftOuterWhitespace, R, a.lastOpeningBracketAt, x);
2361
- b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: R, insert: T, rangesArr: A, proposedReturn: [a.leftOuterWhitespace, R, T] }), h = S - 1, t[S] === ">" && (h = S), a = {}, f = {};
2361
+ b.cb({ tag: a, deleteFrom: a.leftOuterWhitespace, deleteTo: R, insert: T, rangesArr: O, proposedReturn: [a.leftOuterWhitespace, R, T] }), h = S - 1, t[S] === ">" && (h = S), a = {}, f = {};
2362
2362
  break;
2363
2363
  }
2364
2364
  }
2365
2365
  }
2366
2366
  !t[h].trim() || t[h].charCodeAt(0) === 847 ? (l === null && (l = h, a.lastOpeningBracketAt !== void 0 && a.lastOpeningBracketAt < h && a.nameStarts && a.nameStarts < a.lastOpeningBracketAt && h === a.lastOpeningBracketAt + 1 && !r.some((v) => v.name === a.name) && (a.onlyPlausible = !0, a.name = void 0, a.nameStarts = void 0)), (t[h] === `
2367
- ` || t[h] === "\r") && (u = h, g && (g = !1))) : (l !== null && (!a.quotes && f.equalsAt > l - 1 && f.nameEnds && f.equalsAt > f.nameEnds && t[h] !== '"' && t[h] !== "'" && (qt(f) && a.attributes.push(f), f = {}, a.equalsSpottedAt = void 0), l = null), g || (g = !0, E && !J && typeof u == "number" && h && u < h - 1 && (t.slice(u + 1, h).trim() ? u = null : b.ignoreIndentations || A.push([u + 1, h])))), t[h] === " " ? d === null && (d = h) : d !== null && (d = null), a.name === "script" && (J = !a.slashPresent);
2367
+ ` || t[h] === "\r") && (u = h, g && (g = !1))) : (l !== null && (!a.quotes && f.equalsAt > l - 1 && f.nameEnds && f.equalsAt > f.nameEnds && t[h] !== '"' && t[h] !== "'" && (Pt(f) && a.attributes.push(f), f = {}, a.equalsSpottedAt = void 0), l = null), g || (g = !0, E && !J && typeof u == "number" && h && u < h - 1 && (t.slice(u + 1, h).trim() ? u = null : b.ignoreIndentations || O.push([u + 1, h])))), t[h] === " " ? d === null && (d = h) : d !== null && (d = null), a.name === "script" && (J = !a.slashPresent);
2368
2368
  }
2369
2369
  if (t && !b.ignoreIndentations && (b.trimOnlySpaces && t[0] === " " || !b.trimOnlySpaces && !t[0].trim())) for (let h = 0; h < $; h++) if (b.trimOnlySpaces && t[h] !== " " || !b.trimOnlySpaces && t[h].trim()) {
2370
- A.push([0, h]);
2370
+ O.push([0, h]);
2371
2371
  break;
2372
- } else t[h + 1] || A.push([0, h + 1]);
2372
+ } else t[h + 1] || O.push([0, h + 1]);
2373
2373
  if (t && (b.trimOnlySpaces && t[~-t.length] === " " || !b.trimOnlySpaces && !t[~-t.length].trim())) {
2374
2374
  for (let h = t.length; h--; ) if (b.trimOnlySpaces && t[h] !== " " || !b.trimOnlySpaces && t[h].trim()) {
2375
- A.push([h + 1, $]);
2375
+ O.push([h + 1, $]);
2376
2376
  break;
2377
2377
  }
2378
2378
  }
2379
- let M = A.current();
2380
- if (!e?.cb && M && (M[0] && !M[0][0] && (M[0][1], A.ranges[0] = [A.ranges[0][0], A.ranges[0][1]]), M[M.length - 1]?.[1] === t.length && (M[M.length - 1][0], A.ranges))) {
2381
- let h = A.ranges[A.ranges.length - 1][0];
2379
+ let M = O.current();
2380
+ if (!e?.cb && M && (M[0] && !M[0][0] && (M[0][1], O.ranges[0] = [O.ranges[0][0], O.ranges[0][1]]), M[M.length - 1]?.[1] === t.length && (M[M.length - 1][0], O.ranges))) {
2381
+ let h = O.ranges[O.ranges.length - 1][0];
2382
2382
  t[h - 1] && (b.trimOnlySpaces && t[h - 1] === " " || !b.trimOnlySpaces && !t[h - 1].trim()) && (h -= 1);
2383
- let v = A.ranges[A.ranges.length - 1][2];
2384
- A.ranges[A.ranges.length - 1] = [h, A.ranges[A.ranges.length - 1][1]], v?.trim() && A.ranges[A.ranges.length - 1].push(v.trimEnd());
2383
+ let v = O.ranges[O.ranges.length - 1][2];
2384
+ O.ranges[O.ranges.length - 1] = [h, O.ranges[O.ranges.length - 1][1]], v?.trim() && O.ranges[O.ranges.length - 1].push(v.trimEnd());
2385
2385
  }
2386
- return { log: { timeTakenInMilliseconds: Date.now() - n }, result: Za(t, A.current()), ranges: A.current(), allTagLocations: s, filteredTagLocations: o };
2386
+ return { log: { timeTakenInMilliseconds: Date.now() - n }, result: Za(t, O.current()), ranges: O.current(), allTagLocations: s, filteredTagLocations: o };
2387
2387
  }
2388
2388
  class Dn {
2389
2389
  speechSynthesis;
@@ -2419,7 +2419,7 @@ class Dn {
2419
2419
  features;
2420
2420
  patches;
2421
2421
  constructor() {
2422
- if (this.features = Ei(), this.patches = Oi(), !this.features.speechSynthesis || !this.features.speechSynthesisUtterance)
2422
+ if (this.features = Ei(), this.patches = Ai(), !this.features.speechSynthesis || !this.features.speechSynthesisUtterance)
2423
2423
  throw new Error("Web Speech API is not available in this environment");
2424
2424
  this.speechSynthesis = this.features.speechSynthesis, this.speechSynthesisUtterance = this.features.speechSynthesisUtterance;
2425
2425
  }
@@ -2526,7 +2526,7 @@ class Dn {
2526
2526
  toPlainText(e) {
2527
2527
  return e.map((n) => ({
2528
2528
  ...n,
2529
- plain: n.plain ?? (n.ssml ? kr(n.ssml).result : "")
2529
+ plain: n.plain ?? (n.ssml ? xr(n.ssml).result : "")
2530
2530
  }));
2531
2531
  }
2532
2532
  // Queue Management
@@ -2719,7 +2719,7 @@ class Dn {
2719
2719
  this.stop(), this.stopResumeInfinity(), this.eventListeners.clear(), this.currentUtterances = [], this.currentVoice = null, this.voices = [], this.defaultVoice = null, this.languageVoiceCache.clear(), this.warmingLanguages.clear(), this.initialized = !1;
2720
2720
  }
2721
2721
  }
2722
- class dc {
2722
+ class gc {
2723
2723
  id = "webspeech";
2724
2724
  name = "Web Speech API";
2725
2725
  voiceEngine = null;
@@ -2734,14 +2734,14 @@ class dc {
2734
2734
  this.voiceEngine && (await this.voiceEngine.destroy(), this.voiceEngine = null);
2735
2735
  }
2736
2736
  }
2737
- const le = "\\p{Pe}\\p{Pf}.,;:!?,。、;:!?،؛؟", _t = "\\p{Ps}\\p{Pi}¿¡", ao = new RegExp(`^[${le}]`, "u"), oo = new RegExp(`^[${_t}]`, "u");
2738
- function lt(t) {
2737
+ const oe = "\\p{Pe}\\p{Pf}.,;:!?,。、;:!?،؛؟", Dt = "\\p{Ps}\\p{Pi}¿¡", ao = new RegExp(`^[${oe}]`, "u"), oo = new RegExp(`^[${Dt}]`, "u");
2738
+ function ot(t) {
2739
2739
  return ao.test(t);
2740
2740
  }
2741
2741
  function lo(t) {
2742
2742
  return oo.test(t);
2743
2743
  }
2744
- function Cr(t, e) {
2744
+ function kr(t, e) {
2745
2745
  const n = [];
2746
2746
  let r = -1, i = -1;
2747
2747
  const s = () => {
@@ -2762,22 +2762,22 @@ function co(t, e, n) {
2762
2762
  const r = t[e], i = t[n];
2763
2763
  return r === i ? r.text : t.slice(e, n + 1).map((s) => s.text).join("");
2764
2764
  }
2765
- const Er = new RegExp(
2766
- `[^${le}]*[${le}]+\\s*|[^${le}]+$`,
2765
+ const Cr = new RegExp(
2766
+ `[^${oe}]*[${oe}]+\\s*|[^${oe}]+$`,
2767
2767
  "gu"
2768
2768
  ), uo = /\S+\s*|\s+/g;
2769
- function Zt(t, e, n) {
2769
+ function Xt(t, e, n) {
2770
2770
  const r = [];
2771
2771
  for (const i of t.matchAll(n))
2772
2772
  i[0].length !== 0 && r.push({ text: i[0], offset: e + i.index, atomic: !1 });
2773
2773
  return r;
2774
2774
  }
2775
- function Yt(t, e) {
2775
+ function Zt(t, e) {
2776
2776
  if (t.text.length <= e || t.atomic)
2777
2777
  return [t];
2778
- const n = Zt(t.text, t.offset, uo);
2778
+ const n = Xt(t.text, t.offset, uo);
2779
2779
  if (n.length > 1)
2780
- return n.flatMap((o) => Yt(o, e));
2780
+ return n.flatMap((o) => Zt(o, e));
2781
2781
  const r = [];
2782
2782
  let i = t.offset, s = "";
2783
2783
  for (const o of t.text)
@@ -2787,8 +2787,8 @@ function Yt(t, e) {
2787
2787
  function ho(t, e) {
2788
2788
  if (t.length <= e)
2789
2789
  return [{ text: t, offset: 0 }];
2790
- const r = Zt(t, 0, Er).flatMap((i) => Yt(i, e));
2791
- return Cr(r, e);
2790
+ const r = Xt(t, 0, Cr).flatMap((i) => Zt(i, e));
2791
+ return kr(r, e);
2792
2792
  }
2793
2793
  const go = /<([a-zA-Z][\w-]*)\b[^>]*>[\s\S]*?<\/\1>|<[a-zA-Z][\w-]*\b[^>]*\/>|[^<]+/g;
2794
2794
  function fo(t, e) {
@@ -2796,9 +2796,9 @@ function fo(t, e) {
2796
2796
  return [{ text: t, offset: 0 }];
2797
2797
  const n = [];
2798
2798
  for (const i of t.matchAll(go))
2799
- i[0][0] === "<" ? n.push({ text: i[0], offset: i.index, atomic: !0 }) : n.push(...Zt(i[0], i.index, Er));
2800
- const r = n.flatMap((i) => Yt(i, e));
2801
- return Cr(r, e);
2799
+ i[0][0] === "<" ? n.push({ text: i[0], offset: i.index, atomic: !0 }) : n.push(...Xt(i[0], i.index, Cr));
2800
+ const r = n.flatMap((i) => Zt(i, e));
2801
+ return kr(r, e);
2802
2802
  }
2803
2803
  const po = {
2804
2804
  wav: "audio/wav",
@@ -2834,7 +2834,7 @@ const wo = /* @__PURE__ */ new Set(["wav", "flac"]), So = {
2834
2834
  function xo(t, e, n) {
2835
2835
  return wo.has(t) || !e || !n ? void 0 : n.saveData === !0 || /2g/.test(n.effectiveType ?? "") ? So[t] : void 0;
2836
2836
  }
2837
- function Or(t) {
2837
+ function Er(t) {
2838
2838
  return {
2839
2839
  source: "server",
2840
2840
  label: t.name,
@@ -2849,7 +2849,7 @@ function Or(t) {
2849
2849
  controls: t.controls
2850
2850
  };
2851
2851
  }
2852
- class Xe extends Error {
2852
+ class Qe extends Error {
2853
2853
  status;
2854
2854
  type;
2855
2855
  title;
@@ -2858,11 +2858,11 @@ class Xe extends Error {
2858
2858
  super(e), this.name = "SpeechServerError", this.status = n.status, this.type = n.type, this.title = n.title, this.instance = n.instance;
2859
2859
  }
2860
2860
  }
2861
- async function We(t) {
2861
+ async function Ge(t) {
2862
2862
  if ((t.headers.get("content-type") ?? "").includes("application/problem+json"))
2863
2863
  try {
2864
2864
  const n = await t.json();
2865
- return new Xe(n.detail || n.title || `Request failed with status ${t.status}`, {
2865
+ return new Qe(n.detail || n.title || `Request failed with status ${t.status}`, {
2866
2866
  status: n.status ?? t.status,
2867
2867
  type: n.type,
2868
2868
  title: n.title,
@@ -2870,7 +2870,7 @@ async function We(t) {
2870
2870
  });
2871
2871
  } catch {
2872
2872
  }
2873
- return new Xe(`Request failed with status ${t.status}`, { status: t.status });
2873
+ return new Qe(`Request failed with status ${t.status}`, { status: t.status });
2874
2874
  }
2875
2875
  const ko = 3, Co = 400;
2876
2876
  function Eo(t) {
@@ -2879,16 +2879,16 @@ function Eo(t) {
2879
2879
  n[r] = e.charCodeAt(r);
2880
2880
  return n.buffer;
2881
2881
  }
2882
- function Oo(t) {
2882
+ function Ao(t) {
2883
2883
  return Math.max(0.25, Math.min(4, t));
2884
2884
  }
2885
- function _e(t) {
2885
+ function De(t) {
2886
2886
  return t?.plain ?? t?.ssml ?? void 0;
2887
2887
  }
2888
2888
  function _n(t) {
2889
- return t instanceof Xe ? { message: t.message, status: t.status, type: t.type, title: t.title, instance: t.instance } : t instanceof Error ? { message: t.message } : { message: String(t) };
2889
+ return t instanceof Qe ? { message: t.message, status: t.status, type: t.type, title: t.title, instance: t.instance } : t instanceof Error ? { message: t.message } : { message: String(t) };
2890
2890
  }
2891
- class Ao {
2891
+ class Oo {
2892
2892
  endpoints;
2893
2893
  fetchImpl;
2894
2894
  currentVoice = null;
@@ -2947,7 +2947,7 @@ class Ao {
2947
2947
  return -1;
2948
2948
  let n = 0;
2949
2949
  for (let r = 0; r < this.currentUtterances.length; r++)
2950
- if (n += (_e(this.currentUtterances[r]) ?? "").length, n >= e)
2950
+ if (n += (De(this.currentUtterances[r]) ?? "").length, n >= e)
2951
2951
  return r;
2952
2952
  return this.currentUtterances.length - 1;
2953
2953
  }
@@ -2980,9 +2980,9 @@ class Ao {
2980
2980
  return this.voices;
2981
2981
  const e = await this.fetchImpl(this.endpoints.voices);
2982
2982
  if (!e.ok)
2983
- throw await We(e);
2983
+ throw await Ge(e);
2984
2984
  const n = await e.json();
2985
- return this.voices = n.map(Or), this.voices;
2985
+ return this.voices = n.map(Er), this.voices;
2986
2986
  }
2987
2987
  // Cached after the first successful fetch; a failed fetch isn't cached, so the next
2988
2988
  // synthesize() call retries rather than being stuck on a transient network error.
@@ -2994,7 +2994,7 @@ class Ao {
2994
2994
  async fetchServiceInfo() {
2995
2995
  const e = await this.fetchImpl(this.endpoints.service);
2996
2996
  if (!e.ok)
2997
- throw await We(e);
2997
+ throw await Ge(e);
2998
2998
  return e.json();
2999
2999
  }
3000
3000
  setSpeakInContentLanguage(e) {
@@ -3070,11 +3070,11 @@ class Ao {
3070
3070
  this.prefetchCache.clear();
3071
3071
  }
3072
3072
  async synthesizeStream(e) {
3073
- const n = this.currentUtterances[e], r = !n.plain && !!n.ssml, i = this.speakInContentLanguage ? n.language : void 0, s = _e(n) ?? "", o = _e(this.currentUtterances[e - 1]), a = _e(this.currentUtterances[e + 1]), c = await this.getServiceInfo(), l = vo(c.output, this.formatOptions, this.canPlayType), d = navigator.connection, u = xo(l, this.formatOptions.adaptBitrateToNetwork ?? !1, d);
3073
+ const n = this.currentUtterances[e], r = !n.plain && !!n.ssml, i = this.speakInContentLanguage ? n.language : void 0, s = De(n) ?? "", o = De(this.currentUtterances[e - 1]), a = De(this.currentUtterances[e + 1]), c = await this.getServiceInfo(), l = vo(c.output, this.formatOptions, this.canPlayType), d = navigator.connection, u = xo(l, this.formatOptions.adaptBitrateToNetwork ?? !1, d);
3074
3074
  if (s.length <= c.limits.maxTextLength)
3075
3075
  return [this.synthesizeChunk(n, s, 0, r, i, o, a, l, u)];
3076
3076
  if (this.overLengthText === "error")
3077
- throw new Xe(
3077
+ throw new Qe(
3078
3078
  `Text exceeds this server's maximum length of ${c.limits.maxTextLength} characters`,
3079
3079
  {
3080
3080
  status: 413,
@@ -3109,7 +3109,7 @@ class Ao {
3109
3109
  })
3110
3110
  });
3111
3111
  if (!d.ok)
3112
- throw await We(d);
3112
+ throw await Ge(d);
3113
3113
  const u = await d.json(), g = Eo(u.audio);
3114
3114
  let f;
3115
3115
  try {
@@ -3130,7 +3130,7 @@ class Ao {
3130
3130
  const r = await e[0];
3131
3131
  if (n !== this.speakGeneration)
3132
3132
  return;
3133
- const i = this.ensureAudioContext(), s = this.masterGain, a = this.currentVoice?.controls?.speed === !0 ? 1 : Oo(this.rate);
3133
+ const i = this.ensureAudioContext(), s = this.masterGain, a = this.currentVoice?.controls?.speed === !0 ? 1 : Ao(this.rate);
3134
3134
  this.scheduledChunks = [], this.setState("playing"), this.emitEvent({ type: "start" });
3135
3135
  let c = i.currentTime, l = null;
3136
3136
  const d = (u) => {
@@ -3276,7 +3276,7 @@ class Ao {
3276
3276
  this.stop(), await this.audioContext?.close(), this.audioContext = null, this.masterGain = null, this.eventListeners.clear(), this.currentUtterances = [], this.currentVoice = null, this.voices = [];
3277
3277
  }
3278
3278
  }
3279
- class gc {
3279
+ class fc {
3280
3280
  id = "speech-server";
3281
3281
  name = "Readium Speech Server";
3282
3282
  options;
@@ -3290,12 +3290,12 @@ class gc {
3290
3290
  return this.voices;
3291
3291
  const e = await this.fetchImpl(this.options.endpoints.voices);
3292
3292
  if (!e.ok)
3293
- throw await We(e);
3293
+ throw await Ge(e);
3294
3294
  const n = await e.json();
3295
- return this.voices = n.map(Or), this.voices;
3295
+ return this.voices = n.map(Er), this.voices;
3296
3296
  }
3297
3297
  async createEngine(e) {
3298
- const n = new Ao(this.options);
3298
+ const n = new Oo(this.options);
3299
3299
  return this.voices.length > 0 && n.setAvailableVoices(this.voices), e && n.setVoice(e), n;
3300
3300
  }
3301
3301
  async destroy() {
@@ -3322,16 +3322,16 @@ function Se(t) {
3322
3322
  function Bn(t, e) {
3323
3323
  return t.document.documentElement.style.getPropertyValue(e);
3324
3324
  }
3325
- function Lo(t) {
3325
+ function Io(t) {
3326
3326
  return t && Array.isArray(t) ? t : void 0;
3327
3327
  }
3328
- function Io(t) {
3329
- return t && typeof t == "string" ? [t] : Lo(t);
3328
+ function Lo(t) {
3329
+ return t && typeof t == "string" ? [t] : Io(t);
3330
3330
  }
3331
- function St(t) {
3331
+ function wt(t) {
3332
3332
  return isNaN(t) ? void 0 : t;
3333
3333
  }
3334
- function Be(t) {
3334
+ function _e(t) {
3335
3335
  return t.otherLocations?.get("cssSelector");
3336
3336
  }
3337
3337
  let xe = class Ar {
@@ -3340,27 +3340,27 @@ let xe = class Ar {
3340
3340
  }
3341
3341
  static deserialize(e) {
3342
3342
  if (!e) return;
3343
- const n = St(e.progression), r = St(e.totalProgression), i = St(e.position), s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set(["fragment", "fragments", "progression", "totalProgression", "position", "otherLocations"]);
3343
+ const n = wt(e.progression), r = wt(e.totalProgression), i = wt(e.position), s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set(["fragment", "fragments", "progression", "totalProgression", "position", "otherLocations"]);
3344
3344
  return Object.entries(e).forEach(([a, c]) => {
3345
3345
  o.has(a) || s.set(a, c);
3346
- }), e.otherLocations instanceof Map && e.otherLocations.forEach((a, c) => s.set(c, a)), new Ar({ fragments: Io(e.fragments || e.fragment), progression: n !== void 0 && n >= 0 && n <= 1 ? n : void 0, totalProgression: r !== void 0 && r >= 0 && r <= 1 ? r : void 0, position: i !== void 0 && i > 0 ? i : void 0, otherLocations: s.size === 0 ? void 0 : s });
3346
+ }), e.otherLocations instanceof Map && e.otherLocations.forEach((a, c) => s.set(c, a)), new Ar({ fragments: Lo(e.fragments || e.fragment), progression: n !== void 0 && n >= 0 && n <= 1 ? n : void 0, totalProgression: r !== void 0 && r >= 0 && r <= 1 ? r : void 0, position: i !== void 0 && i > 0 ? i : void 0, otherLocations: s.size === 0 ? void 0 : s });
3347
3347
  }
3348
3348
  serialize() {
3349
3349
  const e = {};
3350
3350
  return this.fragments && (e.fragments = this.fragments), this.progression !== void 0 && (e.progression = this.progression), this.totalProgression !== void 0 && (e.totalProgression = this.totalProgression), this.position !== void 0 && (e.position = this.position), this.otherLocations && this.otherLocations.forEach((n, r) => e[r] = n), e;
3351
3351
  }
3352
- }, Po = class Tr {
3352
+ }, Po = class Or {
3353
3353
  constructor(e) {
3354
3354
  this.after = e.after, this.before = e.before, this.highlight = e.highlight;
3355
3355
  }
3356
3356
  static deserialize(e) {
3357
- if (e) return new Tr({ after: e.after, before: e.before, highlight: e.highlight });
3357
+ if (e) return new Or({ after: e.after, before: e.before, highlight: e.highlight });
3358
3358
  }
3359
3359
  serialize() {
3360
3360
  const e = {};
3361
3361
  return this.after !== void 0 && (e.after = this.after), this.before !== void 0 && (e.before = this.before), this.highlight !== void 0 && (e.highlight = this.highlight), e;
3362
3362
  }
3363
- }, qo = class Bt {
3363
+ }, qo = class _t {
3364
3364
  constructor(e) {
3365
3365
  const n = e.href.indexOf("#"), r = n >= 0 ? e.href.slice(n + 1) : void 0;
3366
3366
  this.href = n >= 0 ? e.href.slice(0, n) : e.href, this.type = e.type, this.title = e.title;
@@ -3368,14 +3368,14 @@ let xe = class Ar {
3368
3368
  this.locations = e.locations ? s ? new xe({ ...e.locations, fragments: [r] }) : e.locations : r ? new xe({ fragments: [r] }) : new xe({}), this.text = e.text;
3369
3369
  }
3370
3370
  static deserialize(e) {
3371
- if (e && e.href && e.type) return new Bt({ href: e.href, type: e.type, title: e.title, locations: xe.deserialize(e.locations), text: Po.deserialize(e.text) });
3371
+ if (e && e.href && e.type) return new _t({ href: e.href, type: e.type, title: e.title, locations: xe.deserialize(e.locations), text: Po.deserialize(e.text) });
3372
3372
  }
3373
3373
  serialize() {
3374
3374
  const e = { href: this.href, type: this.type };
3375
3375
  return this.title !== void 0 && (e.title = this.title), this.locations && (e.locations = this.locations.serialize()), this.text && (e.text = this.text.serialize()), e;
3376
3376
  }
3377
3377
  copyWithLocations(e) {
3378
- return new Bt({ href: this.href, type: this.type, title: this.title, text: this.text, locations: new xe({ ...this.locations, ...e }) });
3378
+ return new _t({ href: this.href, type: this.type, title: this.title, text: this.text, locations: new xe({ ...this.locations, ...e }) });
3379
3379
  }
3380
3380
  };
3381
3381
  function Un(t) {
@@ -3385,20 +3385,20 @@ function $o(t, e, n) {
3385
3385
  const r = Un(e);
3386
3386
  return n.map((i) => {
3387
3387
  const s = Math.max(0, i.end - e.length - i.errors), o = Un(t.slice(s, i.end));
3388
- return { start: Rr(o, r, i.errors).reduce((a, c) => i.end - c.end < a ? i.end - c.end : a, i.end), end: i.end, errors: i.errors };
3388
+ return { start: Tr(o, r, i.errors).reduce((a, c) => i.end - c.end < a ? i.end - c.end : a, i.end), end: i.end, errors: i.errors };
3389
3389
  });
3390
3390
  }
3391
- function xt(t) {
3391
+ function St(t) {
3392
3392
  return (t | -t) >> 31 & 1;
3393
3393
  }
3394
3394
  function zn(t, e, n, r) {
3395
3395
  let i = t.P[n], s = t.M[n];
3396
3396
  const o = r >>> 31, a = e[n] | o, c = a | s, l = (a & i) + i ^ i | a;
3397
3397
  let d = s | ~(l | i), u = i & l;
3398
- const g = xt(d & t.lastRowMask[n]) - xt(u & t.lastRowMask[n]);
3399
- return d <<= 1, u <<= 1, u |= o, d |= xt(r) - o, i = u | ~(c | d), s = d & c, t.P[n] = i, t.M[n] = s, g;
3398
+ const g = St(d & t.lastRowMask[n]) - St(u & t.lastRowMask[n]);
3399
+ return d <<= 1, u <<= 1, u |= o, d |= St(r) - o, i = u | ~(c | d), s = d & c, t.P[n] = i, t.M[n] = s, g;
3400
3400
  }
3401
- function Rr(t, e, n) {
3401
+ function Tr(t, e, n) {
3402
3402
  if (e.length === 0) return [];
3403
3403
  n = Math.min(n, e.length);
3404
3404
  const r = [], i = 32, s = Math.ceil(e.length / i) - 1, o = { P: new Uint32Array(s + 1), M: new Uint32Array(s + 1), lastRowMask: new Uint32Array(s + 1) };
@@ -3443,21 +3443,21 @@ function Rr(t, e, n) {
3443
3443
  return r;
3444
3444
  }
3445
3445
  function Do(t, e, n) {
3446
- const r = Rr(t, e, n);
3446
+ const r = Tr(t, e, n);
3447
3447
  return $o(t, e, r);
3448
3448
  }
3449
- function Nr(t, e, n) {
3449
+ function Rr(t, e, n) {
3450
3450
  let r = 0;
3451
3451
  const i = [];
3452
3452
  for (; r !== -1; ) r = t.indexOf(e, r), r !== -1 && (i.push({ start: r, end: r + e.length, errors: 0 }), r += 1);
3453
3453
  return i.length > 0 ? i : Do(t, e, n);
3454
3454
  }
3455
3455
  function jn(t, e) {
3456
- return e.length === 0 || t.length === 0 ? 0 : 1 - Nr(t, e, e.length)[0].errors / e.length;
3456
+ return e.length === 0 || t.length === 0 ? 0 : 1 - Rr(t, e, e.length)[0].errors / e.length;
3457
3457
  }
3458
3458
  function _o(t, e, n = {}) {
3459
3459
  if (e.length === 0) return null;
3460
- const r = Math.min(256, e.length / 2), i = Nr(t, e, r);
3460
+ const r = Math.min(256, e.length / 2), i = Rr(t, e, r);
3461
3461
  if (i.length === 0) return null;
3462
3462
  const s = (a) => {
3463
3463
  const c = 1 - a.errors / e.length, l = n.prefix ? jn(t.slice(Math.max(0, a.start - n.prefix.length), a.start), n.prefix) : 1, d = n.suffix ? jn(t.slice(a.end, a.end + n.suffix.length), n.suffix) : 1;
@@ -3466,7 +3466,7 @@ function _o(t, e, n = {}) {
3466
3466
  }, o = i.map((a) => ({ start: a.start, end: a.end, score: s(a) }));
3467
3467
  return o.sort((a, c) => c.score - a.score), o[0];
3468
3468
  }
3469
- function Ut(t, e, n) {
3469
+ function Bt(t, e, n) {
3470
3470
  const r = n === 1 ? e : e - 1;
3471
3471
  if (t.charAt(r).trim() !== "") return e;
3472
3472
  let i, s;
@@ -3483,7 +3483,7 @@ function Vn(t, e) {
3483
3483
  const a = () => {
3484
3484
  if (s = e === 1 ? n.nextNode() : n.previousNode(), s) {
3485
3485
  const c = s.textContent, l = e === 1 ? 0 : c.length;
3486
- o = Ut(c, l, e);
3486
+ o = Bt(c, l, e);
3487
3487
  }
3488
3488
  };
3489
3489
  for (; s && o === -1 && s !== i; ) a();
@@ -3496,7 +3496,7 @@ function Bo(t) {
3496
3496
  if (t.endContainer.nodeType !== Node.TEXT_NODE) throw new RangeError("Range endContainer is not a text node");
3497
3497
  const e = t.cloneRange();
3498
3498
  let n = !1, r = !1;
3499
- const i = { start: Ut(t.startContainer.textContent, t.startOffset, 1), end: Ut(t.endContainer.textContent, t.endOffset, 2) };
3499
+ const i = { start: Bt(t.startContainer.textContent, t.startOffset, 1), end: Bt(t.endContainer.textContent, t.endOffset, 2) };
3500
3500
  if (i.start >= 0 && (e.setStart(t.startContainer, i.start), n = !0), i.end > 0 && (e.setEnd(t.endContainer, i.end), r = !0), n && r) return e;
3501
3501
  if (!n) {
3502
3502
  const { node: s, offset: o } = Vn(e, 1);
@@ -3508,7 +3508,7 @@ function Bo(t) {
3508
3508
  }
3509
3509
  return e;
3510
3510
  }
3511
- function Lr(t) {
3511
+ function Nr(t) {
3512
3512
  switch (t.nodeType) {
3513
3513
  case Node.ELEMENT_NODE:
3514
3514
  case Node.TEXT_NODE:
@@ -3519,7 +3519,7 @@ function Lr(t) {
3519
3519
  }
3520
3520
  function Fn(t) {
3521
3521
  let e = t.previousSibling, n = 0;
3522
- for (; e; ) n += Lr(e), e = e.previousSibling;
3522
+ for (; e; ) n += Nr(e), e = e.previousSibling;
3523
3523
  return n;
3524
3524
  }
3525
3525
  function Ir(t, ...e) {
@@ -3531,7 +3531,7 @@ function Ir(t, ...e) {
3531
3531
  if (n !== void 0) throw new RangeError("Offset exceeds text length");
3532
3532
  return i;
3533
3533
  }
3534
- let Ue = class ie {
3534
+ let Be = class re {
3535
3535
  constructor(e, n) {
3536
3536
  if (n < 0) throw new Error("Offset is invalid");
3537
3537
  this.element = e, this.offset = n;
@@ -3540,7 +3540,7 @@ let Ue = class ie {
3540
3540
  if (!e.contains(this.element)) throw new Error("Parent is not an ancestor of current element");
3541
3541
  let n = this.element, r = this.offset;
3542
3542
  for (; n !== e; ) r += Fn(n), n = n.parentElement;
3543
- return new ie(n, r);
3543
+ return new re(n, r);
3544
3544
  }
3545
3545
  resolve(e = {}) {
3546
3546
  try {
@@ -3558,9 +3558,9 @@ let Ue = class ie {
3558
3558
  static fromCharOffset(e, n) {
3559
3559
  switch (e.nodeType) {
3560
3560
  case Node.TEXT_NODE:
3561
- return ie.fromPoint(e, n);
3561
+ return re.fromPoint(e, n);
3562
3562
  case Node.ELEMENT_NODE:
3563
- return new ie(e, n);
3563
+ return new re(e, n);
3564
3564
  default:
3565
3565
  throw new Error("Node is not an element or text node");
3566
3566
  }
@@ -3571,19 +3571,19 @@ let Ue = class ie {
3571
3571
  if (n < 0 || n > e.data.length) throw new Error("Text node offset is out of range");
3572
3572
  if (!e.parentElement) throw new Error("Text node has no parent");
3573
3573
  const r = Fn(e) + n;
3574
- return new ie(e.parentElement, r);
3574
+ return new re(e.parentElement, r);
3575
3575
  }
3576
3576
  case Node.ELEMENT_NODE: {
3577
3577
  if (n < 0 || n > e.childNodes.length) throw new Error("Child node offset is out of range");
3578
3578
  let r = 0;
3579
- for (let i = 0; i < n; i++) r += Lr(e.childNodes[i]);
3580
- return new ie(e, r);
3579
+ for (let i = 0; i < n; i++) r += Nr(e.childNodes[i]);
3580
+ return new re(e, r);
3581
3581
  }
3582
3582
  default:
3583
3583
  throw new Error("Point is not in an element or text node");
3584
3584
  }
3585
3585
  }
3586
- }, zt = class Ce {
3586
+ }, Ut = class Ce {
3587
3587
  constructor(e, n) {
3588
3588
  this.start = e, this.end = n;
3589
3589
  }
@@ -3597,43 +3597,43 @@ let Ue = class ie {
3597
3597
  return r.setStart(e.node, e.offset), r.setEnd(n.node, n.offset), r;
3598
3598
  }
3599
3599
  static fromRange(e) {
3600
- const n = Ue.fromPoint(e.startContainer, e.startOffset), r = Ue.fromPoint(e.endContainer, e.endOffset);
3600
+ const n = Be.fromPoint(e.startContainer, e.startOffset), r = Be.fromPoint(e.endContainer, e.endOffset);
3601
3601
  return new Ce(n, r);
3602
3602
  }
3603
3603
  static fromOffsets(e, n, r) {
3604
- return new Ce(new Ue(e, n), new Ue(e, r));
3604
+ return new Ce(new Be(e, n), new Be(e, r));
3605
3605
  }
3606
3606
  static trimmedRange(e) {
3607
3607
  return Bo(Ce.fromRange(e).toRange());
3608
3608
  }
3609
- }, Uo = class jt {
3609
+ }, Uo = class zt {
3610
3610
  constructor(e, n, r) {
3611
3611
  this.root = e, this.start = n, this.end = r;
3612
3612
  }
3613
3613
  static fromRange(e, n) {
3614
- const r = zt.fromRange(n).relativeTo(e);
3615
- return new jt(e, r.start.offset, r.end.offset);
3614
+ const r = Ut.fromRange(n).relativeTo(e);
3615
+ return new zt(e, r.start.offset, r.end.offset);
3616
3616
  }
3617
3617
  static fromSelector(e, n) {
3618
- return new jt(e, n.start, n.end);
3618
+ return new zt(e, n.start, n.end);
3619
3619
  }
3620
3620
  toSelector() {
3621
3621
  return { type: "TextPositionSelector", start: this.start, end: this.end };
3622
3622
  }
3623
3623
  toRange() {
3624
- return zt.fromOffsets(this.root, this.start, this.end).toRange();
3624
+ return Ut.fromOffsets(this.root, this.start, this.end).toRange();
3625
3625
  }
3626
- }, zo = class Vt {
3626
+ }, zo = class jt {
3627
3627
  constructor(e, n, r = {}) {
3628
3628
  this.root = e, this.exact = n, this.context = r;
3629
3629
  }
3630
3630
  static fromRange(e, n) {
3631
- const r = e.textContent, i = zt.fromRange(n).relativeTo(e), s = i.start.offset, o = i.end.offset, a = 32;
3632
- return new Vt(e, r.slice(s, o), { prefix: r.slice(Math.max(0, s - a), s), suffix: r.slice(o, Math.min(r.length, o + a)) });
3631
+ const r = e.textContent, i = Ut.fromRange(n).relativeTo(e), s = i.start.offset, o = i.end.offset, a = 32;
3632
+ return new jt(e, r.slice(s, o), { prefix: r.slice(Math.max(0, s - a), s), suffix: r.slice(o, Math.min(r.length, o + a)) });
3633
3633
  }
3634
3634
  static fromSelector(e, n) {
3635
3635
  const { prefix: r, suffix: i } = n;
3636
- return new Vt(e, n.exact, { prefix: r, suffix: i });
3636
+ return new jt(e, n.exact, { prefix: r, suffix: i });
3637
3637
  }
3638
3638
  toSelector() {
3639
3639
  return { type: "TextQuoteSelector", exact: this.exact, prefix: this.context.prefix, suffix: this.context.suffix };
@@ -3656,7 +3656,7 @@ function Vo(t, e) {
3656
3656
  const n = e.locations, r = e.text;
3657
3657
  if (r && r.highlight) {
3658
3658
  let i;
3659
- n && Be(n) && (i = t.querySelector(Be(n))), i || (i = t.body);
3659
+ n && _e(n) && (i = t.querySelector(_e(n))), i || (i = t.body);
3660
3660
  const s = new zo(i, r.highlight, { prefix: r.before, suffix: r.after });
3661
3661
  try {
3662
3662
  return s.toRange();
@@ -3666,7 +3666,7 @@ function Vo(t, e) {
3666
3666
  }
3667
3667
  if (n) {
3668
3668
  let i = null;
3669
- if (!i && Be(n) && (i = t.querySelector(Be(n))), !i && n.fragments) {
3669
+ if (!i && _e(n) && (i = t.querySelector(_e(n))), !i && n.fragments) {
3670
3670
  for (const s of n.fragments) if (i = t.getElementById(s), i) break;
3671
3671
  }
3672
3672
  if (i) {
@@ -3702,7 +3702,7 @@ function Fo(t, e) {
3702
3702
  }
3703
3703
  return r;
3704
3704
  }
3705
- function ze(t, e, n = !1, r = 0) {
3705
+ function Ue(t, e, n = !1, r = 0) {
3706
3706
  let i;
3707
3707
  if (Array.isArray(t)) i = t;
3708
3708
  else {
@@ -3711,7 +3711,7 @@ function ze(t, e, n = !1, r = 0) {
3711
3711
  for (const d of l) i.push({ bottom: d.bottom, height: d.height, left: d.left, right: d.right, top: d.top, width: d.width });
3712
3712
  }
3713
3713
  if (r) for (const l of i) l.left -= r, l.top -= r, l.right += r, l.bottom += r, l.width += r * 2, l.height += r * 2;
3714
- const s = Pr(i, 1, e, n), o = Mo(s, 1), a = qr(o), c = 4;
3714
+ const s = Lr(i, 1, e, n), o = Mo(s, 1), a = Pr(o), c = 4;
3715
3715
  for (let l = a.length - 1; l >= 0; l--) {
3716
3716
  const d = a[l];
3717
3717
  if (!(d.width * d.height > c)) if (a.length > 1) a.splice(l, 1);
@@ -3719,14 +3719,14 @@ function ze(t, e, n = !1, r = 0) {
3719
3719
  }
3720
3720
  return a;
3721
3721
  }
3722
- function Pr(t, e, n, r = !1) {
3722
+ function Lr(t, e, n, r = !1) {
3723
3723
  for (let i = 0; i < t.length; i++) for (let s = i + 1; s < t.length; s++) {
3724
3724
  const o = t[i], a = t[s];
3725
3725
  if (o === a) continue;
3726
3726
  const c = q(o.top, a.top, e) && q(o.bottom, a.bottom, e), l = q(o.left, a.left, e) && q(o.right, a.right, e);
3727
- if ((l && !n && !r || c && !l) && $r(o, a, e)) {
3727
+ if ((l && !n && !r || c && !l) && qr(o, a, e)) {
3728
3728
  const d = t.filter((g) => g !== o && g !== a), u = Ho(o, a);
3729
- return d.push(u), Pr(d, e, n, r);
3729
+ return d.push(u), Lr(d, e, n, r);
3730
3730
  }
3731
3731
  }
3732
3732
  return t;
@@ -3755,10 +3755,10 @@ function Go(t, e, n) {
3755
3755
  function K(t, e, n, r) {
3756
3756
  return (t.left < e || q(t.left, e, r)) && (t.right > e || q(t.right, e, r)) && (t.top < n || q(t.top, n, r)) && (t.bottom > n || q(t.bottom, n, r));
3757
3757
  }
3758
- function qr(t) {
3758
+ function Pr(t) {
3759
3759
  for (let e = 0; e < t.length; e++) for (let n = e + 1; n < t.length; n++) {
3760
3760
  const r = t[e], i = t[n];
3761
- if (r !== i && $r(r, i, -1)) {
3761
+ if (r !== i && qr(r, i, -1)) {
3762
3762
  let s = [], o;
3763
3763
  const a = Hn(r, i);
3764
3764
  if (a.length === 1) s = a, o = r;
@@ -3767,7 +3767,7 @@ function qr(t) {
3767
3767
  a.length < l.length ? (s = a, o = r) : (s = l, o = i);
3768
3768
  }
3769
3769
  const c = t.filter((l) => l !== o);
3770
- return Array.prototype.push.apply(c, s), qr(c);
3770
+ return Array.prototype.push.apply(c, s), Pr(c);
3771
3771
  }
3772
3772
  }
3773
3773
  return t;
@@ -3798,32 +3798,32 @@ function Wo(t, e) {
3798
3798
  const n = Math.max(t.left, e.left), r = Math.min(t.right, e.right), i = Math.max(t.top, e.top), s = Math.min(t.bottom, e.bottom);
3799
3799
  return { bottom: s, height: Math.max(0, s - i), left: n, right: r, top: i, width: Math.max(0, r - n) };
3800
3800
  }
3801
- function $r(t, e, n) {
3801
+ function qr(t, e, n) {
3802
3802
  return (t.left < e.right || n >= 0 && q(t.left, e.right, n)) && (e.left < t.right || n >= 0 && q(e.left, t.right, n)) && (t.top < e.bottom || n >= 0 && q(t.top, e.bottom, n)) && (e.top < t.bottom || n >= 0 && q(e.top, t.bottom, n));
3803
3803
  }
3804
3804
  function q(t, e, n) {
3805
3805
  return Math.abs(t - e) <= n;
3806
3806
  }
3807
- let je = null, kt = null, ke = 0;
3808
- const se = { r: 255, g: 255, b: 255, a: 1 }, te = /* @__PURE__ */ new Map(), Ko = () => {
3809
- if (!je) if (typeof OffscreenCanvas < "u") je = new OffscreenCanvas(5, 5), kt = je.getContext("2d", { willReadFrequently: !0, desynchronized: !0 });
3807
+ let ze = null, xt = null, ke = 0;
3808
+ const ie = { r: 255, g: 255, b: 255, a: 1 }, ee = /* @__PURE__ */ new Map(), Ko = () => {
3809
+ if (!ze) if (typeof OffscreenCanvas < "u") ze = new OffscreenCanvas(5, 5), xt = ze.getContext("2d", { willReadFrequently: !0, desynchronized: !0 });
3810
3810
  else {
3811
3811
  const t = document.createElement("canvas");
3812
- t.width = 5, t.height = 5, je = t, kt = t.getContext("2d", { willReadFrequently: !0, desynchronized: !0 });
3812
+ t.width = 5, t.height = 5, ze = t, xt = t.getContext("2d", { willReadFrequently: !0, desynchronized: !0 });
3813
3813
  }
3814
- return kt;
3814
+ return xt;
3815
3815
  }, Jo = (t) => {
3816
3816
  if (!t) return !0;
3817
3817
  const e = t.trim().toLowerCase();
3818
3818
  return e.startsWith("var(") || ["transparent", "currentcolor", "inherit", "initial", "revert", "unset", "revert-layer"].includes(e) ? !0 : ["linear-gradient", "radial-gradient", "conic-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "repeating-conic-gradient"].some((n) => e.includes(n));
3819
- }, Ve = (t, e) => {
3820
- console.warn(`[Decorator] Could not parse color: "${t}". ${e} Falling back to ${JSON.stringify(se)} to compute contrast. Please use a CSS color value that can be computed to RGB(A).`);
3821
- }, Z = (t, e = null) => {
3822
- const n = e ? `${t}|${e}` : t, r = te.get(n);
3823
- if (r !== void 0) return r ?? se;
3824
- if (Jo(t)) return Ve(t, "Unsupported color format or special value."), te.set(n, null), se;
3819
+ }, je = (t, e) => {
3820
+ console.warn(`[Decorator] Could not parse color: "${t}". ${e} Falling back to ${JSON.stringify(ie)} to compute contrast. Please use a CSS color value that can be computed to RGB(A).`);
3821
+ }, X = (t, e = null) => {
3822
+ const n = e ? `${t}|${e}` : t, r = ee.get(n);
3823
+ if (r !== void 0) return r ?? ie;
3824
+ if (Jo(t)) return je(t, "Unsupported color format or special value."), ee.set(n, null), ie;
3825
3825
  const i = Ko();
3826
- if (!i) return Ve(t, "Could not get canvas context."), te.set(n, null), se;
3826
+ if (!i) return je(t, "Could not get canvas context."), ee.set(n, null), ie;
3827
3827
  try {
3828
3828
  ke === 0 && i.clearRect(0, 0, 5, 5);
3829
3829
  const s = ke % 5, o = Math.floor(ke / 5);
@@ -3831,40 +3831,40 @@ const se = { r: 255, g: 255, b: 255, a: 1 }, te = /* @__PURE__ */ new Map(), Ko
3831
3831
  const a = i.getImageData(s, o, 1, 1);
3832
3832
  ke = (ke + 1) % 25;
3833
3833
  const [c, l, d, u] = a.data;
3834
- if (u === 0) return Ve(t, "Fully transparent color."), te.set(n, null), se;
3834
+ if (u === 0) return je(t, "Fully transparent color."), ee.set(n, null), ie;
3835
3835
  const g = { r: c, g: l, b: d, a: u / 255 };
3836
- return te.set(n, g), g;
3836
+ return ee.set(n, g), g;
3837
3837
  } catch (s) {
3838
- return Ve(t, `Error: ${s instanceof Error ? s.message : String(s)}`), te.set(n, null), se;
3838
+ return je(t, `Error: ${s instanceof Error ? s.message : String(s)}`), ee.set(n, null), ie;
3839
3839
  }
3840
- }, Ct = (t) => {
3840
+ }, kt = (t) => {
3841
3841
  const e = t / 255;
3842
3842
  return e <= 0.03928 ? e / 12.92 : Math.pow((e + 0.055) / 1.055, 2.4);
3843
- }, Ft = (t) => {
3844
- const e = Ct(t.r), n = Ct(t.g), r = Ct(t.b);
3843
+ }, Vt = (t) => {
3844
+ const e = kt(t.r), n = kt(t.g), r = kt(t.b);
3845
3845
  return 0.2126 * e + 0.7152 * n + 0.0722 * r;
3846
- }, Ze = (t, e) => {
3847
- const n = typeof t == "string" ? Z(t) : t, r = typeof e == "string" ? Z(e) : e, i = Ft(n), s = Ft(r), o = Math.max(i, s), a = Math.min(i, s);
3846
+ }, Xe = (t, e) => {
3847
+ const n = typeof t == "string" ? X(t) : t, r = typeof e == "string" ? X(e) : e, i = Vt(n), s = Vt(r), o = Math.max(i, s), a = Math.min(i, s);
3848
3848
  return (o + 0.05) / (a + 0.05);
3849
- }, Dr = (t, e = null) => {
3850
- const n = Z(t, e), r = Ze(n, { r: 255, g: 255, b: 255, a: 1 }), i = Ze(n, { r: 0, g: 0, b: 0, a: 1 });
3849
+ }, $r = (t, e = null) => {
3850
+ const n = X(t, e), r = Xe(n, { r: 255, g: 255, b: 255, a: 1 }), i = Xe(n, { r: 0, g: 0, b: 0, a: 1 });
3851
3851
  return r > i;
3852
- }, Mn = (t, e = null) => Dr(t, e) ? "white" : "black", Qo = (t) => {
3852
+ }, Mn = (t, e = null) => $r(t, e) ? "white" : "black", Qo = (t) => {
3853
3853
  const e = t.a !== void 0 ? t.a : 1;
3854
3854
  return `rgba(${Math.round(t.r)}, ${Math.round(t.g)}, ${Math.round(t.b)}, ${e})`;
3855
- }, Xo = (t, e) => ({ r: Math.min(255, t.r + (255 - t.r) * e), g: Math.min(255, t.g + (255 - t.g) * e), b: Math.min(255, t.b + (255 - t.b) * e), a: t.a ?? 1 }), Zo = (t, e) => ({ r: Math.max(0, t.r * (1 - e)), g: Math.max(0, t.g * (1 - e)), b: Math.max(0, t.b * (1 - e)), a: t.a ?? 1 }), ne = (t, e = null, n = 3) => {
3856
- const r = Z(t), i = e ? Z(e) : { r: 255, g: 255, b: 255, a: 1 };
3857
- let s = Ze(r, i);
3855
+ }, Xo = (t, e) => ({ r: Math.min(255, t.r + (255 - t.r) * e), g: Math.min(255, t.g + (255 - t.g) * e), b: Math.min(255, t.b + (255 - t.b) * e), a: t.a ?? 1 }), Zo = (t, e) => ({ r: Math.max(0, t.r * (1 - e)), g: Math.max(0, t.g * (1 - e)), b: Math.max(0, t.b * (1 - e)), a: t.a ?? 1 }), te = (t, e = null, n = 3) => {
3856
+ const r = X(t), i = e ? X(e) : { r: 255, g: 255, b: 255, a: 1 };
3857
+ let s = Xe(r, i);
3858
3858
  if (s >= n) return t;
3859
- const o = Ft(i) < 0.5;
3859
+ const o = Vt(i) < 0.5;
3860
3860
  let a = { ...r, a: r.a ?? 1 };
3861
3861
  const c = 20, l = 0.1;
3862
- for (let d = 0; d < c && (o ? a = Xo(a, l) : a = Zo(a, l), s = Ze(a, i), !(s >= n)); d++) ;
3862
+ for (let d = 0; d < c && (o ? a = Xo(a, l) : a = Zo(a, l), s = Xe(a, i), !(s >= n)); d++) ;
3863
3863
  return Qo(a);
3864
- }, _r = () => typeof navigator > "u" ? "" : navigator.userAgent || "", Br = () => typeof navigator > "u" ? void 0 : navigator.userAgentData || void 0;
3865
- let Ur = class {
3864
+ }, Dr = () => typeof navigator > "u" ? "" : navigator.userAgent || "", _r = () => typeof navigator > "u" ? void 0 : navigator.userAgentData || void 0;
3865
+ let Br = class {
3866
3866
  constructor() {
3867
- const e = Br(), n = _r(), r = (s) => (typeof s == "string" || typeof s == "number") && s ? String(s).replace(/_/g, ".").split(".").map((o) => parseInt(o) || 0) : [], i = (s = "") => {
3867
+ const e = _r(), n = Dr(), r = (s) => (typeof s == "string" || typeof s == "number") && s ? String(s).replace(/_/g, ".").split(".").map((o) => parseInt(o) || 0) : [], i = (s = "") => {
3868
3868
  if (!s) return [];
3869
3869
  const o = new RegExp("^.*" + s + "[ :\\/]?(\\d+([\\._]\\d+)*).*$");
3870
3870
  return o.test(n) ? r(n.replace(o, "$1")) : [];
@@ -3895,14 +3895,14 @@ let Ur = class {
3895
3895
  }, []) };
3896
3896
  }
3897
3897
  };
3898
- class Yo extends Ur {
3898
+ class Yo extends Br {
3899
3899
  get iOSRequest() {
3900
- const e = Br(), n = _r();
3900
+ const e = _r(), n = Dr();
3901
3901
  if (this.OS.iOS && !this.OS.iPadOS) return "mobile";
3902
3902
  if (this.OS.iPadOS) return /\(iPad;/.test(n) || e && /^iPad(OS)?$/.test(e.platform) ? "mobile" : "desktop";
3903
3903
  }
3904
3904
  }
3905
- const el = new Ur();
3905
+ const el = new Br();
3906
3906
  new Yo();
3907
3907
  const Gn = ["div", "span", "p", "br", "hr", "b", "i", "em", "strong", "s", "u", "mark", "small", "sub", "sup", "abbr", "cite", "code", "data", "dfn", "kbd", "q", "samp", "time", "var", "blockquote", "pre", "svg", "g", "path", "circle", "ellipse", "rect", "line", "polygon", "polyline", "text", "tspan", "defs", "use"], tl = /^on/i, nl = /* @__PURE__ */ new Set(["href", "src", "action", "formaction", "xlink:href"]), rl = /^\s*(javascript|data):/i;
3908
3908
  function il(t, e) {
@@ -3926,18 +3926,18 @@ function sl(t, e) {
3926
3926
  for (const { name: i, value: s } of Array.from(r.attributes)) (tl.test(i) || nl.has(i) && rl.test(s)) && r.removeAttribute(i);
3927
3927
  }
3928
3928
  }
3929
- function Et(t) {
3929
+ function Ct(t) {
3930
3930
  switch (t) {
3931
- case O.Mask:
3931
+ case A.Mask:
3932
3932
  return "rgba(255, 255, 255, 0.5)";
3933
- case O.Highlight:
3934
- case O.HighlightUnderline:
3933
+ case A.Highlight:
3934
+ case A.HighlightUnderline:
3935
3935
  return "#FFFF00";
3936
3936
  default:
3937
3937
  return "#FF0000";
3938
3938
  }
3939
3939
  }
3940
- const O = { Highlight: "highlight", HighlightUnderline: "highlightUnderline", Underline: "underline", Strikethrough: "strikethrough", Outline: "outline", TextColor: "textColor", Mask: "mask", Template: "template" };
3940
+ const A = { Highlight: "highlight", HighlightUnderline: "highlightUnderline", Underline: "underline", Strikethrough: "strikethrough", Outline: "outline", TextColor: "textColor", Mask: "mask", Template: "template" };
3941
3941
  var al = ((t) => (t.Wrap = "wrap", t.Viewport = "viewport", t.Bounds = "bounds", t.Page = "page", t))(al || {}), ol = ((t) => (t.Boxes = "boxes", t.Bounds = "bounds", t))(ol || {});
3942
3942
  const ll = () => "Highlight" in window, Wn = ["IMG", "IMAGE", "AUDIO", "VIDEO", "SVG"];
3943
3943
  class cl {
@@ -3978,15 +3978,15 @@ class cl {
3978
3978
  }
3979
3979
  if (this.experimentalHighlights) {
3980
3980
  const { type: o } = e.style, { layout: a, width: c, expand: l } = e.style;
3981
- o !== O.TextColor && (o === O.Outline || o === O.Template || o === O.Mask || a !== void 0 && a !== "boxes" || c !== void 0 && c !== "wrap" || l) && this.notTextFlag?.set(n, !0);
3981
+ o !== A.TextColor && (o === A.Outline || o === A.Template || o === A.Mask || a !== void 0 && a !== "boxes" || c !== void 0 && c !== "wrap" || l) && this.notTextFlag?.set(n, !0);
3982
3982
  }
3983
3983
  const s = { decoration: e, id: n, range: r, hitRects: [], clickableElements: void 0, container: void 0 };
3984
- this.items.push(s), this.layout(s), s.hitRects = this.clientRectsToDocCoords(ze(s.range, !1, !1, (s.decoration.style.expand ?? 0) + this.hitGap())), this.renderLayout([s]);
3984
+ this.items.push(s), this.layout(s), s.hitRects = this.clientRectsToDocCoords(Ue(s.range, !1, !1, (s.decoration.style.expand ?? 0) + this.hitGap())), this.renderLayout([s]);
3985
3985
  }
3986
3986
  remove(e) {
3987
3987
  const n = this.items.findIndex((s) => s.decoration.id === e);
3988
3988
  if (n < 0) return;
3989
- const r = this.items[n], i = r.decoration.style?.type === O.Mask;
3989
+ const r = this.items[n], i = r.decoration.style?.type === A.Mask;
3990
3990
  if (this.items.splice(n, 1), r.clickableElements = void 0, r.container && (r.container.remove(), r.container = void 0), this.experimentalHighlights && !this.notTextFlag?.has(r.id) && r.highlightSubKey) {
3991
3991
  const s = this.wnd.CSS.highlights;
3992
3992
  s.get(r.highlightSubKey)?.delete(r.range), this.items.some((a) => a.highlightSubKey === r.highlightSubKey) || s.delete(r.highlightSubKey);
@@ -4025,7 +4025,7 @@ class cl {
4025
4025
  const { docX: n, docY: r } = this.pointerToDocCoords(e), i = this.wnd.devicePixelRatio;
4026
4026
  for (const s of this.items) {
4027
4027
  let o;
4028
- if (s.decoration.style.type === O.Template) for (const a of s.clickableElements ?? []) {
4028
+ if (s.decoration.style.type === A.Template) for (const a of s.clickableElements ?? []) {
4029
4029
  const c = a.getBoundingClientRect();
4030
4030
  if (K(c, e.clientX, e.clientY, 0)) {
4031
4031
  o = c;
@@ -4047,7 +4047,7 @@ class cl {
4047
4047
  const { docX: n, docY: r } = this.pointerToDocCoords(e), i = this.wnd.devicePixelRatio;
4048
4048
  let s, o;
4049
4049
  for (const a of this.items) {
4050
- if (a.decoration.style.type === O.Template) for (const c of a.clickableElements ?? []) {
4050
+ if (a.decoration.style.type === A.Template) for (const c of a.clickableElements ?? []) {
4051
4051
  const l = c.getBoundingClientRect();
4052
4052
  if (K(l, e.clientX, e.clientY, 0)) {
4053
4053
  s = a, o = l;
@@ -4072,18 +4072,18 @@ class cl {
4072
4072
  this.wnd.cancelAnimationFrame(this.currentRender), this.clearContainer(), this.wnd.document.fonts.ready.then(() => {
4073
4073
  this.currentRender = this.wnd.requestAnimationFrame(() => {
4074
4074
  this.items.forEach((e) => {
4075
- this.layout(e), e.hitRects = this.clientRectsToDocCoords(ze(e.range, !1, !1, (e.decoration.style.expand ?? 0) + this.hitGap()));
4075
+ this.layout(e), e.hitRects = this.clientRectsToDocCoords(Ue(e.range, !1, !1, (e.decoration.style.expand ?? 0) + this.hitGap()));
4076
4076
  }), this.renderLayout(this.items), this.updateSharedMask();
4077
4077
  });
4078
4078
  });
4079
4079
  }
4080
4080
  experimentalLayout(e) {
4081
- const n = this.requireContainer(!0), r = this.wnd.CSS.highlights, i = e.decoration.style, s = i.type ?? O.Highlight, o = i.tint ?? Et(s), a = i.width, c = i.layout, l = this._getSubKey(s, o);
4081
+ const n = this.requireContainer(!0), r = this.wnd.CSS.highlights, i = e.decoration.style, s = i.type ?? A.Highlight, o = i.tint ?? Ct(s), a = i.width, c = i.layout, l = this._getSubKey(s, o);
4082
4082
  e.highlightSubKey && (r.get(e.highlightSubKey)?.delete(e.range), e.highlightSubKey !== l && !this.items.some((p) => p !== e && p.highlightSubKey === e.highlightSubKey) && r.delete(e.highlightSubKey)), e.highlightSubKey = l;
4083
4083
  let d;
4084
4084
  r.has(l) ? d = r.get(l) : (d = new this.wnd.Highlight(), r.set(l, d));
4085
4085
  const u = (p, m) => this.wnd.document.caretPositionFromPoint?.(p, m) ?? null;
4086
- if (s === O.TextColor && (c === "bounds" || a === "bounds" || a === "page")) {
4086
+ if (s === A.TextColor && (c === "bounds" || a === "bounds" || a === "page")) {
4087
4087
  const p = Se(this.wnd);
4088
4088
  if (p.isVertical) console.warn("Vertical writing detected: caretPositionFromPoint has known bugs, falling back to original range"), d.add(e.range);
4089
4089
  else {
@@ -4092,41 +4092,41 @@ class cl {
4092
4092
  a === "page" ? (w = Math.floor(p.inlineStart(m) / p.pageInlineSize) * p.pageInlineSize, E = p.pageInlineSize) : (w = p.inlineStart(m), E = p.inlineSize(m));
4093
4093
  const C = u(w, p.blockStart(m) + 1), N = u(w + E, p.blockStart(m) + p.blockSize(m) - 1);
4094
4094
  if (C && N) {
4095
- const I = this.wnd.document.createRange();
4096
- I.setStart(C.offsetNode, C.offset), I.setEnd(N.offsetNode, N.offset), d.add(I), e.range = I;
4095
+ const L = this.wnd.document.createRange();
4096
+ L.setStart(C.offsetNode, C.offset), L.setEnd(N.offsetNode, N.offset), d.add(L), e.range = L;
4097
4097
  } else d.add(e.range);
4098
4098
  }
4099
4099
  } else d.add(e.range);
4100
- const g = this.getBackgroundColor(), f = i.enforceContrast !== !1 ? ne(o, g) : o;
4100
+ const g = this.getBackgroundColor(), f = i.enforceContrast !== !1 ? te(o, g) : o;
4101
4101
  let y;
4102
4102
  switch (s) {
4103
- case O.Underline:
4103
+ case A.Underline:
4104
4104
  y = `::highlight(${l}) {
4105
4105
  text-decoration: underline;
4106
4106
  text-decoration-color: ${f};
4107
4107
  text-decoration-thickness: 0.1em;
4108
4108
  }`;
4109
4109
  break;
4110
- case O.Strikethrough:
4110
+ case A.Strikethrough:
4111
4111
  y = `::highlight(${l}) {
4112
4112
  text-decoration: line-through;
4113
4113
  text-decoration-color: ${f};
4114
4114
  text-decoration-thickness: 0.1em;
4115
4115
  }`;
4116
4116
  break;
4117
- case O.Outline:
4117
+ case A.Outline:
4118
4118
  y = `::highlight(${l}) {
4119
4119
  outline: 2px solid ${f};
4120
4120
  outline-offset: 1px;
4121
4121
  }`;
4122
4122
  break;
4123
- case O.TextColor:
4123
+ case A.TextColor:
4124
4124
  y = `::highlight(${l}) {
4125
4125
  color: ${f};
4126
4126
  }`;
4127
4127
  break;
4128
- case O.HighlightUnderline: {
4129
- const { r: p, g: m, b: w } = Z(f), E = `rgba(${p}, ${m}, ${w}, 0.3)`;
4128
+ case A.HighlightUnderline: {
4129
+ const { r: p, g: m, b: w } = X(f), E = `rgba(${p}, ${m}, ${w}, 0.3)`;
4130
4130
  y = `::highlight(${l}) {
4131
4131
  color: ${Mn(f, g)};
4132
4132
  background-color: ${E};
@@ -4136,7 +4136,7 @@ class cl {
4136
4136
  }`;
4137
4137
  break;
4138
4138
  }
4139
- case O.Highlight:
4139
+ case A.Highlight:
4140
4140
  default:
4141
4141
  y = `::highlight(${l}) {
4142
4142
  color: ${Mn(f, g)};
@@ -4181,12 +4181,12 @@ class cl {
4181
4181
  r.applyPosition(u, r.inlineStart(m) + r.inlineScrollOffset, r.blockStart(m) + r.blockScrollOffset, r.inlineSize(m), r.blockSize(m), i);
4182
4182
  }
4183
4183
  }, a = e.range.getBoundingClientRect(), c = e.decoration.style, l = (() => {
4184
- if (c.type !== O.Outline) return 0;
4184
+ if (c.type !== A.Outline) return 0;
4185
4185
  const u = c.width;
4186
4186
  return u === "page" || u === "viewport" ? 3 : 0;
4187
4187
  })();
4188
4188
  let d;
4189
- if (c.type === O.Template) {
4189
+ if (c.type === A.Template) {
4190
4190
  c.stylesheet && this.injectCustomStylesheet(c.stylesheet);
4191
4191
  const u = il(this.wnd, c.element);
4192
4192
  if (!u) {
@@ -4195,34 +4195,34 @@ class cl {
4195
4195
  }
4196
4196
  u.style.setProperty("pointer-events", "none"), d = u;
4197
4197
  } else {
4198
- const u = c, g = u.type ?? O.Highlight, f = u.tint ?? Et(g);
4199
- if (g === O.TextColor) {
4198
+ const u = c, g = u.type ?? A.Highlight, f = u.tint ?? Ct(g);
4199
+ if (g === A.TextColor) {
4200
4200
  e.container = n, e.clickableElements = [];
4201
4201
  return;
4202
4202
  }
4203
- if (g === O.Mask) {
4203
+ if (g === A.Mask) {
4204
4204
  e.container = n, e.clickableElements = [], this.updateSharedMask();
4205
4205
  return;
4206
4206
  }
4207
4207
  const y = this.getCurrentDarkMode(), p = this.getBackgroundColor(), m = u.enforceContrast !== !1, w = (() => {
4208
4208
  switch (g) {
4209
- case O.Underline: {
4210
- const C = m ? ne(f, p) : f, N = u.layout === "bounds", [I, P] = r.isVertical ? ["border-right", "border-left"] : ["border-bottom", "border-top"];
4211
- return [N ? `${P}: 0.1em solid ${C} !important` : null, `${I}: 0.1em solid ${C} !important`, "background-color: transparent !important", "box-sizing: border-box !important"].filter(Boolean).join("; ");
4209
+ case A.Underline: {
4210
+ const C = m ? te(f, p) : f, N = u.layout === "bounds", [L, P] = r.isVertical ? ["border-right", "border-left"] : ["border-bottom", "border-top"];
4211
+ return [N ? `${P}: 0.1em solid ${C} !important` : null, `${L}: 0.1em solid ${C} !important`, "background-color: transparent !important", "box-sizing: border-box !important"].filter(Boolean).join("; ");
4212
4212
  }
4213
- case O.Strikethrough: {
4214
- const C = m ? ne(f, p) : f;
4213
+ case A.Strikethrough: {
4214
+ const C = m ? te(f, p) : f;
4215
4215
  return u.layout === "bounds" ? [`background: repeating-linear-gradient(-45deg, transparent, transparent 19px, ${C} 19px, ${C} 20px) !important`, "background-color: transparent !important", "box-sizing: border-box !important"].join("; ") : [`background-color: ${C} !important`, "box-sizing: border-box !important"].join("; ");
4216
4216
  }
4217
- case O.Outline:
4218
- return [`outline: 2px solid ${m ? ne(f, p) : f} !important`, "outline-offset: 1px !important", "background-color: transparent !important", "box-sizing: border-box !important"].join("; ");
4219
- case O.HighlightUnderline: {
4220
- const C = m ? ne(f, p) : f, { r: N, g: I, b: P } = Z(C), _ = `rgba(${N}, ${I}, ${P}, 0.3)`, pe = u.layout === "bounds", [me, b] = r.isVertical ? ["border-right", "border-left"] : ["border-bottom", "border-top"];
4217
+ case A.Outline:
4218
+ return [`outline: 2px solid ${m ? te(f, p) : f} !important`, "outline-offset: 1px !important", "background-color: transparent !important", "box-sizing: border-box !important"].join("; ");
4219
+ case A.HighlightUnderline: {
4220
+ const C = m ? te(f, p) : f, { r: N, g: L, b: P } = X(C), _ = `rgba(${N}, ${L}, ${P}, 0.3)`, pe = u.layout === "bounds", [me, b] = r.isVertical ? ["border-right", "border-left"] : ["border-bottom", "border-top"];
4221
4221
  return [`background-color: ${_} !important`, pe ? `${b}: 0.1em solid ${C} !important` : null, `${me}: 0.1em solid ${C} !important`, "box-sizing: border-box !important"].filter(Boolean).join("; ");
4222
4222
  }
4223
- case O.Highlight:
4223
+ case A.Highlight:
4224
4224
  default:
4225
- return [`background-color: ${m ? ne(f, p) : f} !important`, `mix-blend-mode: ${y ? "exclusion" : "multiply"} !important`, "opacity: 1 !important", "box-sizing: border-box !important"].join("; ");
4225
+ return [`background-color: ${m ? te(f, p) : f} !important`, `mix-blend-mode: ${y ? "exclusion" : "multiply"} !important`, "opacity: 1 !important", "box-sizing: border-box !important"].join("; ");
4226
4226
  }
4227
4227
  })(), E = this.wnd.document.createElement("template");
4228
4228
  E.innerHTML = `<div data-readium="true" class="readium-${g}" style="${w}"></div>`.trim(), d = E.content.firstElementChild;
@@ -4233,8 +4233,8 @@ class cl {
4233
4233
  const g = s ? { left: a.left - s, right: a.right + s, top: a.top - s, bottom: a.bottom + s, width: a.width + s * 2, height: a.height + s * 2 } : a;
4234
4234
  o(u, g, a, l), n.append(u);
4235
4235
  } else {
4236
- const u = c.type, g = u === O.Underline || u === O.Strikethrough, f = u === O.Strikethrough, y = g ? Fo(e.range, ["rt", "rp"]) : e.range;
4237
- let p = ze(y, !0, r.isVertical, g ? 0 : s);
4236
+ const u = c.type, g = u === A.Underline || u === A.Strikethrough, f = u === A.Strikethrough, y = g ? Fo(e.range, ["rt", "rp"]) : e.range;
4237
+ let p = Ue(y, !0, r.isVertical, g ? 0 : s);
4238
4238
  p = p.sort((m, w) => r.isVertical ? (r.isVertLR ? 1 : -1) * (m.left - w.left) : m.top - w.top);
4239
4239
  for (let m of p) {
4240
4240
  const w = d.cloneNode(!0);
@@ -4262,31 +4262,31 @@ class cl {
4262
4262
  return this.container || (this.shadowRoot || (this.shadowHost = this.wnd.document.createElement("div"), this.shadowHost.style.cssText = "position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none", this.wnd.document.body.appendChild(this.shadowHost), this.shadowRoot = this.shadowHost.attachShadow({ mode: "open" })), this.container = this.wnd.document.createElement("div"), this.container.setAttribute("id", this.id), this.container.dataset.group = this.name, this.container.dataset.readium = "true", this.container.style.setProperty("pointer-events", "none"), this.container.style.display = "contents", this.shadowRoot.appendChild(this.container)), this.container;
4263
4263
  }
4264
4264
  getCurrentDarkMode() {
4265
- return Bn(this.wnd, "--USER__appearance") === "readium-night-on" || Dr(this.getBackgroundColor());
4265
+ return Bn(this.wnd, "--USER__appearance") === "readium-night-on" || $r(this.getBackgroundColor());
4266
4266
  }
4267
4267
  getBackgroundColor() {
4268
4268
  return Bn(this.wnd, "--USER__backgroundColor") || this.wnd.getComputedStyle(this.wnd.document.documentElement).getPropertyValue("background-color");
4269
4269
  }
4270
4270
  updateSharedMask() {
4271
- const e = this.items.filter((g) => g.decoration.style?.type === O.Mask);
4271
+ const e = this.items.filter((g) => g.decoration.style?.type === A.Mask);
4272
4272
  if (e.length === 0) {
4273
4273
  this.maskSvg && (this.maskSvg.remove(), this.maskSvg = void 0), this.shadowRoot && (this.shadowRoot.innerHTML = "");
4274
4274
  return;
4275
4275
  }
4276
4276
  const n = Se(this.wnd), r = 1 / this.effectiveZoom(), i = this.wnd.document.documentElement, s = i.scrollWidth, o = i.scrollHeight, a = [];
4277
4277
  for (const g of e) {
4278
- const f = g.decoration.style, y = f.layout ?? "boxes", p = f.width ?? "wrap", m = f.expand ?? 0, w = g.range.getBoundingClientRect(), E = y === "bounds" ? [m ? { left: w.left - m, top: w.top - m, right: w.right + m, bottom: w.bottom + m, width: w.width + m * 2, height: w.height + m * 2 } : w] : ze(g.range, !1, !1, m);
4278
+ const f = g.decoration.style, y = f.layout ?? "boxes", p = f.width ?? "wrap", m = f.expand ?? 0, w = g.range.getBoundingClientRect(), E = y === "bounds" ? [m ? { left: w.left - m, top: w.top - m, right: w.right + m, bottom: w.bottom + m, width: w.width + m * 2, height: w.height + m * 2 } : w] : Ue(g.range, !1, !1, m);
4279
4279
  for (const C of E) {
4280
4280
  let N;
4281
4281
  switch (p) {
4282
4282
  case "viewport": {
4283
- const I = Math.floor(n.inlineStart(C) / n.viewportInlineSize) * n.viewportInlineSize;
4284
- N = n.toRect(I, n.blockStart(C), n.viewportInlineSize, n.blockSize(C));
4283
+ const L = Math.floor(n.inlineStart(C) / n.viewportInlineSize) * n.viewportInlineSize;
4284
+ N = n.toRect(L, n.blockStart(C), n.viewportInlineSize, n.blockSize(C));
4285
4285
  break;
4286
4286
  }
4287
4287
  case "page": {
4288
- const I = Math.floor(n.inlineStart(C) / n.pageInlineSize) * n.pageInlineSize;
4289
- N = n.toRect(I, n.blockStart(C), n.pageInlineSize, n.blockSize(C));
4288
+ const L = Math.floor(n.inlineStart(C) / n.pageInlineSize) * n.pageInlineSize;
4289
+ N = n.toRect(L, n.blockStart(C), n.pageInlineSize, n.blockSize(C));
4290
4290
  break;
4291
4291
  }
4292
4292
  case "bounds": {
@@ -4317,7 +4317,7 @@ class cl {
4317
4317
  d && d.setAttribute("d", c);
4318
4318
  const u = this.maskSvg.querySelector("rect");
4319
4319
  if (u) {
4320
- const g = e[0].decoration.style.tint, f = g ?? this.getBackgroundColor() ?? Et(O.Mask), y = g ? "1" : "0.5";
4320
+ const g = e[0].decoration.style.tint, f = g ?? this.getBackgroundColor() ?? Ct(A.Mask), y = g ? "1" : "0.5";
4321
4321
  u.setAttribute("x", "0"), u.setAttribute("y", "0"), u.setAttribute("width", String(s)), u.setAttribute("height", String(o)), u.setAttribute("fill", f), u.setAttribute("fill-opacity", y);
4322
4322
  }
4323
4323
  }
@@ -4335,7 +4335,7 @@ class cl {
4335
4335
  this.wnd.document.getElementById(`${this.id}-custom-style`)?.remove(), this.container && (this.container.remove(), this.container = void 0);
4336
4336
  }
4337
4337
  }
4338
- const zr = class Ee extends To {
4338
+ const Ur = class Ee extends To {
4339
4339
  constructor() {
4340
4340
  super(...arguments), this.resizeFrame = 0, this.lastGroupId = 0, this.groups = /* @__PURE__ */ new Map(), this.handleResizer = this.handleResize.bind(this);
4341
4341
  }
@@ -4388,21 +4388,21 @@ const zr = class Ee extends To {
4388
4388
  return e.removeEventListener("orientationchange", this.handleResizer), e.removeEventListener("resize", this.handleResizer), n.unregisterAll(Ee.moduleName), this.resizeObserver.disconnect(), this.styleObserver.disconnect(), this.cleanup(), n.log("Decorator Unmounted"), !0;
4389
4389
  }
4390
4390
  };
4391
- zr.moduleName = "decorator";
4392
- let ul = zr;
4393
- const hl = new Set(Object.values(O));
4391
+ Ur.moduleName = "decorator";
4392
+ let ul = Ur;
4393
+ const hl = new Set(Object.values(A));
4394
4394
  function dl(t, e) {
4395
- return t === O.TextColor ? typeof window < "u" && "Highlight" in window : hl.has(t) ? !0 : !!e?.[t];
4395
+ return t === A.TextColor ? typeof window < "u" && "Highlight" in window : hl.has(t) ? !0 : !!e?.[t];
4396
4396
  }
4397
4397
  function Kn(t, e) {
4398
4398
  const { style: n } = t;
4399
- if (n.type === O.Template) {
4399
+ if (n.type === A.Template) {
4400
4400
  const r = n;
4401
4401
  return { ...t, style: { ...r, element: Jn(r, t) } };
4402
4402
  }
4403
4403
  if (n.type && e?.[n.type]) {
4404
4404
  const r = e[n.type];
4405
- return { ...t, style: { type: O.Template, layout: r.layout, width: r.width, stylesheet: r.stylesheet, element: Jn(r, t) } };
4405
+ return { ...t, style: { type: A.Template, layout: r.layout, width: r.width, stylesheet: r.stylesheet, element: Jn(r, t) } };
4406
4406
  }
4407
4407
  return t;
4408
4408
  }
@@ -4411,7 +4411,7 @@ function Jn(t, e) {
4411
4411
  }
4412
4412
  function gl(t, e) {
4413
4413
  if (t.type !== e.type) return !1;
4414
- if (t.type === O.Template) {
4414
+ if (t.type === A.Template) {
4415
4415
  const i = t, s = e;
4416
4416
  return i.layout === s.layout && i.width === s.width && i.stylesheet === s.stylesheet;
4417
4417
  }
@@ -4421,7 +4421,7 @@ function gl(t, e) {
4421
4421
  function fl(t, e) {
4422
4422
  return t.locator.href === e.locator.href && JSON.stringify(t.locator.locations?.serialize?.() ?? t.locator.locations) === JSON.stringify(e.locator.locations?.serialize?.() ?? e.locator.locations) && JSON.stringify(t.locator.text ?? null) === JSON.stringify(e.locator.text ?? null) && gl(t.style, e.style) && JSON.stringify(t.extras ?? null) === JSON.stringify(e.extras ?? null);
4423
4423
  }
4424
- let jr = class {
4424
+ let zr = class {
4425
4425
  constructor() {
4426
4426
  this.queue = [], this.channel = typeof MessageChannel < "u" ? new MessageChannel() : void 0, this.channel && (this.channel.port1.onmessage = () => this.flush());
4427
4427
  }
@@ -4444,7 +4444,7 @@ class pl {
4444
4444
  }
4445
4445
  let ml = class {
4446
4446
  constructor(e) {
4447
- this.channel = e, this.registrar = /* @__PURE__ */ new Map(), this.outbox = new jr(), this.ready = !0;
4447
+ this.channel = e, this.registrar = /* @__PURE__ */ new Map(), this.outbox = new zr(), this.ready = !0;
4448
4448
  }
4449
4449
  register(e, n, r) {
4450
4450
  (Array.isArray(e) ? e : [e]).forEach((i) => {
@@ -4484,7 +4484,7 @@ let ml = class {
4484
4484
  };
4485
4485
  class yl {
4486
4486
  constructor(e) {
4487
- this.channel = e, this.listeners = /* @__PURE__ */ new Map(), this.outbox = new jr(), this.ready = !0;
4487
+ this.channel = e, this.listeners = /* @__PURE__ */ new Map(), this.outbox = new zr(), this.ready = !0;
4488
4488
  }
4489
4489
  send(e, n, r) {
4490
4490
  this.outbox.push(() => this.channel.frame._dispatch(e, n, r ?? (() => {
@@ -4554,7 +4554,7 @@ function vl(t) {
4554
4554
  function wl(t) {
4555
4555
  return t && typeof t == "string" ? [t] : vl(t);
4556
4556
  }
4557
- function Ot(t) {
4557
+ function Et(t) {
4558
4558
  return isNaN(t) ? void 0 : t;
4559
4559
  }
4560
4560
  class W {
@@ -4563,7 +4563,7 @@ class W {
4563
4563
  }
4564
4564
  static deserialize(e) {
4565
4565
  if (!e) return;
4566
- const n = Ot(e.progression), r = Ot(e.totalProgression), i = Ot(e.position), s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set(["fragment", "fragments", "progression", "totalProgression", "position", "otherLocations"]);
4566
+ const n = Et(e.progression), r = Et(e.totalProgression), i = Et(e.position), s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set(["fragment", "fragments", "progression", "totalProgression", "position", "otherLocations"]);
4567
4567
  return Object.entries(e).forEach(([a, c]) => {
4568
4568
  o.has(a) || s.set(a, c);
4569
4569
  }), e.otherLocations instanceof Map && e.otherLocations.forEach((a, c) => s.set(c, a)), new W({ fragments: wl(e.fragments || e.fragment), progression: n !== void 0 && n >= 0 && n <= 1 ? n : void 0, totalProgression: r !== void 0 && r >= 0 && r <= 1 ? r : void 0, position: i !== void 0 && i > 0 ? i : void 0, otherLocations: s.size === 0 ? void 0 : s });
@@ -4573,19 +4573,19 @@ class W {
4573
4573
  return this.fragments && (e.fragments = this.fragments), this.progression !== void 0 && (e.progression = this.progression), this.totalProgression !== void 0 && (e.totalProgression = this.totalProgression), this.position !== void 0 && (e.position = this.position), this.otherLocations && this.otherLocations.forEach((n, r) => e[r] = n), e;
4574
4574
  }
4575
4575
  }
4576
- class ct {
4576
+ class lt {
4577
4577
  constructor(e) {
4578
4578
  this.after = e.after, this.before = e.before, this.highlight = e.highlight;
4579
4579
  }
4580
4580
  static deserialize(e) {
4581
- if (e) return new ct({ after: e.after, before: e.before, highlight: e.highlight });
4581
+ if (e) return new lt({ after: e.after, before: e.before, highlight: e.highlight });
4582
4582
  }
4583
4583
  serialize() {
4584
4584
  const e = {};
4585
4585
  return this.after !== void 0 && (e.after = this.after), this.before !== void 0 && (e.before = this.before), this.highlight !== void 0 && (e.highlight = this.highlight), e;
4586
4586
  }
4587
4587
  }
4588
- class Ye {
4588
+ class Ze {
4589
4589
  constructor(e) {
4590
4590
  const n = e.href.indexOf("#"), r = n >= 0 ? e.href.slice(n + 1) : void 0;
4591
4591
  this.href = n >= 0 ? e.href.slice(0, n) : e.href, this.type = e.type, this.title = e.title;
@@ -4593,22 +4593,22 @@ class Ye {
4593
4593
  this.locations = e.locations ? s ? new W({ ...e.locations, fragments: [r] }) : e.locations : r ? new W({ fragments: [r] }) : new W({}), this.text = e.text;
4594
4594
  }
4595
4595
  static deserialize(e) {
4596
- if (e && e.href && e.type) return new Ye({ href: e.href, type: e.type, title: e.title, locations: W.deserialize(e.locations), text: ct.deserialize(e.text) });
4596
+ if (e && e.href && e.type) return new Ze({ href: e.href, type: e.type, title: e.title, locations: W.deserialize(e.locations), text: lt.deserialize(e.text) });
4597
4597
  }
4598
4598
  serialize() {
4599
4599
  const e = { href: this.href, type: this.type };
4600
4600
  return this.title !== void 0 && (e.title = this.title), this.locations && (e.locations = this.locations.serialize()), this.text && (e.text = this.text.serialize()), e;
4601
4601
  }
4602
4602
  copyWithLocations(e) {
4603
- return new Ye({ href: this.href, type: this.type, title: this.title, text: this.text, locations: new W({ ...this.locations, ...e }) });
4603
+ return new Ze({ href: this.href, type: this.type, title: this.title, text: this.text, locations: new W({ ...this.locations, ...e }) });
4604
4604
  }
4605
4605
  }
4606
4606
  function Sl(t, e = window) {
4607
- const { highlight: n, before: r, after: i, selector: s, fragment: o } = t, c = n !== void 0 || r !== void 0 || i !== void 0 ? new ct({ highlight: n, before: r, after: i }) : void 0, l = s ? /* @__PURE__ */ new Map([["cssSelector", s]]) : void 0, u = l !== void 0 || o !== void 0 ? new W({
4607
+ const { highlight: n, before: r, after: i, selector: s, fragment: o } = t, c = n !== void 0 || r !== void 0 || i !== void 0 ? new lt({ highlight: n, before: r, after: i }) : void 0, l = s ? /* @__PURE__ */ new Map([["cssSelector", s]]) : void 0, u = l !== void 0 || o !== void 0 ? new W({
4608
4608
  fragments: o ? [o] : void 0,
4609
4609
  otherLocations: l
4610
4610
  }) : void 0;
4611
- return new Ye({
4611
+ return new Ze({
4612
4612
  href: e.location.href,
4613
4613
  type: "text/html",
4614
4614
  text: c,
@@ -4637,11 +4637,11 @@ class xl extends bl {
4637
4637
  super.destroy(), this.decorator.unmount(this.wnd, this.channel.frame), this.channel.frame.destroy();
4638
4638
  }
4639
4639
  }
4640
- function bc(t = window, e = {}) {
4640
+ function vc(t = window, e = {}) {
4641
4641
  const n = new pl(), r = new ul();
4642
4642
  return r.mount(t, n.frame), new xl(n, t, r, e);
4643
4643
  }
4644
- class vc {
4644
+ class wc {
4645
4645
  providers = /* @__PURE__ */ new Map();
4646
4646
  register(e) {
4647
4647
  if (this.providers.has(e.id))
@@ -4681,7 +4681,7 @@ class vc {
4681
4681
  return n;
4682
4682
  }
4683
4683
  }
4684
- const et = { range: [0, 5e3], step: 100 }, tt = { range: [0.1, 10], step: 0.1 }, nt = { range: [0, 2], step: 0.1 }, rt = { range: [0, 1], step: 0.05 }, en = ["none", "few", "some", "most", "custom"], tn = ["none", "block-level", "always"], nn = ["plain", "ssml"], rn = ["utterance", "block"], Qn = [
4684
+ const Ye = { range: [0, 5e3], step: 100 }, et = { range: [0.1, 10], step: 0.1 }, tt = { range: [0, 2], step: 0.1 }, nt = { range: [0, 1], step: 0.05 }, Yt = ["none", "few", "some", "most", "custom"], en = ["none", "block-level", "always"], tn = ["plain", "ssml"], nn = ["none", "utterance", "block"], Qn = [
4685
4685
  "format",
4686
4686
  "inlineContextualization",
4687
4687
  "verbosity",
@@ -4689,7 +4689,7 @@ const et = { range: [0, 5e3], step: 100 }, tt = { range: [0.1, 10], step: 0.1 },
4689
4689
  "contextualize",
4690
4690
  "language"
4691
4691
  ];
4692
- function Te(t) {
4692
+ function rn(t) {
4693
4693
  return t == null || typeof t == "boolean" ? t : void 0;
4694
4694
  }
4695
4695
  function V(t, e) {
@@ -4701,7 +4701,7 @@ function F(t, e) {
4701
4701
  const n = Math.min(...e), r = Math.max(...e);
4702
4702
  return t >= n && t <= r ? t : void 0;
4703
4703
  }
4704
- function Re(t) {
4704
+ function Te(t) {
4705
4705
  return t == null || Array.isArray(t) && t.every((e) => typeof e == "string") ? t : void 0;
4706
4706
  }
4707
4707
  class kl {
@@ -4712,16 +4712,15 @@ class kl {
4712
4712
  contextualize;
4713
4713
  language;
4714
4714
  pauseDuration;
4715
- pauseScope;
4716
- automaticPausesAtPageOrSpreadEnd;
4715
+ autoPause;
4717
4716
  rate;
4718
4717
  pitch;
4719
4718
  volume;
4720
4719
  constructor(e = {}) {
4721
- this.format = V(e.format, nn) ?? "plain", this.inlineContextualization = Te(e.inlineContextualization) ?? !1, this.verbosity = V(e.verbosity, en) ?? "few", this.skip = Re(e.skip) ?? [], this.contextualize = Re(e.contextualize) ?? [], this.language = V(e.language, tn) ?? "always", this.pauseDuration = F(e.pauseDuration, et.range) ?? 300, this.pauseScope = V(e.pauseScope, rn) ?? "utterance", this.automaticPausesAtPageOrSpreadEnd = Te(e.automaticPausesAtPageOrSpreadEnd) ?? !1, this.rate = F(e.rate, tt.range) ?? 1, this.pitch = F(e.pitch, nt.range) ?? 1, this.volume = F(e.volume, rt.range) ?? 1;
4720
+ this.format = V(e.format, tn) ?? "plain", this.inlineContextualization = rn(e.inlineContextualization) ?? !1, this.verbosity = V(e.verbosity, Yt) ?? "few", this.skip = Te(e.skip) ?? [], this.contextualize = Te(e.contextualize) ?? [], this.language = V(e.language, en) ?? "block-level", this.pauseDuration = F(e.pauseDuration, Ye.range) ?? 300, this.autoPause = V(e.autoPause, nn) ?? "none", this.rate = F(e.rate, et.range) ?? 1, this.pitch = F(e.pitch, tt.range) ?? 1, this.volume = F(e.volume, nt.range) ?? 1;
4722
4721
  }
4723
4722
  }
4724
- class Ne {
4723
+ class Re {
4725
4724
  format;
4726
4725
  inlineContextualization;
4727
4726
  verbosity;
@@ -4729,22 +4728,21 @@ class Ne {
4729
4728
  contextualize;
4730
4729
  language;
4731
4730
  pauseDuration;
4732
- pauseScope;
4733
- automaticPausesAtPageOrSpreadEnd;
4731
+ autoPause;
4734
4732
  rate;
4735
4733
  pitch;
4736
4734
  volume;
4737
4735
  constructor(e = {}) {
4738
- this.format = V(e.format, nn), this.inlineContextualization = Te(e.inlineContextualization), this.verbosity = V(e.verbosity, en), this.skip = Re(e.skip), this.contextualize = Re(e.contextualize), this.language = V(e.language, tn), this.pauseDuration = F(e.pauseDuration, et.range), this.pauseScope = V(e.pauseScope, rn), this.automaticPausesAtPageOrSpreadEnd = Te(e.automaticPausesAtPageOrSpreadEnd), this.rate = F(e.rate, tt.range), this.pitch = F(e.pitch, nt.range), this.volume = F(e.volume, rt.range);
4736
+ this.format = V(e.format, tn), this.inlineContextualization = rn(e.inlineContextualization), this.verbosity = V(e.verbosity, Yt), this.skip = Te(e.skip), this.contextualize = Te(e.contextualize), this.language = V(e.language, en), this.pauseDuration = F(e.pauseDuration, Ye.range), this.autoPause = V(e.autoPause, nn), this.rate = F(e.rate, et.range), this.pitch = F(e.pitch, tt.range), this.volume = F(e.volume, nt.range);
4739
4737
  }
4740
4738
  merging(e) {
4741
4739
  const n = { ...this };
4742
4740
  for (const r of Object.keys(e))
4743
4741
  e[r] !== void 0 && (n[r] = e[r]);
4744
- return new Ne(n);
4742
+ return new Re(n);
4745
4743
  }
4746
4744
  }
4747
- class ut {
4745
+ class ct {
4748
4746
  _value;
4749
4747
  _effectiveValue;
4750
4748
  _isEffective;
@@ -4773,7 +4771,7 @@ class ut {
4773
4771
  this._value = null, this._onChange(this._value);
4774
4772
  }
4775
4773
  }
4776
- class Fe extends ut {
4774
+ class Ve extends ct {
4777
4775
  _supportedValues;
4778
4776
  constructor({
4779
4777
  initialValue: e = null,
@@ -4796,9 +4794,9 @@ class Fe extends ut {
4796
4794
  return this._supportedValues;
4797
4795
  }
4798
4796
  }
4799
- class Xn extends ut {
4797
+ class Cl extends ct {
4800
4798
  set value(e) {
4801
- if (e != null && Te(e) === void 0)
4799
+ if (e != null && rn(e) === void 0)
4802
4800
  throw new Error(`Value '${String(e)}' is not a boolean.`);
4803
4801
  this._value = e, this._onChange(this._value);
4804
4802
  }
@@ -4806,9 +4804,9 @@ class Xn extends ut {
4806
4804
  return this._value;
4807
4805
  }
4808
4806
  }
4809
- class Zn extends ut {
4807
+ class Xn extends ct {
4810
4808
  set value(e) {
4811
- if (e != null && Re(e) === void 0)
4809
+ if (e != null && Te(e) === void 0)
4812
4810
  throw new Error(`Value '${String(e)}' is not an array of strings.`);
4813
4811
  this._value = e, this._onChange(this._value);
4814
4812
  }
@@ -4816,7 +4814,7 @@ class Zn extends ut {
4816
4814
  return this._value;
4817
4815
  }
4818
4816
  }
4819
- class He extends ut {
4817
+ class Fe extends ct {
4820
4818
  _supportedRange;
4821
4819
  _step;
4822
4820
  _decimals;
@@ -4860,7 +4858,7 @@ class He extends ut {
4860
4858
  return e.toString();
4861
4859
  }
4862
4860
  }
4863
- class Yn {
4861
+ class Zn {
4864
4862
  preferences;
4865
4863
  settings;
4866
4864
  // Cloned rather than aliased: edits made through this editor's setters
@@ -4868,12 +4866,12 @@ class Yn {
4868
4866
  // once explicitly passed to submitPreferences() — discarding the editor
4869
4867
  // without submitting must leave the navigator untouched.
4870
4868
  constructor(e, n) {
4871
- this.preferences = new Ne({ ...e }), this.settings = n;
4869
+ this.preferences = new Re({ ...e }), this.settings = n;
4872
4870
  }
4873
4871
  // Explicit `null`s, not `undefined` — merging() skips `undefined` fields,
4874
4872
  // so only `null` actually clears them once submitted.
4875
4873
  clear() {
4876
- this.preferences = new Ne({
4874
+ this.preferences = new Re({
4877
4875
  format: null,
4878
4876
  inlineContextualization: null,
4879
4877
  verbosity: null,
@@ -4881,8 +4879,7 @@ class Yn {
4881
4879
  contextualize: null,
4882
4880
  language: null,
4883
4881
  pauseDuration: null,
4884
- pauseScope: null,
4885
- automaticPausesAtPageOrSpreadEnd: null,
4882
+ autoPause: null,
4886
4883
  rate: null,
4887
4884
  pitch: null,
4888
4885
  volume: null
@@ -4892,16 +4889,16 @@ class Yn {
4892
4889
  this.preferences[e] = n;
4893
4890
  }
4894
4891
  get format() {
4895
- return new Fe({
4892
+ return new Ve({
4896
4893
  initialValue: this.preferences.format,
4897
4894
  effectiveValue: this.settings.format,
4898
4895
  isEffective: this.preferences.format != null,
4899
4896
  onChange: (e) => this.updatePreference("format", e ?? null),
4900
- supportedValues: nn
4897
+ supportedValues: tn
4901
4898
  });
4902
4899
  }
4903
4900
  get inlineContextualization() {
4904
- return new Xn({
4901
+ return new Cl({
4905
4902
  initialValue: this.preferences.inlineContextualization,
4906
4903
  effectiveValue: this.settings.inlineContextualization,
4907
4904
  isEffective: this.preferences.inlineContextualization != null,
@@ -4909,16 +4906,16 @@ class Yn {
4909
4906
  });
4910
4907
  }
4911
4908
  get verbosity() {
4912
- return new Fe({
4909
+ return new Ve({
4913
4910
  initialValue: this.preferences.verbosity,
4914
4911
  effectiveValue: this.settings.verbosity,
4915
4912
  isEffective: this.preferences.verbosity != null,
4916
4913
  onChange: (e) => this.updatePreference("verbosity", e ?? null),
4917
- supportedValues: en
4914
+ supportedValues: Yt
4918
4915
  });
4919
4916
  }
4920
4917
  get skip() {
4921
- return new Zn({
4918
+ return new Xn({
4922
4919
  initialValue: this.preferences.skip,
4923
4920
  effectiveValue: this.settings.skip,
4924
4921
  isEffective: this.preferences.skip != null,
@@ -4926,7 +4923,7 @@ class Yn {
4926
4923
  });
4927
4924
  }
4928
4925
  get contextualize() {
4929
- return new Zn({
4926
+ return new Xn({
4930
4927
  initialValue: this.preferences.contextualize,
4931
4928
  effectiveValue: this.settings.contextualize,
4932
4929
  isEffective: this.preferences.contextualize != null,
@@ -4934,76 +4931,66 @@ class Yn {
4934
4931
  });
4935
4932
  }
4936
4933
  get language() {
4937
- return new Fe({
4934
+ return new Ve({
4938
4935
  initialValue: this.preferences.language,
4939
4936
  effectiveValue: this.settings.language,
4940
4937
  isEffective: this.preferences.language != null,
4941
4938
  onChange: (e) => this.updatePreference("language", e ?? null),
4942
- supportedValues: tn
4939
+ supportedValues: en
4943
4940
  });
4944
4941
  }
4945
4942
  get pauseDuration() {
4946
- return new He({
4943
+ return new Fe({
4947
4944
  initialValue: this.preferences.pauseDuration,
4948
4945
  effectiveValue: this.settings.pauseDuration,
4949
4946
  isEffective: this.preferences.pauseDuration != null,
4950
4947
  onChange: (e) => this.updatePreference("pauseDuration", e ?? null),
4951
- supportedRange: et.range,
4952
- step: et.step
4953
- });
4954
- }
4955
- get pauseScope() {
4956
- return new Fe({
4957
- initialValue: this.preferences.pauseScope,
4958
- effectiveValue: this.settings.pauseScope,
4959
- isEffective: this.preferences.pauseScope != null,
4960
- onChange: (e) => this.updatePreference("pauseScope", e ?? null),
4961
- supportedValues: rn
4948
+ supportedRange: Ye.range,
4949
+ step: Ye.step
4962
4950
  });
4963
4951
  }
4964
- // No page/spread boundary signal exists in this library yet, so this
4965
- // has no effect on playback.
4966
- get automaticPausesAtPageOrSpreadEnd() {
4967
- return new Xn({
4968
- initialValue: this.preferences.automaticPausesAtPageOrSpreadEnd,
4969
- effectiveValue: this.settings.automaticPausesAtPageOrSpreadEnd,
4970
- isEffective: this.preferences.automaticPausesAtPageOrSpreadEnd != null,
4971
- onChange: (e) => this.updatePreference("automaticPausesAtPageOrSpreadEnd", e ?? null)
4952
+ get autoPause() {
4953
+ return new Ve({
4954
+ initialValue: this.preferences.autoPause,
4955
+ effectiveValue: this.settings.autoPause,
4956
+ isEffective: this.preferences.autoPause != null,
4957
+ onChange: (e) => this.updatePreference("autoPause", e ?? null),
4958
+ supportedValues: nn
4972
4959
  });
4973
4960
  }
4974
4961
  get rate() {
4975
- return new He({
4962
+ return new Fe({
4976
4963
  initialValue: this.preferences.rate,
4977
4964
  effectiveValue: this.settings.rate,
4978
4965
  isEffective: this.preferences.rate != null,
4979
4966
  onChange: (e) => this.updatePreference("rate", e ?? null),
4980
- supportedRange: tt.range,
4981
- step: tt.step
4967
+ supportedRange: et.range,
4968
+ step: et.step
4982
4969
  });
4983
4970
  }
4984
4971
  get pitch() {
4985
- return new He({
4972
+ return new Fe({
4986
4973
  initialValue: this.preferences.pitch,
4987
4974
  effectiveValue: this.settings.pitch,
4988
4975
  isEffective: this.preferences.pitch != null,
4989
4976
  onChange: (e) => this.updatePreference("pitch", e ?? null),
4990
- supportedRange: nt.range,
4991
- step: nt.step
4977
+ supportedRange: tt.range,
4978
+ step: tt.step
4992
4979
  });
4993
4980
  }
4994
4981
  get volume() {
4995
- return new He({
4982
+ return new Fe({
4996
4983
  initialValue: this.preferences.volume,
4997
4984
  effectiveValue: this.settings.volume,
4998
4985
  isEffective: this.preferences.volume != null,
4999
4986
  onChange: (e) => this.updatePreference("volume", e ?? null),
5000
- supportedRange: rt.range,
5001
- step: rt.step
4987
+ supportedRange: nt.range,
4988
+ step: nt.step
5002
4989
  });
5003
4990
  }
5004
4991
  }
5005
- const Vr = ["audio", "figure", "image", "math", "table", "video"], Fr = [
5006
- ...Vr,
4992
+ const jr = ["audio", "figure", "image", "math", "table", "video"], Vr = [
4993
+ ...jr,
5007
4994
  "blockquote",
5008
4995
  "cell",
5009
4996
  "chapter",
@@ -5018,8 +5005,8 @@ const Vr = ["audio", "figure", "image", "math", "table", "video"], Fr = [
5018
5005
  "rowheader",
5019
5006
  "subtitle",
5020
5007
  "tip"
5021
- ], Cl = [
5022
- ...Fr,
5008
+ ], El = [
5009
+ ...Vr,
5023
5010
  "abstract",
5024
5011
  "acknowledgments",
5025
5012
  "afterword",
@@ -5060,7 +5047,7 @@ const Vr = ["audio", "figure", "image", "math", "table", "video"], Fr = [
5060
5047
  "separator",
5061
5048
  "summary",
5062
5049
  "term"
5063
- ], El = {
5050
+ ], Al = {
5064
5051
  none: /* @__PURE__ */ new Set([
5065
5052
  "aside",
5066
5053
  "bibliography",
@@ -5124,11 +5111,11 @@ const Vr = ["audio", "figure", "image", "math", "table", "video"], Fr = [
5124
5111
  most: /* @__PURE__ */ new Set(["landmarks", "loa", "loi", "lot", "lov", "toc"])
5125
5112
  }, Ol = {
5126
5113
  none: /* @__PURE__ */ new Set(),
5127
- few: new Set(Vr),
5128
- some: new Set(Fr),
5129
- most: new Set(Cl)
5114
+ few: new Set(jr),
5115
+ some: new Set(Vr),
5116
+ most: new Set(El)
5130
5117
  };
5131
- class er {
5118
+ class Yn {
5132
5119
  format;
5133
5120
  inlineContextualization;
5134
5121
  verbosity;
@@ -5136,37 +5123,36 @@ class er {
5136
5123
  contextualize;
5137
5124
  language;
5138
5125
  pauseDuration;
5139
- pauseScope;
5140
- automaticPausesAtPageOrSpreadEnd;
5126
+ autoPause;
5141
5127
  rate;
5142
5128
  pitch;
5143
5129
  volume;
5144
5130
  constructor(e, n) {
5145
- this.format = e.format ?? n.format, this.inlineContextualization = e.inlineContextualization ?? n.inlineContextualization, this.verbosity = e.verbosity ?? n.verbosity, this.verbosity === "custom" ? (this.skip = e.skip ?? n.skip, this.contextualize = e.contextualize ?? n.contextualize) : (this.skip = [...El[this.verbosity]], this.contextualize = [...Ol[this.verbosity]]), this.language = e.language ?? n.language, this.pauseDuration = e.pauseDuration ?? n.pauseDuration, this.pauseScope = e.pauseScope ?? n.pauseScope, this.automaticPausesAtPageOrSpreadEnd = e.automaticPausesAtPageOrSpreadEnd ?? n.automaticPausesAtPageOrSpreadEnd, this.rate = e.rate ?? n.rate, this.pitch = e.pitch ?? n.pitch, this.volume = e.volume ?? n.volume;
5131
+ this.format = e.format ?? n.format, this.inlineContextualization = e.inlineContextualization ?? n.inlineContextualization, this.verbosity = e.verbosity ?? n.verbosity, this.verbosity === "custom" ? (this.skip = e.skip ?? n.skip, this.contextualize = e.contextualize ?? n.contextualize) : (this.skip = [...Al[this.verbosity]], this.contextualize = [...Ol[this.verbosity]]), this.language = e.language ?? n.language, this.pauseDuration = e.pauseDuration ?? n.pauseDuration, this.autoPause = e.autoPause ?? n.autoPause, this.rate = e.rate ?? n.rate, this.pitch = e.pitch ?? n.pitch, this.volume = e.volume ?? n.volume;
5146
5132
  }
5147
5133
  }
5148
- function Pe(t) {
5134
+ function Le(t) {
5149
5135
  return t.plain === "" && t.ssml === "" && t.language === "";
5150
5136
  }
5151
- function Al(t) {
5152
- if (!t || Pe(t)) return;
5137
+ function Tl(t) {
5138
+ if (!t || Le(t)) return;
5153
5139
  if (t.ssml === "" && t.language === "") return t.plain;
5154
5140
  const e = { language: t.language };
5155
5141
  return t.plain !== "" && (e.plain = t.plain), t.ssml !== "" && (e.ssml = t.ssml), e;
5156
5142
  }
5157
- function Tl(t, e) {
5143
+ function Rl(t, e) {
5158
5144
  if (t.lang !== e.lang || t.tag !== e.tag) return !1;
5159
5145
  const n = Object.entries(t.attrs ?? {}), r = Object.entries(e.attrs ?? {});
5160
5146
  return n.length !== r.length ? !1 : n.every(([i, s]) => e.attrs?.[i] === s);
5161
5147
  }
5162
- const it = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), At = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;"), Rl = /[\u00A0\u2007\u202F]/;
5163
- function Nl(t) {
5164
- return Rl.test(t);
5148
+ const rt = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), At = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;"), Nl = /[\u00A0\u2007\u202F]/;
5149
+ function Il(t) {
5150
+ return Nl.test(t);
5165
5151
  }
5166
- function Le(t, e) {
5152
+ function Ne(t, e) {
5167
5153
  let n = "", r = !1, i = !1;
5168
5154
  for (const s of t)
5169
- if (Nl(s))
5155
+ if (Il(s))
5170
5156
  n += s, r = !1, i = !0;
5171
5157
  else if (/\s/.test(s)) {
5172
5158
  if (e && !i || r) continue;
@@ -5240,51 +5226,51 @@ const Ll = {
5240
5226
  term: "Term.",
5241
5227
  summary: "Summary.",
5242
5228
  separator: "Separator."
5243
- }, Il = /<lang xml:lang="[^"]*">([\s\S]*?)<\/lang>/g;
5244
- function Hr(t) {
5245
- return t.replace(Il, "$1");
5229
+ }, Pl = /<lang xml:lang="[^"]*">([\s\S]*?)<\/lang>/g;
5230
+ function Fr(t) {
5231
+ return t.replace(Pl, "$1");
5246
5232
  }
5247
- const Pl = /\s*<readium:[a-zA-Z][\w-]*\s+id="[^"]*"\s*\/>\s*/g;
5248
- function ql(t) {
5249
- return t.replace(Pl, (n, r, i) => {
5233
+ const ql = /\s*<readium:[a-zA-Z][\w-]*\s+id="[^"]*"\s*\/>\s*/g;
5234
+ function $l(t) {
5235
+ return t.replace(ql, (n, r, i) => {
5250
5236
  const s = i.slice(r + n.length);
5251
- return s.length === 0 || lt(s) ? "" : " ";
5237
+ return s.length === 0 || ot(s) ? "" : " ";
5252
5238
  }).replace(/ {2,}/g, " ").trim();
5253
5239
  }
5254
- function $l(t) {
5240
+ function Dl(t) {
5255
5241
  return t.includes("<");
5256
5242
  }
5257
- function Mr(t) {
5243
+ function Hr(t) {
5258
5244
  if (t === void 0) return;
5259
5245
  if (typeof t == "string") return { plain: t };
5260
5246
  const e = { language: t.language };
5261
5247
  if (t.ssml) {
5262
- const n = ql(t.ssml);
5263
- $l(n) && (e.ssml = n);
5248
+ const n = $l(t.ssml);
5249
+ Dl(n) && (e.ssml = n);
5264
5250
  }
5265
5251
  return t.plain && (e.plain = t.plain), e.plain || e.ssml ? e : void 0;
5266
5252
  }
5267
5253
  function sn(t) {
5268
5254
  return t.replace(/<[^>]+>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/ {2,}/g, " ").trim();
5269
5255
  }
5270
- const Gr = /<lang xml:lang="([^"]*)">([\s\S]*?)<\/lang>/g;
5271
- function Wr(t) {
5272
- return new RegExp(Gr).test(t);
5256
+ const Mr = /<lang xml:lang="([^"]*)">([\s\S]*?)<\/lang>/g;
5257
+ function Gr(t) {
5258
+ return new RegExp(Mr).test(t);
5273
5259
  }
5274
- function tr(t) {
5260
+ function er(t) {
5275
5261
  return t.replace(/<[^>]+>/g, "").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/ {2,}/g, " ");
5276
5262
  }
5277
- const Dl = new RegExp(
5278
- `\\s+|[${_t}]+|[${le}]+|[^\\s${_t}${le}]+`,
5263
+ const _l = new RegExp(
5264
+ `\\s+|[${Dt}]+|[${oe}]+|[^\\s${Dt}${oe}]+`,
5279
5265
  "gu"
5280
5266
  );
5281
- function Tt(t) {
5267
+ function Ot(t) {
5282
5268
  const e = [];
5283
- for (const [n] of t.matchAll(Dl))
5284
- /^\s/.test(n) ? e.push({ kind: "space" }) : lo(n) ? e.push({ kind: "open", text: n }) : lt(n) ? e.push({ kind: "close", text: n }) : e.push({ kind: "word", text: n });
5269
+ for (const [n] of t.matchAll(_l))
5270
+ /^\s/.test(n) ? e.push({ kind: "space" }) : lo(n) ? e.push({ kind: "open", text: n }) : ot(n) ? e.push({ kind: "close", text: n }) : e.push({ kind: "word", text: n });
5285
5271
  return e;
5286
5272
  }
5287
- function _l(t) {
5273
+ function Bl(t) {
5288
5274
  let e = "", n = !1;
5289
5275
  for (const r of t) {
5290
5276
  if (r.kind === "space") {
@@ -5295,57 +5281,57 @@ function _l(t) {
5295
5281
  }
5296
5282
  return e;
5297
5283
  }
5298
- function Bl(t) {
5284
+ function Ul(t) {
5299
5285
  let e = t.length;
5300
5286
  for (; e > 0 && (t[e - 1].kind === "space" || t[e - 1].kind === "open"); ) e--;
5301
5287
  return t.slice(e).some((n) => n.kind === "open") ? t.splice(e) : [];
5302
5288
  }
5303
- function Ul(t) {
5289
+ function zl(t) {
5304
5290
  let e = 0;
5305
5291
  for (; e < t.length && (t[e].kind === "space" || t[e].kind === "close"); ) e++;
5306
5292
  return t.slice(0, e).some((n) => n.kind === "close") ? t.splice(0, e) : [];
5307
5293
  }
5308
- function Kr(t, e) {
5294
+ function Wr(t, e) {
5309
5295
  const n = [];
5310
5296
  let r = 0;
5311
- for (const s of t.matchAll(Gr))
5297
+ for (const s of t.matchAll(Mr))
5312
5298
  n.push({
5313
- tokens: Tt(tr(t.slice(r, s.index))),
5299
+ tokens: Ot(er(t.slice(r, s.index))),
5314
5300
  language: e,
5315
5301
  tagged: !1
5316
- }), n.push({ tokens: Tt(sn(s[2])), language: s[1], tagged: !0 }), r = s.index + s[0].length;
5302
+ }), n.push({ tokens: Ot(sn(s[2])), language: s[1], tagged: !0 }), r = s.index + s[0].length;
5317
5303
  n.push({
5318
- tokens: Tt(tr(t.slice(r))),
5304
+ tokens: Ot(er(t.slice(r))),
5319
5305
  language: e,
5320
5306
  tagged: !1
5321
5307
  });
5322
5308
  for (let s = 0; s < n.length - 1; s++)
5323
- !n[s].tagged && n[s + 1].tagged ? n[s + 1].tokens.unshift(...Bl(n[s].tokens)) : n[s].tagged && !n[s + 1].tagged && n[s].tokens.push(...Ul(n[s + 1].tokens));
5309
+ !n[s].tagged && n[s + 1].tagged ? n[s + 1].tokens.unshift(...Ul(n[s].tokens)) : n[s].tagged && !n[s + 1].tagged && n[s].tokens.push(...zl(n[s + 1].tokens));
5324
5310
  const i = [];
5325
5311
  for (const s of n) {
5326
- const o = _l(s.tokens);
5312
+ const o = Bl(s.tokens);
5327
5313
  o && i.push({ plain: o, language: s.language });
5328
5314
  }
5329
5315
  return i;
5330
5316
  }
5331
- const Jr = /<readium:[a-zA-Z][\w-]*\s+id="([^"]*)"\s*\/>/g;
5332
- function zl(t) {
5333
- return new RegExp(Jr).test(t);
5334
- }
5317
+ const Kr = /<readium:[a-zA-Z][\w-]*\s+id="([^"]*)"\s*\/>/g;
5335
5318
  function jl(t) {
5319
+ return new RegExp(Kr).test(t);
5320
+ }
5321
+ function Vl(t) {
5336
5322
  const e = [];
5337
5323
  let n = 0;
5338
- for (const i of t.matchAll(Jr)) {
5324
+ for (const i of t.matchAll(Kr)) {
5339
5325
  const s = t.slice(n, i.index).trim();
5340
5326
  s && e.push({ ssml: s }), e.push({ placeholderId: i[1] }), n = i.index + i[0].length;
5341
5327
  }
5342
5328
  const r = t.slice(n).trim();
5343
5329
  return r && e.push({ ssml: r }), e;
5344
5330
  }
5345
- function st(t) {
5331
+ function it(t) {
5346
5332
  return typeof t == "object";
5347
5333
  }
5348
- const wc = [
5334
+ const Sc = [
5349
5335
  // Ancillary content
5350
5336
  "aside",
5351
5337
  "bibliography",
@@ -5362,7 +5348,7 @@ const wc = [
5362
5348
  "lov",
5363
5349
  "pagebreak",
5364
5350
  "toc"
5365
- ], Vl = [
5351
+ ], Fl = [
5366
5352
  // Headings
5367
5353
  "heading1",
5368
5354
  "heading2",
@@ -5420,30 +5406,33 @@ const wc = [
5420
5406
  "section",
5421
5407
  "summary",
5422
5408
  "tip"
5423
- ], Fl = new Set(Vl);
5409
+ ], Hl = new Set(Fl);
5424
5410
  function Ie(t, e) {
5425
5411
  return typeof t == "function" ? t(e) : t;
5426
5412
  }
5427
- function ce(t, e) {
5428
- return e === "ssml" ? { ssml: it(t) } : { plain: t };
5413
+ function le(t, e) {
5414
+ return e === "ssml" ? { ssml: rt(t) } : { plain: t };
5429
5415
  }
5430
- function Q(t, e, n, r) {
5416
+ function ce(t, e, n, r) {
5431
5417
  t.push(...r);
5432
5418
  for (let i = 0; i < r.length; i++) e.push(n);
5433
5419
  }
5434
- function nr(t, e, n, r, i, s, o) {
5420
+ function Jr(t, e, n, r, i, s, o) {
5421
+ o ? (i.some((a) => n.blockStarts.has(a)) && n.blockStarts.add(o), ce(t, e, s[0] ?? r, [o])) : (t.push(...i), e.push(...s));
5422
+ }
5423
+ function tr(t, e, n, r, i, s, o) {
5435
5424
  if (!r.contextualize.has(i)) return;
5436
5425
  const a = r.announcements[i];
5437
5426
  if (a !== void 0) {
5438
- if (st(a)) {
5427
+ if (it(a)) {
5439
5428
  const c = s === "before" ? a.start : a.end;
5440
- Q(t, e, n, [ce(Ie(c, o), r.format)]);
5429
+ ce(t, e, n, [le(Ie(c, o), r.format)]);
5441
5430
  return;
5442
5431
  }
5443
- s === "before" && Q(t, e, n, [ce(Ie(a, o), r.format)]);
5432
+ s === "before" && ce(t, e, n, [le(Ie(a, o), r.format)]);
5444
5433
  }
5445
5434
  }
5446
- function rr(t, e) {
5435
+ function nr(t, e) {
5447
5436
  return e.size > 0 && t.some((n) => e.has(n));
5448
5437
  }
5449
5438
  function an(t, e) {
@@ -5459,99 +5448,99 @@ function an(t, e) {
5459
5448
  if (i.length === 0) return;
5460
5449
  let s = "";
5461
5450
  for (const a of i)
5462
- a.length === 1 && s.endsWith(a) || (s && !lt(a) && (s += " "), s += a);
5451
+ a.length === 1 && s.endsWith(a) || (s && !ot(a) && (s += " "), s += a);
5463
5452
  const o = e === "ssml" ? { ssml: s } : { plain: s };
5464
5453
  return n && (o.language = n), o;
5465
5454
  }
5466
- function Hl(t, e) {
5467
- const n = Mr(t.text), r = n ? Qr(n, e.format, e.language) : [];
5455
+ function Ml(t, e) {
5456
+ const n = Hr(t.text), r = n ? Qr(n, e.format, e.language) : [];
5468
5457
  if (!e.contextualize.has("pagebreak")) return r;
5469
5458
  const i = e.announcements.pagebreak;
5470
5459
  if (i === void 0) return r;
5471
- const s = ce(Ie(st(i) ? i.start : i), e.format);
5460
+ const s = le(Ie(it(i) ? i.start : i), e.format);
5472
5461
  if (r.length === 0) return [s];
5473
5462
  const o = an([s, ...r], e.format);
5474
5463
  return o ? (o.plain !== void 0 && (o.plain += "."), o.ssml !== void 0 && (o.ssml += "."), [o]) : [s, ...r];
5475
5464
  }
5476
5465
  function Qr(t, e, n) {
5477
- if (e === "plain" && n !== "block-level" && n !== "none" && t.ssml && Wr(t.ssml))
5478
- return Kr(t.ssml, t.language).map((i) => {
5466
+ if (e === "plain" && n !== "block-level" && n !== "none" && t.ssml && Gr(t.ssml))
5467
+ return Wr(t.ssml, t.language).map((i) => {
5479
5468
  const s = { plain: i.plain };
5480
5469
  return i.language && (s.language = i.language), s;
5481
5470
  });
5482
5471
  const r = {};
5483
- return t.language && (r.language = t.language), e === "ssml" ? r.ssml = t.ssml ?? it(t.plain ?? "") : r.plain = t.plain ?? sn(t.ssml ?? ""), (n === "block-level" || n === "none") && (r.ssml && (r.ssml = Hr(r.ssml)), n === "none" && delete r.language), [r];
5472
+ return t.language && (r.language = t.language), e === "ssml" ? r.ssml = t.ssml ?? rt(t.plain ?? "") : r.plain = t.plain ?? sn(t.ssml ?? ""), (n === "block-level" || n === "none") && (r.ssml && (r.ssml = Fr(r.ssml)), n === "none" && delete r.language), [r];
5484
5473
  }
5485
- function Ml(t, e, n, r, i, s) {
5474
+ function Gl(t, e, n, r, i, s) {
5486
5475
  const o = typeof t.text == "object" ? t.text.language : void 0, a = new Map((t.children ?? []).map((u) => [u.id, u])), c = [], l = [];
5487
- for (const u of jl(e)) {
5476
+ for (const u of Vl(e)) {
5488
5477
  if (u.placeholderId !== void 0) {
5489
5478
  const f = a.get(u.placeholderId);
5490
5479
  f && Xr(f, c, l, i, s);
5491
5480
  continue;
5492
5481
  }
5493
5482
  if (!u.ssml) continue;
5494
- if (i.format === "plain" && i.language !== "block-level" && i.language !== "none" && Wr(u.ssml)) {
5495
- for (const f of Kr(u.ssml, o)) {
5483
+ if (i.format === "plain" && i.language !== "block-level" && i.language !== "none" && Gr(u.ssml)) {
5484
+ for (const f of Wr(u.ssml, o)) {
5496
5485
  const y = { plain: f.plain };
5497
5486
  f.language && (y.language = f.language), c.push(y), l.push(t);
5498
5487
  }
5499
5488
  continue;
5500
5489
  }
5501
5490
  const g = {};
5502
- o && (g.language = o), i.format === "ssml" ? g.ssml = u.ssml : g.plain = sn(u.ssml), (i.language === "block-level" || i.language === "none") && (g.ssml && (g.ssml = Hr(g.ssml)), i.language === "none" && delete g.language), c.push(g), l.push(t);
5491
+ o && (g.language = o), i.format === "ssml" ? g.ssml = u.ssml : g.plain = sn(u.ssml), (i.language === "block-level" || i.language === "none") && (g.ssml && (g.ssml = Fr(g.ssml)), i.language === "none" && delete g.language), c.push(g), l.push(t);
5503
5492
  }
5504
5493
  const d = c.length > 1 ? an(c, i.format) : void 0;
5505
- d ? Q(n, r, l[0] ?? t, [d]) : (n.push(...c), r.push(...l));
5494
+ Jr(n, r, i, t, c, l, d);
5506
5495
  }
5507
5496
  function Xr(t, e, n, r, i) {
5508
5497
  const s = t.role ?? [];
5509
- if (rr(s, r.skip)) return;
5510
- const o = s.some((u) => Fl.has(u)), a = o && !i, c = e.length, l = s.includes("footnote"), d = s.filter(
5498
+ if (nr(s, r.skip)) return;
5499
+ const o = s.some((u) => Hl.has(u)), a = o && !i, c = e.length, l = s.includes("footnote"), d = s.filter(
5511
5500
  (u) => !(l && (u === "footnote" || u === "aside")) && u !== "pagebreak"
5512
5501
  );
5513
5502
  for (const u of d)
5514
- nr(e, n, t, r, u, "before");
5503
+ tr(e, n, t, r, u, "before");
5515
5504
  if (s.includes("noteref"))
5516
5505
  for (const u of t.children ?? []) {
5517
5506
  const g = u.role ?? [];
5518
- if (!rr(g, r.skip))
5507
+ if (!nr(g, r.skip))
5519
5508
  if (g.includes("footnote")) {
5520
5509
  const f = [], y = [];
5521
- oe([u], f, y, r, i);
5510
+ ae([u], f, y, r, i);
5522
5511
  const p = r.contextualize.has("footnote") ? r.announcements.footnote : void 0, m = [], w = [];
5523
5512
  if (p !== void 0) {
5524
- const C = st(p) ? p.start : p;
5525
- m.push(ce(Ie(C), r.format)), w.push(u);
5513
+ const C = it(p) ? p.start : p;
5514
+ m.push(le(Ie(C), r.format)), w.push(u);
5526
5515
  }
5527
- m.push(...f), w.push(...y), p !== void 0 && st(p) && (m.push(ce(Ie(p.end), r.format)), w.push(u));
5516
+ m.push(...f), w.push(...y), p !== void 0 && it(p) && (m.push(le(Ie(p.end), r.format)), w.push(u));
5528
5517
  const E = p !== void 0 && m.length > 1 ? an(m, r.format) : void 0;
5529
- E ? Q(e, n, w[0] ?? u, [E]) : (e.push(...m), n.push(...w));
5518
+ Jr(e, n, r, u, m, w, E);
5530
5519
  } else
5531
- oe([u], e, n, r, i);
5520
+ ae([u], e, n, r, i);
5532
5521
  }
5533
5522
  else {
5534
5523
  const u = typeof t.text == "object" ? t.text.ssml : void 0;
5535
- if (r.inlineContextualization && u && zl(u))
5536
- Ml(t, u, e, n, r, i);
5524
+ if (r.inlineContextualization && u && jl(u))
5525
+ Gl(t, u, e, n, r, i);
5537
5526
  else if (s.includes("pagebreak")) {
5538
- if (Q(e, n, t, Hl(t, r)), t.children) {
5527
+ if (ce(e, n, t, Ml(t, r)), t.children) {
5539
5528
  const g = i || o && e.length > c;
5540
- oe(t.children, e, n, r, g);
5529
+ ae(t.children, e, n, r, g);
5541
5530
  }
5542
5531
  } else {
5543
- const g = Mr(t.text);
5544
- if (g && Q(e, n, t, Qr(g, r.format, r.language)), t.children) {
5532
+ const g = Hr(t.text);
5533
+ if (g && ce(e, n, t, Qr(g, r.format, r.language)), t.children) {
5545
5534
  const f = i || o && e.length > c;
5546
- oe(t.children, e, n, r, f);
5535
+ ae(t.children, e, n, r, f);
5547
5536
  }
5548
5537
  }
5549
5538
  }
5550
- a && e.length > c && (e[c].startsNewBlock = !0), t.description !== void 0 && Q(e, n, t, [ce(t.description, r.format)]);
5539
+ a && e.length > c && r.blockStarts.add(e[c]), t.description !== void 0 && ce(e, n, t, [le(t.description, r.format)]);
5551
5540
  for (const u of d)
5552
- nr(e, n, t, r, u, "after");
5541
+ tr(e, n, t, r, u, "after");
5553
5542
  }
5554
- function oe(t, e, n, r, i) {
5543
+ function ae(t, e, n, r, i) {
5555
5544
  t.forEach((s, o) => Xr(s, e, n, r, o === 0 ? i : !1));
5556
5545
  }
5557
5546
  function Zr(t) {
@@ -5561,18 +5550,21 @@ function Zr(t) {
5561
5550
  contextualize: new Set(t.contextualize ?? []),
5562
5551
  format: t.format ?? "plain",
5563
5552
  inlineContextualization: t.inlineContextualization ?? !1,
5564
- language: t.language
5553
+ language: t.language,
5554
+ blockStarts: /* @__PURE__ */ new Set()
5565
5555
  };
5566
5556
  }
5567
- function Sc(t, e) {
5557
+ function xc(t, e) {
5568
5558
  const n = [];
5569
- return oe(t, n, [], Zr(e), !1), n;
5559
+ return ae(t, n, [], Zr(e), !1), n;
5570
5560
  }
5571
- function Gl(t, e) {
5572
- const n = [], r = [];
5573
- return oe(t, n, r, Zr(e), !1), { utterances: n, sources: r };
5561
+ function Wl(t, e) {
5562
+ const n = [], r = [], i = Zr(e);
5563
+ ae(t, n, r, i, !1);
5564
+ const s = n.map((o) => i.blockStarts.has(o));
5565
+ return { utterances: n, sources: r, blockStarts: s };
5574
5566
  }
5575
- class xc {
5567
+ class kc {
5576
5568
  engine;
5577
5569
  contentQueue = [];
5578
5570
  eventListeners = /* @__PURE__ */ new Map();
@@ -5591,19 +5583,24 @@ class xc {
5591
5583
  // `loadGndContent()`. Its absence is what makes submitPreferences()'s
5592
5584
  // extraction-affecting fields (format, verbosity, skip, contextualize,
5593
5585
  // language) a no-op on content loaded via loadContent() — prosody
5594
- // fields (rate/pitch/volume/pauseDuration/pauseScope) still apply.
5586
+ // fields (rate/pitch/volume/pauseDuration/autoPause) still apply.
5595
5587
  source;
5596
5588
  // Parallel to `contentQueue`, from the extraction that produced it — lets
5597
5589
  // reextract() find where to resume after a reload (see resolveResumeIndex).
5598
5590
  contentSources = [];
5591
+ // Parallel to `contentQueue`: whether each utterance begins a new
5592
+ // block-level element. loadContent() content has no boundaries of its own.
5593
+ contentBlockStarts = [];
5599
5594
  // Set by setContentQueue() when a reload should resume mid-queue rather
5600
5595
  // than at the start; consumed once by the engine's "ready" handler.
5601
5596
  pendingResumeIndex = null;
5602
5597
  pendingResumeState = null;
5598
+ // Index to speak() on the next play() when autoPause has stopped playback between utterances.
5599
+ pendingAutoPauseIndex = null;
5603
5600
  constructor(e, n = {}) {
5604
- this.engine = e, this._defaults = new kl(n.defaults), this._preferences = new Ne(n.preferences), this._settings = new er(this._preferences, this._defaults), this.setupEngineListeners(), this.applyEngineParameters(), this.initializeEngine();
5601
+ this.engine = e, this._defaults = new kl(n.defaults), this._preferences = new Re(n.preferences), this._settings = new Yn(this._preferences, this._defaults), this.setupEngineListeners(), this.applyEngineParameters(), this.initializeEngine();
5605
5602
  }
5606
- // Unlike pauseDuration/pauseScope (read live off settings), the engine owns rate/pitch/volume and must be pushed.
5603
+ // Unlike pauseDuration/autoPause (read live off settings), the engine owns rate/pitch/volume and must be pushed.
5607
5604
  applyEngineParameters() {
5608
5605
  this.engine.setRate(this._settings.rate), this.engine.setPitch(this._settings.pitch), this.engine.setVolume(this._settings.volume);
5609
5606
  }
@@ -5620,10 +5617,10 @@ class xc {
5620
5617
  }), this.engine.on("end", () => {
5621
5618
  const e = this.engine.getCurrentUtteranceIndex(), n = this.engine.getUtteranceCount();
5622
5619
  if (e < n - 1) {
5623
- const i = this._settings.pauseScope === "utterance" || this.contentQueue[e + 1]?.startsNewBlock === !0 ? this._settings.pauseDuration : 0;
5624
- this.pendingAdvanceTimeout = setTimeout(() => {
5620
+ const r = this._settings.autoPause === "utterance" || this.contentBlockStarts[e + 1] === !0;
5621
+ this._settings.autoPause !== "none" && r ? (this.pendingAutoPauseIndex = e + 1, this.setNavigatorState("paused"), this.emitEvent({ type: "pause" })) : this.pendingAdvanceTimeout = setTimeout(() => {
5625
5622
  this.pendingAdvanceTimeout = null, this.engine.speak(e + 1);
5626
- }, i);
5623
+ }, this._settings.pauseDuration);
5627
5624
  } else
5628
5625
  this.setNavigatorState("idle");
5629
5626
  this.emitEvent({ type: "end" });
@@ -5689,23 +5686,23 @@ class xc {
5689
5686
  this.source = e, this.reextract();
5690
5687
  }
5691
5688
  setContentQueue(e, n = null, r = null) {
5692
- this.clearPendingAdvance(), (this.navigatorState === "playing" || this.navigatorState === "paused") && this.engine.stop();
5689
+ this.clearPendingAdvance(), this.pendingAutoPauseIndex = null, (this.navigatorState === "playing" || this.navigatorState === "paused") && this.engine.stop();
5693
5690
  const i = Array.isArray(e) ? e : [e];
5694
5691
  this.contentQueue = [...i], this.pendingResumeIndex = n, this.pendingResumeState = r, this.setNavigatorState("loading"), this.emitEvent({ type: "loading" }), this.engine.loadUtterances(i), this.emitContentChangeEvent({ content: i });
5695
5692
  }
5696
5693
  // Re-runs extraction from `this.source`, resuming near the old position if playback was underway.
5697
5694
  reextract() {
5698
5695
  if (!this.source) return;
5699
- const e = this.navigatorState === "playing" || this.navigatorState === "paused" ? this.navigatorState : null, n = this.contentSources, r = this.getCurrentUtteranceIndex(), { utterances: i, sources: s } = Gl(this.source, {
5696
+ const e = this.navigatorState === "playing" || this.navigatorState === "paused" ? this.navigatorState : null, n = this.contentSources, r = this.getCurrentUtteranceIndex(), { utterances: i, sources: s, blockStarts: o } = Wl(this.source, {
5700
5697
  format: this._settings.format,
5701
5698
  inlineContextualization: this._settings.inlineContextualization,
5702
5699
  skip: this._settings.skip,
5703
5700
  contextualize: this._settings.contextualize,
5704
5701
  language: this._settings.language
5705
5702
  });
5706
- this.contentSources = s;
5707
- const o = e ? this.resolveResumeIndex(n, r, s) : null;
5708
- this.setContentQueue(i, o, e);
5703
+ this.contentSources = s, this.contentBlockStarts = o;
5704
+ const a = e ? this.resolveResumeIndex(n, r, s) : null;
5705
+ this.setContentQueue(i, a, e);
5709
5706
  }
5710
5707
  // Nearest node at or before oldIndex that's still present in newSources.
5711
5708
  resolveResumeIndex(e, n, r) {
@@ -5730,29 +5727,33 @@ class xc {
5730
5727
  // Playback Control - Navigator coordinates engine operations
5731
5728
  play() {
5732
5729
  if (this.navigatorState === "paused")
5733
- this.setNavigatorState("playing"), this.engine.resume();
5730
+ if (this.setNavigatorState("playing"), this.pendingAutoPauseIndex !== null) {
5731
+ const e = this.pendingAutoPauseIndex;
5732
+ this.pendingAutoPauseIndex = null, this.engine.speak(e);
5733
+ } else
5734
+ this.engine.resume();
5734
5735
  else if (this.navigatorState === "ready" || this.navigatorState === "idle")
5735
5736
  this.setNavigatorState("playing"), this.engine.speak();
5736
5737
  else if (this.navigatorState === "playing")
5737
5738
  return;
5738
5739
  }
5739
5740
  pause() {
5740
- this.navigatorState === "playing" && (this.clearPendingAdvance(), this.setNavigatorState("paused"), this.engine.pause());
5741
+ this.navigatorState === "playing" && (this.clearPendingAdvance(), this.pendingAutoPauseIndex = null, this.setNavigatorState("paused"), this.engine.pause());
5741
5742
  }
5742
5743
  stop() {
5743
- this.clearPendingAdvance(), this.setNavigatorState("idle"), this.engine.stop(), this.emitEvent({ type: "stop" });
5744
+ this.clearPendingAdvance(), this.pendingAutoPauseIndex = null, this.setNavigatorState("idle"), this.engine.stop(), this.emitEvent({ type: "stop" });
5744
5745
  }
5745
5746
  clearPendingAdvance() {
5746
5747
  this.pendingAdvanceTimeout !== null && (clearTimeout(this.pendingAdvanceTimeout), this.pendingAdvanceTimeout = null);
5747
5748
  }
5748
5749
  skipToPosition(e, n = !1) {
5749
5750
  const r = this.getCurrentUtteranceIndex();
5750
- return e < 0 || e >= this.contentQueue.length ? !1 : (e === r || (this.clearPendingAdvance(), this.navigatorState === "paused" && !n ? this.engine.setCurrentUtteranceIndex(e, (i) => {
5751
+ return e < 0 || e >= this.contentQueue.length ? !1 : (e === r || (this.clearPendingAdvance(), this.navigatorState === "paused" && !n ? (this.pendingAutoPauseIndex !== null && (this.pendingAutoPauseIndex = e), this.engine.setCurrentUtteranceIndex(e, (i) => {
5751
5752
  i && this.emitEvent({
5752
5753
  type: "skip",
5753
5754
  detail: { position: e }
5754
5755
  });
5755
- }) : (this.setNavigatorState("playing"), this.engine.speak(e))), !0);
5756
+ })) : (this.pendingAutoPauseIndex = null, this.setNavigatorState("playing"), this.engine.speak(e))), !0);
5756
5757
  }
5757
5758
  // Navigation - Navigator coordinates with proper state management
5758
5759
  next(e = !1) {
@@ -5793,7 +5794,7 @@ class xc {
5793
5794
  return this._settings;
5794
5795
  }
5795
5796
  get preferencesEditor() {
5796
- return this._preferencesEditor === null && (this._preferencesEditor = new Yn(this._preferences, this.settings)), this._preferencesEditor;
5797
+ return this._preferencesEditor === null && (this._preferencesEditor = new Zn(this._preferences, this.settings)), this._preferencesEditor;
5797
5798
  }
5798
5799
  submitPreferences(e) {
5799
5800
  !this.source && Qn.some((n) => e[n] !== void 0) && console.warn(
@@ -5802,7 +5803,7 @@ class xc {
5802
5803
  }
5803
5804
  applyPreferences() {
5804
5805
  const e = this._settings;
5805
- this._settings = new er(this._preferences, this._defaults), this.applyEngineParameters(), this._preferencesEditor !== null && (this._preferencesEditor = new Yn(this._preferences, this._settings)), Qn.some((n) => !this.sameSettingValue(e[n], this._settings[n])) && this.reextract();
5806
+ this._settings = new Yn(this._preferences, this._defaults), this.applyEngineParameters(), this._preferencesEditor !== null && (this._preferencesEditor = new Zn(this._preferences, this._settings)), Qn.some((n) => !this.sameSettingValue(e[n], this._settings[n])) && this.reextract();
5806
5807
  }
5807
5808
  // Arrays (skip/contextualize) compare as sets, not by reference.
5808
5809
  sameSettingValue(e, n) {
@@ -5812,14 +5813,14 @@ class xc {
5812
5813
  this.clearPendingAdvance(), this.eventListeners.clear(), await this.engine.destroy();
5813
5814
  }
5814
5815
  }
5815
- const Wl = [
5816
+ const Kl = [
5816
5817
  "heading1",
5817
5818
  "heading2",
5818
5819
  "heading3",
5819
5820
  "heading4",
5820
5821
  "heading5",
5821
5822
  "heading6"
5822
- ], ir = {
5823
+ ], rr = {
5823
5824
  "doc-abstract": "abstract",
5824
5825
  "doc-acknowledgments": "acknowledgments",
5825
5826
  "doc-afterword": "afterword",
@@ -5887,7 +5888,7 @@ const Wl = [
5887
5888
  term: "term",
5888
5889
  "doc-tip": "tip",
5889
5890
  "doc-toc": "toc"
5890
- }, Kl = {
5891
+ }, Jl = {
5891
5892
  abstract: "abstract",
5892
5893
  acknowledgments: "acknowledgments",
5893
5894
  afterword: "afterword",
@@ -5947,7 +5948,7 @@ const Wl = [
5947
5948
  glossterm: "term",
5948
5949
  tip: "tip",
5949
5950
  toc: "toc"
5950
- }, Jl = {
5951
+ }, Ql = {
5951
5952
  article: "article",
5952
5953
  aside: "aside",
5953
5954
  audio: "audio",
@@ -5984,7 +5985,7 @@ const Wl = [
5984
5985
  video: "video",
5985
5986
  svg: "image"
5986
5987
  };
5987
- function Rt(t) {
5988
+ function Tt(t) {
5988
5989
  const e = [], n = (c) => {
5989
5990
  e.includes(c) || e.push(c);
5990
5991
  }, r = [];
@@ -5995,12 +5996,12 @@ function Rt(t) {
5995
5996
  if ((c === "presentation" || c === "none") && (i = !0), c === "heading") {
5996
5997
  let l = 2;
5997
5998
  const d = parseInt(t.getAttribute("aria-level") ?? "", 10);
5998
- Number.isFinite(d) && d >= 1 && (l = Math.min(d, 6)), r.push(Wl[l - 1]);
5999
- } else ir[c] && r.push(ir[c]);
5999
+ Number.isFinite(d) && d >= 1 && (l = Math.min(d, 6)), r.push(Kl[l - 1]);
6000
+ } else rr[c] && r.push(rr[c]);
6000
6001
  const o = t.getAttribute("epub:type");
6001
6002
  if (o)
6002
6003
  for (const c of o.split(/\s+/).filter(Boolean)) {
6003
- const l = Kl[c];
6004
+ const l = Jl[c];
6004
6005
  l && r.push(l);
6005
6006
  }
6006
6007
  if (i)
@@ -6020,16 +6021,16 @@ function Rt(t) {
6020
6021
  n("cell");
6021
6022
  }
6022
6023
  else {
6023
- const c = Jl[a];
6024
+ const c = Ql[a];
6024
6025
  c && n(c);
6025
6026
  }
6026
6027
  for (const c of r) n(c);
6027
6028
  return e;
6028
6029
  }
6029
- function sr(t) {
6030
+ function ir(t) {
6030
6031
  return !!(t.getAttribute("aria-hidden") === "true" || t.hasAttribute("hidden"));
6031
6032
  }
6032
- function Ht(t) {
6033
+ function Ft(t) {
6033
6034
  let e = "";
6034
6035
  const n = (r) => {
6035
6036
  r.nodeType === 3 && (e += r.nodeValue ?? "");
@@ -6037,11 +6038,11 @@ function Ht(t) {
6037
6038
  };
6038
6039
  return n(t), e;
6039
6040
  }
6040
- function Ke(t) {
6041
- return Le(Ht(t), !0).trim();
6041
+ function We(t) {
6042
+ return Ne(Ft(t), !0).trim();
6042
6043
  }
6043
- function Ql(t) {
6044
- if (sr(t))
6044
+ function Xl(t) {
6045
+ if (ir(t))
6045
6046
  return [null, !1];
6046
6047
  const e = (t.getAttribute("aria-labelledby") ?? "").trim();
6047
6048
  if (e) {
@@ -6049,11 +6050,11 @@ function Ql(t) {
6049
6050
  if (a.length > 0) {
6050
6051
  let c = "";
6051
6052
  a.forEach((d, u) => {
6052
- if (sr(d)) return;
6053
+ if (ir(d)) return;
6053
6054
  const g = d.getAttribute("aria-label");
6054
- c += g || Ht(d), u < a.length - 1 && (c += " ");
6055
+ c += g || Ft(d), u < a.length - 1 && (c += " ");
6055
6056
  });
6056
- const l = Le(c, !0).trim();
6057
+ const l = Ne(c, !0).trim();
6057
6058
  if (l !== "")
6058
6059
  return [{ language: "", plain: l }, !0];
6059
6060
  }
@@ -6065,7 +6066,7 @@ function Ql(t) {
6065
6066
  if (r) {
6066
6067
  const o = [...new Set(r.split(/\s+/).filter(Boolean))].map((a) => t.ownerDocument.getElementById(a)).filter((a) => a !== null);
6067
6068
  if (o.length > 0) {
6068
- const a = o.map((l) => Ht(l)).join(" "), c = Le(a, !0).trim();
6069
+ const a = o.map((l) => Ft(l)).join(" "), c = Ne(a, !0).trim();
6069
6070
  if (c !== "")
6070
6071
  return [{ language: "", plain: c }, !0];
6071
6072
  }
@@ -6079,7 +6080,7 @@ function Ql(t) {
6079
6080
  } else if (i === "svg") {
6080
6081
  const s = t.querySelector(":scope > title");
6081
6082
  if (s) {
6082
- const o = Ke(s);
6083
+ const o = We(s);
6083
6084
  if (o) return [{ language: "", plain: o }, !0];
6084
6085
  }
6085
6086
  } else if (i === "math") {
@@ -6088,17 +6089,17 @@ function Ql(t) {
6088
6089
  }
6089
6090
  return [null, !0];
6090
6091
  }
6091
- const Xl = {
6092
+ const Zl = {
6092
6093
  em: ["emphasis"],
6093
6094
  b: ["emphasis"],
6094
6095
  i: ["emphasis", { level: "reduced" }],
6095
6096
  strong: ["emphasis", { level: "strong" }],
6096
6097
  br: ["break"]
6097
6098
  };
6098
- function Zl(t) {
6099
- return Xl[t] ?? ["", void 0];
6099
+ function Yl(t) {
6100
+ return Zl[t] ?? ["", void 0];
6100
6101
  }
6101
- const Yl = /* @__PURE__ */ new Set([
6102
+ const ec = /* @__PURE__ */ new Set([
6102
6103
  "script",
6103
6104
  "style",
6104
6105
  "template",
@@ -6112,16 +6113,16 @@ const Yl = /* @__PURE__ */ new Set([
6112
6113
  "rp",
6113
6114
  "rtc"
6114
6115
  ]);
6115
- function Mt(t) {
6116
- return !t.audioref && !t.imgref && !t.textref && !t.videoref && (!t.text || Pe(t.text)) && !(t.children && t.children.length > 0) && !t.description;
6117
- }
6118
- function ec(t) {
6119
- return !t.audioref && !t.imgref && !t.textref && !t.videoref && (!t.text || Pe(t.text)) && !!(t.children && t.children.length > 0) && !(t.role && t.role.length > 0) && !t.id;
6116
+ function Ht(t) {
6117
+ return !t.audioref && !t.imgref && !t.textref && !t.videoref && (!t.text || Le(t.text)) && !(t.children && t.children.length > 0) && !t.description;
6120
6118
  }
6121
6119
  function tc(t) {
6120
+ return !t.audioref && !t.imgref && !t.textref && !t.videoref && (!t.text || Le(t.text)) && !!(t.children && t.children.length > 0) && !(t.role && t.role.length > 0) && !t.id;
6121
+ }
6122
+ function nc(t) {
6122
6123
  return !(t.role && t.role.length > 0) && !t.id;
6123
6124
  }
6124
- class Me {
6125
+ class He {
6125
6126
  el;
6126
6127
  object = {};
6127
6128
  children = [];
@@ -6130,33 +6131,33 @@ class Me {
6130
6131
  const e = this.object, n = [];
6131
6132
  for (const r of this.children) {
6132
6133
  const i = r.finalize();
6133
- if (!Mt(i)) {
6134
- if (ec(i)) {
6134
+ if (!Ht(i)) {
6135
+ if (tc(i)) {
6135
6136
  n.push(...i.children ?? []);
6136
6137
  continue;
6137
6138
  }
6138
6139
  n.push(i);
6139
6140
  }
6140
6141
  }
6141
- if (n.length > 0 && (e.children = n), (!e.text || Pe(e.text)) && e.children?.length === 1) {
6142
+ if (n.length > 0 && (e.children = n), (!e.text || Le(e.text)) && e.children?.length === 1) {
6142
6143
  const r = e.children[0];
6143
- tc(r) && (r.text && (e.text = r.text), r.textref && (e.textref = r.textref), r.imgref && (e.imgref = r.imgref), r.audioref && (e.audioref = r.audioref), r.videoref && (e.videoref = r.videoref), e.children = r.children);
6144
+ nc(r) && (r.text && (e.text = r.text), r.textref && (e.textref = r.textref), r.imgref && (e.imgref = r.imgref), r.audioref && (e.audioref = r.audioref), r.videoref && (e.videoref = r.videoref), e.children = r.children);
6144
6145
  }
6145
6146
  return e;
6146
6147
  }
6147
6148
  }
6148
- function Gt(t) {
6149
+ function Mt(t) {
6149
6150
  const e = {};
6150
6151
  t.id && (e.id = t.id), t.textref && (e.textref = t.textref), t.imgref && (e.imgref = t.imgref), t.audioref && (e.audioref = t.audioref), t.videoref && (e.videoref = t.videoref);
6151
- const n = Al(t.text);
6152
- return n !== void 0 && (e.text = n), t.role && t.role.length > 0 && (e.role = t.role), t.children && t.children.length > 0 && (e.children = t.children.map(Gt)), t.description && (e.description = t.description), e;
6152
+ const n = Tl(t.text);
6153
+ return n !== void 0 && (e.text = n), t.role && t.role.length > 0 && (e.role = t.role), t.children && t.children.length > 0 && (e.children = t.children.map(Mt)), t.description && (e.description = t.description), e;
6153
6154
  }
6154
6155
  function Yr(t) {
6155
6156
  const e = {};
6156
6157
  return t.id && (e.id = t.id), t.textref && (e.textref = t.textref), t.imgref && (e.imgref = t.imgref), t.audioref && (e.audioref = t.audioref), t.videoref && (e.videoref = t.videoref), t.role && (e.role = t.role), t.description && (e.description = t.description), typeof t.text == "string" ? e.text = { plain: t.text, ssml: "", language: "" } : t.text && (e.text = { plain: t.text.plain ?? "", ssml: t.text.ssml ?? "", language: t.text.language }), t.children && (e.children = t.children.map(Yr)), e;
6157
6158
  }
6158
- const nc = 1;
6159
- function ar(t) {
6159
+ const rc = 1;
6160
+ function sr(t) {
6160
6161
  for (let e = t; e; e = e.parentElement) {
6161
6162
  const n = e.getAttribute("xml:lang");
6162
6163
  if (n) return n;
@@ -6165,21 +6166,21 @@ function ar(t) {
6165
6166
  }
6166
6167
  return "";
6167
6168
  }
6168
- function rc(t) {
6169
+ function ic(t) {
6169
6170
  for (let e = t.firstChild; e; e = e.nextSibling)
6170
- if (e.nodeType === nc) return !0;
6171
+ if (e.nodeType === rc) return !0;
6171
6172
  return !1;
6172
6173
  }
6173
- function or(t, e) {
6174
+ function ar(t, e) {
6174
6175
  for (let n = e; n; n = n.parentElement)
6175
6176
  if (n === t) return !0;
6176
6177
  return !1;
6177
6178
  }
6178
- function ic(t) {
6179
+ function sc(t) {
6179
6180
  const e = t.slice(0, 500);
6180
6181
  return /<\?xml\b/.test(e) || /xmlns:epub=/.test(e) || /DOCTYPE\s+html\s+PUBLIC\s+"-\/\/W3C\/\/DTD XHTML/i.test(e) ? "application/xhtml+xml" : "text/html";
6181
6182
  }
6182
- const sc = 3, ac = 1, oc = /* @__PURE__ */ new Set([
6183
+ const ac = 3, oc = 1, lc = /* @__PURE__ */ new Set([
6183
6184
  "object",
6184
6185
  "base",
6185
6186
  "font",
@@ -6245,9 +6246,9 @@ const sc = 3, ac = 1, oc = /* @__PURE__ */ new Set([
6245
6246
  "strike",
6246
6247
  "nobr",
6247
6248
  "rb"
6248
- ]), lc = /* @__PURE__ */ new Set(["summary", "dfn", "span"]);
6249
- function lr(t, e) {
6250
- return lc.has(t) && e.length > 0 ? !0 : !oc.has(t);
6249
+ ]), cc = /* @__PURE__ */ new Set(["summary", "dfn", "span"]);
6250
+ function or(t, e) {
6251
+ return cc.has(t) && e.length > 0 ? !0 : !lc.has(t);
6251
6252
  }
6252
6253
  class on {
6253
6254
  xmlParsed;
@@ -6256,7 +6257,7 @@ class on {
6256
6257
  idAlloc = { claimed: /* @__PURE__ */ new Set(), counters: /* @__PURE__ */ new Map() };
6257
6258
  noterefDepth = 0;
6258
6259
  allowNode = null;
6259
- root = new Me();
6260
+ root = new He();
6260
6261
  current = this.root;
6261
6262
  segments = [];
6262
6263
  textAcc = "";
@@ -6281,7 +6282,7 @@ class on {
6281
6282
  prescan(e) {
6282
6283
  const n = [], r = (i, s) => {
6283
6284
  const o = i.getAttribute("id");
6284
- if (o && !this.ids.has(o) && this.ids.set(o, i), s = s || i.getAttribute("aria-hidden") === "true" || i.hasAttribute("hidden"), !s && i.tagName.toLowerCase() === "a" && Rt(i).includes("noteref")) {
6285
+ if (o && !this.ids.has(o) && this.ids.set(o, i), s = s || i.getAttribute("aria-hidden") === "true" || i.hasAttribute("hidden"), !s && i.tagName.toLowerCase() === "a" && Tt(i).includes("noteref")) {
6285
6286
  const c = i.getAttribute("href") ?? "";
6286
6287
  c.startsWith("#") && n.push({ id: c.slice(1), ref: i });
6287
6288
  }
@@ -6290,7 +6291,7 @@ class on {
6290
6291
  r(e, !1);
6291
6292
  for (const i of n) {
6292
6293
  const s = this.ids.get(i.id);
6293
- s && (or(s, i.ref) || this.suppressed.add(s));
6294
+ s && (ar(s, i.ref) || this.suppressed.add(s));
6294
6295
  }
6295
6296
  }
6296
6297
  // Converts root itself — used when root is meaningful content in its own
@@ -6309,21 +6310,21 @@ class on {
6309
6310
  }
6310
6311
  result() {
6311
6312
  const e = this.root.finalize();
6312
- return !e.children || e.children.length === 0 ? Mt(e) ? [] : [Gt(e)] : e.children.map(Gt);
6313
+ return !e.children || e.children.length === 0 ? Ht(e) ? [] : [Mt(e)] : e.children.map(Mt);
6313
6314
  }
6314
6315
  descend(e) {
6315
- const n = new Me();
6316
+ const n = new He();
6316
6317
  n.el = e, n.noText = this.current.noText, this.current.children.push(n), this.current = n;
6317
6318
  }
6318
6319
  appendChild(e) {
6319
6320
  e.noText = this.current.noText, this.current.children.push(e);
6320
6321
  }
6321
6322
  walk(e) {
6322
- if (e.nodeType === sc) {
6323
+ if (e.nodeType === ac) {
6323
6324
  this.text(e);
6324
6325
  return;
6325
6326
  }
6326
- if (e.nodeType !== ac) return;
6327
+ if (e.nodeType !== oc) return;
6327
6328
  const n = e, r = this.current, i = this.head(n);
6328
6329
  if (!i)
6329
6330
  for (let s = n.firstChild; s; s = s.nextSibling) this.walk(s);
@@ -6333,10 +6334,10 @@ class on {
6333
6334
  // wholesale, invisible, or explicitly skipped).
6334
6335
  head(e) {
6335
6336
  const n = e.tagName.toLowerCase();
6336
- if (Yl.has(n) || this.suppressed.has(e) && e !== this.allowNode) return !0;
6337
- const [r, i] = Ql(e);
6337
+ if (ec.has(n) || this.suppressed.has(e) && e !== this.allowNode) return !0;
6338
+ const [r, i] = Xl(e);
6338
6339
  if (!i && e !== this.allowNode) return !0;
6339
- const s = Rt(e);
6340
+ const s = Tt(e);
6340
6341
  if ((n === "img" || n === "svg") && (s.includes("presentation") || r === null && e.hasAttribute("alt") && e.getAttribute("alt").trim() === ""))
6341
6342
  return !0;
6342
6343
  if (n === "br")
@@ -6364,7 +6365,7 @@ class on {
6364
6365
  const c = { role: s };
6365
6366
  return r && (c.description = r.plain), this.placeholder(e, s.includes("math") ? "math" : "image", c), !0;
6366
6367
  }
6367
- if (!lr(n, s))
6368
+ if (!or(n, s))
6368
6369
  return !1;
6369
6370
  this.flushText(), this.descend(e);
6370
6371
  const o = this.current.object;
@@ -6374,23 +6375,23 @@ class on {
6374
6375
  }
6375
6376
  tail(e, n, r) {
6376
6377
  if (n) return;
6377
- const i = e.tagName.toLowerCase(), s = Rt(e);
6378
- lr(i, s) && (this.flushText(), this.current = r);
6378
+ const i = e.tagName.toLowerCase(), s = Tt(e);
6379
+ or(i, s) && (this.flushText(), this.current = r);
6379
6380
  }
6380
6381
  text(e) {
6381
6382
  if (this.current.noText) return;
6382
6383
  const n = e.nodeValue ?? "";
6383
6384
  if (/^\s*$/.test(n)) {
6384
- (this.textAcc.length > 0 || this.segments.length > 0) && (this.textAcc += Le(n, this.flowEndsWithSpace), this.updateFlowSpace());
6385
+ (this.textAcc.length > 0 || this.segments.length > 0) && (this.textAcc += Ne(n, this.flowEndsWithSpace), this.updateFlowSpace());
6385
6386
  return;
6386
6387
  }
6387
6388
  const r = this.textContext(e);
6388
- Tl(r, this.currentCtx) || (this.closeSegment(), this.currentCtx = r), this.textAcc += Le(n, this.flowEndsWithSpace), this.updateFlowSpace();
6389
+ Rl(r, this.currentCtx) || (this.closeSegment(), this.currentCtx = r), this.textAcc += Ne(n, this.flowEndsWithSpace), this.updateFlowSpace();
6389
6390
  }
6390
6391
  textContext(e) {
6391
- const n = { lang: ar(e.parentElement), tag: "" };
6392
+ const n = { lang: sr(e.parentElement), tag: "" };
6392
6393
  for (let r = e.parentElement; r && r !== this.current.el; r = r.parentElement) {
6393
- const [i, s] = Zl(r.tagName.toLowerCase());
6394
+ const [i, s] = Yl(r.tagName.toLowerCase());
6394
6395
  if (i && i !== "break") {
6395
6396
  n.tag = i, n.attrs = s;
6396
6397
  break;
@@ -6408,8 +6409,8 @@ class on {
6408
6409
  this.segments = [], this.textAcc = "", this.currentCtx = { lang: "", tag: "" }, this.flowEndsWithSpace = !0, this.pendingChildren = [];
6409
6410
  }
6410
6411
  placeholder(e, n, r, i) {
6411
- if (Mt(r)) return;
6412
- const s = new Me();
6412
+ if (Ht(r)) return;
6413
+ const s = new He();
6413
6414
  if (s.el = e, s.object = r, this.current.noText) {
6414
6415
  this.appendChild(s);
6415
6416
  return;
@@ -6424,22 +6425,22 @@ class on {
6424
6425
  pagebreak(e, n, r) {
6425
6426
  const i = { role: r }, s = (e.getAttribute("title") ?? "").trim();
6426
6427
  s ? i.text = { plain: s, ssml: "", language: "" } : n && (i.text = { plain: n.plain ?? "", ssml: n.ssml ?? "", language: n.language });
6427
- const o = !!(i.text && !Pe(i.text)), a = !this.xmlParsed && (rc(e) || o && e.firstChild !== null);
6428
+ const o = !!(i.text && !Le(i.text)), a = !this.xmlParsed && (ic(e) || o && e.firstChild !== null);
6428
6429
  if (!o && !a) {
6429
- const l = Ke(e);
6430
+ const l = We(e);
6430
6431
  l && (i.text = { plain: l, ssml: "", language: "" });
6431
6432
  }
6432
6433
  const c = e.getAttribute("id");
6433
6434
  return c && (i.textref = `#${c}`), this.placeholder(e, "pagebreak", i), a;
6434
6435
  }
6435
6436
  noteref(e, n) {
6436
- const r = { role: n }, i = Ke(e);
6437
+ const r = { role: n }, i = We(e);
6437
6438
  i && (r.text = { plain: i, ssml: "", language: "" });
6438
6439
  const s = e.getAttribute("href") ?? "";
6439
6440
  let o = e.getAttribute("id") ?? "";
6440
6441
  if (!o && s.startsWith("#") && (o = s.slice(1)), s.startsWith("#")) {
6441
6442
  const a = s.slice(1), c = this.ids.get(a);
6442
- if (c && !or(c, e) && this.noterefDepth < 3) {
6443
+ if (c && !ar(c, e) && this.noterefDepth < 3) {
6443
6444
  const l = new on(this.xmlParsed);
6444
6445
  l.ids = this.ids, l.suppressed = this.suppressed, l.idAlloc = this.idAlloc, l.noterefDepth = this.noterefDepth + 1, l.allowNode = c, l.convert(c);
6445
6446
  const d = l.result();
@@ -6454,7 +6455,7 @@ class on {
6454
6455
  link(e, n) {
6455
6456
  const r = {};
6456
6457
  n.length > 0 && (r.role = n);
6457
- const i = Ke(e);
6458
+ const i = We(e);
6458
6459
  i && (r.text = { plain: i, ssml: "", language: "" });
6459
6460
  const s = e.getAttribute("href");
6460
6461
  s && (r.textref = s), this.placeholder(e, n[0] ?? "link", r);
@@ -6506,7 +6507,7 @@ class on {
6506
6507
  const m = p.ctx.lang;
6507
6508
  i.includes(m) || i.push(m);
6508
6509
  }
6509
- let s = ar(this.current.el ?? null);
6510
+ let s = sr(this.current.el ?? null);
6510
6511
  i.length === 1 && i[0] !== "" && (s = i[0]);
6511
6512
  let o = !1;
6512
6513
  for (const p of e)
@@ -6531,7 +6532,7 @@ class on {
6531
6532
  let E = !1;
6532
6533
  if (a.length > 0) {
6533
6534
  const C = c || u || m;
6534
- l ? E = !0 : d ? E = C && !lt(w) : E = C;
6535
+ l ? E = !0 : d ? E = C && !ot(w) : E = C;
6535
6536
  }
6536
6537
  E && (a += " "), a += w, c = p.text.endsWith(" "), l = !1, d = !1, u = !1;
6537
6538
  } else p.kind === "break" ? l = !0 : p.kind === "placeholder" && (d = !0);
@@ -6549,77 +6550,77 @@ class on {
6549
6550
  p += `<${w}`;
6550
6551
  for (const [C, N] of Object.entries(E ?? {}))
6551
6552
  p += ` ${C}="${At(N)}"`;
6552
- m.ctx.lang !== s && m.ctx.lang !== "" && (p += ` xml:lang="${At(m.ctx.lang)}"`), p += `>${it(m.text)}</${w}>`;
6553
+ m.ctx.lang !== s && m.ctx.lang !== "" && (p += ` xml:lang="${At(m.ctx.lang)}"`), p += `>${rt(m.text)}</${w}>`;
6553
6554
  } else
6554
- p += it(m.text);
6555
+ p += rt(m.text);
6555
6556
  } else m.kind === "break" ? p += "<break/>" : m.kind === "placeholder" && (p += `<readium:${m.tag} id="${At(m.child.object.id)}" />`);
6556
6557
  f.ssml = p;
6557
6558
  }
6558
- const y = new Me();
6559
+ const y = new He();
6559
6560
  y.object = { text: f };
6560
6561
  for (const p of n)
6561
6562
  y.children.push(p);
6562
6563
  this.appendChild(y);
6563
6564
  }
6564
6565
  }
6565
- const cc = /<body[\s>]/i;
6566
- function uc(t, e) {
6567
- const n = e ?? ic(t), r = new DOMParser().parseFromString(t, n), i = new on(n === "application/xhtml+xml"), s = r.querySelector("body");
6568
- return s && !cc.test(t) ? i.convertChildren(s) : i.convert(s ?? r.documentElement), i.result();
6566
+ const uc = /<body[\s>]/i;
6567
+ function hc(t, e) {
6568
+ const n = e ?? sc(t), r = new DOMParser().parseFromString(t, n), i = new on(n === "application/xhtml+xml"), s = r.querySelector("body");
6569
+ return s && !uc.test(t) ? i.convertChildren(s) : i.convert(s ?? r.documentElement), i.result();
6569
6570
  }
6570
- function kc(t, e) {
6571
- return { guided: uc(t, e) };
6571
+ function Cc(t, e) {
6572
+ return { guided: hc(t, e) };
6572
6573
  }
6573
6574
  export {
6574
6575
  hl as BUILTIN_DECORATION_TYPES,
6575
- Xn as BooleanPreference,
6576
+ Cl as BooleanPreference,
6576
6577
  bl as DecorationController,
6577
6578
  ol as DecorationLayout,
6578
- O as DecorationStyleType,
6579
+ A as DecorationStyleType,
6579
6580
  al as DecorationWidth,
6580
6581
  ul as Decorator,
6581
6582
  pl as DirectCommsChannel,
6582
6583
  ml as DirectCommsFrame,
6583
6584
  yl as DirectCommsHost,
6584
- Fe as EnumPreference,
6585
- Ye as Locator,
6585
+ Ve as EnumPreference,
6586
+ Ze as Locator,
6586
6587
  W as LocatorLocations,
6587
- ct as LocatorText,
6588
- ut as Preference,
6589
- He as RangePreference,
6588
+ lt as LocatorText,
6589
+ ct as Preference,
6590
+ Fe as RangePreference,
6590
6591
  xl as ReadiumSpeechDecorationController,
6591
- xc as ReadiumSpeechNavigator,
6592
- vc as ReadiumSpeechProviderRegistry,
6592
+ kc as ReadiumSpeechNavigator,
6593
+ wc as ReadiumSpeechProviderRegistry,
6593
6594
  kl as SpeechDefaults,
6594
- Ne as SpeechPreferences,
6595
- Yn as SpeechPreferencesEditor,
6596
- Ao as SpeechServerEngine,
6597
- gc as SpeechServerEngineProvider,
6598
- Xe as SpeechServerError,
6599
- er as SpeechSettings,
6600
- Zn as StringArrayPreference,
6595
+ Re as SpeechPreferences,
6596
+ Zn as SpeechPreferencesEditor,
6597
+ Oo as SpeechServerEngine,
6598
+ fc as SpeechServerEngineProvider,
6599
+ Qe as SpeechServerError,
6600
+ Yn as SpeechSettings,
6601
+ Xn as StringArrayPreference,
6601
6602
  Dn as WebSpeechEngine,
6602
- dc as WebSpeechEngineProvider,
6603
+ gc as WebSpeechEngineProvider,
6603
6604
  k as WebSpeechVoiceManager,
6604
- Vl as blockLevelRoles,
6605
- Oe as chineseVariantMap,
6605
+ Fl as blockLevelRoles,
6606
+ Ae as chineseVariantMap,
6606
6607
  ho as chunkPlainText,
6607
6608
  fo as chunkSsmlText,
6608
6609
  Ol as contextualizedAtVerbosity,
6609
6610
  Sl as createLocator,
6610
6611
  fl as decorationsEqual,
6611
6612
  Ll as defaultAnnouncements,
6612
- Sc as extractUtterances,
6613
- kc as makeGnd,
6614
- Or as mapServerVoice,
6613
+ xc as extractUtterances,
6614
+ Cc as makeGnd,
6615
+ Er as mapServerVoice,
6615
6616
  mo as mimeTypeForFormat,
6616
- uc as parseMarkup,
6617
+ hc as parseMarkup,
6617
6618
  Kn as resolveDecorationForWire,
6618
6619
  xo as selectBitrate,
6619
6620
  vo as selectFormat,
6620
- bc as setupDecorations,
6621
- El as skippableAtVerbosity,
6622
- wc as skippableRoles,
6621
+ vc as setupDecorations,
6622
+ Al as skippableAtVerbosity,
6623
+ Sc as skippableRoles,
6623
6624
  dl as supportsDecorationStyle,
6624
- We as toSpeechServerError
6625
+ Ge as toSpeechServerError
6625
6626
  };