UNPKG

canvas-editor-pdf

Version:
8,982 lines 386 kB
var Pe = Object.defineProperty;
var Ne = (i, t, R) => t in i ? Pe(i, t, { enumerable: !0, configurable: !0, writable: !0, value: R }) : i[t] = R;
var F = (i, t, R) => Ne(i, typeof t != "symbol" ? t + "" : t, R);
import { GState as tR, jsPDF as Fe } from "jspdf";
var jt = /* @__PURE__ */ ((i) => (i.HALF = "half", i.ONE_THIRD = "one-third", i.QUARTER = "quarter", i))(jt || {}), WR = /* @__PURE__ */ ((i) => (i.ARABIC = "arabic", i.CHINESE = "chinese", i))(WR || {}), Rt = /* @__PURE__ */ ((i) => (i.INLINE = "inline", i.BLOCK = "block", i.SURROUND = "surround", i.FLOAT_TOP = "float-top", i.FLOAT_BOTTOM = "float-bottom", i))(Rt || {});
const q = "​", jR = " ", ue = [
  "·",
  "、",
  ":",
  ":",
  ",",
  ",",
  ".",
  "。",
  ";",
  ";",
  "?",
  "?",
  "!",
  "!"
], qR = {
  [jt.HALF]: 1 / 2,
  [jt.ONE_THIRD]: 1 / 3,
  [jt.QUARTER]: 1 / 4
}, Se = {
  ENGLISH: "A-Za-z"
}, Le = "中";
var Gt = /* @__PURE__ */ ((i) => (i.LEFT = "left", i.CENTER = "center", i.RIGHT = "right", i.ALIGNMENT = "alignment", i.JUSTIFY = "justify", i))(Gt || {});
const he = /[\uD800-\uDBFF][\uDC00-\uDFFF]/, Te = /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g, We = new RegExp(
  `${Te.source}|${he.source}`,
  "g"
), Ye = /[、,。?!;:……「」“”‘’*()【】〔〕〖〗〘〙〚〛《》———﹝﹞–—\\/·.,!?;:`~<>()[\]{}'"|]/, cR = new RegExp(`^[${q}
]`);
function mt(i) {
  if (typeof structuredClone == "function")
    return structuredClone(i);
  if (!i || typeof i != "object")
    return i;
  let t = {};
  return Array.isArray(i) ? t = i.map((R) => mt(R)) : Object.keys(i).forEach((R) => {
    t[R] = mt(i[R]);
  }), t;
}
function Yt() {
  function i() {
    return ((1 + Math.random()) * 65536 | 0).toString(16).substring(1);
  }
  return i() + i() + "-" + i() + "-" + i() + "-" + i() + "-" + i() + i() + i();
}
function wt(i) {
  const t = [];
  if (Intl.Segmenter) {
    const e = new Intl.Segmenter().segment(i);
    for (const { segment: o } of e)
      t.push(o);
  } else {
    const R = /* @__PURE__ */ new Map();
    for (const o of i.matchAll(We))
      R.set(o.index, o[0]);
    let e = 0;
    for (; e < i.length; ) {
      const o = R.get(e);
      o ? (t.push(o), e += o.length) : (t.push(i[e]), e++);
    }
  }
  return t;
}
function xR(i) {
  return Object.prototype.toString.call(i) === "[object Object]";
}
function BR(i) {
  return Array.isArray(i);
}
function te(i, t) {
  if (xR(i) && xR(t)) {
    const R = t;
    for (const [e, o] of Object.entries(i))
      e === "__proto__" || e === "constructor" || e === "prototype" || (R[e] ? R[e] = te(o, R[e]) : R[e] = o);
  } else BR(i) && BR(t) && t.push(...i);
  return t;
}
function Ve(i) {
  const t = [
    "零",
    "一",
    "二",
    "三",
    "四",
    "五",
    "六",
    "七",
    "八",
    "九"
  ], R = [
    "",
    "十",
    "百",
    "千",
    "万",
    "十",
    "百",
    "千",
    "亿",
    "十",
    "百",
    "千",
    "万",
    "十",
    "百",
    "千",
    "亿"
  ];
  if (!i || isNaN(i)) return "零";
  const e = i.toString().split("");
  let o = "";
  for (let n = 0; n < e.length; n++) {
    const s = e.length - 1 - n;
    o = `${R[n]}${o}`, o = `${t[Number(e[s])]}${o}`;
  }
  return o = o.replace(/零(千|百|十)/g, "零").replace(/十零/g, "十"), o = o.replace(/零+/g, "零"), o = o.replace(/零亿/g, "亿").replace(/零万/g, "万"), o = o.replace(/亿万/g, "亿"), o = o.replace(/零+$/, ""), o = o.replace(/^一十/g, "十"), o;
}
function LR(i, t) {
  const R = {};
  for (const e in i)
    t.includes(e) && (R[e] = i[e]);
  return R;
}
function ce(i) {
  const R = new TextEncoder().encode(i), e = Array.from(R, (n) => String.fromCharCode(n));
  return btoa(e.join(""));
}
function Qe(i, t) {
  return i.length !== t.length ? !1 : !i.some((R) => !t.includes(R));
}
function Ze(i, t) {
  const R = i.x, e = i.x + i.width, o = i.y, n = i.y + i.height, s = t.x, r = t.x + t.width, l = t.y, a = t.y + t.height;
  return !(R > r || e < s || o > a || n < l);
}
function Ue(i) {
  return i == null;
}
function Ke(i) {
  return new Promise((t, R) => {
    const e = new Image();
    e.onload = () => t(e), e.onerror = R, e.src = i;
  });
}
var Bt = /* @__PURE__ */ ((i) => (i.TEXT = "text", i.SELECT = "select", i.CHECKBOX = "checkbox", i.RADIO = "radio", i.DATE = "date", i.NUMBER = "number", i))(Bt || {}), j = /* @__PURE__ */ ((i) => (i.PREFIX = "prefix", i.POSTFIX = "postfix", i.PRE_TEXT = "preText", i.POST_TEXT = "postText", i.PLACEHOLDER = "placeholder", i.VALUE = "value", i.CHECKBOX = "checkbox", i.RADIO = "radio", i))(j || {}), Re = /* @__PURE__ */ ((i) => (i.ROW_START = "rowStart", i.VALUE_START = "valueStart", i))(Re || {}), ee = /* @__PURE__ */ ((i) => (i.COMPONENT = "component", i.MENU = "menu", i.MAIN = "main", i.FOOTER = "footer", i.CONTEXTMENU = "contextmenu", i.POPUP = "popup", i.CATALOG = "catalog", i.COMMENT = "comment", i))(ee || {}), dt = /* @__PURE__ */ ((i) => (i.EDIT = "edit", i.CLEAN = "clean", i.READONLY = "readonly", i.FORM = "form", i.PRINT = "print", i.DESIGN = "design", i.GRAFFITI = "graffiti", i))(dt || {}), Qt = /* @__PURE__ */ ((i) => (i.HEADER = "header", i.MAIN = "main", i.FOOTER = "footer", i))(Qt || {}), bt = /* @__PURE__ */ ((i) => (i.PAGING = "paging", i.CONTINUITY = "continuity", i))(bt || {}), _t = /* @__PURE__ */ ((i) => (i.VERTICAL = "vertical", i.HORIZONTAL = "horizontal", i))(_t || {}), GR = /* @__PURE__ */ ((i) => (i.BREAK_ALL = "break-all", i.BREAK_WORD = "break-word", i))(GR || {}), JR = /* @__PURE__ */ ((i) => (i.SPEED = "speed", i.COMPATIBILITY = "compatibility", i))(JR || {});
const de = "editor-component", it = "ce", QR = {
  print: {
    imagePreviewerDisabled: !1,
    backgroundDisabled: !1,
    filterEmptyControl: !1,
    areaHideDisabled: !1
  },
  readonly: {
    imagePreviewerDisabled: !1
  },
  form: {
    controlDeletableDisabled: !1
  }
};
var V = /* @__PURE__ */ ((i) => (i.TEXT = "text", i.IMAGE = "image", i.TABLE = "table", i.HYPERLINK = "hyperlink", i.SUPERSCRIPT = "superscript", i.SUBSCRIPT = "subscript", i.SEPARATOR = "separator", i.PAGE_BREAK = "pageBreak", i.CONTROL = "control", i.AREA = "area", i.CHECKBOX = "checkbox", i.RADIO = "radio", i.LATEX = "latex", i.TAB = "tab", i.DATE = "date", i.BLOCK = "block", i.TITLE = "title", i.LIST = "list", i.LABEL = "label", i))(V || {});
const At = {
  defaultFontSource: "cdn",
  createMeasurementCanvas() {
    return document.createElement("canvas");
  },
  createCanvas(i, t) {
    const R = document.createElement("canvas");
    return R.width = i, R.height = t, R;
  },
  getBundledFontPath(i) {
    throw new Error(
      `fontSource 'bundled' is not supported in the browser build (looking up ${i}). Use 'cdn' (default) or host the TTFs and pass { dir: '/your/url/base' }.`
    );
  },
  async loadFontAsBase64(i) {
    const t = await fetch(i);
    if (!t.ok)
      throw new Error(
        `Font fetch failed: ${t.status} ${t.statusText}`
      );
    const R = await t.blob();
    return new Promise((e, o) => {
      const n = new FileReader();
      n.onload = () => {
        const r = n.result.split("base64,")[1];
        e(r);
      }, n.onerror = () => o(n.error), n.readAsDataURL(R);
    });
  },
  registerFontForMeasurement() {
  },
  svgToPngDataUrl(i, t, R) {
    return new Promise((e, o) => {
      const n = document.createElement("canvas");
      n.width = t, n.height = R;
      const s = n.getContext("2d"), r = new Image();
      r.onload = () => {
        s.clearRect(0, 0, t, R), s.drawImage(r, 0, 0, t, R), e(n.toDataURL("image/png"));
      }, r.onerror = () => o(new Error("canvas-editor-pdf: failed to rasterize SVG")), r.src = i.startsWith("data:image/svg+xml") ? i : "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(i)));
    });
  }
};
class ie {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "imageCache");
    // private container: HTMLDivElement
    F(this, "floatImageContainer");
    F(this, "floatImage");
    this.draw = t, this.options = t.getOptions(), this.imageCache = /* @__PURE__ */ new Map(), this.floatImageContainer = null, this.floatImage = null;
  }
  getOriginalMainImageList() {
    const t = [], R = (e) => {
      for (const o of e)
        if (o.type === V.TABLE) {
          const n = o.trList;
          for (let s = 0; s < n.length; s++) {
            const r = n[s];
            for (let l = 0; l < r.tdList.length; l++) {
              const a = r.tdList[l];
              R(a.value);
            }
          }
        } else o.type === V.IMAGE && t.push(o);
    };
    return R(this.draw.getOriginalMainElementList()), t;
  }
  _countImagesBeforeTarget(t, R) {
    let e = 0;
    for (const o of t) {
      if (o === R) break;
      if (o.type === V.TABLE) {
        const n = o.trList;
        for (const s of n)
          for (const r of s.tdList)
            e += this._countImagesBeforeTarget(r.value, R);
      } else o.type === V.IMAGE && e++;
    }
    return e;
  }
  createFloatImage(t) {
    const { scale: R } = this.options;
    let e = this.floatImageContainer, o = this.floatImage;
    e || (e = document.createElement("div"), e.classList.add(`${it}-float-image`), this.floatImageContainer = e), o || (o = document.createElement("img"), e.append(o), this.floatImage = o), e.style.display = "none", o.style.width = `${t.width * R}px`, o.style.height = `${t.height * R}px`;
    const n = this.draw.getHeight(), s = this.draw.getPageGap(), r = this.draw.getPageNo() * (n + s), l = t.imgFloatPosition;
    e.style.left = `${l.x * R}px`, e.style.top = `${r + l.y * R}px`, o.src = t.value;
  }
  dragFloatImage(t, R) {
    if (!this.floatImageContainer) return;
    this.floatImageContainer.style.display = "block";
    const e = parseFloat(this.floatImageContainer.style.left) + t, o = parseFloat(this.floatImageContainer.style.top) + R;
    this.floatImageContainer.style.left = `${e}px`, this.floatImageContainer.style.top = `${o}px`;
  }
  destroyFloatImage() {
    this.floatImageContainer && (this.floatImageContainer.style.display = "none");
  }
  addImageObserver(t) {
    this.draw.getImageObserver().add(t);
  }
  getFallbackImage(t, R) {
    const o = (t - Math.ceil(t / 8) * 8) / 2, n = (R - Math.ceil(R / 8) * 8) / 2, s = `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${R}" viewBox="0 0 ${t} ${R}">
                  <rect width="${t}" height="${R}" fill="url(#mosaic)" />
                  <defs>
                    <pattern id="mosaic" x="${o}" y="${n}" width="${8 * 2}" height="${8 * 2}" patternUnits="userSpaceOnUse">
                      <rect width="8" height="8" fill="#cccccc" />
                      <rect width="8" height="8" fill="#cccccc" transform="translate(8, 8)" />
                    </pattern>
                  </defs>
                </svg>`, r = new Image();
    return r.src = `data:image/svg+xml;base64,${ce(
      s
    )}`, r;
  }
  _renderCaption(t, R, e, o, n, s) {
    var Y;
    if (!((Y = R.imgCaption) != null && Y.value)) return;
    const { scale: r, imgCaption: l } = this.options;
    let a = R.imgCaption.value;
    if (a.includes("{imageNo}")) {
      const S = this.draw.getOriginalMainElementList(), W = this._countImagesBeforeTarget(S, R) + 1;
      a = a.replace(/\{imageNo\}/g, String(W));
    }
    const O = (R.imgCaption.size || l.size) * r, M = R.imgCaption.font || l.font, X = R.imgCaption.color || l.color;
    t.save(), t.font = `${O}px ${M}`, t.fillStyle = X, t.textAlign = "center";
    let P = a;
    const N = this.draw.getFakeCtx().measureText(a);
    if (N.width > n) {
      let S = 0, W = a.length;
      for (; S < W; ) {
        const c = Math.ceil((S + W) / 2), T = a.substring(0, c);
        this.draw.getFakeCtx().measureText(T + "...").width <= n ? S = c : W = c - 1;
      }
      P = a.substring(0, S) + "...";
    }
    const u = (R.imgCaption.top ?? l.top) * r, h = o + s + u + N.actualBoundingBoxAscent, L = e + n / 2;
    t.fillText(P, L, h), t.restore();
  }
  render(t, R, e, o) {
    if (!R.value) return;
    const { scale: n } = this.options, s = R.width * n, r = R.height * n;
    t.drawImage(R.value, e, o, s, r), this._renderCaption(t, R, e, o, s, r);
  }
}
function Os(i, t, R, e, o) {
  return At.svgToPngDataUrl(i, t, R).then((n) => (o(n), n));
}
const uR = 82;
function vt(i) {
  return gR[i] == null && ge(i), gR[i];
}
function ge(i) {
  const t = Ie[i];
  if (t == null)
    return;
  const R = t.substring(3, 5), e = 1 * R.charCodeAt(0) - uR, o = 1 * R.charCodeAt(1) - uR, n = t.substring(5), s = [[]];
  let r = 1 / 0, l = -1 / 0, a = 1 / 0, O = -1 / 0, M = 0;
  for (; M < n.length; ) {
    const X = n.substring(M, M + 2);
    if (X == " R")
      s.push([]);
    else {
      const P = X.charCodeAt(0) - uR - e, N = X.charCodeAt(1) - uR;
      r = Math.min(N, r), l = Math.max(N, l), a = Math.min(P, a), O = Math.max(P, O), s[s.length - 1].push([P, N]);
    }
    M += 2;
  }
  gR[i] = {
    w: o - e,
    xmin: a,
    xmax: O,
    ymin: r,
    ymax: l,
    polylines: s
  };
}
const gR = {}, Ie = {
  1: "  9MWRMNV RRMVV RPSTS",
  2: " 16MWOMOV ROMSMUNUPSQ ROQSQURUUSVOV",
  3: " 11MXVNTMRMPNOPOSPURVTVVU",
  4: " 12MWOMOV ROMRMTNUPUSTURVOV",
  5: " 12MWOMOV ROMUM ROQSQ ROVUV",
  6: "  9MVOMOV ROMUM ROQSQ",
  7: " 15MXVNTMRMPNOPOSPURVTVVUVR RSRVR",
  8: "  9MWOMOV RUMUV ROQUQ",
  9: "  3PTRMRV",
  10: "  7NUSMSTRVPVOTOS",
  11: "  9MWOMOV RUMOS RQQUV",
  12: "  6MVOMOV ROVUV",
  13: " 12LXNMNV RNMRV RVMRV RVMVV",
  14: "  9MWOMOV ROMUV RUMUV",
  15: " 14MXRMPNOPOSPURVSVUUVSVPUNSMRM",
  16: " 10MWOMOV ROMSMUNUQSROR",
  17: " 17MXRMPNOPOSPURVSVUUVSVPUNSMRM RSTVW",
  18: " 13MWOMOV ROMSMUNUQSROR RRRUV",
  19: " 13MWUNSMQMONOOPPTRUSUUSVQVOU",
  20: "  6MWRMRV RNMVM",
  21: "  9MXOMOSPURVSVUUVSVM",
  22: "  6MWNMRV RVMRV",
  23: " 12LXNMPV RRMPV RRMTV RVMTV",
  24: "  6MWOMUV RUMOV",
  25: "  7MWNMRQRV RVMRQ",
  26: "  9MWUMOV ROMUM ROVUV",
  27: "  9MWRMNV RRMVV RPSTS",
  28: " 16MWOMOV ROMSMUNUPSQ ROQSQURUUSVOV",
  29: "  6MVOMOV ROMUM",
  30: "  9MWRMNV RRMVV RNVVV",
  31: " 12MWOMOV ROMUM ROQSQ ROVUV",
  32: "  9MWUMOV ROMUM ROVUV",
  33: "  9MWOMOV RUMUV ROQUQ",
  34: " 20MXRMPNOPOSPURVSVUUVSVPUNSMRM RQQTR RTQQR",
  35: "  3PTRMRV",
  36: "  9MWOMOV RUMOS RQQUV",
  37: "  6MWRMNV RRMVV",
  38: " 12LXNMNV RNMRV RVMRV RVMVV",
  39: "  9MWOMOV ROMUV RUMUV",
  40: " 12MWOMUM RPQTR RTQPR ROVUV",
  41: " 14MXRMPNOPOSPURVSVUUVSVPUNSMRM",
  42: "  9MWOMOV RUMUV ROMUM",
  43: " 10MWOMOV ROMSMUNUQSROR",
  44: " 10MWOMRQOV ROMUM ROVUV",
  45: "  6MWRMRV RNMVM",
  46: " 15MWNONNOMPMQNRPRV RVOVNUMTMSNRP",
  47: " 13LXRMRV RPONPNSPTTTVSVPTOPO",
  48: "  6MWOMUV RUMOV",
  49: " 12LXRMRV RNOOPOSQTSTUSUPVO",
  50: " 13MXOVQVOROPPNRMSMUNVPVRTVVV",
  200: " 12MWRMPNOPOSPURVTUUSUPTNRM",
  201: "  4MWPORMRV",
  202: "  9MWONQMSMUNUPTROVUV",
  203: " 15MWONQMSMUNUPSQ RRQSQURUUSVQVOU",
  204: "  7MWSMSV RSMNSVS",
  205: " 14MWPMOQQPRPTQUSTURVQVOU RPMTM",
  206: " 14MWTMRMPNOPOSPURVTUUSTQRPPQOS",
  207: "  6MWUMQV ROMUM",
  208: " 19MWQMONOPQQSQUPUNSMQM RQQOROUQVSVUUURSQ",
  209: " 14MWUPTRRSPROPPNRMTNUPUSTURVPV",
  210: "  6PURURVSVSURU",
  211: "  7PUSVRVRUSUSWRY",
  212: " 12PURPRQSQSPRP RRURVSVSURU",
  213: " 13PURPRQSQSPRP RSVRVRUSUSWRY",
  214: " 12PURMRR RSMSR RRURVSVSURU",
  215: " 17NWPNRMSMUNUPRQRRSRSQUP RRURVSVSURU",
  216: "  3PTRMRQ",
  217: "  6NVPMPQ RTMTQ",
  218: " 10NVQMPNPPQQSQTPTNSMQM",
  219: " 16MWUNSMQMONOPQQTRUSUUSVQVOU RRLRW",
  220: "  3MWVLNW",
  221: "  7OVTLRNQPQSRUTW",
  222: "  7NUPLRNSPSSRUPW",
  223: "  3PTRLRW",
  224: "  3LXNRVR",
  225: "  6LXRNRV RNRVR",
  226: "  6LXNPVP RNTVT",
  227: "  6MWOOUU RUOOU",
  228: "  9MWRORU ROPUT RUPOT",
  229: "  6PURQRRSRSQRQ",
  230: "  7PUSMRORQSQSPRP",
  231: "  7PUSNRNRMSMSORQ",
  232: "  7LXSOVRSU RNRVR",
  233: " 12MXRLPW RULSW ROPVP ROSVS",
  234: " 21LXVRURTSSURVOVNUNSORRQSPSNRMPMONOPQSSUUVVV",
  235: " 20LXNNOQOSNV RVNUQUSVV RNNQOSOVN RNVQUSUVV",
  501: "  9I[RFJ[ RRFZ[ RMTWT",
  502: " 24G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[",
  503: " 19H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV",
  504: " 16G\\KFK[ RKFRFUGWIXKYNYSXVWXUZR[K[",
  505: " 12H[LFL[ RLFYF RLPTP RL[Y[",
  506: "  9HZLFL[ RLFYF RLPTP",
  507: " 23H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZS RUSZS",
  508: "  9G]KFK[ RYFY[ RKPYP",
  509: "  3NVRFR[",
  510: " 11JZVFVVUYTZR[P[NZMYLVLT",
  511: "  9G\\KFK[ RYFKT RPOY[",
  512: "  6HYLFL[ RL[X[",
  513: " 12F^JFJ[ RJFR[ RZFR[ RZFZ[",
  514: "  9G]KFK[ RKFY[ RYFY[",
  515: " 22G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF",
  516: " 14G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ",
  517: " 25G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RSWY]",
  518: " 17G\\KFK[ RKFTFWGXHYJYLXNWOTPKP RRPY[",
  519: " 21H\\YIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX",
  520: "  6JZRFR[ RKFYF",
  521: " 11G]KFKULXNZQ[S[VZXXYUYF",
  522: "  6I[JFR[ RZFR[",
  523: " 12F^HFM[ RRFM[ RRFW[ R\\FW[",
  524: "  6H\\KFY[ RYFK[",
  525: "  7I[JFRPR[ RZFRP",
  526: "  9H\\YFK[ RKFYF RK[Y[",
  527: "  9I[RFJ[ RRFZ[ RMTWT",
  528: " 24G\\KFK[ RKFTFWGXHYJYLXNWOTP RKPTPWQXRYTYWXYWZT[K[",
  529: "  6HYLFL[ RLFXF",
  530: "  9I[RFJ[ RRFZ[ RJ[Z[",
  531: " 12H[LFL[ RLFYF RLPTP RL[Y[",
  532: "  9H\\YFK[ RKFYF RK[Y[",
  533: "  9G]KFK[ RYFY[ RKPYP",
  534: " 25G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF ROPUP",
  535: "  3NVRFR[",
  536: "  9G\\KFK[ RYFKT RPOY[",
  537: "  6I[RFJ[ RRFZ[",
  538: " 12F^JFJ[ RJFR[ RZFR[ RZFZ[",
  539: "  9G]KFK[ RKFY[ RYFY[",
  540: "  9I[KFYF ROPUP RK[Y[",
  541: " 22G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF",
  542: "  9G]KFK[ RYFY[ RKFYF",
  543: " 14G\\KFK[ RKFTFWGXHYJYMXOWPTQKQ",
  544: " 10I[KFRPK[ RKFYF RK[Y[",
  545: "  6JZRFR[ RKFYF",
  546: " 19I[KKKILGMFOFPGQIRMR[ RYKYIXGWFUFTGSIRM",
  547: " 21H\\RFR[ RPKMLLMKOKRLTMUPVTVWUXTYRYOXMWLTKPK",
  548: "  6H\\KFY[ RK[YF",
  549: " 18G]RFR[ RILJLKMLQMSNTQUSUVTWSXQYMZL[L",
  550: " 17H\\K[O[LTKPKLLINGQFSFVGXIYLYPXTU[Y[",
  551: " 20G[G[IZLWOSSLVFV[UXSUQSNQLQKRKTLVNXQZT[Y[",
  552: " 41F]SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFXFZG[I[KZMYNWOTP RSPTPWQXRYTYWXYWZU[R[PZOX",
  553: " 24H\\TLTMUNWNYMZKZIYGWFTFQGOIMLLNKRKVLYMZO[Q[TZVXWV",
  554: " 35G^TFRGQIPMOSNVMXKZI[G[FZFXGWIWKXMZP[S[VZXXZT[O[KZHYGWFTFRHRJSMUPWRZT\\U",
  555: " 28H\\VJVKWLYLZKZIYGVFRFOGNINLONPOSPPPMQLRKTKWLYMZP[S[VZXXYV",
  556: " 28H\\RLPLNKMINGQFTFXG[G]F RXGVNTTRXPZN[L[JZIXIVJULUNV RQPZP",
  557: " 29G^G[IZMVPQQNRJRGQFPFOGNINLONQOUOXNYMZKZQYVXXVZS[O[LZJXIVIT",
  558: " 38F^MMKLJJJIKGMFNFPGQIQKPONULYJ[H[GZGX RMRVOXN[L]J^H^G]F\\FZHXLVRUWUZV[W[YZZY\\V",
  559: " 25IZWVUTSQROQLQIRGSFUFVGWIWLVQTVSXQZO[M[KZJXJVKUMUOV",
  560: " 25JYT^R[PVOPOJPGRFTFUGVJVMURR[PaOdNfLgKfKdLaN^P\\SZWX",
  561: " 39F^MMKLJJJIKGMFNFPGQIQKPONULYJ[H[GZGX R^I^G]F\\FZGXIVLTNROPO RROSQSXTZU[V[XZYY[V",
  562: " 29I\\MRORSQVOXMYKYHXFVFUGTISNRSQVPXNZL[J[IZIXJWLWNXQZT[V[YZ[X",
  563: " 45@aEMCLBJBICGEFFFHGIIIKHPGTE[ RGTJLLHMGOFPFRGSISKRPQTO[ RQTTLVHWGYFZF\\G]I]K\\PZWZZ[[\\[^Z_YaV",
  564: " 32E]JMHLGJGIHGJFKFMGNINKMPLTJ[ RLTOLQHRGTFVFXGYIYKXPVWVZW[X[ZZ[Y]V",
  565: " 29H]TFQGOIMLLNKRKVLYMZO[Q[TZVXXUYSZOZKYHXGVFTFRHRKSNUQWSZU\\V",
  566: " 31F_SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFZF\\G]H^J^M]O\\PZQWQUPTO",
  567: " 32H^ULTNSOQPOPNNNLOIQGTFWFYGZIZMYPWSSWPYNZK[I[HZHXIWKWMXPZS[V[YZ[X",
  568: " 38F_SHTITLSPRSQUOXMZK[J[IZIWJRKOLMNJPHRGUFYF[G\\H]J]M\\O[PYQVQSPTQUSUXVZX[ZZ[Y]V",
  569: " 28H\\H[JZLXOTQQSMTJTGSFRFQGPIPKQMSOVQXSYUYWXYWZT[P[MZKXJVJT",
  570: " 25H[RLPLNKMINGQFTFXG[G]F RXGVNTTRXPZN[L[JZIXIVJULUNV",
  571: " 33E]JMHLGJGIHGJFKFMGNINKMOLRKVKXLZN[P[RZSYUUXMZF RXMWQVWVZW[X[ZZ[Y]V",
  572: " 32F]KMILHJHIIGKFLFNGOIOKNOMRLVLYM[O[QZTWVTXPYMZIZGYFXFWGVIVKWNYP[Q",
  573: " 25C_HMFLEJEIFGHFIFKGLILLK[ RUFK[ RUFS[ RaF_G\\JYNVTS[",
  574: " 36F^NLLLKKKILGNFPFRGSISLQUQXRZT[V[XZYXYVXUVU R]I]G\\FZFXGVITLPUNXLZJ[H[GZGX",
  575: " 38F]KMILHJHIIGKFLFNGOIOKNOMRLVLXMZN[P[RZTXVUWSYM R[FYMVWT]RbPfNgMfMdNaP^S[VY[V",
  576: " 40H]ULTNSOQPOPNNNLOIQGTFWFYGZIZMYPWTTWPZN[K[JZJXKWNWPXQYR[R^QaPcNfLgKfKdLaN^Q[TYZV",
  583: "  9I[JFR[ RZFR[ RJFZF",
  601: " 18I\\XMX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX",
  602: " 18H[LFL[ RLPNNPMSMUNWPXSXUWXUZS[P[NZLX",
  603: " 15I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX",
  604: " 18I\\XFX[ RXPVNTMQMONMPLSLUMXOZQ[T[VZXX",
  605: " 18I[LSXSXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX",
  606: "  9MYWFUFSGRJR[ ROMVM",
  607: " 23I\\XMX]W`VaTbQbOa RXPVNTMQMONMPLSLUMXOZQ[T[VZXX",
  608: " 11I\\MFM[ RMQPNRMUMWNXQX[",
  609: "  9NVQFRGSFREQF RRMR[",
  610: " 12MWRFSGTFSERF RSMS^RaPbNb",
  611: "  9IZMFM[ RWMMW RQSX[",
  612: "  3NVRFR[",
  613: " 19CaGMG[ RGQJNLMOMQNRQR[ RRQUNWMZM\\N]Q][",
  614: " 11I\\MMM[ RMQPNRMUMWNXQX[",
  615: " 18I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM",
  616: " 18H[LMLb RLPNNPMSMUNWPXSXUWXUZS[P[NZLX",
  617: " 18I\\XMXb RXPVNTMQMONMPLSLUMXOZQ[T[VZXX",
  618: "  9KXOMO[ ROSPPRNTMWM",
  619: " 18J[XPWNTMQMNNMPNRPSUTWUXWXXWZT[Q[NZMX",
  620: "  9MYRFRWSZU[W[ ROMVM",
  621: " 11I\\MMMWNZP[S[UZXW RXMX[",
  622: "  6JZLMR[ RXMR[",
  623: " 12G]JMN[ RRMN[ RRMV[ RZMV[",
  624: "  6J[MMX[ RXMM[",
  625: " 10JZLMR[ RXMR[P_NaLbKb",
  626: "  9J[XMM[ RMMXM RM[X[",
  627: " 24H]QMONMPLRKUKXLZN[P[RZUWWTYPZM RQMSMTNUPWXXZY[Z[",
  628: " 31I\\UFSGQIOMNPMTLZKb RUFWFYHYKXMWNUORO RROTPVRWTWWVYUZS[Q[OZNYMV",
  629: " 17I\\JPLNNMOMQNROSRSVR[ RZMYPXRR[P_Ob",
  630: " 24I[TMQMONMPLSLVMYNZP[R[TZVXWUWRVOTMRKQIQGRFTFVGXI",
  631: " 19JZWOVNTMQMONOPPRSS RSSOTMVMXNZP[S[UZWX",
  632: " 23JYTFRGQHQIRJUKXK RXKTMQONRMUMWNYP[S]T_TaSbQbP`",
  633: " 19H\\IQJOLMNMONOPNTL[ RNTPPRNTMVMXOXRWWTb",
  634: " 27G\\HQIOKMMMNNNPMUMXNZO[Q[SZUWVUWRXMXJWGUFSFRHRJSMUPWRZT",
  635: "  9LWRMPTOXOZP[R[TYUW",
  636: " 19I[OMK[ RYNXMWMUNQROSNS RNSPTQUSZT[U[VZ",
  637: "  9JZKFMFOGPHX[ RRML[",
  638: " 21H]OMIb RNQMVMYO[Q[SZUXWT RYMWTVXVZW[Y[[Y\\W",
  639: " 14I[LMOMNSMXL[ RYMXPWRUURXOZL[",
  640: " 29JZTFRGQHQIRJUKXK RUKRLPMOOOQQSTTVT RTTPUNVMXMZO\\S^T_TaRbPb",
  641: " 18J[RMPNNPMSMVNYOZQ[S[UZWXXUXRWOVNTMRM",
  642: " 13G]PML[ RUMVSWXX[ RIPKNNM[M",
  643: " 19I[MSMVNYOZQ[S[UZWXXUXRWOVNTMRMPNNPMSIb",
  644: " 18I][MQMONMPLSLVMYNZP[R[TZVXWUWRVOUNSM",
  645: "  8H\\SMP[ RJPLNOMZM",
  646: " 16H\\IQJOLMNMONOPMVMYO[Q[TZVXXTYPYM",
  647: " 21G]ONMOKQJTJWKYLZN[Q[TZWXYUZRZOXMVMTORSPXMb",
  648: " 14I[KMMMOOU`WbYb RZMYOWRM]K`Jb",
  649: " 20F]VFNb RGQHOJMLMMNMPLULXMZO[Q[TZVXXUZP[M",
  650: " 23F]NMLNJQITIWJZK[M[OZQW RRSQWRZS[U[WZYWZTZQYNXM",
  651: " 22L\\UUTSRRPRNSMTLVLXMZO[Q[SZTXVRUWUZV[W[YZZY\\V",
  652: " 23M[MVOSRNSLTITGSFQGPIOMNTNZO[P[RZTXUUURVVWWYW[V",
  653: " 14MXTTTSSRQROSNTMVMXNZP[S[VYXV",
  654: " 24L\\UUTSRRPRNSMTLVLXMZO[Q[SZTXZF RVRUWUZV[W[YZZY\\V",
  655: " 17NXOYQXRWSUSSRRQROSNUNXOZQ[S[UZVYXV",
  656: " 24OWOVSQUNVLWIWGVFTGSIQQNZKaJdJfKgMfNcOZP[R[TZUYWV",
  657: " 28L[UUTSRRPRNSMTLVLXMZO[Q[SZTY RVRTYPdOfMgLfLdMaP^S\\U[XY[V",
  658: " 29M\\MVOSRNSLTITGSFQGPIOMNSM[ RM[NXOVQSSRURVSVUUXUZV[W[YZZY\\V",
  659: " 16PWSMSNTNTMSM RPVRRPXPZQ[R[TZUYWV",
  660: " 20PWSMSNTNTMSM RPVRRLdKfIgHfHdIaL^O\\Q[TYWV",
  661: " 33M[MVOSRNSLTITGSFQGPIOMNSM[ RM[NXOVQSSRURVSVUTVQV RQVSWTZU[V[XZYY[V",
  662: " 18OWOVQSTNULVIVGUFSGRIQMPTPZQ[R[TZUYWV",
  663: " 33E^EVGSIRJSJTIXH[ RIXJVLSNRPRQSQTPXO[ RPXQVSSURWRXSXUWXWZX[Y[[Z\\Y^V",
  664: " 23J\\JVLSNROSOTNXM[ RNXOVQSSRURVSVUUXUZV[W[YZZY\\V",
  665: " 23LZRRPRNSMTLVLXMZO[Q[SZTYUWUUTSRRQSQURWTXWXYWZV",
  666: " 24KZKVMSNQMUGg RMUNSPRRRTSUUUWTYSZQ[ RMZO[R[UZWYZV",
  667: " 27L[UUTSRRPRNSMTLVLXMZO[Q[SZ RVRUUSZPaOdOfPgRfScS\\U[XY[V",
  668: " 15MZMVOSPQPSSSTTTVSYSZT[U[WZXYZV",
  669: " 16NYNVPSQQQSSVTXTZR[ RNZP[T[VZWYYV",
  670: " 16OXOVQSSO RVFPXPZQ[S[UZVYXV RPNWN",
  671: " 19L[LVNRLXLZM[O[QZSXUU RVRTXTZU[V[XZYY[V",
  672: " 17L[LVNRMWMZN[O[RZTXUUUR RURVVWWYW[V",
  673: " 25I^LRJTIWIYJ[L[NZPX RRRPXPZQ[S[UZWXXUXR RXRYVZW\\W^V",
  674: " 20JZJVLSNRPRQSQZR[U[XYZV RWSVRTRSSOZN[L[KZ",
  675: " 23L[LVNRLXLZM[O[QZSXUU RVRPdOfMgLfLdMaP^S\\U[XY[V",
  676: " 23LZLVNSPRRRTTTVSXQZN[P\\Q^QaPdOfMgLfLdMaP^S\\WYZV",
  677: " 22J\\K[NZQXSVUSWOXKXIWGUFSGRHQJPOPTQXRZT[V[XZYY",
  683: " 26I[WUWRVOUNSMQMONMPLSLVMYNZP[R[TZVXWUXPXKWHVGTFRFPGNI",
  684: " 16JZWNUMRMPNNPMSMVNYOZQ[T[VZ RMTUT",
  685: " 23J[TFRGPJOLNOMTMXNZO[Q[SZUWVUWRXMXIWGVFTF RNPWP",
  686: " 21H\\VFNb RQMNNLPKSKVLXNZQ[S[VZXXYUYRXPVNSMQM",
  687: " 16I[XOWNTMQMNNMOLQLSMUOWSZT\\T^S_Q_",
  700: " 18H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF",
  701: "  5H\\NJPISFS[",
  702: " 15H\\LKLJMHNGPFTFVGWHXJXLWNUQK[Y[",
  703: " 16H\\MFXFRNUNWOXPYSYUXXVZS[P[MZLYKW",
  704: "  7H\\UFKTZT RUFU[",
  705: " 18H\\WFMFLOMNPMSMVNXPYSYUXXVZS[P[MZLYKW",
  706: " 24H\\XIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQLT",
  707: "  6H\\YFO[ RKFYF",
  708: " 30H\\PFMGLILKMMONSOVPXRYTYWXYWZT[P[MZLYKWKTLRNPQOUNWMXKXIWGTFPF",
  709: " 24H\\XMWPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLX",
  710: "  6MWRYQZR[SZRY",
  711: "  9MWSZR[QZRYSZS\\R^Q_",
  712: " 12MWRMQNROSNRM RRYQZR[SZRY",
  713: " 15MWRMQNROSNRM RSZR[QZRYSZS\\R^Q_",
  714: "  9MWRFRT RRYQZR[SZRY",
  715: " 21I[LKLJMHNGPFTFVGWHXJXLWNVORQRT RRYQZR[SZRY",
  716: "  3NVRFRM",
  717: "  6JZNFNM RVFVM",
  718: " 14KYQFOGNINKOMQNSNUMVKVIUGSFQF",
  719: " 27H\\PBP_ RTBT_ RYIWGTFPFMGKIKKLMMNOOUQWRXSYUYXWZT[P[MZKX",
  720: "  3G][BIb",
  721: " 11KYVBTDRGPKOPOTPYR]T`Vb",
  722: " 11KYNBPDRGTKUPUTTYR]P`Nb",
  723: "  3NVRBRb",
  724: "  3E_IR[R",
  725: "  6E_RIR[ RIR[R",
  726: "  6E_IO[O RIU[U",
  727: "  6G]KKYY RYKKY",
  728: "  9JZRLRX RMOWU RWOMU",
  729: "  6MWRQQRRSSRRQ",
  730: "  8MWSFRGQIQKRLSKRJ",
  731: "  8MWRHQGRFSGSIRKQL",
  732: "  9E_UMXP[RXTUW RIR[R",
  733: " 12H]SBLb RYBRb RLOZO RKUYU",
  734: " 35E_\\O\\N[MZMYNXPVUTXRZP[L[JZIYHWHUISJRQNRMSKSIRGPFNGMIMKNNPQUXWZY[[[\\Z\\Y",
  735: " 28G]IIJKKOKUJYI[ R[IZKYOYUZY[[ RIIKJOKUKYJ[I RI[KZOYUYYZ[[",
  737: "  6KYOBO[ RUBU[",
  738: "  6F^RBR[ RI[[[",
  739: "  4F^[BI[[[",
  740: " 18E_RIQJRKSJRI RIYHZI[JZIY R[YZZ[[\\Z[Y",
  741: " 33F^RHNLKPJSJUKWMXOXQWRU RRHVLYPZSZUYWWXUXSWRU RRUQYP\\ RRUSYT\\ RP\\T\\",
  742: " 26F^RNQKPINHMHKIJKJOKRLTNWR\\ RRNSKTIVHWHYIZKZOYRXTVWR\\",
  743: " 20F^RGPJLOIR RRGTJXO[R RIRLUPZR] R[RXUTZR]",
  744: " 48F^RTTWVXXXZW[U[SZQXPVPSQ RSQUOVMVKUISHQHOINKNMOOQQ RQQNPLPJQISIUJWLXNXPWRT RRTQYP\\ RRTSYT\\ RP\\T\\",
  745: " 55F^RRR[Q\\ RRVQ\\ RRIQHOHNINKONRR RRISHUHVIVKUNRR RRRNOLNJNIOIQJR RRRVOXNZN[O[QZR RRRNULVJVIUISJR RRRVUXVZV[U[SZR",
  746: " 55F^ISJSLTMVMXLZ RISIRJQLQMRNTNWMYLZ RRGPIOLOOQUQXPZR\\ RRGTIULUOSUSXTZR\\ R[S[RZQXQWRVTVWWYXZ R[SZSXTWVWXXZ RKVYV",
  750: " 18PSSRRSQSPRPQQPRPSQSSRUQV RQQQRRRRQQQ",
  751: " 16PTQPPQPSQTSTTSTQSPQP RRQQRRSSRRQ",
  752: "  9NVPOTU RTOPU RNRVR",
  753: " 28MWRKQMOPMR RRKSMUPWR RRMOQ RRMUQ RROPQ RROTQ RQQSQ RMRWR",
  754: " 26MWMRMQNOONQMSMUNVOWQWR RPNTN ROOUO RNPVP RNQVQ RMRWR",
  755: " 14LRLFLRRRLF RLIPQ RLLOR RLOMQ",
  756: " 10MWRKQMOPMR RRKSMUPWR",
  757: " 11MWWRWQVOUNSMQMONNOMQMR",
  758: " 13G]]R]P\\MZJWHTGPGMHJJHMGPGR",
  759: " 11MWMRMSNUOVQWSWUVVUWSWR",
  760: "  7LXLPNRQSSSVRXP",
  761: "  6RURUTTURTPRO",
  762: "  7RVRRUPVNVLUKTK",
  763: "  7NRRROPNNNLOKPK",
  764: " 21MWWHVGTFQFOGNHMJMLNNOOUSVTWVWXVZU[S\\P\\N[MZ",
  765: " 21G]IWHVGTGQHOINKMMMONPOTUUVWWYW[V\\U]S]P\\N[M",
  766: " 31G]RRTUUVWWYW[V\\U]S]Q\\O[NYMWMUNTOPUOVMWKWIVHUGSGQHOINKMMMONPORR",
  767: " 22H\\KFK[ RHF[FQP[Z RZV[Y\\[ RZVZY RWYZY RWYZZ\\[",
  768: " 30KYUARBPCNELHKLKRLUNWQXSXVWXUYR RKPLMNKQJSJVKXMYPYVXZV]T_R`Oa",
  796: "  3>f>RfR",
  797: "  3D`D``D",
  798: "  3RRR>Rf",
  799: "  3D`DD``",
  800: "  3D`DR`R",
  801: "  3F^FY^K",
  802: "  3KYK^YF",
  803: "  3RRRDR`",
  804: "  3KYKFY^",
  805: "  3F^FK^Y",
  806: "  3KYKRYR",
  807: "  3MWMWWM",
  808: "  3RRRKRY",
  809: "  3MWMMWW",
  810: "  8GRRGPGMHJJHMGPGR",
  811: "  8GRGRGTHWJZM\\P]R]",
  812: "  8R]R]T]W\\ZZ\\W]T]R",
  813: "  8R]]R]P\\MZJWHTGRG",
  814: "  9D`DOGQKSPTTTYS]Q`O",
  815: "  9PUUDSGQKPPPTQYS]U`",
  816: "  9OTODQGSKTPTTSYQ]O`",
  817: "  9D`DUGSKQPPTPYQ]S`U",
  818: "  5KYRJYNKVRZ",
  819: "  5JZJRNKVYZR",
  820: "  5KYKVKNYVYN",
  821: "  5JZLXJPZTXL",
  822: " 23JZJ]L]O\\Q[TXUVVSVOULTJSIQIPJOLNONSOVPXS[U\\X]Z]",
  823: " 23I]]Z]X\\U[SXPVOSNONLOJPIQISJTLUOVSVVUXT[Q\\O]L]J",
  824: " 23JZZGXGUHSIPLONNQNUOXPZQ[S[TZUXVUVQUNTLQIOHLGJG",
  825: " 23G[GJGLHOIQLTNUQVUVXUZT[S[QZPXOUNQNNOLPISHUGXGZ",
  826: " 21E[EPFRHTJUMVQVUUXSZP[NZLWLSMQNNPLSKVKYL\\M^",
  827: " 19EYETHVKWPWSVVTXQYNYLXKVKSLPNNQMTMYN\\P_",
  828: " 26OUQOOQOSQUSUUSUQSOQO RQPPQPSQTSTTSTQSPQP RRQQRRSSRRQ",
  829: " 11RWRMSMUNVOWQWSVUUVSWRW",
  830: "  9D`DRJR RORUR RZR`R",
  831: "  5D`DUDO`O`U",
  832: "  6JZRDJR RRDZR",
  833: "  9D`DR`R RJYZY RP`T`",
  834: "  9D`DR`R RDRRb R`RRb",
  840: " 18KYQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK",
  841: "  6LXLLLXXXXLLL",
  842: "  5KYRJKVYVRJ",
  843: "  6LXRHLRR\\XRRH",
  844: " 12JZRIPOJOOSMYRUWYUSZOTORI",
  845: "  6KYRKRY RKRYR",
  846: "  6MWMMWW RWMMW",
  847: "  9MWRLRX RMOWU RWOMU",
  850: " 35NVQNOONQNSOUQVSVUUVSVQUOSNQN ROQOS RPPPT RQOQU RRORU RSOSU RTPTT RUQUS",
  851: " 27NVNNNVVVVNNN ROOOU RPOPU RQOQU RRORU RSOSU RTOTU RUOUU",
  852: " 17MWRLMUWURL RROOT RROUT RRRQT RRRST",
  853: " 17LULRUWUMLR RORTU RORTO RRRTS RRRTQ",
  854: " 17MWRXWOMORX RRUUP RRUOP RRRSP RRRQP",
  855: " 17OXXROMOWXR RURPO RURPU RRRPQ RRRPS",
  856: " 22LXRLNWXPLPVWRL RRRRL RRRLP RRRNW RRRVW RRRXP",
  857: " 11RYRKRY RRKYNRQ RSMVNSO",
  860: " 13MWRLRX ROOUO RMUOWQXSXUWWU",
  861: " 11LXRLRX RLQMOWOXQ RPWTW",
  862: " 14KYMNWX RWNMX ROLLOKQ RULXOYQ",
  863: " 18I[NII[ RVI[[ RMM[[ RWMI[ RNIVI RMMWM",
  864: " 21I[RGRV RMJWP RWJMP RIVL\\ R[VX\\ RIV[V RL\\X\\",
  865: " 11G[MJSV RKPSL RG\\[\\[RG\\",
  866: " 14LXPLPPLPLTPTPXTXTTXTXPTPTLPL",
  867: " 32KYYPXNVLSKQKNLLNKQKSLVNXQYSYVXXVYT RYPWNUMSMQNPOOQOSPUQVSWUWWVYT",
  868: " 10KYRJKVYVRJ RRZYNKNRZ",
  869: " 34G]PIPGQFSFTGTI RGZHXJVKTLPLKMJOIUIWJXKXPYTZV\\X]Z RGZ]Z RQZP[Q\\S\\T[SZ",
  870: " 64JZRMRS RRSQ\\ RRSS\\ RQ\\S\\ RRMQJPHNG RQJNG RRMSJTHVG RSJVG RRMNKLKJM RPLLLJM RRMVKXKZM RTLXLZM RRMPNOOOR RRMPOOR RRMTNUOUR RRMTOUR",
  871: " 94JZRIRK RRNRP RRSRU RRYQ\\ RRYS\\ RQ\\S\\ RRGQIPJ RRGSITJ RPJRITJ RRKPNNOMN RRKTNVOWN RNOPORNTOVO RRPPSNTLTKRKSLT RRPTSVTXTYRYSXT RNTPTRSTTVT RRUPXOYMZLZKYJWJYLZ RRUTXUYWZXZYYZWZYXZ RMZOZRYUZWZ",
  872: " 40JZRYQ\\ RRYS\\ RQ\\S\\ RRYUZXZZXZUYTWTYRZOYMWLUMVJUHSGQGOHNJOMMLKMJOKRMTKTJUJXLZOZRY",
  873: " 32JZRYQ\\ RRYS\\ RQ\\S\\ RRYVXVVXUXRZQZLYIXHVHTGPGNHLHKIJLJQLRLUNVNXRY",
  874: " 15I[IPKR RLKNP RRGRO RXKVP R[PYR",
  899: "  6QSRQQRRSSRRQ",
  900: " 10PTQPPQPSQTSTTSTQSPQP",
  901: " 14NVQNOONQNSOUQVSVUUVSVQUOSNQN",
  902: " 18MWQMONNOMQMSNUOVQWSWUVVUWSWQVOUNSMQM",
  903: " 18KYQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK",
  904: " 22G]PGMHJJHMGPGTHWJZM\\P]T]W\\ZZ\\W]T]P\\MZJWHTGPG",
  905: " 34AcPALBJCGEEGCJBLAPATBXCZE]G_JaLbPcTcXbZa]__]aZbXcTcPbLaJ_G]EZCXBTAPA",
  906: " 34<hP<K=G?DAAD?G=K<P<T=Y?]A`DcGeKgPhThYg]e`cc`e]gYhThPgKeGcD`A]?Y=T<P<",
  907: " 50){O)I*E+@-;073370;-@+E*I)O)U*[+_-d0i3m7q;t@wEyIzO{U{[z_ydwitmqqmtiwdy_z[{U{OzIyEw@t;q7m3i0d-_+[*U)O)",
  908: " 34>fRAPCMDJDGCEA>H@JAMAZB]D_G`M`PaRc RRATCWDZD]C_AfHdJcMcZb]`_]`W`TaRc",
  909: " 33AcRAPCMDJDGCEABGAKAPBTDXG\\L`Rc RRATCWDZD]C_AbGcKcPbT`X]\\X`Rc RBHbH",
  997: "  3MWMXWX",
  998: "  3JZJZZZ",
  999: "  3JZJ]Z]",
  1001: " 18KYRKMX RRNVX RRKWX ROTTT RKXPX RTXYX",
  1002: " 35JZNKNX ROKOX RLKSKVLWNVPSQ RSKULVNUPSQ ROQSQVRWTWUVWSXLX RSQURVTVUUWSX",
  1003: " 24KYVLWKWOVLTKQKOLNMMPMSNVOWQXTXVWWU RQKOMNPNSOVQX",
  1004: " 26JZNKNX ROKOX RLKSKVLWMXPXSWVVWSXLX RSKULVMWPWSVVUWSX",
  1005: " 22JYNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXVXVTUX",
  1006: " 20JXNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXQX",
  1007: " 36K[VLWKWOVLTKQKOLNMMPMSNVOWQXTXVW RQKOMNPNSOVQX RTXUWVU RVSVX RWSWX RTSYS",
  1008: " 27J[NKNX ROKOX RVKVX RWKWX RLKQK RTKYK ROQVQ RLXQX RTXYX",
  1009: " 12NWRKRX RSKSX RPKUK RPXUX",
  1010: " 19LXSKSURWQX RTKTUSWQXPXNWMUNTOUNV RQKVK",
  1011: " 27JZNKNX ROKOX RWKOS RQQVX RRQWX RLKQK RTKYK RLXQX RTXYX",
  1012: " 14KXOKOX RPKPX RMKRK RMXWXWTVX",
  1013: " 30I\\MKMX RNNRX RNKRU RWKRX RWKWX RXKXX RKKNK RWKZK RKXOX RUXZX",
  1014: " 21JZNKNX ROMVX ROKVV RVKVX RLKOK RTKXK RLXPX",
  1015: " 32KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK",
  1016: " 25JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX",
  1017: " 47KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK RPWPUQTSTTUUZV[W[XZ RTUUXVZW[",
  1018: " 37JZNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX RSRTSUWVXWXXW RSRUSVWWX",
  1019: " 32KZVMWKWOVMULSKQKOLNMNOOPQQTRVSWT RNNOOQPTQVRWSWVVWTXRXPWOVNTNXOV",
  1020: " 16KZRKRX RSKSX RNKMOMKXKXOWK RPXUX",
  1021: " 20J[NKNUOWQXTXVWWUWK ROKOUPWQX RLKQK RUKYK",
  1022: " 15KYMKRX RNKRU RWKRX RKKPK RTKYK",
  1023: " 24I[LKOX RMKOT RRKOX RRKUX RSKUT RXKUX RJKOK RVKZK",
  1024: " 21KZNKVX ROKWX RWKNX RLKQK RTKYK RLXQX RTXYX",
  1025: " 20LYNKRRRX ROKSR RWKSRSX RLKQK RTKYK RPXUX",
  1026: " 16LYVKNX RWKOX ROKNONKWK RNXWXWTVX",
  1027: " 18KYRKMX RRNVX RRKWX ROTTT RKXPX RTXYX",
  1028: " 35JZNKNX ROKOX RLKSKVLWNVPSQ RSKULVNUPSQ ROQSQVRWTWUVWSXLX RSQURVTVUUWSX",
  1029: " 14KXOKOX RPKPX RMKWKWOVK RMXRX",
  1030: " 15KYRKLX RRMWX RRKXX RMWVW RLXXX",
  1031: " 22JYNKNX ROKOX RSOSS RLKVKVOUK ROQSQ RLXVXVTUX",
  1032: " 16LYVKNX RWKOX ROKNONKWK RNXWXWTVX",
  1033: " 27J[NKNX ROKOX RVKVX RWKWX RLKQK RTKYK ROQVQ RLXQX RTXYX",
  1034: " 44KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK RQOQT RTOTT RQQTQ RQRTR",
  1035: " 12NWRKRX RSKSX RPKUK RPXUX",
  1036: " 27JZNKNX ROKOX RWKOS RQQVX RRQWX RLKQK RTKYK RLXQX RTXYX",
  1037: " 15KYRKMX RRNVX RRKWX RKXPX RTXYX",
  1038: " 30I\\MKMX RNNRX RNKRU RWKRX RWKWX RXKXX RKKNK RWKZK RKXOX RUXZX",
  1039: " 21JZNKNX ROMVX ROKVV RVKVX RLKOK RTKXK RLXPX",
  1040: " 36JZMJLM RXJWM RPPOS RUPTS RMVLY RXVWY RMKWK RMLWL RPQTQ RPRTR RMWWW RMXWX",
  1041: " 32KZQKOLNMMPMSNVOWQXTXVWWVXSXPWMVLTKQK RQKOMNPNSOVQX RTXVVWSWPVMTK",
  1042: " 21J[NKNX ROKOX RVKVX RWKWX RLKYK RLXQX RTXYX",
  1043: " 25JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXQX",
  1044: " 20K[MKRQ RNKSQMX RMKWKXOVK RNWWW RMXWXXTVX",
  1045: " 16KZRKRX RSKSX RNKMOMKXKXOWK RPXUX",
  1046: " 33KZMONLOKPKQLRORX RXOWLVKUKTLSOSX RMONMOLPLQMRO RXOWMVLULTMSO RPXUX",
  1047: " 40KZRKRX RSKSX RQNNOMQMRNTQUTUWTXRXQWOTNQN RQNOONQNROTQU RTUVTWRWQVOTN RPKUK RPXUX",
  1048: " 21KZNKVX ROKWX RWKNX RLKQK RTKYK RLXQX RTXYX",
  1049: " 33J[RKRX RSKSX RLPMONOOSQU RTUVSWOXOYP RMONROTQUTUVTWRXO RPKUK RPXUX",
  1050: " 35KZMVNXQXMRMONMOLQKTKVLWMXOXRTXWXXV ROUNRNOOMQK RTKVMWOWRVU RNWPW RUWWW",
  1051: " 18KYTKKX RSMTX RTKUX RNTTT RIXNX RRXWX",
  1052: " 34JYPKLX RQKMX RNKUKWLWNVPSQ RUKVLVNUPSQ ROQRQTRUSUUTWQXJX RRQTSTUSWQX",
  1053: " 25KXVLWLXKWNVLTKRKPLOMNOMRMUNWPXRXTWUU RRKPMOONRNVPX",
  1054: " 26JYPKLX RQKMX RNKTKVLWNWQVTUVTWQXJX RTKULVNVQUTTVSWQX",
  1055: " 22JYPKLX RQKMX RSORS RNKXKWNWK ROQRQ RJXTXUUSX",
  1056: " 20JXPKLX RQKMX RSORS RNKXKWNWK ROQRQ RJXOX",
  1057: " 33KYVLWLXKWNVLTKRKPLOMNOMRMUNWPXRXTWUVVS RRKPMOONRNVPX RRXTVUS RSSXS",
  1058: " 27J[PKLX RQKMX RXKTX RYKUX RNKSK RVK[K ROQVQ RJXOX RRXWX",
  1059: " 12NWTKPX RUKQX RRKWK RNXSX",
  1060: " 19LXUKRUQWPX RVKSURWPXOXMWLUMTNUMV RSKXK",
  1061: " 27JZPKLX RQKMX RYKOR RRPTX RSPUX RNKSK RVK[K RJXOX RRXWX",
  1062: " 14KXQKMX RRKNX ROKTK RKXUXVUTX",
  1063: " 30I\\OKKX ROMPX RPKQV RYKPX RYKUX RZKVX RMKPK RYK\\K RIXMX RSXXX",
  1064: " 21JZPKLX RPKTX RQKTU RXKTX RNKQK RVKZK RJXNX",
  1065: " 32KYRKPLOMNOMRMUNWPXRXTWUVVTWQWNVLTKRK RRKPMOONRNVPX RRXTVUTVQVMTK",
  1066: " 24JYPKLX RQKMX RNKUKWLXMXOWQTROR RUKWMWOVQTR RJXOX",
  1067: " 46KYRKPLOMNOMRMUNWPXRXTWUVVTWQWNVLTKRK RRKPMOONRNVPX RRXTVUTVQVMTK ROWOVPUQURVRZS[T[UZ RRVSZT[",
  1068: " 35JZPKLX RQKMX RNKUKWLXMXOWQTROR RUKWMWOVQTR RSRTWUXVXWW RSRTSUWVX RJXOX",
  1069: " 28KZWLXLYKXNWLUKRKPLOMOOPPUSVT RONPOURVSVVUWSXPXNWMULXMWNW",
  1070: " 16KZTKPX RUKQX RPKNNOKZKYNYK RNXSX",
  1071: " 20J[PKMUMWOXSXUWVUYK RQKNUNWOX RNKSK RWK[K",
  1072: " 15KYOKPX RPKQV RYKPX RMKRK RVK[K",
  1073: " 24I[NKMX ROKNV RTKMX RTKSX RUKTV RZKSX RLKQK RXK\\K",
  1074: " 21KZPKTX RQKUX RYKLX RNKSK RVK[K RJXOX RRXWX",
  1075: " 20LYPKRQPX RQKSQ RYKSQQX RNKSK RVK[K RNXSX",
  1076: " 16LYXKLX RYKMX RQKONPKYK RLXUXVUTX",
  1101: " 32LZQOPPPQOQOPQOTOVQVWWXXX RTOUQUWWX RURRSPTOUOWPXSXTWUU RRSPUPWQX",
  1102: " 29JYNKNX ROKOX RORPPROTOVPWRWUVWTXRXPWOU RTOUPVRVUUWTX RLKOK",
  1103: " 24LXVQUQURVRVQUPSOQOOPNRNUOWQXSXUWVV RQOPPOROUPWQX",
  1104: " 32L[VKVX RWKWX RVRUPSOQOOPNRNUOWQXSXUWVU RQOPPOROUPWQX RTKWK RVXYX",
  1105: " 26LXOSVSVRUPSOQOOPNRNUOWQXSXUWVV RUSUQSO RQOPPOROUPWQX",
  1106: " 20LWTKULUMVMVLTKRKPMPX RRKQMQX RNOSO RNXSX",
  1107: " 42LYQOOQOSQUSUUSUQSOQO RQOPQPSQU RSUTSTQSO RTPUOVO RPTOUOXPYTYVZ ROWPXTXVYV[T\\P\\N[NYPX",
  1108: " 28J[NKNX ROKOX RORPPROTOVPWRWX RTOUPVRVX RLKOK RLXQX RTXYX",
  1109: " 18NWRKRLSLSKRK RRORX RSOSX RPOSO RPXUX",
  1110: " 23NWSKSLTLTKSK RSOSZR\\ RTOTZR\\P\\O[OZPZP[O[ RQOTO",
  1111: " 27JZNKNX ROKOX RWOOU RRSVX RSSWX RLKOK RTOYO RLXQX RTXYX",
  1112: " 12NWRKRX RSKSX RPKSK RPXUX",
  1113: " 44F_JOJX RKOKX RKRLPNOPORPSRSX RPOQPRRRX RSRTPVOXOZP[R[X RXOYPZRZX RHOKO RHXMX RPXUX RXX]X",
  1114: " 28J[NONX ROOOX RORPPROTOVPWRWX RTOUPVRVX RLOOO RLXQX RTXYX",
  1115: " 28LYQOOPNRNUOWQXTXVWWUWRVPTOQO RQOPPOROUPWQX RTXUWVUVRUPTO",
  1116: " 32JYNON\\ ROOO\\ RORPPROTOVPWRWUVWTXRXPWOU RTOUPVRVUUWTX RLOOO RL\\Q\\",
  1117: " 29KYUOU\\ RVOV\\ RURTPROPONPMRMUNWPXRXTWUU RPOOPNRNUOWPX RS\\X\\",
  1118: " 22KXOOOX RPOPX RPRQPSOUOVPVQUQUPVP RMOPO RMXRX",
  1119: " 26LYTOUPUQVQVPTOQOOPORQSTTVU ROQQRTSVTVWTXQXOWOVPVPWQX",
  1120: " 14LWPKPVRXTXUWUV RQKQVRX RNOTO",
  1121: " 28J[NONUOWQXSXUWVU ROOOUPWQX RVOVX RWOWX RLOOO RTOWO RVXYX",
  1122: " 15KYNORX ROORV RVORX RLOQO RTOXO",
  1123: " 24I[LOOX RMOOU RROOX RROUX RSOUU RXOUX RJOOO RVOZO",
  1124: " 21KYNOUX ROOVX RVONX RLOQO RTOXO RLXPX RSXXX",
  1125: " 23KYNORX ROORV RVORXP[N\\M\\L[LZMZM[L[ RLOQO RTOXO",
  1126: " 16LXUONX RVOOX ROONQNOVO RNXVXVVUX",
  1127: " 32K[QOOPNQMSMUNWPXQXSWUUWRXO RQOOQNSNUOWPX RQOSOUPWWXX RSOTPVWXXYX",
  1128: " 40KXRKPMOOMUK\\ RQLPNNTL\\ RRKTKVLVNUPRQ RTKULUNTPRQ RRQTRUTUVTWRXQXOWNT RRQSRTTTVRX",
  1129: " 19KYLQNOPORPSSSXR\\ RLQNPPPRQSS RWOVRSXQ\\",
  1130: " 39KYSOQOOPNQMSMUNWPXRXTWUVVTVRUPRNQLQKRJTJUKVM RQOOQNSNVPX RRXTVUTUQSO RQLRKTKVM",
  1131: " 27LXVPTOQOOPOQPRRS RQOPPPQRS RRSOTNUNWPXSXUW RRSPTOUOWPX",
  1132: " 28LWRKQLQMSNVNVMSNPOOPNRNTOVPWRXSYS[R\\P\\O[ RSNQOPPOROTPVRX",
  1133: " 26IYJRKPLONOOPOQMX RMONPNQLX ROQPPROTOVPVRS\\ RTOUPURR\\",
  1134: " 35IYJSKQLPNPOQOVPX RMPNQNUOWPXQXSWTVUTVQVNULTKRKQLQNRPURWS RQXSVTTUQUNTK",
  1135: " 13NWROPVPWQXSXUWVU RSOQVQWRX",
  1136: " 26KYOOLX RPOMX RUOVPWPVOTORQOR RORPSRWTXVWWU RORQSSWTX",
  1137: " 15LXLKNKPLWX RNKOLVX RRPMX RRPNX",
  1138: " 26KZOOK\\ RPOL\\ RNUNWOXQXSWTV RVOTVTWUXWXXWYU RWOUVUWVX",
  1139: " 19JYNOMX ROONUMX RVRVOWOVRTUQWNXMX RLOOO",
  1140: " 36MXRKQLQMSNVN RTNQOPPPRRSUS RTNROQPQRRS RSSPTOUOWQXSYTZT[S\\Q\\ RSSQTPUPWQX",
  1141: " 28KXQOOPNQMSMUNWPXRXTWUVVTVRUPSOQO RQOOQNSNVPX RRXTVUTUQSO",
  1142: " 20IZPPMX RPPNX RTPSX RTPTX RKQMOXO RKQMPXP",
  1143: " 29JXSOQOOPNQMSJ\\ RQOOQNSK\\ RSOUPVRVTUVTWRXPXNWMU RSOUQUTTVRX",
  1144: " 28K[YOQOOPNQMSMUNWPXRXTWUVVTVRUPYP RQOOQNSNVPX RRXTVUTUQSO",
  1145: " 14KZSPQX RSPRX RMQOOXO RMQOPXP",
  1146: " 24JXKRLPMOOOPPPROUOWPX RNOOPORNUNWPXQXSWUUVRVOUOVP",
  1147: " 35KZOPNQMSMUNWPXRXUWWUXRXPWOUOTPSRRUO\\ RMUNVPWRWUVWTXR RXQWPUPSR RRUQXP\\",
  1148: " 17KXMONOPPS[T\\ RNOOPR[T\\U\\ RVOTRNYL\\",
  1149: " 28I[TKQ\\ RUKP\\ RJRKPLONOOPOVPWSWUVWT RMONPNTOWPXSXUWWTXRYO",
  1150: " 36JZNPPPPONPMQLSLUMWNXPXQWRUSR RLUNWPWRU RRRRWSXUXWVXTXRWPVOVPWP RRUSWUWWV",
  1151: " 32KZVOTVTWUXWXXWYU RWOUVUWVX RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX",
  1152: " 32JXOKMR RPKNRNVPX RNROPQOSOUPVRVTUVTWRXPXNWMUMR RSOUQUTTVRX RMKPK",
  1153: " 22KXUPUQVQUPSOQOOPNQMSMUNWPXRXTWUV RQOOQNSNVPX",
  1154: " 35KZWKTVTWUXWXXWYU RXKUVUWVX RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX RUKXK",
  1155: " 23KWNURTTSURUPSOQOOPNQMSMUNWPXRXTWUV RQOOQNSNVPX",
  1156: " 23MXWKXLXKVKTLSNPYO[N\\ RVKULTNQYP[N\\L\\L[M\\ RPOVO",
  1157: " 34KYVOTVSYR[ RWOUVTYR[P\\M\\L[M[N\\ RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX",
  1158: " 29KZPKLX RQKMX ROQPPROTOVPVRUUUWVX RTOUPURTUTWUXWXXWYU RNKQK",
  1159: " 26MWSKSLTLTKSK RNROPPOROSPSRRURWSX RQORPRRQUQWRXTXUWVU",
  1160: " 26MWTKTLULUKTK RORPPQOSOTPTRRYQ[O\\M\\M[N\\ RROSPSRQYP[O\\",
  1161: " 32KXPKLX RQKMX RVPUQVQVPUOTORQPROR RORPSQWRXTXUWVU RORQSRWSX RNKQK",
  1162: " 16NVSKPVPWQXSXTWUU RTKQVQWRX RQKTK",
  1163: " 46F^GRHPIOKOLPLQJX RJOKPKQIX RLQMPOOQOSPSQQX RQORPRQPX RSQTPVOXOZPZRYUYWZX RXOYPYRXUXWYX[X\\W]U",
  1164: " 33J[KRLPMOOOPPPQNX RNOOPOQMX RPQQPSOUOWPWRVUVWWX RUOVPVRUUUWVXXXYWZU",
  1165: " 28KXQOOPNQMSMUNWPXRXTWUVVTVRUPSOQO RQOOQNSNVPX RRXTVUTUQSO",
  1166: " 35JYKRLPMOOOPPPQM\\ RNOOPOQL\\ RPQROTOVPWRWTVVUWSXQXOVOT RTOVQVTUVSX RJ\\O\\",
  1167: " 28KYVOR\\ RWOS\\ RUSUQSOQOOPNQMSMUNWPXRXTV RQOOQNSNVPX RP\\U\\",
  1168: " 22LXMRNPOOQORPRQPX RPOQPQQOX RRQSPUOVOWPWQVQWP",
  1169: " 24LYVPVQWQVPTOQOOPORQSTTVU ROQQRTSVTVWTXQXOWNVOVOW",
  1170: " 16NWSKPVPWQXSXTWUU RTKQVQWRX RPOUO",
  1171: " 33IZJRKPLONOOPORNUNWOX RMONPNRMUMWOXQXSWTV RVOTVTWUXWXXWYU RWOUVUWVX",
  1172: " 24JXKRLPMOOOPPPROUOWPX RNOOPORNUNWPXQXSWUUVRVOUOVP",
  1173: " 37H\\IRJPKOMONPNRMUMWNX RLOMPMRLULWNXOXQWRV RTORVRWTX RUOSVSWTXUXWWYUZRZOYOZP",
  1174: " 38JZMRNPPOROSPSR RQORPRRQUPWNXMXLWLVMVLW RXPWQXQXPWOVOTPSRRURWSX RQUQWRXTXVWWU",
  1175: " 35IYJRKPLONOOPORNUNWOX RMONPNRMUMWOXQXSWTV RVOTVSYR[ RWOUVTYR[P\\M\\L[M[N\\",
  1176: " 27KYWOWPVQNVMWMX RNQOOROUQ ROPRPUQVQ RNVOVRWUW ROVRXUXVV",
  1177: " 39H[RKSLSMTMTLRKOKMLLNLX ROKNLMNMX RXKYLYMZMZLXKVKTMTX RVKUMUX RJOWO RJXOX RRXWX",
  1178: " 29J[UKVLWLWKQKOLNNNX RQKPLONOX RVOVX RWOWX RLOWO RLXQX RTXYX",
  1179: " 27J[WKQKOLNNNX RQKPLONOX RUKVLVX RWKWX RLOVO RLXQX RTXYX",
  1180: " 48F_PKQLQMRMRLPKMKKLJNJX RMKLLKNKX RYKZL[L[KUKSLRNRX RUKTLSNSX RZOZX R[O[X RHO[O RHXMX RPXUX RXX]X",
  1181: " 46F_PKQLQMRMRLPKMKKLJNJX RMKLLKNKX R[KUKSLRNRX RUKTLSNSX RYKZLZX R[K[X RHOZO RHXMX RPXUX RXX]X",
  1182: " 12NWRORX RSOSX RPOSO RPXUX",
  1184: " 21LXVPTOROPPOQNSNUOWQXSXUW RROPQOSOVQX ROSSS",
  1185: " 35LYSKQLPMOONRNUOWPXRXTWUVVTWQWNVLUKSK RSKQMPOOSOVPX RRXTVUTVPVMUK ROQVQ",
  1186: " 34KZTKQ\\ RUKP\\ RQONPMRMUNWQXTXWWXUXRWPTOQO RQOOPNRNUOWQX RTXVWWUWRVPTO",
  1187: " 22LXUPVRVQUPSOQOOPNRNTOVRX RQOOQOTPVRXSYS[R\\P\\",
  1191: " 45I[VKWLXLVKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RZK[L[KYKWLVNSYR[Q\\ RYKXLWNTYS[Q\\O\\O[P\\ RLOYO",
  1192: " 38IZVKWLXLXKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RVOTVTWUXWXXWYU RWOUVUWVX RLOWO",
  1193: " 38IZVKWL RXKSKQLPMOOLYK[J\\ RSKQMPOMYL[J\\H\\H[I\\ RWKTVTWUXWXXWYU RXKUVUWVX RLOVO",
  1194: " 63F^SKTLTM RULSKPKNLMMLOIYH[G\\ RPKNMMOJYI[G\\E\\E[F\\ RZK[L\\L\\KWKUL RTMSOPYO[N\\ RWKUMTOQYP[N\\L\\L[M\\ RZOXVXWYX[X\\W]U R[OYVYWZX RIO[O",
  1195: " 63F^SKTLTM RULSKPKNLMMLOIYH[G\\ RPKNMMOJYI[G\\E\\E[F\\ RZK[L R\\KWKUL RTMSOPYO[N\\ RWKUMTOQYP[N\\L\\L[M\\ R[KXVXWYX[X\\W]U R\\KYVYWZX RIOZO",
  1196: " 20MWNROPPOROSPSRRURWSX RQORPRRQUQWRXTXUWVU",
  1200: " 28LYQKOLNONTOWQXTXVWWTWOVLTKQK RQKPLOOOTPWQX RTXUWVTVOULTK",
  1201: " 10LYPNSKSX RRLRX ROXVX",
  1202: " 35LYOMONNNNMOLQKTKVLWNVPTQQROSNUNX RTKULVNUPTQ RNWOVPVSWVWWV RPVSXVXWVWU",
  1203: " 39LYOMONNNNMOLQKTKVLWNVPTQ RTKULVNUPTQ RRQTQVRWTWUVWTXQXOWNVNUOUOV RTQURVTVUUWTX",
  1204: " 13LYSMSX RTKTX RTKMTXT RQXVX",
  1205: " 33LYOKNQ ROKVK ROLSLVK RNQOPQOTOVPWRWUVWTXQXOWNVNUOUOV RTOUPVRVUUWTX",
  1206: " 36LYVMVNWNWMVLTKRKPLOMNPNUOWQXTXVWWUWSVQTPQPNR RRKPMOPOUPWQX RTXUWVUVSUQTP",
  1207: " 22LYNKNO RVMRTPX RWKTQQX RNMPKRKUM RNMPLRLUMVM",
  1208: " 51LYQKOLNNOPQQTQVPWNVLTKQK RQKPLONPPQQ RTQUPVNULTK RQQORNTNUOWQXTXVWWUWTVRTQ RQQPROTOUPWQX RTXUWVUVTURTQ",
  1209: " 36LYOVOUNUNVOWQXSXUWVVWSWNVLTKQKOLNNNPORQSTSWQ RSXUVVSVNULTK RQKPLONOPPRQS",
  1210: "  6NVRVQWRXSWRV",
  1211: "  8NVSWRXQWRVSWSYQ[",
  1212: " 12NVROQPRQSPRO RRVQWRXSWRV",
  1213: " 14NVROQPRQSPRO RSWRXQWRVSWSYQ[",
  1214: " 15NVRKQLRSSLRK RRLRO RRVQWRXSWRV",
  1215: " 29LYNNONOONONNOLQKTKVLWNWOVQSRRSRTST RTKVMVPUQSR RRWRXSXSWRW",
  1216: "  6OVRKRP RSKRP",
  1217: " 12LXOKOP RPKOP RUKUP RVKUP",
  1218: " 10MWQKPLPNQOSOTNTLSKQK",
  1219: "  9MWRJRP ROKUO RUKOO",
  1220: "  3KZXHM\\",
  1221: " 16MWUHSJQMPPPTQWSZU\\ RSJRLQPQTRXSZ",
  1222: " 16MWOHQJSMTPTTSWQZO\\ RQJRLSPSTRXQZ",
  1223: " 12MWPHP\\ RQHQ\\ RPHUH RP\\U\\",
  1224: " 12MWSHS\\ RTHT\\ ROHTH RO\\T\\",
  1225: " 38LWSHQIPJPLRNSP RQIPL RSNRQ RPJQLSNSPRQPRRSSTSVQXPZ RRSSV RPXQ[ RSTRVPXPZQ[S\\",
  1226: " 38MXQHSITJTLRNQP RSITL RQNRQ RTJSLQNQPRQTRRSQTQVSXTZ RRSQV RTXS[ RQTRVTXTZS[Q\\",
  1227: "  4MWTHPRT\\",
  1228: "  4MWPHTRP\\",
  1229: "  3OURHR\\",
  1230: "  6MWPHP\\ RTHT\\",
  1231: "  3I[LRXR",
  1232: "  6I[RLRX RLRXR",
  1233: "  9JZRMRX RMRWR RMXWX",
  1234: "  9JZRMRX RMMWM RMRWR",
  1235: "  6JZMMWW RWMMW",
  1236: "  6NVRQQRRSSRRQ",
  1237: " 15I[RLQMRNSMRL RLRXR RRVQWRXSWRV",
  1238: "  6I[LPXP RLTXT",
  1239: "  9I[WLMX RLPXP RLTXT",
  1240: "  9I[LNXN RLRXR RLVXV",
  1241: "  4JZWLMRWX",
  1242: "  4JZMLWRMX",
  1243: " 10JZWKMOWS RMTWT RMXWX",
  1244: " 10JZMKWOMS RMTWT RMXWX",
  1245: " 21H[YUWUUTTSRPQOONNNLOKQKRLTNUOUQTRSTPUOWNYN",
  1246: " 16JZLTLRMPOPUSWSXR RLRMQOQUTWTXRXP",
  1247: "  8JZMSRPWS RMSRQWS",
  1248: "  7NVSKPO RSKTLPO",
  1249: "  7NVQKTO RQKPLTO",
  1250: " 14LXNKOMQNSNUMVK RNKONQOSOUNVK",
  1251: "  8NVSLRMQLRKSLSNQP",
  1252: "  8NVSKQMQORPSORNQO",
  1253: "  8NVQLRMSLRKQLQNSP",
  1254: "  8NVQKSMSORPQORNSO",
  1256: " 11JZWMQMONNOMQMSNUOVQWWW",
  1257: " 11JZMMMSNUOVQWSWUVVUWSWM",
  1258: " 11JZMMSMUNVOWQWSVUUVSWMW",
  1259: " 11JZMWMQNOONQMSMUNVOWQWW",
  1260: " 14JZWMQMONNOMQMSNUOVQWWW RMRUR",
  1261: " 13I[TOUPXRUTTU RUPWRUT RLRWR",
  1262: " 13MWRMRX ROPPORLTOUP RPORMTO",
  1263: " 13I[POOPLROTPU ROPMROT RMRXR",
  1264: " 13MWRLRW ROTPURXTUUT RPURWTU",
  1265: " 37KYVSUPSOQOOPNQMSMUNWPXRXTWUVVTWQWNVLTKQKPLQLRK RQOOQNSNVPX RRXTVUTVQVNULTK",
  1266: " 15JZLKRX RMKRV RXKRX RLKXK RNLWL",
  1267: " 10G[IOLORW RKORX R[FRX",
  1268: " 26I[XIXJYJYIXHVHTJSLROQUPYO[ RUITKSORUQXPZN\\L\\K[KZLZL[",
  1269: " 40I[XIXJYJYIXHVHTJSLROQUPYO[ RUITKSORUQXPZN\\L\\K[KZLZL[ RQNOONQNSOUQVSVUUVSVQUOSNQN",
  1270: " 26H\\ZRYTWUVUTTSSQPPONNMNKOJQJRKTMUNUPTQSSPTOVNWNYOZQZR",
  1271: " 26JZXKLX ROKPLPNOOMOLNLLMKOKSLVLXK RUTTUTWUXWXXWXUWTUT",
  1272: " 41J[YPXPXQYQYPXOWOVPUTTVSWQXOXMWLVLTMSORRPSNSLRKPKOLONPQUWWXXXYW ROXMVMTOR RONPPVWWX",
  1273: " 29J[UPSOQOPQPRQTSTUS RUOUSVTXTYRYQXNVLSKRKOLMNLQLRMUOWRXSXVW",
  1274: " 34KZQHQ\\ RTHT\\ RWLVLVMWMWLUKPKNLNNOPVSWT RNNOOVRWTWVVWTXQXOWNVNUOUOVNV",
  1275: " 12KYRKN\\ RVKR\\ RNQWQ RMVVV",
  1276: " 40LXTLSLSMTMTLSKQKPLPNQPTRUS RPNQOTQUSUUSW RQPOROTPVSXTY ROTPUSWTYT[S\\Q\\P[PZQZQ[P[",
  1277: " 29LXRKQLRMSLRK RRMRQ RRQQSRVSSRQ RRVR\\ RPOONNOOPPOTOUNVOUPTO",
  1278: " 42LXRMSLRKQLRMRQQRSURV RRQSRQURVRZQ[R\\S[RZ RPOONNOOPPOTOUNVOUPTO RPXOWNXOYPXTXUWVXUYTX",
  1279: " 12LYVKVX RNKVK RQQVQ RNXVX",
  1281: " 24H\\QKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK RRQQRRSSRRQ",
  1282: " 33LYQKPLPMQN RTKULUMTN RRNPOOQORPTRUSUUTVRVQUOSNRN RRURY RSUSY ROWVW",
  1283: " 23LYRKPLONOOPQRRSRUQVOVNULSKRK RRRRX RSRSX ROUVU",
  1284: " 24H\\QKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK RRKRY RKRYR",
  1285: " 25JYRRPQOQMRLTLUMWOXPXRWSUSTRR RWMRR RRMWMWR RRMVNWR",
  1286: " 25JZLLMKOKQLRNRPQRPSNT ROKPLQNQQPS RVKUX RWKTX RNTXT",
  1287: " 27JYNKNU ROKNR RNROPQOSOUPVQVTTVTXUYVYWX RSOUQUTTV RLKOK",
  1288: " 27LYONRKRQ RVNSKSQ RRQPROTOUPWRXSXUWVUVTURSQ RRTRUSUSTRT",
  1289: " 27JZRKRY RMKMPNRPSTSVRWPWK RLMMKNM RQMRKSM RVMWKXM ROVUV",
  1290: " 27JYNKNX ROKOX RLKSKVLWNWOVQSROR RSKULVNVOUQSR RLXVXVUUX",
  1291: " 20LYWKTKQLONNQNSOVQXTYWY RWKTLRNQQQSRVTXWY",
  1292: " 23JZRRPQOQMRLTLUMWOXPXRWSUSTRR RSLQQ RWMRR RXQSS",
  1293: " 12KYPMTW RTMPW RMPWT RWPMT",
  1294: " 34J[OUMULVLXMYOYPXPVNTMRMONMOLQKTKVLWMXOXRWTUVUXVYXYYXYVXUVU RNMPLULWM",
  1295: " 34J[OOMOLNLLMKOKPLPNNPMRMUNWOXQYTYVXWWXUXRWPUNULVKXKYLYNXOVO RNWPXUXWW",
  1401: " 21F^KHK\\ RLHL\\ RXHX\\ RYHY\\ RHH\\H RH\\O\\ RU\\\\\\",
  1402: " 20H]KHRQJ\\ RJHQQ RJHYHZMXH RK[X[ RJ\\Y\\ZWX\\",
  1403: " 20KYVBTDRGPKOPOTPYR]T`Vb RTDRHQKPPPTQYR\\T`",
  1404: " 20KYNBPDRGTKUPUTTYR]P`Nb RPDRHSKTPTTSYR\\P`",
  1405: " 12KYOBOb RPBPb ROBVB RObVb",
  1406: " 12KYTBTb RUBUb RNBUB RNbUb",
  1407: " 40KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb",
  1408: " 40KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb",
  1409: " 24KYU@RCPFOIOLPOSVTYT\\S_Ra RRCQEPHPKQNTUUXU[T^RaOd",
  1410: " 24KYO@RCTFUIULTOQVPYP\\Q_Ra RRCSETHTKSNPUOXO[P^RaUd",
  1411: " 13AXCRGRR` RGSRa RFSRb RX:Rb",
  1412: " 32F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia",
  2001: " 18H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[",
  2002: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
  2003: " 32G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[",
  2004: " 30G]LFL[ RMFM[ RIFSFVGXIYKZNZSYVXXVZS[I[ RSFUGWIXKYNYSXVWXUZS[",
  2005: " 22G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[",
  2006: " 20G[LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[P[",
  2007: " 40G^XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXX RQFOGMILKKNKSLVMXOZQ[ RXSX[ RYSY[ RUS\\S",
  2008: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[",
  2009: " 12MXRFR[ RSFS[ ROFVF RO[V[",
  2010: " 20KZUFUWTZR[P[NZMXMVNUOVNW RTFTWSZR[ RQFXF",
  2011: " 27F\\KFK[ RLFL[ RYFLS RQOY[ RPOX[ RHFOF RUF[F RH[O[ RU[[[",
  2012: " 14I[NFN[ ROFO[ RKFRF RK[Z[ZUY[",
  2013: " 30F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][",
  2014: " 21G^LFL[ RMFYY RMHY[ RYFY[ RIFMF RVF\\F RI[O[",
  2015: " 44G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF",
  2016: " 29G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[",
  2017: " 64G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF RNYNXOVQURUTVUXV_W`Y`Z^Z] RUXV\\W^X_Y_Z^",
  2018: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUPMP RUFWGXHYJYLXNWOUP RI[P[ RRPTQURXYYZZZ[Y RTQUSWZX[Z[[Y[X",
  2019: " 34H\\XIYFYLXIVGSFPFMGKIKKLMMNOOUQWRYT RKKMMONUPWQXRYTYXWZT[Q[NZLXKUK[LX",
  2020: " 16I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[",
  2021: " 23F^KFKULXNZQ[S[VZXXYUYF RLFLUMXOZQ[ RHFOF RVF\\F",
  2022: " 15H\\KFR[ RLFRX RYFR[ RIFOF RUF[F",
  2023: " 24F^JFN[ RKFNV RRFN[ RRFV[ RSFVV RZFV[ RGFNF RWF]F",
  2024: " 21H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[",
  2025: " 20H]KFRQR[ RLFSQS[ RZFSQ RIFOF RVF\\F RO[V[",
  2026: " 16H\\XFK[ RYFL[ RLFKLKFYF RK[Y[YUX[",
  2027: " 18H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[",
  2028: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
  2029: " 14I[NFN[ ROFO[ RKFZFZLYF RK[R[",
  2030: " 15H\\RFJ[ RRFZ[ RRIY[ RKZYZ RJ[Z[",
  2031: " 22G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[",
  2032: " 16H\\XFK[ RYFL[ RLFKLKFYF RK[Y[YUX[",
  2033: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[",
  2034: " 56G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF ROMOT RUMUT ROPUP ROQUQ",
  2035: " 12MXRFR[ RSFS[ ROFVF RO[V[",
  2036: " 27F\\KFK[ RLFL[ RYFLS RQOY[ RPOX[ RHFOF RUF[F RH[O[ RU[[[",
  2037: " 15H\\RFK[ RRFY[ RRIX[ RI[O[ RU[[[",
  2038: " 30F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][",
  2039: " 21G^LFL[ RMFYY RMHY[ RYFY[ RIFMF RVF\\F RI[O[",
  2040: " 36G]KEJJ RZEYJ RONNS RVNUS RKWJ\\ RZWY\\ RKGYG RKHYH ROPUP ROQUQ RKYYY RKZYZ",
  2041: " 44G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF",
  2042: " 21F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[",
  2043: " 29G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[",
  2044: " 20H]KFRPJ[ RJFQP RJFYFZLXF RKZXZ RJ[Y[ZUX[",
  2045: " 16I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[",
  2046: " 33I\\KKKILGMFOFPGQIRMR[ RKIMGOGQI RZKZIYGXFVFUGTISMS[ RZIXGVGTI RO[V[",
  2047: " 48H]RFR[ RSFS[ RPKMLLMKOKRLTMUPVUVXUYTZRZOYMXLUKPK RPKNLMMLOLRMTNUPV RUVWUXTYRYOXMWLUK ROFVF RO[V[",
  2048: " 21H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[",
  2049: " 41G^RFR[ RSFS[ RIMJLLMMQNSOTQU RJLKMLQMSNTQUTUWTXSYQZM[L RTUVTWSXQYM[L\\M ROFVF RO[V[",
  2050: " 43G]JXK[O[MWKSJPJLKIMGPFTFWGYIZLZPYSWWU[Y[ZX RMWLTKPKLLINGPF RTFVGXIYLYPXTWW RKZNZ RVZYZ",
  2051: " 18H\\UFH[ RUFV[ RTHU[ RLUUU RF[L[ RR[X[",
  2052: " 41F^OFI[ RPFJ[ RLFWFZG[I[KZNYOVP RWFYGZIZKYNXOVP RMPVPXQYSYUXXVZR[F[ RVPWQXSXUWXUZR[",
  2053: " 34H]ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[S[UZWXXV RTFRGPINLMOLSLVMYNZP[",
  2054: " 30F]OFI[ RPFJ[ RLFUFXGYHZKZOYSWWUYSZO[F[ RUFWGXHYKYOXSVWTYRZO[",
  2055: " 22F]OFI[ RPFJ[ RTLRT RLF[FZLZF RMPSP RF[U[WVT[",
  2056: " 20F\\OFI[ RPFJ[ RTLRT RLF[FZLZF RMPSP RF[M[",
  2057: " 42H^ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[R[UZWXYT RTFRGPINLMOLSLVMYNZP[ RR[TZVXXT RUT\\T",
  2058: " 27E_NFH[ ROFI[ R[FU[ R\\FV[ RKFRF RXF_F RLPXP RE[L[ RR[Y[",
  2059: " 12LYUFO[ RVFP[ RRFYF RL[S[",
  2060: " 21I[XFSWRYQZO[M[KZJXJVKULVKW RWFRWQYO[ RTF[F",
  2061: " 27F]OFI[ RPFJ[ R]FLS RSOW[ RROV[ RLFSF RYF_F RF[M[ RS[Y[",
  2062: " 14H\\QFK[ RRFL[ RNFUF RH[W[YUV[",
  2063: " 30E`NFH[ RNFO[ ROFPY R\\FO[ R\\FV[ R]FW[ RKFOF R\\F`F RE[K[ RS[Z[",
  2064: " 21F_OFI[ ROFVX ROIV[ R\\FV[ RLFOF RYF_F RF[L[",
  2065: " 42G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF RSFQGOIMLLOKSKVLYN[ RQ[SZUXWUXRYNYKXHVF",
  2066: " 27F]OFI[ RPFJ[ RLFXF[G\\I\\K[NYPUQMQ RXFZG[I[KZNXPUQ RF[M[",
  2067: " 61G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF RSFQGOIMLLOKSKVLYN[ RQ[SZUXWUXRYNYKXHVF RLYLXMVOUPURVSXS_T`V`W^W] RSXT^U_V_W^",
  2068: " 42F^OFI[ RPFJ[ RLFWFZG[I[KZNYOVPMP RWFYGZIZKYNXOVP RRPTQURVZW[Y[ZYZX RURWYXZYZZY RF[M[",
  2069: " 35G^ZH[H\\F[L[JZHYGVFRFOGMIMKNMONVRXT RMKOMVQWRXTXWWYVZS[O[LZKYJWJUI[JYKY",
  2070: " 16H]UFO[ RVFP[ ROFLLNF]F\\L\\F RL[S[",
  2071: " 25F_NFKQJUJXKZN[R[UZWXXU\\F ROFLQKUKXLZN[ RKFRF RYF_F",
  2072: " 15H\\NFO[ ROFPY R\\FO[ RLFRF RXF^F",
  2073: " 24E_MFK[ RNFLY RUFK[ RUFS[ RVFTY R]FS[ RJFQF RZF`F",
  2074: " 21G]NFU[ ROFV[ R\\FH[ RLFRF RXF^F RF[L[ RR[X[",
  2075: " 20H]NFRPO[ ROFSPP[ R]FSP RLFRF RYF_F RL[S[",
  2076: " 16G][FH[ R\\FI[ ROFLLNF\\F RH[V[XUU[",
  2077: " 46H\\KILKXWYYY[ RLLXX RKIKKLMXYY[ RPPLTKVKXLZK[ RKVMZ RLTLVMXMZK[ RSSXN RVIVLWNYNYLWKVI RVIWLYN",
  2101: " 39I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[",
  2102: " 33G\\LFL[ RMFM[ RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIFMF",
  2103: " 28H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[",
  2104: " 36H]WFW[ RXFX[ RWPUNSMQMNNLPKSKULXNZQ[S[UZWX RQMONMPLSLUMXOZQ[ RTFXF RW[[[",
  2105: " 31H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[",
  2106: " 22KXUGTHUIVHVGUFSFQGPIP[ RSFRGQIQ[ RMMUM RM[T[",
  2107: " 60I\\QMONNOMQMSNUOVQWSWUVVUWSWQVOUNSMQM RONNPNTOV RUVVTVPUN RVOWNYMYNWN RNUMVLXLYM[P\\U\\X]Y^ RLYMZP[U[X\\Y^Y_XaUbObLaK_K^L\\O[",
  2108: " 28G]LFL[ RMFM[ RMPONRMTMWNXPX[ RTMVNWPW[ RIFMF RI[P[ RT[[[",
  2109: " 18MXRFQGRHSGRF RRMR[ RSMS[ ROMSM RO[V[",
  2110: " 25MXSFRGSHTGSF RTMT_SaQbObNaN`O_P`Oa RSMS_RaQb RPMTM",
  2111: " 27G\\LFL[ RMFM[ RWMMW RRSX[ RQSW[ RIFMF RTMZM RI[P[ RT[Z[",
  2112: " 12MXRFR[ RSFS[ ROFSF RO[V[",
  2113: " 44BcGMG[ RHMH[ RHPJNMMOMRNSPS[ ROMQNRPR[ RSPUNXMZM]N^P^[ RZM\\N]P][ RDMHM RD[K[ RO[V[ RZ[a[",
  2114: " 28G]LML[ RMMM[ RMPONRMTMWNXPX[ RTMVNWPW[ RIMMM RI[P[ RT[[[",
  2115: " 36H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM",
  2116: " 36G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb",
  2117: " 33H\\WMWb RXMXb RWPUNSMQMNNLPKSKULXNZQ[S[UZWX RQMONMPLSLUMXOZQ[ RTb[b",
  2118: " 23IZNMN[ ROMO[ ROSPPRNTMWMXNXOWPVOWN RKMOM RK[R[",
  2119: " 32J[WOXMXQWOVNTMPMNNMOMQNRPSUUWVXW RMPNQPRUTWUXVXYWZU[Q[OZNYMWM[NY",
  2120: " 16KZPFPWQZS[U[WZXX RQFQWRZS[ RMMUM",
  2121: " 28G]LMLXMZP[R[UZWX RMMMXNZP[ RWMW[ RXMX[ RIMMM RTMXM RW[[[",
  2122: " 15I[LMR[ RMMRY RXMR[ RJMPM RTMZM",
  2123: " 24F^JMN[ RKMNX RRMN[ RRMV[ RSMVX RZMV[ RGMNM RWM]M",
  2124: " 21H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[",
  2125: " 22H[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM",
  2126: " 16I[WML[ RXMM[ RMMLQLMXM RL[X[XWW[",
  2127: " 40G^QMNNLPKRJUJXKZN[P[RZUWWTYPZM RQMONMPLRKUKXLZN[ RQMSMUNVPXXYZZ[ RSMTNUPWXXZZ[[[",
  2128: " 57G\\TFQGOIMMLPKTJZIb RTFRGPINMMPLTKZJb RTFVFXGYHYKXMWNTOPO RVFXHXKWMVNTO RPOTPVRWTWWVYUZR[P[NZMYLV RPOSPURVTVWUYTZR[",
  2129: " 28H\\IPKNMMOMQNROSRSVRZOb RJOLNPNRO RZMYPXRSYP^Nb RYMXPWRSY",
  2130: " 44I\\VNTMRMONMQLTLWMYNZP[R[UZWWXTXQWOSJRHRFSEUEWFYH RRMPNNQMTMXNZ RR[TZVWWTWPVNTKSISGTFVFYH",
  2131: " 32I[XPVNTMPMNNNPPRSS RPMONOPQRSS RSSNTLVLXMZP[S[UZWX RSSOTMVMXNZP[",
  2132: " 31I[TFRGQHQIRJUKZKZJWKSMPOMRLULWMYP[S]T_TaSbQbPa RULQONRMUMWNYP[",
  2133: " 32G]HQIOKMNMONOPNTL[ RMMNNNPMTK[ RNTPPRNTMVMXNYOYRXWUb RVMXOXRWWTb",
  2134: " 44F]GQHOJMMMNNNPMUMXNZO[ RLMMNMPLULXMZO[Q[SZUXWUXRYMYIXGVFTFRHRJSMUPWRZT RSZUWVUWRXMXIWGVF",
  2135: " 15LXRMPTOXOZP[S[UYVW RSMQTPXPZQ[",
  2136: " 29H\\NMJ[ ROMK[ RXMYNZNYMWMUNQROSMS ROSQTSZT[ ROSPTRZS[U[WZYW",
  2137: " 23H\\KFMFOGPHQJWXXZY[ RMFOHPJVXWZY[Z[ RRMJ[ RRMK[",
  2138: " 28F]MMGb RNMHb RMPLVLYN[P[RZTXVU RXMUXUZV[Y[[Y\\W RYMVXVZW[",
  2139: " 24H\\NML[ ROMNSMXL[ RYMXQVU RZMYPXRVUTWQYOZL[ RKMOM",
  2140: " 45IZTFRGQHQIRJUKXK RUKQLOMNONQPSSTVT RUKRLPMOOOQQSST RSTOUMVLXLZN\\S^T_TaRbPb RSTPUNVMXMZO\\S^",
  2141: " 32I[RMONMQLTLWMYNZP[R[UZWWXTXQWOVNTMRM RRMPNNQMTMXNZ RR[TZVWWTWPVN",
  2142: " 22G]PNL[ RPNM[ RVNV[ RVNW[ RIPKNNM[M RIPKONN[N",
  2143: " 31H[LVMYNZP[R[UZWWXTXQWOVNTMRMONMQLTHb RR[TZVWWTWPVN RRMPNNQMTIb",
  2144: " 35H][MQMNNLQKTKWLYMZO[Q[TZVWWTWQVOUNSM RQMONMQLTLXMZ RQ[SZUWVTVPUN RUN[N",
  2145: " 16H\\SNP[ RSNQ[ RJPLNOMZM RJPLOONZN",
  2146: " 31H\\IQJOLMOMPNPPNVNYP[ RNMONOPMVMYNZP[Q[TZVXXUYRYOXMWNXOYR RXUYO",
  2147: " 37G]ONMOKQJTJWKYLZN[Q[TZWXYUZRZOXMVMTORSPXMb RJWLYNZQZTYWWYU RZOXNVNTPRSPYNb",
  2148: " 23I[KMMMONPPU_VaWb RMMNNOPT_UaWbYb RZMYOWRM]K`Jb",
  2149: " 34F]UFOb RVFNb RGQHOJMMMNNNPMUMXOZRZTYWVYS RLMMNMPLULXMZO[R[TZVXXUYS[M",
  2150: " 44F]JQLOONNMLNJQITIWJZK[M[OZQWRT RIWJYKZMZOYQW RQTQWRZS[U[WZYWZTZQYNXMWNYOZQ RQWRYSZUZWYYW",
  2151: " 39H]XMVTUXUZV[Y[[Y\\W RYMWTVXVZW[ RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ",
  2152: " 36H[PFLSLVMYNZ RQFMS RMSNPPNRMTMVNWOXQXTWWUZR[P[NZMWMS RVNWPWTVWTZR[ RMFQF",
  2153: " 25I[WPWQXQXPWNUMRMONMQLTLWMYNZP[R[UZWW RRMPNNQMTMXNZ",
  2154: " 42H]ZFVTUXUZV[Y[[Y\\W R[FWTVXVZW[ RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ RWF[F",
  2155: " 26I[MVQUTTWRXPWNUMRMONMQLTLWMYNZP[R[UZWX RRMPNNQMTMXNZ",
  2156: " 35KZZGYHZI[H[GZFXFVGUHTJSMP[O_Na RXFVHUJTNRWQ[P^O`NaLbJbIaI`J_K`Ja ROMYM",
  2157: " 43H\\YMU[T^RaObLbJaI`I_J^K_J` RXMT[S^QaOb RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ",
  2158: " 31H]PFJ[ RQFK[ RMTOPQNSMUMWNXOXQVWVZW[ RUMWOWQUWUZV[Y[[Y\\W RMFQF",
  2159: " 26LYUFTGUHVGUF RMQNOPMSMTNTQRWRZS[ RRMSNSQQWQZR[U[WYXW",
  2160: " 32LYVFUGVHWGVF RNQOOQMTMUNUQR[Q^P`OaMbKbJaJ`K_L`Ka RSMTNTQQ[P^O`Mb",
  2161: " 34H\\PFJ[ RQFK[ RXNWOXPYOYNXMWMUNQROSMS ROSQTSZT[ ROSPTRZS[U[WZYW RMFQF",
  2162: " 18MYUFQTPXPZQ[T[VYWW RVFRTQXQZR[ RRFVF",
  2163: " 52AbBQCOEMHMINIPHTF[ RGMHNHPGTE[ RHTJPLNNMPMRNSOSQP[ RPMRORQO[ RRTTPVNXMZM\\N]O]Q[W[Z\\[ RZM\\O\\QZWZZ[[^[`YaW",
  2164: " 37F]GQHOJMMMNNNPMTK[ RLMMNMPLTJ[ RMTOPQNSMUMWNXOXQVWVZW[ RUMWOWQUWUZV[Y[[Y\\W",
  2165: " 32I[RMONMQLTLWMYNZP[R[UZWWXTXQWOVNTMRM RRMPNNQMTMXNZ RR[TZVWWTWPVN",
  2166: " 42G\\HQIOKMNMONOPNTJb RMMNNNPMTIb RNTOQQNSMUMWNXOYQYTXWVZS[Q[OZNWNT RWNXPXTWWUZS[ RFbMb",
  2167: " 33H\\XMRb RYMSb RVTVQUNSMQMNNLQKTKWLYMZO[Q[SZUWVT RQMONMQLTLXMZ RObVb",
  2168: " 26IZJQKOMMPMQNQPPTN[ ROMPNPPOTM[ RPTRPTNVMXMYNYOXPWOXN",
  2169: " 28J[XOXPYPYOXNUMRMONNONQORVVWW RNPOQVUWVWYVZS[P[MZLYLXMXMY",
  2170: " 18KYTFPTOXOZP[S[UYVW RUFQTPXPZQ[ RNMWM",
  2171: " 37F]GQHOJMMMNNNQLWLYN[ RLMMNMQKWKYLZN[P[RZTXVT RXMVTUXUZV[Y[[Y\\W RYMWTVXVZW[",
  2172: " 26H\\IQJOLMOMPNPQNWNYP[ RNMONOQMWMYNZP[Q[TZVXXUYQYMXMYO",
  2173: " 41C`DQEOGMJMKNKQIWIYK[ RIMJNJQHWHYIZK[M[OZQXRV RTMRVRYSZU[W[YZ[X\\V]R]M\\M]O RUMSVSYU[",
  2174: " 42H\\KQMNOMRMSOSR RQMRORRQVPXNZL[K[JZJYKXLYKZ RQVQYR[U[WZYW RYNXOYPZOZNYMXMVNTPSRRVRYS[",
  2175: " 41G\\HQIOKMNMONOQMWMYO[ RMMNNNQLWLYMZO[Q[SZUXWT RZMV[U^SaPbMbKaJ`J_K^L_K` RYMU[T^RaPb",
  2176: " 31H\\YMXOVQNWLYK[ RLQMOOMRMVO RMOONRNVOXO RLYNYRZUZWY RNYR[U[WYXW",
  2177: " 43G^VGUHVIWHWGUFRFOGMILLL[ RRFPGNIMLM[ R\\G[H\\I]H]G\\FZFXGWIW[ RZFYGXIX[ RIM[M RI[P[ RT[[[",
  2178: " 33G]WGVHWIXHWGUFRFOGMILLL[ RRFPGNIMLM[ RWMW[ RXMX[ RIMXM RI[P[ RT[[[",
  2179: " 35G]VGUHVIWHWGUF RXFRFOGMILLL[ RRFPGNIMLM[ RWHW[ RXFX[ RIMWM RI[P[ RT[[[",
  2180: " 54BcRGQHRISHRGPFMFJGHIGLG[ RMFKGIIHLH[ R]G\\H]I^H]G[FXFUGSIRLR[ RXFVGTISLS[ R]M][ R^M^[ RDM^M RD[K[ RO[V[ RZ[a[",
  2181: " 56BcRGQHRISHRGPFMFJGHIGLG[ RMFKGIIHLH[ R\\G[H\\I]H]G[F R^FXFUGSIRLR[ RXFVGTISLS[ R]H][ R^F^[ RDM]M RD[K[ RO[V[ RZ[a[",
  2182: " 12MXRMR[ RSMS[ ROMSM RO[V[",
  2184: " 25IZWNUMRMONMPLSLVMYNZQ[T[VZ RRMPNNPMSMVNYOZQ[ RMTUT",
  2185: " 43I\\TFQGOJNLMOLTLXMZO[Q[TZVWWUXRYMYIXGVFTF RTFRGPJOLNOMTMXNZO[ RQ[SZUWVUWRXMXIWGVF RNPWP",
  2186: " 42G]UFOb RVFNb RQMMNKPJSJVKXMZP[S[WZYXZUZRYPWNTMQM RQMNNLPKSKVLXNZP[ RS[VZXXYUYRXPVNTM",
  2187: " 27I[TMVNXPXOWNTMQMNNMOLQLSMUOWSZ RQMONNOMQMSNUSZT\\T^S_Q_",
  2190: " 45G]LMKNJPJRKUOYP[ RJRKTOXP[P]O`MbLbKaJ_J\\KXMTOQRNTMVMYNZPZTYXWZU[T[SZSXTWUXTY RVMXNYPYTXXWZ",
  2191: " 69E_YGXHYIZHYGWFTFQGOINKMNLRJ[I_Ha RTFRGPIOKNNLWK[J^I`HaFbDbCaC`D_E`Da R_G^H_I`H`G_F]F[GZHYJXMU[T_Sa R]F[HZJYNWWV[U^T`SaQbObNaN`O_P`Oa RIM^M",
  2192: " 52F^[GZH[I\\H[GXFUFRGPIOKNNMRK[J_Ia RUFSGQIPKONMWL[K^J`IaGbEbDaD`E_F`Ea RYMWTVXVZW[Z[\\Y]W RZMXTWXWZX[ RJMZM",
  2193: " 54F^YGXHYIZHZGXF R\\FUFRGPIOKNNMRK[J_Ia RUFSGQIPKONMWL[K^J`IaGbEbDaD`E_F`Ea R[FWTVXVZW[Z[\\Y]W R\\FXTWXWZX[ RJMYM",
  2194: " 86@cTGSHTIUHTGRFOFLGJIIKHNGRE[D_Ca ROFMGKIJKINGWF[E^D`CaAb?b>a>`?_@`?a R`G_H`IaH`G]FZFWGUITKSNRRP[O_Na RZFXGVIUKTNRWQ[P^O`NaLbJbIaI`J_K`Ja R^M\\T[X[Z\\[_[aYbW R_M]T\\X\\Z][ RDM_M",
  2195: " 88@cTGSHTIUHTGRFOFLGJIIKHNGRE[D_Ca ROFMGKIJKINGWF[E^D`CaAb?b>a>`?_@`?a R^G]H^I_H_G]F RaFZFWGUITKSNRRP[O_Na RZFXGVIUKTNRWQ[P^O`NaLbJbIaI`J_K`Ja R`F\\T[X[Z\\[_[aYbW RaF]T\\X\\Z][ RDM^M",
  2196: " 20LYMQNOPMSMTNTQRWRZS[ RRMSNSQQWQZR[U[WYXW",
  2200: " 40H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF RQFOGNHMJLOLRMWNYOZQ[ RS[UZVYWWXRXOWJVHUGSF",
  2201: " 11H\\NJPISFS[ RRGR[ RN[W[",
  2202: " 45H\\LJMKLLKKKJLHMGPFTFWGXHYJYLXNUPPRNSLUKXK[ RTFVGWHXJXLWNTPPR RKYLXNXSZVZXYYX RNXS[W[XZYXYV",
  2203: " 47H\\LJMKLLKKKJLHMGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[P[MZLYKWKVLUMVLW RWQXTXWWYVZT[",
  2204: " 13H\\THT[ RUFU[ RUFJUZU RQ[X[",
  2205: " 39H\\MFKP RKPMNPMSMVNXPYSYUXXVZS[P[MZLYKWKVLUMVLW RSMUNWPXSXUWXUZS[ RMFWF RMGRGWF",
  2206: " 48H\\WIVJWKXJXIWGUFRFOGMILKKOKULXNZQ[S[VZXXYUYTXQVOSNRNOOMQLT RRFPGNIMKLOLUMXOZQ[ RS[UZWXXUXTWQUOSN",
  2207: " 31H\\KFKL RKJLHNFPFUIWIXHYF RLHNGPGUI RYFYIXLTQSSRVR[ RXLSQRSQVQ[",
  2208: " 63H\\PFMGLILLMNPOTOWNXLXIWGTFPF RPFNGMIMLNNPO RTOVNWLWIVGTF RPOMPLQKSKWLYMZP[T[WZXYYWYSXQWPTO RPONPMQLSLWMYNZP[ RT[VZWYXWXSWQVPTO",
  2209: " 48H\\XMWPURRSQSNRLPKMKLLINGQFSFVGXIYLYRXVWXUZR[O[MZLXLWMVNWMX RQSORMPLMLLMIOGQF RSFUGWIXLXRWVVXTZR[",
  2210: "  6MWRYQZR[SZRY",
  2211: "  8MWR[QZRYSZS\\R^Q_",
  2212: " 12MWRMQNROSNRM RRYQZR[SZRY",
  2213: " 14MWRMQNROSNRM RR[QZRYSZS\\R^Q_",
  2214: " 15MWRFQHRTSHRF RRHRN RRYQZR[SZRY",
  2215: " 32I[MJNKMLLKLJMHNGPFSFVGWHXJXLWNVORQRT RSFUGVHWJWLVNTP RRYQZR[SZRY",
  2216: "  6NVRFQM RSFQM",
  2217: " 12JZNFMM ROFMM RVFUM RWFUM",
  2218: " 14KYQFOGNINKOMQNSNUMVKVIUGSFQF",
  2219: "  9JZRFRR RMIWO RWIMO",
  2220: "  3G][BIb",
  2221: " 20KYVBTDRGPKOPOTPYR]T`Vb RTDRHQKPPPTQYR\\T`",
  2222: " 20KYNBPDRGTKUPUTTYR]P`Nb RPDRHSKTPTTSYR\\P`",
  2223: " 12KYOBOb RPBPb ROBVB RObVb",
  2224: " 12KYTBTb RUBUb RNBUB RNbUb",
  2225: " 40KYTBRCQDPFPHQJRKSMSOQQ RRCQEQGRISJTLTNSPORSTTVTXSZR[Q]Q_Ra RQSSUSWRYQZP\\P^Q`RaTb",
  2226: " 40KYPBRCSDTFTHSJRKQMQOSQ RRCSESGRIQJPLPNQPURQTPVPXQZR[S]S_Ra RSSQUQWRYSZT\\T^S`RaPb",
  2227: "  4KYUBNRUb",
  2228: "  4KYOBVROb",
  2229: "  3NVRBRb",
  2230: "  6KYOBOb RUBUb",
  2231: "  3E_IR[R",
  2232: "  6E_RIR[ RIR[R",
  2233: "  9F^RJR[ RJRZR RJ[Z[",
  2234: "  9F^RJR[ RJJZJ RJRZR",
  2235: "  6G]KKYY RYKKY",
  2236: "  6MWRQQRRSSRRQ",
  2237: " 15E_RIQJRKSJRI RIR[R RRYQZR[SZRY",
  2238: "  6E_IO[O RIU[U",
  2239: "  9E_YIK[ RIO[O RIU[U",
  2240: "  9E_IM[M RIR[R RIW[W",
  2241: "  4F^ZIJRZ[",
  2242: "  4F^JIZRJ[",
  2243: " 10F^ZFJMZT RJVZV RJ[Z[",
  2244: " 10F^JFZMJT RJVZV RJ[Z[",
  2245: " 21F_[WYWWVUTRPQOONMNKOJQJSKUMVOVQURTUPWNYM[M",
  2246: " 24F^IUISJPLONOPPTSVTXTZS[Q RISJQLPNPPQTTVUXUZT[Q[O",
  2247: "  8G]JTROZT RJTRPZT",
  2248: "  7LXTFOL RTFUGOL",
  2249: "  7LXPFUL RPFOGUL",
  2250: " 18H\\KFLHNJQKSKVJXHYF RKFLINKQLSLVKXIYF",
  2251: "  8MWRHQGRFSGSIRKQL",
  2252: "  8MWSFRGQIQKRLSKRJ",
  2253: "  8MWRHSGRFQGQIRKSL",
  2254: "  8MWQFRGSISKRLQKRJ",
  2255: " 10E[HMLMRY RKMR[ R[BR[",
  2256: " 13F^ZJSJOKMLKNJQJSKVMXOYSZZZ",
  2257: " 13F^JJJQKULWNYQZSZVYXWYUZQZJ",
  2258: " 13F^JJQJUKWLYNZQZSYVWXUYQZJZ",
  2259: " 13F^JZJSKOLMNKQJSJVKXMYOZSZZ",
  2260: " 16F^ZJSJOKMLKNJQJSKVMXOYSZZZ RJRVR",
  2261: " 11E_XP[RXT RUMZRUW RIRZR",
  2262: " 11JZPLRITL RMORJWO RRJR[",
  2263: " 11E_LPIRLT ROMJROW RJR[R",
  2264: " 11JZPXR[TX RMURZWU RRIRZ",
  2265: " 44I\\XRWOVNTMRMONMQLTLWMYNZP[R[UZWXXUYPYKXHWGUFRFPGOHOIPIPH RRMPNNQMTMXNZ RR[TZVXWUXPXKWHUF",
  2266: " 15H\\JFR[ RKFRY RZFR[ RJFZF RKGYG",
  2267: " 10AbDMIMRY RHNR[ Rb:R[",
  2268: " 32F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia",
  2269: " 50F^[CZD[E\\D\\C[BYBWCUETGSJRNPZO^N` RVDUFTJRVQZP]O_MaKbIbHaH`I_J`Ia RQKNLLNKQKSLVNXQYSYVXXVYSYQXNVLSKQK",
  2270: " 26F_\\S[UYVWVUUTTQPPONNLNJOIQISJULVNVPUQTTPUOWNYN[O\\Q\\S",
  2271: " 32F^[FI[ RNFPHPJOLMMKMIKIIJGLFNFPGSHVHYG[F RWTUUTWTYV[X[ZZ[X[VYTWT",
  2272: " 49F_[NZO[P\\O\\N[MZMYNXPVUTXRZP[M[JZIXIUJSPORMSKSIRGPFNGMIMKNNPQUXWZZ[[[\\Z\\Y RM[KZJXJUKSMQ RMKNMVXXZZ[",
  2273: " 56E`WNVLTKQKOLNMMPMSNUPVSVUUVS RQKOMNPNSOUPV RWKVSVUXVZV\\T]Q]O\\L[JYHWGTFQFNGLHJJILHOHRIUJWLYNZQ[T[WZYYZX RXKWSWUXV",
  2274: " 42H\\PBP_ RTBT_ RXIWJXKYJYIWGTFPFMGKIKKLMMNOOUQWRYT RKKMMONUPWQXRYTYXWZT[P[MZKXKWLVMWLX",
  2275: " 12H]SFLb RYFRb RLQZQ RKWYW",
  2276: " 46JZUITJUKVJVIUGSFQFOGNINKOMQOVR ROMTPVRWTWVVXTZ RPNNPMRMTNVPXU[ RNVSYU[V]V_UaSbQbOaN_N^O]P^O_",
  2277: " 30JZRFQHRJSHRF RRFRb RRQQTRbSTRQ RLMNNPMNLLM RLMXM RTMVNXMVLTM",
  2278: " 56JZRFQHRJSHRF RRFRT RRPQRSVRXQVSRRP RRTRb RR^Q`RbS`R^ RLMNNPMNLLM RLMXM RTMVNXMVLTM RL[N\\P[NZL[ RL[X[ RT[V\\X[VZT[",
  2279: " 12I\\XFX[ RKFXF RPPXP RK[X[",
  2281: " 38E`QFNGKIILHOHRIUKXNZQ[T[WZZX\\U]R]O\\LZIWGTFQF RROQPQQRRSRTQTPSORO RRPRQSQSPRP",
  2282: " 45J[PFNGOIQJ RPFOGOI RUFWGVITJ RUFVGVI RQJOKNLMNMQNSOTQUTUVTWSXQXNWLVKTJQJ RRUR[ RSUS[ RNXWX",
  2283: " 27I\\RFOGMILLLMMPORRSSSVRXPYMYLXIVGSFRF RRSR[ RSSS[ RNWWW",
  2284: " 28D`PFMGJIHLGOGSHVJYM[P\\T\\W[ZY\\V]S]O\\LZIWGTFPF RRFR\\ RGQ]Q",
  2285: " 31G`PMMNKPJSJTKWMYPZQZTYVWWTWSVPTNQMPM R]GWG[HUN R]G]M\\IVO R\\HVN",
  2286: " 28F\\IIJGLFOFQGRIRLQOPQNSKU ROFPGQIQMPPNS RVFT[ RWFS[ RKUYU",
  2287: " 30I\\MFMU RNFMQ RMQNOONQMTMWNXPXRWTUV RTMVNWPWRTXTZU[W[YY RKFNF",
  2288: " 44I\\RNOOMQLTLUMXOZR[S[VZXXYUYTXQVOSNRN RRHNJRFRN RSHWJSFSN RRSQTQURVSVTUTTSSRS RRTRUSUSTRT",
  2289: " 37G^QHRFR[ RTHSFS[ RJHKFKMLPNRQSRS RMHLFLNMQ R[HZFZMYPWRTSSS RXHYFYNXQ RNWWW",
  2290: " 31G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[Y[YVX[",
  2291: " 24H[YGUGQHNJLMKPKSLVNYQ[U\\Y\\ RYGVHSJQMPPPSQVSYV[Y\\",
  2292: " 27F_OQMQKRJSIUIWJYKZM[O[QZRYSWSURSQROQ RSHPQ RZJRR R\\QST",
  2293: " 12H\\OKUY RUKOY RKOYU RYOKU",
  2294: " 48F^NVLUKUIVHXHYI[K\\L\\N[OYOXNVKRJOJMKJMHPGTGWHYJZMZOYRVVUXUYV[X\\Y\\[[\\Y\\X[VYUXUVV RJMKKMIPHTHWIYKZM",
  2295: " 48F^NMLNKNIMHKHJIHKGLGNHOJOKNMKQJTJVKYM[P\\T\\W[YYZVZTYQVMUKUJVHXGYG[H\\J\\K[MYNXNVM RJVKXMZP[T[WZYXZV",
  2301: " 40F_JMILIJJHLGNGPHQIRKSP RIJKHMHOIPJQLRPR[ R[M\\L\\J[HYGWGUHTISKRP R\\JZHXHVIUJTLSPS[",
  2302: " 51F^IGJKKMMOPPTPWOYMZK[G RIGJJKLMNPOTOWNYLZJ[G RPONPMQLSLVMXOZQ[S[UZWXXVXSWQVPTO RPPNQMSMVNY RVYWVWSVQTP",
  2303: " 30F^MJMV RNKNU RVKVU RWJWV RIGKIMJPKTKWJYI[G RIYKWMVPUTUWVYW[Y",
  2304: " 48F^[ILIJJILINJPLQNQPPQNQLPJ[J RIMJOKPMQ RQMPKOJMI RIXXXZW[U[SZQXPVPTQSSSUTWIW R[TZRYQWP RSTTVUWWX",
  2305: " 48F]OUMTLTJUIWIXJZL[M[OZPXPWOUJPINIKJILHOGSGWHYJZLZOYRVUUWUYV[X[YZZX RMSKPJNJKKILH RSGVHXJYLYOXRVU",
  2306: " 48G_HKKHMKMV RJILLLV RMKPHRKRU ROIQLQU RRKUHWKW[ RTIVLV[ RWKZH[J\\M\\P[SZUXWUYP[ RYIZJ[M[PZSYUWWTYP[",
  2307: " 41F^ISMSLRKOKMLJNHQGSGVHXJYMYOXRWS[S RITOTMRLOLMMJOHQG RSGUHWJXMXOWRUT[T RKXYX RKYYY",
  2308: " 30F_GLJIMLMX RIJLMLX RMLPISLSX ROJRMRX RSLVIYLYW[Y RUJXMXXZZ]W",
  2309: " 33G]ZIJY RZIWJQJ RXKUKQJ RZIYLYR RXKXNYR RQRJR RPSMSJR RQRQY RPSPVQY",
  2310: " 33F^HOJKOU RJMOWRPWPZO[M[KZIXHWHUITKTMUPVRWUWXUZ RWHVIUKUMWQXTXWWYUZ",
  2311: " 36F^IOLLPN RKMOORLUN RQMTOWLYN RVMXO[L RIULRPT RKSOURRUT RQSTUWRYT RVSXU[R",
  2312: " 48F^JHNJPLQOQRPUNWJY RJHMIOJQLRO RRRQUOWMXJY RZHWIUJSLRO RRRSUUWWXZY RZHVJTLSOSRTUVWZY RIP[P RIQ[Q",
  2317: " 12NVQQQSSSSQQQ RQQSS RSQQS",
  2318: " 18JZMPQRTTVVWYW[V]U^ RMQST RMRPSTUVWWY",
  2319: " 18JZWKVMTOPQMR RSPMS RUFVGWIWKVNTPQRMT",
  2320: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR",
  2321: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR",
  2322: " 34J[SMPNNPMRMTNVPWRWUVWTXRXPWNUMSM ROPUM RNRVN RMTWO RNUXP ROVWR RPWVT",
  2323: " 18JZOGO^ RUFU] RMNWL RMOWM RMWWU RMXWV",
  2324: " 18JZNFNX RVLV^ RNNVL RNOVM RNWVU RNXVV",
  2325: " 25JZNBNW RNNQLTLVMWOWQVSSUQVNW RNNQMTMVN RUMVOVQUSSU",
  2326: " 18E_HIHL R\\I\\L RHI\\I RHJ\\J RHK\\K RHL\\L",
  2327: " 18JZMNMQ RWNWQ RMNWN RMOWO RMPWP RMQWQ",
  2328: " 49JZMLWX RMLONQOTOVNWMWKUKUMTO RONTO RQOWM RVKVN RULWL RWXUVSUPUNVMWMYOYOWPU RUVPU RSUMW RNVNY RMXOX",
  2329: " 26JZPOOMOKMKMMNNPOSOUNWL RNKNN RMLOL RMMSO RPOUN RWLWY",
  2330: " 86A^GfHfIeIdHcGcFdFfGhIiKiNhPfQdR`RUQ;Q4R/S-U,V,X-Y/Y3X6W8U;P?JCHEFHEJDNDREVGYJ[N\\R\\V[XZZW[T[PZMYKWITHPHMIKKJNJRKUMW RGdGeHeHdGd RU;Q?LCIFGIFKENERFVGXJ[ RR\\U[WZYWZTZPYMXKVITH",
  2331: "103EfNSOUQVSVUUVSVQUOSNQNOONPMSMVNYP[S\\V\\Y[[Y\\W]T]P\\MZJXIUHRHOIMJKLIOHSHXI]KaMcPeTfYf]e`cba RKLJNIRIXJ\\L`NbQdUeYe]d_cba RPOTO ROPUP RNQVQ RNRVR RNSVS ROTUT RPUTU RaLaNcNcLaL RbLbN RaMcM RaVaXcXcVaV RbVbX RaWcW",
  2332: " 30D`H@Hd RM@Md RW@Wd R\\@\\d RMMWK RMNWL RMOWM RMWWU RMXWV RMYWW",
  2367: " 12NVQQQSSSSQQQ RQQSS RSQQS",
  2368: " 18JZMPQRTTVVWYW[V]U^ RMQST RMRPSTUVWWY",
  2369: " 18JZWKVMTOPQMR RSPMS RUFVGWIWKVNTPQRMT",
  2370: " 32H\\PMMNLOKQKSLUMVPWTWWVXUYSYQXOWNTMPM RMNLPLSMUNVPW RWVXTXQWOVNTM",
  2371: " 36H\\SMONLPKRKTLVNWQWUVXTYRYPXNVMSM RXNSM RVMQNLP RONKR RLVQW RNWSVXT RUVYR",
  2372: " 34J[SMPNNPMRMTNVPWRWUVWTXRXPWNUMSM ROPUM RNRVN RMTWO RNUXP ROVWR RPWVT",
  2373: " 18JZOGO^ RUFU] RMNWL RMOWM RMWWU RMXWV",
  2374: " 18JZNFNX RVLV^ RNNVL RNOVM RNWVU RNXVV",
  2375: " 25JZNBNW RNNQLTLVMWOWQVSSUQVNW RNNQMTMVN RUMVOVQUSSU",
  2376: " 18E_HIHL R\\I\\L RHI\\I RHJ\\J RHK\\K RHL\\L",
  2377: " 18JZMNMQ RWNWQ RMNWN RMOWO RMPWP RMQWQ",
  2378: " 36JZQCVMRTRU RULQS RTITKPRRUUY RW\\UYSXQXOYN[N]O_Ra RW\\UZSYOYO]P_Ra RSXPZN]",
  2379: " 26JZPOOMOKMKMMNNPOSOUNWL RNKNN RMLOL RMMSO RPOUN RWLSY",
  2380: " 86A^GfHfIeIdHcGcFdFfGhIiKiNhPfQdR`RUQ;Q4R/S-U,V,X-Y/Y3X6W8U;P?JCHEFHEJDNDREVGYJ[N\\R\\V[XZZW[T[PZMYKWITHPHMIKKJNJRKUMW RGdGeHeHdGd RU;Q?LCIFGIFKENERFVGXJ[ RR\\U[WZYWZTZPYMXKVITH",
  2381: " 89IjNQOOQNSNUOVQVSUUSVQVOUNTMQMNNKPISHWH[I^K`NaRaW`[_]]`ZcVfQiMk RWHZI]K_N`R`W_[^]\\`YcTgQi RPOTO ROPUP RNQVQ RNRVR RNSVS ROTUT RPUTU ReLeNgNgLeL RfLfN ReMgM ReVeXgXgVeV RfVfX ReWgW",
  2382: " 85D`H>Hf RI>If RM>Mf RQBSBSDQDQAR?T>W>Y?[A\\D\\I[LYNWOUOSNRLQNOQNROSQVRXSVUUWUYV[X\\[\\`[cYeWfTfReQcQ`S`SbQb RRBRD RQCSC RY?ZA[D[IZLYN RRLRNPQNRPSRVRX RYVZX[[[`ZcYe RR`Rb RQaSa",
  2401: " 21AcHBHb RIBIb R[B[b R\\B\\b RDB`B RDbMb RWb`b",
  2402: " 23BaGBQPFb RFBPP REBPQ REB\\B^I[B RGa\\a RFb\\b^[[b",
  2403: " 28I[X+U1R8P=OANFMNMVN^OcPgRlUsXy RU1S6Q<P@OFNNNVO^PdQhSnUs",
  2404: " 28I[L+O1R8T=UAVFWNWVV^UcTgRlOsLy RO1Q6S<T@UFVNVVU^TdShQnOs",
  2405: " 14I[M+MRMy RN+NRNy RM+X+ RMyXy",
  2406: " 14I[V+VRVy RW+WRWy RL+W+ RLyWy",
  2407: " 48I[V+S-Q/P1O4O8P<TDUGUJTMRP RS-Q0P4P8Q;UCVGVJUMRPNRRTUWVZV]UaQiPlPpQtSw RRTTWUZU]T`PhOlOpPsQuSwVy",
  2408: " 48I[N+Q-S/T1U4U8T<PDOGOJPMRP RQ-S0T4T8S;OCNGNJOMRPVRRTOWNZN]OaSiTlTpStQw RRTPWOZO]P`ThUlUpTsSuQwNy",
  2409: " 32I[V.S1Q4O8N=NCOIPMSXT\\UbUgTlSoQs RS1Q5P8O=OBPHQLTWU[VaVgUlSpQsNv",
  2410: " 32I[N.Q1S4U8V=VCUITMQXP\\ObOgPlQoSs RQ1S5T8U=UBTHSLPWO[NaNgOlQpSsVv",
  2411: ' 147Z:RARRo R@RQo R?RRr RZ"VJRr',
  2412: " 57Ca].\\.[/[0\\1]1^0^.],[+Y+W,U.T0S3R:QJQjPsOv R\\/\\0]0]/\\/ RR:Rj RU.T1S:SZRjQqPtOvMxKyIyGxFvFtGsHsItIuHvGv RGtGuHuHtGt",
  2501: " 20H\\RFJ[ RRIK[J[ RRIY[Z[ RRFZ[ RMUWU RLVXV",
  2502: " 44H\\LFL[ RMGMZ RLFTFWGXHYJYMXOWPTQ RMGTGWHXJXMWOTP RMPTPWQXRYTYWXYWZT[L[ RMQTQWRXTXWWYTZMZ",
  2503: " 38H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZV RZKYKXIWHUGQGOHMKLNLSMVOYQZUZWYXXYVZV",
  2504: " 32H]LFL[ RMGMZ RLFSFVGXIYKZNZSYVXXVZS[L[ RMGSGVHWIXKYNYSXVWXVYSZMZ",
  2505: " 27I\\MFM[ RNGNZ RMFYF RNGYGYF RNPTPTQ RNQTQ RNZYZY[ RM[Y[",
  2506: " 21I[MFM[ RNGN[M[ RMFYF RNGYGYF RNPTPTQ RNQTQ",
  2507: " 44H]ZKYIWGUFQFOGMILKKNKSLVMXOZQ[U[WZYXZVZRUR RZKYKXIWHUGQGOHNIMKLNLSMVNXOYQZUZWYXXYVYSUSUR",
  2508: " 22G]KFK[ RKFLFL[K[ RYFXFX[Y[ RYFY[ RLPXP RLQXQ",
  2509: "  8NWRFR[S[ RRFSFS[",
  2510: " 20J[VFVVUYSZQZOYNVMV RVFWFWVVYUZS[Q[OZNYMV",
  2511: " 22H]LFL[M[ RLFMFM[ RZFYFMR RZFMS RPOY[Z[ RQOZ[",
  2512: " 14IZMFM[ RMFNFNZ RNZYZY[ RM[Y[",
  2513: " 26F^JFJ[ RKKK[J[ RKKR[ RJFRX RZFRX RYKR[ RYKY[Z[ RZFZ[",
  2514: " 20G]KFK[ RLIL[K[ RLIY[ RKFXX RXFXX RXFYFY[",
  2515: " 40G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RQGNHLKKNKSLVNYQZSZVYXVYSYNXKVHSGQG",
  2516: " 27H\\LFL[ RMGM[L[ RLFUFWGXHYJYMXOWPUQMQ RMGUGWHXJXMWOUPMP",
  2517: " 48G]PFNGLIKKJNJSKVLXNZP[T[VZXXYVZSZNYKXIVGTFPF RQGNHLKKNKSLVNYQZSZVYXVYSYNXKVHSGQG RSXX]Y] RSXTXY]",
  2518: " 34H\\LFL[ RMGM[L[ RLFTFWGXHYJYMXOWPTQMQ RMGTGWHXJXMWOTPMP RRQX[Y[ RSQY[",
  2519: " 43H\\YIWGTFPFMGKIKKLMMNOOTQVRWSXUXXWYTZPZNYMXKX RYIWIVHTGPGMHLILKMMONTPVQXSYUYXWZT[P[MZKX",
  2520: " 15J[RGR[ RSGS[R[ RLFYFYG RLFLGYG",
  2521: " 24G]KFKULXNZQ[S[VZXXYUYF RKFLFLUMXNYQZSZVYWXXUXFYF",
  2522: " 14H\\JFR[ RJFKFRX RZFYFRX RZFR[",
  2523: " 26E_GFM[ RGFHFMX RRFMX RRIM[ RRIW[ RRFWX R]F\\FWX R]FW[",
  2524: " 16H\\KFX[Y[ RKFLFY[ RYFXFK[ RYFL[K[",
  2525: " 17I\\KFRPR[S[ RKFLFSP RZFYFRP RZFSPS[",
  2526: " 20H\\XFK[ RYFL[ RKFYF RKFKGXG RLZYZY[ RK[Y[",
  2551: " 38E\\XFVHTKQPOSLWIZG[E[DZDXEWFXEY RXFWJUTT[ RXFU[ RT[TYSVRTPRNQLQKRKTLWOZR[V[XZ",
  2552: " 70F^UGTHSJQOOUNWLZJ[ RTHSKQSPVOXMZJ[H[GZGXHWIXHY ROLNNMOKOJNJLKJMHOGRFXFZG[I[KZMXNTORO RXFYGZIZKYMXN RTOWPXQYSYVXYWZU[S[RZRXSU RTOVPWQXSXVWYU[",
  2553: " 41H]KHJJJLKNNOQOUNWMYKZIZGYFWFTGQJOMMQLULXMZP[R[UZWXXVXTWRURSSRU RWFUGRJPMNQMUMXNZP[",
  2554: " 43F]UGTHSJQOOUNWLZJ[ RTHSKQSPVOXMZJ[H[GZGXHWJWLXNZP[S[UZWXYTZOZLYIWGUFPFMGKIJKJMKNMNNMOK",
  2555: " 49I\\WIVJVLWMYMZKZIYGWFTFRGQHPJPLQNSO RTFRHQJQMSO RSOQONPLRKTKWLYMZO[R[UZWXXVXTWRURSSRU RQOOPMRLTLXMZ",
  2556: " 46G\\WHVJTORUQWOZM[ RQLPNNOLOKMKKLINGQF[FXGWHVKTSSVRXPZM[K[IZHYHXIWJXIY RSFWGXG ROSPRRQVQXPZMXT",
  2557: " 53G]JIIKIMJOLPOPROTNWKXHXGWFVFTGRIQKPNPQQSSTUTWSYQZO RWFUGSIRKQNQRST RZOYSWWUYSZO[L[JZIXIWJVKWJX RYSWVUXRZO[",
  2558: " 55F^LLKKKILGOFRFOQMWLYKZI[G[FZFXGWHXGY RRFOONRLWKYI[ RJTKSMRVOXN[L]J^H^G]F\\FZGXJWLURTVTYV[W[YZ[X R\\FZHXLVRUVUYV[",
  2559: " 33IYWHUKSPQUPWNZL[ RYLWNTOQOONNLNJOHQGUFYFWHVJTPRVQXOZL[J[IZIXJWKXJY",
  2560: " 34IZYFWHUKSPPYN] RYMWOTPQPOONMNKOIQGUFYFWIVKSTQXPZN]M^K_J^J\\KZMXOWRVVU",
  2561: " 59F^LLKKKIMGPFRFOQMWLYKZI[G[FZFXGWHXGY RRFOONRLWKYI[ RZGWKUMSNPO R]G\\H]I^H^G]F\\FZGWLVMTNPO RPOSPTRUYV[ RPORPSRTYV[W[YZ[X",
  2562: " 40I[MILKLMMOOPRPUOWNZK[H[GZFYFWGVHTKPUOWMZK[ RVHTLRSQVPXNZK[I[HZHXIWKWMXPZR[U[WZYX",
  2563: " 49D`RFNOKUIXGZE[C[BZBXCWDXCY RRFPMOQNVNZP[ RRFQJPOOVOZP[ R[FWORXP[ R[FYMXQWVWZY[Z[\\Z^X R[FZJYOXVXZY[",
  2564: " 38G^RFQJOPMULWJZH[F[EZEXFWGXFY RRFRKSVT[ RRFSKTVT[ R`G_H`IaHaG`F^F\\GZJYLWQUWT[",
  2565: " 34H]SFQGOIMLLNKRKVLYMZO[Q[TZVXXUYSZOZKYHXGWGUHSJQNPSPV RQGOJMNLRLVMYO[",
  2566: " 53F]UGTHSJQOOUNWLZJ[ RTHSKQSPVOXMZJ[H[GZGXHWIXHY ROLNNMOKOJNJLKJMHOGRFVFYGZH[J[MZOYPVQTQRP RVFXGYHZJZMYOXPVQ",
  2567: " 43H]UJULTNSOQPOPNNNLOIQGTFWFYGZIZMYPWSSWPYNZK[I[HZHXIWKWMXPZS[V[XZZX RWFXGYIYMXPVSSVOYK[",
  2568: " 65F^UGTHSJQOOUNWLZJ[ RTHSKQSPVOXMZJ[H[GZGXHWIXHY ROLNNMOKOJNJLKJMHOGRFWFZG[I[KZMYNVORO RWFYGZIZKYMXNVO RROUPVRWYX[ RROTPURVYX[Y[[Z]X",
  2569: " 36H\\NIMKMMNOPPSPVOXN[K\\H\\G[FZFXGWHVJUMSTRWPZN[ RVJUNTUSXQZN[K[IZHXHWIVJWIX",
  2570: " 38I[YHXJVOTUSWQZO[ RSLRNPONOMMMKNIPGSF\\FZGYHXKVSUVTXRZO[M[KZJYJXKWLXKY RUFYGZG",
  2571: " 39G]HJJGLFMFOHOKNNKVKYL[ RMFNHNKKSJVJYL[N[PZSWUTVR RZFVRUVUYW[X[ZZ\\X R[FWRVVVYW[",
  2572: " 36G\\HJJGLFMFOHOKNOLVLYM[ RMFNHNKLRKVKYM[N[QZTWVTXPYMZIZGYFXFWGVIVLWNYP[Q]Q",
  2573: " 41F]ILHLGKGIHGJFNFMHLLKUJ[ RLLLUK[ RVFTHRLOUMYK[ RVFUHTLSUR[ RTLTUS[ R`F^G\\IZLWUUYS[",
  2574: " 52H\\PKOLMLLKLIMGOFQFSGTITLSPQUOXMZJ[H[GZGXHWIXHY RQFRGSISLRPPUNXLZJ[ R]G\\H]I^H^G]F[FYGWIULSPRURXSZT[U[WZYX",
  2575: " 42G]JJLGNFOFQGQIOOORPT ROFPGPINONRPTRTUSWQYNZL R\\FZLWTUX R]F[LYQWUUXSZP[L[JZIXIWJVKWJX",
  2576: " 44G\\ZHYJWOVRUTSWQYOZL[ RSLRNPONOMMMKNIPGSF]F[GZHYKXOVUTXQZL[H[GZGXHWJWLXOZQ[T[WZYX RVFZG[G",
  2601: " 36H\\WMW[X[ RWMXMX[ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX",
  2602: " 36H\\LFL[M[ RLFMFM[ RMPONQMTMVNXPYSYUXXVZT[Q[OZMX RMPQNTNVOWPXSXUWXVYTZQZMX",
  2603: " 32I[XPVNTMQMONMPLSLUMXOZQ[T[VZXX RXPWQVOTNQNOONPMSMUNXOYQZTZVYWWXX",
  2604: " 36H\\WFW[X[ RWFXFX[ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX",
  2605: " 36I[MTXTXQWOVNTMQMONMPLSLUMXOZQ[T[VZXX RMSWSWQVOTNQNOONPMSMUNXOYQZTZVYWWXX",
  2606: " 24LZWFUFSGRJR[S[ RWFWGUGSH RTGSJS[ ROMVMVN ROMONVN",
  2607: " 48H\\XMWMW\\V_U`SaQaO`N_L_ RXMX\\W_UaSbPbNaL_ RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX",
  2608: " 25H\\LFL[M[ RLFMFM[ RMQPNRMUMWNXQX[ RMQPORNTNVOWQW[X[",
  2609: " 24NWRFQGQHRISITHTGSFRF RRGRHSHSGRG RRMR[S[ RRMSMS[",
  2610: " 24NWRFQGQHRISITHTGSFRF RRGRHSHSGRG RRMRbSb RRMSMSb",
  2611: " 22H[LFL[M[ RLFMFM[ RXMWMMW RXMMX RPTV[X[ RQSX[",
  2612: "  8NWRFR[S[ RRFSFS[",
  2613: " 42CbGMG[H[ RGMHMH[ RHQKNMMPMRNSQS[ RHQKOMNONQORQR[S[ RSQVNXM[M]N^Q^[ RSQVOXNZN\\O]Q][^[",
  2614: " 25H\\LML[M[ RLMMMM[ RMQPNRMUMWNXQX[ RMQPORNTNVOWQW[X[",
  2615: " 36I\\QMONMPLSLUMXOZQ[T[VZXXYUYSXPVNTMQM RQNOONPMSMUNXOYQZTZVYWXXUXSWPVOTNQN",
  2616: " 36H\\LMLbMb RLMMMMb RMPONQMTMVNXPYSYUXXVZT[Q[OZMX RMPQNTNVOWPXSXUWXVYTZQZMX",
  2617: " 36H\\WMWbXb RWMXMXb RWPUNSMPMNNLPKSKULXNZP[S[UZWX RWPSNPNNOMPLSLUMXNYPZSZWX",
  2618: " 21KYOMO[P[ ROMPMP[ RPSQPSNUMXM RPSQQSOUNXNXM",
  2619: " 50J[XPWNTMQMNNMPNRPSUUWV RVUWWWXVZ RWYTZQZNY ROZNXMX RXPWPVN RWOTNQNNO RONNPOR RNQPRUTWUXWXXWZT[Q[NZMX",
  2620: " 16MXRFR[S[ RRFSFS[ ROMVMVN ROMONVN",
  2621: " 25H\\LMLWMZO[R[TZWW RLMMMMWNYPZRZTYWW RWMW[X[ RWMXMX[",
  2622: " 14JZLMR[ RLMMMRY RXMWMRY RXMR[",
  2623: " 26F^IMN[ RIMJMNX RRMNX RRPN[ RRPV[ RRMVX R[MZMVX R[MV[",
  2624: " 16I[LMW[X[ RLMMMX[ RXMWML[ RXMM[L[",
  2625: " 17JZLMR[ RLMMMRY RXMWMRYNb RXMR[ObNb",
  2626: " 20I[VNL[ RXMNZ RLMXM RLMLNVN RNZXZX[ RL[X[",
  2651: " 33K[UUTSRRPRNSMTLVLXMZO[Q[SZTX RPRNTMVMYO[ RVRTXTZV[XZYY[V RWRUXUZV[",
  2652: " 23LZLVNSPO RSFMXMZO[P[RZTXUUURVVWWXWZV RTFNXNZO[",
  2653: " 22LXTSSTTTTSSRQROSNTMVMXNZP[S[VYXV RQROTNVNYP[",
  2654: " 33K[UUTSRRPRNSMTLVLXMZO[Q[SZTX RPRNTMVMYO[ RZFTXTZV[XZYY[V R[FUXUZV[",
  2655: " 23LXOYQXRWSUSSRRQROSNTMVMXNZP[S[VYXV RQROTNVNYP[",
  2656: " 27OXRRUOWLXIXGWFUGTIKdKfLgNfOcPZQ[S[UZVYXV RTISNRRO[M`Kd",
  2657: " 38K[UUTSRRPRNSMTLVLXMZO[Q[SZTX RPRNTMVMYO[ RVRPd RWRT[R`PdOfMgLfLdMaO_R]V[YY[V",
  2658: " 30L[LVNSPO RSFL[ RTFM[ ROUQSSRTRVSVUUXUZV[ RTRUSUUTXTZV[XZYY[V",
  2659: " 19NVSLRMSNTMSL RQROXOZQ[SZTYVV RRRPXPZQ[",
  2660: " 24NVSLRMSNTMSL RQRKd RRRO[M`KdJfHgGfGdHaJ_M]Q[TYVV",
  2661: " 31LZLVNSPO RSFL[ RTFM[ RURUSVSURTRRTOU ROURVSZT[ ROUQVRZT[U[XYZV",
  2662: " 17NVNVPSRO RUFOXOZQ[SZTYVV RVFPXPZQ[",
  2663: " 45E^EVGSIRKSKUI[ RIRJSJUH[ RKUMSORPRRSRUP[ RPRQSQUO[ RRUTSVRWRYSYUXXXZY[ RWRXSXUWXWZY[[Z\\Y^V",
  2664: " 32I[IVKSMROSOUM[ RMRNSNUL[ ROUQSSRTRVSVUUXUZV[ RTRUSUUTXTZV[XZYY[V",
  2665: " 29KYRRPRNSMTLVLXMZO[Q[SZTYUWUUTSRRQSQURWTXVXXWYV RPRNTMVMYO[",
  2666: " 30L[LVNSPO RQLHg RRLIg ROUQSSRTRVSVUUXUZV[ RTRUSUUTXTZV[XZYY[V",
  2667: " 35K[UUTSRRPRNSMTLVLXMZO[Q[SZ RPRNTMVMYO[ RVRPdPfQgSfTcT[V[YY[V RWRT[R`Pd",
  2668: " 24LZLVNSPRRSRUP[ RPRQSQUO[ RRUTSVRWRVU RVRVUWWXWZV",
  2669: " 22NZNVPSQQQSTUUWUYTZR[ RQSSUTWTYR[ RNZP[U[XYZV",
  2670: " 20NVNVPSRO RUFOXOZQ[SZTYVV RVFPXPZQ[ RPNVN",
  2671: " 27K[NRLXLZN[O[QZSXUU RORMXMZN[ RVRTXTZV[XZYY[V RWRUXUZV[",
  2672: " 23KZNRMTLWLZN[O[RZTXUUUR RORNTMWMZN[ RURVVWWXWZV",
  2673: " 36H]LRJTIWIZK[L[NZPX RMRKTJWJZK[ RRRPXPZR[S[UZWXXUXR RSRQXQZR[ RXRYVZW[W]V",
  2674: " 42JZJVLSNRPRQSQUPXOZM[L[KZKYLYKZ RWSVTWTWSVRURSSRUQXQZR[U[XYZV RQSRU RSSQU RPXQZ RQXOZ",
  2675: " 32K[NRLXLZN[O[QZSXUU RORMXMZN[ RVRPd RWRT[R`PdOfMgLfLdMaO_R]V[YY[V",
  2676: " 38LYLVNSPRRRTSTVSXPZN[ RRRSSSVRXPZ RN[P\\Q^QaPdNfLgKfKdLaO^R\\VYYV RN[O\\P^PaOdNf",
  2700: " 42H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF ROGMJLOLRMWOZ RNYQZSZVY RUZWWXRXOWJUG RVHSGQGNH",
  2701: " 12H\\NJPISFS[ RNJNKPJRHR[S[",
  2702: " 34H\\LKLJMHNGPFTFVGWHXJXLWNUQL[ RLKMKMJNHPGTGVHWJWLVNTQK[ RLZYZY[ RK[Y[",
  2703: " 48H\\MFXFQO RMFMGWG RWFPO RQNSNVOXQYTYUXXVZS[P[MZLYKWLW RPOSOVPXS RTOWQXTXUWXTZ RXVVYSZPZMYLW ROZLX",
  2704: " 18H\\UIU[V[ RVFV[ RVFKVZV RUILV RLUZUZV",
  2705: " 53H\\MFLO RNGMN RMFWFWG RNGWG RMNPMSMVNXPYSYUXXVZS[P[MZLYKWLW RLOMOONSNVOXR RTNWPXSXUWXTZ RXVVYSZPZMYLW ROZLX",
  2706: " 62H\\VGWIXIWGTFRFOGMJLOLTMXOZR[S[VZXXYUYTXQVOSNRNOOMQ RWHTGRGOH RPGNJMOMTNXQZ RMVOYRZSZVYXV RTZWXXUXTWQTO RXSVPSOROOPMS RQONQMT",
  2707: " 12H\\KFYFO[ RKFKGXG RXFN[O[",
  2708: " 68H\\PFMGLILKMMNNPOTPVQWRXTXWWYTZPZMYLWLTMRNQPPTOVNWMXKXIWGTFPF RNGMIMKNMPNTOVPXRYTYWXYWZT[P[MZLYKWKTLRNPPOTNVMWKWIVG RWHTGPGMH RLXOZ RUZXX",
  2709: " 62H\\WPURRSQSNRLPKMKLLINGQFRFUGWIXMXRWWUZR[P[MZLXMXNZ RWMVPSR RWNUQRRQRNQLN RPRMPLMLLMIPG RLKNHQGRGUHWK RSGVIWMWRVWTZ RUYRZPZMY",
  2710: " 16MXRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  2711: " 24MXTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^",
  2712: " 32MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  2713: " 40MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^",
  2714: " 24MXRFRTST RRFSFST RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  2715: " 58I\\LKLJMHNGQFTFWGXHYJYLXNWOUPRQ RLKMKMJNHQGTGWHXJXLWNUORP RMIPG RUGXI RXMTP RRPRTSTSP RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  2716: " 24MXTFRGQIQLRMSMTLTKSJRJQK RRKRLSLSKRK RRGQK RQIRJ",
  2717: " 24MXTHSIRIQHQGRFSFTGTJSLQM RRGRHSHSGRG RSITJ RTHSL",
  2718: " 71F_\\MZMXNWPUVTXSYQZMZKYJWJUKSLRQOSMTKTISGQFPFNGMIMKNNPQUWXZZ[\\[ R\\M\\NZNXO RYNXPVVUXSZQ[M[KZJYIWIUJSLQQNRMSKSIRG RSHQGPGNH ROGNINKONQQVWXYZZ\\Z\\[",
  2719: " 51I\\RBR_S_ RRBSBS_ RWIYIWGTFQFNGLILKMMNNVRWSXUXWWYTZQZOYNX RWIVHTGQGNHMIMKNMVQXSYUYWXYWZT[Q[NZLXNX RXXUZ",
  2720: "  8G^[BIbJb R[B\\BJb",
  2721: " 24KYUBSDQGOKNPNTOYQ]S`UbVb RUBVBTDRGPKOPOTPYR]T`Vb",
  2722: " 24KYNBPDRGTKUPUTTYR]P`NbOb RNBOBQDSGUKVPVTUYS]Q`Ob",
  2723: " 39JZRFQGSQRR RRFRR RRFSGQQRR RMINIVOWO RMIWO RMIMJWNWO RWIVINOMO RWIMO RWIWJMNMO",
  2724: "  8F_JQ[Q[R RJQJR[R",
  2725: " 16F_RIRZSZ RRISISZ RJQ[Q[R RJQJR[R",
  2726: " 16F_JM[M[N RJMJN[N RJU[U[V RJUJV[V",
  2727: " 11NWSFRGRM RSGRM RSFTGRM",
  2728: " 22I[NFMGMM RNGMM RNFOGMM RWFVGVM RWGVM RWFXGVM",
  2729: " 30KYQFOGNINKOMQNSNUMVKVIUGSFQF RQFNIOMSNVKUGQF RSFOGNKQNUMVISF",
  2750: " 42H]TFQGOIMLLOKSKVLYMZO[Q[TZVXXUYRZNZKYHXGVFTF RTFRGPINLMOLSLVMYO[ RQ[SZUXWUXRYNYKXHVF",
  2751: " 15H]TJO[ RVFP[ RVFSIPKNL RUIQKNL",
  2752: " 42H]OJPKOLNKNJOHPGSFVFYGZIZKYMWOTQPSMUKWI[ RVFXGYIYKXMVOPS RJYKXMXRZUZWYXW RMXR[U[WZXW",
  2753: " 50H]OJPKOLNKNJOHPGSFVFYGZIZKYMVOSP RVFXGYIYKXMVO RQPSPVQWRXTXWWYVZS[O[LZKYJWJVKULVKW RSPUQVRWTWWVYUZS[",
  2754: " 10H]XGR[ RYFS[ RYFJUZU",
  2755: " 39H]QFLP RQF[F RQGVG[F RLPMOPNSNVOWPXRXUWXUZR[O[LZKYJWJVKULVKW RSNUOVPWRWUVXTZR[",
  2756: " 46H]YIXJYKZJZIYGWFTFQGOIMLLOKSKWLYMZO[R[UZWXXVXSWQVPTOQOOPMRLT RTFRGPINLMOLSLXMZ RR[TZVXWVWRVP",
  2757: " 30H]NFLL R[FZIXLSRQUPWO[ RXLRRPUOWN[ RMIPFRFWI RNHPGRGWIYIZH[F",
  2758: " 63H]SFPGOHNJNMOOQPTPXOYNZLZIYGVFSF RSFQGPHOJOMPOQP RTPWOXNYLYIXGVF RQPMQKSJUJXKZN[R[VZWYXWXTWRVQTP RQPNQLSKUKXLZN[ RR[UZVYWWWSVQ",
  2759: " 46H]YMXOVQTRQROQNPMNMKNIPGSFVFXGYHZJZNYRXUVXTZQ[N[LZKXKWLVMWLX ROQNONKOIQGSF RXGYIYNXRWUUXSZQ[",
  2760: "  6MXPYOZP[QZPY",
  2761: "  8MXP[OZPYQZQ[P]N_",
  2762: " 11MXSMRNSOTNSM RPYOZP[QZ",
  2763: " 14MXSMRNSOTNSM RP[OZPYQZQ[P]N_",
  2764: " 17MXUFTGRS RUGRS RUFVGRS RPYOZP[QZPY",
  2765: " 34H]OJPKOLNKNJOHPGSFWFZG[I[KZMYNSPQQQSRTTT RWFYGZIZKYMXNVO RPYOZP[QZPY",
  2766: "  8MXVFTHSJSKTLUKTJ",
  2767: "  8MXUHTGUFVGVHUJSL",
  2768: " 55E_\\N[O\\P]O]N\\M[MYNWPRXPZN[K[HZGXGVHTISKRPPROTMUKUITGRFPGOIOLPRQUSXUZW[Y[ZYZX RK[IZHXHVITJSPP ROLPQQTSWUYWZYZZY",
  2769: " 41H]TBL_ RYBQ_ RZJYKZL[K[JZHYGVFRFOGMIMKNMONVRXT RMKOMVQWRXTXWWYVZS[O[LZKYJWJVKULVKW",
  2770: "  3G]_BEb",
  2771: " 20KZZBVESHQKOONTNXO]P`Qb RVESIQMPPOUOZP_Qb",
  2772: " 20JYSBTDUGVLVPUUSYQ\\N_Jb RSBTEUJUOTTSWQ[N_",
  2773: "  9J[TFTR ROIYO RYIOO",
  2774: "  3E_IR[R",
  2775: "  6E_RIR[ RIR[R",
  2776: "  6E_IO[O RIU[U",
  2777: "  6NWUFSM RVFSM",
  2778: " 12I[PFNM RQFNM RYFWM RZFWM",
  2779: " 14KZSFQGPIPKQMSNUNWMXKXIWGUFSF",
  2801: " 18H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[",
  2802: " 31G]LFL[ RMFM[ RIFYFYLXF RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
  2803: " 45G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
  2804: " 14I[NFN[ ROFO[ RKFZFZLYF RK[R[",
  2805: " 31F^NFNLMTLXKZJ[ RXFX[ RYFY[ RKF\\F RG[\\[ RG[Gb RH[Gb R[[\\b R\\[\\b",
  2806: " 22G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[",
  2807: " 71CbRFR[ RSFS[ ROFVF RGGHHGIFHFGGFHFIGJIKMLONPWPYOZM[I\\G]F^F_G_H^I]H^G RNPLQKSJXIZH[ RNPMQLSKXJZI[G[FZEX RWPYQZS[X\\Z][ RWPXQYSZX[Z\\[^[_Z`X RO[V[",
  2808: " 45H\\LIKFKLLINGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[O[MZLYKWKVLUMVLW RWQXTXWWYVZT[",
  2809: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[",
  2810: " 37F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[ RN@N?M?M@NBPCTCVBW@",
  2811: " 43F^KFK[ RLFL[ RHFOF RLPSPUOVMWIXGYFZF[G[HZIYHZG RSPUQVSWXXZY[ RSPTQUSVXWZX[Z[[Z\\X RH[O[",
  2812: " 25E^MFMLLTKXJZI[H[GZGYHXIYHZ RXFX[ RYFY[ RJF\\F RU[\\[",
  2813: " 30F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][",
  2814: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[",
  2815: " 44G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF",
  2816: " 21F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[",
  2817: " 29G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[",
  2818: " 32G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[",
  2819: " 16I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[",
  2820: " 24H]KFRV RLFSV RZFSVQYPZN[M[LZLYMXNYMZ RIFOF RVF\\F",
  2821: " 48F_RFR[ RSFS[ ROFVF RPILJJLIOIRJULWPXUXYW[U\\R\\O[LYJUIPI RPIMJKLJOJRKUMWPX RUXXWZU[R[OZLXJUI RO[V[",
  2822: " 21H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[",
  2823: " 27F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RH[\\[ R[[\\b R\\[\\b",
  2824: " 28F]KFKQLSOTRTUSWQ RLFLQMSOT RWFW[ RXFX[ RHFOF RTF[F RT[[[",
  2825: " 30BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[",
  2826: " 36BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[ R`[ab Ra[ab",
  2827: " 31F`PFP[ RQFQ[ RIFHLHFTF RQPXP[Q\\R]T]W\\Y[ZX[M[ RXPZQ[R\\T\\W[YZZX[",
  2828: " 41CaHFH[ RIFI[ REFLF RIPPPSQTRUTUWTYSZP[E[ RPPRQSRTTTWSYRZP[ R[F[[ R\\F\\[ RXF_F RX[_[",
  2829: " 29H]MFM[ RNFN[ RJFQF RNPUPXQYRZTZWYYXZU[J[ RUPWQXRYTYWXYWZU[",
  2830: " 39H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP",
  2831: " 59CbHFH[ RIFI[ REFLF RE[L[ RVFSGQIPKOOORPVQXSZV[X[[Z]X^V_R_O^K]I[GXFVF RVFTGRIQKPOPRQVRXTZV[ RX[ZZ\\X]V^R^O]K\\IZGXF RIPOP",
  2832: " 45G]WFW[ RXFX[ R[FOFLGKHJJJLKNLOOPWP ROFMGLHKJKLLNMOOP RRPPQORLYKZJZIY RPQOSMZL[J[IYIX RT[[[",
  2901: " 39I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[",
  2902: " 48H\\XFWGQINKLNKQKULXNZQ[S[VZXXYUYSXPVNSMQMNNLPKS RXFWHUIQJNLLN RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM",
  2903: " 37H\\MMM[ RNMN[ RJMUMXNYPYQXSUT RUMWNXPXQWSUT RNTUTXUYWYXXZU[J[ RUTWUXWXXWZU[",
  2904: " 14HZMMM[ RNMN[ RJMXMXRWM RJ[Q[",
  2905: " 22F]NMNQMWLZK[ RWMW[ RXMX[ RKM[M RI[H`H[[[[`Z[",
  2906: " 31H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[",
  2907: " 59E`RMR[ RSMS[ ROMVM RJNIOHNIMJMKNMRNSPTUTWSXRZN[M\\M]N\\O[N RPTNUMVKZJ[ RPTNVLZK[I[HZGX RUTWUXVZZ[[ RUTWVYZZ[\\[]Z^X RO[V[",
  2908: " 42I[MOLMLQMONNPMTMWNXPXQWSTT RTMVNWPWQVSTT RQTTTWUXWXXWZT[P[MZLXLWMVNWMX RTTVUWWWXVZT[",
  2909: " 27G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ",
  2910: " 37G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ ROGOFNFNGOIQJSJUIVG",
  2911: " 38H\\MMM[ RNMN[ RJMQM RNTPTSSTRVNWMXMYNXOWN RPTSUTVVZW[ RPTRUSVUZV[X[YZZX RJ[Q[",
  2912: " 22G]NMNQMWLZK[J[IZJYKZ RWMW[ RXMX[ RKM[M RT[[[",
  2913: " 30G^LML[ RLMR[ RMMRY RXMR[ RXMX[ RYMY[ RIMMM RXM\\M RI[O[ RU[\\[",
  2914: " 27G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RMTWT RI[P[ RT[[[",
  2915: " 36H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM",
  2916: " 21G]LML[ RMMM[ RWMW[ RXMX[ RIM[M RI[P[ RT[[[",
  2917: " 36G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb",
  2918: " 28H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[",
  2919: " 16I\\RMR[ RSMS[ RMMLRLMYMYRXM RO[V[",
  2920: " 22I[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM",
  2921: " 52H]RFRb RSFSb ROFSF RRPQNPMNMLNKQKWLZN[P[QZRX RNMMNLQLWMZN[ RWMXNYQYWXZW[ RSPTNUMWMYNZQZWYZW[U[TZSX RObVb",
  2922: " 21H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[",
  2923: " 23G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[[[[`Z[",
  2924: " 28G]LMLTMVPWRWUVWT RMMMTNVPW RWMW[ RXMX[ RIMPM RTM[M RT[[[",
  2925: " 30CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[",
  2926: " 32CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[``_[",
  2927: " 27H]QMQ[ RRMR[ RLMKRKMUM RRTVTYUZWZXYZV[N[ RVTXUYWYXXZV[",
  2928: " 37E_JMJ[ RKMK[ RGMNM RKTOTRUSWSXRZO[G[ ROTQURWRXQZO[ RYMY[ RZMZ[ RVM]M RV[][",
  2929: " 25J[OMO[ RPMP[ RLMSM RPTTTWUXWXXWZT[L[ RTTVUWWWXVZT[",
  2930: " 34I\\MOLMLQMONNPMSMVNXPYSYUXXVZS[P[NZLXLWMVNWMX RSMUNWPXSXUWXUZS[ RRTXT",
  2931: " 51DaIMI[ RJMJ[ RFMMM RF[M[ RVMSNQPPSPUQXSZV[X[[Z]X^U^S]P[NXMVM RVMTNRPQSQURXTZV[ RX[ZZ\\X]U]S\\PZNXM RJTPT",
  2932: " 40G\\VMV[ RWMW[ RZMOMLNKPKQLSOTVT ROMMNLPLQMSOT RTTQUPVNZM[ RTTRUQVOZN[L[KZJX RS[Z[",
  3001: " 36H\\RFKZ RQIW[ RRIX[ RRFY[ RMUVU RI[O[ RT[[[ RKZJ[ RKZM[ RWZU[ RWYV[ RXYZ[",
  3002: " 78G]LFL[ RMGMZ RNFN[ RIFUFXGYHZJZLYNXOUP RXHYJYLXN RUFWGXIXMWOUP RNPUPXQYRZTZWYYXZU[I[ RXRYTYWXY RUPWQXSXXWZU[ RJFLG RKFLH ROFNH RPFNG RLZJ[ RLYK[ RNYO[ RNZP[",
  3003: " 37G\\XIYFYLXIVGTFQFNGLIKKJNJSKVLXNZQ[T[VZXXYV RMILKKNKSLVMX RQFOGMJLNLSMWOZQ[",
  3004: " 62G]LFL[ RMGMZ RNFN[ RIFSFVGXIYKZNZSYVXXVZS[I[ RWIXKYNYSXVWX RSFUGWJXNXSWWUZS[ RJFLG RKFLH ROFNH RPFNG RLZJ[ RLYK[ RNYO[ RNZP[",
  3005: " 83G\\LFL[ RMGMZ RNFN[ RIFYFYL RNPTP RTLTT RI[Y[YU RJFLG RKFLH ROFNH RPFNG RTFYG RVFYH RWFYI RXFYL RTLSPTT RTNRPTR RTOPPTQ RLZJ[ RLYK[ RNYO[ RNZP[ RT[YZ RV[YY RW[YX RX[YU",
  3006: " 70G[LFL[ RMGMZ RNFN[ RIFYFYL RNPTP RTLTT RI[Q[ RJFLG RKFLH ROFNH RPFNG RTFYG RVFYH RWFYI RXFYL RTLSPTT RTNRPTR RTOPPTQ RLZJ[ RLYK[ RNYO[ RNZP[",
  3007: " 60G^XIYFYLXIVGTFQFNGLIKKJNJSKVLXNZQ[T[VZXZY[YS RMILKKNKSLVMX RQFOGMJLNLSMWOZQ[ RXTXY RWSWYVZ RTS\\S RUSWT RVSWU RZSYU R[SYT",
  3008: " 81F^KFK[ RLGLZ RMFM[ RWFW[ RXGXZ RYFY[ RHFPF RTF\\F RMPWP RH[P[ RT[\\[ RIFKG RJFKH RNFMH ROFMG RUFWG RVFWH RZFYH R[FYG RKZI[ RKYJ[ RMYN[ RMZO[ RWZU[ RWYV[ RYYZ[ RYZ[[",
  3009: " 39LXQFQ[ RRGRZ RSFS[ RNFVF RN[V[ ROFQG RPFQH RTFSH RUFSG RQZO[ RQYP[ RSYT[ RSZU[",
  3010: " 45JYSFSWRZQ[ RTGTWSZ RUFUWTZQ[O[MZLXLVMUNUOVOWNXMX RMVMWNWNVMV RPFXF RQFSG RRFSH RVFUH RWFUG",
  3011: " 69F\\KFK[ RLGLZ RMFM[ RXGMR RPPW[ RQPX[ RQNY[ RHFPF RUF[F RH[P[ RT[[[ RIFKG RJFKH RNFMH ROFMG RWFXG RZFXG RKZI[ RKYJ[ RMYN[ RMZO[ RWYU[ RWYZ[",
  3012: " 52I[NFN[ ROGOZ RPFP[ RKFSF RK[Z[ZU RLFNG RMFNH RQFPH RRFPG RNZL[ RNYM[ RPYQ[ RPZR[ RU[ZZ RW[ZY RX[ZX RY[ZU",
  3013: " 63E_JFJZ RJFQ[ RKFQX RLFRX RXFQ[ RXFX[ RYGYZ RZFZ[ RGFLF RXF]F RG[M[ RU[][ RHFJG R[FZH R\\FZG RJZH[ RJZL[ RXZV[ RXYW[ RZY[[ RZZ\\[",
  3014: " 39F^KFKZ RKFY[ RLFXX RMFYX RYGY[ RHFMF RVF\\F RH[N[ RIFKG RWFYG R[FYG RKZI[ RKZM[",
  3015: " 54G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RMILKKNKSLVMX RWXXVYSYNXKWI RQFOGMJLNLSMWOZQ[ RS[UZWWXSXNWJUGSF",
  3016: " 59G]LFL[ RMGMZ RNFN[ RIFUFXGYHZJZMYOXPUQNQ RXHYJYMXO RUFWGXIXNWPUQ RI[Q[ RJFLG RKFLH ROFNH RPFNG RLZJ[ RLYK[ RNYO[ RNZP[",
  3017: " 77G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RMILKKNKSLVMX RWXXVYSYNXKWI RQFOGMJLNLSMWOZQ[ RS[UZWWXSXNWJUGSF RNXOVQURUTVUXV^W`Y`Z^Z\\ RV\\W^X_Y_ RUXW]X^Y^Z]",
  3018: " 80G]LFL[ RMGMZ RNFN[ RIFUFXGYHZJZLYNXOUPNP RXHYJYLXN RUFWGXIXMWOUP RRPTQUSWYX[Z[[Y[W RWWXYYZZZ RTQURXXYYZY[X RI[Q[ RJFLG RKFLH ROFNH RPFNG RLZJ[ RLYK[ RNYO[ RNZP[",
  3019: " 44H\\XIYFYLXIVGSFPFMGKIKLLNOPURWSXUXXWZ RLLMNOOUQWRXT RMGLILKMMONUPXRYTYWXYWZT[Q[NZLXKUK[LX",
  3020: " 57H\\JFJL RQFQ[ RRGRZ RSFS[ RZFZL RJFZF RN[V[ RKFJL RLFJI RMFJH ROFJG RUFZG RWFZH RXFZI RYFZL RQZO[ RQYP[ RSYT[ RSZU[",
  3021: " 45F^KFKULXNZQ[S[VZXXYUYG RLGLVMX RMFMVNYOZQ[ RHFPF RVF\\F RIFKG RJFKH RNFMH ROFMG RWFYG R[FYG",
  3022: " 34H\\KFR[ RLFRXR[ RMFSX RYGR[ RIFPF RUF[F RJFLH RNFMH ROFMG RWFYG RZFYG",
  3023: " 55F^JFN[ RKFNVN[ RLFOV RRFOVN[ RRFV[ RSFVVV[ RTFWV RZGWVV[ RGFOF RRFTF RWF]F RHFKG RIFKH RMFLH RNFLG RXFZG R\\FZG",
  3024: " 54H\\KFW[ RLFX[ RMFY[ RXGLZ RIFPF RUF[F RI[O[ RT[[[ RJFMH RNFMH ROFMG RVFXG RZFXG RLZJ[ RLZN[ RWZU[ RWYV[ RWYZ[",
  3025: " 48G]JFQQQ[ RKFRQRZ RLFSQS[ RYGSQ RHFOF RVF\\F RN[V[ RIFKG RNFLG RWFYG R[FYG RQZO[ RQYP[ RSYT[ RSZU[",
  3026: " 41H\\YFKFKL RWFK[ RXFL[ RYFM[ RK[Y[YU RLFKL RMFKI RNFKH RPFKG RT[YZ RV[YY RW[YX RX[YU",
  3051: " 38H\\UFIZ RSJT[ RTHUZ RUFUHVYV[ RLUTU RF[L[ RQ[X[ RIZG[ RIZK[ RTZR[ RTYS[ RVYW[",
  3052: " 78F^OFI[ RPFJ[ RQFK[ RLFWFZG[I[KZNYOVP RYGZIZKYNXO RWFXGYIYKXNVP RNPVPXQYSYUXXVZR[F[ RWQXSXUWXUZ RVPWRWUVXTZR[ RMFPG RNFOH RRFPH RSFPG RJZG[ RJYH[ RKYL[ RJZM[",
  3053: " 41H]ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[S[UZWXXV RQHOJNLMOLSLWMY RTFRGPJOLNOMSMXNZP[",
  3054: " 63F]OFI[ RPFJ[ RQFK[ RLFUFXGYHZKZOYSWWUYSZO[F[ RWGXHYKYOXSVWTY RUFWHXKXOWSUWRZO[ RMFPG RNFOH RRFPH RSFPG RJZG[ RJYH[ RKYL[ RJZM[",
  3055: " 80F]OFI[ RPFJ[ RQFK[ RULST RLF[FZL RNPTP RF[U[WV RMFPG RNFOH RRFPH RSFPG RWFZG RXFZH RYFZI RZFZL RULSPST RTNRPSR RTOQPSQ RJZG[ RJYH[ RKYL[ RJZM[ RP[UZ RR[UY RUYWV",
  3056: " 70F\\OFI[ RPFJ[ RQFK[ RULST RLF[FZL RNPTP RF[N[ RMFPG RNFOH RRFPH RSFPG RWFZG RXFZH RYFZI RZFZL RULSPST RTNRPSR RTOQPSQ RJZG[ RJYH[ RKYL[ RJZM[",
  3057: " 65H^ZH[H\\F[L[JZHYGWFTFQGOIMLLOKSKVLYMZP[R[UZWXYT RQHOJNLMOLSLWMY RVXWWXT RTFRGPJOLNOMSMXNZP[ RR[TZVWWT RTT\\T RUTWU RVTWW RZTXV R[TXU",
  3058: " 81E_NFH[ ROFI[ RPFJ[ RZFT[ R[FU[ R\\FV[ RKFSF RWF_F RLPXP RE[M[ RQ[Y[ RLFOG RMFNH RQFOH RRFOG RXF[G RYFZH R]F[H R^F[G RIZF[ RIYG[ RJYK[ RIZL[ RUZR[ RUYS[ RVYW[ RUZX[",
  3059: " 39KYTFN[ RUFO[ RVFP[ RQFYF RK[S[ RRFUG RSFTH RWFUH RXFUG ROZL[ ROYM[ RPYQ[ ROZR[",
  3060: " 47I\\WFRWQYO[ RXFTSSVRX RYFUSSXQZO[M[KZJXJVKULUMVMWLXKX RKVKWLWLVKV RTF\\F RUFXG RVFWH RZFXH R[FXG",
  3061: " 72F]OFI[ RPFJ[ RQFK[ R\\GMR RQOU[ RROV[ RSNWZ RLFTF RYF_F RF[N[ RR[Y[ RMFPG RNFOH RRFPH RSFPG RZF\\G R^F\\G RJZG[ RJYH[ RKYL[ RJZM[ RUZS[ RUYT[ RVYX[",
  3062: " 49H\\QFK[ RRFL[ RSFM[ RNFVF RH[W[YU ROFRG RPFQH RTFRH RUFRG RLZI[ RLYJ[ RMYN[ RLZO[ RR[WZ RT[XX RV[YU",
  3063: " 68D`MFGZ RMGNYN[ RNFOY ROFPX R[FPXN[ R[FU[ R\\FV[ R]FW[ RJFOF R[F`F RD[J[ RR[Z[ RKFMG RLFMH R^F\\H R_F\\G RGZE[ RGZI[ RVZS[ RVYT[ RWYX[ RVZY[",
  3064: " 43F_OFIZ ROFV[ RPFVX RQFWX R\\GWXV[ RLFQF RYF_F RF[L[ RMFPG RNFPH RZF\\G R^F\\G RIZG[ RIZK[",
  3065: " 56G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF ROIMLLOKSKWLY RUXWUXRYNYJXH RSFQGOJNLMOLSLXMZN[ RQ[SZUWVUWRXNXIWGVF",
  3066: " 60F]OFI[ RPFJ[ RQFK[ RLFXF[G\\I\\K[NYPUQMQ RZG[I[KZNXP RXFYGZIZKYNWPUQ RF[N[ RMFPG RNFOH RRFPH RSFPG RJZG[ RJYH[ RKYL[ RJZM[",
  3067: " 78G]SFPGNILLKOJSJVKYLZN[Q[TZVXXUYRZNZKYHXGVFSF ROIMLLOKSKWLY RUXWUXRYNYJXH RSFQGOJNLMOLSLXMZN[ RQ[SZUWVUWRXNXIWGVF RLXMVOUPURVSXT]U^V^W] RT^U_V_ RSXS_T`V`W]W\\",
  3068: " 78F^OFI[ RPFJ[ RQFK[ RLFWFZG[I[KZNYOVPNP RYGZIZKYNXO RWFXGYIYKXNVP RRPTQURWXXYYYZX RWYXZYZ RURVZW[Y[ZXZW RF[N[ RMFPG RNFOH RRFPH RSFPG RJZG[ RJYH[ RKYL[ RJZM[",
  3069: " 44G^ZH[H\\F[L[JZHYGVFRFOGMIMLNNPPVSWUWXVZ RNLONVRWT ROGNINKOMUPWRXTXWWYVZS[O[LZKYJWJUI[JYKY",
  3070: " 54G]TFN[ RUFO[ RVFP[ RMFKL R]F\\L RMF]F RK[S[ RNFKL RPFLI RRFMG RYF\\G RZF\\H R[F\\I R\\F\\L ROZL[ ROYM[ RPYQ[ ROZR[",
  3071: " 48F_NFKQJUJXKZN[R[UZWXXU\\G ROFLQKUKYLZ RPFMQLULYN[ RKFSF RYF_F RLFOG RMFNH RQFOH RRFOG RZF\\G R^F\\G",
  3072: " 35H\\NFNHOYO[ ROGPX RPFQW R[GO[ RLFSF RXF^F RMFNH RQFPH RRFOG RYF[G R]F[G",
  3073: " 57E_MFMHKYK[ RNGLX ROFMW RUFMWK[ RUFUHSYS[ RVGTX RWFUW R]GUWS[ RJFRF RUFWF RZF`F RKFNG RLFMH RPFNI RQFNG R[F]G R_F]G",
  3074: " 54G]NFT[ ROFU[ RPFV[ R[GIZ RLFSF RXF^F RF[L[ RQ[X[ RMFOH RQFPH RRFPG RYF[G R]F[G RIZG[ RIZK[ RTZR[ RTYS[ RUYW[",
  3075: " 51G]MFQPN[ RNFRPO[ ROFSPP[ R\\GSP RKFRF RYF_F RK[S[ RLFNG RPFOH RQFNG RZF\\G R^F\\G ROZL[ ROYM[ RPYQ[ ROZR[",
  3076: " 35G]ZFH[ R[FI[ R\\FJ[ R\\FNFLL RH[V[XU ROFLL RPFMI RRFNG RR[VZ RT[WX RU[XU",
  3101: " 54I]NPNOOOOQMQMONNPMTMVNWOXQXXYZZ[ RVOWQWXXZ RTMUNVPVXWZZ[[[ RVRUSPTMULWLXMZP[S[UZVX RNUMWMXNZ RUSQTOUNWNXOZP[",
  3102: " 47G\\LFL[MZOZ RMGMY RIFNFNZ RNPONQMSMVNXPYSYUXXVZS[Q[OZNX RWPXRXVWX RSMUNVOWRWVVYUZS[ RJFLG RKFLH",
  3103: " 34H[WQWPVPVRXRXPVNTMQMNNLPKSKULXNZQ[S[VZXX RMPLRLVMX RQMONNOMRMVNYOZQ[",
  3104: " 52H]VFV[[[ RWGWZ RSFXFX[ RVPUNSMQMNNLPKSKULXNZQ[S[UZVX RMPLRLVMX RQMONNOMRMVNYOZQ[ RTFVG RUFVH RXYY[ RXZZ[",
  3105: " 41H[MSXSXQWOVNSMQMNNLPKSKULXNZQ[S[VZXX RWRWQVO RMPLRLVMX RVSVPUNSM RQMONNOMRMVNYOZQ[",
  3106: " 40KYWHWGVGVIXIXGWFTFRGQHPKP[ RRHQKQZ RTFSGRIR[ RMMVM RM[U[ RPZN[ RPYO[ RRYS[ RRZT[",
  3107: " 89I\\XNYOZNYMXMVNUO RQMONNOMQMSNUOVQWSWUVVUWSWQVOUNSMQM ROONQNSOU RUUVSVQUO RQMPNOPOTPVQW RSWTVUTUPTNSM RNUMVLXLYM[N\\Q]U]X^Y_ RN[Q\\U\\X] RLYMZP[U[X\\Y^Y_XaUbObLaK_K^L\\O[ RObMaL_L^M\\O[",
  3108: " 65G^LFL[ RMGMZ RIFNFN[ RNQOOPNRMUMWNXOYRY[ RWOXRXZ RUMVNWQW[ RI[Q[ RT[\\[ RJFLG RKFLH RLZJ[ RLYK[ RNYO[ RNZP[ RWZU[ RWYV[ RYYZ[ RYZ[[",
  3109: " 43LXQFQHSHSFQF RRFRH RQGSG RQMQ[ RRNRZ RNMSMS[ RN[V[ ROMQN RPMQO RQZO[ RQYP[ RSYT[ RSZU[",
  3110: " 41KXRFRHTHTFRF RSFSH RRGTG RRMR^QaPb RSNS]R` ROMTMT]S`RaPbMbLaL_N_NaMaM` RPMRN RQMRO",
  3111: " 61G]LFL[ RMGMZ RIFNFN[ RWNNW RRSY[ RRTX[ RQTW[ RTM[M RI[Q[ RT[[[ RJFLG RKFLH RUMWN RZMWN RLZJ[ RLYK[ RNYO[ RNZP[ RWYU[ RVYZ[",
  3112: " 31LXQFQ[ RRGRZ RNFSFS[ RN[V[ ROFQG RPFQH RQZO[ RQYP[ RSYT[ RSZU[",
  3113: " 99AcFMF[ RGNGZ RCMHMH[ RHQIOJNLMOMQNROSRS[ RQORRRZ ROMPNQQQ[ RSQTOUNWMZM\\N]O^R^[ R\\O]R]Z RZM[N\\Q\\[ RC[K[ RN[V[ RY[a[ RDMFN REMFO RFZD[ RFYE[ RHYI[ RHZJ[ RQZO[ RQYP[ RSYT[ RSZU[ R\\ZZ[ R\\Y[[ R^Y_[ R^Z`[",
  3114: " 65G^LML[ RMNMZ RIMNMN[ RNQOOPNRMUMWNXOYRY[ RWOXRXZ RUMVNWQW[ RI[Q[ RT[\\[ RJMLN RKMLO RLZJ[ RLYK[ RNYO[ RNZP[ RWZU[ RWYV[ RYYZ[ RYZ[[",
  3115: " 46H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RMPLRLVMX RWXXVXRWP RQMONNOMRMVNYOZQ[ RS[UZVYWVWRVOUNSM",
  3116: " 60G\\LMLb RMNMa RIMNMNb RNPONQMSMVNXPYSYUXXVZS[Q[OZNX RWPXRXVWX RSMUNVOWRWVVYUZS[ RIbQb RJMLN RKMLO RLaJb RL`Kb RN`Ob RNaPb",
  3117: " 55H\\VNVb RWOWa RUNWNXMXb RVPUNSMQMNNLPKSKULXNZQ[S[UZVX RMPLRLVMX RQMONNOMRMVNYOZQ[ RSb[b RVaTb RV`Ub RX`Yb RXaZb",
  3118: " 43IZNMN[ RONOZ RKMPMP[ RWOWNVNVPXPXNWMUMSNQPPS RK[S[ RLMNN RMMNO RNZL[ RNYM[ RPYQ[ RPZR[",
  3119: " 43J[WOXMXQWOVNTMPMNNMOMQNSPTUUWVXY RNNMQ RNRPSUTWU RXVWZ RMONQPRUSWTXVXYWZU[Q[OZNYMWM[NY",
  3120: " 22KZPHPVQYRZT[V[XZYX RQHQWRY RPHRFRWSZT[ RMMVM",
  3121: " 43G^LMLVMYNZP[S[UZVYWW RMNMWNY RIMNMNWOZP[ RWMW[\\[ RXNXZ RTMYMY[ RJMLN RKMLO RYYZ[ RYZ[[",
  3122: " 31I[LMR[ RMMRY RNMSY RXNSYR[ RJMQM RTMZM RKMNO RPMNN RVMXN RYMXN",
  3123: " 45F^JMN[ RKMNX RLMOX RRMOXN[ RRMV[ RSMVX RRMTMWX RZNWXV[ RGMOM RWM]M RHMKN RNMLN RXMZN R\\MZN",
  3124: " 48H\\LMV[ RMMW[ RNMX[ RWNMZ RJMQM RTMZM RJ[P[ RS[Z[ RKMMN RPMNN RUMWN RYMWN RMZK[ RMZO[ RVZT[ RWZY[",
  3125: " 40H[LMR[ RMMRY RNMSY RXNSYP_NaLbJbIaI_K_KaJaJ` RJMQM RTMZM RKMNO RPMNN RVMXN RYMXN",
  3126: " 41I[VML[ RWMM[ RXMN[ RXMLMLQ RL[X[XW RMMLQ RNMLP ROMLO RQMLN RS[XZ RU[XY RV[XX RW[XW",
  3151: " 50G]WMUTUXVZW[Y[[Y\\W RXMVTVZ RWMYMWTVX RUTUQTNRMPMMNKQJTJVKYLZN[P[RZSYTWUT RNNLQKTKWLY RPMNOMQLTLWMZN[",
  3152: " 52I\\PFNMMSMWNYOZQ[S[VZXWYTYRXOWNUMSMQNPOOQNT RQFOMNQNWOZ RVYWWXTXQWO RMFRFPMNT RS[UYVWWTWQVNUM RNFQG ROFPH",
  3153: " 34I[WQWPVPVRXRXPWNUMRMONMQLTLVMYNZP[R[UZWW ROONQMTMWNY RRMPOOQNTNWOZP[",
  3154: " 58G]YFVQUUUXVZW[Y[[Y\\W RZFWQVUVZ RVF[FWTVX RUTUQTNRMPMMNKQJTJVKYLZN[P[RZSYTWUT RMOLQKTKWLY RPMNOMQLTLWMZN[ RWFZG RXFYH",
  3155: " 33I[MVQUTTWRXPWNUMRMONMQLTLVMYNZP[R[UZWX ROONQMTMWNY RRMPOOQNTNWOZP[",
  3156: " 45JZZHZGYGYI[I[GZFXFVGTISKRNQRO[N^M`Kb RTJSMRRP[O^ RXFVHUJTMSRQZP]O_MaKbIbHaH_J_JaIaI` RNMYM",
  3157: " 57H]XMT[S^QaOb RYMU[S_ RXMZMV[T_RaObLbJaI`I^K^K`J`J_ RVTVQUNSMQMNNLQKTKVLYMZO[Q[SZTYUWVT RNOMQLTLWMY RQMOONQMTMWNZO[",
  3158: " 41G]OFI[K[ RPFJ[ RLFQFK[ RMTOPQNSMUMWNXPXSVX RWNWRVVVZ RWPUUUXVZW[Y[[Y\\W RMFPG RNFOH",
  3159: " 35KXSFSHUHUFSF RTFTH RSGUG RLQMOOMQMRNSPSSQX RRNRRQVQZ RRPPUPXQZR[T[VYWW",
  3160: " 45KXUFUHWHWFUF RVFVH RUGWG RMQNOPMRMSNTPTSRZQ]P_NaLbJbIaI_K_KaJaJ` RSNSSQZP]O_ RSPRTP[O^N`Lb",
  3161: " 49G]OFI[K[ RPFJ[ RLFQFK[ RYOYNXNXPZPZNYMWMUNQROS RMSOSQTRUTYUZWZ RQUSYTZ ROSPTRZS[U[WZYW RMFPG RNFOH",
  3162: " 26LXTFQQPUPXQZR[T[VYWW RUFRQQUQZ RQFVFRTQX RRFUG RSFTH",
  3163: " 61@cAQBODMFMGNHPHSF[ RGNGSE[ RGPFTD[F[ RHSJPLNNMPMRNSPSSQ[ RRNRSP[ RRPQTO[Q[ RSSUPWNYM[M]N^P^S\\X R]N]R\\V\\Z R]P[U[X\\Z][_[aYbW",
  3164: " 42F^GQHOJMLMMNNPNSL[ RMNMSK[ RMPLTJ[L[ RNSPPRNTMVMXNYPYSWX RXNXRWVWZ RXPVUVXWZX[Z[\\Y]W",
  3165: " 46H\\QMNNLQKTKVLYMZP[S[VZXWYTYRXOWNTMQM RNOMQLTLWMY RVYWWXTXQWO RQMOONQMTMWNZP[ RS[UYVWWTWQVNTM",
  3166: " 66G]HQIOKMMMNNOPOSNWKb RNNNSMWJb RNPMTIb ROTPQQORNTMVMXNYOZRZTYWWZT[R[PZOWOT RXOYQYTXWWY RVMWNXQXTWWVYT[ RFbNb RJaGb RJ`Hb RK`Lb RJaMb",
  3167: " 57G\\WMQb RXMRb RWMYMSb RUTUQTNRMPMMNKQJTJVKYLZN[P[RZSYTWUT RMOLQKTKWLY RPMNOMQLTLWMZN[ RNbVb RRaOb RR`Pb RS`Tb RRaUb",
  3168: " 30I[JQKOMMOMPNQPQTO[ RPNPTN[ RPPOTM[O[ RYOYNXNXPZPZNYMWMUNSPQT",
  3169: " 47J[XPXOWOWQYQYOXNUMRMONNONQOSQTTUVVWX RONNQ RORQSTTVU RWVVZ RNOOQQRTSVTWVWXVZS[P[MZLYLWNWNYMYMX",
  3170: " 23KYTFQQPUPXQZR[T[VYWW RUFRQQUQZ RTFVFRTQX RNMXM",
  3171: " 42F^GQHOJMLMMNNPNSLX RMNMRLVLZ RMPKUKXLZN[P[RZTXVU RXMVUVXWZX[Z[\\Y]W RYMWUWZ RXMZMXTWX",
  3172: " 29H\\IQJOLMNMONPPPSNX RONORNVNZ ROPMUMXNZP[R[TZVXXUYQYMXMXNYP",
  3173: " 48CaDQEOGMIMJNKPKSIX RJNJRIVIZ RJPHUHXIZK[M[OZQXRU RTMRURXSZU[W[YZ[X]U^Q^M]M]N^P RUMSUSZ RTMVMTTSX",
  3174: " 51G]JQLNNMPMRNSPSR RPMQNQRPVOXMZK[I[HZHXJXJZIZIY RRORRQVQY RZOZNYNYP[P[NZMXMVNTPSRRVRZS[ RPVPXQZS[U[WZYW",
  3175: " 49G]HQIOKMMMNNOPOSMX RNNNRMVMZ RNPLULXMZO[Q[SZUXWT RYMU[T^RaPb RZMV[T_ RYM[MW[U_SaPbMbKaJ`J^L^L`K`K_",
  3176: " 39H\\YMXOVQNWLYK[ RXOOOMPLR RVORNONNO RVORMOMMOLR RLYUYWXXV RNYRZUZVY RNYR[U[WYXV",
  3200: " 50H\\QFNGLJKOKRLWNZQ[S[VZXWYRYOXJVGSFQF RNHMJLNLSMWNY RVYWWXSXNWJVH RQFOGNIMNMSNXOZQ[ RS[UZVXWSWNVIUGSF",
  3201: " 28H\\QHQ[ RRHRZ RSFS[ RSFPINJ RM[W[ RQZO[ RQYP[ RSYT[ RSZU[",
  3202: " 62H\\LJLKMKMJLJ RLIMINJNKMLLLKKKJLHMGPFTFWGXHYJYLXNUPPRNSLUKXK[ RWHXJXLWN RTFVGWJWLVNTPPR RKYLXNXSYWYYX RNXSZWZXY RNXS[W[XZYXYV",
  3203: " 76H\\LJLKMKMJLJ RLIMINJNKMLLLKKKJLHMGPFTFWGXIXLWNTO RVGWIWLVN RSFUGVIVLUNSO RQOTOVPXRYTYWXYWZT[P[MZLYKWKVLUMUNVNWMXLX RWRXTXWWY RSOUPVQWTWWVZT[ RLVLWMWMVLV",
  3204: " 28H\\SIS[ RTHTZ RUFU[ RUFJUZU RP[X[ RSZQ[ RSYR[ RUYV[ RUZW[",
  3205: " 55H\\MFKPMNPMSMVNXPYSYUXXVZS[P[MZLYKWKVLUMUNVNWMXLX RWPXRXVWX RSMUNVOWRWVVYUZS[ RLVLWMWMVLV RMFWF RMGUG RMHQHUGWF",
  3206: " 69H\\VIVJWJWIVI RWHVHUIUJVKWKXJXIWGUFRFOGMILKKOKULXNZQ[S[VZXXYUYTXQVOSNQNOONPMR RNIMKLOLUMXNY RWXXVXSWQ RRFPGOHNJMNMUNXOZQ[ RS[UZVYWVWSVPUOSN",
  3207: " 43H\\KFKL RYFYIXLTQSSRWR[ RSRRTQWQ[ RXLSQQTPWP[R[ RKJLHNFPFUIWIXHYF RMHNGPGRH RKJLINHPHUI",
  3208: " 79H\\PFMGLILLMNPOTOWNXLXIWGTFPF RNGMIMLNN RVNWLWIVG RPFOGNINLONPO RTOUNVLVIUGTF RPOMPLQKSKWLYMZP[T[WZXYYWYSXQWPTO RMQLSLWMY RWYXWXSWQ RPONPMSMWNZP[ RT[VZWWWSVPTO",
  3209: " 69H\\MWMXNXNWMW RWOVQURSSQSNRLPKMKLLINGQFSFVGXIYLYRXVWXUZR[O[MZLXLWMVNVOWOXNYMY RMPLNLKMI RVHWIXLXRWVVX RQSORNQMNMKNHOGQF RSFUGVIWLWSVWUYTZR[",
  3210: " 16MXRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  3211: " 24MXTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^",
  3212: " 32MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  3213: " 40MXRMQNQORPSPTOTNSMRM RRNROSOSNRN RTZS[R[QZQYRXSXTYT\\S^Q_ RRYRZSZSYRY RS[T\\ RTZS^",
  3214: " 34MXRFQGQIRQ RRFRTST RRFSFST RSFTGTISQ RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  3215: " 52I\\MKMJNJNLLLLJMHNGPFTFWGXHYJYLXNWOSQ RWHXIXMWN RTFVGWIWMVOUP RRQRTSTSQRQ RRXQYQZR[S[TZTYSXRX RRYRZSZSYRY",
  3216: " 24MXTFRGQIQLRMSMTLTKSJRJQK RRKRLSLSKRK RRGQK RQIRJ",
  3217: " 24MXTHSIRIQHQGRFSFTGTJSLQM RRGRHSHSGRG RSITJ RTHSL",
  3218: " 74E_[O[NZNZP\\P\\N[MZMYNXPVUTXRZP[L[JZIXIUJSPORMSKSIRGPFNGMIMLNOPRTWWZY[[[\\Y\\X RKZJXJUKSLR RRMSI RSKRG RNGMK RNNPQTVWYYZ RN[LZKXKULSPO RMINMQQUVXYZZ[Z\\Y",
  3219: " 56H\\PBP_ RTBT_ RXKXJWJWLYLYJXHWGTFPFMGKIKLLNOPURWSXUXXWZ RLLMNOOUQWRXT RMGLILKMMONUPXRYTYWXYWZT[P[MZLYKWKUMUMWLWLV",
  3220: "  8G^[BIbJb R[B\\BJb",
  3221: " 27KYUBSDQGOKNPNTOYQ]S`Ub RQHPKOOOUPYQ\\ RSDRFQIPOPUQ[R^S`",
  3222: " 27KYOBQDSGUKVPVTUYS]Q`Ob RSHTKUOUUTYS\\ RQDRFSITOTUS[R^Q`",
  3223: " 39JZRFQGSQRR RRFRR RRFSGQQRR RMINIVOWO RMIWO RMIMJWNWO RWIVINOMO RWIMO RWIWJMNMO",
  3224: "  8F_JQ[Q[R RJQJR[R",
  3225: " 16F_RIRZSZ RRISISZ RJQ[Q[R RJQJR[R",
  3226: " 16F_JM[M[N RJMJN[N RJU[U[V RJUJV[V",
  3227: " 11NWSFRGRM RSGRM RSFTGRM",
  3228: " 22I[NFMGMM RNGMM RNFOGMM RWFVGVM RWGVM RWFXGVM",
  3229: " 30KYQFOGNINKOMQNSNUMVKVIUGSFQF RQFNIOMSNVKUGQF RSFOGNKQNUMVISF",
  3250: " 58H]TFQGOIMLLOKSKVLYMZO[Q[TZVXXUYRZNZKYHXGVFTF RQHOJNLMOLSLWMY RTYVWWUXRYNYJXH RTFRGPJOLNOMSMXNZO[ RQ[SZUWVUWRXNXIWGVF",
  3251: " 20H]TJO[Q[ RWFUJP[ RWFQ[ RWFTIQKOL RTJRKOL",
  3252: " 52H]OKOJPJPLNLNJOHPGSFVFYGZIZKYMWOMUKWI[ RXGYIYKXMVOSQ RVFWGXIXKWMUOMU RJYKXMXRYWYXX RMXRZWZ RMXR[U[WZXXXW",
  3253: " 64H]OKOJPJPLNLNJOHPGSFVFYGZIZKYMXNVOSP RXGYIYKXMWN RVFWGXIXKWMUOSP RQPSPVQWRXTXWWYUZR[O[LZKYJWJULULWKWKV RVRWTWWVY RSPUQVSVWUYTZR[",
  3254: " 15H]WJR[T[ RZFXJS[ RZFT[ RZFJUZU",
  3255: " 49H]QFLP RQF[F RQGYG RPHUHYG[F RLPMOPNSNVOWPXRXUWXUZQ[N[LZKYJWJULULWKWKV RVPWRWUVXTZ RSNUOVQVUUXSZQ[",
  3256: " 61H]YJYIXIXKZKZIYGWFTFQGOIMLLOKSKVLYMZO[R[UZWXXVXSWQVPTOQOOPNQMS RPINLMOLSLWMY RVXWVWSVQ RTFRGPJOLNOMSMXNZO[ RR[TZUYVVVRUPTO",
  3257: " 39H]NFLL R[FZIXLTQRTQWP[ RRSPWO[ RXLRRPUOWN[P[ RMIPFRFWI ROGRGWI RMIOHRHWIYIZH[F",
  3258: "104H]SFPGOHNJNMOOQPTPWOYNZLZIYGWFSF RUFPG RPHOJONPO ROORP RSPWO RXNYLYIXG RYGUF RSFQHPJPNQP RTPVOWNXLXHWF RQPMQKSJUJXKZN[R[VZWYXWXTWRVQTP RRPMQ RNQLSKUKXLZ RKZP[VZ RVYWWWTVR RVQSP RQPOQMSLULXMZN[ RR[TZUYVWVSUQTP",
  3259: " 61H]XNWPVQTRQROQNPMNMKNIPGSFVFXGYHZKZNYRXUVXTZQ[N[LZKXKVMVMXLXLW ROPNNNKOI RXHYJYNXRWUUX RQRPQOOOKPHQGSF RVFWGXIXNWRVUUWSZQ[",
  3260: " 16MXPXOYOZP[Q[RZRYQXPX RPYPZQZQYPY",
  3261: " 22MXQ[P[OZOYPXQXRYR[Q]P^N_ RPYPZQZQYPY RQ[Q\\P^",
  3262: " 32MXSMRNROSPTPUOUNTMSM RSNSOTOTNSN RPXOYOZP[Q[RZRYQXPX RPYPZQZQYPY",
  3263: " 38MXSMRNROSPTPUOUNTMSM RSNSOTOTNSN RQ[P[OZOYPXQXRYR[Q]P^N_ RPYPZQZQYPY RQ[Q\\P^",
  3264: " 34MXVFUFTGRT RVGUGRT RVGVHRT RVFWGWHRT RPXOYOZP[Q[RZRYQXPX RPYPZQZQYPY",
  3265: " 59H]OKOJPJPLNLNJOHPGSFWFZG[I[KZMYNWOSPQQQSSTTT RUFZG RYGZIZKYMXNVO RWFXGYIYKXMWNSPRQRSST RPXOYOZP[Q[RZRYQXPX RPYPZQZQYPY",
  3266: " 22MXWFUGTHSJSLTMUMVLVKUJTJ RUGTITJ RTKTLULUKTK",
  3267: " 22MXVIUITHTGUFVFWGWIVKULSM RUGUHVHVGUG RVIVJUL",
  3268: " 72E_\\O\\N[N[P]P]N\\M[MYNWPRXPZN[K[HZGXGVHTISKRPPROTMUKUITGRFPGOIOLPRQURWTZV[X[YYYX RL[HZ RIZHXHVITJSLR RPPQSTYVZ RK[JZIXIVJTKSMRRO ROLPOQRSVUYWZXZYY",
  3269: " 52H]TBL_ RYBQ_ RZKZJYJYL[L[JZHYGVFRFOGMIMLNNPPVSWUWXVZ RNLONVRWT ROGNINKOMUPWRXTXWWYVZS[O[LZKYJWJULULWKWKV",
  3270: "  8G^_BEbFb R_B`BFb",
  3271: " 32JZZBXCUERHPKNOMSMXN\\O_Qb RSHQKOONTN\\ RZBWDTGRJQLPOOSN\\ RNTO]P`Qb",
  3272: " 32JZSBUEVHWLWQVUTYR\\O_LaJb RVHVPUUSYQ\\ RSBTDUGVP RVHUQTUSXRZP]M`Jb",
  3273: " 39J[TFSGUQTR RTFTR RTFUGSQTR ROIPIXOYO ROIYO ROIOJYNYO RYIXIPOOO RYIOO RYIYJONOO",
  3274: "  8F_JQ[Q[R RJQJR[R",
  3275: " 16F_RIRZSZ RRISISZ RJQ[Q[R RJQJR[R",
  3276: " 16F_JM[M[N RJMJN[N RJU[U[V RJUJV[V",
  3277: " 11MWUFTGRM RUGRM RUFVGRM",
  3278: " 22H\\PFOGMM RPGMM RPFQGMM RZFYGWM RZGWM RZF[GWM",
  3279: " 30KZSFQGPIPKQMSNUNWMXKXIWGUFSF RSFPIQMUNXKWGSF RUFQGPKSNWMXIUF",
  3301: " 62F^IHJIIJHIIGKFMFOGPHQKQOPRNTLUIV ROHPKPPOR RMFNGOJOPNSLU RLVOY RKVOZ RIVN[UV R\\G[H\\H\\G[FYFWGVHUJUYW[[W RWHVJVXXZ RYFXGWJWWYY",
  3302: "101E_GQGRHSJSLRLOKMIJIHKF RKOIK RJSKRKPIMHKHIIGKFNFPGQHRJRRQUOW RPHQJQT RNFOGPJPUOW RRISGUFWFYGZH[J\\K RYHZJ RWFXGYJZK\\K R\\KRP RYM[O\\R\\U[XYZV[S[PZJWIWHX RXNYN[P RVNYO[Q\\S RTZRZLWKW RZYXZUZRYNWKVIVHXHZI[JZIY",
  3303: " 79F^RHPFNFLGJJINIRJVLYNZQ[T[WZYY[W RLHKJJMJRKVMYPZ RNFMGLIKMKQLUMWOYRZUZXY[W RUFRHQIPKPLQNTPURUT RQKQLUPUQ RQIQJRLUNVPVRUTSURUPTOR RUFVGXHZH RUGVHWH RTGVIXIZH[G",
  3304: " 79E_HLHKIIKGNFRFUGWHYJ[M\\Q\\U[XYZV[S[PZJWIWHX RKHMGRGUHWIYK[N RTZRZLWKW RHKJIMHRHUIWJYL[O\\R RZYXZUZRYNWKVIVHXHZI[JZIY RPHMKLMLONSNU RMNMONQNR RMKMMOQOSNUMVKVJUJT",
  3305: " 95F^RHPFNFLGJJINIRJVLYNZQ[T[WZYY[W RLHKJJMJRKVMYPZ RNFMGLIKMKQLUMWOYRZUZXY[W RUFRHQIPKPLQNTPURUT RQKQLUPUQ RQIQJRLUNVPVRUTSURUPTOR RUFVGXHZH RUGVHWH RTGVIXIZH[G RUNYK RYKZL\\L RXLYMZM RWMXNZN\\L",
  3306: " 94F^MNKMJKJIKGNFQFTGXI RKHMGRGUH RJKKIMHRHXIZI[H[GZFYF RSHRIQKQMROVSWVWYV\\U]S^ RTPWSXVXYW[ RQMSOVQXSYVYYX[V]S^O^L]K\\JZJWLTLRKQ RL\\K[KWLU RO^M]L[LWMTMRLQJQIRIS RUPYL RYLZM\\M RXMYNZN RWNXOZO\\M",
  3307: " 99E_UJTHSGQFNFKGIJHNHRIUJWLYNZQ[T[WZYY[W\\T\\Q[NYL RKHJJIMIRJUKW RZW[U[QZNYM RNFLGKIJMJRKVLXNZ RWZYXZUZQYOWM RUFRHPJOLOMPOSQTSTU RPLPMTQTR RPJPKQMTOUQUSTURVQVOUNS RTOYLZJ R\\FZJ RYG]I R\\F[GYGZHZJ[I]I\\H\\F",
  3308: " 92F_RFPGNIMKMMNOPQQSQU RNLNMQQQR RNINKOMQORQRSQUPVNWLWJVIUHSHQIPJQIR RRFTHVHXG RQGSH RPGQHSIUIXG RRPYK RYK[N\\Q\\T[WYYVZR[ RXLZN[Q[UZW RVMWMYOZRZVYXXYVZ RVZTZRYPYNZM\\N^P_R_T^ RSZQZ RR[PZNZ",
  3309: " 83F_PPNPLOKNJLJJKHLGOFQFTGWJYK RLHNGRGTHUI RJJKIMHQHTIVJYK[K\\J\\H[GYG RJXKYJZIYIWJVLVNWPYR\\T^ RNXOYQ\\R] RLVMWNYP\\Q]S^V^X]Y\\ZZZWYUWRVPVO RYXYWVRVQ RX]Y[YYXWVTURUPWNYNZOZP",
  3310: " 83F_PPNPLOKNJLJJKHLGOFQFTGWJYK RLHNGRGTHUI RJJKIMHQHTIVJYK[K\\J\\H[GYG RJXKYJZIYIWJVLVNWPYR\\T^ RNXOYQ\\R] RLVMWNYP\\Q]S^V^X]Y\\ZZZWYUWRVPVO RYXYWVRVQ RX]Y[YYXWVTURUPWNYNZOZP",
  3311: " 81E_[KZIXGUFRFOGMILKLNMQPWPYN[ RMNMOPUPV RNHMJMMNOPSQVQXPZN[L[JZ RHVJZ RGYKW RHVHXGYIYJZJXKWIWHV RNONMOKQJTJVKXMYM RUKWM RRJTKULVN RYMPQ RUOYXZY[Y RTPXXZZ RSPWYY[\\X",
  3312: " 73G^ZSYTVTUSUQVOXLYJYH RVQVPYLYK RWTVSVRWPYNZLZJYHXGUFPFMGLHKJKLLNNQOSOTNV RLKLLOQOR RLHLJMLOOPQPSOUMWJY RMWOWRYUZXZZY RNXOXSZTZ RJYLXMXQZT[V[YZZY[W",
  3313: "128BbEQERFSHSJRJOIMGJGHIF RIOGK RHSIRIPGMFKFIGGIFKFMGOIPLPROUNWLYI[HZGZ RNIOLORNUMW RJZIYHY RKFMHNKNRMVLXKYJXIXF[ RNGPFRFTGVIWLWRVUUWSYQ[PZOZ RUIVLVRUV RRZQYPY RRFTHUKUSTWSYRXQXN[ RUHVGXFZF\\G]H^J_K R\\H]J RZF[G\\J]K_K R_K\\M[NZQZT[X][`X R\\N[P[T\\W^Z R_K]M\\O\\S]W_Y",
  3314: " 96D`GQGRHSJSLRLOKMIJIHKF RKOIK RJSKRKPIMHKHIIGKFNFPGRISLSRRUQWOYL[KZIZG[ RQIRKRRQUPWOX RMZKYIY RNFPHQKQRPVNYLXJXG[ RRHSGUFWFYGZH[J\\K RYHZJ RWFXGYJZK\\K R\\KYMXNWQWTXXZ[]X RYNXPXTYW[Z R\\KZMYOYSZW\\Y",
  3315: " 72D`PFNGLIKKKMMQMS RLLLMMOMP RLILKNONQMSLTJTISIR RPFQGWIZK[M\\P\\S[VZXXZU[R[OZIWHWGX RPGQHWJYKZL RPFPHQIWKYL[N\\P RSZQZKWJW RYYWZTZQYMWJVHVGXGZH[IZHY",
  3316: "100E`HQHRISKSMRMOLMJJJHLF RLOJK RKSLRLPJMIKIIJGLFOFQGRHSJSU RSWS\\R^P_M_L^L\\M[N\\M] RQHRJR\\Q^ ROFPGQJQU RQWQ\\P^O_ RSJXF RXFZI[K\\O\\R[UYXV[ RWGZK[N[O RVHXJZM[P[SZVYX RWYUVSU RQUOVMX RWZUWSVPV RV[TXSW RQWOWMX",
  3317: " 88D`PFNGLIKKKMMQMS RLLLMMOMP RLILKNONQMSLTJTISIR RPFQGWIZK[M\\P\\S[VZX RXZU[R[OZIWHWGX RPGQHWJYKZL RPFPHQIWKYL[N\\P RSZQZKWJW RXZTZQYMWJVHVGXGZH[IZHY RTXVVXV\\Z]Z RWWXW[Z RUWVWZ[\\[^Y",
  3318: " 96D`GQGRHSJSLRLOKMIJIHKF RKOIK RJSKRKPIMHKHIIGKFNFPGQHRJRVQXOZM[K[IZ RPHQJQVPX RNFOGPJPVOYM[ RGVIZ RFYJW RGVGXFYHYIZIXJWHWGV RRISGUFWFYGZH[J\\K RYHZJ RWFXGYJZK\\K R\\KRP RTOXYZ[]X RUOYX[Z RVNZX[Y\\Y",
  3319: " 83E`\\H[G\\F]G]I\\KZKVISHOHKIIK RYJVHSGOGLH R]I\\JZJVGSFOFLGJIIKHNHRIUJWLYNZQ[U[XZZY\\W]T]Q\\OZNWNUOSRQSOS RLXNYQZUZYY RIUKWMXPYUYYX[W\\V]T RXOWOSSRS R]Q[OYOWPUSSTQTOSNQNOOMQL",
  3320: " 81F_LNJMIKIIJGMFRFUGYJ[J\\I RJHLGRGUHXJ RIKJILHRHUIYK[K\\I\\G[FZG[H RUIRLQNQPSTSV RRORPSRSS RRLRNTRTTSVRWPWOVOT RJYKZJ[IZIXJVLVOWSYVZYZ[Y RLWMWSZUZ RIXJWKWMXQZT[W[ZZ\\X",
  3321: " 45G]JHKHLILWJX RKGMHMXPZ RIILFNHNWPYRY RJXKXMYO[RYVV RTHUHVIVYX[[X RUGWHWYYZ RSIVFYHXIXXYYZY",
  3322: "100D`GQGRHSJSLRLOKMIJIHKF RKOIK RJSKRKPIMHKHIIGKFNFPGQHRJRRQUOW RPHQJQT RNFOGPJPUOW RRISGUFWFYG[J\\K RYHZJ RWFXGYJZK\\K RZKXKWLWNXP[R\\T RXO[Q RWMXN[P\\R\\V[XYZW[S[PZJWIWHX RTZRZLWKW RZYXZUZRYNWKVIVHXHZI[JZIY",
  3323: "143BcEQERFSHSJRJOIMGJGHIF RIOGK RHSIRIPGMFKFIGGIFLFNGOHPJPNOQMTKV RNHOJOONR RLFMGNJNOMSKV RNGPFSFUG RWFTGSISMTPVSWUWWVY RTMTNWSWT RWFUGTITLUNWQXTXVWXUZS[O[MZKXIWGWFX RNZKWJW RQ[OZLWJVGVFXFZG[HZGY RWFZF\\G^J_K R\\H]J RZF[G\\J]K_K R]K[KZLZN[P^R_T R[O^Q RZM[N^P_R_W^Y]Z[[X[UZ RYZXZVY R^Y\\ZZZXYWX",
  3324: " 86F^KHMHOIPJQMQO RQQQUPXM[KZI[ RNZLYKY ROYNYLXI[ RMGPHQIRLRUSWUYWZ RIINFPGRISLSO RSQSTTWUXWYYY RQURXTZV[[X RSLTIWFYG[F RVGXHYH RUHVHXI[F RKSMOQO RSOWOYM RMPWP RKSMQQQ RSQWQYM",
  3325: " 74E_HQHRISKSMRMOLMJJJHLF RLOJK RKSLRLPJMIKIIJGLFOFQGRHSJSORRQTQUSWTW RQHRJRPQSPUSX ROFPGQJQPPTOVRYUV RSJ[F RYGYZX] RZGZXY[ R[F[VZZY\\W^T_P_M^K\\JZKYLZK[",
  3326: " 74F^NIOGQFTFVGWHXJXMWOVPTQ RQQOPNN RVHWIWNVO RTFUGVIVNUPTQ RMUNSORQQTQWRYTZVZZY\\W^T_P_N^KZJY RXTYVYZX\\ RTQWSXUX[W]V^T_ RO^N]LZKY RR_P^O]MZLYIYHZH\\I]J]",
  3401: " 46J[TMQNOONPMSMVNYO[UX RNVOYPZ RQNOPNSNUOXQZ RRNSOUPUYW[ZX RSNVPVXXZ RTMUNWOXO RWPXO RWPWXXYYY",
  3402: " 50J[LHMINK RTFQGOINKNXMY RPIOKOXRZ RTFRGQHPKPXRYSZ RMYNYPZQ[TZ RPPVMWOXRXUWXVYTZ RUNVOWQ RTNVPWSWUVXTZ",
  3403: " 27KXRNTPVOTMRNOPNRNWOYQ[UY RSNUO RPPOROWPYQZ RQOPQPVQXSZ",
  3404: " 47J[QFNINKOLSNVPWRWUVXTZ ROJOKSMVOWP ROHOIPJUMWOXRXUWXTZQ[ RRNNPNXMY ROPOXRZ RPOPXRYSZ RMYNYPZQ[",
  3405: " 27KXPUVQSMOPNRNWOYQ[UY RUQRN RPPOROWPYQZ RTRROQOPQPVQXSZ",
  3406: " 49LYXFWGUGSFQFPHPMOONP RVHTHRGQG RXFWHVITIRHQHPI RPKQMRNTOVOVP RNPPP RRPVP RPPPTQ` RSOPOQNQ[ RRPRTQ`",
  3407: " 53J[TMQNOONPMSMVNYO[UX RNWOYPZ RQNOPNSNUOXQZ RRNSOUPUXV[V]U_ RSNVPVZ RTMUNWOXO RWPXO RWPW\\V^U_S`P`N_M^M]N]N^",
  3408: " 50J[LHMINK RTFQGOINKNXMY RPIOKOYPZ RTFRGQHPKPXQYRY RMYOZP[SX RPPVMWOXSXWWZV\\T^Q` RUNVOWR RTNVQWTWWV[T^",
  3409: " 39MWRFQGQHRISHSGRF RQGSH RQHSG ROOPOQPQYS[VX RPNRORXTZ RNPQMRNTO RSPTO RSPSXTYUY",
  3410: " 45MWRFQGQHRISHSGRF RQGSH RQHSG ROOPOQPQ[P^O_M` RPNROR[Q] RNPQMRNTO RSPTO RSPS[R]P_M` RS[T]U^",
  3411: " 63KYNHOIPK RUFSGQIPKPMOONP RPPPXOY RRIQKQM RQOPOQMQXSZ RUFSHRKRO RRPRXSYTY ROYQZR[UX RRLVIWJWLUNSO RUJVKVLUN RROWOWP RNPPP RRPWP",
  3412: " 29MWOHPIQK RWFTGRIQKQXPY RSIRKRYTZ RWFUGTHSKSXTYUY RPYRZS[VX",
  3413: " 74E_GOHOIPIXHYJ[ RHNJPJXIYJZKYJX RFPIMKOKXLYJ[ RNNPOQQQXPYR[ RPNQORQRXQYRZSYRX RKPNNPMRNSPSXTYR[ RVNWOYPYY[[^X RWNZPZX\\Z RSPVNXMYN[O\\O R[P\\O R[P[X\\Y]Y",
  3414: " 49I[KOLOMPMXLYN[ RLNNPNXMYNZOYNX RJPMMOOOXPYN[ RRNSOUPUYW[ZX RSNVPVXXZ ROPRNTMUNWOXO RWPXO RWPWXXYYY",
  3415: " 41J[NPNXMY ROPOXRZ RQOPPPXRYSZ RMYNYPZQ[TZ RNPQOVMWOXRXUWXVYTZ RUNVOWQ RTNVPWSWUVXTZ",
  3416: " 57J[OJMLMNNQNXLZ RNYO` RNMNNOQO[ RNKNLONPQPXQXSYTZ RPYO` RSZQY RTZR[PY RNYLZ RPPVMWOXRXUWXVYTZ RUNVOWQ RTNVPWSWUVXTZ",
  3417: " 43J[TMQNOONPMSMVNYO[UX RNWOYPZ RQNOPNSNUOXQZ RRNSOUPUXV` RSNVPV[ RTMUNWOXO RWPXO RWPWXV`",
  3418: " 32KYNOOOPPPXOY RONQPQYSZ RMPPMRORXSYTY ROYQZR[UX RTNUPWOVMRO RUNVO",
  3419: " 42LWXFWGUGSFQFPHPMOONP RVHTHRGQG RXFWHVITIRHQHPI RPKRP RPPPTQ` RQOPOQNQ[ RRPRTQ` RNPPP",
  3420: " 37LXSIRLQNPONP RSISOVOVP RNPQP RSPVP RQPQXPY RROQORMRXTZ RSPSXTYUY RPYRZS[VX",
  3421: " 47I[KOLOMPMXLY RLNNPNXPZ RJPMMOOOXQYRZ RLYMYOZP[RZUX RVMTOUPUYW[ZX RVPWOVNUOVPVXXZ RVMXOWPWXXYYY",
  3422: " 47J[OKMMMONRNXMY RNNNOOROXRZ RNLNMOOPRPXRYSZ RMYNYPZQ[TZ RPPVMWOXRXUWXVYTZ RUNVOWQ RTNVPWSWUVXTZ",
  3423: " 72F_KKIMIOJRJXIYK[ RJNJOKRKXJYKZLYKX RJLJMKOLRLXMYK[ RONQORQRXQY RQNROSQSXVZ RLPONQMSNTPTXVYWZ RQYRYTZU[XZ RTPZM[O\\R\\T[XZYXZ RYNZO[Q RXNZP[S[UZXXZ",
  3424: " 44KZOOPOQPQXPXNYM[M]N_P`S`V_V^U^U_ RPNRPRXUZ RNPQMSOSXUYVZ RXYT[SZQYOYM[ RUNVPXOWMSO RVNWO",
  3425: " 47J[OKMMMONRNXMY RNNNOOROYQZ RNLNMOOPRPXQYRY RMYOZP[SX RPPVMWOXSXWWZV\\T^Q` RUNVOWR RTNVQWTWWV[T^",
  3426: " 43KYNPSMUNVPVRUTQV RSNUO RRNTOUQURTTSU RSUUWVYV]U_S`Q`O_N]N[OYQXWV RRVTWUY RQVTXUZU]T_S`",
  3427: " 61JZRMPNMPMRNU RNPNROT RPNOOORPT RPNROTOVNWMWKVJTJ RQNSN RRMTNVN RNUVRWUWWVYR[ RUSVUVXUY RTSUUUXTZ RTZRYOYL[ RSZQZ RR[PZNZL[",
  3428: " 78J[VFUGSGQFOFNHNMMOLP RTHRHPGOG RVFUHTIRIPHOHNI RNKPP RNPNTO` ROONOONO[ RPPPTO` RLPNP RPPUMWNXPXRWTSV RUNWO RTNVOWQWRVTUU RUUWVXXX[W]U_R` RUVWW RSVTVVWWYW\\V^",
  3429: " 62J[PIOLNNMOKP RPIPXQYO[ ROONOONOXNYOZPYOX RKPNPNXMYO[ RPPUMWNXPXRWTSV RUNWO RTNVOWQWRVTUU RUUWVXXX[W]U_R` RUVWW RSVTVVWWYW\\V^",
  3501: " 60G]LINGPFRFSGZW[X]X RQGRHYXZZ[YYX RNGPGQHXXYZZ[[[]X RLMMLOKPKQL RPLPM RMLOLPN RG[IYKXNXPY RJYNYOZ RG[JZMZN[PY RRJLX RNSVS",
  3502: "110F^HHJFMFOGQF RKGNG RHHJGLHOHQF RMKLLKNKOIOHPHRIQKQKW RLMLU RIPLP RMKMTLVKW RRIQJPLPU RQKQS RRIRRQTPU RRIXFZG[I[KYMUO RXGZIZK RVGXHYIYLWN RWNZP[R[X RYPZRZW RWNXOYQYX RJ[MYPXTXWY RLZOYTYVZ RJ[NZSZU[WYYX[X RUOUX RURYR RUUYU",
  3503: " 69E]NGLHJJILHOHSIVJXMZP[S[VZXYZW[U RJKINISKWNYQZTZWY RNGLIKKJNJRKUNXQYTYWXYW[U RPJPV RQJQT RRIRSQUPV RPJRIUFWGYGZF RTGVHXH RSHUIWIYHZF RWIWX",
  3504: " 72G^IFWFYGZIZX RKGWGYIYW RIFJGLHWHXIXX ROKNLMNMOKOJPJRKQMQMV RNMNT RKPNP ROKOSNUMV RI[LYOXSXVY RKZNYSYUZ RI[MZRZT[VYXXZX RRHRX RRMTNVNXM RRSTRVRXS",
  3505: " 94G]IHKFMFOGQF RLGNG RIHKGMHOHQF RNKMLLNLOJOIPIRJQLQLW RMMMU RJPMP RNKNTMVLW RQMRJSHTGVFXF[G RTHVGXGZH RRJSIUHWHYI[G RQURRSPTOVOXP RTPVPWQ RRRSQUQVRXP RK[NYRXWX[Y RMZPYWYZZ RK[OZVZY[[Y RQMQX",
  3506: " 91F]JHLFOFQGSF RMGPG RJHLGNHQHSF RPKOLNNNOLOKPKRLQNQNV ROMOT RLPOP RPKPSOUNV RSJSYRZQZMXKXIYG[ RTJTX RTPXP RPZOZMYJY RUIUOXO RXQUQUWTYP[N[LZJZG[ RSJUIXFZG\\G]F RWGYH[H RVHXIZI\\H]F RXIXW",
  3507: " 87E^NGLHJJILHOHRIUJWLYNZQ[U[XZZX[V[SZQYPWOUO RJKINISJV RNGLIKKJNJSKVLXNZ RYXZWZSYQ RU[WZXYYWYSXQWPUO RPJPW RQJQU RRIRTQVPW RPJRIUFWGYGZF RTGVHXH RSHUIWIYHZF RYHUOU[ RUSYS RUVYV",
  3508: "112F^HHJFMFOGQF RKGNG RHHJGLHOHQF RMKLLKNKOIOHPHRIQKQKW RLMLU RIPLP RMKMTLVKW RJ[MYPXSXUY RLZOYRYTZ RJ[NZQZS[UY RRIQJPLPU RQKQS RRIRRQTPU RRITGVFXFZG RWGXGYH RTGVGXIZG RUOWNYLZM[P[TZXX[ RXMYNZPZUYX RWNXNYPYUX[ RUOUY RURYR RUUYU",
  3509: " 67I\\LHNFQFTGVF ROGSG RLHNGQHTHVF RSKRLQNQOOONPNROQQQQV RRMRT ROPRP RSKSSRUQV RYHWJVMVXUZSZOXMXKYI[ RWKWW RRZQZOYLY RYHXJXVWXUZS[P[NZKZI[",
  3510: " 65H\\LHNFQFTGVF ROGSG RLHNGQHTHVF RSKRLQNQOOONPNROQQQQV RRMRT ROPRP RSKSSRUQV RYHWJVMVXUZ RWKWW RYHXJXVWXUZR[O[LZJXJVKULUMVLWKW RJVMV",
  3511: "115F^HHJFMFOGQF RKGNG RHHJGLHOHQF RMKLLKNKOIOHPHRIQKQKW RLMLU RIPLP RMKMTLVKW RJ[MYPXSXUY RLZNYRYTZ RJ[NZQZS[UY RRIQJPLPU RQKQS RRIRRQTPU RRITGVFXFZG RWGXGYH RTGVGXIZG RUOXLYM[N RWMYN[N R[NYQWSUU RWSYTZX[Z\\Z RYVZZ RWSXTYZZ[[[\\Z RUOUY",
  3512: " 85G]IHKFNFPGRF RLGOG RIHKGMHPHRF RNKMLLNLOJOIPIRJQLQLW RMMMU RJPMP RNKNTMVLW RK[NYRXWX[Y RMZPYWYZZ RK[OZVZY[[Y RSIRJQLQU RRKRS RSISRRTQU RSIUGWFYF[G RXGYGZH RUGWGYI[G RWGWX",
  3513: "107D`LJKKJMJOHOGPGRHQJQJU RKLKS RHPKP RLJLRKTJU RE[GYIXKXMYNYOX RHYKYMZ RE[GZJZL[M[NZOX RLJPFTJTWUYVY RPGSJSXRYSZTYSX RPPSP RNHOHRKROOO ROQRQRXQYS[VYWX RTJXF\\J\\W]Y^Y RXG[J[X]Z RXP[P RVHWHZKZOWO RWQZQZY\\[^Y ROHOX RWHWX",
  3514: " 84E^GIIGKFMFOGQJVUXXYY RMGOIPKVWYZ RIGKGMHOKTVVYWZY[ RVHXIZI\\H]F RWGYH[H RVHXFZG\\G]F RKOIOHPHRIQKQ RIPKP RG[IYKXNXPY RJYMYOZ RG[JZMZN[PY RKGKX RYIY[ RRLSMUNWNYM RKTMSQSST",
  3515: " 79E_NFLGJIIKHNHRIUJWLYNZQ[S[VZXYZW[U\\R\\N[KZIXGVFUGRIOJ RJJIMISJV RNFLHKJJMJSKVLXNZ RZV[S[MYIXH RVZXXYVZSZMYKWHUG ROJOW RPJPU RQJQTPVOW RUGUZ RUMWNXNZM RUSWRXRZS",
  3516: " 70H^KFLGMIMOKOJPJRKQMQMYJ[MZMbO` RMHNJN` RKPNP RKFMGNHOJO` ROKRIVFZJZX RVGYJYX RTHUHXKXY RRXUXXY RSYUYWZ RRZTZV[XYZX RRIR_ RRMTNVNXM RRSTRVRXS",
  3517: " 99E_NFLGJIIKHNHRIUJWLYNZP[T[VZXYZW[U\\R\\N[KZIXGVFUGRIOJ RJJIMISJV RNFLHKJJMJSKVLXNZ RZV[S[MYIXH RVZXXYVZSZMYKWHUG ROJOW RPJPU RQJQTPVOW RUGUZ RUMWNXNZM RUSWRXRZS RP[QZRZT[X`Za[a RT\\V_XaYa RRZS[VaXbZb[a",
  3518: "108F^HHJFMFOGQF RKGNG RHHJGLHOHQF RMKLLKNKOIOHPHRIQKQKW RLMLU RIPLP RMKMTLVKW RJ[MYPXRXUY RLZNYRYTZ RJ[NZQZS[UY RRIQJPLPU RQKQS RRIRRQTPU RRIUGWFYGZIZLYNXOTQRR RWGXGYIYMXN RUGWHXJXMWOTQ RTQVRWSZX[Y\\Y RWTYX[Z RTQVSXYZ[\\Y",
  3519: " 94G^UITHRGOF RVHTG RWGSFOFLGKHJJKLLMONWNYOZPZRYU RKKLLOMXMZN[O[QZS RKHKJLKOLYL[M\\O\\QYUU[ RIOJPLQUQVRVSUU RJQLRTRUS RIOIPJRLSSSUTUU RI[LYPXSXVY RKZNYRYUZ RI[MZRZU[ RWGUISL RRNPQ ROSMUKVJVJUKV",
  3520: " 71E]JJILHOHSIVKYMZP[S[VZXYZW[U RISJVLXNYQZTZWY RJJIMIQJTLWNXQYTYWXYW[U RHIIGKFOFUGYG[F RPGTHXH RHIIHKGNGTIWIYH[F RSIRJPKPV RQKQT RRJRSQUPV RWIWX",
  3521: " 89F^HHJFLFOGQF RKGNG RHHJGMHOHQF RKJJLIOISJVKXMZP[S[VZXYZ[\\Y RJSKVNYQZTZ RKJJNJQKTLVNXQYUYXX RUIQJPLPV RQKQT RRJRSQUPV RUIWHYFZG\\HZIZW[Y\\Y RYIZHYGXHYIYX[Z RWHXIXX RUIUY RUNXN RURXR",
  3522: " 72G^JFKGLILOJOIPIRJQLQLXJY RLHMJMX RJPMP RNYQYSZ RJFLGMHNJNXRXUY RJYMYPZR[UYXXZX RRJUIWHYFZG\\HZIZX RYIZHYGXHYIYW RWHXIXX RRJRX RRMTNVNXM RRSTRVRXS",
  3523: " 95E`HFIGJIJOHOGPGRHQJQJXHY RJHKJKX RHPKP RLYNYPZ RHFJGKHLJLXOXQY RHYKYNZO[QYTXVYW[YY\\X ROHRFTHTXWXYY RRGSHSX ROHQHRIRXQY RWYXZ RWHZF\\H\\X RZG[H[X RWHYHZIZXYY ROHOX RWHWX RONRN RORRR RWNZN RWRZR",
  3524: " 65G]HIJGLFNFOGWYXZZZ RMGNHVYWZ RJGLGMHUZV[X[ZZ\\X RWFYG[G\\F RWGXHZH RVHWIYI[H\\F RH[IYKXMXNY RJYLYMZ RH[IZKZM[ RWFSO RQRM[ RLPPP RSPXP",
  3525: " 86G^JFKGLILOJOIPIRJQLQLXJY RLHMJMX RJPMP RNYQYSZ RJFLGMHNJNXRXUY RJYMYPZR[UYXX RRJUIWHYFZG\\HZIZ^Y`WbUaQ`L` RYIZHYGXHYIYY RWHXIXXZ[ RXaV`S` RY`V_P_L` RRJRX RRMTNVNXM RRSTRVRXS",
  3526: " 57H\\XGWIROOSMWJ[ RVKNV RZFWJUNRRMXLZ RJHLFOGUGZF RKGOHSHWG RJHNIRIVHXG RLZNYRXVXZY RMZQYUYYZ RJ[OZUZX[ZY RMPQP RTPXP",
  3601: " 53J[PRNTMVMXNZP[RYUX RMVNXOYQZ RNTNVOXQYRY RNPPPSOUNVMXOWPWXXYYY RONNOQO RTOWOVNVYWZ RMOOMPNROUPUYW[YY RMORT",
  3602: " 44I[LHMJMXKY RNJMHNGNXQZ RLHOFOXQYRZ RKYMYOZP[RZUYWY ROPROTNUMVNXOYOWPWY RTNVOVX RROSOUPUY",
  3603: " 35JXNONXLYMYOZP[ ROOOYQZ RPOPXRYSYQZP[ RNORNTMUNWOXO RSNTOVO RPORNTPVPXO",
  3604: " 41IZRMPNMOMXKY RNONXQZ RRMOOOXQYRZ RKYMYOZP[RZUYWY RMHPFQIWOWY RPINHOGPIVOVX RMHUPUY",
  3605: " 32JXNONXLYMYOZP[ ROOOYQZ RPOPXRYSYQZP[ RNORNTMWQURPU RSNVQ RPORNUR",
  3606: " 41JWNHNXLYMYOZP[ ROHOYQZ RPHPXRYSYQZP[ RNHQGSFTGVHWH RRGSHUH RPHQGSIUIWH RKMNM RPMTM",
  3607: " 56I[MOMXKYLYNZO[PZRYUX RNPNYPZ ROOOXQYRY RMOOORNTMUNWOYOWPW\\V_TaRbQaO`M` RSNVPV\\ RSaQ`P` RRNSOUPUZV]V_ RTaS`Q_O_M`",
  3608: " 47I[LHMJMXKYLYNZO[ RNJMHNGNYPZ RLHOFOXQYO[ ROPROTNUMVNXOYOWPWYU[T] RTNVOVYU[ RROSOUPUYT]T`UbVbT`",
  3609: " 35MWRFPHRITHRF RRGQHSHRG RRMQNOOQPQYS[UY RRPSORNQORPRYSZ RRMSNUOSPSXTYUY",
  3610: " 39MWRFPHRITHRF RRGQHSHRG RRMQNOOQPQYS[T] RRPSORNQORPRYS[ RRMSNUOSPSYT]T`RbPbPaRb",
  3611: " 50IZLHMJMXKYLYNZO[ RNJMHNGNYPZ RLHOFOXQYO[ ROPRNTMVPSROU RSNUP RRNTQ RSRTSVXWYXY RSSTTUYVZ RRSSTTYV[XY",
  3612: " 22MWPHQJQXOYPYRZS[ RRJQHRGRYTZ RPHSFSXUYVYTZS[",
  3613: " 67E_GOHOIPIXGYHYJZK[ RINJOJYLZ RGOIMKOKXMYK[ RKPNOPNQMSOSXUYS[ RPNRORYTZ RNOOOQPQXPYRZS[ RSPVOXNYMZN\\O]O[P[X\\Y]Y RXNZOZY[Z RVOWOYPYY[[]Y",
  3614: " 45I[KOLOMPMXKYLYNZO[ RMNNONYPZ RKOMMOOOXQYO[ ROPROTNUMVNXOYOWPWXXYYY RTNVOVYWZ RROSOUPUYW[YY",
  3615: " 40I[MOMXKY RNPNXQZ ROOOXQYRZ RKYMYOZP[RZUYWY RMOOORNTMUNWOYOWPWY RSNVPVX RRNSOUPUY",
  3616: " 54I[LMMOMXKYMYMb RMNNONaO`N^ RNYOYQZ RLMNNOOOXQYRZ ROZP[RZUYWY ROZO^P`Mb ROPROTNUMVNXOYOWPWY RTNVOVX RROSOUPUY",
  3617: " 44I[MOMXKY RNPNYPZ ROOOXQYRY RKYLYNZO[PZRYUX RMOOORNTMUNWOYOWPWb RSNVPVaU`V^ RRNSOUPU^T`Wb",
  3618: " 38JXLOMONPNXLYMYOZP[ RMNOOOYQZ RLONMPOPXRYSYQZP[ RPOTMUNWOXO RSNTOVO RRNTPVPXO",
  3619: " 59JZMOMSOTUTWUWY RNONS RVUVY RPNOOOSQT RSTUUUYTZ RMOPNRMTNVNWM RQNSN RPNROTOVN RWYTZR[PZNZL[ RSZQZ RTZRYOYL[ RWMVOTROWL[",
  3620: " 28MWPHQJQXOYPYRZS[ RRJQHRGRYTZ RPHSFSXUYVYTZS[ RNMQM RSMVM",
  3621: " 47I[KOLOMPMXKY RLNNONYPZ RKOMMOOOXQYRY RKYLYNZO[PZRYUX RUMVNXOYOWPWXXYYY RTNVOVYWZ RUMSOUPUYW[YY",
  3622: " 36I[LMMOMXP[RYUXWX RMNNONXQZ RLMNNOOOWPXRY RUMVNXOYOWPWX RTNVOVW RUMSOUPUX",
  3623: " 57E_HMIOIXL[NYQX RINJOJXMZ RHMJNKOKWLXNY RQMOOQPQXT[VYYX[X RPNRORXUZ RQMRNTOSPSWTXVY RYMZN\\O]O[P[X RXNZOZW RYMWOYPYX",
  3624: " 59H[KOLONPOQSYTZV[XY RMNOOTYVZ RKOMMONPOTWUXWYXY RRSUMVNXNYM RUNVOWO RTOVPXOYM RQUN[MZKZJ[ RNZMYLY ROYMXKYJ[ RMTPT RSTVT",
  3625: " 60I[KOLOMPMXKY RLNNONYPZ RKOMMOOOXQYRY RKYLYNZO[PZRYUX RUMVNXOYOWPW\\V_TaRbQaO`M` RTNVOV\\ RSaQ`P` RUMSOUPUZV]V_ RTaS`Q_O_M`",
  3626: " 38I[XML[ RLONPQPTOXM RMNOOSO RLONMPNTNXM RL[PYSXVXXY RQYUYWZ RL[PZTZV[XY RNTVT",
  3700: " 42H\\LHLXJY RMIMXPZ RNHNXPYQZ RLHNHSGUF RSGTHVIVY RTGWIWX RUFVGXHZHXIXY RJYLYNZO[QZVYXY",
  3701: " 27H\\OHPIQKQXOY RQIPHQGRIRYTZ ROHRFSHSXUYVY ROYPYRZS[TZVY",
  3702: " 48H\\LHNHPGQFSGVHXH RPHRG RLHNIPIRHSG RVHVP RWIWO RXHXPQPNQLSKVK[ RK[OYSXVXZY RNZQYVYYZ RK[PZUZX[ZY",
  3703: " 57H\\LHMHOGPFRGVHXH ROHQG RLHNIPIRG RVHVO RWIWN RXHXOVOSPQQ RQPSQVRXRXY RWSWX RVRVY RKYMXOXQYRZ ROYQZ RKYMYOZP[RZVYXY",
  3704: " 41H\\UFKPKUTU RVUZU[V[TZU RLPLT RMNMU RTGTXRY RUJVHUGUYWZ RUFWHVJVXXYYY RRYSYUZV[WZYY",
  3705: " 53H\\LFLO RLFXF RMGVG RLHUHWGXF RVLUMSNOOLO RSNTNVOVY RUMWNWX RVLWMYNZNXOXY RKYMXOXQYRZ ROYQZ RKYMYOZP[RZVYXY",
  3706: " 59H\\LHLXJY RMIMXPZ RNHNXPYQZ RLHNHRGTFUGWHXH RSGUH RRGTIVIXH RNPOPSOUNVM RSOTOVPVY RUNWPWX RVMWNYOZOXPXY RJYLYNZO[QZVYXY",
  3707: " 38H\\KHMFPGUGZF RLGOHTHWG RKHOIRIVHZF RZFYHWKSOQRPUPXQ[ RRQQTQWRZ RUMSPRSRVSYQ[",
  3708: " 71H\\LILO RMJMN RNINO RLINISHUGVF RSHTHVIVO RUGWHWN RVFWGYHZHXIXO RLONOVRXR RXOVONRLR RLRLXJY RMSMXPZ RNRNXPYQZ RVRVY RWSWX RXRXY RJYLYNZO[QZVYXY",
  3709: " 60H\\LHLQJR RMIMROS RNHNQPRQR RLHNHSGUF RSGTHVIVY RTGWIWX RUFVGXHZHXIXY RJRKRMSNTOSQRUQVQ RKYMXOXQYRZ ROYQZ RKYMYOZP[RZVYXY",
  3710: " 11LXRXPZR[TZRX RRYQZSZRY",
  3711: " 14LXR^R\\PZRXSZS\\R^P_ RRYQZR[RY",
  3712: " 22LXRMPORPTORM RRNQOSORN RRXPZR[TZRX RRYQZSZRY",
  3713: " 25LXRMPORPTORM RRNQOSORN RR^R\\PZRXSZS\\R^P_ RRYQZR[RY",
  3714: " 30LXRFQGOHQIRT RRISHRGQHRIRT RRFSGUHSIRT RRXPZR[TZRX RRYQZSZRY",
  3715: " 51I[LJMHNGQFSFVGWHXJXLWNUPSQ RMJNH RVHWIWMVN RLJNKNIOGQF RSFUGVIVMUOSQ RRQRTSQQQRT RRXPZR[TZRX RRYQZSZRY",
  3716: " 14LXTFRGQIQKRMTKRIRG RRJRLSKRJ",
  3717: " 14LXRLRJPHRFSHSJRLPM RRGQHRIRG",
  3718: " 62E_YNZO[O\\N RXOYP[P RXPYQZQ[P\\N RYNST RRUL[HVNP ROOSKOFJLPRTXVZX[Z[[Z\\X RLZIV RRKOG RKLPQTWVYXZ[Z RMZIU RRLNG RKKQQUWVXXY[Y\\X",
  3719: " 60H\\PBP_ RTBT_ RTFVGWIWKYJXHWGTFPFMGKIKLLNOPURWSXUXXWZ RXJWH RLLMNOOUQWRXT RMYLW RMGLILKMMONUPXRYTYWXYWZT[P[MZLYKWMVMXNZP[",
  3720: "  8G^[BIbJb R[B\\BJb",
  3721: " 27KYUBSDQGOKNPNTOYQ]S`Ub RQHPKOOOUPYQ\\ RSDRFQIPOPUQ[R^S`",
  3722: " 27KYOBQDSGUKVPVTUYS]Q`Ob RSHTKUOUUTYS\\ RQDRFSITOTUS[R^Q`",
  3723: " 39JZRFQGSQRR RRFRR RRFSGQQRR RMINIVOWO RMIWO RMIMJWNWO RWIVINOMO RWIMO RWIWJMNMO",
  3724: "  8F_JQ[Q[R RJQJR[R",
  3725: " 16F_RIRZSZ RRISISZ RJQ[Q[R RJQJR[R",
  3726: " 16F_JM[M[N RJMJN[N RJU[U[V RJUJV[V",
  3727: " 11NWSFRGRM RSGRM RSFTGRM",
  3728: " 22I[NFMGMM RNGMM RNFOGMM RWFVGVM RWGVM RWFXGVM",
  3729: " 30KYQFOGNINKOMQNSNUMVKVIUGSFQF RQFNIOMSNVKUGQF RSFOGNKQNUMVISF",
  3801: " 52E_NHLIJKIMHPHSIUKV RJLIOISJU RNHLJKLJOJRKVKXJZH[ RVHXHXYVY RYHYY RZGZZ RHFKGQHVHZG\\F RJPXP RH[KZQYVYZZ\\[",
  3802: " 65E_LGLZ RMGMZ RPFNGNZP[ RHJJHLGPFUFXGZIZKYM RXHYIYKXM RUFWGXIXKWL RQUOTNRNPONPMSLVLYM[O\\Q\\T[WYYWZT[P[LZJYHW RZO[Q[UZW RVLYNZQZUYXWZ",
  3803: " 60E_\\F[HZJXHVGSFQFNGLHJJILHOHRIUJWLYNZQ[S[VZXYZW[Y\\[ R[HZMZT[Y RZKYJ RZNYKXIVG RJKINISJV RNGLIKKJNJSKVLXNZ RYWZV RVZXXYVZS",
  3804: " 46E_KGKZ RLGLZ RNFMGMZN[ RHKIIKGNFSFVGXHZJ[L\\O\\R[UZWXYVZS[N[KZIXHV RZK[N[SZV RVGXIYKZNZSYVXXVZ",
  3805: " 86E_\\F[HZJXHVGSFQFNGLHJJILHOHRIUJWLYNZQ[S[VZXYZW[Y\\[ R[HZMZT[Y RZKYJ RZMXIVG RJKINISJV RNGLIKKJNJSKVLXNZ RYWZV RVZXXYVZS RJPKONOUQXQZP RPPRQURWRYQ RMORRUSWSYRZP RZMYLXLWMXNYM",
  3806: " 69E_JHJZ RMGKHKY ROFMGLILYNY RHJJHLGOFSFVGXHYI\\F R\\F[HZLZO[S\\U RZIYK RVGXIYLZO RLPMOOOTPWPYO RQPTQVQXP RNOTRVRXQYOYLXKWKVLWMXL RH[JZNYSYYZ\\[",
  3807: " 90E_\\F[HZJXHVGSFQFNGLHJJILHOHRIUJWLYNZQ[T[VZXYYXZV[Y\\[ R[HZMZT[Y RZKYJ RZNYKXIVG RJKINISJV RNGLIKKJNJSKVLXNZ RXXYVYR RVZWYXVXQ RKSLRMSLTKTJS RJPKNMMOMRNUPWQ RKOMNONROTP RJPLOOOUQYQZP",
  3808: " 50E_JGJZH[ RKHKZ RNHLHLZ RHFJGNHSHYG\\F RLPMNOLRKVKYL[N\\Q\\T[UYV RZN[P[SZU RVKXLYMZOZSYVYXZZ\\[ RH[LZPZU[",
  3809: " 23E_QIQY RRJRX RSISY RHFLHPITIXH\\F RH[KZOYUYYZ\\[",
  3810: " 42E_TIVIVXUZS[ RWIWXVY RXHXY RHFLHPITIXH\\F RIOHQHUIXKZN[S[VZXYZW\\T RIUJXKY RHSJUKXLZN[",
  3811: " 70E_JGJZH[ RKHKZ RNHLHLZ RHFJGNHSHYG\\F RLPMNOLRKUKXLYMYOXPSRQSPTPUQVRUQT RWLXMXOWP RUKWMWOVPSR RSRVRYSZUZWYX RWSYUYW RSRVSXUYXZZ[[\\[ RH[LZPZU[",
  3812: " 45E_JGJZ RKHKY RNHLHLYNY R\\KZNYPXSXUYW[X RZOYRYUZW R\\K[MZQZT[X\\[ RHFJGNHSHYG\\F RH[JZNYSYYZ\\[",
  3813: " 68E_QIQY RRJRX RSISY RNYLWJVIUHRHMIJKHMGPFTFWGYH[J\\M\\R[UZVXWVY RJUIRIMJJ RLWKUJRJLKIMG RZJ[M[RZU RWGYIZLZRYUXW RHFLHPITIXH\\F RH[KZOYUYYZ\\[",
  3814: " 48E_JHJZH[ RLHKIKZ ROFMGLILZ RHJJHLGOFSFVGXHZJ[L\\O\\S[UYV RZK[N[RZU RVGXIYKZNZRYVYXZZ[[\\[ RH[LZPZU[",
  3815: " 54E_QFNGLHJJILHOHRIUJWLYNZQ[S[VZXYZW[U\\R\\O[LZJXHVGSFQF RJKINISJV RNGLIKKJNJSKVLXNZ RZV[S[NZK RVZXXYVZSZNYKXIVG",
  3816: " 51E_JIJZ RMHKJKY RQFOGMILKLYNY RHKJINGQFTFWGYH[J\\M\\O[RYTVURUOTMRLO RZJ[L[PZR RWGYIZLZPYSVU RH[JZNYSYYZ\\[",
  3817: " 74E_QFNGLHJJILHOHRIUJWLYNZQ[S[VZXYZW[U\\R\\O[LZJXHVGSFQF RJKINISJV RNGLIKKJNJSKVLXNZ RZV[S[NZK RVZXXYVZSZNYKXIVG RJSKUNVTW[W\\X\\Z[[[Z\\Y RPWRW RKUNWQXSXTW",
  3818: " 69E_JIJZH[ RKIKZ RLHLZ RHKJILHNGQFUFYG[I\\K\\N[PZQ RYHZI[K[NZP RUFWGYIZKZOYQ RXRUSRSPRPPROUOXPZR\\U\\W[XZX RXQYR[V[WZT RTOVPXRYTZX[Z\\[ RH[LZPZU[",
  3819: " 94E_TFZG\\F[H[JYHWGTFPFMGJJIMIOJRLTOURUTTUSVQVP R[GZH[J RJPKRLSOTRTTS RKIJKJNKPMRPSRSTRVPWOXO RLQMQNPPNRMUMWNYPZRZUYXWZ RPMRLULXMZO[R[UZW RIWJYIZ RNPNOOMPLRKUKXL[O\\R\\T[WYYWZT[P[MZKYIWIYH[JZP[",
  3820: " 66E_QHMHKIJJILHOHSIVJXKYMZP[S[VZXYZW[U\\R\\N[KYIWH RUHTITKULVKUJ RISJVLXNYQZTZWY RJJINIQJTLWNXQYTYWXYW[T\\R RHFKI RKHLG RIGJGKFMGQHWHZG\\F",
  3821: " 51E_LHJJILHOHRIUJWLYNZQ[U[XZZY RKJJLIOISJV RKILJLKKMJPJSKVLXNZ RVHXHXXWZU[ RYHYXXY RZGZY\\[ RHFKGQHVHZG\\F",
  3822: " 31E_HFR[ RIGJHQWRY RJGKHRWSX R\\FR[ RWNUS RYLUQTTTV RHFJGOHUHZG\\F",
  3823: " 67E_LHJJILHOHRIUJWLYNZQ[S[VZXYZW[U\\R\\O[LZJXH RJLIOIRJUKW RJJKKKLJOJRKVLXNZ RYWZU[R[OZL RVZXXYVZRZOYLYKZJ RQIQ[ RRJRZ RSIS[ RHFLHPITIXH\\F",
  3824: " 41E_HFXYYZ RIGKHZZ RLH\\[ R\\FSP RQRJZ RPSMULW RQRMTLUKWKY RHFLHPITIXH\\F RH[JZNYSYYZ\\[",
  3825: " 47E_XHXZ RYHYY RZGZY RKHIJHMHPISKUMVPWSWVVXU RLUOVUV RHPIRKTNUTUVV RHFLHPITIXH\\F RHWJYLZP[T[XZ\\X",
  3826: " 73E_HFIGKHNHSFVFYGZIZKYM RXGYIYKXM RVFWGXIXL RXNTOROPNPLRKTKXL RTKVLWMVNTO RYM[O\\R\\T[WYYWZT[P[MZKYIWHTHRIOJNLMNMPNPPOQNPOO RXMZO[Q[UZW RXNYOZQZUYXWZ",
  3901: " 42J[PQMTMXP[TY RNTNXPZ ROROWRZ RRSMNNMONNO RONSNUMWOWXXY RUNVOVXUYVZWYVX RSNUPUXTYV[XY",
  3902: " 31IZNHLFMJMXP[UYWX RNHNXPZ RNHPFOJOWRZ ROOTMWPWX RTNVPVX RRNUQUY",
  3903: " 23KWNPNYP[RY ROPOYPZ RPOPXQYRY RNPTMVOTPRN RSNUO",
  3904: " 32JZRMMPMXP[RZUYWY RNPNXPZ ROOOWRZ RPIPFQIWPWY RPIVPVX RPIMIPJUPUY",
  3905: " 25KXNPNYP[RY ROPOYPZ RPOPXQYRY RNPTMWQPU RSNVQ RRNUR",
  3906: " 32KWOIOXNYP[ RPIPXOYPZQYPX RQHQXRYP[ ROIUFWHUISG RTGVH RLMOM RQMUM",
  3907: " 41J[MPMXP[UY RNPNXPZ ROOOWRZ RMPOOTMWPW]V_U`SaQaO`MaObQa RTNVPV]U_ RPaNa RRNUQU^T`Sa",
  3908: " 42I[NHLFMJMXLYN[ RNHNXMYNZOYNX RNHPFOJOXPYN[ ROORNTMWPWYT]T`UbVbT` RTNVPVYU[ RRNUQUZT]",
  3909: " 37MWRFPHRJTHRF RRGQHRISHRG RRMPOQPQXPYR[ RRPSORNQORPRXQYRZSYRX RRMTOSPSXTYR[",
  3910: " 37MWRFPHRJTHRF RRGQHRISHRG RRMPOQPQYT] RRPSORNQORPRYS[ RRMTOSPSZT]T`RbPaPbRb",
  3911: " 51IZNHLFMJMXLYN[ RNHNXMYNZOYNX RNHPFOJOXPYN[ ROPRNTMVPSROU RSNUP RRNTQ RRSSTTYV[XY RSSTUUYVZ RSRTSVXWYXY",
  3912: " 21MWRHPFQJQXPYR[ RRHRXQYRZSYRX RRHTFSJSXTYR[",
  3913: " 66E_GOHOIPIXHYJ[ RINJOJXIYJZKYJX RGOIMKOKXLYJ[ RKONNPMSOSXTYR[ RPNRORXQYRZSYRX RNNQPQXPYR[ RSOVNXM[O[X\\YZ[ RXNZOZXYYZZ[YZX RVNYPYXXYZ[",
  3914: " 44I[KOLOMPMXLYN[ RMNNONXMYNZOYNX RKOMMOOOXPYN[ ROORNTMWOWXXYV[ RTNVOVXUYVZWYVX RRNUPUXTYV[",
  3915: " 28JZMPMXP[UYWX RNPNXPZ ROOOWRZ RMPOOTMWPWX RTNVPVX RRNUQUY",
  3916: " 47IZLMMOMXKYMYM_LbN` RNON` RLMNNOOOXQYRZ RNYOYQZ ROZP[UYWX ROZO_PbN` ROORNTMWPWX RTNVPVX RRNUQUY",
  3917: " 31J[MPMXP[UY RNPNXPZ ROOOWRZ RMPOOTMWPW_XbV` RTNVPV` RRNUQU_TbV`",
  3918: " 31KXMONOOPOXNYP[ RONPOPXOYPZQYPX RMOOMQOQXRYP[ RQOUMWOUPSN RTNVO",
  3919: " 41JZMPMSOUURWTWX RNPNSOT ROOOSPT RUSVTVX RTSUTUY RMPSMVNTOQN RRNUN RWXQ[MYOXSZ ROYQZ",
  3920: " 27MWRHPFQJQXPYR[ RRHRXQYRZSYRX RRHTFSJSXTYR[ RNMQM RSMVM",
  3921: " 40I[KOLOMPMYP[UY RMNNONYPZ RKOMMOOOXRZ RVMXOWPWXXYYY RVPWOVNUOVPVYWZ RVMTOUPUYW[YY",
  3922: " 36I[LMMOMXQ[SYWW RMNNONXQZ RLMNNOOOWRYSY RVMXOWPWW RVPWOVNUOVPVW RVMTOUPUX",
  3923: " 59E_HMIOIXM[OYQX RINJOJXMZ RHMJNKOKWNYOY RRMPOQPQXU[WY[W RRPSORNQORPRXUZ RRMTOSPSWVYWY RZM\\O[P[W RZP[OZNYOZPZW RZMXOYPYX",
  3924: " 39I[LONPUZV[XY RMNOOUYWZ RLONMONVXXY RXMVMVOXOXMVOSS RQUNYL[N[NYLYL[ RNTQT RSTVT",
  3925: " 49I[KOLOMPMYP[UY RMNNONYPZ RKOMMOOOXRZ RVMXOWPW]V_U`SaQaO`MaObQa RVPWOVNUOVPV^U_ RPaNa RVMTOUPU^T`Sa",
  3926: " 43L[RNOPOORNTMWOWSRU RTNVOVS RRNUPUSTT RRUWWW]V_U`SaQaO`MaObQa RVWV^U_ RPaNa RTVUWU^T`Sa"
}, x = {
  "\\frac": { glyph: 0, arity: 2, flags: {} },
  "\\binom": { glyph: 0, arity: 2, flags: {} },
  "\\sqrt": {
    glyph: 2267,
    arity: 1,
    flags: { opt: !0, xfl: !0, yfl: !0 }
  },
  "^": { glyph: 0, arity: 1, flags: {} },
  _: { glyph: 0, arity: 1, flags: {} },
  "(": { glyph: 2221, arity: 0, flags: { yfl: !0 } },
  ")": { glyph: 2222, arity: 0, flags: { yfl: !0 } },
  "[": { glyph: 2223, arity: 0, flags: { yfl: !0 } },
  "]": { glyph: 2224, arity: 0, flags: { yfl: !0 } },
  "\\langle": { glyph: 2227, arity: 0, flags: { yfl: !0 } },
  "\\rangle": { glyph: 2228, arity: 0, flags: { yfl: !0 } },
  "|": { glyph: 2229, arity: 0, flags: { yfl: !0 } },
  "\\|": { glyph: 2230, arity: 0, flags: { yfl: !0 } },
  "\\{": { glyph: 2225, arity: 0, flags: { yfl: !0 } },
  "\\}": { glyph: 2226, arity: 0, flags: { yfl: !0 } },
  "\\#": { glyph: 2275, arity: 0, flags: {} },
  "\\$": { glyph: 2274, arity: 0, flags: {} },
  "\\&": { glyph: 2273, arity: 0, flags: {} },
  "\\%": { glyph: 2271, arity: 0, flags: {} },
  /*semantics*/
  "\\begin": { glyph: 0, arity: 1, flags: {} },
  "\\end": { glyph: 0, arity: 1, flags: {} },
  "\\left": { glyph: 0, arity: 1, flags: {} },
  "\\right": { glyph: 0, arity: 1, flags: {} },
  "\\middle": { glyph: 0, arity: 1, flags: {} },
  /*operators*/
  "\\cdot": { glyph: 2236, arity: 0, flags: {} },
  "\\pm": { glyph: 2233, arity: 0, flags: {} },
  "\\mp": { glyph: 2234, arity: 0, flags: {} },
  "\\times": { glyph: 2235, arity: 0, flags: {} },
  "\\div": { glyph: 2237, arity: 0, flags: {} },
  "\\leqq": { glyph: 2243, arity: 0, flags: {} },
  "\\geqq": { glyph: 2244, arity: 0, flags: {} },
  "\\leq": { glyph: 2243, arity: 0, flags: {} },
  "\\geq": { glyph: 2244, arity: 0, flags: {} },
  "\\propto": { glyph: 2245, arity: 0, flags: {} },
  "\\sim": { glyph: 2246, arity: 0, flags: {} },
  "\\equiv": { glyph: 2240, arity: 0, flags: {} },
  "\\dagger": { glyph: 2277, arity: 0, flags: {} },
  "\\ddagger": { glyph: 2278, arity: 0, flags: {} },
  "\\ell": { glyph: 662, arity: 0, flags: {} },
  /*accents*/
  "\\vec": {
    glyph: 2261,
    arity: 1,
    flags: { hat: !0, xfl: !0, yfl: !0 }
  },
  "\\overrightarrow": {
    glyph: 2261,
    arity: 1,
    flags: { hat: !0, xfl: !0, yfl: !0 }
  },
  "\\overleftarrow": {
    glyph: 2263,
    arity: 1,
    flags: { hat: !0, xfl: !0, yfl: !0 }
  },
  "\\bar": { glyph: 2231, arity: 1, flags: { hat: !0, xfl: !0 } },
  "\\overline": { glyph: 2231, arity: 1, flags: { hat: !0, xfl: !0 } },
  "\\widehat": {
    glyph: 2247,
    arity: 1,
    flags: { hat: !0, xfl: !0, yfl: !0 }
  },
  "\\hat": { glyph: 2247, arity: 1, flags: { hat: !0 } },
  "\\acute": { glyph: 2248, arity: 1, flags: { hat: !0 } },
  "\\grave": { glyph: 2249, arity: 1, flags: { hat: !0 } },
  "\\breve": { glyph: 2250, arity: 1, flags: { hat: !0 } },
  "\\tilde": { glyph: 2246, arity: 1, flags: { hat: !0 } },
  "\\underline": { glyph: 2231, arity: 1, flags: { mat: !0, xfl: !0 } },
  "\\not": { glyph: 2220, arity: 1, flags: {} },
  "\\neq": { glyph: 2239, arity: 1, flags: {} },
  "\\ne": { glyph: 2239, arity: 1, flags: {} },
  "\\exists": { glyph: 2279, arity: 0, flags: {} },
  "\\in": { glyph: 2260, arity: 0, flags: {} },
  "\\subset": { glyph: 2256, arity: 0, flags: {} },
  "\\supset": { glyph: 2258, arity: 0, flags: {} },
  "\\cup": { glyph: 2257, arity: 0, flags: {} },
  "\\cap": { glyph: 2259, arity: 0, flags: {} },
  "\\infty": { glyph: 2270, arity: 0, flags: {} },
  "\\partial": { glyph: 2265, arity: 0, flags: {} },
  "\\nabla": { glyph: 2266, arity: 0, flags: {} },
  "\\aleph": { glyph: 2077, arity: 0, flags: {} },
  "\\wp": { glyph: 2190, arity: 0, flags: {} },
  "\\therefore": { glyph: 740, arity: 0, flags: {} },
  "\\mid": { glyph: 2229, arity: 0, flags: {} },
  "\\sum": { glyph: 2402, arity: 0, flags: { big: !0 } },
  "\\prod": { glyph: 2401, arity: 0, flags: { big: !0 } },
  "\\bigoplus": { glyph: 2284, arity: 0, flags: { big: !0 } },
  "\\bigodot": { glyph: 2281, arity: 0, flags: { big: !0 } },
  "\\int": { glyph: 2412, arity: 0, flags: { yfl: !0 } },
  "\\oint": { glyph: 2269, arity: 0, flags: { yfl: !0 } },
  "\\oplus": { glyph: 1284, arity: 0, flags: {} },
  "\\odot": { glyph: 1281, arity: 0, flags: {} },
  "\\perp": { glyph: 738, arity: 0, flags: {} },
  "\\angle": { glyph: 739, arity: 0, flags: {} },
  "\\triangle": { glyph: 842, arity: 0, flags: {} },
  "\\Box": { glyph: 841, arity: 0, flags: {} },
  "\\rightarrow": { glyph: 2261, arity: 0, flags: {} },
  "\\to": { glyph: 2261, arity: 0, flags: {} },
  "\\leftarrow": { glyph: 2263, arity: 0, flags: {} },
  "\\gets": { glyph: 2263, arity: 0, flags: {} },
  "\\circ": { glyph: 902, arity: 0, flags: {} },
  "\\bigcirc": { glyph: 904, arity: 0, flags: {} },
  "\\bullet": { glyph: 828, arity: 0, flags: {} },
  "\\star": { glyph: 856, arity: 0, flags: {} },
  "\\diamond": { glyph: 743, arity: 0, flags: {} },
  "\\ast": { glyph: 728, arity: 0, flags: {} },
  /*verbatim symbols*/
  "\\log": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\ln": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\exp": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\mod": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\lim": { glyph: 0, arity: 0, flags: { txt: !0, big: !0 } },
  "\\sin": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\cos": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\tan": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\csc": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\sec": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\cot": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\sinh": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\cosh": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\tanh": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\csch": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\sech": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\coth": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arcsin": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arccos": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arctan": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arccsc": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arcsec": { glyph: 0, arity: 0, flags: { txt: !0 } },
  "\\arccot": { glyph: 0, arity: 0, flags: { txt: !0 } },
  /*font modes*/
  "\\text": { glyph: 0, arity: 1, flags: {} },
  "\\mathnormal": { glyph: 0, arity: 1, flags: {} },
  "\\mathrm": { glyph: 0, arity: 1, flags: {} },
  "\\mathit": { glyph: 0, arity: 1, flags: {} },
  "\\mathbf": { glyph: 0, arity: 1, flags: {} },
  "\\mathsf": { glyph: 0, arity: 1, flags: {} },
  "\\mathtt": { glyph: 0, arity: 1, flags: {} },
  "\\mathfrak": { glyph: 0, arity: 1, flags: {} },
  "\\mathcal": { glyph: 0, arity: 1, flags: {} },
  "\\mathbb": { glyph: 0, arity: 1, flags: {} },
  "\\mathscr": { glyph: 0, arity: 1, flags: {} },
  "\\rm": { glyph: 0, arity: 1, flags: {} },
  "\\it": { glyph: 0, arity: 1, flags: {} },
  "\\bf": { glyph: 0, arity: 1, flags: {} },
  "\\sf": { glyph: 0, arity: 1, flags: {} },
  "\\tt": { glyph: 0, arity: 1, flags: {} },
  "\\frak": { glyph: 0, arity: 1, flags: {} },
  "\\cal": { glyph: 0, arity: 1, flags: {} },
  "\\bb": { glyph: 0, arity: 1, flags: {} },
  "\\scr": { glyph: 0, arity: 1, flags: {} },
  "\\quad": { glyph: 0, arity: 0, flags: {} },
  "\\,": { glyph: 0, arity: 0, flags: {} },
  "\\.": { glyph: 0, arity: 0, flags: {} },
  "\\;": { glyph: 0, arity: 0, flags: {} },
  "\\!": { glyph: 0, arity: 0, flags: {} },
  /*greek letters*/
  "\\alpha": { glyph: 2127, flags: {} },
  "\\beta": { glyph: 2128, flags: {} },
  "\\gamma": { glyph: 2129, flags: {} },
  "\\delta": { glyph: 2130, flags: {} },
  "\\varepsilon": { glyph: 2131, flags: {} },
  "\\zeta": { glyph: 2132, flags: {} },
  "\\eta": { glyph: 2133, flags: {} },
  "\\vartheta": { glyph: 2134, flags: {} },
  "\\iota": { glyph: 2135, flags: {} },
  "\\kappa": { glyph: 2136, flags: {} },
  "\\lambda": { glyph: 2137, flags: {} },
  "\\mu": { glyph: 2138, flags: {} },
  "\\nu": { glyph: 2139, flags: {} },
  "\\xi": { glyph: 2140, flags: {} },
  "\\omicron": { glyph: 2141, flags: {} },
  "\\pi": { glyph: 2142, flags: {} },
  "\\rho": { glyph: 2143, flags: {} },
  "\\sigma": { glyph: 2144, flags: {} },
  "\\tau": { glyph: 2145, flags: {} },
  "\\upsilon": { glyph: 2146, flags: {} },
  "\\varphi": { glyph: 2147, flags: {} },
  "\\chi": { glyph: 2148, flags: {} },
  "\\psi": { glyph: 2149, flags: {} },
  "\\omega": { glyph: 2150, flags: {} },
  "\\epsilon": { glyph: 2184, flags: {} },
  "\\theta": { glyph: 2185, flags: {} },
  "\\phi": { glyph: 2186, flags: {} },
  "\\varsigma": { glyph: 2187, flags: {} },
  "\\Alpha": { glyph: 2027, flags: {} },
  "\\Beta": { glyph: 2028, flags: {} },
  "\\Gamma": { glyph: 2029, flags: {} },
  "\\Delta": { glyph: 2030, flags: {} },
  "\\Epsilon": { glyph: 2031, flags: {} },
  "\\Zeta": { glyph: 2032, flags: {} },
  "\\Eta": { glyph: 2033, flags: {} },
  "\\Theta": { glyph: 2034, flags: {} },
  "\\Iota": { glyph: 2035, flags: {} },
  "\\Kappa": { glyph: 2036, flags: {} },
  "\\Lambda": { glyph: 2037, flags: {} },
  "\\Mu": { glyph: 2038, flags: {} },
  "\\Nu": { glyph: 2039, flags: {} },
  "\\Xi": { glyph: 2040, flags: {} },
  "\\Omicron": { glyph: 2041, flags: {} },
  "\\Pi": { glyph: 2042, flags: {} },
  "\\Rho": { glyph: 2043, flags: {} },
  "\\Sigma": { glyph: 2044, flags: {} },
  "\\Tau": { glyph: 2045, flags: {} },
  "\\Upsilon": { glyph: 2046, flags: {} },
  "\\Phi": { glyph: 2047, flags: {} },
  "\\Chi": { glyph: 2048, flags: {} },
  "\\Psi": { glyph: 2049, flags: {} },
  "\\Omega": { glyph: 2050, flags: {} }
};
function SR(i, t = "math") {
  const R = i.charCodeAt(0);
  if (65 <= R && R <= 90) {
    const e = R - 65;
    return t == "text" || t == "rm" ? e + 2001 : t == "tt" ? e + 501 : t == "bf" || t == "bb" ? e + 3001 : t == "sf" ? e + 2501 : t == "frak" ? e + 3301 : t == "scr" || t == "cal" ? e + 2551 : e + 2051;
  }
  if (97 <= R && R <= 122) {
    const e = R - 97;
    return t == "text" || t == "rm" ? e + 2101 : t == "tt" ? e + 601 : t == "bf" || t == "bb" ? e + 3101 : t == "sf" ? e + 2601 : t == "frak" ? e + 3401 : t == "scr" || t == "cal" ? e + 2651 : e + 2151;
  }
  if (48 <= R && R <= 57) {
    const e = R - 48;
    return t == "it" ? e + 2750 : t == "bf" ? e + 3200 : t == "tt" ? e + 700 : e + 2200;
  }
  return {
    ".": 2210,
    ",": 2211,
    ":": 2212,
    ";": 2213,
    "!": 2214,
    "?": 2215,
    "'": 2216,
    '"': 2217,
    "*": 2219,
    "/": 2220,
    "-": 2231,
    "+": 2232,
    "=": 2238,
    "<": 2241,
    ">": 2242,
    "~": 2246,
    "@": 2273,
    "\\": 804
  }[i];
}
const ct = {
  SUB_SUP_SCALE: 0.5,
  SQRT_MAG_SCALE: 0.5,
  FRAC_SCALE: 0.85,
  LINE_SPACING: 0.5,
  FRAC_SPACING: 0.4
};
function De(i) {
  i = i.replace(/\n/g, " ");
  let t = 0;
  const R = [];
  let e = "";
  for (; t < i.length; )
    i[t] == " " ? e.length && (R.push(e), e = "") : i[t] == "\\" ? e.length == 1 && e[0] == "\\" ? (e += i[t], R.push(e), e = "") : (e.length && R.push(e), e = i[t]) : /[A-Za-z0-9\.]/.test(i[t]) ? e += i[t] : (e.length && e != "\\" && (R.push(e), e = ""), e += i[t], R.push(e), e = ""), t++;
  return e.length && R.push(e), R;
}
function fe(i) {
  return {
    type: x[i] ? "symb" : "char",
    mode: "math",
    text: i,
    chld: [],
    // @ts-ignore
    bbox: null
  };
}
function IR(i) {
  let t = 0, R = {
    type: "node",
    text: "",
    mode: "math",
    chld: [],
    // @ts-ignore
    bbox: null
  };
  function e() {
    if (i[t] != "[")
      return null;
    let n = 0, s = t;
    for (; s < i.length; ) {
      if (i[s] == "[")
        n++;
      else if (i[s] == "]" && (n--, !n))
        break;
      s++;
    }
    const r = IR(i.slice(t + 1, s));
    return t = s, r;
  }
  function o(n) {
    let s = t, r = s, l = 0, a = 0;
    const O = [];
    for (; s < i.length; ) {
      if (i[s] == "{")
        l || (r = s), l++;
      else if (i[s] == "}") {
        if (l--, !l && (O.push(IR(i.slice(r + 1, s))), a++, a == n))
          break;
      } else if (l == 0 && (O.push(fe(i[s])), a++, a == n))
        break;
      s++;
    }
    return t = s, O;
  }
  for (t = 0; t < i.length; t++) {
    const n = x[i[t]], s = {
      type: "",
      text: i[t],
      mode: "math",
      chld: [],
      // @ts-ignore
      bbox: null
    };
    if (n)
      if (n.arity) {
        t++, s.type = "func";
        let r = null;
        n.flags.opt && (r = e(), r && t++);
        const l = o(n.arity);
        s.chld = l, r && s.chld.push(r);
      } else
        s.type = "symb";
    else
      i[t] == "{" ? (s.type = "node", s.text = "", s.chld = o(1)) : s.type = "char";
    R.chld.push(s);
  }
  return R.chld.length == 1 && (R = R.chld[0]), R;
}
function se(i) {
  let t = 0;
  for (; t < i.length; ) {
    if (i[t].text == "\\begin") {
      let R;
      for (R = t; R < i.length && i[R].text != "\\end"; R++)
        ;
      const e = i.splice(t + 1, R - (t + 1));
      se(e), i[t].text = i[t].chld[0].text, i[t].chld = e, i.splice(t + 1, 1);
    }
    t++;
  }
}
function Lt(i, t, R, e, o, n) {
  if (R == null && (R = t), !!i.bbox) {
    n && (i.bbox.x *= t, i.bbox.y *= R), i.bbox.w *= t, i.bbox.h *= R;
    for (let s = 0; s < i.chld.length; s++)
      Lt(i.chld[s], t, R, 0, 0, !0);
    i.bbox.x += e, i.bbox.y += o;
  }
}
function oe(i) {
  let t = 1 / 0, R = -1 / 0, e = 1 / 0, o = -1 / 0;
  for (let n = 0; n < i.length; n++)
    i[n].bbox && (t = Math.min(t, i[n].bbox.x), e = Math.min(e, i[n].bbox.y), R = Math.max(R, i[n].bbox.x + i[n].bbox.w), o = Math.max(o, i[n].bbox.y + i[n].bbox.h));
  return { x: t, y: e, w: R - t, h: o - e };
}
function He(i) {
  if (!i.length)
    return null;
  const t = oe(i);
  for (let e = 0; e < i.length; e++)
    i[e].bbox && (i[e].bbox.x -= t.x, i[e].bbox.y -= t.y);
  return {
    type: "node",
    text: "",
    mode: "math",
    chld: i,
    bbox: t
  };
}
function Ge(i, t = "center") {
  for (let a = 0; a < i.length; a++)
    if (i[a].text == "^" || i[a].text == "'") {
      let O = 0, M = a;
      for (; M > 0 && (i[M].text == "^" || i[M].text == "_" || i[M].text == "'"); )
        M--;
      O = i[M].bbox.y, i[a].text == "'" ? i[a].bbox.y = O : (Lt(i[a], ct.SUB_SUP_SCALE, null, 0, 0), x[i[M].text] && x[i[M].text].flags.big ? i[a].bbox.y = O - i[a].bbox.h : i[M].text == "\\int" ? i[a].bbox.y = O : i[a].bbox.y = O - i[a].bbox.h / 2);
    } else if (i[a].text == "_") {
      let O = 1, M = a;
      for (; M > 0 && (i[M].text == "^" || i[M].text == "_" || i[M].text == "'"); )
        M--;
      O = i[M].bbox.y + i[M].bbox.h, Lt(i[a], ct.SUB_SUP_SCALE, null, 0, 0), x[i[M].text] && x[i[M].text].flags.big ? i[a].bbox.y = O : i[M].text == "\\int" ? i[a].bbox.y = O - i[a].bbox.h : i[a].bbox.y = O - i[a].bbox.h / 2;
    }
  function R(a, O, M, X, P) {
    let N = a, u = P, h = 1 / 0, L = -1 / 0;
    for (; X > 0 ? N < i.length : N >= 0; ) {
      if (i[N].text == O)
        u++;
      else if (i[N].text == M) {
        if (u--, u == 0)
          break;
      } else i[N].text == "^" || i[N].text == "_" || i[N].bbox && (h = Math.min(h, i[N].bbox.y), L = Math.max(L, i[N].bbox.y + i[N].bbox.h));
      N += X;
    }
    return [h, L];
  }
  for (let a = 0; a < i.length; a++)
    if (i[a].text == "\\left") {
      const [O, M] = R(a, "\\left", "\\right", 1, 0);
      O != 1 / 0 && M != -1 / 0 && (i[a].bbox.y = O, Lt(i[a], 1, (M - O) / i[a].bbox.h, 0, 0));
    } else if (i[a].text == "\\right") {
      const [O, M] = R(a, "\\right", "\\left", -1, 0);
      O != 1 / 0 && M != -1 / 0 && (i[a].bbox.y = O, Lt(i[a], 1, (M - O) / i[a].bbox.h, 0, 0));
    } else if (i[a].text == "\\middle") {
      const [O, M] = R(a, "\\right", "\\left", -1, 1), [X, P] = R(a, "\\left", "\\right", 1, 1), N = Math.min(O, X), u = Math.max(M, P);
      N != 1 / 0 && u != -1 / 0 && (i[a].bbox.y = N, Lt(i[a], 1, (u - N) / i[a].bbox.h, 0, 0));
    }
  if (!i.some((a) => a.text == "&" || a.text == "\\\\"))
    return;
  const e = [];
  let o = [], n = [];
  for (let a = 0; a < i.length; a++)
    i[a].text == "&" ? (o.push(n), n = []) : i[a].text == "\\\\" ? (n.length && (o.push(n), n = []), e.push(o), o = []) : n.push(i[a]);
  n.length && o.push(n), o.length && e.push(o);
  const s = [], r = [];
  for (let a = 0; a < e.length; a++) {
    const O = [];
    for (let M = 0; M < e[a].length; M++) {
      const X = He(e[a][M]);
      X && (s[M] = s[M] || 0, s[M] = Math.max(X.bbox.w + 1, s[M])), O[M] = X;
    }
    r.push(O);
  }
  const l = [];
  for (let a = 0; a < r.length; a++) {
    let O = 1 / 0, M = -1 / 0;
    for (let X = 0; X < r[a].length; X++)
      r[a][X] && (O = Math.min(O, r[a][X].bbox.y), M = Math.max(M, r[a][X].bbox.y + r[a][X].bbox.h));
    l.push([O, M]);
  }
  for (let a = 0; a < l.length; a++)
    (l[a][0] == 1 / 0 || l[a][1] == 1 / 0) && (l[a][0] = a == 0 ? 0 : l[a - 1][1], l[a][1] = l[a][0] + 2);
  for (let a = 1; a < r.length; a++) {
    const O = l[a - 1][1] - l[a][0] + ct.LINE_SPACING;
    for (let M = 0; M < r[a].length; M++)
      r[a][M] && (r[a][M].bbox.y += O);
    l[a][0] += O, l[a][1] += O;
  }
  i.splice(0, i.length);
  for (let a = 0; a < r.length; a++) {
    let O = 0;
    for (let M = 0; M < r[a].length; M++) {
      const X = r[a][M];
      if (!X) {
        O += s[M];
        continue;
      }
      X.bbox.x += O, O += s[M] - X.bbox.w, t == "center" ? X.bbox.x += (s[M] - X.bbox.w) / 2 : t == "left" || (t == "right" || t == "equation" && M != r[a].length - 1) && (X.bbox.x += s[M] - X.bbox.w), i.push(X);
    }
  }
}
function ft(i, t = "math") {
  const R = {
    "\\text": "text",
    "\\mathnormal": "math",
    "\\mathrm": "rm",
    "\\mathit": "it",
    "\\mathbf": "bf",
    "\\mathsf": "sf",
    "\\mathtt": "tt",
    "\\mathfrak": "frak",
    "\\mathcal": "cal",
    "\\mathbb": "bb",
    "\\mathscr": "scr",
    "\\rm": "rm",
    "\\it": "it",
    "\\bf": "bf",
    "\\sf": "tt",
    "\\tt": "tt",
    "\\frak": "frak",
    "\\cal": "cal",
    "\\bb": "bb",
    "\\scr": "scr"
  }[i.text] ?? t;
  if (!i.chld.length) {
    if (x[i.text])
      if (x[i.text].flags.big)
        i.text == "\\lim" ? i.bbox = { x: 0, y: 0, w: 3.5, h: 2 } : i.bbox = { x: 0, y: -0.5, w: 3, h: 3 };
      else if (x[i.text].flags.txt) {
        let e = 0;
        for (let o = 1; o < i.text.length; o++)
          e += vt(SR(i.text[o], "text")).w;
        e /= 16, i.bbox = { x: 0, y: 0, w: e, h: 2 };
      } else if (x[i.text].glyph) {
        let e = vt(x[i.text].glyph).w;
        e /= 16, i.text == "\\int" || i.text == "\\oint" ? i.bbox = { x: 0, y: -1.5, w: e, h: 5 } : i.bbox = { x: 0, y: 0, w: e, h: 2 };
      } else
        i.bbox = { x: 0, y: 0, w: 1, h: 2 };
    else {
      let e = 0;
      for (let o = 0; o < i.text.length; o++)
        vt(SR(i.text[o], R)) && (R == "tt" ? e += 16 : e += vt(SR(i.text[o], R)).w);
      e /= 16, i.bbox = { x: 0, y: 0, w: e, h: 2 };
    }
    i.mode = R;
    return;
  }
  if (i.text == "\\frac") {
    const e = i.chld[0], o = i.chld[1], n = ct.FRAC_SCALE;
    ft(e), ft(o), e.bbox.x = 0, e.bbox.y = 0, o.bbox.x = 0, o.bbox.y = 0;
    const s = Math.max(e.bbox.w, o.bbox.w) * n;
    Lt(e, n, null, (s - e.bbox.w * n) / 2, 0), Lt(
      o,
      n,
      // @ts-ignore
      null,
      (s - o.bbox.w * n) / 2,
      e.bbox.h + ct.FRAC_SPACING
    ), i.bbox = {
      x: 0,
      y: -e.bbox.h + 1 - ct.FRAC_SPACING / 2,
      w: s,
      h: e.bbox.h + o.bbox.h + ct.FRAC_SPACING
    };
  } else if (i.text == "\\binom") {
    const e = i.chld[0], o = i.chld[1];
    ft(e), ft(o), e.bbox.x = 0, e.bbox.y = 0, o.bbox.x = 0, o.bbox.y = 0;
    const n = Math.max(e.bbox.w, o.bbox.w);
    Lt(e, 1, null, (n - e.bbox.w) / 2 + 1, 0), Lt(o, 1, null, (n - o.bbox.w) / 2 + 1, e.bbox.h), i.bbox = { x: 0, y: -e.bbox.h + 1, w: n + 2, h: e.bbox.h + o.bbox.h };
  } else if (i.text == "\\sqrt") {
    const e = i.chld[0];
    ft(e);
    const o = i.chld[1];
    let n = 0;
    o && (ft(o), n = Math.max(o.bbox.w * ct.SQRT_MAG_SCALE - 0.5, 0), Lt(o, ct.SQRT_MAG_SCALE, null, 0, 0.5)), Lt(e, 1, null, 1 + n, 0.5), i.bbox = {
      x: 0,
      y: 2 - e.bbox.h - 0.5,
      w: e.bbox.w + 1 + n,
      h: e.bbox.h + 0.5
    };
  } else if (x[i.text] && x[i.text].flags.hat) {
    const e = i.chld[0];
    ft(e);
    const o = e.bbox.y - 0.5;
    e.bbox.y = 0.5, i.bbox = { x: 0, y: o, w: e.bbox.w, h: e.bbox.h + 0.5 };
  } else if (x[i.text] && x[i.text].flags.mat) {
    const e = i.chld[0];
    ft(e), i.bbox = { x: 0, y: 0, w: e.bbox.w, h: e.bbox.h + 0.5 };
  } else {
    let e = 0, o = 0, n = 1;
    for (let M = 0; M < i.chld.length; M++) {
      const X = i.chld[M], P = {
        "\\quad": 2,
        "\\,": 2 * 3 / 18,
        "\\:": 2 * 4 / 18,
        "\\;": 2 * 5 / 18,
        "\\!": 2 * -3 / 18
      }[X.text] ?? null;
      if (X.text == "\\\\") {
        o += n, e = 0, n = 1;
        continue;
      } else {
        if (X.text == "&")
          continue;
        if (P != null) {
          e += P;
          continue;
        } else {
          if (ft(X, R), Lt(X, 1, null, e, o), X.text == "^" || X.text == "_" || X.text == "'") {
            let N = M;
            for (; N > 0 && (i.chld[N].text == "^" || i.chld[N].text == "_" || i.chld[N].text == "'"); )
              N--;
            const u = x[i.chld[N].text] && x[i.chld[N].text].flags.big;
            if (X.text == "'") {
              let h = N + 1, L = 0;
              for (; h < M; )
                i.chld[h].text == "'" && L++, h++;
              X.bbox.x = i.chld[N].bbox.x + i.chld[N].bbox.w + X.bbox.w * L, e = Math.max(e, X.bbox.x + X.bbox.w);
            } else if (u) {
              const h = i.chld[N].bbox.x + (i.chld[N].bbox.w - X.bbox.w * ct.SUB_SUP_SCALE) / 2;
              X.bbox.x = h, e = Math.max(
                e,
                i.chld[N].bbox.x + i.chld[N].bbox.w + (X.bbox.w * ct.SUB_SUP_SCALE - i.chld[N].bbox.w) / 2
              );
            } else
              X.bbox.x = i.chld[N].bbox.x + i.chld[N].bbox.w, e = Math.max(e, X.bbox.x + X.bbox.w * ct.SUB_SUP_SCALE);
          } else
            e += X.bbox.w;
          t == "text" && (e += 1), n = Math.max(X.bbox.y + X.bbox.h - o, n);
        }
      }
    }
    o += n;
    const s = {
      bmatrix: ["[", "]"],
      pmatrix: ["(", ")"],
      Bmatrix: ["\\{", "\\}"],
      cases: ["\\{"]
    }, r = {
      bmatrix: "center",
      pmatrix: "center",
      Bmatrix: "center",
      cases: "left",
      matrix: "center",
      aligned: "equation"
    }[i.text] ?? "left", l = !!s[i.text], a = !!s[i.text] && s[i.text].length > 1;
    Ge(i.chld, r);
    const O = oe(i.chld);
    i.text == "\\text" && (O.x -= 1, O.w += 2);
    for (let M = 0; M < i.chld.length; M++)
      Lt(i.chld[M], 1, null, -O.x + (l ? 1.5 : 0), -O.y);
    i.bbox = {
      x: 0,
      y: 0,
      w: O.w + 1.5 * Number(l) + 1.5 * Number(a),
      h: O.h
    }, l && i.chld.unshift({
      type: "symb",
      text: s[i.text][0],
      mode: i.mode,
      chld: [],
      bbox: { x: 0, y: 0, w: 1, h: O.h }
    }), a && i.chld.push({
      type: "symb",
      text: s[i.text][1],
      mode: i.mode,
      chld: [],
      bbox: { x: O.w + 2, y: 0, w: 1, h: O.h }
    }), (l || a || i.text == "matrix") && (i.type = "node", i.text = "", i.bbox.y -= (i.bbox.h - 2) / 2);
  }
}
function Je(i) {
  function t(e, o, n) {
    const s = [];
    if (e.bbox) {
      if (o += e.bbox.x, n += e.bbox.y, e.text == "\\frac") {
        const r = e.chld[1].bbox.y - (e.chld[0].bbox.y + e.chld[0].bbox.h), l = {
          type: "symb",
          mode: e.mode,
          text: "\\bar",
          bbox: {
            x: o,
            y: n + (e.chld[1].bbox.y - r / 2) - r / 2,
            w: e.bbox.w,
            h: r
          },
          chld: []
        };
        s.push(l);
      } else if (e.text == "\\sqrt") {
        const r = e.chld[0].bbox.y, l = Math.max(
          0,
          e.chld[0].bbox.x - e.chld[0].bbox.h / 2
        ), a = {
          type: "symb",
          mode: e.mode,
          text: "\\sqrt",
          bbox: {
            x: o + l,
            y: n + r / 2,
            w: e.chld[0].bbox.x - l,
            h: e.bbox.h - r / 2
          },
          chld: []
        };
        s.push(a), s.push({
          type: "symb",
          text: "\\bar",
          mode: e.mode,
          bbox: {
            x: o + e.chld[0].bbox.x,
            y: n,
            w: e.bbox.w - e.chld[0].bbox.x,
            h: r
          },
          chld: []
        });
      } else if (e.text == "\\binom") {
        const r = Math.min(e.chld[0].bbox.x, e.chld[1].bbox.x), l = {
          type: "symb",
          mode: e.mode,
          text: "(",
          bbox: {
            x: o,
            y: n,
            w: r,
            h: e.bbox.h
          },
          chld: []
        };
        s.push(l), s.push({
          type: "symb",
          text: ")",
          mode: e.mode,
          bbox: {
            x: o + e.bbox.w - r,
            y: n,
            w: r,
            h: e.bbox.h
          },
          chld: []
        });
      } else if (x[e.text] && x[e.text].flags.hat) {
        const r = e.chld[0].bbox.y, l = {
          type: "symb",
          mode: e.mode,
          text: e.text,
          bbox: {
            x: o,
            y: n,
            w: e.bbox.w,
            h: r
          },
          chld: []
        };
        s.push(l);
      } else if (x[e.text] && x[e.text].flags.mat) {
        const r = e.chld[0].bbox.h, l = {
          type: "symb",
          text: e.text,
          mode: e.mode,
          bbox: {
            x: o,
            y: n + r,
            w: e.bbox.w,
            h: e.bbox.h - r
          },
          chld: []
        };
        s.push(l);
      } else if (e.type != "node" && e.text != "^" && e.text != "_") {
        const r = {
          type: e.type == "func" ? "symb" : e.type,
          text: e.text,
          mode: e.mode,
          bbox: {
            x: o,
            y: n,
            w: e.bbox.w,
            h: e.bbox.h
          },
          chld: []
        };
        s.push(r);
      }
    }
    for (let r = 0; r < e.chld.length; r++) {
      const l = t(e.chld[r], o, n);
      s.push(...l);
    }
    return s;
  }
  const R = t(i, -i.bbox.x, -i.bbox.y);
  i.type = "node", i.text = "", i.chld = R;
}
function pe(i) {
  const t = [];
  for (let R = 0; R < i.chld.length; R++) {
    const e = i.chld[R];
    let o = e.bbox.h / 2, n = !1;
    if (x[e.text] && x[e.text].flags.hat && !x[e.text].flags.xfl && !x[e.text].flags.yfl && (o *= 4, n = !0), x[e.text] && x[e.text].glyph) {
      const s = vt(x[e.text].glyph);
      for (let r = 0; r < s.polylines.length; r++) {
        const l = [];
        for (let a = 0; a < s.polylines[r].length; a++) {
          let O = s.polylines[r][a][0], M = s.polylines[r][a][1];
          if (x[e.text].flags.xfl)
            O = (O - s.xmin) / Math.max(s.xmax - s.xmin, 1) * e.bbox.w, O += e.bbox.x;
          else if (s.w / 16 * o > e.bbox.w)
            O = O / Math.max(s.w, 1) * e.bbox.w, O += e.bbox.x;
          else {
            O = O / 16 * o;
            const X = (e.bbox.w - s.w / 16 * o) / 2;
            O += e.bbox.x + X;
          }
          if (x[e.text].flags.yfl)
            M = (M - s.ymin) / Math.max(s.ymax - s.ymin, 1) * e.bbox.h, M += e.bbox.y;
          else {
            if (M = M / 16 * o, n) {
              const X = (s.ymax + s.ymin) / 2;
              M -= X / 16 * o;
            }
            M += e.bbox.y + e.bbox.h / 2;
          }
          l.push([O, M]);
        }
        t.push(l);
      }
    } else if (x[e.text] && x[e.text].flags.txt || e.type == "char") {
      let s = e.bbox.x;
      const r = !!(x[e.text] && x[e.text].flags.txt);
      for (let l = Number(r); l < e.text.length; l++) {
        const a = vt(SR(e.text[l], r ? "text" : e.mode));
        if (!a) {
          console.warn("unmapped character: " + e.text[l]);
          continue;
        }
        for (let O = 0; O < a.polylines.length; O++) {
          const M = [];
          for (let X = 0; X < a.polylines[O].length; X++) {
            let P = a.polylines[O][X][0], N = a.polylines[O][X][1];
            P /= 16, N /= 16, P *= o, N *= o, e.mode == "tt" && (a.w > 16 ? P *= 16 / a.w : P += (16 - a.w) / 2 / 16), P += s, N += e.bbox.y + e.bbox.h / 2, M.push([P, N]);
          }
          t.push(M);
        }
        e.mode == "tt" ? s += o : s += a.w / 16 * o;
      }
    }
  }
  return t;
}
function Dt(i) {
  return Math.round(i * 100) / 100;
}
class _R {
  constructor(t) {
    F(this, "_latex");
    F(this, "_tree");
    F(this, "_tokens");
    F(this, "_polylines");
    this._latex = t, this._tokens = De(t), this._tree = IR(this._tokens), se(this._tree.chld), ft(this._tree), Je(this._tree), this._polylines = pe(this._tree);
  }
  resolveScale(t) {
    if (t == null)
      return [16, 16, 16, 16];
    let R = t.SCALE_X ?? 16, e = t.SCALE_Y ?? 16;
    if (t.MIN_CHAR_H != null) {
      let s = 0;
      for (let l = 0; l < this._tree.chld.length; l++) {
        const a = this._tree.chld[l];
        (a.type == "char" || x[a.text] && (x[a.text].flags.txt || !Object.keys(x[a.text].flags).length)) && (s = Math.min(a.bbox.h, s));
      }
      const r = Math.max(1, t.MIN_CHAR_H / s);
      R *= r, e *= r;
    }
    if (t.MAX_W != null) {
      const s = R;
      R = Math.min(R, t.MAX_W / this._tree.bbox.w), e *= R / s;
    }
    if (t.MAX_H != null) {
      const s = e;
      e = Math.min(e, t.MAX_H / this._tree.bbox.h), R *= e / s;
    }
    const o = t.MARGIN_X ?? R, n = t.MARGIN_Y ?? e;
    return [o, n, R, e];
  }
  polylines(t) {
    t || (t = {});
    const R = [], [e, o, n, s] = this.resolveScale(t);
    for (let r = 0; r < this._polylines.length; r++) {
      R.push([]);
      for (let l = 0; l < this._polylines[r].length; l++) {
        const [a, O] = this._polylines[r][l];
        R[R.length - 1].push([e + a * n, o + O * s]);
      }
    }
    return R;
  }
  pathd(t) {
    t || (t = {});
    let R = "";
    const [e, o, n, s] = this.resolveScale(t);
    for (let r = 0; r < this._polylines.length; r++)
      for (let l = 0; l < this._polylines[r].length; l++) {
        const [a, O] = this._polylines[r][l];
        R += l ? "L" : "M", R += `${Dt(e + a * n)} ${Dt(o + O * s)}`;
      }
    return R;
  }
  svg(t) {
    t || (t = {});
    const [R, e, o, n] = this.resolveScale(t), s = Dt(this._tree.bbox.w * o + R * 2), r = Dt(this._tree.bbox.h * n + e * 2);
    let l = `<svg
      xmlns="http://www.w3.org/2000/svg"
      width="${s}" height="${r}"
      fill="none" stroke="${t.FG_COLOR ?? "black"}" stroke-width="${t.STROKE_W ?? 1}"
      stroke-linecap="round" stroke-linejoin="round"
    >`;
    t.BG_COLOR && (l += `<rect x="0" y="0" width="${s}" height="${r}" fill="${t.BG_COLOR}" stroke="none"></rect>`), l += '<path d="';
    for (let a = 0; a < this._polylines.length; a++) {
      l += "M";
      for (let O = 0; O < this._polylines[a].length; O++) {
        const [M, X] = this._polylines[a][O];
        l += Dt(R + M * o) + " " + Dt(e + X * n) + " ";
      }
    }
    return l += '"/>', l += "</svg>", {
      // btoa (global since Node 16) works in both browser and Node;
      // window.btoa would crash this LaTeX path in the Node bundle.
      svg: `data:image/svg+xml;base64,${btoa(l)}`,
      width: Math.ceil(s),
      height: Math.ceil(r)
    };
  }
  pdf(t) {
    t || (t = {});
    const [R, e, o, n] = this.resolveScale(t), s = Dt(this._tree.bbox.w * o + R * 2), r = Dt(this._tree.bbox.h * n + e * 2);
    let l = `%PDF-1.1
%%¥±ë
1 0 obj
<< /Type /Catalog
/Pages 2 0 R
>>endobj
    2 0 obj
<< /Type /Pages
/Kids [3 0 R]
/Count 1
/MediaBox [0 0 ${s} ${r}]
>>
endobj
    3 0 obj
<< /Type /Page
/Parent 2 0 R
/Resources
<< /Font
<< /F1
<< /Type /Font
    /Subtype /Type1
/BaseFont /Times-Roman
>>
>>
>>
/Contents [`, a = "", O = 4;
    for (let M = 0; M < this._polylines.length; M++) {
      a += `${O} 0 obj 
<< /Length 0 >>
 stream
 1 j 1 J ${t.STROKE_W ?? 1} w
`;
      for (let X = 0; X < this._polylines[M].length; X++) {
        const [P, N] = this._polylines[M][X];
        a += `${Dt(R + P * o)} ${Dt(r - (e + N * n))} ${X ? "l" : "m"} `;
      }
      a += `
S
endstream
endobj
`, l += `${O} 0 R `, O++;
    }
    return l += `]
>>
endobj
`, a += `
trailer
<< /Root 1 0 R 
 /Size 0
 >>startxref

%%EOF
`, l + a;
  }
  boxes(t) {
    t || (t = {});
    const [R, e, o, n] = this.resolveScale(t), s = [];
    for (let r = 0; r < this._tree.chld.length; r++) {
      const { x: l, y: a, w: O, h: M } = this._tree.chld[r].bbox;
      s.push({ x: R + l * o, y: e + a * n, w: O * o, h: M * n });
    }
    return s;
  }
  box(t) {
    t || (t = {});
    const [R, e, o, n] = this.resolveScale(t);
    return {
      x: R + this._tree.bbox.x * o,
      y: e + this._tree.bbox.y * n,
      w: this._tree.bbox.w * o,
      h: this._tree.bbox.h * n
    };
  }
}
const ZR = {
  SCALE_X: 10,
  SCALE_Y: 10,
  MARGIN_X: 0,
  MARGIN_Y: 0
};
class YR extends ie {
  static convertLaTextToSVG(t) {
    return new _R(t).svg(ZR);
  }
  // Vector path data for the formula. Points live in the same [0..width] ×
  // [0..height] space the SVG export used, so a formula's intrinsic size is
  // identical whether it is rasterized or drawn directly.
  static convertLaTextToPolylines(t) {
    const R = new _R(t), e = R.box(ZR);
    return {
      polylines: R.polylines(ZR),
      width: Math.ceil(e.w),
      height: Math.ceil(e.h)
    };
  }
  render(t, R, e, o) {
    const { scale: n } = this.options, s = R.width * n, r = R.height * n;
    t.clearRect(e, o, s, r);
    const { polylines: l, width: a, height: O } = YR.convertLaTextToPolylines(R.value);
    if (!l.length || !a || !O) return;
    const M = s / a, X = r / O;
    t.save(), t.beginPath(), t.strokeStyle = R.color || "black", t.lineWidth = M, t.lineCap = "round", t.lineJoin = "round";
    for (let P = 0; P < l.length; P++) {
      const N = l[P];
      for (let u = 0; u < N.length; u++) {
        const h = e + N[u][0] * M, L = o + N[u][1] * X;
        u === 0 ? t.moveTo(h, L) : t.lineTo(h, L);
      }
    }
    t.stroke(), t.restore();
  }
}
const ne = ["rowFlex", "rowMargin"], be = [
  "type",
  "font",
  "size",
  "bold",
  "color",
  "italic",
  "highlight",
  "underline",
  "strikeout",
  "rowFlex",
  "rowMargin",
  "dashArray",
  "trList",
  "tableToolDisabled",
  "borderType",
  "borderColor",
  "translateX",
  "width",
  "height",
  "url",
  "colgroup",
  "valueList",
  "control",
  "checkbox",
  "radio",
  "dateFormat",
  "block",
  "level",
  "title",
  "listType",
  "listStyle",
  "listWrap",
  "groupIds",
  "conceptId",
  "imgDisplay",
  "imgFloatPosition",
  "imgCrop",
  "imgCaption",
  "textDecoration",
  "extension",
  "externalId",
  "areaId",
  "area",
  "hide",
  "label",
  "labelId",
  "lineWidth"
], me = [
  "conceptId",
  "extension",
  "externalId",
  "verticalAlign",
  "backgroundColor",
  "borderTypes",
  "slashTypes",
  "disabled",
  "deletable"
], Ee = ["areaId", "area"], Ce = [
  "tdId",
  "trId",
  "tableId"
], we = [
  "level",
  "titleId",
  "title"
], ye = [
  "listId",
  "listType",
  "listStyle"
], ae = [
  "font",
  "size",
  "bold",
  "highlight",
  "italic",
  "strikeout"
], xe = [
  ...Ce,
  ...we,
  ...ye,
  ...Ee
], pR = [
  V.TEXT,
  V.HYPERLINK,
  V.SUBSCRIPT,
  V.SUPERSCRIPT,
  V.CONTROL,
  V.DATE
];
V.IMAGE, V.LATEX;
const Be = [
  V.BLOCK,
  V.PAGE_BREAK,
  V.SEPARATOR,
  V.TABLE
];
V.TITLE, V.LIST;
var hR = /* @__PURE__ */ ((i) => (i.UL = "ul", i.OL = "ol", i))(hR || {}), Ht = /* @__PURE__ */ ((i) => (i.DISC = "disc", i.CIRCLE = "circle", i.SQUARE = "square", i.CHECKBOX = "checkbox", i))(Ht || {}), Vt = /* @__PURE__ */ ((i) => (i.DISC = "disc", i.CIRCLE = "circle", i.SQUARE = "square", i.DECIMAL = "decimal", i.CHECKBOX = "checkbox", i))(Vt || {});
const _e = {
  inheritStyle: !1
}, AR = {
  [Ht.DISC]: "•",
  [Ht.CIRCLE]: "◦",
  [Ht.SQUARE]: "▫︎",
  [Ht.CHECKBOX]: "☑️"
};
hR.OL + "", hR.UL + "";
Vt.DISC + "", Vt.CIRCLE + "", Vt.SQUARE + "", Vt.DECIMAL + "", Vt.CHECKBOX + "";
const Ae = {
  first: "defaultFirstSize",
  second: "defaultSecondSize",
  third: "defaultThirdSize",
  fourth: "defaultFourthSize",
  fifth: "defaultFifthSize",
  sixth: "defaultSixthSize"
}, ve = {
  defaultFirstSize: 22,
  defaultSecondSize: 18,
  defaultThirdSize: 16,
  defaultFourthSize: 14,
  defaultFifthSize: 12,
  defaultSixthSize: 11
};
var nR = /* @__PURE__ */ ((i) => (i.ALL = "all", i.EMPTY = "empty", i.EXTERNAL = "external", i.INTERNAL = "internal", i.DASH = "dash", i))(nR || {}), aR = /* @__PURE__ */ ((i) => (i.TOP = "top", i.RIGHT = "right", i.BOTTOM = "bottom", i.LEFT = "left", i))(aR || {}), DR = /* @__PURE__ */ ((i) => (i.FORWARD = "forward", i.BACK = "back", i))(DR || {});
function vR(i) {
  const t = [];
  for (let R = 0; R < i.length; R++) {
    const e = i[R], o = wt(e.value);
    for (let n = 0; n < o.length; n++)
      t.push({ ...e, value: o[n] });
  }
  return t;
}
async function Ct(i, t) {
  var r, l;
  const {
    isHandleFirstElement: R = !0,
    isForceCompensation: e = !1,
    editorOptions: o
  } = t, n = i[0];
  (n == null ? void 0 : n.type) !== V.LIST && (e || R && (n != null && n.type && n.type !== V.TEXT || !cR.test(n == null ? void 0 : n.value))) && i.unshift({
    value: q
  });
  let s = 0;
  for (; s < i.length; ) {
    let a = i[s];
    if (a.type === V.TITLE) {
      i.splice(s, 1);
      const O = a.valueList || [];
      if (Ct(O, {
        ...t,
        isHandleFirstElement: !1,
        isForceCompensation: !1
      }), O.length) {
        const M = Yt(), X = o.title;
        for (let P = 0; P < O.length; P++) {
          const N = O[P];
          N.title = a.title, a.level && (N.titleId = M, N.level = a.level), ze(N) && (N.size || (N.size = X[Ae[N.level]]), N.bold === void 0 && (N.bold = !0)), i.splice(s, 0, N), s++;
        }
      }
      s--;
    } else if (a.type === V.LIST) {
      i.splice(s, 1);
      const O = a.valueList || [];
      if (Ct(O, {
        ...t,
        isHandleFirstElement: !0,
        isForceCompensation: !1
      }), O.length) {
        const M = a.listId || Yt(), X = /* @__PURE__ */ new Map([[0, M]]);
        for (let P = 0; P < O.length; P++) {
          const N = O[P], u = N.listLevel ?? a.listLevel ?? 0;
          N.listId || (N.listId = X.get(u) || Yt()), X.set(u, N.listId), Array.from(X.keys()).forEach((h) => {
            h > u && X.delete(h);
          }), N.listType = N.listType || a.listType, N.listStyle = N.listStyle || a.listStyle, N.listLevel = u, i.splice(s, 0, N), s++;
        }
        i[s] && ((r = i[s].valueList) != null && r.length ? !cR.test(i[s].valueList[0].value) : !cR.test(i[s].value)) && (i.splice(s, 0, {
          value: q
        }), s++);
      }
      s--;
    } else if (a.type === V.AREA) {
      i.splice(s, 1);
      const O = (a == null ? void 0 : a.valueList) || [];
      if (Ct(O, {
        ...t,
        isHandleFirstElement: !0,
        isForceCompensation: !0
      }), O.length) {
        const M = Yt();
        for (let X = 0; X < O.length; X++) {
          const P = O[X];
          if (P.areaId = a.areaId || M, P.area = a.area, P.areaIndex = X, P.type === V.TABLE) {
            const N = P.trList;
            for (let u = 0; u < N.length; u++) {
              const h = N[u];
              for (let L = 0; L < h.tdList.length; L++) {
                const S = h.tdList[L].value;
                for (let W = 0; W < S.length; W++) {
                  const c = S[W];
                  c.areaId = a.areaId || M, c.area = a.area;
                }
              }
            }
          }
          i.splice(s, 0, P), s++;
        }
      }
      s--;
    } else if (a.type === V.TABLE) {
      const O = Yt();
      if (a.id = O, a.trList) {
        const {
          table: { defaultTrMinHeight: M, defaultColMinWidth: X },
          margins: P
        } = o;
        if (!((l = a.colgroup) != null && l.length) && a.trList.length) {
          const N = a.trList[0].tdList.reduce(
            (L, Y) => L + Y.colspan,
            0
          ), u = o.width - P[1] - P[3], h = Math.max(u / N, X);
          a.colgroup = [];
          for (let L = 0; L < N; L++)
            a.colgroup.push({ width: h });
        }
        for (let N = 0; N < a.trList.length; N++) {
          const u = a.trList[N], h = Yt();
          u.id = h, (!u.minHeight || u.minHeight < M) && (u.minHeight = M), u.height < u.minHeight && (u.height = u.minHeight);
          for (let L = 0; L < u.tdList.length; L++) {
            const Y = u.tdList[L], S = Yt();
            Y.id = S, Ct(Y.value, {
              ...t,
              isHandleFirstElement: !0,
              isForceCompensation: !0
            });
            for (let W = 0; W < Y.value.length; W++) {
              const c = Y.value[W];
              c.tdId = S, c.trId = h, c.tableId = O;
            }
          }
        }
      }
    } else if (a.type === V.HYPERLINK) {
      i.splice(s, 1);
      const O = vR(a.valueList || []);
      if (O.length) {
        const M = Yt();
        for (let X = 0; X < O.length; X++) {
          const P = O[X];
          P.type = a.type, P.url = a.url, P.hyperlinkId = M, i.splice(s, 0, P), s++;
        }
      }
      s--;
    } else if (a.type === V.DATE) {
      i.splice(s, 1);
      const O = vR(a.valueList || []);
      if (O.length) {
        const M = Yt();
        for (let X = 0; X < O.length; X++) {
          const P = O[X];
          P.type = a.type, P.dateFormat = a.dateFormat, P.dateId = M, i.splice(s, 0, P), s++;
        }
      }
      s--;
    } else if (a.type === V.CONTROL) {
      if (!a.control) {
        s++;
        continue;
      }
      const { prefix: O, postfix: M, value: X, placeholder: P, code: N, type: u, valueSets: h } = a.control, {
        editorOptions: {
          control: L,
          checkbox: Y,
          radio: S
        }
      } = t, W = Yt();
      i.splice(s, 1);
      const c = LR(a, [
        ...xe,
        ...ne
      ]), T = LR(
        a.control,
        ae
      ), H = {
        ...T,
        color: o.control.bracketColor
      }, f = wt(O || L.prefix);
      for (let K = 0; K < f.length; K++) {
        const Z = f[K];
        i.splice(s, 0, {
          ...c,
          ...H,
          controlId: W,
          value: Z,
          type: a.type,
          control: a.control,
          controlComponent: j.PREFIX
        }), s++;
      }
      if (X && X.length || u === Bt.CHECKBOX || u === Bt.RADIO || u === Bt.SELECT && N && (!X || !X.length)) {
        let K = X ? mt(X) : [];
        if (u === Bt.CHECKBOX) {
          const Z = N ? N.split(",") : [];
          if (Array.isArray(h) && h.length) {
            const U = K.reduce(
              (p, g) => p.concat(
                g.value.split("").map((J) => ({ ...g, value: J }))
              ),
              []
            );
            let I = 0;
            for (let p = 0; p < h.length; p++) {
              const g = h[p];
              i.splice(s, 0, {
                ...c,
                ...T,
                controlId: W,
                value: "",
                type: a.type,
                control: a.control,
                controlComponent: j.CHECKBOX,
                checkbox: {
                  code: g.code,
                  value: Z.includes(g.code)
                }
              }), s++;
              const J = wt(g.value);
              for (let y = 0; y < J.length; y++) {
                const v = J[y], B = y === J.length - 1;
                i.splice(s, 0, {
                  ...c,
                  ...T,
                  ...U[I],
                  controlId: W,
                  value: v === `
` ? q : v,
                  letterSpacing: B ? Y.gap : 0,
                  control: a.control,
                  controlComponent: j.VALUE
                }), I++, s++;
              }
            }
          }
        } else if (u === Bt.RADIO) {
          if (Array.isArray(h) && h.length) {
            const Z = K.reduce(
              (I, p) => I.concat(
                p.value.split("").map((g) => ({ ...p, value: g }))
              ),
              []
            );
            let U = 0;
            for (let I = 0; I < h.length; I++) {
              const p = h[I];
              i.splice(s, 0, {
                ...c,
                ...T,
                controlId: W,
                value: "",
                type: a.type,
                control: a.control,
                controlComponent: j.RADIO,
                radio: {
                  code: p.code,
                  value: N === p.code
                }
              }), s++;
              const g = wt(p.value);
              for (let J = 0; J < g.length; J++) {
                const y = g[J], v = J === g.length - 1;
                i.splice(s, 0, {
                  ...c,
                  ...T,
                  ...Z[U],
                  controlId: W,
                  value: y === `
` ? q : y,
                  letterSpacing: v ? S.gap : 0,
                  control: a.control,
                  controlComponent: j.VALUE
                }), U++, s++;
              }
            }
          }
        } else {
          if ((!X || !X.length) && Array.isArray(h) && h.length) {
            const Z = h.find((U) => U.code === N);
            Z && (K = [
              {
                value: Z.value
              }
            ]);
          }
          Ct(K, {
            ...t,
            isHandleFirstElement: !1,
            isForceCompensation: !1
          });
          for (let Z = 0; Z < K.length; Z++) {
            const U = K[Z], I = U.value;
            i.splice(s, 0, {
              ...c,
              ...T,
              ...U,
              controlId: W,
              value: I === `
` ? q : I,
              type: U.type || V.TEXT,
              control: a.control,
              controlComponent: j.VALUE
            }), s++;
          }
        }
      } else if (P) {
        const K = {
          ...T,
          color: o.control.placeholderColor
        }, Z = wt(P);
        for (let U = 0; U < Z.length; U++) {
          const I = Z[U];
          i.splice(s, 0, {
            ...c,
            ...K,
            controlId: W,
            value: I === `
` ? q : I,
            type: a.type,
            control: a.control,
            controlComponent: j.PLACEHOLDER
          }), s++;
        }
      }
      const D = wt(M || L.postfix);
      for (let K = 0; K < D.length; K++) {
        const Z = D[K];
        i.splice(s, 0, {
          ...c,
          ...H,
          controlId: W,
          value: Z,
          type: a.type,
          control: a.control,
          controlComponent: j.POSTFIX
        }), s++;
      }
      s--;
    } else if ((!a.type || pR.includes(a.type)) && a.value.length > 1) {
      i.splice(s, 1);
      const O = wt(a.value);
      for (let M = 0; M < O.length; M++)
        i.splice(s + M, 0, { ...a, value: O[M] });
      a = i[s];
    }
    if ((a.value === `
` || a.value == `\r
`) && (a.value = q), (a.type === V.IMAGE || a.type === V.BLOCK) && (a.id = Yt()), a.type === V.LATEX) {
      const { width: O, height: M } = YR.convertLaTextToPolylines(a.value);
      a.width = a.width || O, a.height = a.height || M, a.id = Yt();
    }
    s++;
  }
}
function ke(i, t) {
  const R = Object.keys(i), e = Object.keys(t);
  if (R.length !== e.length) return !1;
  for (let o = 0; o < R.length; o++) {
    const n = R[o];
    if (n !== "value" && !(n === "groupIds" && Array.isArray(i[n]) && Array.isArray(t[n]) && Qe(i[n], t[n])) && i[n] !== t[n])
      return !1;
  }
  return !0;
}
function UR(i, t = {}) {
  const { extraPickAttrs: R } = t, e = be;
  R && e.push(...R);
  const o = {
    value: i.value === q ? `
` : i.value
  };
  return e.forEach((n) => {
    const s = i[n];
    s !== void 0 && (o[n] = s);
  }), o;
}
function gt(i, t = {}) {
  const { extraPickAttrs: R, isClassifyArea: e = !1 } = t, o = mt(i), n = [];
  let s = 0;
  for (; s < o.length; ) {
    let r = o[s];
    if (s === 0 && r.value === q && !r.listId && (!r.type || r.type === V.TEXT)) {
      s++;
      continue;
    }
    if (r.areaId) {
      const a = r.areaId, O = r.area, M = [];
      for (; s < o.length; ) {
        const P = o[s];
        if (a !== P.areaId) {
          s--;
          break;
        }
        delete P.area, delete P.areaId, M.push(P), s++;
      }
      const X = gt(M, t);
      if (e) {
        const P = {
          type: V.AREA,
          value: "",
          areaId: a,
          area: O
        };
        P.valueList = X, r = P;
      } else {
        n.splice(s, 0, ...X);
        continue;
      }
    } else if (r.titleId && r.level) {
      const a = r.titleId;
      if (a) {
        const O = r.level, M = {
          type: V.TITLE,
          title: r.title,
          value: "",
          level: O
        }, X = [];
        for (; s < o.length; ) {
          const P = o[s];
          if (a !== P.titleId) {
            s--;
            break;
          }
          delete P.level, delete P.title, X.push(P), s++;
        }
        M.valueList = gt(X, t), r = M;
      }
    } else if (r.listId && r.listType) {
      const a = r.listId;
      if (a) {
        const O = r.listType, M = r.listStyle, X = {
          type: V.LIST,
          value: "",
          listId: a,
          listType: O,
          listStyle: M
        }, P = [];
        for (; s < o.length; ) {
          const N = o[s];
          if (a !== N.listId) {
            s--;
            break;
          }
          delete N.listType, delete N.listStyle, P.push(N), s++;
        }
        X.valueList = gt(P, t), r = X;
      }
    } else if (r.type === V.TABLE) {
      if (r.trList)
        for (let a = 0; a < r.trList.length; a++) {
          const O = r.trList[a];
          delete O.id;
          for (let M = 0; M < O.tdList.length; M++) {
            const X = O.tdList[M], P = {
              colspan: X.colspan,
              rowspan: X.rowspan,
              value: gt(X.value, {
                ...t,
                isClassifyArea: !0
              })
            };
            me.forEach((N) => {
              const u = X[N];
              u !== void 0 && (P[N] = u);
            }), O.tdList[M] = P;
          }
        }
    } else if (r.type === V.HYPERLINK) {
      const a = r.hyperlinkId;
      if (a) {
        const O = {
          type: V.HYPERLINK,
          value: "",
          url: r.url
        }, M = [];
        for (; s < o.length; ) {
          const X = o[s];
          if (a !== X.hyperlinkId) {
            s--;
            break;
          }
          delete X.type, delete X.url, M.push(X), s++;
        }
        O.valueList = gt(M, t), r = O;
      }
    } else if (r.type === V.DATE) {
      const a = r.dateId;
      if (a) {
        const O = {
          type: V.DATE,
          value: "",
          dateFormat: r.dateFormat
        }, M = [];
        for (; s < o.length; ) {
          const X = o[s];
          if (a !== X.dateId) {
            s--;
            break;
          }
          delete X.type, delete X.dateFormat, M.push(X), s++;
        }
        O.valueList = gt(M, t), r = O;
      }
    } else if (r.controlId) {
      const a = r.controlId;
      if (a) {
        const O = LR(r, ae), M = {
          ...r.control,
          ...O
        }, X = {
          ...LR(r, ne),
          type: V.CONTROL,
          value: "",
          control: M,
          controlId: a
        }, P = [];
        for (; s < o.length; ) {
          const N = o[s];
          if (a !== N.controlId) {
            s--;
            break;
          }
          N.controlComponent === j.VALUE && (delete N.control, delete N.controlId, P.push(N)), s++;
        }
        X.control.value = gt(P, t), r = UR(X, { extraPickAttrs: R });
      }
    }
    const l = UR(r, { extraPickAttrs: R });
    if (!r.type || r.type === V.TEXT || r.type === V.SUBSCRIPT || r.type === V.SUPERSCRIPT)
      for (; s < o.length; ) {
        const a = o[s + 1];
        if (s++, a && ke(
          l,
          UR(a, { extraPickAttrs: R })
        )) {
          const O = a.value === q ? `
` : a.value;
          l.value += O;
        } else
          break;
      }
    else
      s++;
    n.push(l);
  }
  return n;
}
function ze(i) {
  return !i.type || pR.includes(i.type);
}
function re(i) {
  return !!(i != null && i.type) && (Be.includes(i.type) || i.imgDisplay === Rt.INLINE);
}
function le(i) {
  const t = [];
  for (let R = 0; R < i.length; R++) {
    const e = i[R];
    e.imgDisplay === Rt.SURROUND && t.push(e);
  }
  return t;
}
function $e(i, t) {
  var R;
  for (let e = i.length - 1; e >= 0; e--)
    ((R = i[e].imgFloatPosition) == null ? void 0 : R.pageNo) === t && i.splice(e, 1);
}
var ht = /* @__PURE__ */ ((i) => (i.TOP = "top", i.MIDDLE = "middle", i.BOTTOM = "bottom", i))(ht || {});
class je {
  constructor(t) {
    F(this, "cursorPosition");
    F(this, "positionContext");
    F(this, "positionList");
    // 表格跨页片段位置列表(含全部片段;主列表仅保留首片段以维持下标对齐)
    F(this, "tablePagingPositionList");
    // 片段位置按页索引(命中与片段查找只扫当前页,避免全表线性扫描)
    F(this, "tablePagingPositionMap");
    F(this, "floatPositionList");
    F(this, "draw");
    // private eventBus: EventBus<EventBusMap>
    F(this, "options");
    this.positionList = [], this.tablePagingPositionList = [], this.tablePagingPositionMap = /* @__PURE__ */ new Map(), this.floatPositionList = [], this.cursorPosition = null, this.positionContext = {
      isTable: !1,
      isControl: !1
    }, this.draw = t, this.options = t.getOptions();
  }
  getFloatPositionList() {
    return this.floatPositionList;
  }
  getTablePagingPositionList() {
    return this.tablePagingPositionList;
  }
  // 按元素索引与页码查找表格跨页片段位置;
  // 同页存在多个片段(分栏)时按锚点坐标所属片段进一步区分
  getTableFragmentPosition(t, R, e) {
    const o = this.tablePagingPositionMap.get(R);
    if (!(o != null && o.length)) return null;
    const n = o.filter(
      (s) => s.index === t
    );
    if (n.length <= 1)
      return n[0] || null;
    if (e) {
      const {
        coordinate: { leftTop: s, rightBottom: r }
      } = e, l = n.find((a) => {
        const {
          leftTop: O,
          rightTop: M,
          leftBottom: X
        } = a.coordinate;
        return s[0] >= O[0] && r[0] <= M[0] && s[1] >= O[1] && r[1] <= X[1];
      });
      if (l) return l;
    }
    return n[0];
  }
  getTablePositionList(t) {
    var R;
    return ((R = this.getTableTdByContext(t, this.positionContext)) == null ? void 0 : R.positionList) || [];
  }
  getTableTdByContext(t, R) {
    var s, r, l, a;
    const e = (s = R.tablePath) != null && s.length ? R.tablePath : this._getTablePathByContext(R);
    let o = t, n = null;
    for (let O = 0; O < e.length; O++) {
      const { index: M, trIndex: X, tdIndex: P } = e[O];
      if (n = ((a = (l = (r = o[M]) == null ? void 0 : r.trList) == null ? void 0 : l[X]) == null ? void 0 : a.tdList[P]) || null, !n) return null;
      o = n.value;
    }
    return n;
  }
  buildTablePositionContext(t, R, e, o) {
    var l;
    const n = R.trList[e], s = n.tdList[o], r = (l = t.tablePath) != null && l.length ? t.tablePath.map(
      (a, O, M) => O === M.length - 1 ? {
        ...a,
        trIndex: e,
        tdIndex: o,
        tdId: s.id,
        trId: n.id,
        tableId: R.id
      } : a
    ) : void 0;
    return {
      ...t,
      isTable: !0,
      trIndex: e,
      tdIndex: o,
      tdId: s.id,
      trId: n.id,
      tableId: R.id,
      tablePath: r
    };
  }
  getTableElementByContext(t, R) {
    var s, r, l;
    const e = (s = R.tablePath) != null && s.length ? R.tablePath : this._getTablePathByContext(R);
    let o = t, n = null;
    for (let a = 0; a < e.length; a++) {
      const { index: O, trIndex: M, tdIndex: X } = e[a];
      if (n = o[O] || null, !n) return null;
      if (a === e.length - 1) break;
      const P = (l = (r = n.trList) == null ? void 0 : r[M]) == null ? void 0 : l.tdList[X];
      if (!P) return null;
      o = P.value;
    }
    return n;
  }
  getTableElementPositionByContext(t, R, e) {
    var l, a, O, M, X, P, N;
    const o = (l = e.tablePath) != null && l.length ? e.tablePath : this._getTablePathByContext(e);
    let n = t, s = R, r = null;
    for (let u = 0; u < o.length; u++) {
      const { index: h, trIndex: L, tdIndex: Y } = o[u];
      r = s[h] || null;
      const S = n[h];
      if (!r || !S) return null;
      if (u === o.length - 1) break;
      const W = (O = (a = S.trList) == null ? void 0 : a[L]) == null ? void 0 : O.tdList[Y];
      if (!W) return null;
      n = W.value, s = W.positionList || [];
    }
    if (r != null && r.tableFragment) {
      const u = this.getTableTdByContext(t, e), h = this.getCursorPosition(), L = !!u && !!h && !!((M = u.positionList) != null && M.includes(h)), Y = L ? h.pageNo : (P = (X = u == null ? void 0 : u.positionList) == null ? void 0 : X[0]) == null ? void 0 : P.pageNo;
      if (Y !== void 0) {
        const S = this.getTableFragmentPosition(
          r.index,
          Y,
          // 同页多栏片段按光标(或单元格首个位置)坐标区分所属片段
          L ? h : (N = u == null ? void 0 : u.positionList) == null ? void 0 : N[0]
        );
        if (S) return S;
      }
    }
    return r;
  }
  _getTablePathByContext(t) {
    const { isTable: R, index: e, trIndex: o, tdIndex: n, tdId: s, trId: r, tableId: l } = t;
    return !R || e === void 0 || o === void 0 || n === void 0 ? [] : [
      {
        index: e,
        trIndex: o,
        tdIndex: n,
        tdId: s,
        trId: r,
        tableId: l
      }
    ];
  }
  getPositionList() {
    return this.positionContext.isTable ? this.getTablePositionList(this.draw.getOriginalElementList()) : this.getOriginalPositionList();
  }
  getMainPositionList() {
    return this.positionContext.isTable ? this.getTablePositionList(this.draw.getOriginalMainElementList()) : this.positionList;
  }
  getOriginalPositionList() {
    return this.positionList;
  }
  getOriginalMainPositionList() {
    return this.positionList;
  }
  // public getSelectionPositionList(): IElementPosition[] | null {
  //   const { startIndex, endIndex } = this.draw.getRange().getRange()
  //   if (startIndex === endIndex) return null
  //   const positionList = this.getPositionList()
  //   return positionList.slice(startIndex + 1, endIndex + 1)
  // }
  setPositionList(t) {
    this.positionList = t;
  }
  setFloatPositionList(t) {
    this.floatPositionList = t;
  }
  getFloatPositionByElement(t) {
    return this.floatPositionList.find(
      (R) => R.element === t
    ) || null;
  }
  getFloatPositionCoordinate(t) {
    const { scale: R } = this.options, e = t.element.imgFloatPosition;
    let o = e.x * R, n = e.y * R;
    const { index: s, isTable: r, zone: l } = t;
    if (r && s !== void 0) {
      let a;
      l === Qt.HEADER ? a = this.draw.getHeader().getPositionList() : l === Qt.FOOTER ? a = this.draw.getFooter().getPositionList() : a = this.positionList;
      let O = a[s];
      if (O != null && O.tableFragment && (O = this.getTableFragmentPosition(
        s,
        t.pageNo,
        t.position
      ) || O), O) {
        const {
          coordinate: {
            leftTop: [M, X]
          }
        } = O;
        o += M, n += X;
      }
    }
    return { x: o, y: n };
  }
  computePageRowPosition(t) {
    var S;
    const {
      positionList: R,
      rowList: e,
      pageNo: o,
      startX: n,
      startY: s,
      startRowIndex: r,
      startIndex: l,
      innerWidth: a,
      zone: O,
      tablePosition: M
    } = t, {
      scale: X,
      table: { tdPadding: P }
    } = this.options;
    let N = n, u = s, h = l;
    const L = this.draw.getColumnLayout();
    let Y;
    for (let W = 0; W < e.length; W++) {
      const c = e[W];
      Y !== void 0 && c.columnIndex !== void 0 && c.columnIndex > 0 && c.columnIndex !== Y && (u = s), Y = c.columnIndex;
      const T = L && c.columnIndex !== void 0 && c.columnIndex >= 0, H = T && L && L.offsets[c.columnIndex] || 0, f = T && L ? L.width : a;
      if (N += H, !c.isSurround) {
        const Z = c.width + (c.offsetX || 0);
        c.rowFlex === Gt.CENTER ? N += (f - Z) / 2 : c.rowFlex === Gt.RIGHT && (N += f - Z);
      }
      N += c.offsetX || 0, u += c.offsetY || 0;
      const D = N, K = u;
      for (let Z = 0; Z < c.elementList.length; Z++) {
        const U = c.elementList[Z];
        c.tableFragment && (h = c.startIndex + Z);
        const I = U.metrics, p = !U.hide && (U.imgDisplay !== Rt.INLINE && U.type === V.IMAGE || U.type === V.LATEX) ? c.ascent - I.height : c.ascent;
        U.left && (N += U.left), U.translateX && (N += U.translateX * X);
        const g = {
          pageNo: o,
          index: h,
          value: U.value,
          rowIndex: r + W,
          // 表格单元格内行号为绝对序号(拆分窗口的续排位置与原窗口位置不冲突);
          // 正文保持页内行号(页首行查找依赖 rowNo === 0)
          rowNo: t.isTable ? r + W : W,
          metrics: I,
          left: U.left || 0,
          ascent: p,
          lineHeight: c.height,
          isFirstLetter: Z === 0,
          isLastLetter: Z === c.elementList.length - 1,
          columnIndex: c.columnIndex,
          coordinate: {
            leftTop: [N, u],
            leftBottom: [N, u + c.height],
            rightTop: [N + I.width, u],
            rightBottom: [N + I.width, u + c.height]
          }
        };
        if (U.imgDisplay === Rt.SURROUND || U.imgDisplay === Rt.FLOAT_TOP || U.imgDisplay === Rt.FLOAT_BOTTOM) {
          const y = R[R.length - 1];
          if (y && (g.metrics = y.metrics, g.coordinate = y.coordinate), !U.imgFloatPosition) {
            const v = M == null ? void 0 : M.coordinate.leftTop;
            U.imgFloatPosition = {
              x: v ? N - v[0] : N,
              y: v ? u - v[1] : u,
              pageNo: o
            };
          }
          this.floatPositionList.push({
            pageNo: o,
            element: U,
            position: g,
            isTable: t.isTable,
            index: t.index,
            tdIndex: t.tdIndex,
            trIndex: t.trIndex,
            tdValueIndex: h,
            zone: O
          });
        }
        const J = c.tableFragment;
        if (J) {
          g.tableFragment = J, c.fragmentPosition = g, this.tablePagingPositionList.push(g);
          const y = this.tablePagingPositionMap.get(o) || [];
          y.push(g), this.tablePagingPositionMap.set(o, y), J.startTrIndex === 0 && !J.startSplitTrOffset && R.push(g);
        } else
          R.push(g);
        if (h++, N += I.width, U.type === V.TABLE && !U.hide) {
          const y = P[1] + P[3], v = J ? this.draw.getTableParticle().getFragmentTdList(U, J) : U.trList.flatMap((B) => B.tdList);
          for (const B of v) {
            let tt = !1, st = !1, Mt = 0, Nt = B.height;
            if (J) {
              if ([Mt, Nt] = this.draw.getTableParticle().getTdWindowInFragment(B, U, J), Nt <= Mt) continue;
              tt = Mt > 0 || Nt < B.height, st = Mt > 0;
            }
            let rt = B.rowList, ot = 0, nt = 0;
            if (tt) {
              const w = this.draw.getTableParticle().getTdVisibleRowListByWindow(B, Mt, Nt);
              rt = w.rowList, ot = w.startIndex, nt = w.startRowIndex;
            }
            st || (B.positionList = []);
            const Jt = B.positionList, Zt = J ? this.draw.getTableParticle().getTdWindowOffsetY(Mt, J) : 0, k = this.computePageRowPosition({
              positionList: Jt,
              rowList: rt,
              pageNo: o,
              startRowIndex: nt,
              startIndex: ot,
              startX: (B.x + P[3]) * X + D + (U.translateX || 0) * X,
              startY: (B.y + P[0]) * X + K + Zt,
              innerWidth: (B.width - y) * X,
              isTable: !0,
              index: h - 1,
              tdIndex: B.tdIndex,
              trIndex: B.rowIndex,
              zone: O,
              tablePosition: g
            });
            tt || this._offsetTdPositionByVerticalAlign(B, Jt), N = k.x, u = k.y;
          }
          if ((S = J == null ? void 0 : J.repeatTrIndexes) != null && S.length) {
            c.repeatTdPositionList = [];
            let B = 0;
            for (const tt of J.repeatTrIndexes) {
              const st = U.trList[tt];
              for (let Mt = 0; Mt < st.tdList.length; Mt++) {
                const Nt = st.tdList[Mt], rt = [];
                this.computePageRowPosition({
                  positionList: rt,
                  rowList: Nt.rowList,
                  pageNo: o,
                  startRowIndex: 0,
                  startIndex: 0,
                  startX: (Nt.x + P[3]) * X + D + (U.translateX || 0) * X,
                  startY: (B + P[0]) * X + K,
                  innerWidth: (Nt.width - y) * X,
                  isTable: !0,
                  index: h - 1,
                  tdIndex: Mt,
                  trIndex: tt,
                  zone: O,
                  tablePosition: g
                }), this._offsetTdPositionByVerticalAlign(Nt, rt), c.repeatTdPositionList.push({ td: Nt, positionList: rt });
              }
              B += st.height;
            }
          }
          N = D, u = K;
        }
      }
      N = n, u += c.height;
    }
    return { x: N, y: u, index: h };
  }
  // 单元格内容按垂直对齐方式偏移位置
  _offsetTdPositionByVerticalAlign(t, R) {
    if (t.verticalAlign !== ht.MIDDLE && t.verticalAlign !== ht.BOTTOM)
      return;
    const {
      scale: e,
      table: { tdPadding: o }
    } = this.options, n = o[0] + o[2], s = t.rowList.reduce((a, O) => a + O.height, 0), r = (t.height - n) * e - s, l = t.verticalAlign === ht.MIDDLE ? r / 2 : r;
    Math.floor(l) > 0 && R.forEach((a) => {
      const {
        coordinate: { leftTop: O, leftBottom: M, rightBottom: X, rightTop: P }
      } = a;
      O[1] += l, M[1] += l, X[1] += l, P[1] += l;
    });
  }
  computePositionList() {
    this.positionList = [], this.tablePagingPositionList = [], this.tablePagingPositionMap.clear();
    const t = this.draw.getInnerWidth(), R = this.draw.getPageRowList(), e = this.draw.getMargins(), o = e[3], n = this.draw.getHeader();
    let s = 0;
    for (let r = 0; r < R.length; r++) {
      const l = R[r];
      if (!(l != null && l.length)) continue;
      const a = l[0].startIndex, O = e[0] + n.getExtraHeight(r);
      this.computePageRowPosition({
        positionList: this.positionList,
        rowList: l,
        pageNo: r,
        startRowIndex: s,
        startIndex: a,
        startX: o,
        startY: O,
        innerWidth: t
      }), s += l.length;
    }
  }
  computeRowPosition(t) {
    const { row: R, innerWidth: e } = t, o = [];
    return this.computePageRowPosition({
      positionList: o,
      innerWidth: e,
      rowList: [mt(R)],
      pageNo: 0,
      startX: 0,
      startY: 0,
      startIndex: 0,
      startRowIndex: 0
    }), o;
  }
  setCursorPosition(t) {
    this.cursorPosition = t;
  }
  getCursorPosition() {
    return this.cursorPosition;
  }
  getPositionContext() {
    return this.positionContext;
  }
  setPositionContext(t) {
    this.positionContext = t;
  }
  // 根据 x 坐标推断点击位置所属的分栏索引;无分栏布局时返回 undefined
  _getColumnIndexByX(t) {
    const R = this.draw.getColumnLayout();
    if (!R) return;
    const e = this.draw.getMargins()[3], o = t - e;
    for (let n = 0; n < R.count; n++) {
      const s = R.offsets[n], r = n < R.count - 1 ? R.offsets[n + 1] : s + R.width;
      if (o >= s && o < r)
        return n;
    }
    return R.count - 1;
  }
  // 表格被命中时下钻查找单元格内位置(未命中单元格返回 null)
  _getTableChildPositionByXY(t) {
    const { x: R, y: e, pageNo: o, element: n, index: s, tablePosition: r } = t, { scale: l } = this.options, a = r.tableFragment, O = a ? this.draw.getTableParticle().getFragmentTdList(n, a) : n.trList.flatMap((M) => M.tdList);
    for (const M of O) {
      const X = M.rowIndex, P = M.tdIndex, N = n.trList[X];
      if (a) {
        const [h, L] = this.draw.getTableParticle().getTdWindowInFragment(M, n, a);
        if (L <= h) continue;
        const Y = r.coordinate.leftTop[1] + M.y * l + this.draw.getTableParticle().getTdWindowOffsetY(h, a), S = Y + (L - h) * l;
        if (e < Y || e > S) continue;
      }
      const u = this.getPositionByXY({
        x: R,
        y: e,
        td: M,
        pageNo: o,
        tablePosition: r,
        isTable: !0,
        elementList: M.value,
        positionList: M.positionList
      });
      if (~u.index) {
        const {
          index: h,
          isTable: L,
          hitLineStartIndex: Y,
          tablePath: S = []
        } = u, W = {
          index: s,
          trIndex: X,
          tdIndex: P,
          tdId: M.id,
          trId: N.id,
          tableId: n.id
        };
        if (L)
          return {
            ...u,
            index: s,
            tablePath: [W, ...S],
            hitLineStartIndex: Y
          };
        const c = M.value[h];
        return {
          index: s,
          isCheckbox: u.isCheckbox || c.type === V.CHECKBOX || c.controlComponent === j.CHECKBOX,
          isRadio: c.type === V.RADIO || c.controlComponent === j.RADIO,
          isControl: !!c.controlId,
          isImage: u.isImage,
          isDirectHit: u.isDirectHit,
          isTable: !0,
          tdIndex: P,
          trIndex: X,
          tdValueIndex: h,
          tdId: M.id,
          trId: N.id,
          tableId: n.id,
          tablePath: [W],
          hitLineStartIndex: Y
        };
      }
    }
    return null;
  }
  getPositionByXY(t) {
    var u, h, L, Y;
    const { x: R, y: e, isTable: o } = t;
    let { elementList: n, positionList: s } = t;
    n || (n = this.draw.getOriginalElementList()), s || (s = this.getOriginalPositionList());
    const r = t.pageNo ?? this.draw.getPageNo(), l = r;
    if (!o) {
      const S = this.getFloatPositionByXY({
        ...t,
        imgDisplays: [Rt.FLOAT_TOP, Rt.SURROUND]
      });
      if (S) return S;
    }
    for (let S = 0; S < s.length; S++) {
      const {
        index: W,
        pageNo: c,
        left: T,
        isFirstLetter: H,
        coordinate: { leftTop: f, rightTop: D, leftBottom: K }
      } = s[S];
      if (l === c) {
        if (c > l) break;
        if (f[0] - T <= R && D[0] >= R && f[1] <= e && K[1] >= e) {
          let Z = S;
          const U = n[S];
          if (U.type === V.TABLE) {
            const p = this._getTableChildPositionByXY({
              x: R,
              y: e,
              pageNo: r,
              element: U,
              index: W,
              tablePosition: s[S]
            });
            if (p) return p;
          }
          if (U.type === V.IMAGE || U.type === V.LATEX)
            return {
              index: Z,
              isDirectHit: !0,
              isImage: !0
            };
          if (U.type === V.CHECKBOX || U.controlComponent === j.CHECKBOX)
            return {
              index: Z,
              isDirectHit: !0,
              isCheckbox: !0
            };
          if (U.type === V.LABEL)
            return {
              index: Z,
              isDirectHit: !0,
              isLabel: !0
            };
          if (U.type === V.TAB && U.listStyle === Vt.CHECKBOX) {
            let p = Z - 1;
            for (; p > 0; ) {
              const g = n[p];
              if (g.value === q && g.listStyle === Vt.CHECKBOX)
                break;
              p--;
            }
            return {
              index: p,
              isDirectHit: !0,
              isCheckbox: !0
            };
          }
          if (U.type === V.RADIO || U.controlComponent === j.RADIO)
            return {
              index: Z,
              isDirectHit: !0,
              isRadio: !0
            };
          let I;
          if (n[W].value !== q) {
            const p = D[0] - f[0];
            R < f[0] + p / 2 && (Z = S - 1, H && (I = S));
          }
          return {
            isDirectHit: !0,
            hitLineStartIndex: I,
            index: Z,
            isControl: !!U.controlId
          };
        }
      }
    }
    if (!o) {
      const S = this.tablePagingPositionMap.get(r) || [];
      for (const W of S) {
        const {
          index: c,
          coordinate: { leftTop: T, rightTop: H, leftBottom: f }
        } = W;
        if (T[0] <= R && H[0] >= R && T[1] <= e && f[1] >= e) {
          const D = n[c];
          if ((D == null ? void 0 : D.type) === V.TABLE) {
            const K = this._getTableChildPositionByXY({
              x: R,
              y: e,
              pageNo: r,
              element: D,
              index: c,
              tablePosition: W
            });
            if (K) return K;
          }
        }
      }
    }
    if (!o) {
      const S = this.getFloatPositionByXY({
        ...t,
        imgDisplays: [Rt.FLOAT_BOTTOM]
      });
      if (S) return S;
    }
    let a = !1, O = -1, M;
    if (o) {
      const { scale: S } = this.options, { td: W, tablePosition: c } = t;
      if (W && c) {
        const { leftTop: T } = c.coordinate, H = c.tableFragment;
        let f = 0;
        if (H) {
          const I = H.startSplitTrOffset && W.trIndex > H.startTrIndex ? H.startSplitTrOffset : 0;
          f = (H.repeatHeight - H.skipHeight - I) * S;
        }
        const D = W.x * S + T[0], K = W.y * S + T[1] + f, Z = W.width * S, U = W.height * S;
        if (!(D < R && R < D + Z && K < e && e < K + U))
          return {
            index: O
          };
      }
    }
    const X = (
      //isMainActive
      s.filter((S) => S.isLastLetter && S.pageNo === l)
    ), P = this._getColumnIndexByX(R), N = P === void 0 ? X : X.filter(
      (S) => S.columnIndex === void 0 || P === S.columnIndex
    );
    s.filter((S) => S.isLastLetter && S.pageNo === l);
    for (let S = 0; S < N.length; S++) {
      const {
        index: W,
        rowNo: c,
        coordinate: { leftTop: T, leftBottom: H }
      } = N[S];
      if (e > T[1] && e <= H[1]) {
        const f = (
          //isMainActive
          // ?
          s.findIndex(
            (U) => U.pageNo === l && U.rowNo === c
          )
        ), D = n[f], K = s[f], Z = D.listStyle === Vt.CHECKBOX ? this.draw.getMargins()[3] : K.coordinate.leftTop[0];
        if (R < Z)
          ~f ? K.value === q ? O = f : (O = f - 1, M = f) : O = W;
        else {
          if (D.listStyle === Vt.CHECKBOX && R < T[0])
            return {
              index: f,
              isDirectHit: !0,
              isCheckbox: !0
            };
          O = W;
        }
        a = !0;
        break;
      }
    }
    if (!a) {
      const S = this.draw.getHeader(), W = S.isDisabled(r), c = W ? 0 : S.getHeaderTop(r) + S.getHeight(r), T = this.draw.getFooter(), H = T.isDisabled(r), f = this.draw.getHeight(), D = H ? f : f - (T.getFooterBottom(r) + T.getHeight(r));
      if (!W && e < c)
        return {
          index: -1,
          zone: Qt.HEADER
        };
      if (!H && e > D)
        return {
          index: -1,
          zone: Qt.FOOTER
        };
      const K = this.draw.getMargins();
      if (e <= K[0])
        for (let Z = 0; Z < s.length; Z++) {
          const U = s[Z];
          if (U.pageNo !== l || U.rowNo !== 0) continue;
          const { leftTop: I, rightTop: p } = U.coordinate;
          if (R <= K[3] || R >= I[0] && R <= p[0] || ((u = s[Z + 1]) == null ? void 0 : u.rowNo) !== 0)
            return {
              index: U.index
            };
        }
      else {
        const Z = N[N.length - 1];
        if (Z) {
          const U = Z.rowNo;
          for (let I = 0; I < s.length; I++) {
            const p = s[I];
            if (p.pageNo !== l || p.rowNo !== U)
              continue;
            const { leftTop: g, rightTop: J } = p.coordinate;
            if (R <= K[3] || R >= g[0] && R <= J[0] || ((h = s[I + 1]) == null ? void 0 : h.rowNo) !== U)
              return {
                index: p.index
              };
          }
        }
      }
      return {
        index: ((L = N[N.length - 1]) == null ? void 0 : L.index) || s.length - 1
      };
    }
    return {
      hitLineStartIndex: M,
      index: O,
      isControl: !!((Y = n[O]) != null && Y.controlId)
    };
  }
  getFloatPositionByXY(t) {
    const { x: R, y: e } = t, o = t.pageNo ?? this.draw.getPageNo(), { scale: n } = this.options;
    for (let s = 0; s < this.floatPositionList.length; s++) {
      const {
        position: r,
        element: l,
        isTable: a,
        index: O,
        trIndex: M,
        tdIndex: X,
        tdValueIndex: P,
        // zone: floatElementZone,
        pageNo: N
      } = this.floatPositionList[s];
      if (o === N && l.type === V.IMAGE && l.imgDisplay && t.imgDisplays.includes(l.imgDisplay)) {
        const { x: u, y: h } = this.getFloatPositionCoordinate(this.floatPositionList[s]), L = l.width * n, Y = l.height * n;
        if (R >= u && R <= u + L && e >= h && e <= h + Y)
          return a ? {
            index: O,
            isDirectHit: !0,
            isImage: !0,
            isTable: a,
            trIndex: M,
            tdIndex: X,
            tdValueIndex: P,
            tdId: l.tdId,
            trId: l.trId,
            tableId: l.tableId
          } : {
            index: r.index,
            isDirectHit: !0,
            isImage: !0
          };
      }
    }
  }
  adjustPositionContext(t) {
    const R = this.getPositionByXY(t);
    if (!~R.index) return null;
    R.isControl && (this.draw.getMode(), dt.READONLY);
    const {
      index: e,
      isCheckbox: o,
      isRadio: n,
      isControl: s,
      isImage: r,
      isLabel: l,
      isDirectHit: a,
      isTable: O,
      trIndex: M,
      tdIndex: X,
      tdId: P,
      trId: N,
      tableId: u,
      tablePath: h
    } = R;
    return this.setPositionContext({
      isTable: O || !1,
      isCheckbox: o || !1,
      isRadio: n || !1,
      isControl: s || !1,
      isImage: r || !1,
      isLabel: l || !1,
      isDirectHit: a || !1,
      index: e,
      trIndex: M,
      tdIndex: X,
      tdId: P,
      trId: N,
      tableId: u,
      tablePath: h
    }), R;
  }
  setSurroundPosition(t) {
    var M;
    const { scale: R } = this.options, {
      pageNo: e,
      row: o,
      rowElement: n,
      rowElementRect: s,
      surroundElementList: r,
      availableWidth: l
    } = t;
    let a = s.x, O = 0;
    if (r.length && !re(n) && !((M = n.control) != null && M.minWidth))
      for (let X = 0; X < r.length; X++) {
        const P = r[X], N = P.imgFloatPosition;
        if (N.pageNo !== e) continue;
        const u = {
          ...N,
          x: N.x * R,
          y: N.y * R,
          width: P.width * R,
          height: P.height * R
        };
        if (Ze(s, u)) {
          o.isSurround = !0;
          const h = u.width + u.x - s.x;
          if (n.left = h, o.width += h, O += h, a = u.x + u.width, o.width + n.metrics.width > l) {
            n.left = 0, o.width -= O;
            break;
          }
        }
      }
    return { x: a, rowIncreaseWidth: O };
  }
}
var bR = /* @__PURE__ */ ((i) => (i.CONTAIN = "contain", i.COVER = "cover", i))(bR || {}), yt = /* @__PURE__ */ ((i) => (i.REPEAT = "repeat", i.NO_REPEAT = "no-repeat", i.REPEAT_X = "repeat-x", i.REPEAT_Y = "repeat-y", i))(yt || {});
class qe {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  _renderBackgroundColor(t, R, e, o) {
    t.save(), t.fillStyle = R, t.fillRect(0, 0, e, o), t.restore();
  }
  _drawImage(t, R, e) {
    const { background: o, scale: n } = this.options;
    if (o.size === bR.CONTAIN) {
      const s = R * n, r = e * n;
      if (!o.repeat || o.repeat === yt.NO_REPEAT)
        t.drawImage(o.image, 0, 0, s, r);
      else {
        let l = 0, a = 0;
        const O = o.repeat === yt.REPEAT || o.repeat === yt.REPEAT_X ? Math.ceil(R * n / s) : 1, M = o.repeat === yt.REPEAT || o.repeat === yt.REPEAT_Y ? Math.ceil(e * n / r) : 1;
        for (let X = 0; X < O; X++) {
          for (let P = 0; P < M; P++)
            t.drawImage(o.image, l, a, s, r), a += r;
          a = 0, l += s;
        }
      }
    } else
      t.drawImage(o.image, 0, 0, R * n, e * n);
  }
  _renderBackgroundImage(t, R, e) {
    this._drawImage(t, R, e);
  }
  render(t, R) {
    const {
      background: { image: e, color: o, applyPageNumbers: n }
    } = this.options;
    if (e && (!(n != null && n.length) || n.includes(R))) {
      const { width: s, height: r } = this.options;
      this._renderBackgroundImage(t, s, r);
    } else {
      const s = this.draw.getCanvasWidth(R), r = this.draw.getCanvasHeight(R);
      this._renderBackgroundColor(t, o, s, r);
    }
  }
}
class mR {
  constructor() {
    F(this, "fillRect");
    F(this, "fillColor");
    F(this, "fillDecorationStyle");
    this.fillRect = this.clearFillInfo();
  }
  clearFillInfo() {
    return this.fillColor = void 0, this.fillDecorationStyle = void 0, this.fillRect = {
      x: 0,
      y: 0,
      width: 0,
      height: 0
    }, this.fillRect;
  }
  recordFillInfo(t, R, e, o, n, s, r) {
    const l = !this.fillRect.width;
    if (!l && (this.fillColor !== s || this.fillDecorationStyle !== r)) {
      this.render(t), this.clearFillInfo(), this.recordFillInfo(t, R, e, o, n, s, r);
      return;
    }
    l && (this.fillRect.x = R, this.fillRect.y = e), n && this.fillRect.height < n && (this.fillRect.height = n), this.fillRect.width += o, this.fillColor = s, this.fillDecorationStyle = r;
  }
}
class ti extends mR {
  constructor(R) {
    super();
    F(this, "draw");
    F(this, "options");
    this.draw = R, this.options = R.getOptions();
  }
  render(R) {
    if (!this.fillRect.width) return;
    const { highlightAlpha: e } = this.options, { x: o, y: n, width: s, height: r } = this.fillRect;
    R.save(), this.draw.getPdf().setGState(new tR({
      opacity: e
    })), R.globalAlpha = e, R.fillStyle = this.fillColor, R.fillRect(o, n, s, r), this.draw.getPdf().setGState(new tR({
      opacity: 1
    })), R.restore(), this.clearFillInfo();
  }
}
class Ri {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  render(t, R) {
    const { marginIndicatorColor: e, pageMode: o } = this.options, n = this.draw.getWidth(), s = o === bt.CONTINUITY ? this.draw.getCanvasHeight(R) / this.draw.getPagePixelRatio() : this.draw.getHeight(), r = this.draw.getMargins(), l = this.draw.getMarginIndicatorSize();
    t.save(), t.translate(0.5, 0.5), t.strokeStyle = e, t.beginPath();
    const a = [r[3], r[0]], O = [n - r[1], r[0]], M = [r[3], s - r[2]], X = [
      n - r[1],
      s - r[2]
    ];
    t.moveTo(a[0] - l, a[1]), t.lineTo(...a), t.lineTo(a[0], a[1] - l), t.moveTo(O[0] + l, O[1]), t.lineTo(...O), t.lineTo(O[0], O[1] - l), t.moveTo(M[0] - l, M[1]), t.lineTo(...M), t.lineTo(M[0], M[1] + l), t.moveTo(X[0] + l, X[1]), t.lineTo(...X), t.lineTo(X[0], X[1] + l), t.stroke(), t.restore();
  }
}
class ei extends mR {
  constructor(R) {
    super();
    F(this, "options");
    this.options = R.getOptions();
  }
  render(R) {
    if (!this.fillRect.width) return;
    const { scale: e, strikeoutColor: o } = this.options, { x: n, y: s, width: r } = this.fillRect;
    R.save(), R.lineWidth = e, R.strokeStyle = o;
    const l = s + 0.5;
    R.beginPath(), R.moveTo(n, l), R.lineTo(n + r, l), R.stroke(), R.restore(), this.clearFillInfo();
  }
}
var rR = /* @__PURE__ */ ((i) => (i.SOLID = "solid", i.DOUBLE = "double", i.DASHED = "dashed", i.DOTTED = "dotted", i.WAVY = "wavy", i))(rR || {}), lR = /* @__PURE__ */ ((i) => (i.SOLID = "solid", i.DASHED = "dashed", i.DOTTED = "dotted", i))(lR || {});
class ii extends mR {
  constructor(R) {
    super();
    F(this, "options");
    this.options = R.getOptions();
  }
  // 下划线
  _drawLine(R, e, o, n, s) {
    const r = e + n;
    switch (R.beginPath(), s) {
      case lR.DASHED:
        break;
      case lR.DOTTED:
        break;
    }
    R.moveTo(e, o), R.lineTo(r, o), R.stroke();
  }
  // 双实线
  _drawDouble(R, e, o, n) {
    const r = e + n, l = o + 3 * this.options.scale;
    R.beginPath(), R.moveTo(e, o), R.lineTo(r, o), R.stroke(), R.beginPath(), R.moveTo(e, l), R.lineTo(r, l), R.stroke();
  }
  // 波浪线
  _drawWave(R, e, o, n) {
    const { scale: s } = this.options, r = 1.2 * s, l = 1 / s, a = o + 2 * r;
    R.beginPath();
    for (let O = 0; O < n; O++) {
      const M = r * Math.sin(l * O);
      R.lineTo(e + O, a + M);
    }
    R.stroke();
  }
  render(R) {
    if (!this.fillRect.width) return;
    const { underlineColor: e, scale: o } = this.options, { x: n, y: s, width: r } = this.fillRect;
    R.save(), R.strokeStyle = this.fillColor || e, R.lineWidth = o;
    const l = Math.floor(s + 2 * R.lineWidth) + 0.5;
    switch (this.fillDecorationStyle) {
      case rR.WAVY:
        this._drawWave(R, n, l, r);
        break;
      case rR.DOUBLE:
        this._drawDouble(R, n, l, r);
        break;
      case rR.DASHED:
        this._drawLine(R, n, l, r, lR.DASHED);
        break;
      case rR.DOTTED:
        this._drawLine(R, n, l, r, lR.DOTTED);
        break;
      default:
        this._drawLine(R, n, l, r);
        break;
    }
    R.restore(), this.clearFillInfo();
  }
}
class si {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "ctx2d");
    F(this, "curX");
    F(this, "curY");
    F(this, "text");
    F(this, "bold");
    // private size: number
    F(this, "italic");
    F(this, "curStyle");
    F(this, "curColor");
    F(this, "cacheMeasureText");
    this.draw = t, this.options = t.getOptions(), this.ctx2d = t.getCtx2d(), this.curX = -1, this.curY = -1, this.text = "", this.bold = !1, this.italic = !1, this.curStyle = "", this.cacheMeasureText = /* @__PURE__ */ new Map();
  }
  measureBasisWord(t, R) {
    t.save(), t.font = R;
    const e = this.measureText(t, {
      value: Le
    });
    return t.restore(), e;
  }
  measureWord(t, R, e) {
    const o = this.draw.getLetterReg();
    let n = 0, s = null, r = e;
    for (; r < R.length; ) {
      const l = R[r];
      if (l.type && l.type !== V.TEXT || !o.test(l.value)) {
        s = l;
        break;
      }
      n += this.measureText(t, l).width, r++;
    }
    return {
      width: n,
      endElement: s
    };
  }
  measurePunctuationWidth(t, R) {
    return !R || !ue.includes(R.value) ? 0 : (t.font = this.draw.getFont(R), this.measureText(t, R).width);
  }
  measureText(t, R) {
    const e = this.draw.getFont(R), o = R.value === `
` ? "" : R.value;
    if (R.width) {
      const l = this.draw.measureText(e, R.value);
      return {
        width: R.width,
        actualBoundingBoxAscent: l.actualBoundingBoxAscent,
        actualBoundingBoxDescent: l.actualBoundingBoxDescent,
        actualBoundingBoxLeft: l.actualBoundingBoxLeft,
        actualBoundingBoxRight: l.actualBoundingBoxRight,
        fontBoundingBoxAscent: l.fontBoundingBoxAscent,
        fontBoundingBoxDescent: l.fontBoundingBoxDescent
      };
    }
    const n = `${R.value}${t.font}`, s = this.cacheMeasureText.get(n);
    if (s)
      return s;
    const r = this.draw.measureText(e, o);
    return this.cacheMeasureText.set(n, r), r;
  }
  getBasisWordBoundingBoxAscent(t, R) {
    return this.measureBasisWord(t, R).actualBoundingBoxAscent;
  }
  complete() {
    this._render(), this.text = "";
  }
  record(t, R, e, o) {
    if (this.ctx2d = t, this.options.renderMode === JR.COMPATIBILITY) {
      this._setCurXY(e, o), this.text = R.value, this.curStyle = R.style, this.curColor = R.color, this.bold = R.bold, this.italic = R.italic, this.complete();
      return;
    }
    this.text || this._setCurXY(e, o), (this.curStyle && R.style !== this.curStyle || R.color !== this.curColor) && (this.complete(), this._setCurXY(e, o)), this.text += R.value, this.curStyle = R.style.toLocaleLowerCase(), this.curColor = R.color, this.bold = R.bold, this.italic = R.italic;
  }
  _setCurXY(t, R) {
    this.curX = t, this.curY = R;
  }
  _render() {
    if (!this.text || !~this.curX || !~this.curY) return;
    this.ctx2d.save(), this.ctx2d.font = this.curStyle.toLowerCase();
    const t = this.bold ? "bold" : "normal", R = this.italic ? "italic" : "";
    this.draw.getPdf().setFont(this.curStyle.split("px ")[1], R, t), this.draw.getPdf().setCharSpace(0.1), this.ctx2d.save(), this.ctx2d.fillStyle = this.curColor || this.options.defaultColor, this.ctx2d.fillText(this.text, this.curX, this.curY), this.ctx2d.restore();
  }
}
const OR = {
  PAGE_NO: "{pageNo}",
  PAGE_COUNT: "{pageCount}"
}, oi = {
  bottom: 60,
  size: 12,
  font: "Microsoft YaHei",
  color: "#000000",
  rowFlex: Gt.CENTER,
  format: OR.PAGE_NO,
  numberType: WR.ARABIC,
  disabled: !1,
  startPageNo: 1,
  fromPageNo: 0,
  maxPageNo: null
};
class RR {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  static formatNumberPlaceholder(t, R, e, o) {
    const n = o === WR.CHINESE ? Ve(R) : `${R}`;
    return t.replace(e, n);
  }
  render(t, R) {
    const {
      scale: e,
      pageNumber: {
        size: o,
        font: n,
        color: s,
        rowFlex: r,
        numberType: l,
        format: a,
        startPageNo: O,
        fromPageNo: M
      }
    } = this.options;
    if (R < M) return;
    let X = a;
    const P = new RegExp(OR.PAGE_NO);
    P.test(X) && (X = RR.formatNumberPlaceholder(
      X,
      R + O - M,
      P,
      l
    ));
    const N = new RegExp(OR.PAGE_COUNT);
    N.test(X) && (X = RR.formatNumberPlaceholder(
      X,
      this.draw.getPageCount() - M,
      N,
      l
    ));
    const u = this.draw.getWidth(), h = this.draw.getHeight(), L = this.draw.getPageNumberBottom(), Y = h - L;
    t.save(), t.fillStyle = s;
    const S = n.toLowerCase(), W = `${o * e}px ${S}`;
    t.font = W, this.draw.getPdf().setFont(S, "", "normal");
    let c = 0;
    const T = this.draw.getMargins(), { width: H } = this.draw.measureText(W, X);
    r === Gt.CENTER ? c = (u - H) / 2 : r === Gt.RIGHT ? c = u - H - T[1] : c = T[3], t.fillText(X, c, Y), t.restore();
  }
}
class ni {
  constructor(t) {
    // private draw: DrawPdf
    // private range: RangeManager
    F(this, "options");
    // 片段内容高度缓存(片段对象随每次渲染重建,无过期风险)
    F(this, "fragmentContentHeightCache");
    // 单元格内容行高前缀和缓存(按 rowList 数组身份,每次渲染重建无过期风险)
    F(this, "tdLineHeightPrefixCache");
    // 片段单元格枚举缓存(片段对象随每次渲染重建,命中/绘制高频复用)
    F(this, "fragmentTdListCache");
    this.options = t.getOptions(), this.fragmentContentHeightCache = /* @__PURE__ */ new WeakMap(), this.tdLineHeightPrefixCache = /* @__PURE__ */ new WeakMap(), this.fragmentTdListCache = /* @__PURE__ */ new WeakMap();
  }
  getTrListGroupByCol(t) {
    var e;
    const R = mt(t);
    for (let o = 0; o < t.length; o++) {
      const n = R[o];
      for (let s = n.tdList.length - 1; s >= 0; s--) {
        const r = n.tdList[s], { rowspan: l, rowIndex: a, colIndex: O } = r, M = a + l - 1;
        if (M !== o) {
          const X = n.tdList.splice(s, 1)[0];
          (e = R[M]) == null || e.tdList.splice(O, 0, X);
        }
      }
    }
    return R;
  }
  _drawOuterBorder(t) {
    const {
      ctx2d: R,
      startX: e,
      startY: o,
      width: n,
      height: s,
      isDrawFullBorder: r,
      borderExternalWidth: l
    } = t, { scale: a } = this.options, O = R.lineWidth;
    l && (R.lineWidth = l * a), R.beginPath();
    const M = Math.round(e), X = Math.round(o);
    R.translate(0.5, 0.5), r ? R.rect(M, X, n, s) : (R.moveTo(M, X + s), R.lineTo(M, X), R.lineTo(M + n, X)), R.stroke(), l && (R.lineWidth = O), R.translate(-0.5, -0.5);
  }
  // 枚举片段涉及的单元格:进位合并单元格(覆盖片段起始行的跨行单元格)
  // + 片段范围行单元格。直接遍历行区间与缓存的进位单元格,避免全表扫描;
  // 结果按片段对象缓存(td 对象共享于 trList,枚举结果与传入 element 包装无关)
  getFragmentTdList(t, R) {
    const e = this.fragmentTdListCache.get(R);
    if (e) return e;
    const { startTrIndex: o, endTrIndex: n, carriedTds: s } = R, r = [...s || []], l = t.trList;
    for (let a = o; a < n; a++)
      r.push(...l[a].tdList);
    return this.fragmentTdListCache.set(R, r), r;
  }
  // 枚举跨页片段内需绘制的单元格:续页回显表头 + 片段范围行 + 进位合并单元格
  // 纵坐标与高度均按单元格窗口裁剪(合并/拆分/普通单元格统一处理)
  _getDrawTdList(t, R) {
    const { scale: e } = this.options, o = t.trList, n = [];
    if (!R) {
      for (const l of o)
        for (const a of l.tdList)
          n.push({
            td: a,
            offsetY: 0,
            height: a.height * e,
            isRepeat: !1,
            isCarried: !1
          });
      return n;
    }
    const { startTrIndex: s, repeatTrIndexes: r } = R;
    if (r != null && r.length) {
      let l = 0;
      for (const a of r) {
        const O = o[a];
        for (const M of O.tdList)
          n.push({
            td: M,
            offsetY: (l - M.y) * e,
            height: M.height * e,
            isRepeat: !0,
            isCarried: !1
          });
        l += O.height;
      }
    }
    for (const l of this.getFragmentTdList(t, R)) {
      const [a, O] = this.getTdWindowInFragment(
        l,
        t,
        R
      );
      O <= a || n.push({
        td: l,
        offsetY: this.getTdWindowOffsetY(a, R),
        height: (O - a) * e,
        isRepeat: !1,
        isCarried: l.rowIndex < s
      });
    }
    return n;
  }
  _drawSlash(t, R, e, o) {
    var X, P;
    const { scale: n } = this.options, { td: s, offsetY: r, height: l } = R;
    t.save();
    const a = s.width * n, O = Math.round(s.x * n + e), M = Math.round(s.y * n + o + r);
    (X = s.slashTypes) != null && X.includes(DR.FORWARD) && (t.moveTo(O + a, M), t.lineTo(O, M + l)), (P = s.slashTypes) != null && P.includes(DR.BACK) && (t.moveTo(O, M), t.lineTo(O + a, M + l)), t.stroke(), t.restore();
  }
  _drawBorder(t, R, e, o, n, s) {
    var W, c, T, H, f, D;
    const {
      colgroup: r,
      trList: l,
      borderType: a,
      borderColor: O,
      borderWidth: M = 1,
      borderExternalWidth: X
    } = R;
    if (!r || !l) return;
    const {
      scale: P,
      table: { defaultBorderColor: N }
    } = this.options, u = R.width * P, h = s ? (s.repeatHeight + this.getFragmentContentHeight(R, s)) * P : R.height * P, L = a === nR.EMPTY, Y = a === nR.EXTERNAL, S = a === nR.INTERNAL;
    t.save(), nR.DASH, t.lineWidth = M * P, t.strokeStyle = O || N, !L && !S && this._drawOuterBorder({
      ctx2d: t,
      startX: e,
      startY: o,
      width: u,
      height: h,
      borderExternalWidth: X,
      isDrawFullBorder: Y
    });
    for (const K of n) {
      const { td: Z, offsetY: U, height: I } = K;
      if ((W = Z.slashTypes) != null && W.length && this._drawSlash(t, K, e, o), !((c = Z.borderTypes) != null && c.length) && (L || Y))
        continue;
      const p = Z.width * P, g = Math.round(Z.x * P + e + p), J = Math.round(Z.y * P + o + U);
      if (t.translate(0.5, 0.5), t.beginPath(), (T = Z.borderTypes) != null && T.includes(aR.TOP) && (t.moveTo(g - p, J), t.lineTo(g, J), t.stroke()), (H = Z.borderTypes) != null && H.includes(aR.RIGHT) && (t.moveTo(g, J), t.lineTo(g, J + I), t.stroke()), (f = Z.borderTypes) != null && f.includes(aR.BOTTOM) && (t.moveTo(g, J + I), t.lineTo(g - p, J + I), t.stroke()), (D = Z.borderTypes) != null && D.includes(aR.LEFT) && (t.moveTo(g - p, J), t.lineTo(g - p, J + I), t.stroke()), !L && !Y) {
        if ((!S || Z.colIndex + Z.colspan < r.length) && (t.moveTo(g, J), t.lineTo(g, J + I), X && X !== M && Z.colIndex + Z.colspan === r.length)) {
          const y = t.lineWidth;
          t.lineWidth = X * P, t.stroke(), t.beginPath(), t.lineWidth = y;
        }
        if (!S || Z.rowIndex + Z.rowspan < l.length) {
          const y = Z.rowIndex + Z.rowspan === ((s == null ? void 0 : s.endTrIndex) ?? l.length), v = X && X !== M && y;
          if (v && (t.stroke(), t.beginPath()), t.moveTo(g, J + I), t.lineTo(g - p, J + I), v) {
            const B = t.lineWidth;
            t.lineWidth = X * P, t.stroke(), t.beginPath(), t.lineWidth = B;
          }
        }
        t.stroke();
      }
      t.translate(-0.5, -0.5);
    }
    t.restore();
  }
  _drawBackgroundColor(t, R, e, o) {
    const { scale: n } = this.options;
    for (const { td: s, offsetY: r, height: l } of o) {
      if (!s.backgroundColor) continue;
      t.save();
      const a = s.width * n, O = Math.round(s.x * n + R), M = Math.round(s.y * n + e + r);
      t.fillStyle = s.backgroundColor, t.fillRect(O, M, a, l), t.restore();
    }
  }
  getTableWidth(t) {
    return t.colgroup.reduce((R, e) => R + e.width, 0);
  }
  // 行内拆分行在片段内的可见高度(未缩放;未拆分返回行原始高度)
  getFragmentTrHeight(t, R, e) {
    if (!e) return t.height;
    let o = t.height;
    return R === e.startTrIndex && e.startSplitTrOffset && (o -= e.startSplitTrOffset), R === e.endTrIndex - 1 && e.endSplitTrHeight !== void 0 && (o -= Math.max(0, t.height - e.endSplitTrHeight)), o;
  }
  // 片段内容高度(未缩放):范围内行按可见高度求和(不含回显表头)
  getFragmentContentHeight(t, R) {
    const e = this.fragmentContentHeightCache.get(R);
    if (e !== void 0) return e;
    const { startTrIndex: o, endTrIndex: n, startSplitTrOffset: s, endSplitTrHeight: r } = R, l = t.trList;
    let a = 0;
    for (let O = o; O < n; O++) {
      let M = l[O].height;
      O === o && s && (M -= s), O === n - 1 && r !== void 0 && (M -= Math.max(0, l[O].height - r)), a += M;
    }
    return this.fragmentContentHeightCache.set(R, a), a;
  }
  // 计算单元格在片段内的可见窗口(未缩放,相对单元格顶部)
  // 合并/拆分/普通单元格通用:窗口为片段可视区与单元格区域的交集
  getTdWindowInFragment(t, R, e) {
    const { skipHeight: o, startSplitTrOffset: n } = e, s = o + (n ?? 0), r = s + this.getFragmentContentHeight(R, e), l = Math.max(0, s - t.y), a = Math.min(t.height, r - t.y);
    return [l, a];
  }
  // 单元格窗口顶部在片段内的纵坐标偏移(缩放后像素;
  // td.y 相对整表,片段内需平移到窗口位置)
  getTdWindowOffsetY(t, R) {
    const { scale: e } = this.options;
    return (t - R.skipHeight - (R.startSplitTrOffset ?? 0) + R.repeatHeight) * e;
  }
  // 窗口内可见内容行切片:返回行列表与首行在单元格内的起始行号/元素索引
  getTdVisibleRowListByWindow(t, R, e) {
    var r;
    const o = t.rowList, [n, s] = this.getTdLineRangeBySplitWindow(
      t,
      R,
      e
    );
    return {
      rowList: o.slice(n, s),
      startIndex: ((r = o[n]) == null ? void 0 : r.startIndex) ?? 0,
      startRowIndex: n
    };
  }
  // 计算单元格内容行在垂直窗口内的行范围(行内拆分使用)
  // windowStart/windowEnd 未缩放、相对行顶;返回 [起始行, 结束行)(按整行取舍不裁剪行)
  getTdLineRangeBySplitWindow(t, R, e) {
    const { scale: o } = this.options, n = t.rowList || [];
    let s = this.tdLineHeightPrefixCache.get(n);
    if (!s) {
      const {
        table: { tdPadding: O }
      } = this.options;
      s = [O[0] * o];
      for (let M = 0; M < n.length; M++)
        s.push(s[M] + n[M].height);
      this.tdLineHeightPrefixCache.set(n, s);
    }
    const r = R * o, l = e * o, a = (O) => {
      let M = 0, X = n.length;
      for (; M < X; ) {
        const P = M + X + 1 >> 1;
        s[P] <= O ? M = P : X = P - 1;
      }
      return M;
    };
    return [a(r), a(l)];
  }
  getTableHeight(t) {
    const R = t.trList;
    return R != null && R.length ? this.getTdListByColIndex(R, 0).reduce(
      (e, o) => e + o.height,
      0
    ) : 0;
  }
  getRowCountByColIndex(t, R) {
    return this.getTdListByColIndex(t, R).reduce(
      (e, o) => e + o.rowspan,
      0
    );
  }
  getTdListByColIndex(t, R) {
    const e = [];
    for (let o = 0; o < t.length; o++) {
      const n = t[o].tdList;
      for (let s = 0; s < n.length; s++) {
        const r = n[s], l = r.colIndex, a = l + r.colspan - 1;
        R >= l && R <= a && e.push(r);
      }
    }
    return e;
  }
  getTdListByRowIndex(t, R) {
    const e = [];
    for (let o = 0; o < t.length; o++) {
      const n = t[o].tdList;
      for (let s = 0; s < n.length; s++) {
        const r = n[s], l = r.rowIndex, a = l + r.rowspan - 1;
        R >= l && R <= a && e.push(r);
      }
    }
    return e;
  }
  computeRowColInfo(t) {
    const { colgroup: R, trList: e } = t;
    if (!R || !e) return;
    let o = 0;
    for (let n = 0; n < e.length; n++) {
      const s = e[n], r = e.length - 1 === n;
      for (let l = 0; l < s.tdList.length; l++) {
        const a = s.tdList[l];
        let O = 0;
        if (e.length > 1 && n !== 0) {
          const L = s.tdList[l - 1], Y = L ? L.colIndex + L.colspan : l;
          for (let S = Y; S < R.length; S++)
            if (this.getRowCountByColIndex(e.slice(0, n), S) === n) {
              O = S;
              let c = 0;
              for (let T = 0; T < S; T++)
                c += R[T].width;
              o = c;
              break;
            }
        } else {
          const L = s.tdList[l - 1];
          L && (O = L.colIndex + L.colspan);
        }
        let M = 0;
        for (let L = 0; L < a.colspan; L++)
          M += R[L + O].width;
        let X = 0;
        for (let L = 0; L < a.rowspan; L++) {
          const Y = e[L + n] || e[n];
          X += Y.height;
        }
        const P = s.tdList.length - 1 === l;
        let N = r;
        if (!N && a.rowspan > 1) {
          const L = e.length - 1 - n;
          N = a.rowspan - 1 === L;
        }
        const u = r && P;
        a.isLastRowTd = P, a.isLastColTd = N, a.isLastTd = u, a.x = o;
        let h = 0;
        for (let L = 0; L < n; L++) {
          const Y = e[L].tdList;
          for (let S = 0; S < Y.length; S++) {
            const W = Y[S];
            if (O >= W.colIndex && O < W.colIndex + W.colspan) {
              h += W.height;
              break;
            }
          }
        }
        a.y = h, a.width = M, a.height = X, a.rowIndex = n, a.colIndex = O, a.trIndex = n, a.tdIndex = l, o += M, P && !u && (o = 0);
      }
    }
  }
  render(t, R, e, o, n) {
    const s = this._getDrawTdList(R, n);
    this._drawBackgroundColor(t, e, o, s), this._drawBorder(t, R, e, o, s, n);
  }
}
class ai {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "tableParticle");
    this.draw = t, this.options = t.getOptions(), this.tableParticle = t.getTableParticle();
  }
  // 表格跨页时在渲染层拆分行:数据层始终保持单一表格,
  // 仅将跨页表格的行记录拆分为按页片段(超高单元格按内容行行内拆分)
  splitTableRowAcrossPages(t) {
    var X, P, N, u;
    const { scale: R } = this.options, e = this.draw.getHeight(), o = this.draw.getColumnLayout(), n = (o == null ? void 0 : o.count) || 1, s = n > 1;
    let r = 0, l = 0, a = this.draw.getMainOuterHeight(0);
    const O = [];
    let M = !1;
    for (let h = 0; h < t.length; h++) {
      const L = t[h], Y = L.elementList[0], S = Y == null ? void 0 : Y.trList, W = !!((X = t[h - 1]) != null && X.isPageBreak), c = () => {
        s && l < n - 1 ? l++ : (r++, l = 0), a = this.draw.getMainOuterHeight(r);
      }, T = () => {
        s && L.columnIndex !== void 0 && L.columnIndex > l && !M && (l = L.columnIndex, a = this.draw.getMainOuterHeight(r)), (L.height + (L.offsetY || 0) + a > e || W) && c(), s && (L.columnIndex = l), a += L.height + (L.offsetY || 0), O.push(L);
      }, H = (Y == null ? void 0 : Y.type) === V.TABLE && (Y.hide || ((P = Y.control) == null ? void 0 : P.hide) || ((N = Y.area) == null ? void 0 : N.hide) && !this.draw.isAreaHideDisabled()) && !this.draw.isDesignMode();
      if (!(L.elementList.length === 1 && (Y == null ? void 0 : Y.type) === V.TABLE && !!(S != null && S.length) && !H)) {
        T();
        continue;
      }
      const D = this.draw.getElementRowMargin(Y), K = D * 2, Z = [0];
      for (let _ = 0; _ < S.length; _++)
        Z.push(Z[_] + S[_].height);
      const U = [];
      for (const _ of S)
        for (const $ of _.tdList)
          $.rowspan > 1 && U.push($);
      const I = (_) => S[_].tdList.every(($) => {
        var A;
        return !!((A = $.rowList) != null && A.length);
      }), p = (_) => {
        const $ = [...S[_].tdList];
        for (const A of U)
          A.rowIndex < _ && A.rowIndex + A.rowspan > _ && $.push(A);
        return $;
      }, {
        table: { tdPadding: g },
        defaultSize: J
      } = this.options, y = g[0] + g[2] + J, v = (_, $, A) => {
        const z = Z[_];
        let m = 0, at = !1, Ot = 0;
        for (const Ft of p(_)) {
          const Wt = Math.min(Ft.height, z + $ - Ft.y), St = Math.max(0, A - Ft.y);
          if (Wt <= St) continue;
          const [Xt, G] = this.tableParticle.getTdLineRangeBySplitWindow(
            Ft,
            St,
            Wt
          );
          m = Math.max(m, G - Xt), G < Ft.rowList.length && (at = !0);
          const E = Ft.rowList.slice(0, G).reduce((C, lt) => C + lt.height, 0), b = Ft.y + g[0] + g[2] + E / R - z;
          Ot = Math.max(Ot, b);
        }
        return { fit: m, hasRemaining: at, consumedHeight: Ot };
      };
      let B = r, tt = l, st = a;
      s && L.columnIndex !== void 0 && L.columnIndex > l && (tt = L.columnIndex, st = this.draw.getMainOuterHeight(B));
      const Mt = () => {
        s && tt < n - 1 ? tt++ : (B++, tt = 0), st = this.draw.getMainOuterHeight(B);
      };
      if (W)
        Mt();
      else if (st + S[0].height * R + K > e) {
        const _ = e - st - K, { fit: $, hasRemaining: A, consumedHeight: z } = I(0) ? v(0, _ / R, 0) : { fit: 0, hasRemaining: !1, consumedHeight: 0 };
        let m = -1;
        $ >= 1 && (A ? (m = Math.min(z, _ / R), S[0].height - m < y && (m = S[0].height - y)) : S[0].height - _ / R >= y && (m = _ / R)), m <= 0 && Mt();
      }
      const Nt = Y.height * R;
      if (st + K + Nt <= e) {
        T();
        continue;
      }
      const rt = [];
      let ot = 0, nt = 0, Jt = B, Zt = tt, k = st;
      const w = [];
      let Q = 0, Tt = !1;
      for (; ot < S.length; ) {
        const _ = rt.length === 0;
        if (!_ && (s && Zt < n - 1 ? Zt++ : (Jt++, Zt = 0), k = this.draw.getMainOuterHeight(Jt), rt.length === 1)) {
          for (let St = 0; St < rt[0].endTrIndex; St++) {
            const Xt = S[St];
            Xt.pagingRepeat && (w.push(St), Q += Xt.height);
          }
          w.length && e - k - K - Q * R < y * R && (w.length = 0, Q = 0);
        }
        const $ = K + (_ ? 0 : Q * R), A = e - k - $;
        if (A < y * R) {
          Tt = !0;
          break;
        }
        const z = Z[ot] + nt;
        if (nt > 0 && (S[ot].height - nt) * R > A) {
          const Xt = nt + A / R, { fit: G, hasRemaining: E, consumedHeight: b } = v(
            ot,
            Xt,
            z
          );
          let C = Xt;
          G >= 1 && E && (C = Math.min(b, Xt), S[ot].height - C < y && (C = Math.max(
            nt + 1,
            S[ot].height - y
          ))), C <= nt && (C = nt + 1), rt.push({
            startTrIndex: ot,
            endTrIndex: ot + 1,
            startSplitTrOffset: nt,
            endSplitTrHeight: C,
            columnIndex: Zt
          }), nt = C;
          continue;
        }
        let m = nt > 0 ? (S[ot].height - nt) * R : 0, at = nt > 0 ? ot + 1 : ot, Ot, Ft = !1, Wt = !1;
        for (; ; ) {
          if (at >= S.length) {
            Wt = !0;
            break;
          }
          const St = S[at].height * R;
          if (m + St <= A) {
            m += St, at++;
            continue;
          }
          const Xt = A - m;
          if (I(at)) {
            const { fit: G, hasRemaining: E, consumedHeight: b } = v(
              at,
              Xt / R,
              z
            );
            let C = -1;
            if (G >= 1 && (E ? (C = Math.min(b, Xt / R), S[at].height - C < y && (C = S[at].height - y)) : S[at].height - Xt / R >= y && (C = Xt / R)), C > 0) {
              Ot = C;
              break;
            }
          }
          at <= ot && (rt.length ? (at = S.length, Wt = !0) : Ft = !0);
          break;
        }
        if (Ft) {
          Tt = !0;
          break;
        }
        if (rt.push({
          startTrIndex: ot,
          endTrIndex: Ot !== void 0 ? at + 1 : at,
          startSplitTrOffset: nt || void 0,
          endSplitTrHeight: Ot,
          columnIndex: Zt
        }), ot = at, nt = Ot ?? 0, Wt) break;
      }
      if (Tt) {
        T();
        continue;
      }
      M = !0;
      const d = L.elementList[0];
      let eR = 0, PR = 0;
      for (let _ = 0; _ < rt.length; _++) {
        const $ = rt[_], A = _ === 0, z = !A && w.length ? w : void 0, m = z ? Q : 0, Ot = (this.tableParticle.getFragmentContentHeight(
          Y,
          $
        ) + m) * R;
        O.push({
          ...L,
          height: Ot + D,
          offsetY: A ? L.offsetY : 0,
          // 列表标记仅在首片段绘制
          isList: A ? L.isList : !1,
          // 分栏布局下片段落位到对应栏
          ...s ? { columnIndex: $.columnIndex } : {},
          elementList: [
            {
              ...d,
              metrics: {
                width: d.metrics.width,
                height: Ot,
                boundingBoxAscent: d.metrics.boundingBoxAscent,
                boundingBoxDescent: Ot
              }
            }
          ],
          tableFragment: {
            startTrIndex: $.startTrIndex,
            endTrIndex: $.endTrIndex,
            skipHeight: eR,
            repeatHeight: m,
            repeatTrIndexes: z,
            startSplitTrOffset: $.startSplitTrOffset,
            endSplitTrHeight: $.endSplitTrHeight,
            // 带入片段的跨行合并单元格(覆盖片段起始行)
            carriedTds: U.length ? U.filter(
              (Wt) => Wt.rowIndex < $.startTrIndex && Wt.rowIndex + Wt.rowspan > $.startTrIndex
            ) : void 0
          }
        });
        const Ft = ((u = rt[_ + 1]) == null ? void 0 : u.startTrIndex) ?? 0;
        for (; PR < Ft; )
          eR += S[PR].height, PR++;
      }
      r = Jt, l = Zt;
      const et = O[O.length - 1];
      a = this.draw.getMainOuterHeight(r) + et.height + (et.offsetY || 0);
    }
    for (let h = 0; h < O.length; h++)
      O[h].rowIndex = h;
    return O;
  }
  // maxPageNo 截断:按片段边界裁剪表格,保留已展示片段内容。
  // 处理拆分行部分内容、跨越裁剪点的 rowspan 收缩;
  // 返回是否有内容被保留(首个片段即超限时返回 false,应整体删除)
  // Upstream also migrates the cursor context / selection here; this fork
  // has no cursor, so that part is dropped (hence the unused _elementList).
  truncateTableByFragment(t, R, e) {
    const { startTrIndex: o, startSplitTrOffset: n, skipHeight: s } = R, r = t.trList, l = /* @__PURE__ */ new Set();
    let a = o;
    if (n) {
      const M = r[o];
      for (const P of M.tdList)
        this._trimTdContentToWindow(P, n) && l.add(P), P.height = n;
      M.height = n, M.minHeight = Math.min(
        M.minHeight ?? n,
        n
      );
      const X = s + n;
      for (let P = 0; P < o; P++)
        for (const N of r[P].tdList) {
          if (N.rowIndex + N.rowspan <= o) continue;
          const u = X - N.y;
          u >= N.height || this._trimTdContentToWindow(N, u) && l.add(N);
        }
      a = o + 1;
    }
    if (!a) return !1;
    const O = [0];
    for (let M = 0; M < a; M++)
      O.push(O[M] + r[M].height);
    for (let M = 0; M < a; M++)
      for (const X of r[M].tdList)
        X.rowIndex + X.rowspan > a && (X.rowspan = a - X.rowIndex), X.height = O[X.rowIndex + X.rowspan] - O[X.rowIndex];
    return t.trList = r.slice(0, a), t.height = this.tableParticle.getTableHeight(t), !0;
  }
  // 按可见窗口裁剪单元格内容与内容行(至少保留一个补偿节点,维持单元格非空约定)
  _trimTdContentToWindow(t, R) {
    const e = t.value.length, {
      scale: o,
      table: { tdPadding: n }
    } = this.options;
    let [, s] = this.tableParticle.getTdLineRangeBySplitWindow(
      t,
      0,
      Math.max(0, R)
    );
    const r = t.rowList, l = n[0] + n[2];
    let a = 0, O = 0;
    for (let X = 0; X < s; X++) {
      const P = a + r[X].height / o;
      if (l + P > R) break;
      a = P, O = X + 1;
    }
    s = O;
    const M = s < r.length ? r[s].startIndex : t.value.length;
    if (!M) {
      const { trId: X, tableId: P } = t.value[0] || {};
      return t.value = [{ value: q, tdId: t.id, trId: X, tableId: P }], t.rowList = this.draw.computeRowList({
        innerWidth: (t.width - (n[1] + n[3])) * o,
        elementList: t.value,
        isFromTable: !0,
        isPagingMode: this.draw.getIsPagingMode()
      }), !0;
    }
    return t.value = t.value.slice(0, M), t.rowList = r.slice(0, s), M < e;
  }
  // maxPageNo 截断后修复表格光标上下文与选区:
  // 被裁剪行的光标迁移到末尾可见单元格并重建干净上下文;
  // 嵌套表格路径失效时折叠到外层单元格;选区索引收缩到保留范围内
}
class ri {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    // private container: HTMLDivElement
    // The popup pair is only used by the editor's interactive hyperlink hover —
    // never touched on the PDF render path. In Node (no DOM) we leave these
    // null, and the popup methods below short-circuit. See _createHyperlinkPopupDom.
    F(this, "hyperlinkPopupContainer");
    F(this, "hyperlinkDom");
    this.draw = t, this.options = t.getOptions();
    const { hyperlinkPopupContainer: R, hyperlinkDom: e } = this._createHyperlinkPopupDom();
    this.hyperlinkDom = e, this.hyperlinkPopupContainer = R;
  }
  _createHyperlinkPopupDom() {
    if (typeof document > "u")
      return { hyperlinkPopupContainer: null, hyperlinkDom: null };
    const t = document.createElement("div");
    t.classList.add(`${it}-hyperlink-popup`);
    const R = document.createElement("a");
    return R.target = "_blank", R.rel = "noopener", t.append(R), { hyperlinkPopupContainer: t, hyperlinkDom: R };
  }
  drawHyperlinkPopup(t, R) {
    if (!this.hyperlinkPopupContainer || !this.hyperlinkDom) return;
    const {
      coordinate: {
        leftTop: [e, o]
      },
      lineHeight: n
    } = R, s = this.draw.getHeight(), r = this.draw.getPageGap(), l = this.draw.getPageNo() * (s + r);
    this.hyperlinkPopupContainer.style.display = "block", this.hyperlinkPopupContainer.style.left = `${e}px`, this.hyperlinkPopupContainer.style.top = `${o + l + n}px`;
    const a = t.url || "#";
    this.hyperlinkDom.href = a, this.hyperlinkDom.title = a, this.hyperlinkDom.innerText = a;
  }
  clearHyperlinkPopup() {
    this.hyperlinkPopupContainer && (this.hyperlinkPopupContainer.style.display = "none");
  }
  openHyperlink(t) {
    const R = window.open(t.url, "_blank");
    R && (R.opener = null);
  }
  render(t, R, e, o) {
    t.save(), t.font = R.style.toLowerCase();
    const n = R.style.toLowerCase(), s = R.bold ? "bold" : "normal", r = R.italic ? "italic" : "";
    this.draw.getPdf().setFont(n.split("px ")[1], r, s), R.color || (R.color = this.options.defaultHyperlinkColor), t.fillStyle = R.color, R.underline === void 0 && (R.underline = !0), t.fillText(R.value, e, o), t.restore();
  }
}
class li {
  constructor(t) {
    F(this, "options");
    F(this, "draw");
    this.options = t.getOptions(), this.draw = t;
  }
  render(t, R, e, o) {
    var W, c, T, H;
    const {
      scale: n,
      label: {
        defaultBackgroundColor: s,
        defaultColor: r,
        defaultBorderRadius: l,
        defaultPadding: a
      }
    } = this.options, O = ((W = R.label) == null ? void 0 : W.backgroundColor) || s, M = ((c = R.label) == null ? void 0 : c.color) || r, X = ((T = R.label) == null ? void 0 : T.borderRadius) || l, P = ((H = R.label) == null ? void 0 : H.padding) || a;
    t.save(), t.font = R.style, t.font = R.style.toLowerCase();
    const N = R.style.toLowerCase(), u = R.bold ? "bold" : "normal", h = R.italic ? "italic" : "";
    this.draw.getPdf().setFont(N.split("px ")[1], h, u);
    const { width: L, height: Y, boundingBoxAscent: S } = R.metrics;
    t.fillStyle = O, this._drawRoundedRect(
      t,
      e,
      o - S,
      L,
      Y + (P[0] + P[3]) * n,
      X * n
    ), t.fill(), t.fillStyle = M, t.fillText(R.value, e + P[3] * n, o), t.restore();
  }
  _drawRoundedRect(t, R, e, o, n, s) {
    t.beginPath(), t.moveTo(R + s, e), t.lineTo(R + o - s, e), t.quadraticCurveTo(R + o, e, R + o, e + s), t.lineTo(R + o, e + n - s), t.quadraticCurveTo(R + o, e + n, R + o - s, e + n), t.lineTo(R + s, e + n), t.quadraticCurveTo(R, e + n, R, e + n - s), t.lineTo(R, e + s), t.quadraticCurveTo(R, e, R + s, e), t.closePath();
  }
}
class Mi {
  constructor(t, R) {
    F(this, "draw");
    F(this, "position");
    F(this, "options");
    F(this, "elementList");
    F(this, "rowList");
    F(this, "positionList");
    this.draw = t, this.position = t.getPosition(), this.options = t.getOptions(), this.elementList = R || [], this.rowList = [], this.positionList = [];
  }
  getRowList() {
    return this.rowList;
  }
  setElementList(t) {
    this.elementList = t;
  }
  getElementList() {
    return this.elementList;
  }
  getPositionList() {
    return this.positionList;
  }
  compute() {
    this.recovery(), this._computeRowList(), this._computePositionList();
  }
  recovery() {
    this.rowList = [], this.positionList = [];
  }
  _computeRowList() {
    const t = this.draw.getInnerWidth(), R = this.draw.getMargins(), e = le(this.elementList);
    this.rowList = this.draw.computeRowList({
      startX: R[3],
      startY: this.getHeaderTop(),
      innerWidth: t,
      elementList: this.elementList,
      surroundElementList: e
    });
  }
  _computePositionList() {
    const t = this.getHeaderTop(), R = this.draw.getInnerWidth(), o = this.draw.getMargins()[3], n = t;
    this.position.computePageRowPosition({
      positionList: this.positionList,
      rowList: this.rowList,
      pageNo: 0,
      startRowIndex: 0,
      startIndex: 0,
      startX: o,
      startY: n,
      innerWidth: R,
      zone: Qt.HEADER
    });
  }
  getHeaderTop(t) {
    if (this.isDisabled(t)) return 0;
    const {
      header: { top: R },
      scale: e
    } = this.options;
    return Math.floor(R * e);
  }
  getMaxHeight() {
    const {
      header: { maxHeightRadio: t }
    } = this.options, R = this.draw.getHeight();
    return Math.floor(R * qR[t]);
  }
  getHeight(t) {
    if (this.isDisabled(t)) return 0;
    const R = this.getMaxHeight(), e = this.getRowHeight();
    return e > R ? R : e;
  }
  getRowHeight() {
    return this.rowList.reduce((t, R) => t + R.height, 0);
  }
  getExtraHeight(t) {
    const R = this.draw.getMargins(), e = this.getHeight(t), n = this.getHeaderTop(t) + e - R[0];
    return n <= 0 ? 0 : n;
  }
  isDisabled(t) {
    return !!(this.options.header.disabled || t !== void 0 && this.options.header.disabledPages.includes(t));
  }
  render(t, R) {
    if (this.options.header.disabledPages.includes(R)) return;
    t.globalAlpha = 1;
    const e = this.draw.getInnerWidth(), o = this.getMaxHeight(), n = [];
    let s = 0;
    for (let r = 0; r < this.rowList.length; r++) {
      const l = this.rowList[r];
      if (s + l.height > o)
        break;
      n.push(l), s += l.height;
    }
    this.draw.drawRow(t, {
      elementList: this.elementList,
      positionList: this.draw.getHeader().getPositionList(),
      rowList: n,
      pageNo: R,
      startIndex: 0,
      innerWidth: e,
      zone: Qt.HEADER
    });
  }
}
class Oi {
  // 向上偏移字高的一半
  getOffsetY(t) {
    return -t.metrics.height / 2;
  }
  render(t, R, e, o) {
    t.save(), t.font = R.style, R.color && (t.fillStyle = R.color), t.fillText(R.value, e, o + this.getOffsetY(R)), t.restore();
  }
}
class Xi {
  // 向下偏移字高的一半
  getOffsetY(t) {
    return t.metrics.height / 2;
  }
  render(t, R, e, o) {
    t.save(), t.font = R.style, R.color && (t.fillStyle = R.color), t.fillText(R.value, e, o + this.getOffsetY(R)), t.restore();
  }
}
class Pi {
  constructor(t) {
    F(this, "options");
    this.options = t.getOptions();
  }
  render(t, R, e, o) {
    var a;
    t.save();
    const {
      scale: n,
      separator: { lineWidth: s, strokeStyle: r }
    } = this.options;
    t.lineWidth = (R.lineWidth || s) * n, t.strokeStyle = R.color || r, (a = R.dashArray) != null && a.length;
    const l = Math.round(o);
    t.translate(0, t.lineWidth / 2), t.beginPath(), t.moveTo(e, l), t.lineTo(e + R.width * n, l), t.stroke(), t.restore();
  }
}
var ER = /* @__PURE__ */ ((i) => (i.TEXT = "text", i.IMAGE = "image", i))(ER || {}), TR = /* @__PURE__ */ ((i) => (i.BOTTOM = "bottom", i.TOP = "top", i))(TR || {});
class Ni {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "imageCache");
    this.draw = t, this.options = t.getOptions(), this.imageCache = /* @__PURE__ */ new Map();
  }
  renderText(t, R) {
    const {
      watermark: { data: e, opacity: o, font: n, size: s, color: r, repeat: l, gap: a, numberType: O },
      scale: M
    } = this.options, X = this.draw.getWidth(), P = this.draw.getHeight(), N = `${s * M}px ${n}`;
    t.save(), this.draw.getPdf().setGState(new tR({
      opacity: o
    })), t.globalAlpha = o, t.font = N, t.fillStyle = r;
    let u = e;
    const h = new RegExp(OR.PAGE_NO);
    h.test(u) && (u = RR.formatNumberPlaceholder(
      u,
      R + 1,
      h,
      O
    ));
    const L = new RegExp(OR.PAGE_COUNT);
    L.test(u) && (u = RR.formatNumberPlaceholder(
      u,
      this.draw.getPageCount(),
      L,
      O
    ));
    const Y = this.draw.measureText(N, u), S = Y.width, W = Y.actualBoundingBoxAscent + Y.actualBoundingBoxDescent, c = (T, H) => {
      t.save(), t.translate(T, H), t.rotate(-45 * Math.PI / 180), t.fillText(
        u,
        -S / 2,
        (Y.actualBoundingBoxAscent - Y.actualBoundingBoxDescent) / 2
      ), t.restore();
    };
    if (l) {
      const T = Math.sqrt(
        Math.pow(S, 2) + Math.pow(W, 2)
      ), H = T + 2 * a[0] * M, f = T + 2 * a[1] * M;
      for (let D = f / 2; D < P + f; D += f)
        for (let K = H / 2; K < X + H; K += H)
          c(K, D);
    } else
      c(X / 2, P / 2);
    this.draw.getPdf().setGState(new tR({
      opacity: 1
    })), t.restore();
  }
  renderImage(t) {
    const {
      watermark: { width: R, height: e, data: o, opacity: n, repeat: s, gap: r },
      scale: l
    } = this.options;
    this.imageCache.has(o);
    const a = this.draw.getWidth(), O = this.draw.getHeight(), M = R * l, X = e * l;
    if (t.save(), t.globalAlpha = n, s) {
      const P = this.draw.getPagePixelRatio(), N = At.createCanvas(1, 1), u = N.getContext("2d"), h = Math.sqrt(
        Math.pow(M, 2) + Math.pow(X, 2)
      ), L = h + 2 * r[0] * l, Y = h + 2 * r[1] * l;
      N.width = L, N.height = Y, N.style && (N.style.width = `${L * P}px`, N.style.height = `${Y * P}px`), u.translate(L / 2, Y / 2), u.rotate(-45 * Math.PI / 180), u.translate(-L / 2, -Y / 2), u.drawImage(
        this.imageCache.get(o),
        (L - M) / 2,
        (Y - X) / 2,
        M,
        X
      ), t.createPattern(), t.fillRect(0, 0, a, O);
    } else
      this.draw.getPdf().addImage(
        o,
        "PNG",
        // ou outro formato
        a * 45 / 100,
        O * 35 / 100,
        M,
        X,
        void 0,
        "FAST",
        45
      );
    t.restore();
  }
  render(t, R) {
    this.options.watermark.type === ER.IMAGE ? this.renderImage(t) : this.renderText(t, R);
  }
}
class Fi {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  setSelect(t) {
    const { checkbox: R } = t;
    R ? R.value = !R.value : t.checkbox = {
      value: !0
    }, this.draw.render({
      isCompute: !1,
      isSetCursor: !1
    });
  }
  render(t) {
    const { ctx2d: R, x: e, index: o, row: n } = t;
    let { y: s } = t;
    const {
      checkbox: { gap: r, lineWidth: l, fillStyle: a, strokeStyle: O, verticalAlign: M },
      scale: X
    } = this.options, { metrics: P, checkbox: N } = n.elementList[o];
    if (M === ht.TOP || M === ht.MIDDLE) {
      let S = o + 1, W = null;
      for (; S < n.elementList.length && (W = n.elementList[S], !(W.value !== q && W.value !== jR)); )
        S++;
      if (W) {
        const {
          metrics: { boundingBoxAscent: c, boundingBoxDescent: T }
        } = W, H = c + T;
        H > P.height && (M === ht.TOP ? s -= c - P.height : M === ht.MIDDLE && (s -= (H - P.height) / 2));
      }
    }
    const u = Math.round(e + r * X), h = Math.round(s - P.height + l), L = P.width - r * 2 * X, Y = P.height;
    R.save(), R.beginPath(), R.translate(0.5, 0.5), N != null && N.value ? (R.lineWidth = l, R.strokeStyle = a, R.rect(u, h, L, Y), R.stroke(), R.beginPath(), R.fillStyle = a, R.fillRect(u, h, L, Y), R.beginPath(), R.strokeStyle = O, R.lineWidth = l * 2 * X, R.moveTo(u + 2 * X, h + Y / 2), R.lineTo(u + L / 2, h + Y - 3 * X), R.lineTo(u + L - 2 * X, h + 3 * X), R.stroke()) : (R.lineWidth = l, R.rect(u, h, L, Y), R.stroke()), R.closePath(), R.restore();
  }
}
class ui {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  setSelect(t) {
    const { radio: R } = t;
    R ? R.value = !R.value : t.radio = {
      value: !0
    }, this.draw.render({
      isCompute: !1,
      isSetCursor: !1
    });
  }
  render(t) {
    const { ctx2d: R, x: e, index: o, row: n } = t;
    let { y: s } = t;
    const {
      radio: { gap: r, lineWidth: l, fillStyle: a, strokeStyle: O, verticalAlign: M },
      scale: X
    } = this.options, { metrics: P, radio: N } = n.elementList[o];
    if (M === ht.TOP || M === ht.MIDDLE) {
      let S = o + 1, W = null;
      for (; S < n.elementList.length && (W = n.elementList[S], !(W.value !== q && W.value !== jR)); )
        S++;
      if (W) {
        const {
          metrics: { boundingBoxAscent: c, boundingBoxDescent: T }
        } = W, H = c + T;
        H > P.height && (M === ht.TOP ? s -= c - P.height : M === ht.MIDDLE && (s -= (H - P.height) / 2));
      }
    }
    const u = Math.round(e + r * X), h = Math.round(s - P.height + l), L = P.width - r * 2 * X, Y = P.height;
    R.save(), R.beginPath(), R.translate(0.5, 0.5), R.strokeStyle = N != null && N.value ? a : O, R.lineWidth = l, R.arc(u + L / 2, h + Y / 2, L / 2, 0, Math.PI * 2, !0), R.stroke(), N != null && N.value && (R.beginPath(), R.fillStyle = a, R.arc(u + L / 2, h + Y / 2, L / 3, 0, Math.PI * 2, !0), R.fill()), R.closePath(), R.restore();
  }
}
class Si {
  constructor(t, R = {}) {
    F(this, "draw");
    F(this, "options");
    F(this, "now");
    F(this, "dom");
    F(this, "renderOptions");
    F(this, "isDatePicker");
    F(this, "pickDate");
    F(this, "lang");
    this.draw = t, this.options = R, this.lang = this._getLang(), this.now = /* @__PURE__ */ new Date(), this.dom = this._createDom(), this.renderOptions = null, this.isDatePicker = !0, this.pickDate = null, this._bindEvent();
  }
  _createDom() {
    const t = document.createElement("div");
    t.classList.add(`${it}-date-container`), t.setAttribute(de, ee.POPUP);
    const R = document.createElement("div");
    R.classList.add(`${it}-date-wrap`);
    const e = document.createElement("div");
    e.classList.add(`${it}-date-title`);
    const o = document.createElement("span");
    o.classList.add(`${it}-date-title__pre-year`), o.innerText = "<<";
    const n = document.createElement("span");
    n.classList.add(`${it}-date-title__pre-month`), n.innerText = "<";
    const s = document.createElement("span");
    s.classList.add(`${it}-date-title__now`);
    const r = document.createElement("span");
    r.classList.add(`${it}-date-title__next-month`), r.innerText = ">";
    const l = document.createElement("span");
    l.classList.add(`${it}-date-title__next-year`), l.innerText = ">>", e.append(o), e.append(n), e.append(s), e.append(r), e.append(l);
    const a = document.createElement("div");
    a.classList.add(`${it}-date-week`);
    const {
      weeks: { sun: O, mon: M, tue: X, wed: P, thu: N, fri: u, sat: h }
    } = this.lang;
    [O, M, X, P, N, u, h].forEach((U) => {
      const I = document.createElement("span");
      I.innerText = `${U}`, a.append(I);
    });
    const Y = document.createElement("div");
    Y.classList.add(`${it}-date-day`), R.append(e), R.append(a), R.append(Y);
    const S = document.createElement("ul");
    S.classList.add(`${it}-time-wrap`);
    let W, c, T;
    [this.lang.hour, this.lang.minute, this.lang.second].forEach((U, I) => {
      const p = document.createElement("li"), g = document.createElement("span");
      g.innerText = U, p.append(g);
      const J = document.createElement("ol"), y = I === 0, v = I === 1, B = y ? 24 : 60;
      for (let tt = 0; tt < B; tt++) {
        const st = document.createElement("li");
        st.innerText = `${String(tt).padStart(2, "0")}`, st.setAttribute("data-id", `${tt}`), J.append(st);
      }
      y ? W = J : v ? c = J : T = J, p.append(J), S.append(p);
    });
    const f = document.createElement("div");
    f.classList.add(`${it}-date-menu`);
    const D = document.createElement("button");
    D.classList.add(`${it}-date-menu__time`), D.innerText = this.lang.timeSelect;
    const K = document.createElement("button");
    K.classList.add(`${it}-date-menu__now`), K.innerText = this.lang.now;
    const Z = document.createElement("button");
    return Z.classList.add(`${it}-date-menu__submit`), Z.innerText = this.lang.confirm, f.append(D), f.append(K), f.append(Z), t.append(R), t.append(S), t.append(f), {
      container: t,
      dateWrap: R,
      datePickerWeek: a,
      timeWrap: S,
      title: {
        preYear: o,
        preMonth: n,
        now: s,
        nextMonth: r,
        nextYear: l
      },
      day: Y,
      time: {
        hour: W,
        minute: c,
        second: T
      },
      menu: {
        time: D,
        now: K,
        submit: Z
      }
    };
  }
  _bindEvent() {
    this.dom.title.preYear.onclick = () => {
      this._preYear();
    }, this.dom.title.preMonth.onclick = () => {
      this._preMonth();
    }, this.dom.title.nextMonth.onclick = () => {
      this._nextMonth();
    }, this.dom.title.nextYear.onclick = () => {
      this._nextYear();
    }, this.dom.menu.time.onclick = () => {
      this.isDatePicker = !this.isDatePicker, this._toggleDateTimePicker();
    }, this.dom.menu.now.onclick = () => {
      this._now(), this._submit();
    }, this.dom.menu.submit.onclick = () => {
      this.dispose(), this._submit();
    }, this.dom.time.hour.onclick = (t) => {
      if (!this.pickDate) return;
      const e = t.target.dataset.id;
      e && (this.pickDate.setHours(Number(e)), this._setTimePick(!1));
    }, this.dom.time.minute.onclick = (t) => {
      if (!this.pickDate) return;
      const e = t.target.dataset.id;
      e && (this.pickDate.setMinutes(Number(e)), this._setTimePick(!1));
    }, this.dom.time.second.onclick = (t) => {
      if (!this.pickDate) return;
      const e = t.target.dataset.id;
      e && (this.pickDate.setSeconds(Number(e)), this._setTimePick(!1));
    };
  }
  _setPosition() {
    if (!this.renderOptions) return;
    const {
      position: {
        coordinate: {
          leftTop: [t, R]
        },
        lineHeight: e,
        pageNo: o
      }
    } = this.renderOptions, n = this.draw.getHeight(), s = this.draw.getPageGap(), l = (o ?? this.draw.getPageNo()) * (n + s);
    this.dom.container.style.left = `${t}px`, this.dom.container.style.top = `${R + l + e}px`;
  }
  isInvalidDate(t) {
    return t.toDateString() === "Invalid Date";
  }
  _setValue() {
    var R;
    const t = (R = this.renderOptions) == null ? void 0 : R.value;
    if (t) {
      const e = new Date(t);
      this.now = this.isInvalidDate(e) ? /* @__PURE__ */ new Date() : e;
    } else
      this.now = /* @__PURE__ */ new Date();
    this.pickDate = new Date(this.now);
  }
  _getLang() {
    const t = this.draw.getI18n(), R = t.t.bind(t);
    return {
      now: R("datePicker.now"),
      confirm: R("datePicker.confirm"),
      return: R("datePicker.return"),
      timeSelect: R("datePicker.timeSelect"),
      weeks: {
        sun: R("datePicker.weeks.sun"),
        mon: R("datePicker.weeks.mon"),
        tue: R("datePicker.weeks.tue"),
        wed: R("datePicker.weeks.wed"),
        thu: R("datePicker.weeks.thu"),
        fri: R("datePicker.weeks.fri"),
        sat: R("datePicker.weeks.sat")
      },
      year: R("datePicker.year"),
      month: R("datePicker.month"),
      hour: R("datePicker.hour"),
      minute: R("datePicker.minute"),
      second: R("datePicker.second")
    };
  }
  _setLangChange() {
    this.dom.menu.time.innerText = this.lang.timeSelect, this.dom.menu.now.innerText = this.lang.now, this.dom.menu.submit.innerText = this.lang.confirm;
    const {
      weeks: { sun: t, mon: R, tue: e, wed: o, thu: n, fri: s, sat: r }
    } = this.lang, l = [t, R, e, o, n, s, r];
    this.dom.datePickerWeek.childNodes.forEach((X, P) => {
      const N = X;
      N.innerText = l[P];
    });
    const a = this.dom.time.hour.previousElementSibling;
    a.innerText = this.lang.hour;
    const O = this.dom.time.minute.previousElementSibling;
    O.innerText = this.lang.minute;
    const M = this.dom.time.second.previousElementSibling;
    M.innerText = this.lang.second;
  }
  _update() {
    const t = /* @__PURE__ */ new Date(), R = t.getFullYear(), e = t.getMonth() + 1, o = t.getDate();
    let n = null, s = null, r = null;
    this.pickDate && (n = this.pickDate.getFullYear(), s = this.pickDate.getMonth() + 1, r = this.pickDate.getDate());
    const l = this.now.getFullYear(), a = this.now.getMonth() + 1;
    this.dom.title.now.innerText = `${l}${this.lang.year} ${String(
      a
    ).padStart(2, "0")}${this.lang.month}`;
    const M = new Date(l, a, 0).getDate();
    let X = new Date(l, a - 1, 1).getDay();
    X === 0 && (X = 7);
    const P = new Date(l, a - 1, 0).getDate();
    this.dom.day.innerHTML = "";
    const N = P - X + 1;
    for (let h = N; h <= P; h++) {
      const L = document.createElement("div");
      L.classList.add("disable"), L.innerText = `${h}`, L.onclick = () => {
        const Y = a - 2;
        this.now = new Date(l, Y, h), this._setDatePick(l, Y, h);
      }, this.dom.day.append(L);
    }
    for (let h = 1; h <= M; h++) {
      const L = document.createElement("div");
      R === l && e === a && o === h && L.classList.add("active"), this.pickDate && n === l && s === a && r === h && L.classList.add("select"), L.innerText = `${h}`, L.onclick = (Y) => {
        const S = a - 1;
        this.now = new Date(l, S, h), this._setDatePick(l, S, h), Y.stopPropagation();
      }, this.dom.day.append(L);
    }
    const u = 6 * 7 - X - M;
    for (let h = 1; h <= u; h++) {
      const L = document.createElement("div");
      L.classList.add("disable"), L.innerText = `${h}`, L.onclick = () => {
        this.now = new Date(l, a, h), this._setDatePick(l, a, h);
      }, this.dom.day.append(L);
    }
  }
  _toggleDateTimePicker() {
    this.isDatePicker ? (this.dom.dateWrap.classList.add("active"), this.dom.timeWrap.classList.remove("active"), this.dom.menu.time.innerText = this.lang.timeSelect) : (this.dom.dateWrap.classList.remove("active"), this.dom.timeWrap.classList.add("active"), this.dom.menu.time.innerText = this.lang.return, this._setTimePick());
  }
  _setDatePick(t, R, e) {
    var o, n, s;
    this.now = new Date(t, R, e), (o = this.pickDate) == null || o.setFullYear(t), (n = this.pickDate) == null || n.setMonth(R), (s = this.pickDate) == null || s.setDate(e), this._update();
  }
  _setTimePick(t = !0) {
    var O, M, X;
    const R = ((O = this.pickDate) == null ? void 0 : O.getHours()) || 0, e = ((M = this.pickDate) == null ? void 0 : M.getMinutes()) || 0, o = ((X = this.pickDate) == null ? void 0 : X.getSeconds()) || 0, {
      hour: n,
      minute: s,
      second: r
    } = this.dom.time;
    [n, s, r].forEach((P) => {
      P.querySelectorAll("li").forEach((N) => N.classList.remove("active"));
    }), [
      [n, R],
      [s, e],
      [r, o]
    ].forEach(([P, N]) => {
      const u = P.querySelector(`[data-id='${N}']`);
      u.classList.add("active"), t && this._scrollIntoView(P, u);
    });
  }
  _scrollIntoView(t, R) {
    if (!R) {
      t.scrollTop = 0;
      return;
    }
    const e = [];
    let o = R.offsetParent;
    for (; o && t !== o && t.contains(o); )
      e.push(o), o = o.offsetParent;
    const n = R.offsetTop + e.reduce((a, O) => a + O.offsetTop, 0), s = n + R.offsetHeight, r = t.scrollTop, l = r + t.clientHeight;
    n < r ? t.scrollTop = n : s > l && (t.scrollTop = s - t.clientHeight);
  }
  _preMonth() {
    this.now.setMonth(this.now.getMonth() - 1), this._update();
  }
  _nextMonth() {
    this.now.setMonth(this.now.getMonth() + 1), this._update();
  }
  _preYear() {
    this.now.setFullYear(this.now.getFullYear() - 1), this._update();
  }
  _nextYear() {
    this.now.setFullYear(this.now.getFullYear() + 1), this._update();
  }
  _now() {
    this.pickDate = /* @__PURE__ */ new Date(), this.dispose();
  }
  _toggleVisible(t) {
    t ? this.dom.container.classList.add("active") : this.dom.container.classList.remove("active");
  }
  _submit() {
    var t;
    if (this.options.onSubmit && this.pickDate) {
      const R = (t = this.renderOptions) == null ? void 0 : t.dateFormat, e = this.formatDate(this.pickDate, R);
      this.options.onSubmit(e);
    }
  }
  formatDate(t, R = "YYYY-MM-DD HH:mm:ss") {
    let e = R;
    const o = t.getFullYear().toString(), n = (t.getMonth() + 1).toString(), s = t.getDate().toString(), r = t.getHours(), l = r % 12 === 0 ? 12 : r % 12, a = t.getMinutes().toString(), O = t.getSeconds().toString(), M = t.getMilliseconds().toString(), X = {
      "y+": o,
      "Y+": o,
      "M+": n,
      "d+": s,
      "D+": s,
      "h+": l.toString(),
      "H+": r.toString(),
      "m+": a,
      "s+": O,
      "S+": M
    };
    for (const P in X) {
      const N = new RegExp("(" + P + ")").exec(R), u = P;
      N && (e = e.replace(
        N[1],
        N[1].length === 1 ? X[u] : X[u].padStart(N[1].length, "0")
      ));
    }
    return e;
  }
  render(t) {
    this.renderOptions = t, this.lang = this._getLang(), this._setLangChange(), this._setValue(), this._update(), this._setPosition(), this.isDatePicker = !0, this._toggleDateTimePicker(), this._toggleVisible(!0);
  }
  dispose() {
    this._toggleVisible(!1);
  }
  destroy() {
    this.dom.container.remove();
  }
}
class Li {
  // private options: DeepRequired<IEditorOption>
  constructor(t) {
    // private draw: DrawPdf
    // private range: RangeManager
    // DatePicker is the editor-mode popup UI built out of dozens of DOM nodes.
    // Skipped entirely in non-browser environments — the PDF render path never
    // calls renderDatePicker/clearDatePicker.
    F(this, "datePicker");
    this.datePicker = typeof document < "u" ? new Si(t, {
      // onSubmit: this._setValue.bind(this)
    }) : null;
  }
  // private _setValue(date: string) {
  //   if (!date) return
  //   const range = this.getDateElementRange()
  //   if (!range) return
  //   const [leftIndex, rightIndex] = range
  //   const elementList = this.draw.getElementList()
  //   const startElement = elementList[leftIndex + 1]
  //   // 删除旧时间
  //   this.draw.spliceElementList(
  //     elementList,
  //     leftIndex + 1,
  //     rightIndex - leftIndex
  //   )
  //   this.range.setRange(leftIndex, leftIndex)
  //   // 插入新时间
  //   const dateElement: IElement = {
  //     type: ElementType.DATE,
  //     value: '',
  //     dateFormat: startElement.dateFormat,
  //     valueList: [
  //       {
  //         value: date
  //       }
  //     ]
  //   }
  //   formatElementContext(elementList, [dateElement], leftIndex, {
  //     editorOptions: this.draw.getOptions()
  //   })
  //   this.draw.insertElementList([dateElement])
  // }
  // public getDateElementRange(): [number, number] | null {
  //   let leftIndex = -1
  //   let rightIndex = -1
  //   const { startIndex, endIndex } = this.range.getRange()
  //   if (!~startIndex && !~endIndex) return null
  //   const elementList = this.draw.getElementList()
  //   const startElement = elementList[startIndex]
  //   if (startElement.type !== ElementType.DATE) return null
  //   // 向左查找
  //   let preIndex = startIndex
  //   while (preIndex > 0) {
  //     const preElement = elementList[preIndex]
  //     if (preElement.dateId !== startElement.dateId) {
  //       leftIndex = preIndex
  //       break
  //     }
  //     preIndex--
  //   }
  //   // 向右查找
  //   let nextIndex = startIndex + 1
  //   while (nextIndex < elementList.length) {
  //     const nextElement = elementList[nextIndex]
  //     if (nextElement.dateId !== startElement.dateId) {
  //       rightIndex = nextIndex - 1
  //       break
  //     }
  //     nextIndex++
  //   }
  //   // 控件在最后
  //   if (nextIndex === elementList.length) {
  //     rightIndex = nextIndex - 1
  //   }
  //   if (!~leftIndex || !~rightIndex) return null
  //   return [leftIndex, rightIndex]
  // }
  clearDatePicker() {
    var t;
    (t = this.datePicker) == null || t.dispose();
  }
  renderDatePicker(t, R) {
    console.log(t, R);
  }
}
var qt = /* @__PURE__ */ ((i) => (i.IFRAME = "iframe", i.VIDEO = "video", i))(qt || {});
const kt = class kt {
  constructor(t) {
    F(this, "element");
    F(this, "iframe", null);
    F(this, "isReadonly");
    this.element = t, this.isReadonly = !1;
  }
  getIframe() {
    return this.iframe;
  }
  _defineIframeProperties(t) {
    Object.defineProperties(t, {
      // 禁止获取parent避免安全漏洞
      parent: {
        get: () => null
      },
      // 用于区分上下文
      __POWERED_BY_CANVAS_EDITOR__: {
        get: () => !0
      }
    });
  }
  render(t) {
    const { iframeBlock: R } = this.element.block || {}, e = document.createElement("iframe");
    e.setAttribute("data-id", this.element.id), e.sandbox.add(...(R == null ? void 0 : R.sandbox) || kt.sandbox), e.setAttribute(
      "allow",
      [(R == null ? void 0 : R.allow) || kt.allow].join(" ")
    ), e.style.border = "none", e.style.width = "100%", e.style.height = "100%", R != null && R.src ? e.src = R.src : R != null && R.srcdoc && (e.srcdoc = R.srcdoc), t.append(e), this._defineIframeProperties(e.contentWindow), this.iframe = e;
  }
  setReadonly(t) {
    !this.iframe || this.isReadonly === t || (this.isReadonly = t, t ? (this.iframe.style.pointerEvents = "none", this.iframe.setAttribute("tabindex", "-1")) : (this.iframe.style.pointerEvents = "", this.iframe.removeAttribute("tabindex")));
  }
};
F(kt, "sandbox", ["allow-scripts", "allow-same-origin"]), F(kt, "allow", ["fullscreen"]);
let MR = kt;
class kR {
  constructor(t) {
    F(this, "element");
    F(this, "videoCache");
    this.element = t, this.videoCache = /* @__PURE__ */ new Map();
  }
  snapshot(t, R, e) {
    return new Promise((o, n) => {
      var r, l;
      const s = ((l = (r = this.element.block) == null ? void 0 : r.videoBlock) == null ? void 0 : l.src) || "";
      if (this.videoCache.has(s)) {
        const a = this.videoCache.get(s);
        t.drawImage(
          a,
          R,
          e,
          this.element.metrics.width,
          this.element.metrics.height
        ), o(this.element);
      } else {
        const a = document.createElement("video");
        a.src = s, a.muted = !0, a.crossOrigin = "anonymous", a.onloadeddata = () => {
          t.drawImage(
            a,
            R,
            e,
            this.element.metrics.width,
            this.element.metrics.height
          ), this.videoCache.set(s, a), o(this.element);
        }, a.onerror = (O) => {
          n(O);
        }, a.play().then(() => {
          a.pause();
        });
      }
    });
  }
  render(t) {
    var o;
    const R = this.element.block, e = document.createElement("video");
    e.style.width = "100%", e.style.height = "100%", e.style.objectFit = "contain", e.src = ((o = R.videoBlock) == null ? void 0 : o.src) || "", e.controls = !0, e.crossOrigin = "anonymous", t.append(e);
  }
}
class hi {
  constructor(t, R) {
    F(this, "draw");
    F(this, "options");
    F(this, "element");
    F(this, "block");
    F(this, "blockContainer");
    F(this, "blockItem");
    F(this, "positionInfo", null);
    F(this, "blockCache");
    // 缩放业务
    F(this, "resizerMask");
    F(this, "resizerSelection");
    F(this, "resizerHandleList");
    F(this, "width");
    F(this, "height");
    F(this, "mousedownX");
    F(this, "mousedownY");
    F(this, "curHandleIndex");
    F(this, "isAllowResize");
    this.draw = t.getDraw(), this.options = this.draw.getOptions(), this.blockContainer = t.getBlockContainer(), this.blockCache = /* @__PURE__ */ new Map(), this.element = R, this.block = null;
    const { blockItem: e, resizerMask: o, resizerSelection: n, resizerHandleList: s } = this._createBlockItem();
    this.blockItem = e, this.blockContainer.append(this.blockItem), this.resizerMask = o, this.resizerSelection = n, this.resizerHandleList = s, this.width = 0, this.height = 0, this.mousedownX = 0, this.mousedownY = 0, this.curHandleIndex = 0, this.isAllowResize = !1;
  }
  getBlockElement() {
    return this.element;
  }
  getBlockWidth() {
    return this.element.width || this.element.metrics.width;
  }
  getIFrameBlock() {
    return this.block instanceof MR ? this.block : null;
  }
  getPositionInfo() {
    return this.positionInfo;
  }
  _createBlockItem() {
    const { scale: t, resizerColor: R } = this.options, e = document.createElement("div");
    e.classList.add(`${it}-block-item`);
    const o = document.createElement("div");
    o.style.display = "none", o.classList.add(`${it}-resizer-selection`), o.style.borderColor = R, o.style.borderWidth = `${t}px`;
    const n = [];
    for (let r = 0; r < 8; r++) {
      const l = document.createElement("div");
      l.style.background = R, l.classList.add("resizer-handle"), l.classList.add(`handle-${r}`), l.setAttribute("data-index", String(r)), l.onmousedown = this._mousedown.bind(this), o.append(l), n.push(l);
    }
    const s = document.createElement("div");
    return s.classList.add(`${it}-resizer-mask`), s.style.display = "none", e.append(s), e.onmouseenter = () => {
      const { width: r, height: l } = this.element.metrics;
      this._updateResizerRect(r, l), o.style.display = "block";
    }, e.onmouseleave = () => {
      this.isAllowResize || (o.style.display = "none");
    }, e.append(o), {
      blockItem: e,
      resizerMask: s,
      resizerSelection: o,
      resizerHandleList: n
    };
  }
  _updateResizerRect(t, R) {
    const { resizerSize: e, scale: o } = this.options;
    this.resizerSelection.style.width = `${t}px`, this.resizerSelection.style.height = `${R}px`;
    for (let n = 0; n < 8; n++) {
      const s = n === 0 || n === 6 || n === 7 ? -e : n === 1 || n === 5 ? t / 2 : t - e, r = n === 0 || n === 1 || n === 2 ? -e : n === 3 || n === 7 ? R / 2 - e : R - e;
      this.resizerHandleList[n].style.transform = `scale(${o})`, this.resizerHandleList[n].style.left = `${s}px`, this.resizerHandleList[n].style.top = `${r}px`;
    }
  }
  _mousedown(t) {
    const R = this.draw.getPage();
    this.mousedownX = t.x, this.mousedownY = t.y, this.isAllowResize = !0;
    const e = t.target;
    this.curHandleIndex = Number(e.dataset.index), this.resizerMask.style.display = "block";
    const o = window.getComputedStyle(e).cursor;
    document.body.style.cursor = o, R.style.cursor = o;
    const n = this._mousemove.bind(this);
    document.addEventListener("mousemove", n), document.addEventListener(
      "mouseup",
      () => {
        this.element.width = Math.min(this.width, this.draw.getInnerWidth()), this.element.height = this.height, this.isAllowResize = !1, this.resizerSelection.style.display = "none", this.resizerMask.style.display = "none", document.removeEventListener("mousemove", n), document.body.style.cursor = "", R.style.cursor = "text", this.draw.render();
      },
      {
        once: !0
      }
    ), t.preventDefault();
  }
  _mousemove(t) {
    if (!this.isAllowResize) return;
    const { scale: R } = this.options;
    let e = 0, o = 0;
    switch (this.curHandleIndex) {
      case 0:
        {
          const a = this.mousedownX - t.x, O = this.mousedownY - t.y;
          e = Math.cbrt(a ** 3 + O ** 3), o = this.element.height * e / this.getBlockWidth();
        }
        break;
      case 1:
        o = this.mousedownY - t.y;
        break;
      case 2:
        {
          const a = t.x - this.mousedownX, O = this.mousedownY - t.y;
          e = Math.cbrt(a ** 3 + O ** 3), o = this.element.height * e / this.getBlockWidth();
        }
        break;
      case 4:
        {
          const a = t.x - this.mousedownX, O = t.y - this.mousedownY;
          e = Math.cbrt(a ** 3 + O ** 3), o = this.element.height * e / this.getBlockWidth();
        }
        break;
      case 3:
        e = t.x - this.mousedownX;
        break;
      case 5:
        o = t.y - this.mousedownY;
        break;
      case 6:
        {
          const a = this.mousedownX - t.x, O = t.y - this.mousedownY;
          e = Math.cbrt(a ** 3 + O ** 3), o = this.element.height * e / this.getBlockWidth();
        }
        break;
      case 7:
        e = this.mousedownX - t.x;
        break;
    }
    const n = this.getBlockWidth() + e / R, s = this.element.height + o / R;
    if (n <= 0 || s <= 0) return;
    this.width = n, this.height = s;
    const r = n * R, l = s * R;
    this._updateResizerRect(r, l), this.blockItem.style.width = `${r}px`, this.blockItem.style.height = `${l}px`, t.preventDefault();
  }
  snapshot(t, R, e) {
    if (this.element.block.type === qt.VIDEO)
      if (this.blockItem.style.display = "none", this.blockCache.has(this.element.id))
        this.blockCache.get(this.element.id).snapshot(t, R, e);
      else {
        this.block = new kR(this.element);
        const n = this.block.snapshot(t, R, e);
        this.draw.getImageObserver().add(n), this.blockCache.set(this.element.id, this.block);
      }
  }
  render() {
    const t = this.element.block;
    t.type === qt.IFRAME ? (this.block = new MR(this.element), this.block.render(this.blockItem)) : t.type === qt.VIDEO && (this.block = new kR(this.element), this.block.render(this.blockItem));
  }
  setClientRects(t, R, e) {
    const o = this.draw.getHeight(), n = this.draw.getPageGap(), s = t * (o + n), { metrics: r } = this.element;
    this.blockItem.style.display = "block", this.blockItem.style.width = `${r.width}px`, this.blockItem.style.height = `${r.height}px`, this.blockItem.style.left = `${R}px`, this.blockItem.style.top = `${s + e}px`, this.positionInfo = { pageNo: t, x: R, y: e };
  }
  setStatus() {
    this.block instanceof MR;
  }
  remove() {
    this.blockItem.remove();
  }
}
class Ti {
  constructor(t) {
    F(this, "draw");
    // private container: HTMLDivElement
    // BLOCK elements (iframe, video, etc.) don't render to PDF — they need a
    // live DOM to host an <iframe>/<video>. In non-browser environments the
    // container stays null and the rendering code paths skip it.
    F(this, "blockContainer");
    F(this, "blockMap");
    this.draw = t, this.blockMap = /* @__PURE__ */ new Map(), this.blockContainer = this._createBlockContainer();
  }
  _createBlockContainer() {
    if (typeof document > "u") return null;
    const t = document.createElement("div");
    return t.classList.add(`${it}-block-container`), t;
  }
  getDraw() {
    return this.draw;
  }
  getBlockContainer() {
    return this.blockContainer;
  }
  render(t, R, e, o, n) {
    const s = e.id;
    let r = this.blockMap.get(s);
    r || (r = new hi(this, e), r.render(), this.blockMap.set(s, r)), r.setClientRects(R, o, n);
  }
  clear() {
    if (!this.blockMap.size) return;
    const t = this.draw.getOriginalMainElementList(), R = [];
    for (let e = 0; e < t.length; e++) {
      const o = t[e];
      o.type === V.BLOCK && R.push(o.id);
    }
    this.blockMap.forEach((e) => {
      const o = e.getBlockElement().id;
      R.includes(o) || (e.remove(), this.blockMap.delete(o));
    });
  }
  update() {
    this.blockMap.forEach((t) => {
      var e, o, n, s, r;
      const R = t.getBlockElement();
      if (((e = R.block) == null ? void 0 : e.type) === qt.IFRAME && ((o = R.block.iframeBlock) != null && o.srcdoc)) {
        const l = (r = (s = (n = t.getIFrameBlock) == null ? void 0 : n.call(t)) == null ? void 0 : s.getIframe) == null ? void 0 : r.call(s);
        l != null && l.contentDocument && (R.block.iframeBlock.srcdoc = l.contentDocument.documentElement.outerHTML);
      }
    });
  }
  async drawIframeToPage(t, R) {
    const e = [];
    this.blockMap.forEach((o) => {
      var P, N, u;
      if (((P = o.getBlockElement().block) == null ? void 0 : P.type) !== qt.IFRAME) return;
      const n = o.getPositionInfo();
      if (!n) return;
      const s = (N = o.getIFrameBlock()) == null ? void 0 : N.getIframe();
      if (!s) return;
      const { pageNo: r, x: l, y: a } = n, O = (u = t[r]) == null ? void 0 : u.getContext("2d");
      if (!O) return;
      const { width: M, height: X } = o.getBlockElement().metrics;
      e.push(
        R(s).then((h) => Ke(h)).then((h) => O.drawImage(h, l, a, M, X))
      );
    }), await Promise.allSettled(e);
  }
  // public pickIframeInfo(): IIframeInfo[][] {
  //   const result: IIframeInfo[][] = []
  //   const { scale } = this.options
  //   this.blockMap.forEach(cacheBlock => {
  //     const element = cacheBlock.getBlockElement()
  //     if (
  //       !element.block?.iframeBlock ||
  //       element.block.type !== BlockType.IFRAME
  //     ) {
  //       return
  //     }
  //     // 获取位置信息
  //     const positionInfo = cacheBlock.getPositionInfo()
  //     if (!positionInfo) return
  //     const { pageNo, x, y } = positionInfo
  //     if (!result[pageNo]) {
  //       result[pageNo] = []
  //     }
  //     result[pageNo].push({
  //       x,
  //       y,
  //       width: element.metrics.width / scale,
  //       height: element.metrics.height / scale,
  //       src: element.block.iframeBlock.src,
  //       srcdoc: element.block.iframeBlock.srcdoc
  //     })
  //   })
  //   return result
  // }
}
const Wi = {
  now: "此刻",
  confirm: "确定",
  return: "返回日期",
  timeSelect: "时间选择",
  weeks: {
    sun: "日",
    mon: "一",
    tue: "二",
    wed: "三",
    thu: "四",
    fri: "五",
    sat: "六"
  },
  year: "年",
  month: "月",
  hour: "时",
  minute: "分",
  second: "秒"
}, Yi = {
  header: "页眉",
  footer: "页脚"
}, Vi = {
  displayName: "分页符"
}, ci = {
  headerTip: "双击编辑页眉",
  footerTip: "双击编辑页脚"
}, KR = {
  datePicker: Wi,
  frame: Yi,
  pageBreak: Vi,
  zone: ci
}, Qi = {
  now: "Now",
  confirm: "Confirm",
  return: "Return",
  timeSelect: "Time select",
  weeks: {
    sun: "Sun",
    mon: "Mon",
    tue: "Tue",
    wed: "Wed",
    thu: "Thu",
    fri: "Fri",
    sat: "Sat"
  },
  year: " ",
  month: " ",
  hour: "Hour",
  minute: "Minute",
  second: "Second"
}, Zi = {
  header: "Header",
  footer: "Footer"
}, Ui = {
  displayName: "Page Break"
}, Ki = {
  headerTip: "Double click to edit header",
  footerTip: "Double click to edit footer"
}, di = {
  datePicker: Qi,
  frame: Zi,
  pageBreak: Ui,
  zone: Ki
};
class gi {
  constructor() {
    F(this, "langMap", /* @__PURE__ */ new Map([
      ["zhCN", KR],
      ["en", di]
    ]));
    F(this, "currentLocale", "zhCN");
  }
  registerLangMap(t, R) {
    const e = this.langMap.get(t);
    this.langMap.set(t, te(e || KR, R));
  }
  getLocale() {
    return this.currentLocale;
  }
  setLocale(t) {
    this.currentLocale = t;
  }
  getLang() {
    return this.langMap.get(this.currentLocale) || KR;
  }
  t(t) {
    const R = t.split(".");
    let e = "", o = this.getLang();
    for (let n = 0; n < R.length; n++) {
      const s = R[n], r = Reflect.get(o, s);
      if (r)
        e = o = r;
      else
        return "";
    }
    return e;
  }
}
class Ii {
  constructor() {
    F(this, "promiseList");
    this.promiseList = [];
  }
  add(t) {
    this.promiseList.push(t);
  }
  clearAll() {
    this.promiseList = [];
  }
  allSettled() {
    return Promise.allSettled(this.promiseList);
  }
}
class Di {
  constructor(t, R) {
    F(this, "draw");
    F(this, "position");
    F(this, "options");
    F(this, "elementList");
    F(this, "rowList");
    F(this, "positionList");
    this.draw = t, this.position = t.getPosition(), this.options = t.getOptions(), this.elementList = R || [], this.rowList = [], this.positionList = [];
  }
  getRowList() {
    return this.rowList;
  }
  setElementList(t) {
    this.elementList = t;
  }
  getElementList() {
    return this.elementList;
  }
  getPositionList() {
    return this.positionList;
  }
  compute() {
    this.recovery(), this._computeRowList(), this._computePositionList();
  }
  recovery() {
    this.rowList = [], this.positionList = [];
  }
  _computeRowList() {
    const t = this.draw.getInnerWidth();
    this.rowList = this.draw.computeRowList({
      innerWidth: t,
      elementList: this.elementList
    });
  }
  _computePositionList() {
    const t = this.getFooterBottom(), R = this.draw.getInnerWidth(), o = this.draw.getMargins()[3], n = this.draw.getHeight(), s = this.getHeight(), r = n - t - s;
    this.position.computePageRowPosition({
      positionList: this.positionList,
      rowList: this.rowList,
      pageNo: 0,
      startRowIndex: 0,
      startIndex: 0,
      startX: o,
      startY: r,
      innerWidth: R,
      zone: Qt.FOOTER
    });
  }
  getFooterBottom(t) {
    if (this.isDisabled(t)) return 0;
    const {
      footer: { bottom: R },
      scale: e
    } = this.options;
    return Math.floor(R * e);
  }
  getMaxHeight() {
    const {
      footer: { maxHeightRadio: t }
    } = this.options, R = this.draw.getHeight();
    return Math.floor(R * qR[t]);
  }
  getHeight(t) {
    if (this.isDisabled(t)) return 0;
    const R = this.getMaxHeight(), e = this.getRowHeight();
    return e > R ? R : e;
  }
  getRowHeight() {
    return this.rowList.reduce((t, R) => t + R.height, 0);
  }
  getExtraHeight(t) {
    const R = this.draw.getMargins(), e = this.getHeight(t), n = this.getFooterBottom(t) + e - R[2];
    return n <= 0 ? 0 : n;
  }
  isDisabled(t) {
    return !!(this.options.footer.disabled || t !== void 0 && this.options.footer.disabledPages.includes(t));
  }
  render(t, R) {
    if (this.options.footer.disabledPages.includes(R)) return;
    t.globalAlpha = 1;
    const e = this.draw.getInnerWidth(), o = this.getMaxHeight(), n = [];
    let s = 0;
    for (let r = 0; r < this.rowList.length; r++) {
      const l = this.rowList[r];
      if (s + l.height > o)
        break;
      n.push(l), s += l.height;
    }
    this.draw.drawRow(t, {
      elementList: this.elementList,
      positionList: this.positionList,
      rowList: n,
      pageNo: R,
      startIndex: 0,
      innerWidth: e,
      zone: Qt.FOOTER
    });
  }
}
var fR = /* @__PURE__ */ ((i) => (i.Delete = "Delete", i.Backspace = "Backspace", i.Enter = "Enter", i.Left = "ArrowLeft", i.Right = "ArrowRight", i.Up = "ArrowUp", i.Down = "ArrowDown", i.ESC = "Escape", i.TAB = "Tab", i.META = "Meta", i.LEFT_BRACKET = "[", i.RIGHT_BRACKET = "]", i.COMMA = ",", i.PERIOD = ".", i.LEFT_ANGLE_BRACKET = "<", i.RIGHT_ANGLE_BRACKET = ">", i.EQUAL = "=", i.MINUS = "-", i.PLUS = "+", i.A = "a", i.B = "b", i.C = "c", i.D = "d", i.E = "e", i.F = "f", i.G = "g", i.H = "h", i.I = "i", i.J = "j", i.K = "k", i.L = "l", i.M = "m", i.N = "n", i.O = "o", i.P = "p", i.Q = "q", i.R = "r", i.S = "s", i.T = "t", i.U = "u", i.V = "v", i.W = "w", i.X = "x", i.Y = "y", i.Z = "z", i.A_UPPERCASE = "A", i.B_UPPERCASE = "B", i.C_UPPERCASE = "C", i.D_UPPERCASE = "D", i.E_UPPERCASE = "E", i.F_UPPERCASE = "F", i.G_UPPERCASE = "G", i.H_UPPERCASE = "H", i.I_UPPERCASE = "I", i.J_UPPERCASE = "J", i.K_UPPERCASE = "K", i.L_UPPERCASE = "L", i.M_UPPERCASE = "M", i.N_UPPERCASE = "N", i.O_UPPERCASE = "O", i.P_UPPERCASE = "P", i.Q_UPPERCASE = "Q", i.R_UPPERCASE = "R", i.S_UPPERCASE = "S", i.T_UPPERCASE = "T", i.U_UPPERCASE = "U", i.V_UPPERCASE = "V", i.W_UPPERCASE = "W", i.X_UPPERCASE = "X", i.Y_UPPERCASE = "Y", i.Z_UPPERCASE = "Z", i.ZERO = "0", i.ONE = "1", i.TWO = "2", i.THREE = "3", i.FOUR = "4", i.FIVE = "5", i.SIX = "6", i.SEVEN = "7", i.EIGHT = "8", i.NINE = "9", i))(fR || {});
class fi {
  constructor(t) {
    F(this, "draw");
    // private range: RangeManager
    F(this, "options");
    // 非递增样式直接返回默认值
    F(this, "UN_COUNT_STYLE_WIDTH", 20);
    F(this, "MEASURE_BASE_TEXT", "0");
    F(this, "LIST_GAP", 10);
    // 每一级列表的缩进宽度(用于嵌套列表)
    F(this, "LIST_INDENT_WIDTH", 30);
    this.draw = t, this.options = t.getOptions();
  }
  // public setList(listType: ListType | null, listStyle?: ListStyle) {
  //   const isReadonly = this.draw.isReadonly()
  //   if (isReadonly) return
  //   const { startIndex, endIndex } = this.range.getRange()
  //   if (!~startIndex && !~endIndex) return
  //   // 需要改变的元素列表
  //   const changeElementList = this.range.getRangeParagraphElementList()
  //   if (!changeElementList || !changeElementList.length) return
  //   // 如果包含列表则设置为取消列表
  //   const isUnsetList = changeElementList.find(
  //     el => el.listType === listType && el.listStyle === listStyle
  //   )
  //   if (isUnsetList || !listType) {
  //     this.unsetList()
  //     return
  //   }
  //   // 设置值
  //   const listId = getUUID()
  //   changeElementList.forEach(el => {
  //     el.listId = listId
  //     el.listType = listType
  //     el.listStyle = listStyle
  //   })
  //   // 光标定位
  //   const isSetCursor = startIndex === endIndex
  //   const curIndex = isSetCursor ? endIndex : startIndex
  //   this.draw.render({ curIndex, isSetCursor })
  // }
  // public unsetList() {
  //   const isReadonly = this.draw.isReadonly()
  //   if (isReadonly) return
  //   const { startIndex, endIndex } = this.range.getRange()
  //   if (!~startIndex && !~endIndex) return
  //   // 需要改变的元素列表
  //   const changeElementList = this.range
  //     .getRangeParagraphElementList()
  //     ?.filter(el => el.listId)
  //   if (!changeElementList || !changeElementList.length) return
  //   // 如果列表最后字符不是换行符则需插入换行符
  //   const elementList = this.draw.getElementList()
  //   const endElement = elementList[endIndex]
  //   if (endElement.listId) {
  //     let start = endIndex + 1
  //     while (start < elementList.length) {
  //       const element = elementList[start]
  //       if (element.value === ZERO && !element.listWrap) break
  //       if (element.listId !== endElement.listId) {
  //         this.draw.spliceElementList(elementList, start, 0, {
  //           value: ZERO
  //         })
  //         break
  //       }
  //       start++
  //     }
  //   }
  //   // 取消设置
  //   changeElementList.forEach(el => {
  //     delete el.listId
  //     delete el.listType
  //     delete el.listStyle
  //     delete el.listWrap
  //   })
  //   // 光标定位
  //   const isSetCursor = startIndex === endIndex
  //   const curIndex = isSetCursor ? endIndex : startIndex
  //   this.draw.render({ curIndex, isSetCursor })
  // }
  computeListStyle(t, R) {
    const e = /* @__PURE__ */ new Map();
    let o = 0;
    if (!R[o]) return e;
    let n = R[o].listId, s = [];
    const r = R.length;
    for (; o < r; ) {
      const l = R[o];
      if (n && n === l.listId)
        s.push(l);
      else if (l.listId && l.listId !== n) {
        if (s.length) {
          const a = this.getListStyleWidth(t, s);
          e.set(n, a);
        }
        n = l.listId, s = n ? [l] : [];
      }
      o++;
    }
    if (s.length) {
      const l = this.getListStyleWidth(t, s);
      e.set(n, l);
    }
    return e;
  }
  findStyledElement(t) {
    let R = t[0];
    for (let e = 1; e < t.length; e++) {
      const o = t[e];
      if (o.font || o.size || o.bold || o.italic) {
        R = o;
        break;
      }
    }
    return R;
  }
  getListFontStyle(t, R) {
    if (this.options.list.inheritStyle) {
      const e = this.findStyledElement(t);
      return this.draw.getFont(e, R);
    } else {
      const { defaultFont: e, defaultSize: o } = this.options;
      return `${o * R}px ${e}`;
    }
  }
  getListStyleWidth(t, R) {
    const { scale: e, checkbox: o } = this.options, n = R[0];
    if (n.listStyle && n.listStyle !== Vt.DECIMAL)
      return n.listStyle === Vt.CHECKBOX ? (o.width + this.LIST_GAP) * e : this.UN_COUNT_STYLE_WIDTH * e;
    const s = R.reduce((a, O) => (O.value === q && (a += 1), a), 0);
    if (!s) return 0;
    t.save(), t.font = this.getListFontStyle(R, e);
    const r = `${this.MEASURE_BASE_TEXT.repeat(String(s).length - 1 || 1)}${fR.PERIOD}`, l = this.draw.getFakeCtx().measureText(r);
    return t.restore(), Math.ceil((l.width + this.LIST_GAP) * e);
  }
  drawListStyle(t, R, e) {
    var L;
    const { elementList: o, offsetX: n, listIndex: s, ascent: r } = R, l = o[0];
    if (l.value !== q || l.listWrap) return;
    let a = 0;
    const { defaultTabWidth: O, scale: M } = this.options;
    for (let Y = 1; Y < o.length; Y++) {
      const S = o[Y];
      if ((S == null ? void 0 : S.type) !== V.TAB) break;
      a += O * M;
    }
    const {
      coordinate: {
        leftTop: [X, P]
      }
    } = e, N = l.listLevel ? this.LIST_INDENT_WIDTH * l.listLevel * M : 0, u = X - n + N + a, h = P + r;
    if (l.listStyle === Vt.CHECKBOX) {
      const { width: Y, height: S, gap: W } = this.options.checkbox, c = {
        ...l,
        checkbox: {
          value: !!((L = l.checkbox) != null && L.value)
        },
        metrics: {
          ...l.metrics,
          width: (Y + W * 2) * M,
          height: S * M
        }
      };
      this.draw.getCheckboxParticle().render({
        ctx2d: t,
        x: u - W * M,
        y: h,
        index: 0,
        row: {
          ...R,
          elementList: [c, ...R.elementList]
        }
      });
    } else {
      let Y = "";
      if (l.listType === hR.UL) {
        const S = l.listLevel ?? 0, W = [Ht.DISC, Ht.CIRCLE, Ht.SQUARE], c = W[S % W.length], T = S === 0 ? l.listStyle || Ht.DISC : c;
        Y = AR[T] || AR[Ht.DISC];
      } else
        Y = `${s + 1}${fR.PERIOD}`;
      if (!Y) return;
      t.save(), t.font = this.getListFontStyle(o, M), t.fillText(Y, u, h), t.restore();
    }
  }
}
const zt = class zt {
  // 距离左边间隙
  constructor(t) {
    F(this, "options");
    this.options = t.getOptions();
  }
  render(t, R, e, o) {
    const {
      scale: n,
      lineBreak: { color: s, lineWidth: r }
    } = this.options;
    t.save(), t.beginPath();
    const l = o - zt.HEIGHT * n / 2, a = e + R.metrics.width;
    t.translate(a, l), t.scale(n, n), t.strokeStyle = s, t.lineWidth = r, t.lineCap = "round", t.lineJoin = "round", t.beginPath(), t.moveTo(8, 0), t.lineTo(12, 0), t.lineTo(12, 6), t.lineTo(3, 6), t.moveTo(3, 6), t.lineTo(6, 3), t.moveTo(3, 6), t.lineTo(6, 9), t.stroke(), t.closePath(), t.restore();
  }
};
F(zt, "WIDTH", 12), F(zt, "HEIGHT", 9), F(zt, "GAP", 3);
let XR = zt;
class Me {
  constructor(t) {
    F(this, "draw");
    F(this, "position");
    F(this, "options");
    F(this, "elementList");
    F(this, "rowList");
    F(this, "positionList");
    this.draw = t, this.position = t.getPosition(), this.options = t.getOptions(), this.elementList = [], this.rowList = [], this.positionList = [];
  }
  _recovery() {
    this.elementList = [], this.rowList = [], this.positionList = [];
  }
  _compute(t) {
    this._computeRowList(), this._computePositionList(t);
  }
  _computeRowList() {
    const t = this.draw.getInnerWidth();
    this.rowList = this.draw.computeRowList({
      innerWidth: t,
      elementList: this.elementList
    });
  }
  _computePositionList(t) {
    const { lineBreak: R, scale: e } = this.options, o = this.draw.getHeader().getExtraHeight(), n = this.draw.getInnerWidth(), s = this.draw.getMargins();
    let r = s[3];
    R.disabled || (r += (XR.WIDTH + XR.GAP) * e);
    const l = (t == null ? void 0 : t.startY) || s[0] + o;
    this.position.computePageRowPosition({
      positionList: this.positionList,
      rowList: this.rowList,
      pageNo: 0,
      startRowIndex: 0,
      startIndex: 0,
      startX: r,
      startY: l,
      innerWidth: n
    });
  }
  render(t, R) {
    const { placeholder: e = this.options.placeholder } = R || {}, { data: o, font: n, size: s, color: r, opacity: l } = e;
    this._recovery(), this.elementList = [
      {
        value: o,
        font: n,
        size: s,
        color: r
      }
    ], Ct(this.elementList, {
      editorOptions: this.options,
      isForceCompensation: !0
    }), this._compute(R);
    const a = this.draw.getInnerWidth();
    t.save(), t.globalAlpha = l, this.draw.drawRow(t, {
      elementList: this.elementList,
      positionList: this.positionList,
      rowList: this.rowList,
      pageNo: 0,
      startIndex: 0,
      innerWidth: a,
      isDrawLineBreak: !1
    }), t.restore();
  }
}
class Hi {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    // private range: RangeManager
    F(this, "fillRectMap");
    this.draw = t, this.options = t.getOptions(), this.fillRectMap = /* @__PURE__ */ new Map();
  }
  setGroup() {
    return this.draw.render({
      isSetCursor: !1,
      isCompute: !1
    }), null;
  }
  getElementListByGroupId(t, R) {
    var o, n;
    const e = [];
    for (let s = 0; s < t.length; s++) {
      const r = t[s];
      if (r.type === V.TABLE) {
        const l = r.trList;
        for (let a = 0; a < l.length; a++) {
          const O = l[a];
          for (let M = 0; M < O.tdList.length; M++) {
            const X = O.tdList[M], P = this.getElementListByGroupId(
              X.value,
              R
            );
            if (P.length)
              return e.push(...P), e;
          }
        }
      }
      if ((o = r == null ? void 0 : r.groupIds) != null && o.includes(R)) {
        e.push(r);
        const l = t[s + 1];
        if (!((n = l == null ? void 0 : l.groupIds) != null && n.includes(R))) break;
      }
    }
    return e;
  }
  deleteGroup(t) {
    const R = this.draw.getOriginalMainElementList(), e = this.getElementListByGroupId(R, t);
    if (e.length) {
      for (let o = 0; o < e.length; o++) {
        const n = e[o], s = n.groupIds, r = s.findIndex((l) => l === t);
        s.splice(r, 1), s.length || delete n.groupIds;
      }
      this.draw.render({
        isSetCursor: !1,
        isCompute: !1
      });
    }
  }
  getContextByGroupId(t, R) {
    var e, o;
    for (let n = 0; n < t.length; n++) {
      const s = t[n];
      if (s.type === V.TABLE) {
        const l = s.trList;
        for (let a = 0; a < l.length; a++) {
          const O = l[a];
          for (let M = 0; M < O.tdList.length; M++) {
            const X = O.tdList[M], P = this.getContextByGroupId(X.value, R);
            if (P)
              return {
                ...P,
                isTable: !0,
                index: n,
                trIndex: a,
                tdIndex: M,
                tdId: X.id,
                trId: O.id,
                tableId: s.tableId
              };
          }
        }
      }
      const r = t[n + 1];
      if ((e = s.groupIds) != null && e.includes(R) && !((o = r == null ? void 0 : r.groupIds) != null && o.includes(R)))
        return {
          isTable: !1,
          startIndex: n,
          endIndex: n
        };
    }
    return null;
  }
  clearFillInfo() {
    this.fillRectMap.clear();
  }
  recordFillInfo(t, R, e, o, n) {
    const s = t.groupIds;
    if (s)
      for (const r of s) {
        const l = this.fillRectMap.get(r);
        l ? l.width += o : this.fillRectMap.set(r, {
          x: R,
          y: e,
          width: o,
          height: n
        });
      }
  }
  render(t) {
    if (!this.fillRectMap.size) return;
    const {
      group: { backgroundColor: R, opacity: e, activeOpacity: o, activeBackgroundColor: n }
    } = this.options, l = this.draw.getElementList().filter((a) => a.groupIds).reduce((a, O) => {
      var M;
      return (M = O.groupIds) == null || M.forEach((X) => a.push(X)), a;
    }, []);
    t.save(), this.draw.getPdf().setGState(new tR({
      opacity: e
    })), this.fillRectMap.forEach((a, O) => {
      const { x: M, y: X, width: P, height: N } = a;
      l != null && l.includes(O) ? (t.globalAlpha = o, t.fillStyle = n) : (t.globalAlpha = e, t.fillStyle = R), t.fillRect(M, X, P, N);
    }), this.draw.getPdf().setGState(new tR({
      opacity: 1
    })), t.restore(), this.clearFillInfo();
  }
}
var CR = /* @__PURE__ */ ((i) => (i.PAGE = "page", i.CONTINUITY = "continuity", i))(CR || {});
class Gi {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    this.draw = t, this.options = t.getOptions();
  }
  render(t, R) {
    const {
      scale: e,
      lineNumber: { color: o, size: n, font: s, right: r, type: l }
    } = this.options, a = this.draw.getTextParticle(), O = this.draw.getMargins(), M = this.draw.getPosition().getOriginalMainPositionList(), P = this.draw.getPageRowList()[R];
    t.save(), t.fillStyle = o, t.font = `${n * e}px ${s}`;
    for (let N = 0; N < P.length; N++) {
      const u = P[N], {
        coordinate: { leftBottom: h }
      } = M[u.startIndex], L = l === CR.PAGE ? N + 1 : u.rowIndex + 1, Y = a.measureText(t, {
        value: `${L}`
      }), S = O[3] - (Y.width + r) * e, W = h[1] - Y.actualBoundingBoxAscent * e;
      t.fillText(`${L}`, S, W);
    }
    t.restore();
  }
}
class Ji {
  constructor(t) {
    F(this, "draw");
    F(this, "header");
    F(this, "footer");
    F(this, "options");
    this.draw = t, this.header = t.getHeader(), this.footer = t.getFooter(), this.options = t.getOptions();
  }
  render(t) {
    const {
      scale: R,
      pageBorder: { color: e, lineWidth: o, padding: n }
    } = this.options;
    t.save(), t.translate(0.5, 0.5), t.strokeStyle = e, t.lineWidth = o * R;
    const s = this.draw.getMargins(), r = s[3] - n[3] * R, l = s[0] + this.header.getExtraHeight() - n[0] * R, a = this.draw.getInnerWidth() + (n[1] + n[3]) * R, O = this.draw.getHeight() - l - this.footer.getExtraHeight() - s[2] + n[2] * R;
    t.rect(r, l, a, O), t.stroke(), t.restore();
  }
}
class pi {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "layout");
    this.draw = t, this.options = t.getOptions(), this.layout = null;
  }
  // 根据可用宽度和分栏配置计算布局;count<=1 或无配置时返回 null
  computeLayout(t, R) {
    if (!R) return null;
    const e = Math.max(1, Math.floor(R.count));
    if (e === 1) return null;
    const o = (R.gap ?? this.options.column.gap) * this.options.scale, n = t / e * 0.5, s = Math.max(0, Math.min(o, n)), r = (t - s * (e - 1)) / e, l = [];
    for (let a = 0; a < e; a++)
      l.push(a * (r + s));
    return { count: e, width: r, gap: s, separator: R.separator ?? !1, offsets: l };
  }
  // 重算布局
  compute() {
    this.layout = this.computeLayout(
      this.draw.getInnerWidth(),
      this.options.column
    );
  }
  getLayout() {
    return this.layout;
  }
  // 设置分栏配置
  setConfig(t) {
    !t || t.count <= 1 ? this.options.column = { ...this.options.column, count: 1 } : this.options.column = {
      ...this.options.column,
      ...t,
      count: Math.max(1, Math.floor(t.count))
    };
  }
  // 根据栏索引获取 X 偏移;无布局或索引非法时返回 0
  getOffset(t) {
    return !this.layout || t === void 0 || t < 0 || t >= this.layout.count ? 0 : this.layout.offsets[t];
  }
  // 绘制栏间分隔线;仅在 separator 开启且 count>=2 时实际绘制
  drawSeparator(t, R) {
    const e = this.layout;
    if (!e || !e.separator || e.count < 2) return;
    const { column: o, scale: n } = this.options, s = this.draw.getMargins(), r = s[3], l = s[0] + this.draw.getHeader().getExtraHeight(R), a = this.draw.getHeight() - s[2] - this.draw.getFooter().getExtraHeight(R);
    t.save(), t.strokeStyle = o.separatorColor, t.lineWidth = o.separatorWidth * n, t.beginPath();
    for (let O = 1; O < e.count; O++) {
      const M = r + e.offsets[O] - e.gap / 2;
      t.moveTo(M + 0.5, l), t.lineTo(M + 0.5, a);
    }
    t.stroke(), t.restore();
  }
}
const bi = {
  color: "#FFFFFF",
  image: "",
  size: bR.COVER,
  repeat: yt.NO_REPEAT,
  applyPageNumbers: []
}, mi = {
  width: 14,
  height: 14,
  gap: 5,
  lineWidth: 1,
  fillStyle: "#5175f4",
  strokeStyle: "#ffffff",
  verticalAlign: ht.BOTTOM
}, Ei = {
  placeholderColor: "#9c9b9b",
  bracketColor: "#000000",
  prefix: "{",
  postfix: "}",
  borderWidth: 1,
  borderColor: "#000000",
  activeBackgroundColor: "",
  disabledBackgroundColor: "",
  existValueBackgroundColor: "",
  noValueBackgroundColor: ""
}, Ci = {
  width: 1,
  color: "#000",
  dragWidth: 3,
  dragColor: "#007fff"
}, wi = {
  bottom: 30,
  inactiveAlpha: 1,
  maxHeightRadio: jt.HALF,
  disabled: !1,
  editable: !0,
  disabledPages: []
}, yi = {
  opacity: 0.1,
  backgroundColor: "#E99D00",
  activeOpacity: 0.5,
  activeBackgroundColor: "#E99D00",
  disabled: !1
}, xi = {
  top: 30,
  inactiveAlpha: 1,
  maxHeightRadio: jt.HALF,
  disabled: !1,
  editable: !0,
  disabledPages: []
}, Bi = {
  defaultColor: "#1976d2",
  defaultBackgroundColor: "#e3f2fd",
  defaultBorderRadius: 4,
  defaultPadding: [4, 4, 4, 4]
}, _i = {
  color: "#666666",
  font: "Microsoft YaHei",
  size: 12,
  top: 5
}, Ai = {
  disabled: !0,
  color: "#CCCCCC",
  lineWidth: 1.5
}, vi = {
  font: "Microsoft YaHei",
  fontSize: 12,
  lineDash: [3, 1]
}, Oe = {
  data: "",
  color: "#DCDFE6",
  opacity: 1,
  size: 16,
  font: "Microsoft YaHei"
}, ki = {
  width: 14,
  height: 14,
  gap: 5,
  lineWidth: 1,
  fillStyle: "#5175f4",
  strokeStyle: "#000000",
  verticalAlign: ht.BOTTOM
}, zi = {
  lineWidth: 1,
  strokeStyle: "#000000"
}, $i = {
  tdPadding: [0, 5, 5, 5],
  defaultTrMinHeight: 42,
  defaultColMinWidth: 40,
  defaultBorderColor: "#000000",
  overflow: !1
}, ji = {
  data: "",
  type: ER.TEXT,
  width: 0,
  height: 0,
  color: "#AEB5C0",
  opacity: 0.3,
  size: 200,
  font: "Microsoft YaHei",
  repeat: !1,
  gap: [10, 10],
  numberType: WR.ARABIC,
  layer: TR.BOTTOM
}, qi = {
  tipDisabled: !0
}, ts = {
  size: 12,
  font: "Microsoft YaHei",
  color: "#000000",
  disabled: !0,
  right: 20,
  type: CR.CONTINUITY
}, Rs = {
  count: 1,
  gap: 20,
  separator: !1,
  separatorColor: "#000000",
  separatorWidth: 1
}, es = {
  color: "#000000",
  lineWidth: 1,
  padding: [0, 5, 0, 5],
  disabled: !0
}, is = {
  top: 0,
  left: 5
}, ss = {
  defaultLineColor: "#000000",
  defaultLineWidth: 2
};
function zR(i = {}) {
  var Z, U, I;
  const t = {
    ...$i,
    ...i.table
  }, R = {
    ...xi,
    ...i.header
  }, e = {
    ...wi,
    ...i.footer
  }, o = {
    ...oi,
    ...i.pageNumber
  }, n = {
    ...ji,
    ...i.watermark
  }, s = {
    ...Ei,
    ...i.control
  }, r = {
    ...mi,
    ...i.checkbox
  }, l = {
    ...ki,
    ...i.radio
  }, a = {
    ...Ci,
    ...i.cursor
  }, O = {
    ...ve,
    ...i.title
  }, M = {
    ...Oe,
    ...i.placeholder
  }, X = {
    ...yi,
    ...i.group
  }, P = {
    ...vi,
    ...i.pageBreak
  }, N = {
    ...qi,
    ...i.zone
  }, u = {
    ...bi,
    ...i.background
  }, h = {
    ...Ai,
    ...i.lineBreak
  }, L = {
    ...zi,
    ...i.separator
  }, Y = {
    ...ts,
    ...i.lineNumber
  }, S = {
    ...es,
    ...i.pageBorder
  }, W = {
    ...is,
    ...i.badge
  }, c = {
    ...ss,
    ...i.graffiti
  }, T = {
    ...Bi,
    ...i.label
  }, H = {
    ..._i,
    ...i.imgCaption
  }, f = {
    ..._e,
    ...i.list
  }, D = {
    ...Rs,
    ...i.column
  }, K = {
    print: {
      ...QR.print,
      ...(Z = i.modeRule) == null ? void 0 : Z.print
    },
    readonly: {
      ...QR.readonly,
      ...(U = i.modeRule) == null ? void 0 : U.readonly
    },
    form: {
      ...QR.form,
      ...(I = i.modeRule) == null ? void 0 : I.form
    }
  };
  return {
    mode: dt.EDIT,
    locale: "zhCN",
    defaultType: "TEXT",
    defaultColor: "#000000",
    defaultFont: "Microsoft YaHei",
    defaultSize: 16,
    minSize: 5,
    maxSize: 72,
    defaultRowMargin: 1,
    defaultBasicRowMarginHeight: 8,
    defaultTabWidth: 32,
    width: 794,
    height: 1123,
    scale: 1,
    pageGap: 20,
    underlineColor: "#000000",
    strikeoutColor: "#FF0000",
    rangeAlpha: 0.6,
    rangeColor: "#AECBFA",
    rangeMinWidth: 5,
    searchMatchAlpha: 0.6,
    searchMatchColor: "#FFFF00",
    searchNavigateMatchColor: "#AAD280",
    highlightAlpha: 0.6,
    highlightMarginHeight: 8,
    resizerColor: "#4182D9",
    resizerSize: 5,
    marginIndicatorSize: 35,
    marginIndicatorColor: "#BABABA",
    margins: [100, 120, 100, 120],
    pageMode: bt.PAGING,
    renderMode: JR.SPEED,
    defaultHyperlinkColor: "#0000FF",
    paperDirection: _t.VERTICAL,
    inactiveAlpha: 0.6,
    historyMaxRecordCount: 100,
    wordBreak: GR.BREAK_WORD,
    printPixelRatio: 3,
    maskMargin: [0, 0, 0, 0],
    letterClass: [Se.ENGLISH],
    contextMenuDisableKeys: [],
    shortcutDisableKeys: [],
    scrollContainerSelector: "",
    pageOuterSelectionDisable: !1,
    ...i,
    table: t,
    header: R,
    footer: e,
    pageNumber: o,
    watermark: n,
    control: s,
    checkbox: r,
    radio: l,
    cursor: a,
    title: O,
    placeholder: M,
    group: X,
    pageBreak: P,
    zone: N,
    background: u,
    lineBreak: h,
    // whiteSpace: whiteSpaceOptions,
    separator: L,
    lineNumber: Y,
    pageBorder: S,
    badge: W,
    modeRule: K,
    graffiti: c,
    label: T,
    imgCaption: H,
    list: f,
    // magnifier: magnifierOptions,
    // accessibility: accessibilityOptions,
    column: D
  };
}
function dR(i) {
  return i.reduce((t, R) => t + R.width, 0);
}
function os(i, t, R) {
  let e = dR(i);
  for (; e > t; ) {
    const o = i.filter((a) => a.width > R);
    if (!o.length) return;
    const n = dR(o), s = t - (e - n);
    if (s <= 0) {
      o.forEach((a) => a.width = R);
      return;
    }
    const r = s / n;
    o.forEach((a) => {
      a.width = Math.max(R, a.width * r);
    });
    const l = dR(i);
    if (l >= e) return;
    e = l;
  }
}
var HR = /* @__PURE__ */ ((i) => (i.EDIT = "edit", i.READONLY = "readonly", i.FORM = "form", i))(HR || {});
class ns {
  constructor(t) {
    F(this, "draw");
    // private zone: Zone
    // private range: RangeManager
    F(this, "position");
    F(this, "options");
    F(this, "areaInfoMap", /* @__PURE__ */ new Map());
    this.draw = t, this.options = t.getOptions(), this.position = t.getPosition();
  }
  getAreaInfo() {
    return this.areaInfoMap;
  }
  getActiveAreaId() {
    return this.areaInfoMap.size, null;
  }
  getActiveAreaInfo() {
    const t = this.getActiveAreaId();
    return t && this.areaInfoMap.get(t) || null;
  }
  isReadonly() {
    const t = this.getActiveAreaInfo();
    if (!t) return !1;
    switch (t.area.mode) {
      case HR.EDIT:
        return !1;
      case HR.READONLY:
        return !0;
      default:
        return !1;
    }
  }
  insertArea() {
    return Yt();
  }
  render(t, R) {
    if (!this.areaInfoMap.size) return;
    t.save();
    const e = this.draw.getMargins(), o = this.draw.getInnerWidth();
    for (const n of this.areaInfoMap) {
      const { area: s, positionList: r } = n[1];
      if (s != null && s.hide || !(s != null && s.backgroundColor) && !(s != null && s.borderColor) && !(s != null && s.placeholder))
        continue;
      const l = r.filter((Y) => Y.pageNo === R);
      if (!l.length) continue;
      t.translate(0.5, 0.5);
      const a = l[0], O = l[l.length - 1], M = n[1].tableCell, X = !!M, P = this.draw.getTdPadding(), N = X ? M.tablePosition.coordinate.leftTop[0] + M.td.x * this.options.scale + P[3] : e[3], u = Math.ceil(a.coordinate.leftTop[1]), h = Math.ceil(O.coordinate.rightBottom[1] - u), L = X ? M.td.width * this.options.scale - P[1] - P[3] : o;
      s.backgroundColor && (t.fillStyle = s.backgroundColor, t.fillRect(N, u, L, h)), s.borderColor && (t.strokeStyle = s.borderColor, t.strokeRect(N, u, L, h)), s.placeholder && r.length <= 1 && new Me(this.draw).render(t, {
        placeholder: {
          ...Oe,
          ...s.placeholder
        },
        startY: a.coordinate.leftTop[1]
      }), t.translate(-0.5, -0.5);
    }
    t.restore();
  }
  compute() {
    this.areaInfoMap.clear();
    const t = this.draw.getOriginalMainElementList(), R = this.position.getOriginalMainPositionList();
    this.computeAreaInfo(t, R, t);
  }
  computeAreaInfo(t, R = [], e, o, n) {
    for (let s = 0; s < t.length; s++) {
      const r = t[s], l = r.areaId, a = R[s];
      if (l && l !== o) {
        const O = this.areaInfoMap.get(l);
        O ? (O.elementList.push(r), a && O.positionList.push(a)) : this.areaInfoMap.set(l, {
          id: l,
          area: r.area,
          elementList: [r],
          positionList: a ? [a] : [],
          sourceElementList: e,
          tableCell: n
        });
      }
      r.type === V.TABLE && r.trList && this.computeTableAreaInfo(r, a, l);
    }
  }
  computeTableAreaInfo(t, R, e) {
    const o = t.trList;
    for (let n = 0; n < o.length; n++) {
      const s = o[n];
      for (let r = 0; r < s.tdList.length; r++) {
        const l = s.tdList[r];
        this.computeAreaInfo(
          l.value,
          l.positionList,
          l.value,
          e,
          R ? {
            td: l,
            tablePosition: R
          } : void 0
        );
      }
    }
  }
  getAreaValue(t = {}) {
    const R = t.id || this.getActiveAreaId();
    if (!R) return null;
    const e = this.areaInfoMap.get(R);
    return e ? {
      area: e.area,
      id: e.id,
      startPageNo: e.positionList[0].pageNo,
      endPageNo: e.positionList[e.positionList.length - 1].pageNo,
      value: gt(e.elementList)
    } : null;
  }
  setAreaProperties(t) {
    const R = t.id || this.getActiveAreaId();
    if (!R) return;
    const e = this.areaInfoMap.get(R);
    if (!e) return;
    e.area || (e.area = {});
    let o = !1;
    const n = ["top", "hide"];
    Object.entries(t.properties).forEach(([s, r]) => {
      if (Ue(r)) return;
      const l = s;
      e.area[l] = r, n.includes(l) && (o = !0);
    }), this.draw.render({
      isCompute: o,
      isSetCursor: !1
    });
  }
}
class as {
  // private pageContainer: HTMLDivElement
  // private isDrawing = false
  // private startStroke: IGraffitiStroke | null = null
  constructor(t, R) {
    F(this, "draw");
    F(this, "options");
    F(this, "data");
    this.draw = t, this.options = t.getOptions(), this.data = R || [], this.register();
  }
  register() {
  }
  // private start(evt: MouseEvent) {
  //   if (!this.draw.isGraffitiMode()) return
  //   this.isDrawing = true
  //   // 缓存起始数据
  //   const { scale } = this.options
  //   this.startStroke = {
  //     lineColor: this.options.graffiti.defaultLineColor,
  //     lineWidth: this.options.graffiti.defaultLineWidth,
  //     points: [evt.offsetX / scale, evt.offsetY / scale]
  //   }
  // }
  // private stop() {
  //   this.isDrawing = false
  // }
  // private drawing(evt: MouseEvent) {
  //   if (!this.isDrawing || !this.draw.isGraffitiMode()) return
  //   // 移动超过至少2个像素后开始绘制
  //   const { offsetX, offsetY } = evt
  //   const DISTANCE = 2
  //   if (
  //     this.startStroke &&
  //     Math.abs(this.startStroke.points[0] - offsetX) < DISTANCE &&
  //     Math.abs(this.startStroke.points[1] - offsetY) < DISTANCE
  //   ) {
  //     return
  //   }
  //   // 修改数据
  //   const pageNo = this.draw.getPageNo()
  //   let currentValue = this.data.find(item => item.pageNo === pageNo)
  //   if (this.startStroke) {
  //     if (!currentValue) {
  //       currentValue = {
  //         pageNo,
  //         strokes: []
  //       }
  //       this.data.push(currentValue)
  //     }
  //     currentValue.strokes.push(this.startStroke)
  //     // 清空起始数据
  //     this.startStroke = null
  //   }
  //   if (!currentValue?.strokes?.length) return
  //   const { scale } = this.options
  //   const lastPoints =
  //     currentValue.strokes[currentValue.strokes.length - 1].points
  //   lastPoints.push(offsetX / scale, offsetY / scale)
  //   // 重新渲染
  //   this.draw.render({
  //     isCompute: false,
  //     isSetCursor: false,
  //     isSubmitHistory: false
  //   })
  // }
  getValue() {
    return this.data;
  }
  // 页面减少时清空对应页面涂鸦信息
  compute() {
    const t = this.draw.getPageRowList().length;
    for (let R = this.data.length - 1; R >= 0; R--)
      this.data[R].pageNo > t - 1 && this.data.splice(R, 1);
  }
  clear() {
    this.data = [];
  }
  render(t, R) {
    var r;
    const e = (r = this.data.find((l) => l.pageNo === R)) == null ? void 0 : r.strokes;
    if (!(e != null && e.length)) return;
    const {
      graffiti: { defaultLineColor: o, defaultLineWidth: n },
      scale: s
    } = this.options;
    t.save();
    for (let l = 0; l < e.length; l++) {
      const a = e[l];
      t.beginPath(), t.strokeStyle = a.lineColor || o, t.lineWidth = (a.lineWidth || n) * s, t.moveTo(a.points[0] * s, a.points[1] * s);
      for (let O = 2; O < a.points.length; O += 2)
        t.lineTo(a.points[O] * s, a.points[O + 1] * s);
      t.stroke();
    }
    t.restore();
  }
}
class rs {
  constructor(t) {
    F(this, "draw");
    F(this, "options");
    F(this, "imageCache");
    F(this, "mainBadge");
    F(this, "areaBadgeMap");
    this.draw = t, this.options = t.getOptions(), this.imageCache = /* @__PURE__ */ new Map(), this.mainBadge = null, this.areaBadgeMap = /* @__PURE__ */ new Map();
  }
  setMainBadge(t) {
    this.mainBadge = t;
  }
  setAreaBadgeMap(t) {
    this.areaBadgeMap.clear(), t.forEach((R) => {
      this.areaBadgeMap.set(R.areaId, R.badge);
    });
  }
  _drawImage(t, R, e, o, n, s, r) {
    if (this.imageCache.has(r))
      t.drawImage(R.value, e, o, n, s);
    else {
      const l = new Image();
      l.setAttribute("crossOrigin", "Anonymous"), l.src = r, l.onload = () => {
        this.imageCache.set(r, l), t.drawImage(R.value, e, o, n, s);
      };
    }
  }
  render(t, R, e) {
    if (e === 0 && this.mainBadge) {
      const { scale: o, badge: n } = this.options, { left: s, top: r, width: l, height: a, value: O } = this.mainBadge, M = this.draw.getMargins()[0] + this.draw.getHeader().getExtraHeight(), X = (s || n.left) * o, P = (r || n.top) * o + M;
      this._drawImage(t, R, X, P, l * o, a * o, O);
    }
    if (this.areaBadgeMap.size) {
      const o = this.draw.getArea().getAreaInfo();
      if (o.size) {
        const { scale: n, badge: s } = this.options;
        for (const r of o) {
          const { positionList: l } = r[1], a = l[0];
          if (a.pageNo !== e) continue;
          const O = this.areaBadgeMap.get(r[0]);
          if (!O) continue;
          const { left: M, top: X, width: P, height: N, value: u } = O, h = (M || s.left) * n, L = (X || s.top) * n + a.coordinate.leftTop[1];
          this._drawImage(t, R, h, L, P * n, N * n, u);
        }
      }
    }
  }
}
const $t = class $t {
  constructor(t, R, e = {}) {
    // private draw: Draw
    F(this, "fakeCanvas");
    F(this, "fakeCtx");
    // private container: HTMLDivElement
    F(this, "pageList");
    F(this, "ctxListInfos");
    F(this, "pageNo");
    F(this, "mode");
    F(this, "options");
    F(this, "position");
    F(this, "elementList");
    F(this, "pdf");
    F(this, "fontCache", []);
    F(this, "fontSource", "cdn");
    F(this, "i18n");
    F(this, "margin");
    F(this, "background");
    F(this, "badge");
    F(this, "group");
    F(this, "area");
    F(this, "underline");
    F(this, "strikeout");
    F(this, "highlight");
    F(this, "imageParticle");
    F(this, "laTexParticle");
    F(this, "textParticle");
    F(this, "tableParticle");
    F(this, "tablePaging");
    F(this, "pageNumber");
    F(this, "lineNumber");
    F(this, "waterMark");
    F(this, "placeholder");
    F(this, "header");
    F(this, "footer");
    F(this, "hyperlinkParticle");
    F(this, "labelParticle");
    F(this, "dateParticle");
    F(this, "separatorParticle");
    // private pageBreakParticle: PageBreakParticle
    F(this, "superscriptParticle");
    F(this, "subscriptParticle");
    F(this, "checkboxParticle");
    F(this, "radioParticle");
    F(this, "blockParticle");
    F(this, "listParticle");
    F(this, "lineBreakParticle");
    // private control: Control
    F(this, "pageBorder");
    F(this, "imageObserver");
    F(this, "graffiti");
    F(this, "LETTER_REG");
    F(this, "WORD_LIKE_REG");
    F(this, "rowList");
    F(this, "pageRowList");
    F(this, "printModeData");
    F(this, "controlMinWidthPlaceholderElementListSet");
    F(this, "columnManager");
    F(this, "defaultFontsLoadedPromise");
    this.fakeCanvas = At.createMeasurementCanvas(), this.fakeCtx = this.fakeCanvas.getContext("2d"), this.pageList = [], this.ctxListInfos = [], this.pageNo = 0, this.options = zR(t), this.mode = this.options.mode, R = R;
    let o = [], n = [], s = [];
    R = mt(R), Array.isArray(R) ? n = R : (o = R.header || [], n = R.main, s = R.footer || []);
    const r = [
      o,
      n,
      s
    ];
    r.forEach((a) => {
      Ct(a, {
        editorOptions: this.getOptions(),
        isForceCompensation: !0
      });
    }), r.forEach((a) => {
      a && (a = this.filterAssistElement(a));
    }), this.elementList = R.main, this._formatContainer(), this._resetPdf(), this.fontSource = e.fontSource ?? At.defaultFontSource, e.loadDefaultFonts ? this.defaultFontsLoadedPromise = this._addDefaultFont() : this.defaultFontsLoadedPromise = Promise.resolve(!1), this.i18n = new gi(), this.position = new je(this), this.margin = new Ri(this), this.background = new qe(this), this.badge = new rs(this), this.group = new Hi(this), this.area = new ns(this), this.underline = new ii(this), this.strikeout = new ei(this), this.highlight = new ti(this), this.imageParticle = new ie(this), this.laTexParticle = new YR(this), this.textParticle = new si(this), this.tableParticle = new ni(this), this.tablePaging = new ai(this), this.pageNumber = new RR(this), this.lineNumber = new Gi(this), this.waterMark = new Ni(this), this.placeholder = new Me(this), this.header = new Mi(this, R.header), this.footer = new Di(this, R.footer), this.hyperlinkParticle = new ri(this), this.labelParticle = new li(this), this.dateParticle = new Li(this), this.separatorParticle = new Pi(this), this.superscriptParticle = new Oi(), this.subscriptParticle = new Xi(), this.checkboxParticle = new Fi(this), this.radioParticle = new ui(this), this.blockParticle = new Ti(this), this.listParticle = new fi(this), this.lineBreakParticle = new XR(this), this.pageBorder = new Ji(this), this.graffiti = new as(this, R.graffiti), this.columnManager = new pi(this), this.imageObserver = new Ii();
    const { letterClass: l } = this.options;
    this.LETTER_REG = new RegExp(`[${l.join("")}]`), this.WORD_LIKE_REG = new RegExp(
      `${l.map((a) => `[^${a}][${a}]`).join("|")}`
    ), this.rowList = [], this.pageRowList = [], this.printModeData = null, this.controlMinWidthPlaceholderElementListSet = /* @__PURE__ */ new WeakSet();
  }
  getCtx2d() {
    return this.pdf.context2d;
  }
  getFakeCtx() {
    return this.fakeCtx;
  }
  measureText(t, R) {
    this.fakeCtx.save(), this.fakeCtx.font = t;
    const e = this.fakeCtx.measureText(R);
    return this.fakeCtx.restore(), e;
  }
  /**
   * Load a single TTF font and register it with the PDF. In the browser, `source`
   * must be an http(s) URL. In Node, `source` may be either an https URL in the
   * font allowlist or an absolute filesystem path — see src/platform/node.ts for
   * the SSRF/path-traversal checks applied.
   */
  async downloadFont(t, R, e, o) {
    const n = await At.loadFontAsBase64(t), s = { fileName: R, base64: n, id: e, type: o };
    return this.fontCache.push(s), this._applyFont(this.pdf, s), n;
  }
  _applyFont(t, R) {
    t.addFileToVFS(R.fileName, R.base64), t.addFont(R.fileName, R.id, R.type);
  }
  _resolveDefaultFontSource(t) {
    return this.fontSource === "cdn" ? `${$t.CDN_FONT_BASE}/${t}` : this.fontSource === "bundled" ? At.getBundledFontPath(t) : `${this.fontSource.dir.replace(/\/+$/, "")}/${t}`;
  }
  async _addDefaultFont() {
    return await Promise.all(
      $t.DEFAULT_FONTS.map(
        (t) => this.downloadFont(
          this._resolveDefaultFontSource(t.fileName),
          t.fileName,
          t.id,
          t.type
        )
      )
    ), !0;
  }
  loadDefaultFonts() {
    return this.defaultFontsLoadedPromise = this._addDefaultFont();
  }
  async addFont(t, R, e, o) {
    return await this.downloadFont(t, R, e, o), !0;
  }
  getFont(t, R = 1) {
    const { defaultSize: e, defaultFont: o } = this.options, n = t.font || o, s = (t.actualSize || t.size || e) * R;
    return `${t.italic ? "italic " : ""}${t.bold ? "bold " : ""}${s}px ${n}`;
  }
  getLetterReg() {
    return this.LETTER_REG;
  }
  getPagePixelRatio() {
    return 1;
  }
  getMode() {
    return this.mode;
  }
  // public isReadonly() {
  //   if (this.area.getActiveAreaInfo()?.area?.mode) {
  //     return this.area.isReadonly()
  //   }
  //   switch (this.mode) {
  //     case EditorMode.DESIGN:
  //       return false
  //     case EditorMode.READONLY:
  //     case EditorMode.PRINT:
  //     case EditorMode.GRAFFITI:
  //       return true
  //     case EditorMode.FORM:
  //       return !this.control.getIsRangeWithinControl()
  //     default:
  //       return false
  //   }
  // }
  getArea() {
    return this.area;
  }
  getBadge() {
    return this.badge;
  }
  filterAssistElement(t) {
    return t.filter((R) => {
      if (R.type === V.TABLE) {
        const e = R.trList;
        for (let o = 0; o < e.length; o++) {
          const n = e[o];
          for (let s = 0; s < n.tdList.length; s++) {
            const r = n.tdList[s];
            r.value = this.filterAssistElement(r.value);
          }
        }
      }
      return R.controlId && (R.controlComponent === j.PREFIX || R.controlComponent === j.POSTFIX || R.controlComponent === j.PLACEHOLDER) && (R.value = ""), !0;
    });
  }
  setMode(t) {
    if (t === dt.PRINT) {
      this.printModeData = {
        header: this.header.getElementList(),
        main: this.elementList,
        footer: this.footer.getElementList()
      };
      const R = mt(this.printModeData);
      ["header", "main", "footer"].forEach((o) => {
        R[o] = this.filterAssistElement(
          R[o]
        );
      });
    }
    this.clearSideEffect(), this.mode = t, this.options.mode = t;
  }
  isDesignMode() {
    return this.mode === dt.DESIGN;
  }
  isPrintMode() {
    return this.mode === dt.PRINT;
  }
  isGraffitiMode() {
    return this.mode === dt.GRAFFITI;
  }
  isAreaHideDisabled() {
    return this.isDesignMode() || this.isPrintMode() && this.options.modeRule[dt.PRINT].areaHideDisabled;
  }
  getIsPagingMode() {
    return this.options.pageMode === bt.PAGING;
  }
  getOriginalWidth() {
    const { paperDirection: t, width: R, height: e } = this.options;
    return t === _t.VERTICAL ? R : e;
  }
  getOriginalHeight() {
    const { paperDirection: t, width: R, height: e } = this.options;
    return t === _t.VERTICAL ? e : R;
  }
  getWidth() {
    return Math.floor(this.getOriginalWidth() * this.options.scale);
  }
  getHeight() {
    return Math.floor(this.getOriginalHeight() * this.options.scale);
  }
  getMainHeight() {
    return this.getHeight() - this.getMainOuterHeight();
  }
  getMainOuterHeight(t) {
    const R = this.getMargins(), e = this.header.getExtraHeight(t), o = this.footer.getExtraHeight(t);
    return R[0] + R[2] + e + o;
  }
  getCanvasWidth(t = -1) {
    return this.ctxListInfos[t].width;
  }
  getCanvasHeight(t = -1) {
    return this.ctxListInfos[t].height;
  }
  getInnerWidth() {
    const t = this.getWidth(), R = this.getMargins();
    return t - R[1] - R[3];
  }
  getColumnLayout() {
    return this.columnManager.getLayout();
  }
  setColumnConfig(t) {
    this.options.pageMode !== bt.CONTINUITY && this.columnManager.setConfig(t);
  }
  getOriginalInnerWidth() {
    const t = this.getOriginalWidth(), R = this.getOriginalMargins();
    return t - R[1] - R[3];
  }
  getContextInnerWidth() {
    const t = this.position.getPositionContext();
    if (t.isTable) {
      const e = this.getOriginalElementList(), o = this.position.getTableTdByContext(e, t), n = this.getTdPadding();
      return o.width - n[1] - n[3];
    }
    const R = this.getColumnLayout();
    return R && R.count > 1 ? R.width / this.options.scale : this.getOriginalInnerWidth();
  }
  getMargins() {
    return this.getOriginalMargins().map((t) => t * this.options.scale);
  }
  getOriginalMargins() {
    const { margins: t, paperDirection: R } = this.options;
    return R === _t.VERTICAL ? t : [t[1], t[2], t[3], t[0]];
  }
  getPageGap() {
    return this.options.pageGap * this.options.scale;
  }
  getOriginalPageGap() {
    return this.options.pageGap;
  }
  getPageNumberBottom() {
    const {
      pageNumber: { bottom: t },
      scale: R
    } = this.options;
    return t * R;
  }
  getMarginIndicatorSize() {
    return this.options.marginIndicatorSize * this.options.scale;
  }
  getDefaultBasicRowMarginHeight() {
    return this.options.defaultBasicRowMarginHeight * this.options.scale;
  }
  getHighlightMarginHeight() {
    return this.options.highlightMarginHeight * this.options.scale;
  }
  getTdPadding() {
    const {
      table: { tdPadding: t },
      scale: R
    } = this.options;
    return t.map((e) => e * R);
  }
  // public getContainer(): HTMLDivElement {
  //   return this.container
  // }
  getPageNo() {
    return this.pageNo;
  }
  setPageNo(t) {
    this.pageNo = t;
  }
  getPage(t = -1) {
    return this.pageList[~t ? t : this.pageNo];
  }
  getPageList() {
    return this.pageList;
  }
  getPageCount() {
    return this.pageList.length;
  }
  getTableRowList(t) {
    const R = this.position.getPositionContext();
    return this.position.getTableTdByContext(
      t,
      R
    ).rowList;
  }
  getOriginalRowList() {
    return this.rowList;
  }
  getRowList() {
    return this.position.getPositionContext().isTable ? this.getTableRowList(this.getOriginalElementList()) : this.getOriginalRowList();
  }
  getPageRowList() {
    return this.pageRowList;
  }
  getPdf() {
    return this.pdf;
  }
  getOptions() {
    return this.options;
  }
  // Merge new options into the current ones at runtime. Kept as public API
  // (documented) even though the PDF-only fork usually configures via the
  // constructor; call render() afterwards to reflect changes.
  updateOptions(t) {
    const R = zR(t);
    Object.entries(R).forEach(([e, o]) => {
      Reflect.set(this.options, e, o);
    }), this.setColumnConfig(this.options.column);
  }
  getGroup() {
    return this.group;
  }
  getPosition() {
    return this.position;
  }
  getColumnManager() {
    return this.columnManager;
  }
  getLineBreakParticle() {
    return this.lineBreakParticle;
  }
  getTextParticle() {
    return this.textParticle;
  }
  getHeaderElementList() {
    return this.header.getElementList();
  }
  getTableElementList(t) {
    var e;
    const R = this.position.getPositionContext();
    return ((e = this.position.getTableTdByContext(t, R)) == null ? void 0 : e.value) || [];
  }
  getElementList() {
    const t = this.position.getPositionContext(), R = this.getOriginalElementList();
    return t.isTable ? this.getTableElementList(R) : R;
  }
  getMainElementList() {
    return this.position.getPositionContext().isTable ? this.getTableElementList(this.elementList) : this.elementList;
  }
  getOriginalElementList() {
    return this.elementList;
  }
  getOriginalMainElementList() {
    return this.elementList;
  }
  getFooterElementList() {
    return this.footer.getElementList();
  }
  getTd() {
    const t = this.position.getPositionContext();
    return t.isTable ? this.position.getTableTdByContext(
      this.getOriginalElementList(),
      t
    ) : null;
  }
  spliceElementList(t, R, e, ...o) {
    var n;
    if (e > 0) {
      const s = R + e, r = t[s], l = r == null ? void 0 : r.listId;
      if (l && ((n = t[R - 1]) == null ? void 0 : n.listId) !== l) {
        let a = s;
        for (; a < t.length; ) {
          const O = t[a];
          if (O.listId !== l || O.value === q)
            break;
          delete O.listId, delete O.listType, delete O.listStyle, a++;
        }
      }
    }
    if (o != null && o.length)
      for (let s = 0; s < o.length; s++)
        t.splice(R + s, 0, o[s]);
  }
  getImageParticle() {
    return this.imageParticle;
  }
  getTableParticle() {
    return this.tableParticle;
  }
  getHeader() {
    return this.header;
  }
  getFooter() {
    return this.footer;
  }
  getHyperlinkParticle() {
    return this.hyperlinkParticle;
  }
  getDateParticle() {
    return this.dateParticle;
  }
  getListParticle() {
    return this.listParticle;
  }
  getCheckboxParticle() {
    return this.checkboxParticle;
  }
  getRadioParticle() {
    return this.radioParticle;
  }
  // public getControl(): Control {
  //   return this.control
  // }
  getImageObserver() {
    return this.imageObserver;
  }
  getI18n() {
    return this.i18n;
  }
  getGraffiti() {
    return this.graffiti;
  }
  async setValue(t) {
    const { header: R, main: e, footer: o } = mt(t);
    if (!R && !e && !o) return;
    const n = [R, e, o];
    for (let s = 0; s < n.length; s++) {
      const r = n[s];
      r && await Ct(r, {
        editorOptions: this.options,
        isForceCompensation: !0
      });
    }
    n.forEach((s) => {
      s && (s = this.filterAssistElement(s));
    }), this.setEditorData({
      header: R,
      main: e,
      footer: o
    });
  }
  getOriginValue(t = {}) {
    const { pageNo: R } = t;
    let e = this.elementList;
    return Number.isInteger(R) && R >= 0 && R < this.pageRowList.length && (e = this.pageRowList[R].flatMap(
      (n) => n.elementList
    )), {
      header: this.getHeaderElementList(),
      main: e,
      footer: this.getFooterElementList(),
      graffiti: this.graffiti.getValue()
    };
  }
  getValue(t = {}) {
    const R = this.getOriginValue({ pageNo: t.pageNo }), { extraPickAttrs: e } = t;
    return {
      header: gt(R.header, {
        extraPickAttrs: e
      }),
      main: gt(R.main, {
        extraPickAttrs: e,
        isClassifyArea: !0
      }),
      footer: gt(R.footer, {
        extraPickAttrs: e
      }),
      graffiti: R.graffiti
    };
  }
  setEditorData(t) {
    const { header: R, main: e, footer: o } = t;
    R && this.header.setElementList(R), e && (this.elementList = e), o && this.footer.setElementList(o);
  }
  _formatContainer() {
  }
  _createPage(t) {
    const R = this.getWidth(), e = this.getHeight(), o = 1, n = this.getOptions().paperDirection === _t.VERTICAL ? "p" : "l";
    this.ctxListInfos.push({
      width: R,
      height: e,
      background: "#ffffff",
      marginBottom: `${this.getPageGap()}px`,
      index: String(t)
    }), this.pageList.push({
      width: R,
      height: e,
      background: "#ffffff",
      marginBottom: `${this.getPageGap()}px`,
      index: String(t)
    }), this.pdf.addPage([R, e], n).context2d.scale(o, o);
  }
  getElementSize(t) {
    return t.actualSize || t.size || this.options.defaultSize;
  }
  getElementRowMargin(t) {
    const {
      defaultSize: R,
      defaultBasicRowMarginHeight: e,
      defaultRowMargin: o,
      scale: n
    } = this.options, s = t.size || R;
    let r = 1;
    return s < 12 ? r = s / 12 : s > 30 && (r = 1 + (s - 30) / 30), e * r * (t.rowMargin ?? o) * n;
  }
  computeRowList(t) {
    var I, p, g, J, y, v, B, tt, st, Mt, Nt, rt, ot, nt, Jt, Zt;
    const {
      innerWidth: R,
      elementList: e,
      isPagingMode: o = !1,
      isFromTable: n = !1,
      startX: s = 0,
      startY: r = 0,
      pageHeight: l = 0,
      surroundElementList: a = []
    } = t, {
      defaultSize: O,
      scale: M,
      imgCaption: X,
      table: { tdPadding: P, defaultColMinWidth: N, overflow: u },
      defaultTabWidth: h
    } = this.options, L = this.getDefaultBasicRowMarginHeight();
    if (this.controlMinWidthPlaceholderElementListSet.has(e)) {
      for (let k = e.length - 1; k >= 0; k--)
        e[k].isControlMinWidthPlaceholder && e.splice(k, 1);
      this.controlMinWidthPlaceholderElementListSet.delete(e);
    }
    const Y = this.listParticle.computeListStyle(
      this.getCtx2d(),
      e
    ), S = [], W = o && !n ? this.columnManager.getLayout() : null, c = !!W && W.count > 1;
    e.length && S.push({
      width: 0,
      height: 0,
      ascent: 0,
      elementList: [],
      startIndex: 0,
      rowIndex: 0,
      rowFlex: ((I = e == null ? void 0 : e[0]) == null ? void 0 : I.rowFlex) || ((p = e == null ? void 0 : e[1]) == null ? void 0 : p.rowFlex),
      ...c ? { columnIndex: 0 } : {}
    });
    let T = s, H = r, f = 0, D = r;
    o && !n && (D = this.getMargins()[0] + this.getHeader().getExtraHeight(0), H = D);
    const K = /* @__PURE__ */ new Map();
    let Z = 0, U = 0;
    for (let k = 0; k < e.length; k++) {
      const w = S[S.length - 1], Q = e[k], Tt = this.getElementRowMargin(Q), d = {
        width: 0,
        height: 0,
        boundingBoxAscent: 0,
        boundingBoxDescent: 0
      }, eR = w.offsetX || Q.listId && (Y.get(Q.listId) || 0) + (Q.listLevel ? this.listParticle.LIST_INDENT_WIDTH * Q.listLevel * M : 0) || 0, et = (c && W ? W.width : R) - eR, _ = w.elementList.length === 1;
      if (T += _ ? eR : 0, H += _ && w.offsetY || 0, (Q.hide || (g = Q.control) != null && g.hide || (J = Q.area) != null && J.hide) && !this.isDesignMode()) {
        const G = w.elementList[w.elementList.length - 1];
        d.height = (G == null ? void 0 : G.metrics.height) || this.options.defaultSize * M, d.boundingBoxAscent = (G == null ? void 0 : G.metrics.boundingBoxAscent) || 0, d.boundingBoxDescent = (G == null ? void 0 : G.metrics.boundingBoxDescent) || 0;
      } else if (Q.type === V.IMAGE || Q.type === V.LATEX)
        if (Q.imgDisplay === Rt.SURROUND || Q.imgDisplay === Rt.FLOAT_TOP || Q.imgDisplay === Rt.FLOAT_BOTTOM)
          d.width = 0, d.height = 0, d.boundingBoxDescent = 0;
        else {
          const G = Q.width * M, E = Q.height * M;
          if (G > et) {
            const b = E * et / G;
            Q.width = et / M, Q.height = b / M, d.width = et, d.height = b, d.boundingBoxDescent = b;
          } else
            d.width = G, d.height = E, d.boundingBoxDescent = E;
          if ((y = Q.imgCaption) != null && y.value) {
            const b = Q.imgCaption.size || X.size, C = Q.imgCaption.top ?? X.top, lt = (b + C) * M;
            d.boundingBoxAscent += lt;
          }
        }
      else if (Q.type === V.TABLE) {
        const G = P[1] + P[3], E = P[0] + P[2], b = Q.trList, C = E + O + Tt * 2 / M;
        for (let ut = 0; ut < b.length; ut++) {
          const It = b[ut];
          It.height = Math.max(C, It.minHeight || 0), It.minHeight = It.height;
        }
        u || (os(
          Q.colgroup,
          this.getOriginalInnerWidth(),
          N
        ), Q.translateX = 0), this.tableParticle.computeRowColInfo(Q);
        for (let ut = 0; ut < b.length; ut++) {
          const It = b[ut];
          for (let Kt = 0; Kt < It.tdList.length; Kt++) {
            const Pt = It.tdList[Kt], pt = this.computeRowList({
              innerWidth: (Pt.width - G) * M,
              elementList: Pt.value,
              isFromTable: !0,
              isPagingMode: o
            }), NR = pt.reduce((Et, FR) => Et + FR.height, 0);
            Pt.rowList = pt;
            const xt = NR / M + E;
            if (Pt.height < xt) {
              const Et = xt - Pt.height, FR = b[ut + Pt.rowspan - 1];
              FR.height += Et, FR.tdList.forEach((oR) => {
                oR.height += Et, oR.realHeight ? oR.realHeight += Et : oR.realHeight = oR.height;
              });
            }
            let iR = 0, sR = 0, VR = 0;
            for (; VR < Pt.rowspan; ) {
              const Et = b[VR + ut] || b[ut];
              iR += Et.minHeight, sR += Et.height, VR++;
            }
            Pt.realMinHeight = iR, Pt.realHeight = sR, Pt.mainHeight = xt;
          }
        }
        const lt = this.tableParticle.getTrListGroupByCol(b);
        for (let ut = 0; ut < lt.length; ut++) {
          const It = lt[ut];
          let Kt = -1;
          for (let Pt = 0; Pt < It.tdList.length; Pt++) {
            const pt = It.tdList[Pt], NR = pt.realHeight, xt = pt.mainHeight, iR = pt.realMinHeight, sR = xt < iR ? NR - iR : NR - xt;
            (!~Kt || sR < Kt) && (Kt = sR);
          }
          if (Kt > 0) {
            const Pt = b[ut];
            Pt.height -= Kt, Pt.tdList.forEach((pt) => {
              pt.height -= Kt, pt.realHeight -= Kt;
            });
          }
        }
        this.tableParticle.computeRowColInfo(Q);
        const Ut = this.tableParticle.getTableHeight(Q), wR = this.tableParticle.getTableWidth(Q);
        Q.width = wR, Q.height = Ut;
        const Xe = wR * M, yR = Ut * M;
        d.width = Xe, d.height = yR, d.boundingBoxDescent = yR, d.boundingBoxAscent = -Tt, ((v = e[k + 1]) == null ? void 0 : v.type) === V.TABLE && (d.boundingBoxAscent -= Tt);
      } else if (Q.type === V.SEPARATOR) {
        const {
          separator: { lineWidth: G }
        } = this.options, E = Q.lineWidth || G;
        Q.width = et / M, d.width = et, d.height = E * M, d.boundingBoxAscent = -Tt, d.boundingBoxDescent = -Tt + d.height;
      } else if (Q.type === V.PAGE_BREAK)
        Q.width = et / M, d.width = et, d.height = O;
      else if (Q.type === V.RADIO || Q.controlComponent === j.RADIO) {
        const { width: G, height: E, gap: b } = this.options.radio, C = G + b * 2;
        Q.width = C, d.width = C * M, d.height = E * M;
      } else if (Q.type === V.CHECKBOX || Q.controlComponent === j.CHECKBOX) {
        const { width: G, height: E, gap: b } = this.options.checkbox, C = G + b * 2;
        Q.width = C, d.width = C * M, d.height = E * M;
      } else if (Q.type === V.TAB)
        d.width = h * M, d.height = O * M, d.boundingBoxDescent = 0, d.boundingBoxAscent = this.textParticle.getBasisWordBoundingBoxAscent(
          this.getCtx2d(),
          this.getCtx2d().font
        );
      else if (Q.isControlMinWidthPlaceholder) {
        d.width = (Q.width || 0) * M, d.height = O * M, this.getCtx2d().font = this.getFont(Q);
        const G = this.textParticle.measureBasisWord(
          this.getCtx2d(),
          Q.font
        );
        d.boundingBoxAscent = G.actualBoundingBoxAscent * M, d.boundingBoxDescent = G.actualBoundingBoxDescent * M;
      } else if (Q.type === V.BLOCK) {
        if (!Q.width)
          d.width = et;
        else {
          const G = Q.width * M;
          d.width = Math.min(G, et);
        }
        d.height = Q.height * M, d.boundingBoxDescent = d.height, d.boundingBoxAscent = 0;
      } else if (Q.type === V.LABEL) {
        const {
          defaultSize: G,
          label: { defaultPadding: E }
        } = this.options;
        this.getCtx2d().font = this.getFont(Q);
        const b = this.textParticle.measureText(
          this.getCtx2d(),
          Q
        );
        d.width = (b.width + E[1] + E[3]) * M, d.height = (Q.size || G) * M, d.boundingBoxDescent = 0, d.boundingBoxAscent = (E[0] + b.actualBoundingBoxAscent) * M;
      } else {
        const G = Q.size || O;
        (Q.type === V.SUPERSCRIPT || Q.type === V.SUBSCRIPT) && (Q.actualSize = Math.ceil(G * 0.6)), d.height = (Q.actualSize || G) * M, this.getCtx2d().font = this.getFont(Q);
        const E = this.textParticle.measureText(
          this.getCtx2d(),
          Q
        );
        d.width = E.width * M, Q.letterSpacing && (d.width += Q.letterSpacing * M), d.boundingBoxAscent = (Q.value === q ? this.textParticle.getBasisWordBoundingBoxAscent(
          this.getCtx2d(),
          Q.font
        ) : E.actualBoundingBoxAscent) * M, d.boundingBoxDescent = E.actualBoundingBoxDescent * M, Q.type === V.SUPERSCRIPT ? d.boundingBoxAscent += d.height / 2 : Q.type === V.SUBSCRIPT && (d.boundingBoxDescent += d.height / 2);
      }
      const $ = !Q.hide && (Q.imgDisplay !== Rt.INLINE && Q.type === V.IMAGE || Q.type === V.LATEX) ? d.height + Tt : d.boundingBoxAscent + Tt, A = Tt + d.boundingBoxAscent + d.boundingBoxDescent + Tt, z = Object.assign(Q, {
        metrics: d,
        left: 0,
        style: this.getFont(Q, M)
      });
      if ((B = z.control) != null && B.minWidth && !z.isControlMinWidthPlaceholder && (z.controlComponent && (Z += d.width), z.controlComponent === j.POSTFIX)) {
        const E = z.control.minWidth * M - Z, b = Math.max(
          et - w.width - z.metrics.width,
          0
        );
        if (E > 0) {
          const Ut = Math.min(b, E) * M;
          z.left = Ut, w.width += Ut;
        }
        let C = E - b;
        const lt = [];
        for (; C > 0; ) {
          const Ut = Math.min(C, et);
          lt.push({
            ...z,
            value: "",
            width: Ut / M,
            left: 0,
            isControlMinWidthPlaceholder: !0
          }), C -= Ut;
        }
        lt.length && (e.splice(k + 1, 0, ...lt), this.controlMinWidthPlaceholderElementListSet.add(e)), Z = 0;
      }
      const m = e[k - 1];
      let at = e[k + 1], Ot = w.width + d.width;
      if (this.options.wordBreak === GR.BREAK_WORD && (!(m != null && m.type) || (m == null ? void 0 : m.type) === V.TEXT) && (!Q.type || Q.type === V.TEXT)) {
        const G = `${(m == null ? void 0 : m.value) || ""}${Q.value}`;
        if (this.WORD_LIKE_REG.test(G)) {
          const { width: b, endElement: C } = this.textParticle.measureWord(
            this.getCtx2d(),
            e,
            k
          ), lt = b * M;
          C && lt <= et && (Ot += lt, at = C);
        }
        const E = this.textParticle.measurePunctuationWidth(
          this.getCtx2d(),
          at
        );
        Ot += E * M;
      }
      Q.listId && Q.value === q && !Q.listWrap && (K.has(Q.listId) ? K.set(
        Q.listId,
        (K.get(Q.listId) ?? 0) + 1
      ) : K.set(Q.listId, 0));
      const Ft = this.position.setSurroundPosition({
        pageNo: f,
        rowElement: z,
        row: w,
        rowElementRect: {
          x: T,
          y: H,
          height: A,
          width: d.width
        },
        availableWidth: et,
        surroundElementList: a
      });
      T = Ft.x, Ot += Ft.rowIncreaseWidth, T += d.width;
      const Wt = Q.type === V.SEPARATOR || Q.type === V.TABLE || (m == null ? void 0 : m.type) === V.TABLE || (m == null ? void 0 : m.type) === V.BLOCK || Q.type === V.BLOCK || (m == null ? void 0 : m.imgDisplay) === Rt.INLINE || Q.imgDisplay === Rt.INLINE || (m == null ? void 0 : m.listId) !== Q.listId || (m == null ? void 0 : m.areaId) !== Q.areaId && !((tt = Q.area) != null && tt.hide) || k !== 0 && Q.value === q && !((st = Q.area) != null && st.hide), St = Ot > et, Xt = Wt || St;
      if (Xt) {
        const G = {
          width: d.width,
          height: A,
          startIndex: k,
          elementList: [z],
          ascent: $,
          rowIndex: w.rowIndex + 1,
          rowFlex: ((Mt = e[k]) == null ? void 0 : Mt.rowFlex) || ((Nt = e[k + 1]) == null ? void 0 : Nt.rowFlex),
          isPageBreak: Q.type === V.PAGE_BREAK,
          ...c ? { columnIndex: U } : {}
        };
        if (z.controlComponent !== j.PREFIX && ((rt = z.control) == null ? void 0 : rt.indentation) === Re.VALUE_START) {
          const E = w.elementList.findIndex(
            (b) => b.controlId === z.controlId && b.controlComponent !== j.PREFIX
          );
          if (~E) {
            const C = this.position.computeRowPosition({
              row: w,
              innerWidth: this.getInnerWidth()
            })[E];
            C && (G.offsetX = C.coordinate.leftTop[0]);
          }
        }
        Q.listId && (G.isList = !0, G.offsetX = (Y.get(Q.listId) || 0) + (Q.listLevel ? this.listParticle.LIST_INDENT_WIDTH * Q.listLevel * M : 0), G.listIndex = K.get(Q.listId) ?? 0), G.offsetY = !n && ((ot = Q.area) != null && ot.top) && Q.areaId !== ((nt = e[k - 1]) == null ? void 0 : nt.areaId) ? Q.area.top * M : 0, S.push(G);
      } else
        w.width += d.width, k === 0 && (re(e[1]) || (Jt = e[1]) != null && Jt.areaId) ? (w.height = L, w.ascent = L) : w.height < A && (w.height = A, w.ascent = $), w.elementList.push(z);
      if (Xt || k === e.length - 1) {
        if (!this.isDesignMode() && w.height > 0) {
          const G = w.elementList.filter(
            (b) => b.value !== q
          );
          G.length > 0 && G.every(
            (b) => {
              var C, lt;
              return b.hide || ((C = b.control) == null ? void 0 : C.hide) || ((lt = b.area) == null ? void 0 : lt.hide);
            }
          ) && (w.height = 0, w.ascent = 0);
        }
        if (w.isWidthNotEnough = St && !Wt, !w.isSurround && ((m == null ? void 0 : m.rowFlex) === Gt.JUSTIFY || (m == null ? void 0 : m.rowFlex) === Gt.ALIGNMENT && w.isWidthNotEnough)) {
          const G = ((Zt = w.elementList[0]) == null ? void 0 : Zt.value) === q ? w.elementList.slice(1) : w.elementList, E = (et - w.width) / (G.length - 1);
          for (let b = 0; b < G.length - 1; b++) {
            const C = G[b];
            C.metrics.width += E;
          }
          w.width = et;
        }
      }
      if (Xt) {
        const G = W && W.offsets[U] || 0;
        if (T = s + G, H += w.height, o && !n && l) {
          const C = this.getMainOuterHeight(f), lt = H - D + C + A > l, Ut = Q.type === V.PAGE_BREAK;
          (lt || Ut) && (!Ut && c && W && U < W.count - 1 ? (U += 1, H = D, T = s + (W.offsets[U] || 0)) : ($e(a, f), f += 1, U = 0, D = this.getMargins()[0] + this.getHeader().getExtraHeight(f), H = D, T = s + (W && W.offsets[0] || 0)));
        }
        const E = S[S.length - 1];
        E && c && E.columnIndex !== void 0 && (E.columnIndex = U), z.left = 0, T = this.position.setSurroundPosition({
          pageNo: f,
          rowElement: z,
          row: E,
          rowElementRect: {
            x: T,
            y: H,
            height: A,
            width: d.width
          },
          availableWidth: et,
          surroundElementList: a
        }).x, T += d.width;
      }
    }
    return S;
  }
  _computePageList() {
    var s;
    const t = [[]], {
      pageMode: R,
      pageNumber: { maxPageNo: e }
    } = this.options, o = this.getHeight();
    let n = 0;
    if (R === bt.CONTINUITY) {
      let l = this.getMainOuterHeight(0);
      t[0] = this.rowList, l += this.rowList.reduce(
        (X, P) => X + P.height + (P.offsetY || 0),
        0
      );
      const a = this.getPagePixelRatio(), O = this.pageList[0], M = Number(O.style.height.replace("px", ""));
      if (l > M)
        O.style.height = `${l}px`, O.height = l * a;
      else {
        const X = l < o ? o : l;
        O.style.height = `${X}px`, O.height = X * a;
      }
    } else {
      let r = this.getMainOuterHeight(0), l;
      for (let a = 0; a < this.rowList.length; a++) {
        const O = this.rowList[a], M = O.offsetY || 0;
        if (l !== void 0 && O.columnIndex !== void 0 && O.columnIndex > 0 && O.columnIndex !== l)
          r = this.getMainOuterHeight(n) + O.height + M, t[n].push(O);
        else if (O.height + M + r > o || (s = this.rowList[a - 1]) != null && s.isPageBreak) {
          if (Number.isInteger(e) && n >= e) {
            const P = O.tableFragment, N = this.elementList[O.startIndex];
            P && (N == null ? void 0 : N.type) === V.TABLE && this.tablePaging.truncateTableByFragment(
              N,
              P,
              this.elementList
            ) ? this.elementList = this.elementList.slice(0, O.startIndex + 1) : this.elementList = this.elementList.slice(0, O.startIndex);
            break;
          }
          n++, r = this.getMainOuterHeight(n) + O.height + M, t.push([O]);
        } else
          r += O.height + M, t[n].push(O);
        l = O.columnIndex;
      }
    }
    return t;
  }
  _drawHighlight(t, R) {
    const {
      control: { activeBackgroundColor: e }
    } = this.options, {
      rowList: o,
      positionList: n
      /*, elementList */
    } = R, s = this.getDefaultBasicRowMarginHeight(), r = this.getHighlightMarginHeight();
    for (let l = 0; l < o.length; l++) {
      const a = o[l];
      for (let O = 0; O < a.elementList.length; O++) {
        const M = a.elementList[O];
        if (M.highlight) {
          const {
            coordinate: {
              leftTop: [X, P]
            }
          } = a.fragmentPosition || n[a.startIndex + O], N = M.left || 0;
          this.highlight.recordFillInfo(
            t,
            X - N,
            P + s - r,
            // 先减去行margin,再加上高亮margin
            M.metrics.width + N,
            a.height - 2 * s + 2 * r,
            M.highlight || e
          ), this.highlight.render(t);
        }
      }
    }
  }
  drawRow(t, R) {
    var P, N, u, h, L, Y;
    this._drawHighlight(t, R);
    const {
      scale: e,
      table: { tdPadding: o },
      group: n,
      lineBreak: s
    } = this.options, {
      rowList: r,
      pageNo: l,
      // elementList,
      positionList: a,
      // startIndex,
      zone: O,
      isDrawLineBreak: M = !s.disabled
    } = R, X = this.isPrintMode();
    for (let S = 0; S < r.length; S++) {
      const W = r[S];
      for (let c = 0; c < W.elementList.length; c++) {
        const T = W.elementList[c], H = T.metrics, {
          ascent: f,
          coordinate: {
            leftTop: [D, K]
          }
        } = W.fragmentPosition || a[W.startIndex + c], Z = W.elementList[c - 1];
        if ((T.hide || (P = T.control) != null && P.hide || (N = T.area) != null && N.hide) && !this.isDesignMode())
          this.textParticle.complete();
        else if (T.type === V.IMAGE)
          this.textParticle.complete(), T.imgDisplay !== Rt.SURROUND && T.imgDisplay !== Rt.FLOAT_TOP && T.imgDisplay !== Rt.FLOAT_BOTTOM && this.imageParticle.render(this.getCtx2d(), T, D, K + f);
        else if (T.type === V.LATEX)
          this.textParticle.complete(), this.laTexParticle.render(this.getCtx2d(), T, D, K + f);
        else if (T.type === V.TABLE)
          this.tableParticle.render(
            this.getCtx2d(),
            T,
            D,
            K,
            W.tableFragment
          );
        else if (T.type === V.HYPERLINK)
          this.textParticle.complete(), this.hyperlinkParticle.render(
            this.getCtx2d(),
            T,
            D,
            K + f
          );
        else if (T.type === V.LABEL)
          this.textParticle.complete(), this.labelParticle.render(this.getCtx2d(), T, D, K + f);
        else if (T.type === V.DATE) {
          const U = W.elementList[c + 1];
          (!Z || Z.dateId !== T.dateId) && this.textParticle.complete(), this.textParticle.record(this.getCtx2d(), T, D, K + f), (!U || U.dateId !== T.dateId) && this.textParticle.complete();
        } else T.type === V.SUPERSCRIPT ? (this.textParticle.complete(), this.superscriptParticle.render(
          this.getCtx2d(),
          T,
          D,
          K + f
        )) : T.type === V.SUBSCRIPT ? (this.underline.render(this.getCtx2d()), this.textParticle.complete(), this.subscriptParticle.render(
          this.getCtx2d(),
          T,
          D,
          K + f
        )) : T.type === V.SEPARATOR ? this.separatorParticle.render(this.getCtx2d(), T, D, K) : T.type === V.PAGE_BREAK || (T.type === V.CHECKBOX || T.controlComponent === j.CHECKBOX ? (this.textParticle.complete(), this.checkboxParticle.render({
          ctx2d: this.getCtx2d(),
          x: D,
          y: K + f,
          index: c,
          row: W
        })) : T.type === V.RADIO || T.controlComponent === j.RADIO ? (this.textParticle.complete(), this.radioParticle.render({
          ctx2d: this.getCtx2d(),
          x: D,
          y: K + f,
          index: c,
          row: W
        })) : T.type === V.TAB ? this.textParticle.complete() : T.rowFlex === Gt.ALIGNMENT || T.rowFlex === Gt.JUSTIFY ? (this.textParticle.record(this.getCtx2d(), T, D, K + f), this.textParticle.complete()) : T.type === V.BLOCK ? (this.textParticle.complete(), this.blockParticle.render(t, l, T, D, K + f)) : (T.left && this.textParticle.complete(), this.textParticle.record(this.getCtx2d(), T, D, K + f), (T.width || T.letterSpacing || Ye.test(T.value)) && this.textParticle.complete()));
        if (M && !X && this.mode !== dt.CLEAN && !W.isWidthNotEnough && c === W.elementList.length - 1 && this.lineBreakParticle.render(
          this.getCtx2d(),
          T,
          D,
          K + W.height / 2
        ), T.underline || (u = T.control) != null && u.underline) {
          (Z == null ? void 0 : Z.type) === V.SUBSCRIPT && T.type !== V.SUBSCRIPT && this.underline.render(this.getCtx2d());
          const U = this.getElementRowMargin(T), I = T.left || 0;
          let p = 0;
          T.type === V.SUBSCRIPT && (p = this.subscriptParticle.getOffsetY(T));
          const g = T.controlComponent === j.PLACEHOLDER ? void 0 : T.color;
          this.underline.recordFillInfo(
            this.getCtx2d(),
            D - I,
            K + W.height - U + p,
            H.width + I,
            0,
            g,
            (h = T.textDecoration) == null ? void 0 : h.style
          );
        } else (Z != null && Z.underline || (L = Z == null ? void 0 : Z.control) != null && L.underline) && this.underline.render(this.getCtx2d());
        if (T.strikeout) {
          if (!T.type || pR.includes(T.type)) {
            Z && (Z.type === V.SUBSCRIPT && T.type !== V.SUBSCRIPT || Z.type === V.SUPERSCRIPT && T.type !== V.SUPERSCRIPT || this.getElementSize(Z) !== this.getElementSize(T)) && this.strikeout.render(this.getCtx2d());
            const U = this.textParticle.measureBasisWord(
              this.getCtx2d(),
              this.getFont(T)
            );
            let I = K + f + U.actualBoundingBoxDescent * e - H.height / 2;
            T.type === V.SUBSCRIPT ? I += this.subscriptParticle.getOffsetY(T) : T.type === V.SUPERSCRIPT && (I += this.superscriptParticle.getOffsetY(T)), this.strikeout.recordFillInfo(
              this.getCtx2d(),
              D,
              I,
              H.width
            );
          }
        } else Z != null && Z.strikeout && this.strikeout.render(this.getCtx2d());
        if (!n.disabled && T.groupIds && this.group.recordFillInfo(T, D, K, H.width, W.height), T.type === V.TABLE) {
          const U = o[1] + o[3], I = W.tableFragment;
          if ((Y = W.repeatTdPositionList) != null && Y.length)
            for (const {
              td: g,
              positionList: J
            } of W.repeatTdPositionList)
              this.drawRow(t, {
                elementList: g.value,
                positionList: J,
                rowList: g.rowList,
                pageNo: l,
                startIndex: 0,
                innerWidth: (g.width - U) * e,
                zone: O,
                isDrawLineBreak: M
              });
          const p = I ? this.tableParticle.getFragmentTdList(T, I) : T.trList.flatMap((g) => g.tdList);
          for (const g of p) {
            let J = g.rowList, y = 0;
            if (I) {
              const [v, B] = this.tableParticle.getTdWindowInFragment(g, T, I);
              if (B <= v) continue;
              if (v > 0 || B < g.height) {
                const tt = this.tableParticle.getTdVisibleRowListByWindow(
                  g,
                  v,
                  B
                );
                J = tt.rowList, y = tt.startIndex;
              }
            }
            this.drawRow(t, {
              elementList: g.value,
              positionList: g.positionList,
              rowList: J,
              pageNo: l,
              startIndex: y,
              innerWidth: (g.width - U) * e,
              zone: O,
              isDrawLineBreak: M
            });
          }
        }
      }
      W.isList && this.listParticle.drawListStyle(
        t,
        W,
        a[W.startIndex]
      ), this.textParticle.complete(), this.underline.render(this.getCtx2d()), this.strikeout.render(this.getCtx2d()), this.group.render(this.getCtx2d());
    }
  }
  _drawFloat(t, R) {
    const { scale: e } = this.options, o = this.position.getFloatPositionList(), { imgDisplays: n, pageNo: s } = R;
    for (let r = 0; r < o.length; r++) {
      const l = o[r], a = l.element;
      if ((s === l.pageNo || l.zone === Qt.HEADER || l.zone == Qt.FOOTER) && a.imgDisplay && n.includes(a.imgDisplay) && a.type === V.IMAGE) {
        const O = a.imgFloatPosition;
        this.imageParticle.render(
          t,
          a,
          O.x * e,
          O.y * e
        );
      }
    }
  }
  _clearPage(t) {
    const R = this.getCtx2d(), e = this.getPageList()[t];
    e && R.clearRect(
      0,
      0,
      Math.max(e.width, this.getWidth()),
      Math.max(e.height, this.getHeight())
    ), this.blockParticle.clear();
  }
  _drawPage(t) {
    var L, Y, S;
    const { elementList: R, positionList: e, rowList: o, pageNo: n } = t, {
      // inactiveAlpha,
      pageMode: s,
      header: r,
      footer: l,
      pageNumber: a,
      lineNumber: O,
      pageBorder: M
    } = this.options, X = this.mode === dt.PRINT, P = s === bt.CONTINUITY, N = this.getInnerWidth(), u = this.getCtx2d();
    this.getPdf().setPage(n + 1), this._clearPage(n), (!X || !((L = this.options.modeRule[dt.PRINT]) != null && L.backgroundDisabled)) && this.background.render(u, n), X || this.area.render(u, n), !P && this.options.watermark.data && this.options.watermark.layer === TR.BOTTOM && this.waterMark.render(u, n), X || this.margin.render(u, n), this.columnManager.drawSeparator(u, n), this._drawFloat(u, {
      pageNo: n,
      imgDisplays: [Rt.FLOAT_BOTTOM]
    });
    const h = (Y = o[0]) == null ? void 0 : Y.startIndex;
    this.drawRow(u, {
      elementList: R,
      positionList: e,
      rowList: o,
      pageNo: n,
      startIndex: h,
      innerWidth: N,
      zone: Qt.MAIN
    }), this.getOptions().pageMode === bt.PAGING && (r.disabled || this.header.render(u, n), a.disabled || this.pageNumber.render(u, n), l.disabled || this.footer.render(u, n)), this._drawFloat(u, {
      pageNo: n,
      imgDisplays: [Rt.FLOAT_TOP, Rt.SURROUND]
    }), this.elementList.length <= 1 && !((S = this.elementList[0]) != null && S.listId) && this.placeholder.render(u), O.disabled || this.lineNumber.render(u, n), M.disabled || this.pageBorder.render(u), this.badge.render(u, this.elementList[0], n), this.isGraffitiMode() && this.graffiti.render(u, n), !P && this.options.watermark.data && this.options.watermark.layer === TR.TOP && this.waterMark.render(u, n);
  }
  _immediateRender() {
    const t = this.getPosition().getOriginalMainPositionList(), R = this.getOriginalMainElementList();
    for (let e = 0; e < this.pageRowList.length; e++)
      this._drawPage({
        elementList: R,
        positionList: t,
        rowList: this.pageRowList[e],
        pageNo: e
      });
  }
  _syncPageCount() {
    const t = this.pageRowList.length;
    for (let e = 0; e < t; e++)
      this.pageList[e] || this._createPage(e);
    this.pageList.length > t && this.pageList.splice(t).forEach((e) => {
      e.remove && e.remove();
    });
    const R = this.getPdf().getNumberOfPages();
    if (R > t)
      for (let e = R; e > t; e--)
        this.getPdf().deletePage(e);
    else if (R < t)
      for (let e = R; e < t; e++)
        this.getPdf().addPage();
  }
  render(t) {
    this._resetPdf();
    const { header: R, footer: e } = this.options, { isCompute: o = !0 } = t || {}, n = this.getInnerWidth(), s = this.getOptions().pageMode === bt.PAGING;
    if (o) {
      this.position.setFloatPositionList([]), s && (this.columnManager.compute(), R.disabled || this.header.compute(), e.disabled || this.footer.compute());
      const r = this.getMargins(), l = this.getHeight(), a = this.header.getExtraHeight(), O = r[3], M = r[0] + a, X = le(this.elementList);
      this.rowList = this.computeRowList({
        startX: O,
        startY: M,
        pageHeight: l,
        isPagingMode: s,
        innerWidth: n,
        surroundElementList: X,
        elementList: this.elementList
      }), s && (this.rowList = this.tablePaging.splitTableRowAcrossPages(this.rowList)), this.pageRowList = this._computePageList(), this.position.computePositionList(), this.area.compute(), this.isGraffitiMode() && this.graffiti.compute();
    }
    this._syncPageCount(), this._immediateRender();
  }
  // Recreates the jsPDF instance with each render to prevent internal state accumulation
  // between exports (e.g., the putImage bug in jsPDF that mutates the global filter array
  // via splice, causing the 2nd save onwards to exit without
  // FlatEncode and ~3x larger). Fonts loaded via downloadFont are
  // reapplied from fontCache in the new instance.
  _resetPdf() {
    this.pdf = new Fe({
      orientation: "p",
      unit: "px",
      format: [this.getWidth(), this.getHeight()],
      hotfixes: ["px_scaling"],
      compress: !0
    }), this.pdf.setDocumentProperties({
      author: "canvas-editor"
    }), this.fontCache.forEach((t) => this._applyFont(this.pdf, t)), this.pageList = [], this.ctxListInfos = [];
  }
  destroy() {
  }
  clearSideEffect() {
    this.getHyperlinkParticle().clearHyperlinkPopup(), this.getDateParticle().clearDatePicker();
  }
};
// Declarative list of the fonts shipped in dist/font/ and also hosted at
// cdn.jsdelivr.net under the same names. To add a font: drop the TTF in
// public/font/, add a row here, no other code changes needed.
F($t, "DEFAULT_FONTS", [
  { fileName: "msyh.ttf", id: "microsoft yahei", type: "normal" },
  // Bold msyh shares the 'msyh.ttf' VFS name with the normal weight — that's
  // the existing behavior pre-0.4.0 (see git history). jsPDF keys fonts by
  // (id, type), so this works, but it means addFileToVFS overwrites once.
  { fileName: "msyh-bold.ttf", id: "microsoft yahei", type: "bold" },
  { fileName: "Arial.ttf", id: "arial", type: "normal" },
  { fileName: "Arial_Bold.ttf", id: "arial", type: "bold" },
  { fileName: "Arial_Italic.ttf", id: "arial", type: "italic" },
  { fileName: "Arial_Bold_Italic.ttf", id: "arial", type: "bolditalic" },
  { fileName: "calibri-regular.ttf", id: "calibri", type: "normal" },
  { fileName: "calibri-bold.ttf", id: "calibri", type: "bold" },
  { fileName: "calibri-italic.ttf", id: "calibri", type: "italic" },
  { fileName: "calibri-bold-italic.ttf", id: "calibri", type: "bolditalic" },
  { fileName: "Cambria.ttf", id: "cambria", type: "normal" },
  { fileName: "cambriab.ttf", id: "cambria", type: "bold" },
  { fileName: "cambriai.ttf", id: "cambria", type: "italic" },
  { fileName: "cambriaz.ttf", id: "cambria", type: "bolditalic" },
  { fileName: "Verdana.ttf", id: "verdana", type: "normal" },
  { fileName: "Verdana_Bold.ttf", id: "verdana", type: "bold" },
  { fileName: "Verdana_Italic.ttf", id: "verdana", type: "italic" },
  { fileName: "Verdana_Bold_Italic.ttf", id: "verdana", type: "bolditalic" },
  { fileName: "Inkfree.ttf", id: "ink free", type: "normal" },
  { fileName: "segoe-ui.ttf", id: "segoe ui", type: "normal" },
  { fileName: "segoe-ui-bold.ttf", id: "segoe ui", type: "bold" },
  { fileName: "segoeuii.ttf", id: "segoe ui", type: "italic" }
]), // Same version-pinned CDN base used pre-0.4.0. Pinning to 0.2.7 means the
// fonts hosted there never change under us — bumping the package version
// doesn't move the font URLs.
F($t, "CDN_FONT_BASE", "https://cdn.jsdelivr.net/npm/canvas-editor-pdf@0.2.7/dist/font");
let $R = $t;
export {
  $R as DrawPdf,
  Os as svgString2Image
};
//# sourceMappingURL=canvas-editor-pdf.es.js.map