diff options
author | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-04-05 15:23:42 -0500 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-04-05 16:26:27 -0500 |
commit | a654a92578726f6512acb4149bbd3a92ee89697a (patch) | |
tree | 30b988ba25462c4ac84b3f026c868c48786210b5 /third-party/pdfjs | |
parent | eb1aa52ff40fe274df2ae87a888de09d97c3f382 (diff) | |
download | epiphany-a654a92578726f6512acb4149bbd3a92ee89697a.tar.gz |
Update to PDF.js v2.7.570mcatanzaro/pdfjs-2.7
This does not actually work because all icons are blocked by CORS.
Diffstat (limited to 'third-party/pdfjs')
113 files changed, 21592 insertions, 11391 deletions
diff --git a/third-party/pdfjs/README.epiphany.md b/third-party/pdfjs/README.epiphany.md index 81070302a..5040b54b8 100644 --- a/third-party/pdfjs/README.epiphany.md +++ b/third-party/pdfjs/README.epiphany.md @@ -3,10 +3,12 @@ This directory contains an official pdf.js release version, distributed at: https://github.com/mozilla/pdf.js ## Update process -Grab a new official release (*-dist.zip) distributed at github and extract everything except viewer.[html/js/css] and map files into this directory. -Then recreate the resource xml file with `python ./pdfjs_generate_resource.py` - -The additional files within this directory are modified for Epiphany and shouldn't be changed automatically. +1. Delete existing files except epiphany-pdfjs-changes.patch, pdfjs_generate_resource.py, and README.epiphany.md. +2. Grab a new official release (*-dist.zip) distributed at github and extract everything into this directory. +3. Delete precompiled .map files (viewer.js.map, pdf.js.map, pdf.worker.js.map, pdf.sandbox.js.map). +4. Manually merge changes from epiphany-pdfjs-changes.patch into web/viewer.[html/js/css]. +5. Recreate epiphany-pdfjs-changes.patch. +6. Recreate the resource xml file with `python ./pdfjs_generate_resource.py` ## Modifications to viewer.html 1. In order to circumvent CORS the pdf is downloaded and then embedded into the viewer.html file. Therefore the head has an diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js index 8d59e6dd9..e2c2e2be1 100644 --- a/third-party/pdfjs/build/pdf.js +++ b/third-party/pdfjs/build/pdf.js @@ -30,294 +30,209 @@ else root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); })(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __w_pdfjs_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __w_pdfjs_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __w_pdfjs_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __w_pdfjs_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ /* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -Object.defineProperty(exports, "addLinkAttributes", { +})); +Object.defineProperty(exports, "addLinkAttributes", ({ enumerable: true, get: function () { return _display_utils.addLinkAttributes; } -}); -Object.defineProperty(exports, "getFilenameFromUrl", { +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ enumerable: true, get: function () { return _display_utils.getFilenameFromUrl; } -}); -Object.defineProperty(exports, "LinkTarget", { +})); +Object.defineProperty(exports, "LinkTarget", ({ enumerable: true, get: function () { return _display_utils.LinkTarget; } -}); -Object.defineProperty(exports, "loadScript", { +})); +Object.defineProperty(exports, "loadScript", ({ enumerable: true, get: function () { return _display_utils.loadScript; } -}); -Object.defineProperty(exports, "PDFDateString", { +})); +Object.defineProperty(exports, "PDFDateString", ({ enumerable: true, get: function () { return _display_utils.PDFDateString; } -}); -Object.defineProperty(exports, "RenderingCancelledException", { +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ enumerable: true, get: function () { return _display_utils.RenderingCancelledException; } -}); -Object.defineProperty(exports, "build", { +})); +Object.defineProperty(exports, "build", ({ enumerable: true, get: function () { return _api.build; } -}); -Object.defineProperty(exports, "getDocument", { +})); +Object.defineProperty(exports, "getDocument", ({ enumerable: true, get: function () { return _api.getDocument; } -}); -Object.defineProperty(exports, "LoopbackPort", { +})); +Object.defineProperty(exports, "LoopbackPort", ({ enumerable: true, get: function () { return _api.LoopbackPort; } -}); -Object.defineProperty(exports, "PDFDataRangeTransport", { +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ enumerable: true, get: function () { return _api.PDFDataRangeTransport; } -}); -Object.defineProperty(exports, "PDFWorker", { +})); +Object.defineProperty(exports, "PDFWorker", ({ enumerable: true, get: function () { return _api.PDFWorker; } -}); -Object.defineProperty(exports, "version", { +})); +Object.defineProperty(exports, "version", ({ enumerable: true, get: function () { return _api.version; } -}); -Object.defineProperty(exports, "CMapCompressionType", { +})); +Object.defineProperty(exports, "CMapCompressionType", ({ enumerable: true, get: function () { return _util.CMapCompressionType; } -}); -Object.defineProperty(exports, "createObjectURL", { +})); +Object.defineProperty(exports, "createObjectURL", ({ enumerable: true, get: function () { return _util.createObjectURL; } -}); -Object.defineProperty(exports, "createPromiseCapability", { +})); +Object.defineProperty(exports, "createPromiseCapability", ({ enumerable: true, get: function () { return _util.createPromiseCapability; } -}); -Object.defineProperty(exports, "createValidAbsoluteUrl", { +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ enumerable: true, get: function () { return _util.createValidAbsoluteUrl; } -}); -Object.defineProperty(exports, "InvalidPDFException", { +})); +Object.defineProperty(exports, "InvalidPDFException", ({ enumerable: true, get: function () { return _util.InvalidPDFException; } -}); -Object.defineProperty(exports, "MissingPDFException", { +})); +Object.defineProperty(exports, "MissingPDFException", ({ enumerable: true, get: function () { return _util.MissingPDFException; } -}); -Object.defineProperty(exports, "OPS", { +})); +Object.defineProperty(exports, "OPS", ({ enumerable: true, get: function () { return _util.OPS; } -}); -Object.defineProperty(exports, "PasswordResponses", { +})); +Object.defineProperty(exports, "PasswordResponses", ({ enumerable: true, get: function () { return _util.PasswordResponses; } -}); -Object.defineProperty(exports, "PermissionFlag", { +})); +Object.defineProperty(exports, "PermissionFlag", ({ enumerable: true, get: function () { return _util.PermissionFlag; } -}); -Object.defineProperty(exports, "removeNullCharacters", { +})); +Object.defineProperty(exports, "removeNullCharacters", ({ enumerable: true, get: function () { return _util.removeNullCharacters; } -}); -Object.defineProperty(exports, "shadow", { +})); +Object.defineProperty(exports, "shadow", ({ enumerable: true, get: function () { return _util.shadow; } -}); -Object.defineProperty(exports, "UnexpectedResponseException", { +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ enumerable: true, get: function () { return _util.UnexpectedResponseException; } -}); -Object.defineProperty(exports, "UNSUPPORTED_FEATURES", { +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ enumerable: true, get: function () { return _util.UNSUPPORTED_FEATURES; } -}); -Object.defineProperty(exports, "Util", { +})); +Object.defineProperty(exports, "Util", ({ enumerable: true, get: function () { return _util.Util; } -}); -Object.defineProperty(exports, "VerbosityLevel", { +})); +Object.defineProperty(exports, "VerbosityLevel", ({ enumerable: true, get: function () { return _util.VerbosityLevel; } -}); -Object.defineProperty(exports, "AnnotationLayer", { +})); +Object.defineProperty(exports, "AnnotationLayer", ({ enumerable: true, get: function () { return _annotation_layer.AnnotationLayer; } -}); -Object.defineProperty(exports, "apiCompatibilityParams", { +})); +Object.defineProperty(exports, "apiCompatibilityParams", ({ enumerable: true, get: function () { return _api_compatibility.apiCompatibilityParams; } -}); -Object.defineProperty(exports, "GlobalWorkerOptions", { +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ enumerable: true, get: function () { return _worker_options.GlobalWorkerOptions; } -}); -Object.defineProperty(exports, "renderTextLayer", { +})); +Object.defineProperty(exports, "renderTextLayer", ({ enumerable: true, get: function () { return _text_layer.renderTextLayer; } -}); -Object.defineProperty(exports, "SVGGraphics", { +})); +Object.defineProperty(exports, "SVGGraphics", ({ enumerable: true, get: function () { return _svg.SVGGraphics; } -}); +})); var _display_utils = __w_pdfjs_require__(1); @@ -331,30 +246,30 @@ var _api_compatibility = __w_pdfjs_require__(9); var _worker_options = __w_pdfjs_require__(12); -var _text_layer = __w_pdfjs_require__(20); +var _text_layer = __w_pdfjs_require__(21); -var _svg = __w_pdfjs_require__(21); +var _svg = __w_pdfjs_require__(22); -const pdfjsVersion = '2.6.347'; -const pdfjsBuild = '3be9c65f'; +const pdfjsVersion = '2.7.570'; +const pdfjsBuild = 'f2c7338b0'; { const { isNodeJS } = __w_pdfjs_require__(4); if (isNodeJS) { - const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream; + const PDFNodeStream = __w_pdfjs_require__(23).PDFNodeStream; (0, _api.setPDFNetworkStreamFactory)(params => { return new PDFNodeStream(params); }); } else { - const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream; + const PDFNetworkStream = __w_pdfjs_require__(26).PDFNetworkStream; let PDFFetchStream; if ((0, _display_utils.isFetchSupported)()) { - PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream; + PDFFetchStream = __w_pdfjs_require__(27).PDFFetchStream; } (0, _api.setPDFNetworkStreamFactory)(params => { @@ -369,21 +284,20 @@ const pdfjsBuild = '3be9c65f'; /***/ }), /* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.addLinkAttributes = addLinkAttributes; +exports.deprecated = deprecated; exports.getFilenameFromUrl = getFilenameFromUrl; exports.isFetchSupported = isFetchSupported; exports.isValidFetchUrl = isValidFetchUrl; exports.loadScript = loadScript; -exports.deprecated = deprecated; -exports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0; +exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0; var _util = __w_pdfjs_require__(2); @@ -836,11 +750,18 @@ function isValidFetchUrl(url, baseUrl) { } } -function loadScript(src) { +function loadScript(src, removeScriptElement = false) { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = src; - script.onload = resolve; + + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); + }; script.onerror = function () { reject(new Error(`Cannot load script at: ${script.src}`)); @@ -906,41 +827,45 @@ exports.PDFDateString = PDFDateString; /***/ }), /* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.arrayByteLength = arrayByteLength; exports.arraysToBytes = arraysToBytes; exports.assert = assert; exports.bytesToString = bytesToString; exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.encodeToXmlString = encodeToXmlString; exports.escapeString = escapeString; exports.getModificationDate = getModificationDate; exports.getVerbosityLevel = getVerbosityLevel; exports.info = info; exports.isArrayBuffer = isArrayBuffer; exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; exports.isBool = isBool; exports.isNum = isNum; -exports.isString = isString; exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.isString = isString; +exports.objectFromEntries = objectFromEntries; +exports.objectSize = objectSize; exports.removeNullCharacters = removeNullCharacters; exports.setVerbosityLevel = setVerbosityLevel; exports.shadow = shadow; exports.string32 = string32; exports.stringToBytes = stringToBytes; exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; exports.utf8StringToString = utf8StringToString; exports.warn = warn; -exports.unreachable = unreachable; -exports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0; +exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; __w_pdfjs_require__(3); @@ -1073,6 +998,36 @@ const AnnotationBorderStyleType = { UNDERLINE: 5 }; exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; const StreamType = { UNKNOWN: "UNKNOWN", FLATE: "FLATE", @@ -1481,6 +1436,14 @@ function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromEntries(iterable) { + return Object.assign(Object.create(null), Object.fromEntries(iterable)); +} + function isLittleEndian() { const buffer8 = new Uint8Array(4); buffer8[0] = 1; @@ -1512,14 +1475,11 @@ const IsEvalSupportedCached = { }; exports.IsEvalSupportedCached = IsEvalSupportedCached; -const rgbBuf = ["rgb(", 0, ",", 0, ",", 0, ")"]; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); class Util { - static makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(""); + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; } static transform(m1, m2) { @@ -1641,7 +1601,31 @@ function stringToPDFString(str) { } function escapeString(str) { - return str.replace(/([\(\)\\])/g, "\\$1"); + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff)); + buf.push(String.fromCharCode(char & 0xff)); + } + + return buf.join(""); } function stringToUTF8String(str) { @@ -1678,8 +1662,8 @@ function isArrayEqual(arr1, arr2) { }); } -function getModificationDate(date = new Date(Date.now())) { - const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), (date.getUTCDate() + 1).toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; return buffer.join(""); } @@ -1734,12 +1718,62 @@ const createObjectURL = function createObjectURLClosure() { }(); exports.createObjectURL = createObjectURL; +const XMLEntities = { + 0x3c: "<", + 0x3e: ">", + 0x26: "&", + 0x22: """, + 0x27: "'" +}; + +function encodeToXmlString(str) { + const buffer = []; + let start = 0; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + + if (0x20 <= char && char <= 0x7e) { + const entity = XMLEntities[char]; + + if (entity) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(entity); + start = i + 1; + } + } else { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(`&#x${char.toString(16).toUpperCase()};`); + + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + + start = i + 1; + } + } + + if (buffer.length === 0) { + return str; + } + + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + + return buffer.join(""); +} /***/ }), /* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; var _is_node = __w_pdfjs_require__(4); @@ -1748,31 +1782,29 @@ var _is_node = __w_pdfjs_require__(4); /***/ }), /* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.isNodeJS = void 0; const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); exports.isNodeJS = isNodeJS; /***/ }), /* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getDocument = getDocument; exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; -exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0; +exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0; var _util = __w_pdfjs_require__(2); @@ -1805,7 +1837,9 @@ var _webgl = __w_pdfjs_require__(18); const DEFAULT_RANGE_CHUNK_SIZE = 65536; const RENDERING_CANCELLED_TIMEOUT = 100; const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; let createPDFNetworkStream; function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { @@ -1979,7 +2013,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { return worker.messageHandler.sendWithPromise("GetDocRequest", { docId, - apiVersion: '2.6.347', + apiVersion: '2.7.570', source: { data: source.data, url: source.url, @@ -2176,6 +2210,10 @@ class PDFDocumentProxy { return this._transport.getJavaScript(); } + getJSActions() { + return this._transport.getDocJSActions(); + } + getOutline() { return this._transport.getOutline(); } @@ -2192,6 +2230,10 @@ class PDFDocumentProxy { return this._transport.getMetadata(); } + getMarkInfo() { + return this._transport.getMarkInfo(); + } + getData() { return this._transport.getData(); } @@ -2224,6 +2266,18 @@ class PDFDocumentProxy { return this._transport.saveDocument(annotationStorage); } + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + } exports.PDFDocumentProxy = PDFDocumentProxy; @@ -2292,6 +2346,10 @@ class PDFPageProxy { return this.annotationsPromise; } + getJSActions() { + return this._jsActionsPromise || (this._jsActionsPromise = this._transport.getPageJSActions(this._pageIndex)); + } + render({ canvasContext, viewport, @@ -2352,7 +2410,7 @@ class PDFPageProxy { pageIndex: this._pageIndex, intent: renderingIntent, renderInteractiveForms: renderInteractiveForms === true, - annotationStorage: annotationStorage && annotationStorage.getAll() || null + annotationStorage: annotationStorage?.getAll() || null }); } @@ -2551,6 +2609,7 @@ class PDFPageProxy { this.objs.clear(); this.annotationsPromise = null; + this._jsActionsPromise = null; this.pendingCleanup = false; return Promise.all(waitOn); } @@ -2578,6 +2637,7 @@ class PDFPageProxy { this.objs.clear(); this.annotationsPromise = null; + this._jsActionsPromise = null; if (resetStats && this._stats) { this._stats = new _display_utils.StatTimer(); @@ -2708,7 +2768,7 @@ class PDFPageProxy { } } - intentState.streamReader.cancel(new _util.AbortException(reason && reason.message)); + intentState.streamReader.cancel(new _util.AbortException(reason?.message)); intentState.streamReader = null; if (this._transport.destroyed) { @@ -2754,9 +2814,7 @@ class LoopbackPort { let buffer, result; if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { - const transferable = transfers && transfers.includes(buffer); - - if (transferable) { + if (transfers?.includes(buffer)) { result = new value.constructor(buffer, value.byteOffset, value.byteLength); } else { result = new value.constructor(value); @@ -2846,7 +2904,7 @@ const PDFWorker = function PDFWorkerClosure() { isWorkerDisabled = true; fallbackWorkerSrc = "./pdf.worker.js"; } else if (typeof document === "object" && "currentScript" in document) { - const pdfjsFilePath = document.currentScript && document.currentScript.src; + const pdfjsFilePath = document.currentScript?.src; if (pdfjsFilePath) { fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); @@ -2873,7 +2931,7 @@ const PDFWorker = function PDFWorkerClosure() { let mainWorkerMessageHandler; try { - mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler; + mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler; } catch (ex) {} return mainWorkerMessageHandler || null; @@ -3159,6 +3217,10 @@ class WorkerTransport { this.setupMessageHandler(); } + get loadingTaskSettled() { + return this.loadingTask._capability.settled; + } + destroy() { if (this.destroyCapability) { return this.destroyCapability.promise; @@ -3181,8 +3243,20 @@ class WorkerTransport { this.pagePromises.length = 0; const terminated = this.messageHandler.sendWithPromise("Terminate", null); waitOn.push(terminated); + + if (this.loadingTaskSettled) { + const annotationStorageResetModified = this.loadingTask.promise.then(pdfDocument => { + if (pdfDocument.hasOwnProperty("annotationStorage")) { + pdfDocument.annotationStorage.resetModified(); + } + }).catch(() => {}); + waitOn.push(annotationStorageResetModified); + } + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); this.fontLoader.clear(); + this._hasJSActionsPromise = null; if (this._networkStream) { this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); @@ -3411,7 +3485,7 @@ class WorkerTransport { let fontRegistry = null; - if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) { + if (params.pdfBug && globalThis.FontInspector?.enabled) { fontRegistry = { registerFont(font, url) { globalThis.FontInspector.fontAdded(font, url); @@ -3466,7 +3540,7 @@ class WorkerTransport { pageProxy.objs.resolve(id, imageData); const MAX_IMAGE_SIZE_TO_STORE = 8000000; - if (imageData && "data" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { + if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) { pageProxy.cleanupAfterRender = true; } @@ -3575,8 +3649,8 @@ class WorkerTransport { saveDocument(annotationStorage) { return this.messageHandler.sendWithPromise("SaveDocument", { numPages: this._numPages, - annotationStorage: annotationStorage && annotationStorage.getAll() || null, - filename: this._fullReader ? this._fullReader.filename : null + annotationStorage: annotationStorage?.getAll() || null, + filename: this._fullReader?.filename ?? null }).finally(() => { if (annotationStorage) { annotationStorage.resetModified(); @@ -3584,6 +3658,18 @@ class WorkerTransport { }); } + getFieldObjects() { + return this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise || (this._hasJSActionsPromise = this.messageHandler.sendWithPromise("HasJSActions", null)); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + getDestinations() { return this.messageHandler.sendWithPromise("GetDestinations", null); } @@ -3626,6 +3712,16 @@ class WorkerTransport { return this.messageHandler.sendWithPromise("GetJavaScript", null); } + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + getOutline() { return this.messageHandler.sendWithPromise("GetOutline", null); } @@ -3645,11 +3741,16 @@ class WorkerTransport { return { info: results[0], metadata: results[1] ? new _metadata.Metadata(results[1]) : null, - contentDispositionFilename: this._fullReader ? this._fullReader.filename : null + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null }; }); } + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + getStats() { return this.messageHandler.sendWithPromise("GetStats", null); } @@ -3670,6 +3771,7 @@ class WorkerTransport { this.commonObjs.clear(); this.fontLoader.clear(); + this._hasJSActionsPromise = null; }); } @@ -3718,7 +3820,7 @@ class PDFObjects { has(objId) { const obj = this._objs[objId]; - return obj ? obj.resolved : false; + return obj?.resolved || false; } resolve(objId, data) { @@ -3810,7 +3912,7 @@ const InternalRenderTask = function InternalRenderTaskClosure() { canvasInRendering.add(this._canvas); } - if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) { + if (this._pdfBug && globalThis.StepperManager?.enabled) { this.stepper = globalThis.StepperManager.create(this._pageIndex); this.stepper.init(this.operatorList); this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); @@ -3924,21 +4026,20 @@ const InternalRenderTask = function InternalRenderTaskClosure() { return InternalRenderTask; }(); -const version = '2.6.347'; +const version = '2.7.570'; exports.version = version; -const build = '3be9c65f'; +const build = 'f2c7338b0'; exports.build = build; /***/ }), /* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.FontLoader = exports.FontFaceObject = void 0; var _util = __w_pdfjs_require__(2); @@ -4043,8 +4144,7 @@ class BaseFontLoader { } get isFontLoadingAPISupported() { - const supported = typeof this._document !== "undefined" && !!this._document.fonts; - return (0, _util.shadow)(this, "isFontLoadingAPISupported", supported); + return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!this._document?.fonts); } get isSyncFontLoadingSupported() { @@ -4082,7 +4182,7 @@ exports.FontLoader = FontLoader; } else { const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { + if (m?.[1] >= 14) { supported = true; } } @@ -4329,14 +4429,13 @@ exports.FontFaceObject = FontFaceObject; /***/ }), /* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0; var _display_utils = __w_pdfjs_require__(1); @@ -4401,16 +4500,17 @@ if (_is_node.isNodeJS) { /***/ }), /* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.AnnotationStorage = void 0; +var _util = __w_pdfjs_require__(2); + class AnnotationStorage { constructor() { this._storage = new Map(); @@ -4430,11 +4530,26 @@ class AnnotationStorage { } setValue(key, value) { - if (this._storage.get(key) !== value) { - this._setModified(); + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + this._storage.set(key, value); + + modified = true; } - this._storage.set(key, value); + if (modified) { + this._setModified(); + } } getAll() { @@ -4442,7 +4557,7 @@ class AnnotationStorage { return null; } - return Object.fromEntries(this._storage); + return (0, _util.objectFromEntries)(this._storage); } get size() { @@ -4475,14 +4590,13 @@ exports.AnnotationStorage = AnnotationStorage; /***/ }), /* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.apiCompatibilityParams = void 0; var _is_node = __w_pdfjs_require__(4); @@ -4500,27 +4614,25 @@ exports.apiCompatibilityParams = apiCompatibilityParams; /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CanvasGraphics = void 0; var _util = __w_pdfjs_require__(2); var _pattern_helper = __w_pdfjs_require__(11); -var MIN_FONT_SIZE = 16; -var MAX_FONT_SIZE = 100; -var MAX_GROUP_SIZE = 4096; -var MIN_WIDTH_FACTOR = 0.65; -var COMPILE_TYPE3_GLYPHS = true; -var MAX_SIZE_TO_COMPILE = 1000; -var FULL_CHUNK_HEIGHT = 16; +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const COMPILE_TYPE3_GLYPHS = true; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; function addContextCurrentTransform(ctx) { if (!ctx.mozCurrentTransform) { @@ -4540,21 +4652,21 @@ function addContextCurrentTransform(ctx) { }); Object.defineProperty(ctx, "mozCurrentTransformInverse", { get: function getCurrentTransformInverse() { - var m = this._transformMatrix; - var a = m[0], - b = m[1], - c = m[2], - d = m[3], - e = m[4], - f = m[5]; - var ad_bc = a * d - b * c; - var bc_ad = b * c - a * d; + const m = this._transformMatrix; + const a = m[0], + b = m[1], + c = m[2], + d = m[3], + e = m[4], + f = m[5]; + const ad_bc = a * d - b * c; + const bc_ad = b * c - a * d; return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; } }); ctx.save = function ctxSave() { - var old = this._transformMatrix; + const old = this._transformMatrix; this._transformStack.push(old); @@ -4564,7 +4676,7 @@ function addContextCurrentTransform(ctx) { }; ctx.restore = function ctxRestore() { - var prev = this._transformStack.pop(); + const prev = this._transformStack.pop(); if (prev) { this._transformMatrix = prev; @@ -4574,7 +4686,7 @@ function addContextCurrentTransform(ctx) { }; ctx.translate = function ctxTranslate(x, y) { - var m = this._transformMatrix; + const m = this._transformMatrix; m[4] = m[0] * x + m[2] * y + m[4]; m[5] = m[1] * x + m[3] * y + m[5]; @@ -4582,7 +4694,7 @@ function addContextCurrentTransform(ctx) { }; ctx.scale = function ctxScale(x, y) { - var m = this._transformMatrix; + const m = this._transformMatrix; m[0] = m[0] * x; m[1] = m[1] * x; m[2] = m[2] * y; @@ -4592,7 +4704,7 @@ function addContextCurrentTransform(ctx) { }; ctx.transform = function ctxTransform(a, b, c, d, e, f) { - var m = this._transformMatrix; + const m = this._transformMatrix; this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; ctx._originalTransform(a, b, c, d, e, f); @@ -4605,9 +4717,9 @@ function addContextCurrentTransform(ctx) { }; ctx.rotate = function ctxRotate(angle) { - var cosValue = Math.cos(angle); - var sinValue = Math.sin(angle); - var m = this._transformMatrix; + const cosValue = Math.cos(angle); + const sinValue = Math.sin(angle); + const m = this._transformMatrix; this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; this._originalRotate(angle); @@ -4615,7 +4727,7 @@ function addContextCurrentTransform(ctx) { } } -var CachedCanvases = function CachedCanvasesClosure() { +const CachedCanvases = function CachedCanvasesClosure() { function CachedCanvases(canvasFactory) { this.canvasFactory = canvasFactory; this.cache = Object.create(null); @@ -4623,7 +4735,7 @@ var CachedCanvases = function CachedCanvasesClosure() { CachedCanvases.prototype = { getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { - var canvasEntry; + let canvasEntry; if (this.cache[id] !== undefined) { canvasEntry = this.cache[id]; @@ -4642,8 +4754,8 @@ var CachedCanvases = function CachedCanvasesClosure() { }, clear() { - for (var id in this.cache) { - var canvasEntry = this.cache[id]; + for (const id in this.cache) { + const canvasEntry = this.cache[id]; this.canvasFactory.destroy(canvasEntry); delete this.cache[id]; } @@ -4654,24 +4766,21 @@ var CachedCanvases = function CachedCanvasesClosure() { }(); function compileType3Glyph(imgData) { - var POINT_TO_PROCESS_LIMIT = 1000; - var width = imgData.width, - height = imgData.height; - var i, - j, - j0, - width1 = width + 1; - var points = new Uint8Array(width1 * (height + 1)); - var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); - var lineSize = width + 7 & ~7, - data0 = imgData.data; - var data = new Uint8Array(lineSize * height), - pos = 0, - ii; + const POINT_TO_PROCESS_LIMIT = 1000; + const width = imgData.width, + height = imgData.height, + width1 = width + 1; + let i, ii, j, j0; + const points = new Uint8Array(width1 * (height + 1)); + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const lineSize = width + 7 & ~7, + data0 = imgData.data; + const data = new Uint8Array(lineSize * height); + let pos = 0; for (i = 0, ii = data0.length; i < ii; i++) { - var mask = 128, - elem = data0[i]; + const elem = data0[i]; + let mask = 128; while (mask > 0) { data[pos++] = elem & mask ? 0 : 255; @@ -4679,7 +4788,7 @@ function compileType3Glyph(imgData) { } } - var count = 0; + let count = 0; pos = 0; if (data[pos] !== 0) { @@ -4710,7 +4819,7 @@ function compileType3Glyph(imgData) { ++count; } - var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); for (j = 1; j < width; j++) { sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); @@ -4759,12 +4868,12 @@ function compileType3Glyph(imgData) { return null; } - var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); - var outlines = []; + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const outlines = []; for (i = 0; count && i <= height; i++) { - var p = i * width1; - var end = p + width; + let p = i * width1; + const end = p + width; while (p < end && !points[p]) { p++; @@ -4774,19 +4883,18 @@ function compileType3Glyph(imgData) { continue; } - var coords = [p % width1, i]; - var type = points[p], - p0 = p, - pp; + const coords = [p % width1, i]; + const p0 = p; + let type = points[p]; do { - var step = steps[type]; + const step = steps[type]; do { p += step; } while (!points[p]); - pp = points[p]; + const pp = points[p]; if (pp !== 5 && pp !== 10) { type = pp; @@ -4808,14 +4916,14 @@ function compileType3Glyph(imgData) { --i; } - var drawOutline = function (c) { + const drawOutline = function (c) { c.save(); c.scale(1 / width, -1 / height); c.translate(0, -height); c.beginPath(); for (let k = 0, kk = outlines.length; k < kk; k++) { - var o = outlines[k]; + const o = outlines[k]; c.moveTo(o[0], o[1]); for (let l = 2, ll = o.length; l < ll; l += 2) { @@ -4831,7 +4939,7 @@ function compileType3Glyph(imgData) { return drawOutline; } -var CanvasExtraState = function CanvasExtraStateClosure() { +const CanvasExtraState = function CanvasExtraStateClosure() { function CanvasExtraState() { this.alphaIsShape = false; this.fontSize = 0; @@ -4872,9 +4980,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() { return CanvasExtraState; }(); -var CanvasGraphics = function CanvasGraphicsClosure() { - var EXECUTION_TIME = 15; - var EXECUTION_STEPS = 10; +const CanvasGraphics = function CanvasGraphicsClosure() { + const EXECUTION_TIME = 15; + const EXECUTION_STEPS = 10; function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, optionalContentConfig) { this.ctx = canvasCtx; @@ -4915,17 +5023,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0, + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, destPos; - var src = imgData.data; - var dest = chunkImgData.data; - var i, j, thisChunkHeight, elemsInThisChunk; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; if (transferMaps) { @@ -4947,12 +5055,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { - var srcLength = src.byteLength; - var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); - var dest32DataLength = dest32.length; - var fullSrcDiff = width + 7 >> 3; - var white = 0xffffffff; - var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff; + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff; if (transferMapGray) { if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { @@ -4965,12 +5073,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { destPos = 0; for (j = 0; j < thisChunkHeight; j++) { - var srcDiff = srcLength - srcPos; + const srcDiff = srcLength - srcPos; let k = 0; - var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; - var kEndUnrolled = kEnd & ~7; - var mask = 0; - var srcByte = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; for (; k < kEndUnrolled; k += 8) { srcByte = src[srcPos++]; @@ -5096,26 +5204,27 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } function putBinaryImageMask(ctx, imgData) { - var height = imgData.height, - width = imgData.width; - var partialChunkHeight = height % FULL_CHUNK_HEIGHT; - var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; - var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; - var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); - var srcPos = 0; - var src = imgData.data; - var dest = chunkImgData.data; - - for (var i = 0; i < totalChunks; i++) { - var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; - var destPos = 3; - - for (var j = 0; j < thisChunkHeight; j++) { - var mask = 0; - - for (var k = 0; k < width; k++) { + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + let destPos = 3; + + for (let j = 0; j < thisChunkHeight; j++) { + let elem, + mask = 0; + + for (let k = 0; k < width; k++) { if (!mask) { - var elem = src[srcPos++]; + elem = src[srcPos++]; mask = 128; } @@ -5130,10 +5239,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } function copyCtxState(sourceCtx, destCtx) { - var properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; - for (var i = 0, ii = properties.length; i < ii; i++) { - var property = properties[i]; + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; if (sourceCtx[property] !== undefined) { destCtx[property] = sourceCtx[property]; @@ -5165,17 +5274,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } function composeSMaskBackdrop(bytes, r0, g0, b0) { - var length = bytes.length; + const length = bytes.length; - for (var i = 3; i < length; i += 4) { - var alpha = bytes[i]; + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; if (alpha === 0) { bytes[i - 3] = r0; bytes[i - 2] = g0; bytes[i - 1] = b0; } else if (alpha < 255) { - var alpha_ = 255 - alpha; + const alpha_ = 255 - alpha; bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; @@ -5184,30 +5293,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } function composeSMaskAlpha(maskData, layerData, transferMap) { - var length = maskData.length; - var scale = 1 / 255; + const length = maskData.length; + const scale = 1 / 255; - for (var i = 3; i < length; i += 4) { - var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; layerData[i] = layerData[i] * alpha * scale | 0; } } function composeSMaskLuminosity(maskData, layerData, transferMap) { - var length = maskData.length; + const length = maskData.length; - for (var i = 3; i < length; i += 4) { - var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; } } function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) { - var hasBackdrop = !!backdrop; - var r0 = hasBackdrop ? backdrop[0] : 0; - var g0 = hasBackdrop ? backdrop[1] : 0; - var b0 = hasBackdrop ? backdrop[2] : 0; - var composeFn; + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; if (subtype === "Luminosity") { composeFn = composeSMaskLuminosity; @@ -5215,13 +5324,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() { composeFn = composeSMaskAlpha; } - var PIXELS_TO_PROCESS = 1048576; - var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); - for (var row = 0; row < height; row += chunkSize) { - var chunkHeight = Math.min(chunkSize, height - row); - var maskData = maskCtx.getImageData(0, row, width, chunkHeight); - var layerData = layerCtx.getImageData(0, row, width, chunkHeight); + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(0, row, width, chunkHeight); + const layerData = layerCtx.getImageData(0, row, width, chunkHeight); if (hasBackdrop) { composeSMaskBackdrop(maskData.data, r0, g0, b0); @@ -5233,10 +5342,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } function composeSMask(ctx, smask, layerCtx, webGLContext) { - var mask = smask.canvas; - var maskCtx = smask.context; + const mask = smask.canvas; + const maskCtx = smask.context; ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); - var backdrop = smask.backdrop || null; + const backdrop = smask.backdrop || null; if (!smask.transferMap && webGLContext.isEnabled) { const composed = webGLContext.composeSMask({ @@ -5256,10 +5365,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.drawImage(mask, 0, 0); } - var LINE_CAP_STYLES = ["butt", "round", "square"]; - var LINE_JOIN_STYLES = ["miter", "round", "bevel"]; - var NORMAL_CLIP = {}; - var EO_CLIP = {}; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + const NORMAL_CLIP = {}; + const EO_CLIP = {}; CanvasGraphics.prototype = { beginDrawing({ transform, @@ -5267,15 +5376,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() { transparency = false, background = null }) { - var width = this.ctx.canvas.width; - var height = this.ctx.canvas.height; + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; this.ctx.save(); this.ctx.fillStyle = background || "rgb(255, 255, 255)"; this.ctx.fillRect(0, 0, width, height); this.ctx.restore(); if (transparency) { - var transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); this.compositeCtx = this.ctx; this.transparentCanvas = transparentCanvas.canvas; this.ctx = transparentCanvas.context; @@ -5292,6 +5401,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.transform.apply(this.ctx, viewport.transform); this.baseTransform = this.ctx.mozCurrentTransform.slice(); + this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]); if (this.imageLayer) { this.imageLayer.beginLayout(); @@ -5299,21 +5409,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var i = executionStartIdx || 0; - var argsArrayLen = argsArray.length; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; if (argsArrayLen === i) { return i; } - var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; - var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; - var steps = 0; - var commonObjs = this.commonObjs; - var objs = this.objs; - var fnId; + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; while (true) { if (stepper !== undefined && i === stepper.nextBreakPoint) { @@ -5353,8 +5463,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } }, endDrawing: function CanvasGraphics_endDrawing() { - if (this.current.activeSMask !== null) { - this.endSMaskGroup(); + while (this.stateStack.length || this.current.activeSMask !== null) { + this.restore(); } this.ctx.restore(); @@ -5389,7 +5499,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.miterLimit = limit; }, setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { - var ctx = this.ctx; + const ctx = this.ctx; if (ctx.setLineDash !== undefined) { ctx.setLineDash(dashArray); @@ -5402,10 +5512,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { setFlatness(flatness) {}, setGState: function CanvasGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; switch (key) { case "LW": @@ -5477,15 +5587,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } }, beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { - var activeSMask = this.current.activeSMask; - var drawnWidth = activeSMask.canvas.width; - var drawnHeight = activeSMask.canvas.height; - var cacheId = "smaskGroupAt" + this.groupLevel; - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var currentCtx = this.ctx; - var currentTransform = currentCtx.mozCurrentTransform; + const activeSMask = this.current.activeSMask; + const drawnWidth = activeSMask.canvas.width; + const drawnHeight = activeSMask.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const currentCtx = this.ctx; + const currentTransform = currentCtx.mozCurrentTransform; this.ctx.save(); - var groupCtx = scratchCanvas.context; + const groupCtx = scratchCanvas.context; groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); groupCtx.transform.apply(groupCtx, currentTransform); @@ -5497,7 +5607,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.groupLevel++; }, suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; + const groupCtx = this.ctx; this.groupLevel--; this.ctx = this.groupStack.pop(); composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); @@ -5506,7 +5616,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { copyCtxState(groupCtx, this.ctx); this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); groupCtx.save(); @@ -5514,28 +5624,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() { groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); groupCtx.restore(); }, - resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.current.resumeSMaskCtx; - var currentCtx = this.ctx; + resumeSMaskGroup: function CanvasGraphics_resumeSMaskGroup() { + const groupCtx = this.current.resumeSMaskCtx; + const currentCtx = this.ctx; this.ctx = groupCtx; this.groupStack.push(currentCtx); this.groupLevel++; }, endSMaskGroup: function CanvasGraphics_endSMaskGroup() { - var groupCtx = this.ctx; + const groupCtx = this.ctx; this.groupLevel--; this.ctx = this.groupStack.pop(); composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext); this.ctx.restore(); copyCtxState(groupCtx, this.ctx); - var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); }, save: function CanvasGraphics_save() { this.ctx.save(); - var old = this.current; + const old = this.current; this.stateStack.push(old); this.current = old.clone(); this.current.resumeSMaskCtx = null; @@ -5554,6 +5664,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.restore(); this.pendingClip = null; this._cachedGetSinglePixelWidth = null; + } else { + this.current.activeSMask = null; } }, transform: function CanvasGraphics_transform(a, b, c, d, e, f) { @@ -5561,34 +5673,30 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this._cachedGetSinglePixelWidth = null; }, constructPath: function CanvasGraphics_constructPath(ops, args) { - var ctx = this.ctx; - var current = this.current; - var x = current.x, + const ctx = this.ctx; + const current = this.current; + let x = current.x, y = current.y; - for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { switch (ops[i] | 0) { case _util.OPS.rectangle: x = args[j++]; y = args[j++]; - var width = args[j++]; - var height = args[j++]; - - if (width === 0 && ctx.lineWidth < this.getSinglePixelWidth()) { - width = this.getSinglePixelWidth(); - } + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); - if (height === 0 && ctx.lineWidth < this.getSinglePixelWidth()) { - height = this.getSinglePixelWidth(); + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); } - var xw = x + width; - var yh = y + height; - ctx.moveTo(x, y); - ctx.lineTo(xw, y); - ctx.lineTo(xw, yh); - ctx.lineTo(x, yh); - ctx.lineTo(x, y); ctx.closePath(); break; @@ -5638,24 +5746,43 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, stroke: function CanvasGraphics_stroke(consumePath) { consumePath = typeof consumePath !== "undefined" ? consumePath : true; - var ctx = this.ctx; - var strokeColor = this.current.strokeColor; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; ctx.globalAlpha = this.current.strokeAlpha; if (this.contentVisible) { - if (strokeColor && strokeColor.hasOwnProperty("type") && strokeColor.type === "Pattern") { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { ctx.save(); const transform = ctx.mozCurrentTransform; const scale = _util.Util.singularValueDecompose2dScale(transform)[0]; ctx.strokeStyle = strokeColor.getPattern(ctx, this); - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * scale); + const lineWidth = this.getSinglePixelWidth(); + const scaledLineWidth = this.current.lineWidth * scale; + + if (lineWidth < 0 && -lineWidth >= scaledLineWidth) { + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + } else { + ctx.lineWidth = Math.max(lineWidth, scaledLineWidth); + } + ctx.stroke(); ctx.restore(); } else { - ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth); - ctx.stroke(); + const lineWidth = this.getSinglePixelWidth(); + + if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) { + ctx.save(); + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + ctx.stroke(); + ctx.restore(); + } else { + ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth); + ctx.stroke(); + } } } @@ -5671,10 +5798,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, fill: function CanvasGraphics_fill(consumePath) { consumePath = typeof consumePath !== "undefined" ? consumePath : true; - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var needRestore = false; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; if (isPatternFill) { ctx.save(); @@ -5742,8 +5869,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.y = this.current.lineY = 0; }, endText: function CanvasGraphics_endText() { - var paths = this.pendingTextPaths; - var ctx = this.ctx; + const paths = this.pendingTextPaths; + const ctx = this.ctx; if (paths === undefined) { ctx.beginPath(); @@ -5753,8 +5880,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.save(); ctx.beginPath(); - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; ctx.setTransform.apply(ctx, path.transform); ctx.translate(path.x, path.y); path.addToPath(ctx, path.fontSize); @@ -5778,14 +5905,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.leading = -leading; }, setFont: function CanvasGraphics_setFont(fontRefName, size) { - var fontObj = this.commonObjs.get(fontRefName); - var current = this.current; + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; if (!fontObj) { throw new Error(`Can't find font for ${fontRefName}`); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { (0, _util.warn)("Invalid font matrix for font " + fontRefName); @@ -5805,7 +5932,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var name = fontObj.loadedName || "sans-serif"; + const name = fontObj.loadedName || "sans-serif"; let bold = "normal"; if (fontObj.black) { @@ -5814,8 +5941,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { bold = "bold"; } - var italic = fontObj.italic ? "italic" : "normal"; - var typeface = `"${name}", ${fontObj.fallbackName}`; + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; let browserFontSize = size; if (size < MIN_FONT_SIZE) { @@ -5851,16 +5978,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.moveText(0, this.current.leading); }, - paintChar(character, x, y, patternTransform) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var textRenderingMode = current.textRenderingMode; - var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + paintChar(character, x, y, patternTransform, resetLineWidthToOne) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); const patternFill = current.patternFill && !font.missingFile; - var addToPath; + let addToPath; if (font.disableFontFace || isAddToPathSet || patternFill) { addToPath = font.getPathGenerator(this.commonObjs, character); @@ -5881,6 +6008,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (resetLineWidthToOne) { + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + } + ctx.stroke(); } @@ -5891,12 +6023,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { - ctx.strokeText(character, x, y); + if (resetLineWidthToOne) { + ctx.save(); + ctx.moveTo(x, y); + ctx.resetTransform(); + ctx.lineWidth = Math.round(this._combinedScaleFactor); + ctx.strokeText(character, 0, 0); + ctx.restore(); + } else { + ctx.strokeText(character, x, y); + } } } if (isAddToPathSet) { - var paths = this.pendingTextPaths || (this.pendingTextPaths = []); + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); paths.push({ transform: ctx.mozCurrentTransform, x, @@ -5913,10 +6054,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); ctx.scale(1.5, 1); ctx.fillText("I", 0, 10); - var data = ctx.getImageData(0, 0, 10, 10).data; - var enabled = false; + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; - for (var i = 3; i < data.length; i += 4) { + for (let i = 3; i < data.length; i += 4) { if (data[i] > 0 && data[i] < 255) { enabled = true; break; @@ -5927,31 +6068,31 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, showText: function CanvasGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; + const current = this.current; + const font = current.font; if (font.isType3Font) { return this.showType3Text(glyphs); } - var fontSize = current.fontSize; + const fontSize = current.fontSize; if (fontSize === 0) { return undefined; } - var ctx = this.ctx; - var fontSizeScale = current.fontSizeScale; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var spacingDir = vertical ? 1 : -1; - var defaultVMetrics = font.defaultVMetrics; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; ctx.save(); let patternTransform; @@ -5972,15 +6113,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.scale(textHScale, 1); } - var lineWidth = current.lineWidth; - var scale = current.textMatrixScale; + let lineWidth = current.lineWidth; + let resetLineWidthToOne = false; + const scale = current.textMatrixScale; if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { this._cachedGetSinglePixelWidth = null; - lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; + lineWidth = this.getSinglePixelWidth(); + resetLineWidthToOne = lineWidth < 0; } } else { lineWidth /= scale; @@ -5992,30 +6135,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } ctx.lineWidth = lineWidth; - var x = 0, + let x = 0, i; for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; + const glyph = glyphs[i]; if ((0, _util.isNum)(glyph)) { x += spacingDir * glyph * fontSize / 1000; continue; } - var restoreNeeded = false; - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var character = glyph.fontChar; - var accent = glyph.accent; - var scaledX, scaledY, scaledAccentX, scaledAccentY; - var width = glyph.width; + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; if (vertical) { - var vmetric, vx, vy; - vmetric = glyph.vmetric || defaultVMetrics; - vx = glyph.vmetric ? vmetric[1] : width * 0.5; - vx = -vx * widthAdvanceScale; - vy = vmetric[2] * widthAdvanceScale; + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; width = vmetric ? -vmetric[0] : width; scaledX = vx / fontSizeScale; scaledY = (x + vy) / fontSizeScale; @@ -6025,10 +6166,10 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } if (font.remeasure && width > 0) { - var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; if (width < measuredWidth && this.isFontSubpixelAAEnabled) { - var characterScaleX = width / measuredWidth; + const characterScaleX = width / measuredWidth; restoreNeeded = true; ctx.save(); ctx.scale(characterScaleX, 1); @@ -6042,17 +6183,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { if (simpleFillText && !accent) { ctx.fillText(character, scaledX, scaledY); } else { - this.paintChar(character, scaledX, scaledY, patternTransform); + this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne); if (accent) { - scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; - scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; - this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne); } } } - var charWidth; + let charWidth; if (vertical) { charWidth = width * widthAdvanceScale - spacing * fontDirection; @@ -6076,19 +6217,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.restore(); }, showType3Text: function CanvasGraphics_showType3Text(glyphs) { - var ctx = this.ctx; - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - var fontDirection = current.fontDirection; - var spacingDir = font.vertical ? 1 : -1; - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; - var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; - var i, glyph, width, spacingLength; + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; if (isTextInvisible || fontSize === 0) { return; @@ -6110,8 +6251,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { continue; } - var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; - var operatorList = font.charProcOperatorList[glyph.operatorListId]; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; if (!operatorList) { (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); @@ -6127,7 +6268,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.restore(); } - var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); width = transformed[0] * fontSize + spacing; ctx.translate(width, 0); @@ -6144,12 +6285,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.endPath(); }, getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { - var pattern; + let pattern; if (IR[0] === "TilingPattern") { - var color = IR[1]; - var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); - var canvasGraphicsFactory = { + const color = IR[1]; + const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); + const canvasGraphicsFactory = { createCanvasGraphics: ctx => { return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext); } @@ -6169,13 +6310,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.patternFill = true; }, setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); + const color = _util.Util.makeHexColor(r, g, b); this.ctx.strokeStyle = color; this.current.strokeColor = color; }, setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = _util.Util.makeCssRgb(r, g, b); + const color = _util.Util.makeHexColor(r, g, b); this.ctx.fillStyle = color; this.current.fillColor = color; @@ -6186,29 +6327,29 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var ctx = this.ctx; + const ctx = this.ctx; this.save(); - var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); + const pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); ctx.fillStyle = pattern.getPattern(ctx, this, true); - var inv = ctx.mozCurrentTransformInverse; + const inv = ctx.mozCurrentTransformInverse; if (inv) { - var canvas = ctx.canvas; - var width = canvas.width; - var height = canvas.height; + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; - var bl = _util.Util.applyTransform([0, 0], inv); + const bl = _util.Util.applyTransform([0, 0], inv); - var br = _util.Util.applyTransform([0, height], inv); + const br = _util.Util.applyTransform([0, height], inv); - var ul = _util.Util.applyTransform([width, 0], inv); + const ul = _util.Util.applyTransform([width, 0], inv); - var ur = _util.Util.applyTransform([width, height], inv); + const ur = _util.Util.applyTransform([width, height], inv); - var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); - var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); - var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); - var y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); } else { this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); @@ -6237,8 +6378,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.baseTransform = this.ctx.mozCurrentTransform; if (bbox) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; this.ctx.rect(bbox[0], bbox[1], width, height); this.clip(); this.endPath(); @@ -6258,7 +6399,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } this.save(); - var currentCtx = this.ctx; + const currentCtx = this.ctx; if (!group.isolated) { (0, _util.info)("TODO: Support non-isolated groups."); @@ -6268,7 +6409,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { (0, _util.warn)("Knockout groups not supported."); } - var currentTransform = currentCtx.mozCurrentTransform; + const currentTransform = currentCtx.mozCurrentTransform; if (group.matrix) { currentCtx.transform.apply(currentCtx, group.matrix); @@ -6278,15 +6419,15 @@ var CanvasGraphics = function CanvasGraphicsClosure() { throw new Error("Bounding box is required."); } - var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); - var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); - var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); - var scaleX = 1, + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, scaleY = 1; if (drawnWidth > MAX_GROUP_SIZE) { @@ -6299,14 +6440,14 @@ var CanvasGraphics = function CanvasGraphicsClosure() { drawnHeight = MAX_GROUP_SIZE; } - var cacheId = "groupAt" + this.groupLevel; + let cacheId = "groupAt" + this.groupLevel; if (group.smask) { cacheId += "_smask_" + this.smaskCounter++ % 2; } - var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); - var groupCtx = scratchCanvas.context; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const groupCtx = scratchCanvas.context; groupCtx.scale(1 / scaleX, 1 / scaleY); groupCtx.translate(-offsetX, -offsetY); groupCtx.transform.apply(groupCtx, currentTransform); @@ -6343,7 +6484,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } this.groupLevel--; - var groupCtx = this.ctx; + const groupCtx = this.ctx; this.ctx = this.groupStack.pop(); if (this.ctx.imageSmoothingEnabled !== undefined) { @@ -6376,8 +6517,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current = new CanvasExtraState(); if (Array.isArray(rect) && rect.length === 4) { - var width = rect[2] - rect[0]; - var height = rect[3] - rect[1]; + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; this.ctx.rect(rect[0], rect[1], width, height); this.clip(); this.endPath(); @@ -6394,12 +6535,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var ctx = this.ctx; - var width = img.width, - height = img.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var glyph = this.processingType3; + const ctx = this.ctx; + const width = img.width, + height = img.height; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const glyph = this.processingType3; if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) { if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) { @@ -6413,13 +6554,13 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } } - if (glyph && glyph.compiled) { + if (glyph?.compiled) { glyph.compiled(ctx); return; } - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; maskCtx.save(); putBinaryImageMask(maskCtx, img); maskCtx.globalCompositeOperation = "source-in"; @@ -6434,21 +6575,21 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var width = imgData.width; - var height = imgData.height; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; + const width = imgData.width; + const height = imgData.height; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; maskCtx.save(); putBinaryImageMask(maskCtx, imgData); maskCtx.globalCompositeOperation = "source-in"; maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; maskCtx.fillRect(0, 0, width, height); maskCtx.restore(); - var ctx = this.ctx; + const ctx = this.ctx; - for (var i = 0, ii = positions.length; i < ii; i += 2) { + for (let i = 0, ii = positions.length; i < ii; i += 2) { ctx.save(); ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]); ctx.scale(1, -1); @@ -6462,16 +6603,16 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var ctx = this.ctx; - var fillColor = this.current.fillColor; - var isPatternFill = this.current.patternFill; - - for (var i = 0, ii = images.length; i < ii; i++) { - var image = images[i]; - var width = image.width, - height = image.height; - var maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); - var maskCtx = maskCanvas.context; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (let i = 0, ii = images.length; i < ii; i++) { + const image = images[i]; + const width = image.width, + height = image.height; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; maskCtx.save(); putBinaryImageMask(maskCtx, image); maskCtx.globalCompositeOperation = "source-in"; @@ -6511,11 +6652,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var width = imgData.width; - var height = imgData.height; - var map = []; + const width = imgData.width; + const height = imgData.height; + const map = []; - for (var i = 0, ii = positions.length; i < ii; i += 2) { + for (let i = 0, ii = positions.length; i < ii; i += 2) { map.push({ transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], x: 0, @@ -6532,35 +6673,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var width = imgData.width; - var height = imgData.height; - var ctx = this.ctx; + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; this.save(); ctx.scale(1 / width, -1 / height); - var currentTransform = ctx.mozCurrentTransformInverse; - var a = currentTransform[0], - b = currentTransform[1]; - var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); - var c = currentTransform[2], - d = currentTransform[3]; - var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); - var imgToPaint, tmpCanvas; + const currentTransform = ctx.mozCurrentTransformInverse; + const a = currentTransform[0], + b = currentTransform[1]; + let widthScale = Math.max(Math.sqrt(a * a + b * b), 1); + const c = currentTransform[2], + d = currentTransform[3]; + let heightScale = Math.max(Math.sqrt(c * c + d * d), 1); + let imgToPaint, tmpCanvas, tmpCtx; if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { imgToPaint = imgData; } else { tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); - var tmpCtx = tmpCanvas.context; + tmpCtx = tmpCanvas.context; putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); imgToPaint = tmpCanvas.canvas; } - var paintWidth = width, + let paintWidth = width, paintHeight = height; - var tmpCanvasId = "prescale1"; + let tmpCanvasId = "prescale1"; while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { - var newWidth = paintWidth, + let newWidth = paintWidth, newHeight = paintHeight; if (widthScale > 2 && paintWidth > 1) { @@ -6586,7 +6727,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); if (this.imageLayer) { - var position = this.getCanvasPosition(0, -height); + const position = this.getCanvasPosition(0, -height); this.imageLayer.appendImage({ imgData, left: position[0], @@ -6603,22 +6744,22 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return; } - var ctx = this.ctx; - var w = imgData.width; - var h = imgData.height; - var tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); - var tmpCtx = tmpCanvas.context; + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); - for (var i = 0, ii = map.length; i < ii; i++) { - var entry = map[i]; + for (let i = 0, ii = map.length; i < ii; i++) { + const entry = map[i]; ctx.save(); ctx.transform.apply(ctx, entry.transform); ctx.scale(1, -1); ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); if (this.imageLayer) { - var position = this.getCanvasPosition(entry.x, entry.y); + const position = this.getCanvasPosition(entry.x, entry.y); this.imageLayer.appendImage({ imgData, left: position[0], @@ -6665,7 +6806,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { beginCompat: function CanvasGraphics_beginCompat() {}, endCompat: function CanvasGraphics_endCompat() {}, consumePath: function CanvasGraphics_consumePath() { - var ctx = this.ctx; + const ctx = this.ctx; if (this.pendingClip) { if (this.pendingClip === EO_CLIP) { @@ -6680,17 +6821,28 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.beginPath(); }, - getSinglePixelWidth(scale) { + getSinglePixelWidth() { if (this._cachedGetSinglePixelWidth === null) { - const inverse = this.ctx.mozCurrentTransformInverse; - this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3])); + const m = this.ctx.mozCurrentTransform; + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const sqNorm1 = m[0] ** 2 + m[2] ** 2; + const sqNorm2 = m[1] ** 2 + m[3] ** 2; + const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet; + + if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) { + this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight); + } else if (absDet > Number.EPSILON) { + this._cachedGetSinglePixelWidth = pixelHeight * 1.0000001; + } else { + this._cachedGetSinglePixelWidth = 1; + } } return this._cachedGetSinglePixelWidth; }, getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { - var transform = this.ctx.mozCurrentTransform; + const transform = this.ctx.mozCurrentTransform; return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; }, isContentVisible: function CanvasGraphics_isContentVisible() { @@ -6704,7 +6856,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } }; - for (var op in _util.OPS) { + for (const op in _util.OPS) { CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; } @@ -6715,20 +6867,19 @@ exports.CanvasGraphics = CanvasGraphics; /***/ }), /* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getShadingPatternFromIR = getShadingPatternFromIR; exports.TilingPattern = void 0; var _util = __w_pdfjs_require__(2); -var ShadingIRs = {}; +const ShadingIRs = {}; function applyBoundingBox(ctx, bbox) { if (!bbox || typeof Path2D === "undefined") { @@ -6744,18 +6895,17 @@ function applyBoundingBox(ctx, bbox) { ShadingIRs.RadialAxial = { fromIR: function RadialAxial_fromIR(raw) { - var type = raw[1]; - var bbox = raw[2]; - var colorStops = raw[3]; - var p0 = raw[4]; - var p1 = raw[5]; - var r0 = raw[6]; - var r1 = raw[7]; + const type = raw[1]; + const bbox = raw[2]; + const colorStops = raw[3]; + const p0 = raw[4]; + const p1 = raw[5]; + const r0 = raw[6]; + const r1 = raw[7]; return { - type: "Pattern", getPattern: function RadialAxial_getPattern(ctx) { applyBoundingBox(ctx, bbox); - var grad; + let grad; if (type === "axial") { grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); @@ -6763,8 +6913,8 @@ ShadingIRs.RadialAxial = { grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); } - for (var i = 0, ii = colorStops.length; i < ii; ++i) { - var c = colorStops[i]; + for (let i = 0, ii = colorStops.length; i < ii; ++i) { + const c = colorStops[i]; grad.addColorStop(c[0], c[1]); } @@ -6774,13 +6924,13 @@ ShadingIRs.RadialAxial = { } }; -var createMeshCanvas = function createMeshCanvasClosure() { +const createMeshCanvas = function createMeshCanvasClosure() { function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { - var coords = context.coords, - colors = context.colors; - var bytes = data.data, - rowSize = data.width * 4; - var tmp; + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; if (coords[p1 + 1] > coords[p2 + 1]) { tmp = p1; @@ -6809,32 +6959,32 @@ var createMeshCanvas = function createMeshCanvasClosure() { c2 = tmp; } - var x1 = (coords[p1] + context.offsetX) * context.scaleX; - var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; - var x2 = (coords[p2] + context.offsetX) * context.scaleX; - var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; - var x3 = (coords[p3] + context.offsetX) * context.scaleX; - var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; if (y1 >= y3) { return; } - var c1r = colors[c1], - c1g = colors[c1 + 1], - c1b = colors[c1 + 2]; - var c2r = colors[c2], - c2g = colors[c2 + 1], - c2b = colors[c2 + 2]; - var c3r = colors[c3], - c3g = colors[c3 + 1], - c3b = colors[c3 + 2]; - var minY = Math.round(y1), - maxY = Math.round(y3); - var xa, car, cag, cab; - var xb, cbr, cbg, cbb; - - for (var y = minY; y <= maxY; y++) { + const c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { if (y < y2) { let k; @@ -6881,11 +7031,11 @@ var createMeshCanvas = function createMeshCanvasClosure() { cbr = c1r - (c1r - c3r) * k; cbg = c1g - (c1g - c3g) * k; cbb = c1b - (c1b - c3b) * k; - var x1_ = Math.round(Math.min(xa, xb)); - var x2_ = Math.round(Math.max(xa, xb)); - var j = rowSize * y + x1_ * 4; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; - for (var x = x1_; x <= x2_; x++) { + for (let x = x1_; x <= x2_; x++) { k = (xa - x) / (xa - xb); if (k < 0) { @@ -6903,20 +7053,20 @@ var createMeshCanvas = function createMeshCanvasClosure() { } function drawFigure(data, figure, context) { - var ps = figure.coords; - var cs = figure.colors; - var i, ii; + const ps = figure.coords; + const cs = figure.colors; + let i, ii; switch (figure.type) { case "lattice": - var verticesPerRow = figure.verticesPerRow; - var rows = Math.floor(ps.length / verticesPerRow) - 1; - var cols = verticesPerRow - 1; + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; for (i = 0; i < rows; i++) { - var q = i * verticesPerRow; + let q = i * verticesPerRow; - for (var j = 0; j < cols; j++, q++) { + for (let j = 0; j < cols; j++, q++) { drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); } @@ -6937,18 +7087,18 @@ var createMeshCanvas = function createMeshCanvasClosure() { } function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) { - var EXPECTED_SCALE = 1.1; - var MAX_PATTERN_SIZE = 3000; - var BORDER_SIZE = 2; - var offsetX = Math.floor(bounds[0]); - var offsetY = Math.floor(bounds[1]); - var boundsWidth = Math.ceil(bounds[2]) - offsetX; - var boundsHeight = Math.ceil(bounds[3]) - offsetY; - var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); - var scaleX = boundsWidth / width; - var scaleY = boundsHeight / height; - var context = { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + const boundsWidth = Math.ceil(bounds[2]) - offsetX; + const boundsHeight = Math.ceil(bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { coords, colors, offsetX: -offsetX, @@ -6956,9 +7106,9 @@ var createMeshCanvas = function createMeshCanvasClosure() { scaleX: 1 / scaleX, scaleY: 1 / scaleY }; - var paddedWidth = width + BORDER_SIZE * 2; - var paddedHeight = height + BORDER_SIZE * 2; - var canvas, tmpCanvas, i, ii; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + let canvas, tmpCanvas, i, ii; if (webGLContext.isEnabled) { canvas = webGLContext.drawFigures({ @@ -6973,11 +7123,11 @@ var createMeshCanvas = function createMeshCanvasClosure() { canvas = tmpCanvas.canvas; } else { tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); - var tmpCtx = tmpCanvas.context; - var data = tmpCtx.createImageData(width, height); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); if (backgroundColor) { - var bytes = data.data; + const bytes = data.data; for (i = 0, ii = bytes.length; i < ii; i += 4) { bytes[i] = backgroundColor[0]; @@ -7009,18 +7159,17 @@ var createMeshCanvas = function createMeshCanvasClosure() { ShadingIRs.Mesh = { fromIR: function Mesh_fromIR(raw) { - var coords = raw[2]; - var colors = raw[3]; - var figures = raw[4]; - var bounds = raw[5]; - var matrix = raw[6]; - var bbox = raw[7]; - var background = raw[8]; + const coords = raw[2]; + const colors = raw[3]; + const figures = raw[4]; + const bounds = raw[5]; + const matrix = raw[6]; + const bbox = raw[7]; + const background = raw[8]; return { - type: "Pattern", getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { applyBoundingBox(ctx, bbox); - var scale; + let scale; if (shadingFill) { scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); @@ -7028,13 +7177,13 @@ ShadingIRs.Mesh = { scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); if (matrix) { - var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); + const matrixScale = _util.Util.singularValueDecompose2dScale(matrix); scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } } - var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext); + const temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext); if (!shadingFill) { ctx.setTransform.apply(ctx, owner.baseTransform); @@ -7054,7 +7203,6 @@ ShadingIRs.Mesh = { ShadingIRs.Dummy = { fromIR: function Dummy_fromIR() { return { - type: "Pattern", getPattern: function Dummy_fromIR_getPattern() { return "hotpink"; } @@ -7063,7 +7211,7 @@ ShadingIRs.Dummy = { }; function getShadingPatternFromIR(raw) { - var shadingIR = ShadingIRs[raw[0]]; + const shadingIR = ShadingIRs[raw[0]]; if (!shadingIR) { throw new Error(`Unknown IR type: ${raw[0]}`); @@ -7072,12 +7220,12 @@ function getShadingPatternFromIR(raw) { return shadingIR.fromIR(raw); } -var TilingPattern = function TilingPatternClosure() { - var PaintType = { +const TilingPattern = function TilingPatternClosure() { + const PaintType = { COLORED: 1, UNCOLORED: 2 }; - var MAX_PATTERN_SIZE = 3000; + const MAX_PATTERN_SIZE = 3000; function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; @@ -7090,36 +7238,35 @@ var TilingPattern = function TilingPatternClosure() { this.color = color; this.canvasGraphicsFactory = canvasGraphicsFactory; this.baseTransform = baseTransform; - this.type = "Pattern"; this.ctx = ctx; } TilingPattern.prototype = { createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { - var operatorList = this.operatorList; - var bbox = this.bbox; - var xstep = this.xstep; - var ystep = this.ystep; - var paintType = this.paintType; - var tilingType = this.tilingType; - var color = this.color; - var canvasGraphicsFactory = this.canvasGraphicsFactory; + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; (0, _util.info)("TilingType: " + tilingType); - var x0 = bbox[0], - y0 = bbox[1], - x1 = bbox[2], - y1 = bbox[3]; + const x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; - var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); - var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; - var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); - var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); - var tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); - var tmpCtx = tmpCanvas.context; - var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); graphics.groupLevel = owner.groupLevel; this.setFillAndStrokeStyleToContext(graphics, paintType, color); graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); @@ -7132,8 +7279,8 @@ var TilingPattern = function TilingPatternClosure() { }, getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) { step = Math.abs(step); - var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize); - var size = Math.ceil(step * scale); + const maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); if (size >= maxSize) { size = maxSize; @@ -7148,8 +7295,8 @@ var TilingPattern = function TilingPatternClosure() { }, clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { if (Array.isArray(bbox) && bbox.length === 4) { - var bboxWidth = x1 - x0; - var bboxHeight = y1 - y0; + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); graphics.clip(); graphics.endPath(); @@ -7161,7 +7308,7 @@ var TilingPattern = function TilingPatternClosure() { switch (paintType) { case PaintType.COLORED: - var ctx = this.ctx; + const ctx = this.ctx; context.fillStyle = ctx.fillStyle; context.strokeStyle = ctx.strokeStyle; current.fillColor = ctx.fillStyle; @@ -7169,7 +7316,7 @@ var TilingPattern = function TilingPatternClosure() { break; case PaintType.UNCOLORED: - var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); context.fillStyle = cssColor; context.strokeStyle = cssColor; @@ -7185,7 +7332,7 @@ var TilingPattern = function TilingPatternClosure() { ctx = this.ctx; ctx.setTransform.apply(ctx, this.baseTransform); ctx.transform.apply(ctx, this.matrix); - var temporaryPatternCanvas = this.createPatternCanvas(owner); + const temporaryPatternCanvas = this.createPatternCanvas(owner); return ctx.createPattern(temporaryPatternCanvas, "repeat"); } }; @@ -7196,14 +7343,13 @@ exports.TilingPattern = TilingPattern; /***/ }), /* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.GlobalWorkerOptions = void 0; const GlobalWorkerOptions = Object.create(null); exports.GlobalWorkerOptions = GlobalWorkerOptions; @@ -7212,14 +7358,13 @@ GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" /***/ }), /* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.MessageHandler = void 0; var _util = __w_pdfjs_require__(2); @@ -7713,14 +7858,13 @@ exports.MessageHandler = MessageHandler; /***/ }), /* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Metadata = void 0; var _util = __w_pdfjs_require__(2); @@ -7731,13 +7875,17 @@ class Metadata { constructor(data) { (0, _util.assert)(typeof data === "string", "Metadata: input is not a string"); data = this._repair(data); - const parser = new _xml_parser.SimpleXMLParser(); + const parser = new _xml_parser.SimpleXMLParser({ + lowerCaseName: true + }); const xmlDocument = parser.parseFromString(data); this._metadataMap = new Map(); if (xmlDocument) { this._parse(xmlDocument); } + + this._data = data; } _repair(data) { @@ -7780,49 +7928,79 @@ class Metadata { }); } + _getSequence(entry) { + const name = entry.nodeName; + + if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") { + return null; + } + + return entry.childNodes.filter(node => node.nodeName === "rdf:li"); + } + + _getCreators(entry) { + if (entry.nodeName !== "dc:creator") { + return false; + } + + if (!entry.hasChildNodes()) { + return true; + } + + const seqNode = entry.childNodes[0]; + const authors = this._getSequence(seqNode) || []; + + this._metadataMap.set(entry.nodeName, authors.map(node => node.textContent.trim())); + + return true; + } + _parse(xmlDocument) { let rdf = xmlDocument.documentElement; - if (rdf.nodeName.toLowerCase() !== "rdf:rdf") { + if (rdf.nodeName !== "rdf:rdf") { rdf = rdf.firstChild; - while (rdf && rdf.nodeName.toLowerCase() !== "rdf:rdf") { + while (rdf && rdf.nodeName !== "rdf:rdf") { rdf = rdf.nextSibling; } } - const nodeName = rdf ? rdf.nodeName.toLowerCase() : null; - - if (!rdf || nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { + if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) { return; } - const children = rdf.childNodes; - - for (let i = 0, ii = children.length; i < ii; i++) { - const desc = children[i]; - - if (desc.nodeName.toLowerCase() !== "rdf:description") { + for (const desc of rdf.childNodes) { + if (desc.nodeName !== "rdf:description") { continue; } - for (let j = 0, jj = desc.childNodes.length; j < jj; j++) { - if (desc.childNodes[j].nodeName.toLowerCase() !== "#text") { - const entry = desc.childNodes[j]; - const name = entry.nodeName.toLowerCase(); + for (const entry of desc.childNodes) { + const name = entry.nodeName; - this._metadataMap.set(name, entry.textContent.trim()); + if (name === "#text") { + continue; + } + + if (this._getCreators(entry)) { + continue; } + + this._metadataMap.set(name, entry.textContent.trim()); } } } + getRaw() { + return this._data; + } + get(name) { - return this._metadataMap.has(name) ? this._metadataMap.get(name) : null; + return this._metadataMap.get(name) ?? null; } getAll() { - return Object.fromEntries(this._metadataMap); + return (0, _util.objectFromEntries)(this._metadataMap); } has(name) { @@ -7835,15 +8013,17 @@ exports.Metadata = Metadata; /***/ }), /* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.SimpleXMLParser = void 0; +})); +exports.SimpleXMLParser = exports.SimpleDOMNode = void 0; + +var _util = __w_pdfjs_require__(2); + const XMLParserErrorCode = { NoError: 0, EndOfDocument: -1, @@ -7877,9 +8057,9 @@ class XMLParserBase { _resolveEntities(s) { return s.replace(/&([^;]+);/g, (all, entity) => { if (entity.substring(0, 2) === "#x") { - return String.fromCharCode(parseInt(entity.substring(2), 16)); + return String.fromCodePoint(parseInt(entity.substring(2), 16)); } else if (entity.substring(0, 1) === "#") { - return String.fromCharCode(parseInt(entity.substring(1), 10)); + return String.fromCodePoint(parseInt(entity.substring(1), 10)); } switch (entity) { @@ -8184,14 +8364,111 @@ class SimpleDOMNode { return this.childNodes && this.childNodes.length > 0; } + searchNode(paths, pos) { + if (pos >= paths.length) { + return this; + } + + const component = paths[pos]; + const stack = []; + let node = this; + + while (true) { + if (component.name === node.nodeName) { + if (component.pos === 0) { + const res = node.searchNode(paths, pos + 1); + + if (res !== null) { + return res; + } + } else if (stack.length === 0) { + return null; + } else { + const [parent] = stack.pop(); + let siblingPos = 0; + + for (const child of parent.childNodes) { + if (component.name === child.nodeName) { + if (siblingPos === component.pos) { + return child.searchNode(paths, pos + 1); + } + + siblingPos++; + } + } + + return node.searchNode(paths, pos + 1); + } + } + + if (node.childNodes && node.childNodes.length !== 0) { + stack.push([node, 0]); + node = node.childNodes[0]; + } else if (stack.length === 0) { + return null; + } else { + while (stack.length !== 0) { + const [parent, currentPos] = stack.pop(); + const newPos = currentPos + 1; + + if (newPos < parent.childNodes.length) { + stack.push([parent, newPos]); + node = parent.childNodes[newPos]; + break; + } + } + + if (stack.length === 0) { + return null; + } + } + } + } + + dump(buffer) { + if (this.nodeName === "#text") { + buffer.push((0, _util.encodeToXmlString)(this.nodeValue)); + return; + } + + buffer.push(`<${this.nodeName}`); + + if (this.attributes) { + for (const attribute of this.attributes) { + buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`); + } + } + + if (this.hasChildNodes()) { + buffer.push(">"); + + for (const child of this.childNodes) { + child.dump(buffer); + } + + buffer.push(`</${this.nodeName}>`); + } else if (this.nodeValue) { + buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`); + } else { + buffer.push("/>"); + } + } + } +exports.SimpleDOMNode = SimpleDOMNode; + class SimpleXMLParser extends XMLParserBase { - constructor() { + constructor({ + hasAttributes = false, + lowerCaseName = false + }) { super(); this._currentFragment = null; this._stack = null; this._errorCode = XMLParserErrorCode.NoError; + this._hasAttributes = hasAttributes; + this._lowerCaseName = lowerCaseName; } parseFromString(data) { @@ -8241,9 +8518,17 @@ class SimpleXMLParser extends XMLParserBase { } onBeginElement(name, attributes, isEmpty) { + if (this._lowerCaseName) { + name = name.toLowerCase(); + } + const node = new SimpleDOMNode(name); node.childNodes = []; + if (this._hasAttributes) { + node.attributes = attributes; + } + this._currentFragment.push(node); if (isEmpty) { @@ -8278,14 +8563,13 @@ exports.SimpleXMLParser = SimpleXMLParser; /***/ }), /* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.OptionalContentConfig = void 0; var _util = __w_pdfjs_require__(2); @@ -8434,7 +8718,7 @@ class OptionalContentConfig { return null; } - return Object.fromEntries(this._groups); + return (0, _util.objectFromEntries)(this._groups); } getGroup(id) { @@ -8447,14 +8731,13 @@ exports.OptionalContentConfig = OptionalContentConfig; /***/ }), /* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFDataTransportStream = void 0; var _util = __w_pdfjs_require__(2); @@ -8466,7 +8749,7 @@ class PDFDataTransportStream { this._progressiveDone = params.progressiveDone || false; const initialData = params.initialData; - if (initialData && initialData.length > 0) { + if (initialData?.length > 0) { const buffer = new Uint8Array(initialData).buffer; this._queuedChunks.push(buffer); @@ -8531,14 +8814,14 @@ class PDFDataTransportStream { } get _progressiveDataLength() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; + return this._fullRequestReader?._loaded ?? 0; } _onProgress(evt) { if (evt.total === undefined) { const firstReader = this._rangeReaders[0]; - if (firstReader && firstReader.onProgress) { + if (firstReader?.onProgress) { firstReader.onProgress({ loaded: evt.loaded }); @@ -8546,7 +8829,7 @@ class PDFDataTransportStream { } else { const fullReader = this._fullRequestReader; - if (fullReader && fullReader.onProgress) { + if (fullReader?.onProgress) { fullReader.onProgress({ loaded: evt.loaded, total: evt.total @@ -8802,14 +9085,13 @@ class PDFDataTransportStreamRangeReader { /***/ }), /* 18 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.WebGLContext = void 0; var _util = __w_pdfjs_require__(2); @@ -8857,15 +9139,15 @@ class WebGLContext { exports.WebGLContext = WebGLContext; -var WebGLUtils = function WebGLUtilsClosure() { +const WebGLUtils = function WebGLUtilsClosure() { function loadShader(gl, code, shaderType) { - var shader = gl.createShader(shaderType); + const shader = gl.createShader(shaderType); gl.shaderSource(shader, code); gl.compileShader(shader); - var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); if (!compiled) { - var errorMsg = gl.getShaderInfoLog(shader); + const errorMsg = gl.getShaderInfoLog(shader); throw new Error("Error during shader compilation: " + errorMsg); } @@ -8881,17 +9163,17 @@ var WebGLUtils = function WebGLUtilsClosure() { } function createProgram(gl, shaders) { - var program = gl.createProgram(); + const program = gl.createProgram(); - for (var i = 0, ii = shaders.length; i < ii; ++i) { + for (let i = 0, ii = shaders.length; i < ii; ++i) { gl.attachShader(program, shaders[i]); } gl.linkProgram(program); - var linked = gl.getProgramParameter(program, gl.LINK_STATUS); + const linked = gl.getProgramParameter(program, gl.LINK_STATUS); if (!linked) { - var errorMsg = gl.getProgramInfoLog(program); + const errorMsg = gl.getProgramInfoLog(program); throw new Error("Error during program linking: " + errorMsg); } @@ -8900,7 +9182,7 @@ var WebGLUtils = function WebGLUtilsClosure() { function createTexture(gl, image, textureId) { gl.activeTexture(textureId); - var texture = gl.createTexture(); + const texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); @@ -8910,7 +9192,7 @@ var WebGLUtils = function WebGLUtilsClosure() { return texture; } - var currentGL, currentCanvas; + let currentGL, currentCanvas; function generateGL() { if (currentGL) { @@ -8923,7 +9205,7 @@ var WebGLUtils = function WebGLUtilsClosure() { }); } - var smaskVertexShaderCode = "\ + const smaskVertexShaderCode = "\ attribute vec2 a_position; \ attribute vec2 a_texCoord; \ \ @@ -8937,7 +9219,7 @@ var WebGLUtils = function WebGLUtilsClosure() { \ v_texCoord = a_texCoord; \ } "; - var smaskFragmentShaderCode = "\ + const smaskFragmentShaderCode = "\ precision mediump float; \ \ uniform vec4 u_backdrop; \ @@ -8965,30 +9247,29 @@ var WebGLUtils = function WebGLUtilsClosure() { imageColor.rgb *= imageColor.a; \ gl_FragColor = imageColor; \ } "; - var smaskCache = null; + let smaskCache = null; function initSmaskGL() { - var canvas, gl; generateGL(); - canvas = currentCanvas; + const canvas = currentCanvas; currentCanvas = null; - gl = currentGL; + const gl = currentGL; currentGL = null; - var vertexShader = createVertexShader(gl, smaskVertexShaderCode); - var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); + const vertexShader = createVertexShader(gl, smaskVertexShaderCode); + const fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); + const program = createProgram(gl, [vertexShader, fragmentShader]); gl.useProgram(program); - var cache = {}; + const cache = {}; cache.gl = gl; cache.canvas = canvas; cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution"); cache.positionLocation = gl.getAttribLocation(program, "a_position"); cache.backdropLocation = gl.getUniformLocation(program, "u_backdrop"); cache.subtypeLocation = gl.getUniformLocation(program, "u_subtype"); - var texCoordLocation = gl.getAttribLocation(program, "a_texCoord"); - var texLayerLocation = gl.getUniformLocation(program, "u_image"); - var texMaskLocation = gl.getUniformLocation(program, "u_mask"); - var texCoordBuffer = gl.createBuffer(); + const texCoordLocation = gl.getAttribLocation(program, "a_texCoord"); + const texLayerLocation = gl.getUniformLocation(program, "u_image"); + const texMaskLocation = gl.getUniformLocation(program, "u_mask"); + const texCoordBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); gl.enableVertexAttribArray(texCoordLocation); @@ -8999,16 +9280,16 @@ var WebGLUtils = function WebGLUtilsClosure() { } function composeSMask(layer, mask, properties) { - var width = layer.width, - height = layer.height; + const width = layer.width, + height = layer.height; if (!smaskCache) { initSmaskGL(); } - var cache = smaskCache, - canvas = cache.canvas, - gl = cache.gl; + const cache = smaskCache, + canvas = cache.canvas, + gl = cache.gl; canvas.width = width; canvas.height = height; gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); @@ -9021,9 +9302,9 @@ var WebGLUtils = function WebGLUtilsClosure() { } gl.uniform1i(cache.subtypeLocation, properties.subtype === "Luminosity" ? 1 : 0); - var texture = createTexture(gl, layer, gl.TEXTURE0); - var maskTexture = createTexture(gl, mask, gl.TEXTURE1); - var buffer = gl.createBuffer(); + const texture = createTexture(gl, layer, gl.TEXTURE0); + const maskTexture = createTexture(gl, mask, gl.TEXTURE1); + const buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); gl.enableVertexAttribArray(cache.positionLocation); @@ -9040,7 +9321,7 @@ var WebGLUtils = function WebGLUtilsClosure() { return canvas; } - var figuresVertexShaderCode = "\ + const figuresVertexShaderCode = "\ attribute vec2 a_position; \ attribute vec3 a_color; \ \ @@ -9057,7 +9338,7 @@ var WebGLUtils = function WebGLUtilsClosure() { \ v_color = vec4(a_color / 255.0, 1.0); \ } "; - var figuresFragmentShaderCode = "\ + const figuresFragmentShaderCode = "\ precision mediump float; \ \ varying vec4 v_color; \ @@ -9065,20 +9346,19 @@ var WebGLUtils = function WebGLUtilsClosure() { void main() { \ gl_FragColor = v_color; \ } "; - var figuresCache = null; + let figuresCache = null; function initFiguresGL() { - var canvas, gl; generateGL(); - canvas = currentCanvas; + const canvas = currentCanvas; currentCanvas = null; - gl = currentGL; + const gl = currentGL; currentGL = null; - var vertexShader = createVertexShader(gl, figuresVertexShaderCode); - var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); - var program = createProgram(gl, [vertexShader, fragmentShader]); + const vertexShader = createVertexShader(gl, figuresVertexShaderCode); + const fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); + const program = createProgram(gl, [vertexShader, fragmentShader]); gl.useProgram(program); - var cache = {}; + const cache = {}; cache.gl = gl; cache.canvas = canvas; cache.resolutionLocation = gl.getUniformLocation(program, "u_resolution"); @@ -9094,20 +9374,19 @@ var WebGLUtils = function WebGLUtilsClosure() { initFiguresGL(); } - var cache = figuresCache, - canvas = cache.canvas, - gl = cache.gl; + const cache = figuresCache, + canvas = cache.canvas, + gl = cache.gl; canvas.width = width; canvas.height = height; gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); gl.uniform2f(cache.resolutionLocation, width, height); - var count = 0; - var i, ii, rows; + let count = 0; - for (i = 0, ii = figures.length; i < ii; i++) { + for (let i = 0, ii = figures.length; i < ii; i++) { switch (figures[i].type) { case "lattice": - rows = figures[i].coords.length / figures[i].verticesPerRow | 0; + const rows = figures[i].coords.length / figures[i].verticesPerRow | 0; count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; break; @@ -9117,27 +9396,27 @@ var WebGLUtils = function WebGLUtilsClosure() { } } - var coords = new Float32Array(count * 2); - var colors = new Uint8Array(count * 3); - var coordsMap = context.coords, - colorsMap = context.colors; - var pIndex = 0, + const coords = new Float32Array(count * 2); + const colors = new Uint8Array(count * 3); + const coordsMap = context.coords, + colorsMap = context.colors; + let pIndex = 0, cIndex = 0; - for (i = 0, ii = figures.length; i < ii; i++) { - var figure = figures[i], - ps = figure.coords, - cs = figure.colors; + for (let i = 0, ii = figures.length; i < ii; i++) { + const figure = figures[i], + ps = figure.coords, + cs = figure.colors; switch (figure.type) { case "lattice": - var cols = figure.verticesPerRow; - rows = ps.length / cols | 0; + const cols = figure.verticesPerRow; + const rows = ps.length / cols | 0; - for (var row = 1; row < rows; row++) { - var offset = row * cols + 1; + for (let row = 1; row < rows; row++) { + let offset = row * cols + 1; - for (var col = 1; col < cols; col++, offset++) { + for (let col = 1; col < cols; col++, offset++) { coords[pIndex] = coordsMap[ps[offset - cols - 1]]; coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; coords[pIndex + 2] = coordsMap[ps[offset - cols]]; @@ -9176,7 +9455,7 @@ var WebGLUtils = function WebGLUtilsClosure() { break; case "triangles": - for (var j = 0, jj = ps.length; j < jj; j++) { + for (let j = 0, jj = ps.length; j < jj; j++) { coords[pIndex] = coordsMap[ps[j]]; coords[pIndex + 1] = coordsMap[ps[j] + 1]; colors[cIndex] = colorsMap[cs[j]]; @@ -9197,12 +9476,12 @@ var WebGLUtils = function WebGLUtilsClosure() { } gl.clear(gl.COLOR_BUFFER_BIT); - var coordsBuffer = gl.createBuffer(); + const coordsBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); gl.enableVertexAttribArray(cache.positionLocation); gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); - var colorsBuffer = gl.createBuffer(); + const colorsBuffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); gl.enableVertexAttribArray(cache.colorLocation); @@ -9230,12 +9509,12 @@ var WebGLUtils = function WebGLUtilsClosure() { drawFigures, cleanup() { - if (smaskCache && smaskCache.canvas) { + if (smaskCache?.canvas) { smaskCache.canvas.width = 0; smaskCache.canvas.height = 0; } - if (figuresCache && figuresCache.canvas) { + if (figuresCache?.canvas) { figuresCache.canvas.width = 0; figuresCache.canvas.height = 0; } @@ -9249,14 +9528,13 @@ var WebGLUtils = function WebGLUtilsClosure() { /***/ }), /* 19 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.AnnotationLayer = void 0; var _display_utils = __w_pdfjs_require__(1); @@ -9265,6 +9543,8 @@ var _util = __w_pdfjs_require__(2); var _annotation_storage = __w_pdfjs_require__(8); +var _scripting_utils = __w_pdfjs_require__(20); + class AnnotationElementFactory { static create(parameters) { const subtype = parameters.data.annotationType; @@ -9351,7 +9631,11 @@ class AnnotationElementFactory { } class AnnotationElement { - constructor(parameters, isRenderable = false, ignoreBorder = false) { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { this.isRenderable = isRenderable; this.data = parameters.data; this.layer = parameters.layer; @@ -9363,10 +9647,17 @@ class AnnotationElement { this.renderInteractiveForms = parameters.renderInteractiveForms; this.svgFactory = parameters.svgFactory; this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._mouseState = parameters.mouseState; if (isRenderable) { this.container = this._createContainer(ignoreBorder); } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } } _createContainer(ignoreBorder = false) { @@ -9381,7 +9672,7 @@ class AnnotationElement { const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); container.style.transform = `matrix(${viewport.transform.join(",")})`; - container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`; + container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`; if (!ignoreBorder && data.borderStyle.width > 0) { container.style.borderWidth = `${data.borderStyle.width}px`; @@ -9425,7 +9716,7 @@ class AnnotationElement { } if (data.color) { - container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); } else { container.style.borderWidth = 0; } @@ -9438,7 +9729,31 @@ class AnnotationElement { return container; } - _createPopup(container, trigger, data) { + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + if (!trigger) { trigger = document.createElement("div"); trigger.style.height = container.style.height; @@ -9460,6 +9775,13 @@ class AnnotationElement { container.appendChild(popup); } + _renderQuadrilaterals(className) { + this.quadrilaterals.forEach(quadrilateral => { + quadrilateral.className = className; + }); + return this.quadrilaterals; + } + render() { (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); } @@ -9468,12 +9790,14 @@ class AnnotationElement { class LinkAnnotationElement extends AnnotationElement { constructor(parameters) { - const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action); - super(parameters, isRenderable); + const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); + super(parameters, { + isRenderable, + createQuadrilaterals: true + }); } render() { - this.container.className = "linkAnnotation"; const { data, linkService @@ -9489,10 +9813,23 @@ class LinkAnnotationElement extends AnnotationElement { }); } else if (data.action) { this._bindNamedAction(link, data.action); - } else { + } else if (data.dest) { this._bindLink(link, data.dest); + } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + } else { + this._bindLink(link, ""); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.appendChild(linkElement); + return quadrilateral; + }); } + this.container.className = "linkAnnotation"; this.container.appendChild(link); return this.container; } @@ -9502,13 +9839,13 @@ class LinkAnnotationElement extends AnnotationElement { link.onclick = () => { if (destination) { - this.linkService.navigateTo(destination); + this.linkService.goToDestination(destination); } return false; }; - if (destination) { + if (destination || destination === "") { link.className = "internalLink"; } } @@ -9524,12 +9861,40 @@ class LinkAnnotationElement extends AnnotationElement { link.className = "internalLink"; } + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name + } + }); + return false; + }; + } + + link.className = "internalLink"; + } + } class TextAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable); + super(parameters, { + isRenderable + }); } render() { @@ -9545,7 +9910,7 @@ class TextAnnotationElement extends AnnotationElement { }); if (!this.data.hasPopup) { - this._createPopup(this.container, image, this.data); + this._createPopup(image, this.data); } this.container.appendChild(image); @@ -9556,26 +9921,79 @@ class TextAnnotationElement extends AnnotationElement { class WidgetAnnotationElement extends AnnotationElement { render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + return this.container; } + _getKeyModifier(event) { + return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: event.target.checked + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + } class TextWidgetAnnotationElement extends WidgetAnnotationElement { constructor(parameters) { const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; - super(parameters, isRenderable); + super(parameters, { + isRenderable + }); } render() { - const TEXT_ALIGNMENT = ["left", "center", "right"]; const storage = this.annotationStorage; const id = this.data.id; this.container.className = "textWidgetAnnotation"; let element = null; if (this.renderInteractiveForms) { - const textContent = storage.getOrCreateValue(id, this.data.fieldValue); + const textContent = storage.getOrCreateValue(id, { + value: this.data.fieldValue + }).value; + const elementData = { + userValue: null, + formattedValue: null, + beforeInputSelectionRange: null, + beforeInputValue: null + }; if (this.data.multiLine) { element = document.createElement("textarea"); @@ -9586,9 +10004,192 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement { element.setAttribute("value", textContent); } + elementData.userValue = textContent; + element.setAttribute("id", id); element.addEventListener("input", function (event) { - storage.setValue(id, event.target.value); + storage.setValue(id, { + value: event.target.value + }); }); + + let blurListener = event => { + if (elementData.formattedValue) { + event.target.value = elementData.formattedValue; + } + + event.target.setSelectionRange(0, 0); + elementData.beforeInputSelectionRange = null; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; + } + }); + element.addEventListener("updatefromsandbox", function (event) { + const { + detail + } = event; + const actions = { + value() { + elementData.userValue = detail.value || ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + + if (!elementData.formattedValue) { + event.target.value = elementData.userValue; + } + }, + + valueAsString() { + elementData.formattedValue = detail.valueAsString || ""; + + if (event.target !== document.activeElement) { + event.target.value = elementData.formattedValue; + } + + storage.setValue(id, { + formattedValue: elementData.formattedValue + }); + }, + + focus() { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + + userName() { + event.target.title = detail.userName; + }, + + hidden() { + event.target.style.visibility = detail.hidden ? "hidden" : "visible"; + storage.setValue(id, { + hidden: detail.hidden + }); + }, + + editable() { + event.target.disabled = !detail.editable; + }, + + selRange() { + const [selStart, selEnd] = detail.selRange; + + if (selStart >= 0 && selEnd < event.target.value.length) { + event.target.setSelectionRange(selStart, selEnd); + } + }, + + strokeColor() { + const color = detail.strokeColor; + event.target.style.color = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + } + + }; + Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]()); + }); + + if (this.data.actions) { + element.addEventListener("keydown", event => { + elementData.beforeInputValue = event.target.value; + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + elementData.userValue = event.target.value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: event.target.value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + if (this._mouseState.isDown) { + elementData.userValue = event.target.value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: event.target.value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + element.addEventListener("mousedown", event => { + elementData.beforeInputValue = event.target.value; + elementData.beforeInputSelectionRange = null; + }); + element.addEventListener("keyup", event => { + if (event.target.selectionStart === event.target.selectionEnd) { + elementData.beforeInputSelectionRange = null; + } + }); + element.addEventListener("select", event => { + elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd]; + }); + + if ("Keystroke" in this.data.actions) { + element.addEventListener("input", event => { + let selStart = -1; + let selEnd = -1; + + if (elementData.beforeInputSelectionRange) { + [selStart, selEnd] = elementData.beforeInputSelectionRange; + } + + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: elementData.beforeInputValue, + change: event.data, + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + element.disabled = this.data.readOnly; element.name = this.data.fieldName; @@ -9607,59 +10208,49 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement { element.textContent = this.data.fieldValue; element.style.verticalAlign = "middle"; element.style.display = "table-cell"; - let font = null; - - if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) { - font = this.page.commonObjs.get(this.data.fontRefName); - } - - this._setTextStyle(element, font); } - if (this.data.textAlignment !== null) { - element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; - } + this._setTextStyle(element); this.container.appendChild(element); return this.container; } - _setTextStyle(element, font) { + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontSize, + fontColor + } = this.data.defaultAppearanceData; const style = element.style; - style.fontSize = `${this.data.fontSize}px`; - style.direction = this.data.fontDirection < 0 ? "rtl" : "ltr"; - if (!font) { - return; + if (fontSize) { + style.fontSize = `${fontSize}px`; } - let bold = "normal"; + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); - if (font.black) { - bold = "900"; - } else if (font.bold) { - bold = "bold"; + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; } - - style.fontWeight = bold; - style.fontStyle = font.italic ? "italic" : "normal"; - const fontFamily = font.loadedName ? `"${font.loadedName}", ` : ""; - const fallbackName = font.fallbackName || "Helvetica, sans-serif"; - style.fontFamily = fontFamily + fallbackName; } } class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { constructor(parameters) { - super(parameters, parameters.renderInteractiveForms); + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); } render() { const storage = this.annotationStorage; const data = this.data; const id = data.id; - const value = storage.getOrCreateValue(id, data.fieldValue && data.fieldValue !== "Off"); + const value = storage.getOrCreateValue(id, { + value: data.fieldValue && data.fieldValue !== "Off" + }).value; this.container.className = "buttonWidgetAnnotation checkBox"; const element = document.createElement("input"); element.disabled = data.readOnly; @@ -9670,9 +10261,61 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { element.setAttribute("checked", true); } + element.setAttribute("id", id); element.addEventListener("change", function (event) { - storage.setValue(id, event.target.checked); + const name = event.target.name; + + for (const checkbox of document.getElementsByName(name)) { + if (checkbox !== event.target) { + checkbox.checked = false; + storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), { + value: false + }); + } + } + + storage.setValue(id, { + value: event.target.checked + }); }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", event => { + const { + detail + } = event; + const actions = { + value() { + event.target.checked = detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + }, + + focus() { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + + hidden() { + event.target.style.visibility = detail.hidden ? "hidden" : "visible"; + storage.setValue(id, { + hidden: detail.hidden + }); + }, + + editable() { + event.target.disabled = !detail.editable; + } + + }; + Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]()); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + this.container.appendChild(element); return this.container; } @@ -9681,7 +10324,9 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { constructor(parameters) { - super(parameters, parameters.renderInteractiveForms); + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); } render() { @@ -9689,7 +10334,9 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { const storage = this.annotationStorage; const data = this.data; const id = data.id; - const value = storage.getOrCreateValue(id, data.fieldValue === data.buttonValue); + const value = storage.getOrCreateValue(id, { + value: data.fieldValue === data.buttonValue + }).value; const element = document.createElement("input"); element.disabled = data.readOnly; element.type = "radio"; @@ -9699,17 +10346,75 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { element.setAttribute("checked", true); } + element.setAttribute("pdfButtonValue", data.buttonValue); + element.setAttribute("id", id); element.addEventListener("change", function (event) { - const name = event.target.name; + const { + target + } = event; - for (const radio of document.getElementsByName(name)) { - if (radio !== event.target) { - storage.setValue(radio.parentNode.getAttribute("data-annotation-id"), false); + for (const radio of document.getElementsByName(target.name)) { + if (radio !== target) { + storage.setValue(radio.getAttribute("id"), { + value: false + }); } } - storage.setValue(id, event.target.checked); + storage.setValue(id, { + value: target.checked + }); }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", event => { + const { + detail + } = event; + const actions = { + value() { + const fieldValue = detail.value; + + for (const radio of document.getElementsByName(event.target.name)) { + const radioId = radio.getAttribute("id"); + + if (fieldValue === radio.getAttribute("pdfButtonValue")) { + radio.setAttribute("checked", true); + storage.setValue(radioId, { + value: true + }); + } else { + storage.setValue(radioId, { + value: false + }); + } + } + }, + + focus() { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + + hidden() { + event.target.style.visibility = detail.hidden ? "hidden" : "visible"; + storage.setValue(id, { + hidden: detail.hidden + }); + }, + + editable() { + event.target.disabled = !detail.editable; + } + + }; + Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]()); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + this.container.appendChild(element); return this.container; } @@ -9720,6 +10425,11 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { render() { const container = super.render(); container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + return container; } @@ -9727,17 +10437,22 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { constructor(parameters) { - super(parameters, parameters.renderInteractiveForms); + super(parameters, { + isRenderable: parameters.renderInteractiveForms + }); } render() { this.container.className = "choiceWidgetAnnotation"; const storage = this.annotationStorage; const id = this.data.id; - storage.getOrCreateValue(id, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null); + storage.getOrCreateValue(id, { + value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined + }); const selectElement = document.createElement("select"); selectElement.disabled = this.data.readOnly; selectElement.name = this.data.fieldName; + selectElement.setAttribute("id", id); if (!this.data.combo) { selectElement.size = this.data.options.length; @@ -9759,11 +10474,77 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { selectElement.appendChild(optionElement); } - selectElement.addEventListener("input", function (event) { + function getValue(event) { const options = event.target.options; - const value = options[options.selectedIndex].value; - storage.setValue(id, value); - }); + return options[options.selectedIndex].value; + } + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", event => { + const { + detail + } = event; + const actions = { + value() { + const options = event.target.options; + const value = detail.value; + const i = options.indexOf(value); + + if (i !== -1) { + options.selectedIndex = i; + storage.setValue(id, { + value + }); + } + }, + + focus() { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + + hidden() { + event.target.style.visibility = detail.hidden ? "hidden" : "visible"; + storage.setValue(id, { + hidden: detail.hidden + }); + }, + + editable() { + event.target.disabled = !detail.editable; + } + + }; + Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]()); + }); + selectElement.addEventListener("input", event => { + const value = getValue(event); + storage.setValue(id, { + value + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + changeEx: value, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event) + }); + }); + } + this.container.appendChild(selectElement); return this.container; } @@ -9773,7 +10554,9 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { class PopupAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.title || parameters.data.contents); - super(parameters, isRenderable); + super(parameters, { + isRenderable + }); } render() { @@ -9785,24 +10568,29 @@ class PopupAnnotationElement extends AnnotationElement { } const selector = `[data-annotation-id="${this.data.parentId}"]`; - const parentElement = this.layer.querySelector(selector); + const parentElements = this.layer.querySelectorAll(selector); - if (!parentElement) { + if (parentElements.length === 0) { return this.container; } const popup = new PopupElement({ container: this.container, - trigger: parentElement, + trigger: Array.from(parentElements), color: this.data.color, title: this.data.title, modificationDate: this.data.modificationDate, contents: this.data.contents }); - const parentLeft = parseFloat(parentElement.style.left); - const parentWidth = parseFloat(parentElement.style.width); - this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`; - this.container.style.left = `${parentLeft + parentWidth}px`; + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`; + this.container.style.left = `${popupLeft}px`; + this.container.style.top = `${popupTop}px`; this.container.appendChild(popup.render()); return this.container; } @@ -9835,7 +10623,7 @@ class PopupElement { const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); } const title = document.createElement("h1"); @@ -9858,9 +10646,16 @@ class PopupElement { const contents = this._formatContents(this.contents); popup.appendChild(contents); - this.trigger.addEventListener("click", this._toggle.bind(this)); - this.trigger.addEventListener("mouseover", this._show.bind(this, false)); - this.trigger.addEventListener("mouseout", this._hide.bind(this, false)); + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + this.trigger.forEach(element => { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + }); popup.addEventListener("click", this._hide.bind(this, true)); wrapper.appendChild(popup); return wrapper; @@ -9917,14 +10712,17 @@ class PopupElement { class FreeTextAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { this.container.className = "freeTextAnnotation"; if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); } return this.container; @@ -9935,7 +10733,10 @@ class FreeTextAnnotationElement extends AnnotationElement { class LineAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { @@ -9954,7 +10755,7 @@ class LineAnnotationElement extends AnnotationElement { svg.appendChild(line); this.container.append(svg); - this._createPopup(this.container, line, data); + this._createPopup(line, data); return this.container; } @@ -9964,7 +10765,10 @@ class LineAnnotationElement extends AnnotationElement { class SquareAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { @@ -9985,7 +10789,7 @@ class SquareAnnotationElement extends AnnotationElement { svg.appendChild(square); this.container.append(svg); - this._createPopup(this.container, square, data); + this._createPopup(square, data); return this.container; } @@ -9995,7 +10799,10 @@ class SquareAnnotationElement extends AnnotationElement { class CircleAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { @@ -10016,7 +10823,7 @@ class CircleAnnotationElement extends AnnotationElement { svg.appendChild(circle); this.container.append(svg); - this._createPopup(this.container, circle, data); + this._createPopup(circle, data); return this.container; } @@ -10026,7 +10833,10 @@ class CircleAnnotationElement extends AnnotationElement { class PolylineAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); this.containerClassName = "polylineAnnotation"; this.svgElementName = "svg:polyline"; } @@ -10054,7 +10864,7 @@ class PolylineAnnotationElement extends AnnotationElement { svg.appendChild(polyline); this.container.append(svg); - this._createPopup(this.container, polyline, data); + this._createPopup(polyline, data); return this.container; } @@ -10073,14 +10883,17 @@ class PolygonAnnotationElement extends PolylineAnnotationElement { class CaretAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { this.container.className = "caretAnnotation"; if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); } return this.container; @@ -10091,7 +10904,10 @@ class CaretAnnotationElement extends AnnotationElement { class InkAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); this.containerClassName = "inkAnnotation"; this.svgElementName = "svg:polyline"; } @@ -10119,7 +10935,7 @@ class InkAnnotationElement extends AnnotationElement { polyline.setAttribute("stroke", "transparent"); polyline.setAttribute("fill", "none"); - this._createPopup(this.container, polyline, data); + this._createPopup(polyline, data); svg.appendChild(polyline); } @@ -10133,16 +10949,23 @@ class InkAnnotationElement extends AnnotationElement { class HighlightAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); } render() { - this.container.className = "highlightAnnotation"; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; return this.container; } @@ -10151,16 +10974,23 @@ class HighlightAnnotationElement extends AnnotationElement { class UnderlineAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); } render() { - this.container.className = "underlineAnnotation"; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); } + this.container.className = "underlineAnnotation"; return this.container; } @@ -10169,16 +10999,23 @@ class UnderlineAnnotationElement extends AnnotationElement { class SquigglyAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); } render() { - this.container.className = "squigglyAnnotation"; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); } + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; return this.container; } @@ -10187,16 +11024,23 @@ class SquigglyAnnotationElement extends AnnotationElement { class StrikeOutAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); } render() { - this.container.className = "strikeoutAnnotation"; - if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); } + this.container.className = "strikeoutAnnotation"; return this.container; } @@ -10205,14 +11049,17 @@ class StrikeOutAnnotationElement extends AnnotationElement { class StampAnnotationElement extends AnnotationElement { constructor(parameters) { const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); - super(parameters, isRenderable, true); + super(parameters, { + isRenderable, + ignoreBorder: true + }); } render() { this.container.className = "stampAnnotation"; if (!this.data.hasPopup) { - this._createPopup(this.container, null, this.data); + this._createPopup(null, this.data); } return this.container; @@ -10222,22 +11069,21 @@ class StampAnnotationElement extends AnnotationElement { class FileAttachmentAnnotationElement extends AnnotationElement { constructor(parameters) { - super(parameters, true); + super(parameters, { + isRenderable: true + }); const { filename, content } = this.data.file; this.filename = (0, _display_utils.getFilenameFromUrl)(filename); this.content = content; - - if (this.linkService.eventBus) { - this.linkService.eventBus.dispatch("fileattachmentannotation", { - source: this, - id: (0, _util.stringToPDFString)(filename), - filename, - content - }); - } + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + id: (0, _util.stringToPDFString)(filename), + filename, + content + }); } render() { @@ -10248,7 +11094,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement { trigger.addEventListener("dblclick", this._download.bind(this)); if (!this.data.hasPopup && (this.data.title || this.data.contents)) { - this._createPopup(this.container, trigger, this.data); + this._createPopup(trigger, this.data); } this.container.appendChild(trigger); @@ -10299,21 +11145,46 @@ class AnnotationLayer { imageResourcesPath: parameters.imageResourcesPath || "", renderInteractiveForms: typeof parameters.renderInteractiveForms === "boolean" ? parameters.renderInteractiveForms : true, svgFactory: new _display_utils.DOMSVGFactory(), - annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage() + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + mouseState: parameters.mouseState || { + isDown: false + } }); if (element.isRenderable) { - parameters.div.appendChild(element.render()); + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + parameters.div.appendChild(renderedElement); + } + } else { + if (element instanceof PopupAnnotationElement) { + parameters.div.prepend(rendered); + } else { + parameters.div.appendChild(rendered); + } + } } } } static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + for (const data of parameters.annotations) { - const element = parameters.div.querySelector(`[data-annotation-id="${data.id}"]`); + const elements = parameters.div.querySelectorAll(`[data-annotation-id="${data.id}"]`); - if (element) { - element.style.transform = `matrix(${parameters.viewport.transform.join(",")})`; + if (elements) { + elements.forEach(element => { + element.style.transform = transform; + }); } } @@ -10326,29 +11197,96 @@ exports.AnnotationLayer = AnnotationLayer; /***/ }), /* 20 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + return this.RGB_HTML(this.CMYK_RGB(components)); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.renderTextLayer = void 0; var _util = __w_pdfjs_require__(2); -var renderTextLayer = function renderTextLayerClosure() { - var MAX_TEXT_DIVS_TO_RENDER = 100000; - var NonWhitespaceRegexp = /\S/; +const renderTextLayer = function renderTextLayerClosure() { + const MAX_TEXT_DIVS_TO_RENDER = 100000; + const NonWhitespaceRegexp = /\S/; function isAllWhitespace(str) { return !NonWhitespaceRegexp.test(str); } function appendText(task, geom, styles) { - var textDiv = document.createElement("span"); - var textDivProperties = { + const textDiv = document.createElement("span"); + const textDivProperties = { angle: 0, canvasWidth: 0, isWhitespace: false, @@ -10370,17 +11308,17 @@ var renderTextLayer = function renderTextLayerClosure() { return; } - var tx = _util.Util.transform(task._viewport.transform, geom.transform); + const tx = _util.Util.transform(task._viewport.transform, geom.transform); - var angle = Math.atan2(tx[1], tx[0]); - var style = styles[geom.fontName]; + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; if (style.vertical) { angle += Math.PI / 2; } - var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); - var fontAscent = fontHeight; + const fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); + let fontAscent = fontHeight; if (style.ascent) { fontAscent = style.ascent * fontAscent; @@ -10440,7 +11378,7 @@ var renderTextLayer = function renderTextLayerClosure() { } if (task._enhanceTextSelection) { - var angleCos = 1, + let angleCos = 1, angleSin = 0; if (angle !== 0) { @@ -10448,9 +11386,9 @@ var renderTextLayer = function renderTextLayerClosure() { angleSin = Math.sin(angle); } - var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; - var divHeight = fontHeight; - var m, b; + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; if (angle !== 0) { m = [angleCos, angleSin, -angleSin, angleCos, left, top]; @@ -10476,9 +11414,9 @@ var renderTextLayer = function renderTextLayerClosure() { return; } - var textDivs = task._textDivs; - var capability = task._capability; - var textDivsLength = textDivs.length; + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { task._renderingDone = true; @@ -10487,7 +11425,7 @@ var renderTextLayer = function renderTextLayerClosure() { } if (!task._textContentStream) { - for (var i = 0; i < textDivsLength; i++) { + for (let i = 0; i < textDivsLength; i++) { task._layoutText(textDivs[i]); } } @@ -10511,14 +11449,14 @@ var renderTextLayer = function renderTextLayerClosure() { } function expand(task) { - var bounds = task._bounds; - var viewport = task._viewport; - var expanded = expandBounds(viewport.width, viewport.height, bounds); + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); - for (var i = 0; i < expanded.length; i++) { - var div = bounds[i].div; + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; - var divProperties = task._textDivProperties.get(div); + const divProperties = task._textDivProperties.get(div); if (divProperties.angle === 0) { divProperties.paddingLeft = bounds[i].left - expanded[i].left; @@ -10531,15 +11469,15 @@ var renderTextLayer = function renderTextLayerClosure() { continue; } - var e = expanded[i], - b = bounds[i]; - var m = b.m, - c = m[0], - s = m[1]; - var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; - var ts = new Float64Array(64); + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); points.forEach(function (p, j) { - var t = _util.Util.applyTransform(p, m); + const t = _util.Util.applyTransform(p, m); ts[j + 0] = c && (e.left - t[0]) / c; ts[j + 4] = s && (e.top - t[1]) / s; @@ -10558,7 +11496,7 @@ var renderTextLayer = function renderTextLayerClosure() { ts[j + 56] = s && (e.right - t[0]) / s; ts[j + 60] = c && (e.bottom - t[1]) / -c; }); - var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; @@ -10569,7 +11507,7 @@ var renderTextLayer = function renderTextLayerClosure() { } function expandBounds(width, height, boxes) { - var bounds = boxes.map(function (box, i) { + const bounds = boxes.map(function (box, i) { return { x1: box.left, y1: box.top, @@ -10581,9 +11519,9 @@ var renderTextLayer = function renderTextLayerClosure() { }; }); expandBoundsLTR(width, bounds); - var expanded = new Array(boxes.length); + const expanded = new Array(boxes.length); bounds.forEach(function (b) { - var i = b.index; + const i = b.index; expanded[i] = { left: b.x1New, top: 0, @@ -10592,8 +11530,8 @@ var renderTextLayer = function renderTextLayerClosure() { }; }); boxes.map(function (box, i) { - var e = expanded[i], - b = bounds[i]; + const e = expanded[i], + b = bounds[i]; b.x1 = box.top; b.y1 = width - e.right; b.x2 = box.bottom; @@ -10604,7 +11542,7 @@ var renderTextLayer = function renderTextLayerClosure() { }); expandBoundsLTR(height, bounds); bounds.forEach(function (b) { - var i = b.index; + const i = b.index; expanded[i].top = b.x1New; expanded[i].bottom = b.x2New; }); @@ -10615,7 +11553,7 @@ var renderTextLayer = function renderTextLayerClosure() { bounds.sort(function (a, b) { return a.x1 - b.x1 || a.index - b.index; }); - var fakeBoundary = { + const fakeBoundary = { x1: -Infinity, y1: -Infinity, x2: 0, @@ -10624,33 +11562,33 @@ var renderTextLayer = function renderTextLayerClosure() { x1New: 0, x2New: 0 }; - var horizon = [{ + const horizon = [{ start: -Infinity, end: Infinity, boundary: fakeBoundary }]; bounds.forEach(function (boundary) { - var i = 0; + let i = 0; while (i < horizon.length && horizon[i].end <= boundary.y1) { i++; } - var j = horizon.length - 1; + let j = horizon.length - 1; while (j >= 0 && horizon[j].start >= boundary.y2) { j--; } - var horizonPart, affectedBoundary; - var q, + let horizonPart, affectedBoundary; + let q, k, maxXNew = -Infinity; for (q = i; q <= j; q++) { horizonPart = horizon[q]; affectedBoundary = horizonPart.boundary; - var xNew; + let xNew; if (affectedBoundary.x2 > boundary.x1) { xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; @@ -10684,13 +11622,13 @@ var renderTextLayer = function renderTextLayerClosure() { } } - var changedHorizon = [], - lastBoundary = null; + const changedHorizon = []; + let lastBoundary = null; for (q = i; q <= j; q++) { horizonPart = horizon[q]; affectedBoundary = horizonPart.boundary; - var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; if (lastBoundary === useBoundary) { changedHorizon[changedHorizon.length - 1].end = horizonPart.end; @@ -10730,7 +11668,7 @@ var renderTextLayer = function renderTextLayerClosure() { continue; } - var used = false; + let used = false; for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { used = horizon[k].boundary === affectedBoundary; @@ -10752,7 +11690,7 @@ var renderTextLayer = function renderTextLayerClosure() { Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); }); horizon.forEach(function (horizonPart) { - var affectedBoundary = horizonPart.boundary; + const affectedBoundary = horizonPart.boundary; if (affectedBoundary.x2New === undefined) { affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); @@ -10777,7 +11715,7 @@ var renderTextLayer = function renderTextLayerClosure() { this._textDivs = textDivs || []; this._textContentItemsStr = textContentItemsStr || []; this._enhanceTextSelection = !!enhanceTextSelection; - this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled); + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; this._reader = null; this._layoutTextLastFontSize = null; this._layoutTextLastFontFamily = null; @@ -10945,7 +11883,7 @@ var renderTextLayer = function renderTextLayerClosure() { const transformBuf = [], paddingBuf = []; - for (var i = 0, ii = this._textDivs.length; i < ii; i++) { + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { const div = this._textDivs[i]; const divProps = this._textDivProperties.get(div); @@ -11002,7 +11940,7 @@ var renderTextLayer = function renderTextLayerClosure() { }; function renderTextLayer(renderParameters) { - var task = new TextLayerRenderTask({ + const task = new TextLayerRenderTask({ textContent: renderParameters.textContent, textContentStream: renderParameters.textContentStream, container: renderParameters.container, @@ -11023,15 +11961,14 @@ var renderTextLayer = function renderTextLayerClosure() { exports.renderTextLayer = renderTextLayer; /***/ }), -/* 21 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.SVGGraphics = void 0; var _util = __w_pdfjs_require__(2); @@ -11901,7 +12838,7 @@ exports.SVGGraphics = SVGGraphics; this.embeddedFonts[fontObj.loadedName] = fontObj; } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; let bold = "normal"; if (fontObj.black) { @@ -11932,7 +12869,7 @@ exports.SVGGraphics = SVGGraphics; endText() { const current = this.current; - if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) { + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { current.element = current.txtElement; this.clip("nonzero"); this.endPath(); @@ -11962,7 +12899,7 @@ exports.SVGGraphics = SVGGraphics; } setStrokeRGBColor(r, g, b) { - this.current.strokeColor = _util.Util.makeCssRgb(r, g, b); + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); } setFillAlpha(fillAlpha) { @@ -11970,7 +12907,7 @@ exports.SVGGraphics = SVGGraphics; } setFillRGBColor(r, g, b) { - this.current.fillColor = _util.Util.makeCssRgb(r, g, b); + this.current.fillColor = _util.Util.makeHexColor(r, g, b); this.current.tspan = this.svgFactory.createElement("svg:tspan"); this.current.xcoords = []; this.current.ycoords = []; @@ -12058,7 +12995,7 @@ exports.SVGGraphics = SVGGraphics; this.transformMatrix = matrix; if (paintType === 2) { - const cssColor = _util.Util.makeCssRgb(...color); + const cssColor = _util.Util.makeHexColor(...color); this.current.fillColor = cssColor; this.current.strokeColor = cssColor; @@ -12549,20 +13486,19 @@ exports.SVGGraphics = SVGGraphics; } /***/ }), -/* 22 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFNodeStream = void 0; var _util = __w_pdfjs_require__(2); -var _network_utils = __w_pdfjs_require__(23); +var _network_utils = __w_pdfjs_require__(24); ; @@ -12606,7 +13542,7 @@ class PDFNodeStream { } get _progressiveDataLength() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; + return this._fullRequestReader?._loaded ?? 0; } getFullReader() { @@ -13018,15 +13954,14 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader { } /***/ }), -/* 23 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.createResponseStatusError = createResponseStatusError; exports.extractFilenameFromHeader = extractFilenameFromHeader; exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; @@ -13034,7 +13969,7 @@ exports.validateResponseStatus = validateResponseStatus; var _util = __w_pdfjs_require__(2); -var _content_disposition = __w_pdfjs_require__(24); +var _content_disposition = __w_pdfjs_require__(25); function validateRangeRequestCapabilities({ getResponseHeader, @@ -13110,15 +14045,14 @@ function validateResponseStatus(status) { } /***/ }), -/* 24 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 25 */ +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; function getFilenameFromContentDispositionHeader(contentDisposition) { @@ -13298,20 +14232,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) { } /***/ }), -/* 25 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFNetworkStream = void 0; var _util = __w_pdfjs_require__(2); -var _network_utils = __w_pdfjs_require__(23); +var _network_utils = __w_pdfjs_require__(24); ; const OK_RESPONSE = 200; @@ -13841,20 +14774,19 @@ class PDFNetworkStreamRangeRequestReader { } /***/ }), -/* 26 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFFetchStream = void 0; var _util = __w_pdfjs_require__(2); -var _network_utils = __w_pdfjs_require__(23); +var _network_utils = __w_pdfjs_require__(24); ; @@ -13862,7 +14794,7 @@ function createFetchOptions(headers, withCredentials, abortController) { return { method: "GET", headers, - signal: abortController && abortController.signal, + signal: abortController?.signal, mode: "cors", credentials: withCredentials ? "include" : "same-origin", redirect: "follow" @@ -13895,7 +14827,7 @@ class PDFFetchStream { } get _progressiveDataLength() { - return this._fullRequestReader ? this._fullRequestReader._loaded : 0; + return this._fullRequestReader?._loaded ?? 0; } getFullReader() { @@ -14080,7 +15012,7 @@ class PDFFetchStreamRangeReader { this._reader = response.body.getReader(); }).catch(reason => { - if (reason && reason.name === "AbortError") { + if (reason?.name === "AbortError") { return; } @@ -14135,6 +15067,37 @@ class PDFFetchStreamRangeReader { } /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __w_pdfjs_require__(0); +/******/ })() +; }); //# sourceMappingURL=pdf.js.map
\ No newline at end of file diff --git a/third-party/pdfjs/build/pdf.sandbox.js b/third-party/pdfjs/build/pdf.sandbox.js new file mode 100644 index 000000000..c890e54c7 --- /dev/null +++ b/third-party/pdfjs/build/pdf.sandbox.js @@ -0,0 +1,312 @@ +/** + * @licstart The following is the entire license notice for the + * Javascript code in this page + * + * Copyright 2020 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * Javascript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf.sandbox", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf.sandbox"] = factory(); + else + root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.QuickJSSandbox = QuickJSSandbox; + +var _quickjsEval = _interopRequireDefault(__w_pdfjs_require__(1)); + +var _pdfSandboxExternal = __w_pdfjs_require__(2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const pdfjsVersion = '2.7.570'; +const pdfjsBuild = 'f2c7338b0'; +const TESTING = false; + +class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase { + exportValueToSandbox(val) { + return JSON.stringify(val); + } + + importValueFromSandbox(val) { + return val; + } + + createErrorForSandbox(errorMessage) { + return new Error(errorMessage); + } + +} + +class Sandbox { + constructor(win, module) { + this.support = new SandboxSupport(win, this); + module.externalCall = this.support.createSandboxExternals(); + this._module = module; + this._alertOnError = 0; + } + + create(data) { + if (TESTING) { + this._module.ccall("nukeSandbox", null, []); + } + + const sandboxData = JSON.stringify(data); + const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n enumerable: true,\n get: function () {\n return _initialization.initSandbox;\n }\n}));\n\nvar _initialization = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.7.570\';\nconst pdfjsBuild = \'f2c7338b0\';\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(4);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n delete globalThis.pdfjsScripting;\n const externalCall = globalThis.callExternalFunction;\n delete globalThis.callExternalFunction;\n\n const globalEval = code => globalThis.eval(code);\n\n const send = data => externalCall("send", [data]);\n\n const proxyHandler = new _proxy.ProxyHandler();\n const {\n data\n } = params;\n const doc = new _doc.Doc({\n send,\n globalEval,\n ...data.docInfo\n });\n const _document = {\n obj: doc,\n wrapped: new Proxy(doc, proxyHandler)\n };\n const app = new _app.App({\n send,\n globalEval,\n externalCall,\n _document,\n calculationOrder: data.calculationOrder,\n proxyHandler,\n ...data.appInfo\n });\n const util = new _util.Util({\n externalCall\n });\n\n if (data.objects) {\n for (const [name, objs] of Object.entries(data.objects)) {\n const obj = objs[0];\n obj.send = send;\n obj.globalEval = globalEval;\n obj.doc = _document.wrapped;\n let field;\n\n if (obj.type === "radiobutton") {\n const otherButtons = objs.slice(1);\n field = new _field.RadioButtonField(otherButtons, obj);\n } else if (obj.type === "checkbox") {\n const otherButtons = objs.slice(1);\n field = new _field.CheckboxField(otherButtons, obj);\n } else {\n field = new _field.Field(obj);\n }\n\n const wrapped = new Proxy(field, proxyHandler);\n\n doc._addField(name, wrapped);\n\n const _object = {\n obj: field,\n wrapped\n };\n\n for (const object of objs) {\n app._objects[object.id] = _object;\n }\n }\n }\n\n const color = new _color.Color();\n globalThis.event = null;\n globalThis.global = Object.create(null);\n globalThis.app = new Proxy(app, proxyHandler);\n globalThis.color = new Proxy(color, proxyHandler);\n globalThis.console = new Proxy(new _console.Console({\n send\n }), proxyHandler);\n globalThis.util = new Proxy(util, proxyHandler);\n globalThis.border = _constants.Border;\n globalThis.cursor = _constants.Cursor;\n globalThis.display = _constants.Display;\n globalThis.font = _constants.Font;\n globalThis.highlight = _constants.Highlight;\n globalThis.position = _constants.Position;\n globalThis.scaleHow = _constants.ScaleHow;\n globalThis.scaleWhen = _constants.ScaleWhen;\n globalThis.style = _constants.Style;\n globalThis.trans = _constants.Trans;\n globalThis.zoomtype = _constants.ZoomType;\n const aform = new _aform.AForm(doc, app, util, color);\n\n for (const name of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n if (name !== "constructor" && !name.startsWith("_")) {\n globalThis[name] = aform[name].bind(aform);\n }\n }\n\n for (const [name, value] of Object.entries(_constants.GlobalConstants)) {\n Object.defineProperty(globalThis, name, {\n value,\n writable: false\n });\n }\n\n Object.defineProperties(globalThis, {\n ColorConvert: {\n value: color.convert.bind(color),\n writable: true\n },\n ColorEqual: {\n value: color.equal.bind(color),\n writable: true\n }\n });\n const properties = Object.create(null);\n\n for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n if (name === "constructor" || name.startsWith("_")) {\n continue;\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, name);\n\n if (descriptor.get) {\n properties[name] = {\n get: descriptor.get.bind(doc),\n set: descriptor.set.bind(doc)\n };\n } else {\n properties[name] = {\n value: _doc.Doc.prototype[name].bind(doc)\n };\n }\n }\n\n Object.defineProperties(globalThis, properties);\n const functions = {\n dispatchEvent: app._dispatchEvent.bind(app),\n timeoutCb: app._evalCallback.bind(app)\n };\n return (name, args) => {\n try {\n functions[name](args);\n } catch (error) {\n const value = `${error.toString()}\\n${error.stack}`;\n send({\n command: "error",\n value\n });\n }\n };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n s: "solid",\n d: "dashed",\n b: "beveled",\n i: "inset",\n u: "underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n Times: "Times-Roman",\n TimesB: "Times-Bold",\n TimesI: "Times-Italic",\n TimesBI: "Times-BoldItalic",\n Helv: "Helvetica",\n HelvB: "Helvetica-Bold",\n HelvI: "Helvetica-Oblique",\n HelvBI: "Helvetica-BoldOblique",\n Cour: "Courier",\n CourB: "Courier-Bold",\n CourI: "Courier-Oblique",\n CourBI: "Courier-BoldOblique",\n Symbol: "Symbol",\n ZapfD: "ZapfDingbats",\n KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n KaMi: "HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n n: "none",\n i: "invert",\n p: "push",\n o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nexports.ScaleWhen = ScaleWhen;\nconst Style = Object.freeze({\n ch: "check",\n cr: "cross",\n di: "diamond",\n ci: "circle",\n st: "star",\n sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n blindsH: "BlindsHorizontal",\n blindsV: "BlindsVertical",\n boxI: "BoxIn",\n boxO: "BoxOut",\n dissolve: "Dissolve",\n glitterD: "GlitterDown",\n glitterR: "GlitterRight",\n glitterRD: "GlitterRightDown",\n random: "Random",\n replace: "Replace",\n splitHI: "SplitHorizontalIn",\n splitHO: "SplitHorizontalOut",\n splitVI: "SplitVerticalIn",\n splitVO: "SplitVerticalOut",\n wipeD: "WipeDown",\n wipeL: "WipeLeft",\n wipeR: "WipeRight",\n wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n none: "NoVary",\n fitP: "FitPage",\n fitW: "FitWidth",\n fitH: "FitHeight",\n fitV: "FitVisibleWidth",\n pref: "Preferred",\n refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % s " + "and less than or equal to % s.",\n IDS_LESS_THAN: "Invalid value: must be less than or equal to % s.",\n IDS_INVALID_MONTH: "** Invalid **",\n IDS_INVALID_DATE: "Invalid date / time: please ensure that the date / time exists.Field",\n IDS_INVALID_DATE2: " should match format ",\n IDS_INVALID_VALUE: "The value entered does not match the format of the field",\n IDS_AM: "am",\n IDS_PM: "pm",\n IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n RE_NUMBER_COMMIT_DOT_SEP: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n RE_NUMBER_ENTRY_COMMA_SEP: ["[+-]?\\\\d*,?\\\\d*"],\n RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", "[+-]?\\\\d+[.,]"],\n RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n RE_ZIP_COMMIT: ["\\\\d{5}"],\n RE_ZIP4_ENTRY: ["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", "\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = void 0;\n\nvar _color = __w_pdfjs_require__(4);\n\nvar _common = __w_pdfjs_require__(7);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Field extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.alignment = data.alignment || "left";\n this.borderStyle = data.borderStyle || "";\n this.buttonAlignX = data.buttonAlignX || 50;\n this.buttonAlignY = data.buttonAlignY || 50;\n this.buttonFitBounds = data.buttonFitBounds;\n this.buttonPosition = data.buttonPosition;\n this.buttonScaleHow = data.buttonScaleHow;\n this.ButtonScaleWhen = data.buttonScaleWhen;\n this.calcOrderIndex = data.calcOrderIndex;\n this.charLimit = data.charLimit;\n this.comb = data.comb;\n this.commitOnSelChange = data.commitOnSelChange;\n this.currentValueIndices = data.currentValueIndices;\n this.defaultStyle = data.defaultStyle;\n this.defaultValue = data.defaultValue;\n this.doNotScroll = data.doNotScroll;\n this.doNotSpellCheck = data.doNotSpellCheck;\n this.delay = data.delay;\n this.display = data.display;\n this.doc = data.doc;\n this.editable = data.editable;\n this.exportValues = data.exportValues;\n this.fileSelect = data.fileSelect;\n this.hidden = data.hidden;\n this.highlight = data.highlight;\n this.lineWidth = data.lineWidth;\n this.multiline = data.multiline;\n this.multipleSelection = !!data.multipleSelection;\n this.name = data.name;\n this.numItems = data.numItems;\n this.page = data.page;\n this.password = data.password;\n this.print = data.print;\n this.radiosInUnison = data.radiosInUnison;\n this.readonly = data.readonly;\n this.rect = data.rect;\n this.required = data.required;\n this.richText = data.richText;\n this.richValue = data.richValue;\n this.rotation = data.rotation;\n this.style = data.style;\n this.submitName = data.submitName;\n this.textFont = data.textFont;\n this.textSize = data.textSize;\n this.type = data.type;\n this.userName = data.userName;\n this._document = data.doc;\n this._value = data.value || "";\n this._valueAsString = data.valueAsString;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._fillColor = data.fillColor || ["T"];\n this._strokeColor = data.strokeColor || ["G", 0];\n this._textColor = data.textColor || ["G", 0];\n this._globalEval = data.globalEval;\n }\n\n get fillColor() {\n return this._fillColor;\n }\n\n set fillColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._fillColor = color;\n }\n }\n\n get strokeColor() {\n return this._strokeColor;\n }\n\n set strokeColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._strokeColor = color;\n }\n }\n\n get textColor() {\n return this._textColor;\n }\n\n set textColor(color) {\n if (_color.Color._isValidColor(color)) {\n this._textColor = color;\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (!this.multipleSelection) {\n this._value = value;\n }\n }\n\n get valueAsString() {\n return this._valueAsString;\n }\n\n set valueAsString(val) {\n this._valueAsString = val ? val.toString() : "";\n }\n\n checkThisBox(nWidget, bCheckIt = true) {}\n\n isBoxChecked(nWidget) {\n return false;\n }\n\n isDefaultChecked(nWidget) {\n return false;\n }\n\n setAction(cTrigger, cScript) {\n if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n return;\n }\n\n if (!(cTrigger in this._actions)) {\n this._actions[cTrigger] = [];\n }\n\n this._actions[cTrigger].push(cScript);\n }\n\n setFocus() {\n this._send({\n id: this._id,\n focus: true\n });\n }\n\n _isButton() {\n return false;\n }\n\n _runActions(event) {\n const eventName = event.name;\n\n if (!this._actions.has(eventName)) {\n return false;\n }\n\n const actions = this._actions.get(eventName);\n\n try {\n for (const action of actions) {\n this._globalEval(action);\n }\n } catch (error) {\n event.rc = false;\n throw error;\n }\n\n return true;\n }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n constructor(otherButtons, data) {\n super(data);\n this.exportValues = [this.exportValues];\n this._radioIds = [this._id];\n this._radioActions = [this._actions];\n\n for (const radioData of otherButtons) {\n this.exportValues.push(radioData.exportValues);\n\n this._radioIds.push(radioData.id);\n\n this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n if (this._value === radioData.exportValues) {\n this._id = radioData.id;\n }\n }\n }\n\n get value() {\n return this._value;\n }\n\n set value(value) {\n const i = this.exportValues.indexOf(value);\n\n if (0 <= i && i < this._radioIds.length) {\n this._id = this._radioIds[i];\n this._value = value;\n } else if (value === "Off" && this._radioIds.length === 2) {\n const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\n this._id = this._radioIds[nextI];\n this._value = this.exportValues[nextI];\n }\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = this.exportValues[nWidget];\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n isBoxChecked(nWidget) {\n return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n }\n\n isDefaultChecked(nWidget) {\n return nWidget >= 0 && nWidget < this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\n }\n\n _getExportValue(state) {\n const i = this._radioIds.indexOf(this._id);\n\n return this.exportValues[i];\n }\n\n _runActions(event) {\n const i = this._radioIds.indexOf(this._id);\n\n this._actions = this._radioActions[i];\n return super._runActions(event);\n }\n\n _isButton() {\n return true;\n }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n get value() {\n return this._value;\n }\n\n set value(value) {\n if (value === "Off") {\n this._value = "Off";\n } else {\n super.value = value;\n }\n }\n\n _getExportValue(state) {\n return state ? super._getExportValue(state) : "Off";\n }\n\n isBoxChecked(nWidget) {\n if (this._value === "Off") {\n return false;\n }\n\n return super.isBoxChecked(nWidget);\n }\n\n isDefaultChecked(nWidget) {\n if (this.defaultValue === "Off") {\n return this._value === "Off";\n }\n\n return super.isDefaultChecked(nWidget);\n }\n\n checkThisBox(nWidget, bCheckIt = true) {\n if (nWidget < 0 || nWidget >= this._radioIds.length) {\n return;\n }\n\n this._id = this._radioIds[nWidget];\n this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n this._send({\n id: this._id,\n value: this._value\n });\n }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = __w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Color extends _pdf_object.PDFObject {\n constructor() {\n super({});\n this.transparent = ["T"];\n this.black = ["G", 0];\n this.white = ["G", 1];\n this.red = ["RGB", 1, 0, 0];\n this.green = ["RGB", 0, 1, 0];\n this.blue = ["RGB", 0, 0, 1];\n this.cyan = ["CMYK", 1, 0, 0, 0];\n this.magenta = ["CMYK", 0, 1, 0, 0];\n this.yellow = ["CMYK", 0, 0, 1, 0];\n this.dkGray = ["G", 0.25];\n this.gray = ["G", 0.5];\n this.ltGray = ["G", 0.75];\n }\n\n static _isValidSpace(cColorSpace) {\n return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n }\n\n static _isValidColor(colorArray) {\n if (!Array.isArray(colorArray) || colorArray.length === 0) {\n return false;\n }\n\n const space = colorArray[0];\n\n if (!Color._isValidSpace(space)) {\n return false;\n }\n\n switch (space) {\n case "T":\n if (colorArray.length !== 1) {\n return false;\n }\n\n break;\n\n case "G":\n if (colorArray.length !== 2) {\n return false;\n }\n\n break;\n\n case "RGB":\n if (colorArray.length !== 4) {\n return false;\n }\n\n break;\n\n case "CMYK":\n if (colorArray.length !== 5) {\n return false;\n }\n\n break;\n\n default:\n return false;\n }\n\n return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n }\n\n static _getCorrectColor(colorArray) {\n return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n }\n\n convert(colorArray, cColorSpace) {\n if (!Color._isValidSpace(cColorSpace)) {\n return this.black;\n }\n\n if (cColorSpace === "T") {\n return ["T"];\n }\n\n colorArray = Color._getCorrectColor(colorArray);\n\n if (colorArray[0] === cColorSpace) {\n return colorArray;\n }\n\n if (colorArray[0] === "T") {\n return this.convert(this.black, cColorSpace);\n }\n\n return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n }\n\n equal(colorArray1, colorArray2) {\n colorArray1 = Color._getCorrectColor(colorArray1);\n colorArray2 = Color._getCorrectColor(colorArray2);\n\n if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n return colorArray1[0] === "T" && colorArray2[0] === "T";\n }\n\n if (colorArray1[0] !== colorArray2[0]) {\n colorArray2 = this.convert(colorArray2, colorArray1[0]);\n }\n\n return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return ["CMYK", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return ["RGB", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return "#00000000";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n\n static CMYK_HTML(components) {\n return this.RGB_HTML(this.CMYK_RGB(components));\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return ["CMYK", c, m, y, k];\n }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PDFObject = void 0;\n\nclass PDFObject {\n constructor(data) {\n this._expandos = Object.create(null);\n this._send = data.send || null;\n this._id = data.id || null;\n }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.createActionsMap = createActionsMap;\n\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n\n return actionsMap;\n}\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass AForm {\n constructor(document, app, util, color) {\n this._document = document;\n this._app = app;\n this._util = util;\n this._color = color;\n this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n this._emailRegex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n }\n\n _mkTargetName(event) {\n return event.target ? `[ ${event.target.name} ]` : "";\n }\n\n _parseDate(cFormat, cDate) {\n const ddate = Date.parse(cDate);\n\n if (isNaN(ddate)) {\n try {\n return this._util.scand(cFormat, cDate);\n } catch (error) {\n return null;\n }\n } else {\n return new Date(ddate);\n }\n }\n\n AFMergeChange(event = globalThis.event) {\n if (event.willCommit) {\n return event.value.toString();\n }\n\n return this._app._eventDispatcher.mergeChange(event);\n }\n\n AFParseDateEx(cString, cOrder) {\n return this._parseDate(cOrder, cString);\n }\n\n AFExtractNums(str) {\n if (typeof str === "number") {\n return [str];\n }\n\n if (!str || typeof str !== "string") {\n return null;\n }\n\n const first = str.charAt(0);\n\n if (first === "." || first === ",") {\n str = `0${str}`;\n }\n\n const numbers = str.match(/([0-9]+)/g);\n\n if (numbers.length === 0) {\n return null;\n }\n\n return numbers;\n }\n\n AFMakeNumber(str) {\n if (typeof str === "number") {\n return str;\n }\n\n if (typeof str !== "string") {\n return null;\n }\n\n str = str.trim().replace(",", ".");\n const number = parseFloat(str);\n\n if (isNaN(number) || !isFinite(number)) {\n return null;\n }\n\n return number;\n }\n\n AFMakeArrayFromList(string) {\n if (typeof string === "string") {\n return string.split(/, ?/g);\n }\n\n return string;\n }\n\n AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "";\n return;\n }\n\n const sign = Math.sign(value);\n const buf = [];\n let hasParen = false;\n\n if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n buf.push("-");\n }\n\n if ((negStyle === 2 || negStyle === 3) && sign === -1) {\n buf.push("(");\n hasParen = true;\n }\n\n if (bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n buf.push("%,");\n buf.push(sepStyle);\n buf.push(".");\n buf.push(nDec.toString());\n buf.push("f");\n\n if (!bCurrencyPrepend) {\n buf.push(strCurrency);\n }\n\n if (hasParen) {\n buf.push(")");\n }\n\n if (negStyle === 1 || negStyle === 3) {\n event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n }\n\n if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n value = -value;\n }\n\n const formatStr = buf.join("");\n event.value = this._util.printf(formatStr, value);\n }\n\n AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n const event = globalThis.event;\n let value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n value = value.trim();\n let pattern;\n\n if (sepStyle > 1) {\n pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : /^[+-]?[0-9]*,?[0-9]*$/;\n } else {\n pattern = event.willCommit ? /^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : /^[+-]?[0-9]*\\.?[0-9]*$/;\n }\n\n if (!pattern.test(value)) {\n if (event.willCommit) {\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n this._app.alert(err);\n }\n\n event.rc = false;\n }\n\n if (event.willCommit && sepStyle > 1) {\n event.value = parseFloat(value.replace(",", "."));\n }\n }\n\n AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\n if (typeof nDec !== "number") {\n return;\n }\n\n if (typeof sepStyle !== "number") {\n return;\n }\n\n if (nDec < 0) {\n throw new Error("Invalid nDec value in AFPercent_Format");\n }\n\n const event = globalThis.event;\n\n if (nDec > 512) {\n event.value = "%";\n return;\n }\n\n nDec = Math.floor(nDec);\n sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n let value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n event.value = "%";\n return;\n }\n\n const formatStr = `%,${sepStyle}.${nDec}f`;\n value = this._util.printf(formatStr, value * 100);\n\n if (percentPrepend) {\n event.value = `%${value}`;\n } else {\n event.value = `${value}%`;\n }\n }\n\n AFPercent_Keystroke(nDec, sepStyle) {\n this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n }\n\n AFDate_FormatEx(cFormat) {\n const event = globalThis.event;\n const value = event.value;\n\n if (!value) {\n return;\n }\n\n const date = this._parseDate(cFormat, value);\n\n if (date !== null) {\n event.value = this._util.printd(cFormat, date);\n }\n }\n\n AFDate_Format(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_FormatEx(this._dateFormats[pdf]);\n }\n }\n\n AFDate_KeystrokeEx(cFormat) {\n const event = globalThis.event;\n\n if (!event.willCommit) {\n return;\n }\n\n const value = this.AFMergeChange(event);\n\n if (!value) {\n return;\n }\n\n if (this._parseDate(cFormat, value) === null) {\n const invalid = _constants.GlobalConstants.IDS_INVALID_DATE;\n const invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFDate_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._dateFormats.length) {\n this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n }\n }\n\n AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n const value = this.AFMakeNumber(event.value);\n\n if (value === null) {\n return;\n }\n\n bGreaterThan = !!bGreaterThan;\n bLessThan = !!bLessThan;\n\n if (bGreaterThan) {\n nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n if (nGreaterThan === null) {\n return;\n }\n }\n\n if (bLessThan) {\n nLessThan = this.AFMakeNumber(nLessThan);\n\n if (nLessThan === null) {\n return;\n }\n }\n\n let err = "";\n\n if (bGreaterThan && bLessThan) {\n if (value < nGreaterThan || value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n }\n } else if (bGreaterThan) {\n if (value < nGreaterThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n }\n } else if (value > nLessThan) {\n err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n }\n\n if (err) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSimple(cFunction, nValue1, nValue2) {\n const value1 = this.AFMakeNumber(nValue1);\n\n if (value1 === null) {\n throw new Error("Invalid nValue1 in AFSimple");\n }\n\n const value2 = this.AFMakeNumber(nValue2);\n\n if (value2 === null) {\n throw new Error("Invalid nValue2 in AFSimple");\n }\n\n switch (cFunction) {\n case "AVG":\n return (value1 + value2) / 2;\n\n case "SUM":\n return value1 + value2;\n\n case "PRD":\n return value1 * value2;\n\n case "MIN":\n return Math.min(value1, value2);\n\n case "MAX":\n return Math.max(value1, value2);\n }\n\n throw new Error("Invalid cFunction in AFSimple");\n }\n\n AFSimple_Calculate(cFunction, cFields) {\n const actions = {\n AVG: args => args.reduce((acc, value) => acc + value, 0) / args.length,\n SUM: args => args.reduce((acc, value) => acc + value, 0),\n PRD: args => args.reduce((acc, value) => acc * value, 1),\n MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\n MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\n };\n\n if (!(cFunction in actions)) {\n throw new TypeError("Invalid function in AFSimple_Calculate");\n }\n\n const event = globalThis.event;\n const values = [];\n\n for (const cField of cFields) {\n const field = this._document.getField(cField);\n\n const number = this.AFMakeNumber(field.value);\n\n if (number !== null) {\n values.push(number);\n }\n }\n\n if (values.length === 0) {\n event.value = cFunction === "PRD" ? 1 : 0;\n return;\n }\n\n const res = actions[cFunction](values);\n event.value = Math.round(1e6 * res) / 1e6;\n }\n\n AFSpecial_Format(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n let formatStr = "";\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n if (this._util.printx("9999999999", event.value).length >= 10) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Format");\n }\n\n event.value = this._util.printx(formatStr, event.value);\n }\n\n AFSpecial_KeystrokeEx(cMask) {\n if (!cMask) {\n return;\n }\n\n const event = globalThis.event;\n const value = this.AFMergeChange(event);\n const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n function _checkValidity(_value, _cMask) {\n for (let i = 0, ii = value.length; i < ii; i++) {\n const mask = _cMask.charAt(i);\n\n const char = _value.charAt(i);\n\n const checker = checkers.get(mask);\n\n if (checker) {\n if (!checker(char)) {\n return false;\n }\n } else if (mask !== char) {\n return false;\n }\n }\n\n return true;\n }\n\n if (!value) {\n return;\n }\n\n const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n if (value.length > cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (event.willCommit) {\n if (value.length < cMask.length) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n return;\n }\n\n event.value += cMask.subString(value.length);\n return;\n }\n\n if (value.length < cMask.length) {\n cMask = cMask.substring(0, value.length);\n }\n\n if (!_checkValidity(value, cMask)) {\n this._app.alert(err);\n\n event.rc = false;\n }\n }\n\n AFSpecial_Keystroke(psf) {\n const event = globalThis.event;\n\n if (!event.value) {\n return;\n }\n\n psf = this.AFMakeNumber(psf);\n\n if (psf === null) {\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n let formatStr;\n\n switch (psf) {\n case 0:\n formatStr = "99999";\n break;\n\n case 1:\n formatStr = "99999-9999";\n break;\n\n case 2:\n const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n if (finalLen >= 8) {\n formatStr = "(999) 999-9999";\n } else {\n formatStr = "999-9999";\n }\n\n break;\n\n case 3:\n formatStr = "999-99-9999";\n break;\n\n default:\n throw new Error("Invalid psf in AFSpecial_Keystroke");\n }\n\n this.AFSpecial_KeystrokeEx(formatStr);\n }\n\n AFTime_FormatEx(cFormat) {\n this.AFDate_FormatEx(cFormat);\n }\n\n AFTime_Format(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_FormatEx(this._timeFormats[pdf]);\n }\n }\n\n AFTime_KeystrokeEx(cFormat) {\n this.AFDate_KeystrokeEx(cFormat);\n }\n\n AFTime_Keystroke(pdf) {\n if (pdf >= 0 && pdf < this._timeFormats.length) {\n this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n }\n }\n\n eMailValidate(str) {\n return this._emailRegex.test(str);\n }\n\n}\n\nexports.AForm = AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.App = void 0;\n\nvar _color = __w_pdfjs_require__(4);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = __w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nvar _thermometer = __w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this.calculate = true;\n this._constants = null;\n this._focusRect = true;\n this._fs = null;\n this._language = App._getLanguage(data.language);\n this._openInPlace = false;\n this._platform = App._getPlatform(data.platform);\n this._runtimeHighlight = false;\n this._runtimeHighlightColor = ["T"];\n this._thermometer = null;\n this._toolbar = false;\n this._document = data._document;\n this._proxyHandler = data.proxyHandler;\n this._objects = Object.create(null);\n this._eventDispatcher = new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n this._timeoutIds = new WeakMap();\n\n if (typeof FinalizationRegistry !== "undefined") {\n this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\n } else {\n this._timeoutIdsRegistry = null;\n }\n\n this._timeoutCallbackIds = new Map();\n this._timeoutCallbackId = 0;\n this._globalEval = data.globalEval;\n this._externalCall = data.externalCall;\n }\n\n _dispatchEvent(pdfEvent) {\n this._eventDispatcher.dispatch(pdfEvent);\n }\n\n _registerTimeoutCallback(cExpr) {\n const id = this._timeoutCallbackId++;\n\n this._timeoutCallbackIds.set(id, cExpr);\n\n return id;\n }\n\n _unregisterTimeoutCallback(id) {\n this._timeoutCallbackIds.delete(id);\n }\n\n _evalCallback({\n callbackId,\n interval\n }) {\n const expr = this._timeoutCallbackIds.get(callbackId);\n\n if (!interval) {\n this._unregisterTimeoutCallback(callbackId);\n }\n\n if (expr) {\n this._globalEval(expr);\n }\n }\n\n _registerTimeout(callbackId, interval) {\n const timeout = Object.create(null);\n const id = {\n callbackId,\n interval\n };\n\n this._timeoutIds.set(timeout, id);\n\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.register(timeout, id);\n }\n\n return timeout;\n }\n\n _unregisterTimeout(timeout) {\n if (this._timeoutIdsRegistry) {\n this._timeoutIdsRegistry.unregister(timeout);\n }\n\n const data = this._timeoutIds.get(timeout);\n\n if (!data) {\n return;\n }\n\n this._timeoutIds.delete(timeout);\n\n this._cleanTimeout(data);\n }\n\n _cleanTimeout({\n callbackId,\n interval\n }) {\n this._unregisterTimeoutCallback(callbackId);\n\n if (interval) {\n this._externalCall("clearInterval", [callbackId]);\n } else {\n this._externalCall("clearTimeout", [callbackId]);\n }\n }\n\n static _getPlatform(platform) {\n if (typeof platform === "string") {\n platform = platform.toLowerCase();\n\n if (platform.includes("win")) {\n return "WIN";\n } else if (platform.includes("mac")) {\n return "MAC";\n }\n }\n\n return "UNIX";\n }\n\n static _getLanguage(language) {\n const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n switch (main) {\n case "zh":\n if (sub === "cn" || sub === "sg") {\n return "CHS";\n }\n\n return "CHT";\n\n case "da":\n return "DAN";\n\n case "de":\n return "DEU";\n\n case "es":\n return "ESP";\n\n case "fr":\n return "FRA";\n\n case "it":\n return "ITA";\n\n case "ko":\n return "KOR";\n\n case "ja":\n return "JPN";\n\n case "nl":\n return "NLD";\n\n case "no":\n return "NOR";\n\n case "pt":\n if (sub === "br") {\n return "PTB";\n }\n\n return "ENU";\n\n case "fi":\n return "SUO";\n\n case "SV":\n return "SVE";\n\n default:\n return "ENU";\n }\n }\n\n get activeDocs() {\n return [this._document.wrapped];\n }\n\n set activeDocs(_) {\n throw new Error("app.activeDocs is read-only");\n }\n\n get constants() {\n if (!this._constants) {\n this._constants = Object.freeze({\n align: Object.freeze({\n left: 0,\n center: 1,\n right: 2,\n top: 3,\n bottom: 4\n })\n });\n }\n\n return this._constants;\n }\n\n set constants(_) {\n throw new Error("app.constants is read-only");\n }\n\n get focusRect() {\n return this._focusRect;\n }\n\n set focusRect(val) {\n this._focusRect = val;\n }\n\n get formsVersion() {\n return FORMS_VERSION;\n }\n\n set formsVersion(_) {\n throw new Error("app.formsVersion is read-only");\n }\n\n get fromPDFConverters() {\n return [];\n }\n\n set fromPDFConverters(_) {\n throw new Error("app.fromPDFConverters is read-only");\n }\n\n get fs() {\n if (this._fs === null) {\n this._fs = new Proxy(new _fullscreen.FullScreen({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._fs;\n }\n\n set fs(_) {\n throw new Error("app.fs is read-only");\n }\n\n get language() {\n return this._language;\n }\n\n set language(_) {\n throw new Error("app.language is read-only");\n }\n\n get media() {\n return undefined;\n }\n\n set media(_) {\n throw new Error("app.media is read-only");\n }\n\n get monitors() {\n return [];\n }\n\n set monitors(_) {\n throw new Error("app.monitors is read-only");\n }\n\n get numPlugins() {\n return 0;\n }\n\n set numPlugins(_) {\n throw new Error("app.numPlugins is read-only");\n }\n\n get openInPlace() {\n return this._openInPlace;\n }\n\n set openInPlace(val) {\n this._openInPlace = val;\n }\n\n get platform() {\n return this._platform;\n }\n\n set platform(_) {\n throw new Error("app.platform is read-only");\n }\n\n get plugins() {\n return [];\n }\n\n set plugins(_) {\n throw new Error("app.plugins is read-only");\n }\n\n get printColorProfiles() {\n return [];\n }\n\n set printColorProfiles(_) {\n throw new Error("app.printColorProfiles is read-only");\n }\n\n get printerNames() {\n return [];\n }\n\n set printerNames(_) {\n throw new Error("app.printerNames is read-only");\n }\n\n get runtimeHighlight() {\n return this._runtimeHighlight;\n }\n\n set runtimeHighlight(val) {\n this._runtimeHighlight = val;\n }\n\n get runtimeHighlightColor() {\n return this._runtimeHighlightColor;\n }\n\n set runtimeHighlightColor(val) {\n if (_color.Color._isValidColor(val)) {\n this._runtimeHighlightColor = val;\n }\n }\n\n get thermometer() {\n if (this._thermometer === null) {\n this._thermometer = new Proxy(new _thermometer.Thermometer({\n send: this._send\n }), this._proxyHandler);\n }\n\n return this._thermometer;\n }\n\n set thermometer(_) {\n throw new Error("app.thermometer is read-only");\n }\n\n get toolbar() {\n return this._toolbar;\n }\n\n set toolbar(val) {\n this._toolbar = val;\n }\n\n get toolbarHorizontal() {\n return this.toolbar;\n }\n\n set toolbarHorizontal(value) {\n this.toolbar = value;\n }\n\n get toolbarVertical() {\n return this.toolbar;\n }\n\n set toolbarVertical(value) {\n this.toolbar = value;\n }\n\n get viewerType() {\n return VIEWER_TYPE;\n }\n\n set viewerType(_) {\n throw new Error("app.viewerType is read-only");\n }\n\n get viewerVariation() {\n return VIEWER_VARIATION;\n }\n\n set viewerVariation(_) {\n throw new Error("app.viewerVariation is read-only");\n }\n\n get viewerVersion() {\n return VIEWER_VERSION;\n }\n\n set viewerVersion(_) {\n throw new Error("app.viewerVersion is read-only");\n }\n\n addMenuItem() {}\n\n addSubMenu() {}\n\n addToolButton() {}\n\n alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", oDoc = null, oCheckbox = null) {\n this._externalCall("alert", [cMsg]);\n }\n\n beep() {}\n\n beginPriv() {}\n\n browseForDoc() {}\n\n clearInterval(oInterval) {\n this._unregisterTimeout(oInterval);\n }\n\n clearTimeOut(oTime) {\n this._unregisterTimeout(oTime);\n }\n\n endPriv() {}\n\n execDialog() {}\n\n execMenuItem() {}\n\n getNthPlugInName() {}\n\n getPath() {}\n\n goBack() {}\n\n goForward() {}\n\n hideMenuItem() {}\n\n hideToolbarButton() {}\n\n launchURL() {}\n\n listMenuItems() {}\n\n listToolbarButtons() {}\n\n loadPolicyFile() {}\n\n mailGetAddrs() {}\n\n mailMsg() {}\n\n newDoc() {}\n\n newCollection() {}\n\n newFDF() {}\n\n openDoc() {}\n\n openFDF() {}\n\n popUpMenu() {}\n\n popUpMenuEx() {}\n\n removeToolButton() {}\n\n response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n return this._externalCall("prompt", [cQuestion, cDefault || ""]);\n }\n\n setInterval(cExpr, nMilliseconds) {\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setInterval must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setInterval must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setInterval", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, true);\n }\n\n setTimeOut(cExpr, nMilliseconds) {\n if (typeof cExpr !== "string") {\n throw new TypeError("First argument of app.setTimeOut must be a string");\n }\n\n if (typeof nMilliseconds !== "number") {\n throw new TypeError("Second argument of app.setTimeOut must be a number");\n }\n\n const callbackId = this._registerTimeoutCallback(cExpr);\n\n this._externalCall("setTimeout", [callbackId, nMilliseconds]);\n\n return this._registerTimeout(callbackId, false);\n }\n\n trustedFunction() {}\n\n trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n constructor(data) {\n this.change = data.change || "";\n this.changeEx = data.changeEx || null;\n this.commitKey = data.commitKey || 0;\n this.fieldFull = data.fieldFull || false;\n this.keyDown = data.keyDown || false;\n this.modifier = data.modifier || false;\n this.name = data.name;\n this.rc = true;\n this.richChange = data.richChange || [];\n this.richChangeEx = data.richChangeEx || [];\n this.richValue = data.richValue || [];\n this.selEnd = data.selEnd || -1;\n this.selStart = data.selStart || -1;\n this.shift = data.shift || false;\n this.source = data.source || null;\n this.target = data.target || null;\n this.targetName = "";\n this.type = "Field";\n this.value = data.value || "";\n this.willCommit = data.willCommit || false;\n }\n\n}\n\nexports.Event = Event;\n\nclass EventDispatcher {\n constructor(document, calculationOrder, objects) {\n this._document = document;\n this._calculationOrder = calculationOrder;\n this._objects = objects;\n this._document.obj._eventDispatcher = this;\n }\n\n mergeChange(event) {\n let value = event.value;\n\n if (typeof value !== "string") {\n value = value.toString();\n }\n\n const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n return `${prefix}${event.change}${postfix}`;\n }\n\n dispatch(baseEvent) {\n const id = baseEvent.id;\n\n if (!(id in this._objects)) {\n let event;\n\n if (id === "doc" || id === "page") {\n event = globalThis.event = new Event(baseEvent);\n event.source = event.target = this._document.wrapped;\n event.name = baseEvent.name;\n }\n\n if (id === "doc") {\n this._document.obj._dispatchDocEvent(event.name);\n } else if (id === "page") {\n this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n }\n\n return;\n }\n\n const name = baseEvent.name;\n const source = this._objects[id];\n const event = globalThis.event = new Event(baseEvent);\n let savedChange;\n\n if (source.obj._isButton()) {\n source.obj._id = id;\n event.value = source.obj._getExportValue(event.value);\n\n if (name === "Action") {\n source.obj._value = event.value;\n }\n }\n\n if (name === "Keystroke") {\n savedChange = {\n value: event.value,\n change: event.change,\n selStart: event.selStart,\n selEnd: event.selEnd\n };\n } else if (name === "Blur" || name === "Focus") {\n Object.defineProperty(event, "value", {\n configurable: false,\n writable: false,\n enumerable: true,\n value: event.value\n });\n } else if (name === "Validate") {\n this.runValidation(source, event);\n return;\n }\n\n this.runActions(source, source, event, name);\n\n if (name === "Keystroke") {\n if (event.rc) {\n if (event.willCommit) {\n this.runValidation(source, event);\n } else if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n source.wrapped.value = this.mergeChange(event);\n }\n } else if (!event.willCommit) {\n source.obj._send({\n id: source.obj._id,\n value: savedChange.value,\n selRange: [savedChange.selStart, savedChange.selEnd]\n });\n }\n }\n }\n\n runValidation(source, event) {\n const hasRan = this.runActions(source, source, event, "Validate");\n\n if (event.rc) {\n if (hasRan) {\n source.wrapped.value = event.value;\n } else {\n source.obj.value = event.value;\n }\n\n if (this._document.obj.calculate) {\n this.runCalculate(source, event);\n }\n\n event.value = source.obj.value;\n this.runActions(source, source, event, "Format");\n source.wrapped.valueAsString = event.value;\n }\n }\n\n runActions(source, target, event, eventName) {\n event.source = source.wrapped;\n event.target = target.wrapped;\n event.name = eventName;\n event.targetName = target.obj.name;\n event.rc = true;\n return target.obj._runActions(event);\n }\n\n calculateNow() {\n if (!this._calculationOrder) {\n return;\n }\n\n const first = this._calculationOrder[0];\n const source = this._objects[first];\n globalThis.event = new Event({});\n this.runCalculate(source, globalThis.event);\n }\n\n runCalculate(source, event) {\n if (!this._calculationOrder) {\n return;\n }\n\n for (const targetId of this._calculationOrder) {\n if (!(targetId in this._objects)) {\n continue;\n }\n\n const target = this._objects[targetId];\n this.runActions(source, target, event, "Calculate");\n this.runActions(target, target, event, "Validate");\n\n if (!event.rc) {\n continue;\n }\n\n target.wrapped.value = event.value;\n this.runActions(target, target, event, "Format");\n target.wrapped.valueAsString = event.value;\n }\n }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.FullScreen = void 0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass FullScreen extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._backgroundColor = [];\n this._clickAdvances = true;\n this._cursor = _constants.Cursor.hidden;\n this._defaultTransition = "";\n this._escapeExits = true;\n this._isFullScreen = true;\n this._loop = false;\n this._timeDelay = 3600;\n this._usePageTiming = false;\n this._useTimer = false;\n }\n\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n set backgroundColor(_) {}\n\n get clickAdvances() {\n return this._clickAdvances;\n }\n\n set clickAdvances(_) {}\n\n get cursor() {\n return this._cursor;\n }\n\n set cursor(_) {}\n\n get defaultTransition() {\n return this._defaultTransition;\n }\n\n set defaultTransition(_) {}\n\n get escapeExits() {\n return this._escapeExits;\n }\n\n set escapeExits(_) {}\n\n get isFullScreen() {\n return this._isFullScreen;\n }\n\n set isFullScreen(_) {}\n\n get loop() {\n return this._loop;\n }\n\n set loop(_) {}\n\n get timeDelay() {\n return this._timeDelay;\n }\n\n set timeDelay(_) {}\n\n get transitions() {\n return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n }\n\n set transitions(_) {\n throw new Error("fullscreen.transitions is read-only");\n }\n\n get usePageTiming() {\n return this._usePageTiming;\n }\n\n set usePageTiming(_) {}\n\n get useTimer() {\n return this._useTimer;\n }\n\n set useTimer(_) {}\n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Thermometer extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._cancelled = false;\n this._duration = 100;\n this._text = "";\n this._value = 0;\n }\n\n get cancelled() {\n return this._cancelled;\n }\n\n set cancelled(_) {\n throw new Error("thermometer.cancelled is read-only");\n }\n\n get duration() {\n return this._duration;\n }\n\n set duration(val) {\n this._duration = val;\n }\n\n get text() {\n return this._text;\n }\n\n set text(val) {\n this._text = val;\n }\n\n get value() {\n return this._value;\n }\n\n set value(val) {\n this._value = val;\n }\n\n begin() {}\n\n end() {}\n\n}\n\nexports.Thermometer = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Console extends _pdf_object.PDFObject {\n clear() {\n this._send({\n id: "clear"\n });\n }\n\n hide() {}\n\n println(msg) {\n if (typeof msg === "string") {\n this._send({\n command: "println",\n value: "PDF.js Console:: " + msg\n });\n }\n }\n\n show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(7);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n static get(obj, prop) {\n return obj[prop.toLowerCase()];\n }\n\n static set(obj, prop, value) {\n throw new Error(`doc.info.${prop} is read-only`);\n }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._expandos = globalThis;\n this._baseURL = data.baseURL || "";\n this._calculate = true;\n this._delay = false;\n this._dirty = false;\n this._disclosed = false;\n this._media = undefined;\n this._metadata = data.metadata || "";\n this._noautocomplete = undefined;\n this._nocache = undefined;\n this._spellDictionaryOrder = [];\n this._spellLanguageOrder = [];\n this._printParams = null;\n this._fields = new Map();\n this._fieldNames = [];\n this._event = null;\n this._author = data.Author || "";\n this._creator = data.Creator || "";\n this._creationDate = this._getDate(data.CreationDate) || null;\n this._docID = data.docID || ["", ""];\n this._documentFileName = data.filename || "";\n this._filesize = data.filesize || 0;\n this._keywords = data.Keywords || "";\n this._layout = data.layout || "";\n this._modDate = this._getDate(data.ModDate) || null;\n this._numFields = 0;\n this._numPages = data.numPages || 1;\n this._pageNum = data.pageNum || 0;\n this._producer = data.Producer || "";\n this._subject = data.Subject || "";\n this._title = data.Title || "";\n this._URL = data.URL || "";\n this._info = new Proxy({\n title: this._title,\n author: this._author,\n authors: data.authors || [this._author],\n subject: this._subject,\n keywords: this._keywords,\n creator: this._creator,\n producer: this._producer,\n creationdate: this._creationDate,\n moddate: this._modDate,\n trapped: data.Trapped || "Unknown"\n }, InfoProxyHandler);\n this._zoomType = _constants.ZoomType.none;\n this._zoom = data.zoom || 100;\n this._actions = (0, _common.createActionsMap)(data.actions);\n this._globalEval = data.globalEval;\n this._pageActions = new Map();\n }\n\n _dispatchDocEvent(name) {\n if (name === "Open") {\n const dontRun = new Set(["WillClose", "WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n for (const actionName of this._actions.keys()) {\n if (!dontRun.has(actionName)) {\n this._runActions(actionName);\n }\n }\n\n this._runActions("OpenAction");\n } else {\n this._runActions(name);\n }\n }\n\n _dispatchPageEvent(name, actions, pageNumber) {\n if (name === "PageOpen") {\n if (!this._pageActions.has(pageNumber)) {\n this._pageActions.set(pageNumber, (0, _common.createActionsMap)(actions));\n }\n\n this._pageNum = pageNumber - 1;\n }\n\n actions = this._pageActions.get(pageNumber)?.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _runActions(name) {\n const actions = this._actions.get(name);\n\n if (actions) {\n for (const action of actions) {\n this._globalEval(action);\n }\n }\n }\n\n _addField(name, field) {\n this._fields.set(name, field);\n\n this._fieldNames.push(name);\n\n this._numFields++;\n }\n\n _getDate(date) {\n if (!date || date.length < 15 || !date.startsWith("D:")) {\n return date;\n }\n\n date = date.substring(2);\n const year = date.substring(0, 4);\n const month = date.substring(4, 6);\n const day = date.substring(6, 8);\n const hour = date.substring(8, 10);\n const minute = date.substring(10, 12);\n const o = date.charAt(12);\n let second, offsetPos;\n\n if (o === "Z" || o === "+" || o === "-") {\n second = "00";\n offsetPos = 12;\n } else {\n second = date.substring(12, 14);\n offsetPos = 14;\n }\n\n const offset = date.substring(offsetPos).replaceAll("\'", "");\n return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n }\n\n get author() {\n return this._author;\n }\n\n set author(_) {\n throw new Error("doc.author is read-only");\n }\n\n get baseURL() {\n return this._baseURL;\n }\n\n set baseURL(baseURL) {\n this._baseURL = baseURL;\n }\n\n get bookmarkRoot() {\n return undefined;\n }\n\n set bookmarkRoot(_) {\n throw new Error("doc.bookmarkRoot is read-only");\n }\n\n get calculate() {\n return this._calculate;\n }\n\n set calculate(calculate) {\n this._calculate = calculate;\n }\n\n get creator() {\n return this._creator;\n }\n\n set creator(_) {\n throw new Error("doc.creator is read-only");\n }\n\n get dataObjects() {\n return [];\n }\n\n set dataObjects(_) {\n throw new Error("doc.dataObjects is read-only");\n }\n\n get delay() {\n return this._delay;\n }\n\n set delay(delay) {\n this._delay = delay;\n }\n\n get dirty() {\n return this._dirty;\n }\n\n set dirty(dirty) {\n this._dirty = dirty;\n }\n\n get disclosed() {\n return this._disclosed;\n }\n\n set disclosed(disclosed) {\n this._disclosed = disclosed;\n }\n\n get docID() {\n return this._docID;\n }\n\n set docID(_) {\n throw new Error("doc.docID is read-only");\n }\n\n get documentFileName() {\n return this._documentFileName;\n }\n\n set documentFileName(_) {\n throw new Error("doc.documentFileName is read-only");\n }\n\n get dynamicXFAForm() {\n return false;\n }\n\n set dynamicXFAForm(_) {\n throw new Error("doc.dynamicXFAForm is read-only");\n }\n\n get external() {\n return true;\n }\n\n set external(_) {\n throw new Error("doc.external is read-only");\n }\n\n get filesize() {\n return this._filesize;\n }\n\n set filesize(_) {\n throw new Error("doc.filesize is read-only");\n }\n\n get hidden() {\n return false;\n }\n\n set hidden(_) {\n throw new Error("doc.hidden is read-only");\n }\n\n get hostContainer() {\n return undefined;\n }\n\n set hostContainer(_) {\n throw new Error("doc.hostContainer is read-only");\n }\n\n get icons() {\n return undefined;\n }\n\n set icons(_) {\n throw new Error("doc.icons is read-only");\n }\n\n get info() {\n return this._info;\n }\n\n set info(_) {\n throw new Error("doc.info is read-only");\n }\n\n get innerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerAppWindowRect(_) {\n throw new Error("doc.innerAppWindowRect is read-only");\n }\n\n get innerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set innerDocWindowRect(_) {\n throw new Error("doc.innerDocWindowRect is read-only");\n }\n\n get isModal() {\n return false;\n }\n\n set isModal(_) {\n throw new Error("doc.isModal is read-only");\n }\n\n get keywords() {\n return this._keywords;\n }\n\n set keywords(_) {\n throw new Error("doc.keywords is read-only");\n }\n\n get layout() {\n return this._layout;\n }\n\n set layout(value) {\n if (typeof value !== "string") {\n return;\n }\n\n if (value !== "SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== "TwoColumnRight" && value !== "TwoPageRight") {\n value = "SinglePage";\n }\n\n this._send({\n command: "layout",\n value\n });\n\n this._layout = value;\n }\n\n get media() {\n return this._media;\n }\n\n set media(media) {\n this._media = media;\n }\n\n get metadata() {\n return this._metadata;\n }\n\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n get modDate() {\n return this._modDate;\n }\n\n set modDate(_) {\n throw new Error("doc.modDate is read-only");\n }\n\n get mouseX() {\n return 0;\n }\n\n set mouseX(_) {\n throw new Error("doc.mouseX is read-only");\n }\n\n get mouseY() {\n return 0;\n }\n\n set mouseY(_) {\n throw new Error("doc.mouseY is read-only");\n }\n\n get noautocomplete() {\n return this._noautocomplete;\n }\n\n set noautocomplete(noautocomplete) {\n this._noautocomplete = noautocomplete;\n }\n\n get nocache() {\n return this._nocache;\n }\n\n set nocache(nocache) {\n this._nocache = nocache;\n }\n\n get numFields() {\n return this._numFields;\n }\n\n set numFields(_) {\n throw new Error("doc.numFields is read-only");\n }\n\n get numPages() {\n return this._numPages;\n }\n\n set numPages(_) {\n throw new Error("doc.numPages is read-only");\n }\n\n get numTemplates() {\n return 0;\n }\n\n set numTemplates(_) {\n throw new Error("doc.numTemplates is read-only");\n }\n\n get outerAppWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerAppWindowRect(_) {\n throw new Error("doc.outerAppWindowRect is read-only");\n }\n\n get outerDocWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set outerDocWindowRect(_) {\n throw new Error("doc.outerDocWindowRect is read-only");\n }\n\n get pageNum() {\n return this._pageNum;\n }\n\n set pageNum(value) {\n if (typeof value !== "number" || value < 0 || value >= this._numPages) {\n return;\n }\n\n this._send({\n command: "page-num",\n value\n });\n\n this._pageNum = value;\n }\n\n get pageWindowRect() {\n return [0, 0, 0, 0];\n }\n\n set pageWindowRect(_) {\n throw new Error("doc.pageWindowRect is read-only");\n }\n\n get path() {\n return "";\n }\n\n set path(_) {\n throw new Error("doc.path is read-only");\n }\n\n get permStatusReady() {\n return true;\n }\n\n set permStatusReady(_) {\n throw new Error("doc.permStatusReady is read-only");\n }\n\n get producer() {\n return this._producer;\n }\n\n set producer(_) {\n throw new Error("doc.producer is read-only");\n }\n\n get requiresFullSave() {\n return false;\n }\n\n set requiresFullSave(_) {\n throw new Error("doc.requiresFullSave is read-only");\n }\n\n get securityHandler() {\n return null;\n }\n\n set securityHandler(_) {\n throw new Error("doc.securityHandler is read-only");\n }\n\n get selectedAnnots() {\n return [];\n }\n\n set selectedAnnots(_) {\n throw new Error("doc.selectedAnnots is read-only");\n }\n\n get sounds() {\n return [];\n }\n\n set sounds(_) {\n throw new Error("doc.sounds is read-only");\n }\n\n get spellDictionaryOrder() {\n return this._spellDictionaryOrder;\n }\n\n set spellDictionaryOrder(spellDictionaryOrder) {\n this._spellDictionaryOrder = spellDictionaryOrder;\n }\n\n get spellLanguageOrder() {\n return this._spellLanguageOrder;\n }\n\n set spellLanguageOrder(spellLanguageOrder) {\n this._spellLanguageOrder = spellLanguageOrder;\n }\n\n get subject() {\n return this._subject;\n }\n\n set subject(_) {\n throw new Error("doc.subject is read-only");\n }\n\n get templates() {\n return [];\n }\n\n set templates(_) {\n throw new Error("doc.templates is read-only");\n }\n\n get title() {\n return this._title;\n }\n\n set title(_) {\n throw new Error("doc.title is read-only");\n }\n\n get URL() {\n return this._URL;\n }\n\n set URL(_) {\n throw new Error("doc.URL is read-only");\n }\n\n get viewState() {\n return undefined;\n }\n\n set viewState(_) {\n throw new Error("doc.viewState is read-only");\n }\n\n get xfa() {\n return this._xfa;\n }\n\n set xfa(_) {\n throw new Error("doc.xfa is read-only");\n }\n\n get XFAForeground() {\n return false;\n }\n\n set XFAForeground(_) {\n throw new Error("doc.XFAForeground is read-only");\n }\n\n get zoomType() {\n return this._zoomType;\n }\n\n set zoomType(type) {\n if (typeof type !== "string") {\n return;\n }\n\n switch (type) {\n case _constants.ZoomType.none:\n this._send({\n command: "zoom",\n value: 1\n });\n\n break;\n\n case _constants.ZoomType.fitP:\n this._send({\n command: "zoom",\n value: "page-fit"\n });\n\n break;\n\n case _constants.ZoomType.fitW:\n this._send({\n command: "zoom",\n value: "page-width"\n });\n\n break;\n\n case _constants.ZoomType.fitH:\n this._send({\n command: "zoom",\n value: "page-height"\n });\n\n break;\n\n case _constants.ZoomType.fitV:\n this._send({\n command: "zoom",\n value: "auto"\n });\n\n break;\n\n case _constants.ZoomType.pref:\n case _constants.ZoomType.refW:\n break;\n\n default:\n return;\n }\n\n this._zoomType = type;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(value) {\n if (typeof value !== "number" || value < 8.33 || value > 6400) {\n return;\n }\n\n this._send({\n command: "zoom",\n value: value / 100\n });\n }\n\n addAnnot() {}\n\n addField() {}\n\n addIcon() {}\n\n addLink() {}\n\n addRecipientListCryptFilter() {}\n\n addRequirement() {}\n\n addScript() {}\n\n addThumbnails() {}\n\n addWatermarkFromFile() {}\n\n addWatermarkFromText() {}\n\n addWeblinks() {}\n\n bringToFront() {}\n\n calculateNow() {\n this._eventDispatcher.calculateNow();\n }\n\n closeDoc() {}\n\n colorConvertPage() {}\n\n createDataObject() {}\n\n createTemplate() {}\n\n deletePages() {}\n\n deleteSound() {}\n\n embedDocAsDataObject() {}\n\n embedOutputIntent() {}\n\n encryptForRecipients() {}\n\n encryptUsingPolicy() {}\n\n exportAsFDF() {}\n\n exportAsFDFStr() {}\n\n exportAsText() {}\n\n exportAsXFDF() {}\n\n exportAsXFDFStr() {}\n\n exportDataObject() {}\n\n exportXFAData() {}\n\n extractPages() {}\n\n flattenPages() {}\n\n getAnnot() {}\n\n getAnnots() {}\n\n getAnnot3D() {}\n\n getAnnots3D() {}\n\n getColorConvertAction() {}\n\n getDataObject() {}\n\n getDataObjectContents() {}\n\n getField(cName) {\n if (typeof cName !== "string") {\n throw new TypeError("Invalid field name: must be a string");\n }\n\n const searchedField = this._fields.get(cName);\n\n if (searchedField) {\n return searchedField;\n }\n\n for (const [name, field] of this._fields.entries()) {\n if (name.includes(cName)) {\n return field;\n }\n }\n\n return undefined;\n }\n\n getIcon() {}\n\n getLegalWarnings() {}\n\n getLinks() {}\n\n getNthFieldName(nIndex) {\n if (typeof nIndex !== "number") {\n throw new TypeError("Invalid field index: must be a number");\n }\n\n if (0 <= nIndex && nIndex < this.numFields) {\n return this._fieldNames[Math.trunc(nIndex)];\n }\n\n return null;\n }\n\n getNthTemplate() {\n return null;\n }\n\n getOCGs() {}\n\n getOCGOrder() {}\n\n getPageBox() {}\n\n getPageLabel() {}\n\n getPageNthWord() {}\n\n getPageNthWordQuads() {}\n\n getPageNumWords() {}\n\n getPageRotation() {}\n\n getPageTransition() {}\n\n getPrintParams() {\n if (!this._printParams) {\n this._printParams = new _print_params.PrintParams({\n lastPage: this._numPages - 1\n });\n }\n\n return this._printParams;\n }\n\n getSound() {}\n\n getTemplate() {}\n\n getURL() {}\n\n gotoNamedDest() {}\n\n importAnFDF() {}\n\n importAnXFDF() {}\n\n importDataObject() {}\n\n importIcon() {}\n\n importSound() {}\n\n importTextData() {}\n\n importXFAData() {}\n\n insertPages() {}\n\n mailDoc() {}\n\n mailForm() {}\n\n movePage() {}\n\n newPage() {}\n\n openDataObject() {}\n\n print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n if (printParams) {\n nStart = printParams.firstPage;\n nEnd = printParams.lastPage;\n }\n\n if (typeof nStart === "number") {\n nStart = Math.max(0, Math.trunc(nStart));\n } else {\n nStart = 0;\n }\n\n if (typeof nEnd === "number") {\n nEnd = Math.max(0, Math.trunc(nEnd));\n } else {\n nEnd = -1;\n }\n\n this._send({\n command: "print",\n start: nStart,\n end: nEnd\n });\n }\n\n removeDataObject() {}\n\n removeField() {}\n\n removeIcon() {}\n\n removeLinks() {}\n\n removeRequirement() {}\n\n removeScript() {}\n\n removeTemplate() {}\n\n removeThumbnails() {}\n\n removeWeblinks() {}\n\n replacePages() {}\n\n resetForm(aFields = null) {\n let mustCalculate = false;\n\n if (aFields) {\n for (const fieldName of aFields) {\n const field = this.getField(fieldName);\n\n if (field) {\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n mustCalculate = true;\n }\n }\n } else {\n mustCalculate = this._fields.size !== 0;\n\n for (const field of this._fields.values()) {\n field.value = field.defaultValue;\n field.valueAsString = field.value;\n }\n }\n\n if (mustCalculate) {\n this.calculateNow();\n }\n }\n\n saveAs() {}\n\n scroll() {}\n\n selectPageNthWord() {}\n\n setAction() {}\n\n setDataObjectContents() {}\n\n setOCGOrder() {}\n\n setPageAction() {}\n\n setPageBoxes() {}\n\n setPageLabels() {}\n\n setPageRotations() {}\n\n setPageTabOrder() {}\n\n setPageTransitions() {}\n\n spawnPageFromTemplate() {}\n\n submitForm() {}\n\n syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n constructor(data) {\n this.binaryOk = true;\n this.bitmapDPI = 150;\n this.booklet = {\n binding: 0,\n duplexMode: 0,\n subsetFrom: 0,\n subsetTo: -1\n };\n this.colorOverride = 0;\n this.colorProfile = "";\n this.constants = Object.freeze({\n bookletBindings: Object.freeze({\n Left: 0,\n Right: 1,\n LeftTall: 2,\n RightTall: 3\n }),\n bookletDuplexMode: Object.freeze({\n BothSides: 0,\n FrontSideOnly: 1,\n BasicSideOnly: 2\n }),\n colorOverrides: Object.freeze({\n auto: 0,\n gray: 1,\n mono: 2\n }),\n fontPolicies: Object.freeze({\n everyPage: 0,\n jobStart: 1,\n pageRange: 2\n }),\n handling: Object.freeze({\n none: 0,\n fit: 1,\n shrink: 2,\n tileAll: 3,\n tileLarge: 4,\n nUp: 5,\n booklet: 6\n }),\n interactionLevel: Object.freeze({\n automatic: 0,\n full: 1,\n silent: 2\n }),\n nUpPageOrders: Object.freeze({\n Horizontal: 0,\n HorizontalReversed: 1,\n Vertical: 2\n }),\n printContents: Object.freeze({\n doc: 0,\n docAndComments: 1,\n formFieldsOnly: 2\n }),\n flagValues: Object.freeze({\n applyOverPrint: 1,\n applySoftProofSettings: 1 << 1,\n applyWorkingColorSpaces: 1 << 2,\n emitHalftones: 1 << 3,\n emitPostScriptXObjects: 1 << 4,\n emitFormsAsPSForms: 1 << 5,\n maxJP2KRes: 1 << 6,\n setPageSize: 1 << 7,\n suppressBG: 1 << 8,\n suppressCenter: 1 << 9,\n suppressCJKFontSubst: 1 << 10,\n suppressCropClip: 1 << 1,\n suppressRotate: 1 << 12,\n suppressTransfer: 1 << 13,\n suppressUCR: 1 << 14,\n useTrapAnnots: 1 << 15,\n usePrintersMarks: 1 << 16\n }),\n rasterFlagValues: Object.freeze({\n textToOutline: 1,\n strokesToOutline: 1 << 1,\n allowComplexClip: 1 << 2,\n preserveOverprint: 1 << 3\n }),\n subsets: Object.freeze({\n all: 0,\n even: 1,\n odd: 2\n }),\n tileMarks: Object.freeze({\n none: 0,\n west: 1,\n east: 2\n }),\n usages: Object.freeze({\n auto: 0,\n use: 1,\n noUse: 2\n })\n });\n this.downloadFarEastFonts = false;\n this.fileName = "";\n this.firstPage = 0;\n this.flags = 0;\n this.fontPolicy = 0;\n this.gradientDPI = 150;\n this.interactive = 1;\n this.lastPage = data.lastPage;\n this.npUpAutoRotate = false;\n this.npUpNumPagesH = 2;\n this.npUpNumPagesV = 2;\n this.npUpPageBorder = false;\n this.npUpPageOrder = 0;\n this.pageHandling = 0;\n this.pageSubset = 0;\n this.printAsImage = false;\n this.printContent = 0;\n this.printerName = "";\n this.psLevel = 0;\n this.rasterFlags = 0;\n this.reversePages = false;\n this.tileLabel = false;\n this.tileMark = 0;\n this.tileOverlap = 0;\n this.tileScale = 1.0;\n this.transparencyLevel = 75;\n this.usePrinterCRD = 0;\n this.useT1Conversion = 0;\n }\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n get(obj, prop) {\n if (prop in obj._expandos) {\n const val = obj._expandos[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const val = obj[prop];\n\n if (typeof val === "function") {\n return val.bind(obj);\n }\n\n return val;\n }\n\n return undefined;\n }\n\n set(obj, prop, value) {\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n const old = obj[prop];\n obj[prop] = value;\n\n if (obj._send && obj._id !== null && typeof old !== "function") {\n const data = {\n id: obj._id\n };\n data[prop] = obj[prop];\n\n obj._send(data);\n }\n } else {\n obj._expandos[prop] = value;\n }\n\n return true;\n }\n\n has(obj, prop) {\n return prop in obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n }\n\n getPrototypeOf(obj) {\n return null;\n }\n\n setPrototypeOf(obj, proto) {\n return false;\n }\n\n isExtensible(obj) {\n return true;\n }\n\n preventExtensions(obj) {\n return false;\n }\n\n getOwnPropertyDescriptor(obj, prop) {\n if (prop in obj._expandos) {\n return {\n configurable: true,\n enumerable: true,\n value: obj._expandos[prop]\n };\n }\n\n if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n return {\n configurable: true,\n enumerable: true,\n value: obj[prop]\n };\n }\n\n return undefined;\n }\n\n defineProperty(obj, key, descriptor) {\n Object.defineProperty(obj._expandos, key, descriptor);\n return true;\n }\n\n deleteProperty(obj, prop) {\n if (prop in obj._expandos) {\n delete obj._expandos[prop];\n }\n }\n\n ownKeys(obj) {\n const fromExpandos = Reflect.ownKeys(obj._expandos);\n const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n return fromExpandos.concat(fromObj);\n }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Util extends _pdf_object.PDFObject {\n constructor(data) {\n super(data);\n this._scandCache = new Map();\n this._months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n this._days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n this.MILLISECONDS_IN_DAY = 86400000;\n this.MILLISECONDS_IN_WEEK = 604800000;\n this._externalCall = data.externalCall;\n }\n\n printf(...args) {\n if (args.length === 0) {\n throw new Error("Invalid number of params in printf");\n }\n\n if (typeof args[0] !== "string") {\n throw new TypeError("First argument of printf must be a string");\n }\n\n const pattern = /%(,[0-4])?([+ 0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n const PLUS = 1;\n const SPACE = 2;\n const ZERO = 4;\n const HASH = 8;\n let i = 0;\n return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\n if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar !== "x") {\n const buf = ["%"];\n\n for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\n if (str) {\n buf.push(str);\n }\n }\n\n return buf.join("");\n }\n\n i++;\n\n if (i === args.length) {\n throw new Error("Not enough arguments in printf");\n }\n\n const arg = args[i];\n\n if (cConvChar === "s") {\n return arg.toString();\n }\n\n let flags = 0;\n\n if (cFlags) {\n for (const flag of cFlags) {\n switch (flag) {\n case "+":\n flags |= PLUS;\n break;\n\n case " ":\n flags |= SPACE;\n break;\n\n case "0":\n flags |= ZERO;\n break;\n\n case "#":\n flags |= HASH;\n break;\n }\n }\n }\n\n cFlags = flags;\n\n if (nWidth) {\n nWidth = parseInt(nWidth);\n }\n\n let intPart = Math.trunc(arg);\n\n if (cConvChar === "x") {\n let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n if (nWidth !== undefined) {\n hex = hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n }\n\n if (cFlags & HASH) {\n hex = `0x${hex}`;\n }\n\n return hex;\n }\n\n if (nPrecision) {\n nPrecision = parseInt(nPrecision.substring(1));\n }\n\n nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n const separators = {\n 0: [",", "."],\n 1: ["", "."],\n 2: [".", ","],\n 3: ["", ","],\n 4: ["\'", "."]\n };\n const [thousandSep, decimalSep] = separators[nDecSep];\n let decPart = "";\n\n if (cConvChar === "f") {\n if (nPrecision !== undefined) {\n decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n } else {\n decPart = Math.abs(arg - intPart).toString();\n }\n\n if (decPart.length > 2) {\n decPart = `${decimalSep}${decPart.substring(2)}`;\n } else if (cFlags & HASH) {\n decPart = ".";\n } else {\n decPart = "";\n }\n }\n\n let sign = "";\n\n if (intPart < 0) {\n sign = "-";\n intPart = -intPart;\n } else if (cFlags & PLUS) {\n sign = "+";\n } else if (cFlags & SPACE) {\n sign = " ";\n }\n\n if (thousandSep && intPart >= 1000) {\n const buf = [];\n\n while (true) {\n buf.push((intPart % 1000).toString().padStart(3, "0"));\n intPart = Math.trunc(intPart / 1000);\n\n if (intPart < 1000) {\n buf.push(intPart.toString());\n break;\n }\n }\n\n intPart = buf.reverse().join(thousandSep);\n } else {\n intPart = intPart.toString();\n }\n\n let n = `${intPart}${decPart}`;\n\n if (nWidth !== undefined) {\n n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n }\n\n return `${sign}${n}`;\n });\n }\n\n iconStreamFromIcon() {}\n\n printd(cFormat, oDate) {\n switch (cFormat) {\n case 0:\n return this.printd("D:yyyymmddHHMMss", oDate);\n\n case 1:\n return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n case 2:\n return this.printd("m/d/yy h:MM:ss tt", oDate);\n }\n\n const handlers = {\n mmmm: data => {\n return this._months[data.month];\n },\n mmm: data => {\n return this._months[data.month].substring(0, 3);\n },\n mm: data => {\n return (data.month + 1).toString().padStart(2, "0");\n },\n m: data => {\n return (data.month + 1).toString();\n },\n dddd: data => {\n return this._days[data.dayOfWeek];\n },\n ddd: data => {\n return this._days[data.dayOfWeek].substring(0, 3);\n },\n dd: data => {\n return data.day.toString().padStart(2, "0");\n },\n d: data => {\n return data.day.toString();\n },\n yyyy: data => {\n return data.year.toString();\n },\n yy: data => {\n return (data.year % 100).toString().padStart(2, "0");\n },\n HH: data => {\n return data.hours.toString().padStart(2, "0");\n },\n H: data => {\n return data.hours.toString();\n },\n hh: data => {\n return (1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n },\n h: data => {\n return (1 + (data.hours + 11) % 12).toString();\n },\n MM: data => {\n return data.minutes.toString().padStart(2, "0");\n },\n M: data => {\n return data.minutes.toString();\n },\n ss: data => {\n return data.seconds.toString().padStart(2, "0");\n },\n s: data => {\n return data.seconds.toString();\n },\n tt: data => {\n return data.hours < 12 ? "am" : "pm";\n },\n t: data => {\n return data.hours < 12 ? "a" : "p";\n }\n };\n const data = {\n year: oDate.getFullYear(),\n month: oDate.getMonth(),\n day: oDate.getDate(),\n dayOfWeek: oDate.getDay(),\n hours: oDate.getHours(),\n minutes: oDate.getMinutes(),\n seconds: oDate.getSeconds()\n };\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n return cFormat.replace(patterns, function (match, pattern) {\n if (pattern in handlers) {\n return handlers[pattern](data);\n }\n\n return pattern.charCodeAt(1);\n });\n }\n\n printx(cFormat, cSource) {\n const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n const buf = [];\n let i = 0;\n const ii = cSource.length;\n let currCase = handlers[0];\n let escaped = false;\n\n for (const command of cFormat) {\n if (escaped) {\n buf.push(command);\n escaped = false;\n continue;\n }\n\n if (i >= ii) {\n break;\n }\n\n switch (command) {\n case "?":\n buf.push(currCase(cSource.charAt(i++)));\n break;\n\n case "X":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "A":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n buf.push(currCase(char));\n break;\n }\n }\n\n break;\n\n case "9":\n while (i < ii) {\n const char = cSource.charAt(i++);\n\n if ("0" <= char && char <= "9") {\n buf.push(char);\n break;\n }\n }\n\n break;\n\n case "*":\n while (i < ii) {\n buf.push(currCase(cSource.charAt(i++)));\n }\n\n break;\n\n case "\\\\":\n escaped = true;\n break;\n\n case ">":\n currCase = handlers[1];\n break;\n\n case "<":\n currCase = handlers[2];\n break;\n\n case "=":\n currCase = handlers[0];\n break;\n\n default:\n buf.push(command);\n }\n }\n\n return buf.join("");\n }\n\n scand(cFormat, cDate) {\n switch (cFormat) {\n case 0:\n return this.scand("D:yyyymmddHHMMss", cDate);\n\n case 1:\n return this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n case 2:\n return this.scand("m/d/yy h:MM:ss tt", cDate);\n }\n\n if (!this._scandCache.has(cFormat)) {\n const months = this._months;\n const days = this._days;\n const handlers = {\n mmmm: {\n pattern: `(${months.join("|")})`,\n action: (value, data) => {\n data.month = months.indexOf(value);\n }\n },\n mmm: {\n pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.month = months.findIndex(month => month.substring(0, 3) === value);\n }\n },\n mm: {\n pattern: `([0-9]{2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n m: {\n pattern: `([0-9]{1,2})`,\n action: (value, data) => {\n data.month = parseInt(value) - 1;\n }\n },\n dddd: {\n pattern: `(${days.join("|")})`,\n action: (value, data) => {\n data.day = days.indexOf(value);\n }\n },\n ddd: {\n pattern: `(${days.map(day => day.substring(0, 3)).join("|")})`,\n action: (value, data) => {\n data.day = days.findIndex(day => day.substring(0, 3) === value);\n }\n },\n dd: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n d: {\n pattern: "([0-9]{1,2})",\n action: (value, data) => {\n data.day = parseInt(value);\n }\n },\n yyyy: {\n pattern: "([0-9]{4})",\n action: (value, data) => {\n data.year = parseInt(value);\n }\n },\n yy: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.year = 2000 + parseInt(value);\n }\n },\n HH: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n H: {\n pattern: "([0-9]{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n hh: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n h: {\n pattern: "([0-9]{1,2})",\n action: (value, data) => {\n data.hours = parseInt(value);\n }\n },\n MM: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n M: {\n pattern: "([0-9]{1,2})",\n action: (value, data) => {\n data.minutes = parseInt(value);\n }\n },\n ss: {\n pattern: "([0-9]{2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n s: {\n pattern: "([0-9]{1,2})",\n action: (value, data) => {\n data.seconds = parseInt(value);\n }\n },\n tt: {\n pattern: "([aApP][mM])",\n action: (value, data) => {\n const char = value.charAt(0);\n data.am = char === "a" || char === "A";\n }\n },\n t: {\n pattern: "([aApP])",\n action: (value, data) => {\n data.am = value === "a" || value === "A";\n }\n }\n };\n const escapedFormat = cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n const actions = [];\n const re = escapedFormat.replace(patterns, function (match, patternElement) {\n const {\n pattern,\n action\n } = handlers[patternElement];\n actions.push(action);\n return pattern;\n });\n\n this._scandCache.set(cFormat, [new RegExp(re, "g"), actions]);\n }\n\n const [regexForFormat, actions] = this._scandCache.get(cFormat);\n\n const matches = regexForFormat.exec(cDate);\n\n if (matches.length !== actions.length + 1) {\n throw new Error("Invalid date in util.scand");\n }\n\n const data = {\n year: 0,\n month: 0,\n day: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n am: null\n };\n actions.forEach((action, i) => action(matches[i + 1], data));\n\n if (data.am !== null) {\n data.hours = data.hours % 12 + (data.am ? 0 : 12);\n }\n\n return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\n }\n\n spansToXML() {}\n\n stringFromStream() {}\n\n xmlToSpans() {}\n\n}\n\nexports.Util = Util;\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(0);\n/******/ })()\n;\n});', `pdfjsScripting.initSandbox({ data: ${sandboxData} })`]; + + if (!TESTING) { + code.push("delete dump;"); + } else { + code.unshift(`globalThis.sendResultForTesting = callExternalFunction.bind(null, "send");`); + } + + let success = false; + + try { + success = !!this._module.ccall("init", "number", ["string", "number"], [code.join("\n"), this._alertOnError]); + } catch (error) { + console.error(error); + } + + if (success) { + this.support.commFun = this._module.cwrap("commFun", null, ["string", "string"]); + } else { + this.nukeSandbox(); + throw new Error("Cannot start sandbox"); + } + } + + dispatchEvent(event) { + this.support.callSandboxFunction("dispatchEvent", event); + } + + dumpMemoryUse() { + if (this._module) { + this._module.ccall("dumpMemoryUse", null, []); + } + } + + nukeSandbox() { + if (this._module !== null) { + this.support.destroy(); + this.support = null; + + this._module.ccall("nukeSandbox", null, []); + + this._module = null; + } + } + + evalForTesting(code, key) { + if (TESTING) { + this._module.ccall("evalInSandbox", null, ["string", "int"], [`try { + sendResultForTesting([{ id: "${key}", result: ${code} }]); + } catch (error) { + sendResultForTesting([{ id: "${key}", result: error.message }]); + }`, this._alertOnError]); + } + } + +} + +function QuickJSSandbox() { + return (0, _quickjsEval.default)().then(module => { + return new Sandbox(window, module); + }); +} + +/***/ }), +/* 1 */ +/***/ ((__unused_webpack_module, exports) => { + +Object.defineProperty(exports, "__esModule", ({value:true}));exports.default=void 0;var Module=function(){var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h,n;b.ready=new Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var t="";"undefined"!==typeof document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var noExitRuntime;b.noExitRuntime&&(noExitRuntime=b.noExitRuntime);"object"!==typeof WebAssembly&&w("no native wasm support detected");var x,y=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown function "+(a+", make sure it is exported"));return c;}function B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var W=(l.length<<2)+1;p=C(W);D(l,E,p,W);}return p;},array:function(l){var p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var z=f[d[m]];z?(0===a&&(a=G()),k[m]=z(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function ba(a,c,d){var e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e="";c<d;){var f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else e+=String.fromCharCode(f);}return e;}function H(a){return a?ba(E,a,void 0):"";}function D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var g=a.charCodeAt(f);if(55296<=g&&57343>=g){var k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function ca(a){for(var c=0,d=0;d<a.length;++d){var e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return c;}function da(a){var c=ca(a)+1,d=K(c);d&&D(a,F,d,c);return d;}var L,F,E,M,N=b.INITIAL_MEMORY||16777216;b.wasmMemory?x=b.wasmMemory:x=new WebAssembly.Memory({initial:N/65536,maximum:N/65536});x&&(L=x.buffer);N=L.byteLength;var O=L;L=O;b.HEAP8=F=new Int8Array(O);b.HEAP16=new Int16Array(O);b.HEAP32=M=new Int32Array(O);b.HEAPU8=E=new Uint8Array(O);b.HEAPU16=new Uint16Array(O);b.HEAPU32=new Uint32Array(O);b.HEAPF32=new Float32Array(O);b.HEAPF64=new Float64Array(O);var P,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var Q=0,R=null,S=null;b.preloadedImages={};b.preloadedAudios={};function w(a){if(b.onAbort)b.onAbort(a);u(a);y=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");n(a);throw a;}function T(a){return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var U="data:application/octet-stream;base64,AGFzbQEAAAABpQd5YAN/f38Bf2ACf38Bf2AEf35/fwF+YAJ/fwBgAX8Bf2ADf39/AGAFf35/f38BfmABfwBgAn9+AX5gBH9/f38Bf2ACf34Bf2ABfAF8YAJ/fwF+YAJ/fgBgA39/fgF/YAF+AX9gA39+fwF+YAN/fn8AYAN/fn8Bf2AFf39/f38Bf2AGf35/f39/AX5gA39/fwF+YAN/fn4BfmAGf35+f39/AX5gBH9/fn8Bf2AGf39/f39/AX9gAX8BfmACfHwBfGAEf39/fwBgBH9/f38BfmADf35+AX9gBX9/f39/AGAFf35+fn4AYAd/f39/f39/AX9gBH9+fn8BfmAFf35+f38BfmABfgF+YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAAAYAN/f34AYAN/fn4AYAR/fn5/AGAEf35+fwF/YAR/fn5+AX9gBX9+fn5/AX9gAn5/AX9gBH9+f38AYAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AGf35/fn5/AX9gA35/fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn4BfmAGf39/f39/AGAHf39/f39/fwBgBH9/fn8AYAh/f39/f39/fwF/YAR/f39+AX9gBH9+f34Bf2AGf3x/f39/AX9gBX9/f39/AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAN/f3wAYAV/fn9/fwBgBH9+f34AYAZ/fn9+fn8AYAJ/fQBgAn98AGADf3x/AGAFf3x/f38AYAF+AGAHfH9/f39/fwBgCn9/f39/f39/f38Bf2AGf39/fn5/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn9/fgF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAJ+fgF/YAN+fn4Bf2AEfn5+fgF/YAF8AX9gAnx/AX9gBnx/f39/fwF/YAJ8fAF/YAABfmAHf39/f39/fgF+YAV/f39/fgF+YAR/f39+AX5gA39/fgF+YAR/f35/AX5gBH9/fn4BfmAFf39+fn4BfmAFf35/fn8BfmAFf35+fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwB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BCACNgIMIANBAyABIAJBABC/BSADIAMoAhApA3ggACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEL0CIARBEGokAAsmAQF/IwBBEGsiAyQAIAMgAjYCDCAAQQQgASACEPsBIANBEGokAAs3AQF+QoCAgIDAfiAAvSIBQoCAgIDA/v+DgH98IAFC////////////AINCgICAgICAgPj/AFYbCw8AIAAoAkBBgAJqIAEQMAsrACABEPABRQRAIAAoAhAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABCwsAIAAoAhAgARAgCykAIAAgASACIANCgICAgDBCgICAgDAgBEGAzgByEHUhAiAAIAMQCyACCw8AIAAgACgCACABEBgQOQtKACAAEOgCRQRAQX8PCyACQX9MBEAgABA1IQILIAAgAUH/AXEQDSAAIAIQOSAAKAJAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsoAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBCUARogAkEQaiQACzEAIAFBAE4EQCAAQbQBEA0gACABEDkgACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLGAEBfiABKQMAIQMgASACNwMAIAAgAxALCxEAIABBEGogASAAKAIEEQMACwsAIABC/////29WCxgAIAFCIIinQX5PBEAgACABpyACEQMACwsXACAAIAEgAkKAgICAMCADIARBAhDfAQuCBAEDfyACQYAETwRAIAAgASACEAQaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAtIAQN/IANBACADQQBKGyEDA0AgAyAERkUEQCAAIAEgACACIARBBHRqIgUoAgAQmQUiBiAFEKcIIAAgBhASIARBAWohBAwBCwsLMgEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBf2o2AgAgAkEBSg0AIAAgARD3BAsLCwAgAEGUF0EAEBULBwAgAEEwagufAQEBfgJAAkACQAJAAkACQAJAIAEQU0EIag4QBQMAAAAAAAECBAAAAAABAgALIABBgM4AQQAQFUKAgICA4AAPCyABEA4PCyAAQQQQoAEhAgwDCyAAIABBBRCgASICQTAgAacpAgRC/////weDQQAQGhoMAgsgAEEGEKABIQIMAQsgAEEHEKABIQILIAIQDEUEQCAAIAIgARAOEOgBCyACCxIAIABCgICAgHCDQoCAgIAgUQuzBAELfyMAQRBrIggkACAAKAIAIQUgCCACNgIMQX8hCQJAA0ACQCAIIAIiA0EEaiICNgIMIAMoAgAiB0F/Rg0AIAAoAgQhCgNAIAEiBCAKTg0DIAQgBCAFaiILLQAAIgZBAnQiDEGQMWotAABqIgEgCkoNAyAGQcABRgRAIAsoAAEhCQwBCwsgBiAHRwRAIAZFIAdBgAJJciAHQf8BcSAGRiAHQQh2Qf8BcSAGRnIgB0EQdkH/AXEgBkZyRUEAIAdBGHYgBkcbcg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCAMQZMxai0AAEF7ag4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQkQQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARALIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCyACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEoiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAtBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxwELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEHt1gAgAhAUQX8MAQsgABAQCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEJQBGiACQRBqJAALIQAgACgCBEF/TARAIAAgAUEBdGovARAPCyAAIAFqLQAQCwsAIAAgAUEBEMYFC6QLAgV/CX4jAEHgAGsiBSQAIAJCIIYgAUIgiIQhESAEQi+GIANCEYiEIQ0gBEL///////8/gyIOQg+GIANCMYiEIQ8gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEQIA5CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUF/akH9/wFNBEBBACAHQX9qQf7/AUkNARoLIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDIQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDIRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAxC////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNYIgtCIIYgBSkDUCIBQiCIhCERIAtCIIghEEEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDiADIA4gDlAiCBt5IAhBBnStfKciCEFxahB7IAUpA0giAkIPhiAFKQNAIgNCMYiEIQ8gAkIvhiADQhGIhCENIAJCEYghEiAGIAhrQRBqCyEGIA9C/////w+DIgIgC0L/////D4MiBH4iDiANQv////8PgyILIBBCgIAEhCIMfnwiDSAOVK0gDSASQv////8Hg0KAgICACIQiDiARQv////8PgyIRfnwiDyANVK18IA8gCyARfiIQIANCD4ZCgID+/w+DIgMgBH58Ig0gEFStIA0gAiABQv////8PgyIBfnwiECANVK18fCINIA9UrXwgDCAOfnwgBCAOfiISIAIgDH58Ig8gElStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIAQgC34iDSADIAx+fCIEIAIgEX58IgIgASAOfnwiDEIgiCAMIAJUrSAEIA1UrSACIARUrXx8QiCGhHwiAiAPVK18IAIgECABIAt+IgQgAyARfnwiDkIgiCAOIARUrUIghoR8IgQgEFStIAQgDEIghnwiDCAEVK18fCIEIAJUrXwiAkKAgICAgIDAAIMiC0IwiKciCCAHIAlqIAZqakGBgH9qIgZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsgAkIBhiAEQj+IhCACIAtQIgcbIQsgDkIghiICIAEgA358IgEgAlStIAx8IgMgCEEBc60iDIYgAUIBiCAIQT5yrYiEIQIgBEIBhiADQj+IhCAEIAcbIQQgASAMhiEBAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiABIAIgBkH/AGoiBhB7IAVBIGogBCALIAYQeyAFQRBqIAEgAiAHEM8CIAUgBCALIAcQzwIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhASAFKQMoIAUpAxiEIQIgBSkDACEEIAUpAwgMAQsgC0L///////8/gyAGrUIwhoQLIAqEIQogAVAgAkJ/VSACQoCAgICAgICAgH9RG0UEQCAKIARCAXwiASAEVK18IQoMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAogBCAEQgGDfCIBIARUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/EMADCyEAIAAgASACQoCAgIAwIAMgBEECEN8BIQIgACABEAsgAgsZACABBEAgACABQXBqrUKAgICAkH+EEAsLC+sBAgJ/AX5CgICAgOAAIQMgACgCFAR+QoCAgIDgAAUgACgCBCEBIAAoAggiAkUEQCAAKAIAIAEQGSAAQQA2AgQgACgCAEEvEDIPCyACIAAoAgxIBEAgACgCACgCECABIAIgACgCECIBdCABa0ERahDjASIBRQRAIAAoAgQhAQsgACABNgIECyABIAAoAhAiAgR/IAIFIAEgACgCCGpBADoAECAAKAIQC0EfdK0gASkCBEL/////d4OEIgM3AgQgASADQoCAgIB4gyAANQIIQv////8Hg4Q3AgQgAEEANgIEIAGtQoCAgICQf4QLCw8AIAAoAkBBgAJqIAEQHQtyAQF/AkAgAUIgiKciAkF4RwRAIAINASABpyICQQBIDQEgAhCRAQ8LIAAgACgCECABpxDMAhAYDwtBACECIAAgARCHBCIBEAwEf0EABSABQoCAgIBwg0KAgICAgH9RBEAgACABEJcCDwsgACABpxCVBAsLSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALC3IBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQC0EACwsQACAAIAAoAigpAwhBARBQCxQBAX4gACABECwhAiAAIAEQCyACCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDQAhogA0EQaiQACygAIAAgAkEwIAJBABATIgIQDARAIAFCADcDAEF/DwsgACABIAIQrQELKAEBfwJAIABCgICAgHBUDQAgASAApyIBLwEGRw0AIAEoAiAhAgsgAgsNACAAIAEgAkEAEJ8DC5ABAQN/IAAhAQJAAkAgAEEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANB//37d2pxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLJgEBfyMAQRBrIgMkACADIAI2AgwgAEEGIAEgAhD7ASADQRBqJAALFQAgACgCACAAKAIEEBkgAEEANgIECwoAIABBUGpBCkkLIwECfyAAKAIAIgEgACgCBCICNgIEIAIgATYCACAAQgA3AgALDAAgACABIAIQDhBZCxEAIAAgASACIANBgIABEJYCCxEAIABCgICAgMCBgPz/AHy/CwwAIAAgASAAIAFKGwvzAgICfwF+AkAgAkUNACAAIAJqIgNBf2ogAToAACAAIAE6AAAgAkEDSQ0AIANBfmogAToAACAAIAE6AAEgA0F9aiABOgAAIAAgAToAAiACQQdJDQAgA0F8aiABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrSIFQiCGIAWEIQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQWBqIgJB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QQAQ+wFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA4iASACIAQoAhAREgAhAiAAIAEQCyACDwsgA61CgICAgHCEEA4hASAAQQAgAyACEFohBCAAIAEQCyAEDQIgAy8BBkFrakH//wNxQQhNBEAgACACEJkDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBYLEJ0BCwsAIABB/////wdxC9MJAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUJ/fCILQn9RIAJC////////////AIMiCSALIAFUrXxCf3wiC0L///////+///8AViALQv///////7///wBRG0UEQCADQn98IgtCf1IgCiALIANUrXxCf3wiC0L///////+///8AVCALQv///////7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgAyABViAKIAlWIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNoIQkgBSkDYCEKQRAgBmshBgsgASADIAcbIQMgAkL///////8/gyEEIAhFBEAgBUHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQXFqEHtBECAHayEIIAUpA1ghBCAFKQNQ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AxAAAAtBzuMDQezjA0GACkGG5AMQAAALQc7jA0Hs4wNB+QlBhuQDEAAAC0HO4wNB7OMDQfIJQYbkAxAAAAsgBEHgAGokACABC2kBAn8CfyAAKAIAIgNBAmoiBCAAKAIESgRAQX8gACAEEKoDDQEaIAAoAgAhAwsgACADQQFqNgIAIAAoAggiBCADQQJ0aiABNgIAIAAgACgCACIAQQFqNgIAIAQgAEECdGogAjYCAEEACwulAgEGfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASICIAEoAsQBIgRIBEAgASgCzAEhAyACDAELIAJBAWogBEEDbEECbRBLIQQgACgCACEDAkAgASgCzAEiBiABQdABakYEQCADQQAgBEEDdCAFQQxqELQBIgNFDQMgAyABKALMASABKALIAUEDdBAkGgwBCyADIAYgBEEDdCAFQQxqELQBIgNFDQILIAUoAgwhBiABIAM2AswBIAEgBkEDdiAEajYCxAEgASgCyAELQQFqNgLIASADIAJBA3RqIgQgASgCvAE2AgAgBCABKALAATYCBCAAQbIBEA0gACACQf//A3EQFyABIAI2ArwBDAELQX8hAgsgBUEQaiQAIAILEwAgAEKAgICAcINCgICAgMAAUQtJAQJ/IAJBKRBBIgQtABEEQCAAEMECQQAPCyAAIAQpAwgiAiADIAJBABATIgIQDAR/QQAFIAFCgICAgDAgAiACECobNwMAIAQLCywBAX8jAEEQayICJAAgAiAAKAI4NgIMIAJBDGogARCuCCEAIAJBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCRARB3IgRBAUgNAUF/IAQgACABIAIQnQEiAhAMGyEEDAILIAAgAhCSAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciBEEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABATIgIQDBshBAsgACAFEBIMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJoCC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECwiARAMBEAgABD9AkF/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAo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AigCgAIgA2pBAWogACgCACABEBgQXCACQX82ApgCCw8LQdaFAUGhDUH1rwFB3owBEAAACzIAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgAyAEQQdyEMMCCxAAIAAoAiAoAgwoAiAtAAQLqQEBAn8jAEEQayIEJAACQAJAIAAgASACQQBBACAEQQxqEPgEIgEQDA0AIAQoAgwiBUECRwRAIAMgBTYCACABIQIMAgsgACABQekAIAFBABATIgIQDA0AIAMgACACEC0iAzYCAEKAgICAMCECIANFBEAgACABQcAAIAFBABATIQILIAAgARALDAELIAAgARALIANBADYCAEKAgICA4AAhAgsgBEEQaiQAIAILIQAgACABIAJCAEL/////////D0IAEH0hASAAIAIQCyABC7YHAgd/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIAAgACgCFDYCBAJ/A0ACQCAAIAE2AhggACAAKAIIIgY2AhRBIiEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLAAAIgdB/wFxIgUOewAJCQkJCQkJCQYEBQUDCQkJCQkJCQkJCQkJCQkJCQkJBgkCCQ4JCQEJCQkLCQoJBwgMDAwMDAwMDAwJCQkJCQkJDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4JCQkJDgkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkLIAEgACgCPEkNDCAEQap/NgIADA4LQSchAyAAKAJMRQ0LCyAAIANBASABQQFqIAQgAkEMahCGAw0ODAwLIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCDCAAIAZBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgwMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIMA0ACQAJAAkACQCABLQAAIgNBdmoOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNAyAAQcDUAEEAEBQMDwsgAS0AAUEvRw0CIAIgAUECaiIBNgIMDA8LIAAgACgCCEEBajYCCAwBCyADQRh0QRh1QX9KDQAgAUEGIAJBDGoQYyEDIAIoAgwhASADQX9HDQELCyABQQFqIQEMAAsACyABLQABEEZFDQMMBAsgB0F/Sg0DIABB2tQAQQAQFAwHCyABLQABEEZFDQIMAQsgACgCTEUNASABLQABEEZFDQELIAAoAgAgASACQQxqQQBBCiAAKAJMIgEbIAFBAEdBAnQQugIiCBAMDQQgAEGAfzYCECAAIAg3AyAMAgsgBCAFNgIAIAIgAUEBajYCDAwBCyACIAFBAWo2AgwgACACQQxqIAUQpQgiAUUNAiAAQYN/NgIQIABCADcCJCAAIAE2AiALIAAgAigCDDYCOEEADAMLIAFBAmohAQNAIAIgATYCDANAAkACQCABLQAAIgMEQCADQXZqDgQGAQEGAQsgASAAKAI8Tw0FDAELIANBGHRBGHVBf0oNACABQQYgAkEMahBjIgNBfnFBqMAARgRAIAIoAgwhAQwFCyACKAIMIQEgA0F/Rw0BCwsgAUEBaiEBDAALAAsLIARBqH82AgBBfwshASACQRBqJAAgAQsRACAAIAEgASACIANBAhD8AwuqAQICfwJ+An8gAkUEQEKAgICAMCEGQQAMAQsgACgCECIDKQN4IQYgA0KAgICAIDcDeEF/CyEDQX8hBAJAIAAgAUEGIAFBABATIgUQDA0AAkAgBRARDQAgBRAqDQAgACAFIAFBAEEAEDYhAQJ/IAMgAg0AGkF/IAEQDA0AGiADIAEQIQ0AGiAAECdBfwshBCAAIAEQCwwBCyADIQQLIAIEQCAAIAYQkAELIAQLDAAgACABIAAgAUgbCx0AIABCgICAgHBaBH8gAKctAAVBBHZBAXEFQQALC64BAQF/IwBBEGsiAyQAAkACQCACEF0EQCABIAIQeTYCAEEBIQIMAQsgACgCECIAKAIsIAJNDQECfwJAIAAoAjggAkECdGooAgAiACkCBEKAgICAgICAgECDQoCAgICAgICAwABSDQAgA0EMaiAAEMsFRQ0AQQEgAygCDCIAQX9HDQEaC0EAIQBBAAshAiABIAA2AgALIANBEGokACACDwtByi9BoQ1BqxhBwj8QAAALRQAgACgCECABIAIQ4wEiASACRXJFBEAgABDHASABDwsgAwRAIANBACAAKAIQIAEQlgQiACACayICIAIgAEsbNgIACyABC2kBA34gACACQiCIIgMgAUIgiCIEfiACQv////8PgyICIAFC/////w+DIgF+IgVCIIggAiAEfnwiAkIgiHwgASADfiACQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAv5AQICfwN+IwBBEGsiAiQAAn4gAb0iBUL///////////8AgyIEQoCAgICAgIB4fEL/////////7/8AWARAIARCPIYhBiAEQgSIQoCAgICAgICAPHwMAQsgBEKAgICAgICA+P8AWgRAIAVCPIYhBiAFQgSIQoCAgICAgMD//wCEDAELIARQBEBCAAwBCyACIARCACAFp2dBIGogBEIgiKdnIARCgICAgBBUGyIDQTFqEHsgAikDACEGIAIpAwhCgICAgICAwACFQYz4ACADa61CMIaECyEEIAAgBjcDACAAIAQgBUKAgICAgICAgIB/g4Q3AwggAkEQaiQACyoBAX8jAEEQayIDJAAgAyACNgIMIAAgASACQe4CQQAQnQQaIANBEGokAAsNACAAQQAgAUEAEJIEC8cKAQZ/IwBBIGsiAiQAAkACQAJAAkACQAJAAkACfyAAKAIQIgNBg39HBEBBACADQVdHDQEaIAAoAkAiAy0AbEEBcUUEQCAAQeKGAUEAEBQMAwsgAygCZEUEQCAAQf2GAUEAEBQMAwtBfyEDIAAQEA0IAkACQAJAAkAgACgCECIFQVdqDgQCAQECAAsgBUHdAEYgBUFGakECSXIgBUH9AEZyDQELIAAoAjANACAFQSpGBEAgABAQDQtBASEECyAAIAEQuQFFDQEMCgsgAEEGEA0LIAAoAkAtAGwhASAEBEAgABA1IQQgABA1IQMgAEH+AEH9ACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBBAeIABBhQEQDSABQQNHIgdFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQeoAQX8QHCEFIAAgAxAeQYkBIQYgACAHBH9BiQEFIABBwQAQDSAAQcAAEBsgAEGLARANQYoBCxANIABBERANIABB6gBBfxAcIQYgAEEOEA0gAEHrACAEEBwaIAAgBhAeIABBARANIABBAhA5IABBqwEQDSAAQeoAQX8QHCEEIAFBA0ciBkUEQCAAQYsBEA0LIABBhgEQDSAAQQAQayAAQeoAQX8QHCEHIAZFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQekAIAMQHBogAEHBABANIABBwAAQGyAAIAcQHiAAQQ8QDSAAQQ8QDSAAQQ8QDSAAQQEQ6QIgACAEEB4gAEGGARANIABBARBrIABB6gBBfxAcIQQgAUEDRyIBRQRAIABBiwEQDQsgAEGBARANIABBwgAQDSAAQekAEBsgAEHpACADEBwaIABB6wAgBRAcGiAAIAQQHiAAQYYBEA0gAEECEGsgAEHqAEF/EBwhAyABRQRAIABBiwEQDQsgACADEB4gAEEwEA1BACEDIABBABAbIABBBBBrIAAgBRAeIABBwQAQDSAAQcAAEBsgAEEPEA0gAEEPEA0gAEEPEA0MCQsgAUEDRgRAIABBiwEQDQsgAEGIARANIABB6QBBfxAcIQEgAEEBEOkCDAQLIAAoAiALIQRBfyEDIAAgAUEEchDgBg0GIAAoAhAiBUH7AGohAyAFQT1HQQAgA0ELSxtFBEAgABAQDQEgACACQRxqIAJBGGogAkEUaiACQRBqQQAgBUE9RyAFELoBQQBIDQEgACABELkBBEAgACgCACACKAIUEBIMAgsgBUE9RgRAIAIoAhwiAUE8Rw0HIAIoAhQgBEcNBiAAIAQQqQEMBgsgACADQZmHAWotAAAQDSACKAIcIQEMBgtBACEDIAVB7wBqQQJLDQYgABAQDQAgACACQRxqIAJBGGogAkEUaiACQRBqIAJBDGpBASAFELoBQQBIDQAgAEEREA0gBUGTf0YEQCAAQbABEA0LIABB6gBB6QAgBUGSf0YbQX8QHCEDIABBDhANIAAgARC5AUUNASAAKAIAIAIoAhQQEgtBfyEDDAULAkAgAigCHCIBQTxHDQAgAigCFCAERw0AIAAgBBCpAQsgAigCDEF/aiIEQQNPDQEgACAEQRVqQf8BcRANIAAgASACKAIYIAIoAhQgAigCEEEBQQAQ0AEgAEHrAEF/EBwhASAAIAMQHiACKAIMIQMDQCADBEAgAEEPEA0gAiACKAIMQX9qIgM2AgwMAQsLCyAAIAEQHkEAIQMMAwsQAQALQTwhAQtBACEDIAAgASACKAIYIAIoAhQgAigCEEECQQAQ0AELIAJBIGokACADC6wFAQZ/QQIhDAJAAkACQAJAAkAgACgCQCIJEKQBIghBuX9qDgQEAgIBAAsgCEHBAEYNAiAIQbwBRwRAIAhBtgFHDQIgCSgCgAIgCSgCmAJqIgsoAAEhCiALLwAFIQsgCkEIRg0CIApBOkcEQCAKQfEARg0DIApBzQBHDQULIAktAG5BAXFFDQQgAEGYiQFBABAUQX8PC0EBIQwgCSgCgAIgCSgCmAJqIgcoAAEhCiAHLwAFIQsMAwtBAyEMDAILIAdBu39GBEAgAEG2iQFBABAUQX8PCyAHQX5xQZR/RgRAIABB14kBQQAQFEF/DwsgB0FfcUHbAEYEQCAAQcf+AEEAEBRBfw8LIABB+4kBQQAQFEF/DwtBASEMIAkoAoACIAkoApgCaigAASEKCyAJKAKYAiENQX8hByAJQX82ApgCIAkgDTYChAICQAJAIAYEQAJAAkACQAJAIAhBuX9qDgQBAwMCAAsCQCAIQcEARwRAIAhBvAFGDQEgCEG2AUcNBCAAEDUhByAAQbkBEA0gACAKEBsgACAHEDkgACALEBcgCSAHQQEQbxpBPCEIIABBPBANDAcLIABBwgAQDSAAIAoQG0HBACEIDAYLIABBvQEQDSAAIAoQGyAAIAsQF0G8ASEIDAULIABB8QAQDSAAQRMQDUHHACEIDAMLIABB8AAQDSAAQRQQDUHKACEIDAILEAEACwJAAkACQCAIQbl/ag4EAQQEAgALIAhBtgFHDQMgABA1IQcgAEG5ARANIAAgChAbIAAgBxA5IAAgCxAXIAkgB0EBEG8aQTwhCAwDCyAAQfEAEA1BxwAhCAwCCyAAQfAAEA1BygAhCAwBCyAAIAgQDQsgASAINgIAIAIgCzYCACADIAo2AgAgBCAHNgIAIAUEQCAFIAw2AgALQQALWgEDfyMAQRBrIgEkAAJAIAAoAhAiA0Gqf0YNACADQTtHBEAgA0H9AEYNASAAKAIwDQEgAUE7NgIAIABB7dYAIAEQFEF/IQIMAQsgABAQIQILIAFBEGokACACCxkAIAEgAkEPcToABCABQQhqIABB0ABqEE0LvAEBBX8jAEEgayIEJAACfgJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQPiICEAwNAQsgACAEQQhqIAEQQyIGIAMQQyIHaiACpyIFKAIEIghB/////wdxaiAIQR92EJ8DDQAgBEEIaiABIAYQmgIaIARBCGogBUEAIAUoAgRB/////wdxEFcaIARBCGogAyAHEJoCGiAAIAIQCyAEQQhqEDgMAQsgACACEAtCgICAgOAACyECIARBIGokACACCz0AAn8gACABQYCABE8Ef0F/IAAgAUGAgHxqIgFBCnZBgLADahCSAQ0BGiABQf8HcUGAuANyBSABCxCSAQsLUQAgAEH/AE0EQCAAQQN2Qfz///8BcUHQ3wFqKAIAIAB2QQFxDwsgAEF+cUGMwABGIAAQ8wUEf0EBBSAAQcCHAkHAjAJBFBCrA0EARwtBAEdyCy4BAX8gAUKAgICAcFoEfyABpy8BBiICQSlGBEAgACABENQIDwsgAkECRgVBAAsLyQICAn8BfiMAQRBrIgQkAAJAIAFCgICAgHBUBEAgASEFDAELIAJBb3EhAwJAAkACQCACQRBxDQAgACABQcIBIAFBABATIgUQDA0BIAUQEQ0AIAUQKg0AIAQgAEHGAEEWIANBAUYbQcgAIAMbEDI3AwggACAFIAFBASAEQQhqEDYhBSAAIAQpAwgQCyAFEAwNASAAIAEQCyAFQoCAgIBwVA0DIAAgBRALIABBqMMAQQAQFQwCCyADQQBHIQNBACECA0AgAkECRwRAIAAgAUE3QTkgAiADRhsgAUEAEBMiBRAMDQICQCAAIAUQO0UNACAAIAUgAUEAQQAQNiIFEAwNAyAFQv////9vVg0AIAAgARALDAULIAAgBRALIAJBAWohAgwBCwsgAEGowwBBABAVCyAAIAEQCwtCgICAgOAAIQULIARBEGokACAFC1cBAn8jAEEQayIDJABBfyEEIAAgA0EIaiACEP4DRQRAQQAhBCABIAMpAwgiAkKAgICAgICAEFoEfiAAQYoZEGlBfyEEQgAFIAILNwMACyADQRBqJAAgBAsNACAAIAEgAhAOELIFC8wBAgF/AXwCfwNAAkACQAJ/AkACQCACEFMOCAAAAAAEBAQBBAsgAqcMAQsgAhBKIgS9IgJCNIinQf8PcSIDQZ0ISw0BIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyEAQQAMAwtBACEAQQAgA0HSCEsNAhogAkL/////////B4NCgICAgICAgAiEIANB7XdqrYZCIIinIgBBACAAayACQn9VGyEAQQAMAgsgACACEJwBIgIQDEUNAAtBACEAQX8LIQMgASAANgIAIAMLCwAgACABIAIQkgILLwEBfyMAQdAAayIDJAAgAyAAIANBEGogARCVATYCACAAIAIgAxAVIANB0ABqJAALLAEBfyAAKAIQIgEtAIABRQRAIAFBAToAgAEgAEHrFEEAEEQgAUEAOgCAAQsLDQAgACABIAEQQxChAwuoAQACQCABQYAITgRAIABEAAAAAAAA4H+iIQAgAUH/D0gEQCABQYF4aiEBDAILIABEAAAAAAAA4H+iIQAgAUH9FyABQf0XSBtBgnBqIQEMAQsgAUGBeEoNACAARAAAAAAAABAAoiEAIAFBg3BKBEAgAUH+B2ohAQwBCyAARAAAAAAAABAAoiEAIAFBhmggAUGGaEobQfwPaiEBCyAAIAFB/wdqrUI0hr+iCxYAIAAgASACIAMgBCAFIAApAzAQigILGwAgACABQf8BcRAPIAAoAgQhASAAIAIQHSABCycAIAAgACkDwAEgAiABEA4iAUEDEIMCGiAAIAEgAxDhBSAAIAEQCwsgAQF+IAAgACACIAEgA0EEQQAQygEiBSABIAQQzAEgBQuNAgECfyMAQTBrIgUkAAJ/IAEoAgAgAk0EQCAFIAI2AiQgBSADNgIgIABBw5oBIAVBIGoQREF/DAELAkAgASgCBCAETg0AIAEgBDYCBCAEQf//A0gNACAFIAI2AgQgBSADNgIAIABBipsBIAUQREF/DAELIAEoAgggAkEBdGoiAy8BACIGQf//A0cEQEEAIAQgBkYNARogBSACNgIYIAUgBDYCFCAFIAY2AhAgAEGomwEgBUEQahBEQX8MAQsgAyAEOwEAQX8gACABQQxqQQQgAUEUaiABKAIQQQFqEHwNABogASABKAIQIgBBAWo2AhAgASgCDCAAQQJ0aiACNgIAQQALIQMgBUEwaiQAIAMLawEBfgJAIAJFIAFCgICAgHCDQoCAgICQf1JyDQAgARAOIQMgACgCACADpxCVBCICRQ0AIAIQXQ0AIABBBBANIAAgAhA5QQAPCyAAIAEQDhDDAyICQQBIBEBBfw8LIABBAhANIAAgAhA5QQALiAMAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBuX9qDgQBCwsCAAsgAUE8RwRAIAFBvAFHBEAgAUG2AUYNBiABQcEARw0MCwJAAkAgBQ4FBgYFAAENCyAAQRgQDQwFCyAAQRsQDQwECyAAKAIAIAMQEiAAIAQQHgsCQAJAAkACQCAFDgUABgECAw0LIABBsQEQDQwFCyAAQRYQDQwECyAAQRkQDQwDCyAAQR0QDQwCCwJAAkAgBQ4FCQkIAAEKCyAAQRoQDQwICyAAQR8QDQwHCyAAQRUQDQsCQCABQbl/ag4EAwcHBgALIAFBPEYNAyABQcEARg0HIAFBvAFGDQEgAUG2AUcNBgsgBUECTw0HIABBuwFBtwEgBhsQDQwICyAAQb4BEA0MBwsgAEHJABANDwsgAEE9EA0PCyAAQRcQDQsgAEHLABANDwsQAQALIABBwwAQDSAAIAMQOQ8LQZCMAUGhDUHYuAFB04wBEAAACyAAIAMQOSAAIAJB//8DcRAXC9kSAQp/IwBBQGoiBiQAIARBf0wEQCAAIAZBKGpBABClARogBigCKEECcSEECyAAEDUhCSAAEDUhCiAAKAJAKAKEAiEMAkAgAwRAIABBERANIABBBhANIABBqwEQDSAAQeoAIAkQHBogACAKEB4MAQsgAEHrACAJEBwaIAAgChAeIABBERANCyAAKAJAKAKEAiENAkACQAJAAkAgACgCECIHQdsARwRAIAdB+wBGBEBBfyEHIAAQEA0FIABB7wAQDSAEBEAgAEELEA0gAEEbEA0LIAFBSUYgAUFRRnIhCyABQbF/RyEOA0ACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhAiB0Glf0cEQCAHQf0ARg0LIAAgBkE4akEAQQFBABDCAyIIQQBIDREgBkG2ATYCMCAGQQA2AjQgACgCQCIHKAK8ASEPIAZBfzYCPCAGIA82AiwgBkEANgIIIAgNAiAAEBBFDQEgBigCOCEHDAYLIARFBEAgACgCAEGH/gBBABBEDBELQX8hByAAEBANEQJAIAEEQCAGIAAgAhDBAyIINgI0IAhFDRMgBkG2ATYCMCAAKAJAKAK8ASEHIAZBfzYCPCAGIAc2AiwgBkEANgIIDAELIAAQqwINEiAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAELoBDRILIAAoAhBB/QBGDQIgAEGh/gBBABAUDA8LAkAgACgCEEEgckH7AEcNACAAIAZBKGpBABClASIHQSxGIAdB/QBGckVBACAHQT1HGw0AAkAgBigCOCIHRQRAIAQEQCAAQfAAEA0gAEEYEA0gAEEHEA0gAEHRABANIABBGBANCyAAQcgAEA0MAQsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAcQGyAAQRsQDQsgAEHCABANIAAgBxA5C0F/IQcgACABIAJBAUF/QQEQ0QFBAEgNESAAKAIQQf0ARg0KIABBLBAvRQ0LDBELAkAgBigCOCIHRQRAIABB8QAQDUESIQggBEUNASAAQRgQDSAAQQcQDSAAQdEAEA0gAEEYEA0MAQtBESEIIARFDQAgAEEbEA0gAEEHEA0gAEHMABANIAAgBxAbIABBGxANCyAAIAgQDSABBEAgBiAAIAIQwQMiCDYCNCAIRQ0FIAcNBAwGCyAAEKsCDQQMAgsCQCACBH8gACAGKAI4IgcQzQQNBSAAKAJABSAHCy0AbkEBcUUNACAGKAI4IgdBzQBHQQAgB0E6RxsNACAAQcf+AEEAEBQMBAsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAYoAjgQGyAAQRsQDQsgAUEAIA4bRQRAIABBERANIABBtgEQDSAAIAYoAjgiBxAbIAAgACgCQC8BvAEQFwwCCyAGIAAoAgAgBigCOBAYIgc2AjQgAEHCABANIAAgBxA5DAYLIABBCxANIABB0wAQDSAAIAYoAggiB0ECdEEEaiAHQQV0QUBrckH8AXEQawwECyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAELoBDQEgBigCCCEIIAdFBEACQAJAAkAgCEF/ag4DAAECBgsgAEEeEA0MBQsgAEEcEA0MBAsgAEEgEA0gAEEgEA0MAwsCQAJAAkAgCEF/ag4DAgABAwsgAEEdEA0MAgsgAEEfEA0MAQsgAEEbEA0LIABBwQAQDSAAIAcQOQwCCyAAKAIAIAcQEgwJCyAAQccAEA0LIAFFDQEgBigCNCEHCyAAIAcgARCuAg0GIAYgACgCQCgCvAE2AiwLAkAgACgCEEE9RwRAIAYoAjAhBwwBCyAAQREQDSAAQQYQDSAAQasBEA0gAEHpAEF/EBwhCCAAEBANBiAAQQ4QDSAAEF4NBiAGKAIwIgdBtgFHQQAgB0E8RxtFBEAgACAGKAI0EKkBCyAAIAgQHgsgACAHIAYoAiwgBigCNCAGKAI8QQEgCxDQASAAKAIQQf0ARg0AQX8hByAAQSwQL0UNAQwHCwsgAEEOEA0gBARAIABBDhANC0F/IQcgABAQRQ0CDAULIABByv8AQQAQFAwDCyAAEBANAiAAKAJAIAZBCGpBAEF/QX9BAhCnASAGQQE2AiQgAEH9ABANIAFBSUYgAUFRRnIhCANAAkAgACgCECIEQd0ARg0AAkAgBEGlf0ciBw0AIAAQEA0FIAAoAhAiBEHdAEdBACAEQSxHGw0AIABB5P4AQQAQFAwFCwJAAkAgBEH7AEYgBEHbAEZyRQRAIARBLEcNASAAQYABEA0gAEEAEGsgAEEOEA0gAEEOEA0MAgsgACAGQShqQQAQpQEiBEEsRiAEQd0ARnJFQQAgBEE9RxsNAAJAIAdFBEAgBEE9RgRAIABB//4AQQAQFAwJCyAAQQAQzAQMAQsgAEGAARANIABBABBrIABBDhANCyAAIAEgAkEBIAYoAihBAnFBARDRAUEASA0GDAELIAZBADYCOCAGQQA2AjQCQCABBEAgBiAAIAIQwQMiBDYCNCAERQ0GIAAgBCABEK4CDQYgBkG2ATYCMCAGIAAoAkAoArwBNgIsDAELIAAQqwINBiAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkE4akEAQdsAELoBDQYLAkAgB0UEQCAAIAYoAjgQzAQMAQsgAEGAARANIAAgBi0AOBBrIABBDhANIAAoAhBBPUcNACAAQREQDSAAQQYQDSAAQasBEA0gAEHpAEF/EBwhBCAAEBANBSAAQQ4QDSAAEF4NBSAGKAIwIgtBtgFHQQAgC0E8RxtFBEAgACAGKAI0EKkBCyAAIAQQHgsgACAGKAIwIAYoAiwgBigCNCAGKAI8QQEgCBDQAQsgACgCEEHdAEYNACAHRQRAIABBqP8AQQAQFAwFCyAAQSwQL0UNAQwECwsgAEGDARANIAAoAkAQpgEgABAQDQILAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB6wBBfxAcIQEgABAQDQMgACAJEB4gAwRAIABBDhANCyAAEF4NAyAAQesAIAoQHBogACABEB5BASEHDAMLIANFBEAgAEHk/wBBABAUDAILIAAoAkAoAoACIAxqQbEBIA0gDGsQTBogACgCQCgCpAIgCUEUbGoiACAAKAIAQX9qNgIAQQAhBwwCCyAAKAIAIAYoAjQQEgtBfyEHCyAGQUBrJAAgBwsrACAAKAJAKAKkAUEATgRAIABBBhANIABB2QAQDSAAIAAoAkAvAaQBEBcLCxIAIABBg39GIABB1QBqQS5JcgsTACAAIAEgAiADIARBAEEAEIkCC5wBAQJ/IAAoAgQiBEH/////B3EhAwJAAkAgBEF/TARAIAIgAyADIAJIGyEDA0AgAiADRg0CIAAgAkEBdGovARAgAUYNAyACQQFqIQIMAAsACyABQf8BSw0AIAIgAyADIAJIGyEDIABBEGohACABQf8BcSEBA0AgAiADRg0BIAAgAmotAAAgAUYNAiACQQFqIQIMAAsAC0F/IQILIAILjgEBAX8jAEEQayIDJAAgAyACNwMIAkAgACABQYYBIAFBABATIgIQDA0AIAAgAhA7BEAgACACIAFBASADQQhqEDYiAhAMDQEgAhAhDQEgAhAqDQEgACACEAsgAEH/0gBBABAVQoCAgIDgACECDAELIAAgAhALIAAgAUEBIANBCGoQ8gQhAgsgA0EQaiQAIAILmgEBBH8gASgCACECAkAgACgCBCIFQX9MBEAgACACQQF0ai8BECIDQYD4A3FBgLADRyACQQFqIgQgBUH/////B3FOcg0BIAAgBEEBdGovARAiAEGA+ANxQYC4A0cNASADQQp0QYD4P3EgAEH/B3FyQYCABGohAyACQQJqIQQMAQsgAkEBaiEEIAAgAmotABAhAwsgASAENgIAIAMLKAAgACACQTAgAkEAEBMiAhAMBEAgAUEANgIAQX8PCyAAIAEgAhDXAwszAQF/AkAgAUKAgICAcFQNACABpyIDLwEGQRJHDQAgA0Egag8LIAIEQCAAQRIQkQMLQQALXQEBf0F/IQQCQCAAIAEQKSIBEAwNACAAIAGnIAIQgwQhBCAAIAEQCyAEDQAgA0GAgAFxRQRAQQAhBCADQYCAAnFFDQEgABD4AUUNAQsgAEHwGEEAEBVBfyEECyAEC9gCAgN/AnwgARBTIQYgAhBTIQQCQAJAAnwCQAJAAkACQAJAAkACQAJAIAZBCGoOEAIBCgoKCgoDBAAJCQoKCgUKCyAEQQFHDQkgAacgAqdGDwsgBEF5Rw0IIAGnIAKnEJQCRSEFDAgLIAGnIAKnRiAEQXhGcSEFDAcLIARBf0cNBiABpyACp0YhBQwGCyABp7chByAEQQdGDQEgBA0FIAKntwwDCyABEEohByAERQ0BIARBB0cNBAsgAhBKDAELIAKntwshCAJAIAMEQCAHvUL///////////8AgyIBQoCAgICAgID4/wBYQQAgCL1C////////////AIMiAkKBgICAgICA+P8AVBtFBEAgAUKBgICAgICA+P8AVCACQoCAgICAgID4/wBWcw8LIANBAkcNAQsgByAIYQ8LIAe9IAi9UQ8LIAQgBkYhBQsgACABEAsgACACEAsgBQs1AQF/AkAgAUGAgAFxRQRAIAFBgIACcUUNASAAEPgBRQ0BCyAAIAJBwsAAEMYBQX8hAwsgAwuaBQEGfyMAQRBrIgckAAJAIAFCgICAgHBUIAJC/////w9WckUEQCACpyEGAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQCABpyIFLwEGIgpBeGoOFgENDQ0NDQ0NDQ0NDQ0CAwMEBAUFBgcACyAKQQJHDQwgBSgCKCIIIAZNBEAgBiAIRw0NIAUtAAVBCXFBCUcNDSAFKAIQIQYDQCAGKAIsIgoEQCAKKAIQIQYCQAJAIAovAQZBf2oOAgEAEQsgCi0ABUEIcQ0CDBALIAYtABFFDQEMDwsLQQEhCSAAIAUgAyAEEIYEIQgMDQsgACAFKAIkIAZBA3RqIAMQHwwJCyAFKAIoIAZNBEAMDAsgACAFKAIkIAZBA3RqIAMQHwwICyAAIAdBBGogAxC4BQ0JIAUoAiggBk0NBSAFKAIkIAZqIAcoAgQ6AAAMBwsgACAHQQRqIAMQxAENCCAFKAIoIAZNDQQgBSgCJCAGaiAHKAIEOgAADAYLIAAgB0EEaiADEMQBDQcgBSgCKCAGTQ0DIAUoAiQgBkEBdGogBygCBDsBAEEBDAYLIAAgB0EEaiADEMQBDQYgBSgCKCAGTQ0CIAUoAiQgBkECdGogBygCBDYCAAwECyAAIAdBCGogAxBZDQUgBSgCKCAGTQ0BIAUoAiQgBkECdGogBysDCLY4AgAMAwsgACAHQQhqIAMQWQ0EIAUoAiggBksNAQtBASEJIAAgBEH5FhB2IQgMBAsgBSgCJCAGQQN0aiAHKwMIOQMAC0EBCyEJQQEhCAwBC0F/IQhBASEJCyAJDQELIAAgAhA6IQUgACACEAsgBUUEQCAAIAMQC0F/IQgMAQsgACABIAUgAyAEEJYCIQggACAFEBILIAdBEGokACAICzoBAX8jAEHQAGsiAiQAIAIgAQR/IAAgAkEQaiABEJUBBUHBPAs2AgAgAEGrPCACEMgCIAJB0ABqJAALsnADHn8EfgF8IwBB4ABrIgchDSAHJAAgACgCECEVQoCAgIDgACElAkAgABCOAQ0AAn8CQAJAAkACQAJAAkAgAUL/////b1gEQCAGQQRxRQ0BIAGnIggiCSgCPCEHIAgoAhgiFygCJCEQIBcoAiAiDigCMCEGIA4vASohFCAJQQA2AjwgCCAVKAKEATYCECAIKAIgIRMgCCgCMCELIAgoAiQhESAVIAhBEGoiEjYChAEgESAUQQN0aiEYIBMhFCALIQkgCCgCDEUNBgwECyABpyIXLwEGIghBDUYNAiAVKAJEIAhBGGxqKAIQIgcNAQsgAEGPxABBABAVDAYLIAAgASACIAQgBSAGIAcRFwAhJQwFCyAXKAIgIg4vAS4hEyAOLwEqIRQgDi8BKCELIA0gDi0AEDYCWCANIAE3AzggDSAENgJUIA1ByABqEG5BACEIIBcoAiQhECAHIAtBACAGQQF2QQFxIAsgBEpyGyIGIBMgFGpqQQN0QQ9qQfD//wFxayIUJAAgBSETIAZFDQEgBCAOLwEoELEBIgdBACAHQQBKGyEHA0AgByAIRgRAIAcgDi8BKCIIIAcgCEsbIQsDQCAHIAtHBEAgFCAHQQN0akKAgICAMDcDACAHQQFqIQcMAQsLIA0gCDYCVCAUIRMMAwUgFCAIQQN0IgtqIAUgC2opAwAQDjcDACAIQQFqIQgMAQsACwALQQEMAgsgDSATNgJAIA0gFCAGQQN0aiIRNgJEIA4vASohCEEAIQcDQCAHIAhHBEAgESAHQQN0akKAgICAMDcDACAHQQFqIQcMAQsLIA4oAhQhCyANIBUoAoQBNgIwIBUgDUEwajYChAEgDigCMCEGIA1BMGohEiARIAhBA3RqIgchGAtBAAshCANAAkACQAJAAkAgCEUEQCARQQhqIRkgEUEQaiEaIBFBGGohGyATQQhqIRwgE0EQaiEdIBNBGGohHiAYQRhqISAgAkIgiKciIUF+cSEiIA1BMGohIyANQSBqIR8gByEIAkADQAJAIAtBAWohCUIBISVCgICAgDAhAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALLQAAIgxBf2oO8wHUAQAkCJEBCQoLDA0ODxAREhMUFxUWGBkaGyAhIiMcHx0eKCYmKSkqK9gB4wEsLS4v1gEwMTIzNDU2Nzg4OTk6ngGhATw7PY4BjwGQAZIBkwGUAZwBnQGgAZ8BogGVAZYBlwGYAZkBowGkAaUBmgGaAZsBmwE+P0BBQkNrbG1xcnN0bm9wdXx7eH+AAYEByAHJAcoBywHLAcsBywHLAcsBdnZ2d4IBhAGGAYMBhQGIAYcBiQGKAYsBjAHWAeIB1QHVAdcBrgGtAbABrwGxAbEBswGyAacBtAGNAcUBxgHHAakBqgGrAaYBqAGsAbUBtwG2AbsBvAG9Ab4BxAHDAb8BwAHBAcIBuAG6AbkB0QHcAQEBAQEBAQEBAQIDBAUGREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqB359enklJSUlzAHNAc4BzwHTAQsgByAOKAI0IAkoAABBA3RqKQMAEA43AwAgC0EFaiEJIAdBCGohCAzbAQsgByAMQc1+aq03AwAgB0EIaiEIDNoBCyAHIAksAACtNwMAIAtBAmohCSAHQQhqIQgM2QELIAcgCS4AAK03AwAgC0EDaiEJIAdBCGohCAzYAQsgByAOKAI0IAstAAFBA3RqKQMAEA43AwAgB0EIaiEIIAtBAmohCQzXAQsgByAGIA4oAjQgCy0AAUEDdGopAwAQDiAQIBIQ/QMiATcDACAHQQhqIQggC0ECaiEJIAEQDEUN1gEM2AELIAcgBkEvEDI3AwAgB0EIaiEIDNUBCyAGIAdBeGoiCCkDACIBQTAgAUEAEBMiARAMDdgBIAYgCCkDABALIAggATcDAAzTAQsgByAGIAkoAAAQZDcDACALQQVqIQkgB0EIaiEIDNMBCyAHQoCAgIAwNwMAIAdBCGohCAzSAQsgB0KAgICAIDcDACAHQQhqIQgM0QELAkACQAJ+IAIgDi0AEEEBcQ0AGiACICFBf0YNABogIkECRw0BIAYpA8ABCxAOISUMAQsgBiACECkiJRAMDdUBCyAHICU3AwAgB0EIaiEIDNABCyAHQoCAgIAQNwMAIAdBCGohCAzPAQsgB0KBgICAEDcDACAHQQhqIQgMzgELIAcgBhA9IgE3AwAgB0EIaiEIIAEQDEUNzQEMzwELIAtBAmohCQJAAkACQAJAAkACQAJAAkAgCy0AAQ4HAAECAwQFBgcLIAcgBiAEIAUQ0wgiATcDACAHQQhqIQggARAMRQ3TAQzVAQsgByAGIAQgBSASIAQgDi8BKBCxARDSCCIBNwMAIAdBCGohCCABEAxFDdIBDNQBCyAHIBIpAwgQDjcDACAHQQhqIQgM0QELIAcgAxAONwMAIAdBCGohCAzQAQsgBwJ+QoCAgIAwIBcoAigiCEUNABogCK1CgICAgHCEEA4LNwMAIAdBCGohCAzPAQsgByAGQoCAgIAgEFEiATcDACAHQQhqIQggARAMRQ3OAQzQAQsgByAGENEIIgE3AwAgB0EIaiEIIAEQDEUNzQEMzwELEAEACyAHIAYgCS8AACAEIAUQ0AgiATcDACAHQQhqIQggC0EDaiEJIAEQDEUNywEMzQELIAYgB0F4aiIIKQMAEAsMygELIAYgB0FwaiIIKQMAEAsgCCAHQXhqIggpAwA3AwAMyQELIAYgB0FoaiIIKQMAEAsgCCAHQXBqIggpAwA3AwAgCCAHQXhqIggpAwA3AwAMyAELIAcgB0F4aikDABAONwMAIAdBCGohCAzHAQsgByAHQXBqKQMAEA43AwAgByAHQXhqKQMAEA43AwggB0EQaiEIDMYBCyAHIAdBaGopAwAQDjcDACAHIAdBcGopAwAQDjcDCCAHIAdBeGopAwAQDjcDECAHQRhqIQgMxQELIAcgB0F4aiIIKQMANwMAIAggB0FwaikDABAONwMAIAdBCGohCAzEAQsgByAHQXhqIggpAwAiATcDACAIIAdBcGoiCCkDADcDACAIIAEQDjcDACAHQQhqIQgMwwELIAcgB0F4aiIIKQMAIgE3AwAgB0FwaiILKQMAISUgCyAHQWhqIgspAwA3AwAgCCAlNwMAIAsgARAONwMAIAdBCGohCAzCAQsgByAHQXhqIggpAwAiATcDACAHQXBqIgspAwAhJSALIAdBaGoiCykDADcDACAIICU3AwAgCyAHQWBqIggpAwA3AwAgCCABEA43AwAgB0EIaiEIDMEBCyAHQXBqIggpAwAhASAIIAdBaGoiCCkDADcDACAIIAE3AwAMvwELIAdBaGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAdBeGoiCykDACElIAsgATcDACAIICU3AwAMvgELIAdBYGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBcGoiCykDACElIAsgB0F4aiILKQMANwMAIAggJTcDACALIAE3AwAMvQELIAdBWGoiCCkDACEBIAggB0FgaiIIKQMANwMAIAdBaGoiCykDACElIAsgB0FwaiILKQMANwMAIAggJTcDACALIAdBeGoiCCkDADcDACAIIAE3AwAMvAELIAdBeGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAdBaGoiCykDACElIAsgATcDACAIICU3AwAMuwELIAdBcGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBYGoiCykDACElIAsgATcDACAIICU3AwAMugELIAdBcGoiCCkDACEBIAggB0FoaiIIKQMANwMAIAdBYGoiCykDACElIAsgB0FYaiILKQMANwMAIAggJTcDACALIAE3AwAMuQELIAdBeGoiCCkDACEBIAggB0FwaiIIKQMANwMAIAggATcDAAy4AQsgB0FgaiIIKQMAIQEgCCAHQXBqIggpAwA3AwAgB0F4aiILKQMAISUgCyAHQWhqIgspAwA3AwAgCCABNwMAIAsgJTcDAAy3AQsgByAGIA4oAjQgCSgAAEEDdGopAwAQDiAQIBIQ/QMiATcDACAHQQhqIQggC0EFaiEJIAEQDEUNtwEMuQELIAxBlH5qIQoMAQsgCS8AACEKIAtBA2ohCQsgEiAJNgIgIAYgByAKQQN0ayIIQXhqKQMAQoCAgIAwQoCAgIAwIAogCEEAEN8BIgEQDA24ASAMQSNG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DjcDICANIAcpAwA3AyggBiAjEKcFDTggBiAIIA0pAyAQHyAHIQgMNAsgB0F4aiIIKQMAIgFCIIgiJiAHQXBqIgopAwAiJUIgiCInhFAEQCAlQiCGQiCHIAFCIIZCIId9IgFCgICAgAh8Qv////8PVg0EIAogAUL/////D4M3AwAMNAsgJ6dBC2pBEkkgJqdBC2pBEklyDQMgCiAlEEogARBKoRAWNwMADDMLAnwgB0F4aiIIKQMAIgFCIIgiJiAHQXBqIgopAwAiJUIgiCInhFAEQCABQiCGQiCHICVCIIZCIId+IiZCgICAgAh8QoCAgIAQWgRAICa5DAILRAAAAAAAAACAICZQRSABICWEp0F/SnJFDQEaIAogJkL/////D4M3AwAMNAsgJ6dBC2pBEkkgJqdBC2pBEklyDQMgJRBKIAEQSqILISkgCiApEBY3AwAMMgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PVg0BIBItAChBBHENASAKAn4gJae3IAGnt6MiKb0CfyApmUQAAAAAAADgQWMEQCApqgwBC0GAgICAeAsiB7e9UQRAIAetDAELICkQFgs3AwAMMQsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PVg0AICWnIg9BH3YgAaciFkEBSHINACAKIA8gFm+tNwMADDALIAYgByAMELkIDTMgB0F4aiEIDC8LIAdBfGooAgAiCEUgCEELakERS3INLSAHIQggBiAHQY0BEJECRQ0uDDILAkACfCAHQXhqIggpAwAiAUIgiKciCkUEQEQAAAAAAAAAgCABpyILRQ0BGkQAAAAAAADgQSALQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAKQQtqQRJJDQEgARBKmgshKSAIICkQFjcDACAHIQgMLgsgByEIIAYgB0GMARCRAkUNLQwxCyAHQXhqIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJECRQ0sDDALIAdBeGoiCCkDACIBQv////8PViABp0GAgICAeEZyRQRAIAggAUJ/fEL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkQJFDSsMLwsgBiAHIAwQuAgNLiAHQQhqIQgMKgsgC0ECaiEJIBEgCy0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgDSABEA43AxggBiAfQY8BEJECDS0gBiAIIA0pAxgQHwwoCyALQQJqIQkgESALLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQn98Qv////8PgzcDAAwoCyANIAEQDjcDGCAGIB9BjgEQkQINLCAGIAggDSkDGBAfDCcLIAdBeGoiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCAGIAcQtwhFDScMKwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAad0rTcDAAwnCyAGIAdBoAEQvgJFDSYMKgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAoCfiAlpyABp3YiB0EATgRAIAetDAELIAe4EBYLNwMADCYLIAYgBxC2CEUNJQwpCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp3WtNwMADCULIAYgB0GhARC+AkUNJAwoCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiABICWDNwMADCQLIAYgB0GtARC+AkUNIwwnCyAHQXhqIggpAwAgB0FwaiIKKQMAhCIBQv////8PWARAIAogATcDAAwjCyAGIAdBrwEQvgJFDSIMJgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogASAlhUL/////D4M3AwAMIgsgBiAHQa4BEL4CRQ0hDCULIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnSK1CgICAgBCENwMADCELIAYgB0GjARCLA0UNIAwkCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0ytQoCAgIAQhDcDAAwgCyAGIAdBpAEQiwNFDR8MIwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAadKrUKAgICAEIQ3AwAMHwsgBiAHQaUBEIsDRQ0eDCILIAdBeGoiCCkDACIB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IgQgAkGAAkhyRQRAIAAgARDcAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQtAEiAg0BCyAAEP0CDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxCxATYCDEEAIQMLIAVBEGokACADC4ABAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQX9qcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQZkwQaENQeQUQYjAABAAAAsgAAvxBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQzAIiAxDwAUUNBSABIAEoAgBBf2o2AgAgAw8LIAAoAjQgACgCJEF/aiABIAIQyQVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQyAUNACADEPABDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEsiBEH/////A0sNASAAIAAoAjggBEECdBDjASIGRQ0BIAAoAiwiAkUEQCAAQRAQmwIiAkUEQCAAIAYQIAwDCyACQQE2AgAgAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBf2ohBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEMcFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJB/////wdxIAJBH3YiAnQgAmtBEWoQ5wEiAkUEQEEAIQMMBAsgAkEBNgIAIAIgAikCBEL/////d4MgASkCBEKAgICACIOEIgk3AgQgAiAJQoCAgIB4gyABKQIEQv////8Hg4Q3AgQgAkEQaiABQRBqIAEoAgQiA0EfdiIEQQFzIANB/////wdxIAR0ahAkGiAAIAEQlAQgAiEBDAELIABBEBDnASIBRQRAQQAPCyABQoGAgICAgICAgH83AgALIAAgACgCOCAAKAI8IgNBAnRqIgIoAgBBAXY2AjwgAiABNgIAIAEgAzYCDCABIAE1AgQgB61CIIaEIAWtQj6GhDcCBCAAIAAoAihBAWo2AiggBUEDRg0CIAEgACgCNCAIQQJ0aiIBKAIANgIMIAEgAzYCACAAKAIoIAAoAjBIDQIgACAAKAIkQQF0EK8FGgwCCyABRQ0BCyAAIAEQlAQgAw8LIAMLRgAgAkEATARAIABBLxAyDwsgACACQQAQ+gEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAhAkIAJqQQA6AAAgAK1CgICAgJB/hAtQAQF+AkAgA0HAAHEEQCACIANBQGqtiCEBQgAhAgwBCyADRQ0AIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAgsgACABNwMAIAAgAjcDCAvAAQECfyMAQaABayIEJAAgBEEIakHAnQRBkAEQJBoCQAJAIAFBf2pB/////wdPBEAgAQ0BQQEhASAEQZ8BaiEACyAEIAA2AjQgBCAANgIcIARBfiAAayIFIAEgASAFSxsiATYCOCAEIAAgAWoiADYCJCAEIAA2AhggBEEIaiACIANB7gJB7wIQnQQhACABRQ0BIAQoAhwiASABIAQoAhhGa0EAOgAADAELQYSnBEE9NgIAQX8hAAsgBEGgAWokACAAC50DAwN/AX4CfAJAAkACQAJAIAC9IgRCAFkEQCAEQiCIpyIBQf//P0sNAQsgBEL///////////8Ag1AEQEQAAAAAAADwvyAAIACiow8LIARCf1UNASAAIAChRAAAAAAAAAAAow8LIAFB//+//wdLDQJBgIDA/wMhAkGBeCEDIAFBgIDA/wNHBEAgASECDAILIASnDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iBEIgiKchAkHLdyEDCyADIAJB4r4laiIBQRR2arciBUQAAOD+Qi7mP6IgBEL/////D4MgAUH//z9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAFRHY8eTXvOeo9oiAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgYgBSAFoiIFIAWiIgAgACAARJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKKgIAahoKAhAAsgAAuSAQEDfEQAAAAAAADwPyAAIACiIgJEAAAAAAAA4D+iIgOhIgREAAAAAAAA8D8gBKEgA6EgAiACIAIgAkSQFcsZoAH6PqJEd1HBFmzBVr+gokRMVVVVVVWlP6CiIAIgAqIiAyADoiACIAJE1DiIvun6qL2iRMSxtL2e7iE+oKJErVKcgE9+kr6goqCiIAAgAaKhoKALmQEBA3wgACAAoiIDIAMgA6KiIANEfNXPWjrZ5T2iROucK4rm5Vq+oKIgAyADRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKAhBSADIACiIQQgAkUEQCAEIAMgBaJESVVVVVVVxb+goiAAoA8LIAAgAyABRAAAAAAAAOA/oiAEIAWioaIgAaEgBERJVVVVVVXFP6KgoQuNAQAgAEQJ9/0N4T0CP6JEiLIBdeDvST+gIACiRDuPaLUogqS/oCAAokRVRIgOVcHJP6AgAKJEfW/rAxLW1L+gIACiRFVVVVVVVcU/oCAAoiAARIKSLrHFuLM/okRZAY0bbAbmv6AgAKJEyIpZnOUqAECgIACiREstihwnOgPAoCAAokQAAAAAAADwP6CjC6UCAQd/IwBBEGsiBSQAAkAgBUEMaiAAQdCvA0EbEPYFIgNBAEgNACADQbCwA2ohAQNAIAFBAWohAyABLQAAIgJBGHRBGHUhBwJAIAJBP3EiBEEwSQRAIAMhAQwBCyAEQQh0IQICfyAEQTdNBEAgAkGAoH9qIQRBMCECQQIMAQsgAkGAkH9qIAEtAAFBCHRyIQQgAUECaiEDQbAQIQJBAwsgAWohASAEIAMtAAByIAJqIQQLIAFBAWogASAHQX9KGyEBAkAgBCAFKAIMIgJqQQFqIgMgAEsEQAJAAkAgB0HAAXFBBnYOAwMABQELIAFBf2otAAAgACACa2ohBgwEC0HmASEGDAMLIAUgAzYCDAwBCwsgAUF/ai0AACEGCyAFQRBqJAAgBgtZAQN/QX8hASAAIAAoAgAiAkECaiIDEKoDBH9BfwUgACgCCCIBQQRqIAEgAkECdCICEP0BIAAoAggiAUEANgIAIAEgAmpBfzYCBCAAIAM2AgAgABD0BUEACwvyAQEEfwJAA0ACQAJAAkACfyAHIAJOIgggBiAETnJFBEAgASAHQQJ0aigCACIJIAMgBkECdGooAgAiCEkEQCAJDAILIAggCUcNAyAGQQFqIQYgB0EBaiEHIAkhCAwECyAIDQEgASAHQQJ0aigCAAshCCAHQQFqIQcMAgsgBiAETg0DIAMgBkECdGooAgAhCAsgBkEBaiEGCwJ/AkACQAJAAkAgBQ4DAwABAgsgBiAHcUEBcQwDCyAGIAdzQQFxDAILEAEACyAGIAdyQQFxCyEJIAkgACgCAEEBcUYNACAAIAgQ+AVFDQALQX8PCyAAEPQFQQALagICfwF+IAAoAgAhAgNAIAItAAAiA0FQakH/AXFBCU0EQCAEQgp+IAOtQv8Bg3xCUHwiBEL/////B1QiAyABcgRAIARC/////wcgAxshBCACQQFqIQIMAgVBfw8LAAsLIAAgAjYCACAEpwsMACAAQe3lAUEAED8LFgAgACABQf8BcRAPIAAgAkH/AXEQDwuVBQEPfyMAQeAEayIKJAAgACACEK0EIQsgACACQYABchCtBCESAkAgAkUgAUECSXINACAKIAE2AgQgCiAANgIAIApBADYCCEEAIAJrIRAgCkEMciEIA0AgCCAKTQ0BIAhBdGoiCCgCCCIMQTIgDEEyShshEyAIKAIEIQYgCCgCACEFA0ACQCAFIAZBB08EfyAMIBNHDQEgBSAGIAIgAyAEEN0JQQAFIAYLIAJsaiEJIAUhBwNAIAIgB2oiByEAIAcgCU8NAwNAIAAgBU0NASAAIBBqIgEgACAEIAMRAABBAUgNASAAIAEgAiALEQUAIAEhAAwACwALAAsgDEEBaiEMQQEhByAFIAUgBkECdiACbCIAaiAFIABBAXRqIAUgAEEDbGogAyAEENwJIAIgCxEFACAFIAIgBmxqIg8hASAPIQkgAiAFaiINIQBBASERA0ACQAJAIAAgAU8NACAFIAAgBCADEQAAIg5Bf0wNACAODQEgDSAAIAIgCxEFACACIA1qIQ0gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQAAIg5BAEwEQCAODQEgCSAQaiIJIAEgAiALEQUAIAZBf2ohBgwBCwsgACABIAIgCxEFAAwBCyAFIAAgACANayIOIA0gBWsiASABIA5LGyIBayABIBIRBQAgACAPIAkgAGsiASAPIAlrIgAgACABSxsiAGsgACASEQUAIAYgB2shCSAPIAFrIQECQCAHIBFrIgYgCUsEQCAFIQcgBiEAIAEhBSAJIQYMAQsgASEHIAkhAAsgCCAMNgIIIAggADYCBCAIIAc2AgAgCEEMaiEIDAILIAAgAmohACAHQQFqIQcMAAsACwALAAsgCkHgBGokAAsnAQJ/AkAgACABQQAQmAEiAwRAIAMQqwFFDQEgABBwC0F/IQILIAILOgEBfwJAIABBUGoiAUEKTwR/IABBv39qQQVLDQEgAEFJagUgAQsPCyAAQal/akF/IABBn39qQQZJGwsRACAAIAEgAiADIAQgBRDKAQt8AgF/An4gACACKQMAIgRBABCYASIDRQRAQoCAgIDgAA8LIAAgBEKAgICAMBDvASIEEAwEQCAEDwsgAkEIaiECIAFBf2pBABBLIQEgBBARBEAgAEKAgICAMCABIAIgAy8BBhDfBQ8LIAAgBCABIAIQtQMhBSAAIAQQCyAFCxEAIAAgASACIANBAEEAEMoBCzIAIABBDBAuIgBFBEBBAA8LIAAgAzYCCCAAIAI2AgQgACABKAIQNgIAIAEgADYCECAAC2sBAX8CQCABKAKgASIDQX9KDQAgACABIAIQViIDQQBIDQAgASADNgKgASADQQR0IgAgASgCdGoiAiACKAIMQYd/cUEgcjYCDCABLQBuQQFxRQ0AIAEoAnQgAGoiACAAKAIMQQFyNgIMCyADCy4BAX8CQCABKAKYASICQX9KDQAgACABQc0AEFYiAkEASA0AIAEgAjYCmAELIAILMgAgACgCACABIAIgAxDmAiIAQQBOBEAgASgCdCAAQQR0aiIBIAEoAgxBA3I2AgwLIAALcAECfyABKAIAQX9MBEAgASAAEDU2AgALIABBERANIABBsAEQDSACQQAgAkEAShshAiAAQekAQX8QHCEEA0AgAiADRkUEQCAAQQ4QDSADQQFqIQMMAQsLIABBBhANIABB6wAgASgCABAcGiAAIAQQHgtoACAAIAEgAhBWIgBBAE4EQCABKAJ0IABBBHRqIgIgAigCDEGHf3EgA0EDdEH4AHFyNgIMIAIgASgCvAEiAzYCBCACIAEoAsABNgIIIAEoAswBIANBA3RqIAA2AgQgASAANgLAAQsgAAttAQF/IAAgAUH8AWpBECABQfgBaiABKAL0AUEBahB8RQRAIAEgASgC9AEiA0EBajYC9AEgASgC/AEgA0EEdGoiA0F/NgIAIAMgAy0ABEH4AXE6AAQgAyABKAK8ATYCCCADIAAgAhAYNgIMCyADC0wBAn8CQCAAKAJAEKQBIgBBXWoiAkENTUEAQQEgAnRB5fAAcRsNAAJAAkAgAEGVf2oOBAIBAQIACyAAQZZ+akECSQ0BC0EBIQELIAELsQMBA38gACgCQEGwAmohAwNAQQAhAgJAA0AgAygCACIDRQ0BIAMoAhwEQCABRQRAIABBBhANCyAAQYQBEA1BgwEhAiAAIAAoAkAtAGxBA0YEfyAAQQ4QDSAAQQ4QDSAAQcIAEA0gAEEGEBsgAEEREA0gAEGwARANIABB6gBBfxAcIQEgAEEkEA0gAEEAEBcgAEGBARANIABBiwEQDSAAQesAQX8QHCEEIAAgARAeIABBDhANIAAgBBAeQQ4FQYMBCxANQX0hAkEBIQELIAMoAhAgAmohAiADKAIUQX9GDQALQQ9BDiABGyEEA0AgAgRAIAAgBBANIAJBf2ohAgwBCwsgAUUEQCAAQQYQDQsgAEHtACADKAIUEBwaQQEhAQwBCwsgAAJ/IAAoAkAiAigCYARAAkAgAUUEQEF/IQIMAQsgAEEqEA0gAEHpAEF/EBwhAiAAQQ4QDQsgAEG2ARANIABBCBAbIABBABAXIAAgAhAeQSgMAQsgAi0AbCIEBEACQCABRQRAQQYhAwwBC0GLASEDQS4gBEEDRw0CGgsgACADEA1BLgwBC0EoQSkgARsLEA0LSAACQCAAQfsAEC8NACAAKAIQQf0ARwRAIAAQggEaA0AgAEEHEO0BDQIgACgCEEH9AEcNAAsgABDrAQtBf0EAIAAQEBsPC0F/C5gBAQR/IAEoAhQiBUEAIAVBAEobIQYgAUEQaiEEAkADQCADIAZHBEAgBCgCACADQQN0aigCACACRg0CIANBAWohAwwBCwtBfyEDIAAgBEEIIAFBGGogBUEBahB8DQAgASABKAIUIgRBAWo2AhQgASgCECEDIAAgAhAYIQEgAyAEQQN0aiIAQQA2AgQgACABNgIAIAYhAwsgAwtlAQF/IABB+gAQT0UEQCAAQeSOAUEAEBRBAA8LAkAgABAQDQAgACgCEEGBf0cEQCAAQaXIAEEAEBRBAA8LIAAoAgAgACkDIBA6IgFFDQAgABAQRQRAIAEPCyAAKAIAIAEQEgtBAAviEQEVfyMAQUBqIgMkACAAKAIAIQYgACgCQCEEIANBADYCPCAAKAIYIREgBCAELQBuIhNBAXI6AG4CfwJAAkAgABAQDQACQAJAIAAoAhBBg39GBEAgACgCKEUNASAAEOwBDAMLIAEgAkECRnINASAAQbaEAUEAEBQMAgsgBiAAKAIgEBghByAAEBANAgsgAUUEQCAGIAdB/AAgBxsQGCEICyAAEIIBGgJ/IAAoAhAiBUFMRgRAIAAQEA0DIAAQqwINA0EBDAELIABBBhANQQALIRIgBwRAIAAgBCAHQQIQqAFBAEgNAgsgAEH7ABAvDQEgABCCARogAEECEA0gBCgChAIhFCAAQQAQOSAAQdYAEA0gACAHQRZBLyAIGyAHGxAbIAAgEhBrIAQoApgCIRVBACEBA0AgAUECRkUEQCADQRBqIAFBBHRqIglBADYCCCAJQgA3AwAgAUEBaiEBDAELCyADQQA2AjQgBUFMRiEWA0ACQAJ/An8CQAJAIAAoAhAiAUE7RwRAIAFB/QBGDQVBACABQVZHDQMaIAAQEA0IIAAoAhBBRWoOAwECAQILIAAQEEUNBQwHCyAGQSwQGBogA0EsNgI8IAAoAhghD0EAIQxBACENQQAhBUEsDAILIABBGxANQQELIQ0gACgCGCEPIAAgA0E8akEBQQBBARDCAyIFQQBIDQQgAUFWRiEMIAMoAjwLIQFBACABQfgARkEAIAVBb3EiCyAMIAFBPEdyIhcbckUgDCABQTtGcRtFBEAgAEHWhAFBABAUDAQLIAVBEHEhCQJAAkACQAJAIAVBbnFBAkYEQCAJBEACQCAEIAEgBCgCvAEQvgMiBUEATgRAIAQoAnQgBUEEdGoiBSgCDCIKQQN2QQ9xIgFBCU1BAEEBIAF0QeAEcRsgASALQQVqRnINBCAFIApBh39xQcgAcjYCDAwBCyAAIAQgASALQQVqEOQCQX9MDQoLIAAgA0EQaiANQQR0ahDJBEEASA0JCyAAIAtBAmpBACAPIAAoAhRBACADQQxqEIkCDQggCQRAIAMoAgxBATYCuAEgAEHQABANIABBuwEQDSADKAI8IQECQCALQQJHBEAgBiABEMgEIgFFDQsgACABEBsgACAEIAFBCBDkAiEFIAYgARASIAVBAE4NAQwLCyAAIAEQGwsgACAAKAJALwG8ARAXDAULAkAgAygCPEUEQCAAQdUAEA0MAQsgAEHUABANIAAgAygCPBAbCyAAIAtBf2pB/wFxEGsMBAtBBiEQQQEhBUEAIQ5BACEKAkACQAJAAkACQCALDgcAAwMDBAECAwsgACgCEEEoRg0CIAFBRWpBAU0EQCAAQeqEAUEAEBQMDAsgCQRAIAQgASAEKAK8ARC+A0F/Sg0FIAAgBCABQQUQ5AJBAEgNDCAAQQUQDSAAIAMoAjwQGyAAQbsBEA0gACADKAI8EBsgACAAKAJALwG8ARAXCyADQRBqIA1BBHRqIgEoAgBFBEAgACABEMcEDQwLQQAhBSADKAI8RQRAIAZB9QBB9AAgDBsgASgCBBDlBiIFRQ0MIAAgBCAFQQIQqAFBf0wEQCAGIAUQEgwNCyAAQfAAEA0gAEG7ARANIAAgBRAbIAAgACgCQC8BvAEQFwsgACABKAIANgJAIABBtgEQDSAAQQgQGyAAQQAQFwJAIAMoAjxFBEAgAEG2ARANIAAgBRAbIAAgACgCQC8BvAEQFyABIAEoAgRBAWo2AgQgBiAFEBIMAQsgCUUNACAAQbYBEA0gACADKAI8EBsgACAAKAJALwG8ARAXCwJAIAAoAhBBPUYEQCAAEBANDSAAEF5FDQEMDQsgAEEGEA0LAkAgCQRAIAAQvQMgAEHGABANDAELIAMoAjwiAUUEQCAAEL0DIABB0QAQDSAAQQ4QDQwBCyAAIAEQqQEgAEHMABANIAAgAygCPBAbCyAAIAAoAkAoAgQ2AkAgABC7AUUNBwwLC0ECIQUMAgtBAyEFDAELQQAhBSAXDQAgAygCNARAIABB/YQBQQAQFAwJCwJ/IBYEQEEIIRBBASEOQQAMAQtBByEQQQELIQoLIAkEQCAAIANBEGogDUEEdGoQyQRBAEgNCAsgACAQIAUgDyAAKAIUQQAgA0E4ahCJAg0HIAogDnIEQCADIAMoAjg2AjQMBAsgCUUNAiADKAI4QQE2ArgBIAQgAygCPCIBIAQoArwBEL4DQQBIDQELIABBqYUBQQAQFAwGCyAAIAQgAUEGEOQCQQBIDQUgAEHQABANIABBzQAQDSAAIAMoAjwQGyAAQbsBEA0gACADKAI8EBsgACAAKAJALwG8ARAXDAELAkAgAygCPEUEQCAAQdUAEA0MAQsgAEHUABANIAAgAygCPBAbCyAAQQAQawsgDARAIABBGxANCyAGIAMoAjwQEiADQQA2AjwMAQsLIAMoAjQiAUUEQCAAIBIgA0E0ahDkBg0CIAMoAjQhAQsgBCgCgAIgFGogASgCCBBcIAQtAG5BAnFFBEAgBiADKAI0KAKMAxAZIAMoAjQgACgCOCARayIBNgKQAyAGIBEgARCbAyEBIAMoAjQgATYCjAMgAUUNAgsgABAQDQEgACAEQfYAQQIQqAFBAEgNAQJAIAMoAhAEQCAAIANBEGoQxgQMAQsgAEEGEA0LIABBuwEQDSAAQfYAEBsgACAAKAJALwG8ARAXIABBDhANIAMoAiAEQCAAQREQDSAAIANBIGoQxgQgAEEkEA0gAEEAEBcgAEEOEA0LIAcEQCAAQREQDSAAQbsBEA0gACAHEBsgACAELwG8ARAXCyAAEOsBIAAQ6wECQCAIBEAgACAEIAhBARCoAUEASA0DIABBuwEQDSAAIAgQGyAAIAQvAbwBEBcMAQsgBw0AIABBvwEQDSAAIAQoApgCIBVrQQFqEDkLQQAgAkUNAhpBACAAIAQoApQDIAggCEEWIAJBAUYbQQAQiAINAhoMAQsLIAYgAygCPBASQX8LIQEgBiAHEBIgBiAIEBIgBCATOgBuIANBQGskACABCy4AIAAgASgCADYCFCAAIAEoAgQ2AgggACABKAIMNgI4IAAgASgCCDYCMCAAEBALKgAgASAAKAIENgIAIAEgACgCFDYCBCABIAAoAhg2AgwgASAAKAIwNgIICxgAIAAgACABgSIAfSAAQj+HIAGDfSABfwseACAAIAEgACACEA4gAxCKAyICQQAQ5QQgACACEAsLZQEDfyABKAIQIgQgASgCFEF/aiACENMDcUEDdCIFakEEaiEDA38gAygCACIDIAQgBWpGBEBBAA8LIAAgAykDCBAOIAIQDkECENsBBH8gA0FoagUgA0EEaiEDIAEoAhAhBAwBCwsLKQACQCAAQiCIp0ELakESSQ0AIAAQSkQAAAAAAAAAAGINAEIAIQALIAAL2QMCCH8DfiMAQTBrIgQkAEKAgICA4AAhDAJAIAAgARApIg0QDA0AQoCAgIAwIQwCQAJAIAAgBEEsaiAEQShqIA2nIgkgAkFvcRCNAQ0AIAAQTiIMEAwNACACQRBxIQpCgICAgDAhASAEKAIsIQYgBCgCKCEHIANBf2ohC0EAIQIDQCACIAdGDQIgBiACQQN0aigCBCEDAkACQAJAIAoEQCAAIARBCGogCSADEFoiBUEASARAQQIhBQwCCyAFRQRAQQUhBQwCCyAAIARBCGoQUkEFIQUgBCgCCEEEcUUNAQsCQAJAAkACQCALDgIBAgALIAAgAxBkIgEQDEUNAgwHCyAAIA0gAyANQQAQEyIBEAxFDQEMBgsgABBOIgEQDA0FIAAgAxBkIg4QDA0DIAAgAUIAIA5BgIABEKoBQQBIDQMgACANIAMgDUEAEBMiDhAMDQMgACABQgEgDkGAgAEQqgFBAEgNAwsgACAMIAitIAFBABCqAUEASA0EIAhBAWohCAwBCyAFDggABQMFBQAFAQULIAJBAWohAgwBCwsgACABEAsLIAAgDBALQoCAgIDgACEMIAQoAighByAEKAIsIQYLIAAgBiAHEGggACANEAsLIARBMGokACAMC6MBAgN/A34jAEEQayIGJAAgBEIAIARCAFUbIQsgBUEASCEHA0ACQCAJIAtRBEBBACEFDAELQX8hBSAAIAEgCUJ/hSAEfCAJIAcbIgogA3wgBkEIahCGASIIQQBIDQAgAiAKfCEKAkAgCARAIAAgASAKIAYpAwgQjAFBAE4NAQwCCyAAIAEgChCTAkEASA0BCyAJQgF8IQkMAQsLIAZBEGokACAFC2ECAX8BfiMAQRBrIgMkAAJ+AkACQCACRQ0AIAApAgQiBEL/////B4MgAVcNACAEp0EASA0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQ1wEaIAM0AgwLIQEgA0EQaiQAIAELJAAgAEEIdEGAgPwHcSAAQRh0ciAAQQh2QYD+A3EgAEEYdnJyCwkAIAAgATsAAAtKACMAQRBrIgMkACADIAE5AwggAyACNgIAIABBgAFB1sMAIAMQVCIAQYABTgRAQdvDAEGhDUHV2ABB6MMAEAAACyADQRBqJAAgAAtwAQN/IwBBEGsiAiQAIAAhAQNAAkAgASwAACIDQQBOBEAgA0H/AXFBd2oiA0EXS0EBIAN0QZ+AgARxRXINASABQQFqIQEMAgsgAUEGIAJBDGoQYxCvA0UNACACKAIMIQEMAQsLIAJBEGokACABIABrCzMBAX4CfiABKQNAIgIQEQRAQoCAgIDgACAAIAEQ8AciAhAMDQEaIAEgAjcDQAsgAhAOCwt/AQN/IAAoAhAhBSAAIAJBA3RBGGoQLiIERQRADwsgBCACNgIQIAQgATYCDCAEIAA2AghBACEAIAJBACACQQBKGyEBIARBGGohAgNAIAAgAUcEQCACIABBA3QiBmogAyAGaikDABAONwMAIABBAWohAAwBCwsgBCAFQZgBahBNCyMAIAAoAgAgACgCBBAZIABBADYCDCAAQgA3AgQgAEF/NgIUC3YBAn8gACABQRBqEKQFAkAgASgCICICBEAgASgCPCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQJiACQQhqIQIgASgCPCEDDAELCyAAIAEoAiAQIAsgACABKQMYECYgACABKQMAECYPC0GzH0GhDUGrkwFBxh8QAAALDQAgACABIAJBExDjAwvoAwEDfyABQRBqIQMgASgCFCECA0AgAiADRkUEQCACQWhqIQQgAigCBCECIAAgBBCAAwwBCwsgACgCECABKAKAAiABKAKEAiABKAKgAhCGBSABQYACahCiASAAIAEoAswCEBkgACABKAKkAhAZIAAgASgC2AIQGUEAIQIDQCACIAEoArgCTkUEQCAAIAEoArQCIAJBA3RqKQMAEAsgAkEBaiECDAELCyAAIAEoArQCEBkgACABKAJwEBJBACECA0AgAiABKAJ8TkUEQCAAIAEoAnQgAkEEdGooAgAQEiACQQFqIQIMAQsLIAAgASgCdBAZQQAhAgNAIAIgASgCiAFORQRAIAAgASgCgAEgAkEEdGooAgAQEiACQQFqIQIMAQsLIAAgASgCgAEQGUEAIQIDQCACIAEoAvQBTkUEQCAAIAEoAvwBIAJBBHRqKAIMEBIgAkEBaiECDAELCyAAIAEoAvwBEBlBACECA0AgAiABKALAAk5FBEAgACABKALIAiACQQN0aigCBBASIAJBAWohAgwBCwsgACABKALIAhAZIAEoAswBIgIgAUHQAWpHBEAgACACEBkLIAAgASgC7AIQEiABQfQCahCiASAAIAEoAowDEBkgASgCBARAIAFBGGoQRwsgACABEBkL5QIDA38BfgJ8An8gACsDCCIGRAAAAAAAAChAENQFIgeZRAAAAAAAAOBBYwRAIAeqDAELQYCAgIB4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QQAgACACQRBqEHIiARAMDQAaIAAoAhAgAadBARDNAgshACACQTBqJAAgAAs8AQF/IAEgACgCzAEgASgCFCAAKALAARDKAkECdGoiAigCADYCKCACIAE2AgAgACAAKALIAUEBajYCyAELQwACf0EAIAIoAgAoAgBBGnYgA0YNABpBfyAAIAEgAhDgAQ0AGiACKAIAIgAgACgCAEH///8fcSADQRp0cjYCAEEACwuqAQEEf0F/IQICQCAAIAFBABDgAQ0AIAEoAigiBCABKAIQIgMoAiBqIgUgAygCHEsEQCAAIAFBEGogASAFELUFDQELIAEoAiQhA0EAIQIDQCACIARGRQRAIAAgASACEJEBQQcQfiADKQMANwMAIAJBAWohAiADQQhqIQMMAQsLIAAgASgCJBAZQQAhAiABQQA2AiggAUIANwMgIAEgAS0ABUH3AXE6AAULIAILfQEDfwJAAkAgAEEBcSICDQAgAUGBAnFBgQJGDQEgAUGACHFFDQAgACABc0EEcQ0BCwJAIAFBgPQAcUUgAnINACAAQTBxIgJBEEYgAUGAMHEiBEEAR3MNASAAQQJxIAFBggRxQYIER3IgAkEQRnINACAERQ0BC0EBIQMLIAMLlAEBAX8jAEEQayIFJAAgBSADNwMIAkAgAQRAIAAgAa1CgICAgHCEEA4gAkEBIAVBCGoQNiECIAAgBSkDCBALQX8hASACEAwNASAAIAIQC0EBIQEMAQsgACADEAsgBEGAgAFxRQRAQQAhASAEQYCAAnFFDQEgABD4AUUNAQsgAEGrwABBABAVQX8hAQsgBUEQaiQAIAELYAIBfwF+AkAgARBdDQACQAJAAkAgACgCECgCOCABQQJ0aigCACkCBCIDQj6Ip0F/ag4DAwIAAQtBASECAkAgA0IgiKdB/////wNxDgIDAAELQQIPCxABAAtBASECCyACCygBAX4Cf0EAIAAgARC6BSICEBENABpBfyACEAwNABogACACEAtBAQsLTgIBfwF+IwBBEGsiAiQAAn4gAUH/AU0EQCACIAE6AA8gACACQQ9qQQEQzgIMAQsgAiABOwEMIAAgAkEMakEBEIwECyEDIAJBEGokACADCyIAIAAgAkEBahAuIgAEQCAAIAEgAhAkIAJqQQA6AAALIAALKQECfwJAIABCgICAgHBUDQAgAKciAi8BBhD1AUUNACACKAIgIQELIAEL3wEBBH8gABAMBH9B9KYEKAIAEI8BIQBB9KYEKAIAIABBpggQ5wMhAkH0pgQoAgAhAwJAIAJFBEAgAyAAEAsMAQsgAyAAQasIEOcDIQNB9KYEKAIAIQQgA0UEQCAEIAIQN0H0pgQoAgAgABALDAELIAQgAEGxCBDnAyEEQfSmBCgCACEFIARFBEAgBSACEDdB9KYEKAIAIAMQN0H0pgQoAgAgABALDAELIAUgABALIAIgBCADIAEQCkH0pgQoAgAgAhA3QfSmBCgCACADEDdB9KYEKAIAIAQQNwtBAQVBAAsLIQAgACABQTAgA61BARAaGiAAIAFBNiAAIAIQMkEBEBoaC08BAX8gASACNgIMIAEgADYCACABQQA2AhQgASADNgIQIAFBADYCCCABIAAgAiADEPoBIgA2AgQgAAR/QQAFIAFBfzYCFCABQQA2AgxBfwsL+AECBX8BfiABKAIMIQICQAJAAkAgASkCBCIHQoCAgICAgICAQFoEQCAAKAI4IQQMAQsCQCABIAAoAjgiBCAAKAI0IAdCIIinIAAoAiRBf2pxQQJ0aiIDKAIAIgVBAnRqKAIAIgZGBEAgAyACNgIADAELA0AgBiEDIAVFDQMgBCADKAIMIgVBAnRqKAIAIgYgAUcNAAsgAyACNgIMCyAFIQILIAQgAkECdGogACgCPBDHBTYCACAAIAI2AjwgACABECAgACAAKAIoIgBBf2o2AiggAEEATA0BDwtBmTBBoQ1BxBZBoDAQAAALQbIwQaENQdgWQaAwEAAAC0kCAX8BfgJAAkAgAgRAIAEsAAAQRg0BCyAAKAIQIAEgAhD1CCIDDQELQQAhAyAAIAEgAhD8ASIEEAwNACAAIASnEJUEIQMLIAMLxAIBAn8gACAAKAIAIgFBf2oiAjYCAAJAIAFBAUoNACACRQRAIAAoAhAhAkEAIQEgAEEAEJcEIAAgACkDwAEQCyAAIAApA8gBEAsgACAAKQOwARALIAAgACkDuAEQCyAAIAApA6gBEAsDQCABQQhGBEBBACEBA0AgASACKAJASARAIAAgACgCKCABQQN0aikDABALIAFBAWohAQwBCwsgAiAAKAIoECAgACAAKQOYARALIAAgACkDoAEQCyAAIAApA1AQCyAAIAApA0AQCyAAIAApA0gQCyAAIAApAzgQCyAAIAApAzAQCyAAKAIQIQEgACgCJCICBEAgASACEJwCCyAAQRRqEEcgABCdAiAAKAIQIAAQIAwDBSAAIAAgAUEDdGopA1gQCyABQQFqIQEMAQsACwALQccNQaENQeQRQeINEAAACwuyAQMBfwF+AXwgAL0iAkI0iKdB/w9xIgFBsghNBHwgAUH9B00EQCAARAAAAAAAAAAAog8LAnwgACAAmiACQn9VGyIARAAAAAAAADBDoEQAAAAAAAAww6AgAKEiA0QAAAAAAADgP2RBAXNFBEAgACADoEQAAAAAAADwv6AMAQsgACADoCIAIANEAAAAAAAA4L9lQQFzDQAaIABEAAAAAAAA8D+gCyIAIACaIAJCf1UbBSAACwvWAwMCfwF+AnwgAL0iA0IgiKchAQJAAnwCfAJAIANCAFlBACABQfmE6v4DSxtFBEAgAUGAgMD/e08EQEQAAAAAAADw/yAARAAAAAAAAPC/YQ0EGiAAIAChRAAAAAAAAAAAow8LIAFBAXRBgICAygdJDQQgAUHF/cr+e08NAUQAAAAAAAAAAAwCCyABQf//v/8HSw0DCyAARAAAAAAAAPA/oCIEvSIDQiCIp0HiviVqIgFBFHZBgXhqIQIgACAEoUQAAAAAAADwP6AgACAERAAAAAAAAPC/oKEgAUH//7+ABEsbIASjRAAAAAAAAAAAIAFB//+/mgRNGyEFIANC/////w+DIAFB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIQAgArcLIgREAADg/kIu5j+iIAAgBSAERHY8eTXvOeo9oqAgACAARAAAAAAAAABAoKMiBCAAIABEAAAAAAAA4D+ioiIFIAQgBKIiBCAEoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAQgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCAFoaCgCw8LIAALGgAgACABELoJIgBBACAALQAAIAFB/wFxRhsLKgEBfyAAQoCAgIBwWgRAIACnIgIgAi0ABUHvAXEgAUEEdEEQcXI6AAULCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBnqwDai8BAAUgAAsLEAAgAC8AACAALQACQRB0cgvCAgEHfwJAIAFFDQADQCACQQNGBEAgAUEBcSIFRSABQQZxRXIhBwNAIARB6QJGDQMCQAJAIAMgBEECdEGw5wFqKAIAIgJBBHZBD3EiBnZBAXFFDQAgAkEPdiEBIAJBCHZB/wBxIQgCQAJAAkAgBkF8ag4CAAECCyAHRQ0BIAEgBWohBkEAIQIDQCACIAhPDQMgAiAGaiEBIAJBAmohAiAAIAEgAUEBahCBAUUNAAsMAwsgB0UNACABQQFqIQIgBUUEQCAAIAEgAhCBAQ0DCyAAIAIgAUECaiICEIEBRQRAIAVFDQIgACACIAFBA2oQgQFFDQILQX8PCyAAIAEgASAIahCBAQ0BCyAEQQFqIQQMAQsLQX8PBSABIAJ2QQFxBEAgAkECdEHE5ANqKAIAIANyIQMLIAJBAWohAgwBCwALAAtBAAtNAQF/IAAoAgQiAiABSARAIAAoAgwgACgCCCABIAJBA2xBAm0QSyIBQQJ0IAAoAhARAAAiAkUEQEF/DwsgACABNgIEIAAgAjYCCAtBAAuUAgECfyMAQRBrIgQkAAJAIARBDGogACACIAMQ9gUiAkEASA0AIAEgAmohAgNAIAJBAWohAQJAIAItAAAiA0E/TQRAIAQoAgwgA0EDdmpBAWoiAiAASw0DIAQgA0EHcSACakEBaiIDNgIMIAVBAXMhBQwBCyADQRh0QRh1QX9MBEAgBCADIAQoAgxqQYF/aiIDNgIMDAELIANB3wBNBEAgBCAEKAIMIAItAAEgA0EIdHJqQYGAf2oiAzYCDCACQQJqIQEMAQsgBCAEKAIMIAItAAIgA0EQdCACLQABQQh0cnJqQYGAgH1qIgM2AgwgAkEDaiEBCyADIABLDQEgBUEBcyEFIAEhAgwACwALIARBEGokACAFC0wBAn8jAEEQayIDJAACfyACIAEoAgAiBC0AAEcEQCADIAI2AgAgAEG74gEgAxA/QX8MAQsgASAEQQFqNgIAQQALIQIgA0EQaiQAIAILHgAgAEFQakEKSSAAQV9xQb9/akEaSXIgAEHfAEZyC8EBAQN/AkACfyAAKAJAGkEACwRAIABBoeABQQAQPwwBCyAAKAIEIQMgACABEIEGDQBBBSADayEEA0AgACgCGCICLQAAQfwARwRAQQAPCyAAIAJBAWo2AhggACgCBCECIAAgA0EFEIICBEAgABDZAkF/DwsgACgCACADakEJOgAAIAAoAgAgA2pBAWogAiAEahBcIABBB0EAEMsBIQIgACABEIEGDQEgACgCACACaiAAKAIEIAJrQXxqEFwMAAsAC0F/C0sBAn8CQANAIAFBCkYNASABQQJ0QQJyQZDfAWovAQAgAEoNASABQQF0IQIgAUEBaiEBIAJBAXRBlN8Bai8BACAATA0AC0EBDwtBAAu3AgEDfwJ/An8gAUH/AE0EQCAAIAE6AAAgAEEBagwBCwJ/IAFB/w9NBEAgACEDIAFBBnZBQHIMAQsCfyABQf//A00EQCAAQQFqIQMgACEEIAFBDHZBYHIMAQsCfyABQf///wBNBEAgACECIAFBEnZBcHIMAQsCfyABQf///x9NBEAgAUEYdkF4ciEDQQEhAiAADAELQQAgAUEASA0FGiAAIAFBHnZB/AFyOgAAIAFBGHZBP3FBgH9yIQNBAiECIABBAWoLIAM6AAAgACACaiECIAFBEnZBP3FBgH9yCyEDIAIgAzoAACACQQJqIQMgAkEBaiEEIAFBDHZBP3FBgH9yCyECIAQgAjoAACABQQZ2QT9xQYB/cgshAiADIAI6AAAgAyABQT9xQYABcjoAASADQQJqCyAAawsLJAAgAEIANwIAIAAgATYCFCAAQgA3AgggACACQeACIAIbNgIQC8kBAgN/AX4jAEEQayIFJAACQCAAIAFBAhBsIgEQDA0AAkACQCACQQFHDQAgAykDACIHEIsBRQ0AIAAgBUEMaiAHEA5BARDEAg0BIAAgAUEwAn4gBSgCDCICQQBOBEAgAq0MAQsgArgQFgsQSUF/TA0BDAILIAJBACACQQBKGyECA0AgAiAERg0CIAAgASAEIAMgBEEDdGopAwAQDhCVAiEGIARBAWohBCAGQX9KDQALCyAAIAEQC0KAgICA4AAhAQsgBUEQaiQAIAELQwECfwNAAkAgAkEBTgR/IAAgARAxEN0CIgRBAE4NAUF/BSADCw8LIAJBf2ohAiABQQFqIQEgBCADQQR0ciEDDAALAAsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQUgAUEAEPsBIAJBEGokAAt5AQJ/IwBBEGsiBCQAAkAgACABIAIgAxCvASIBEAwNAAJAIAAgARCWASIFQQBIDQAgAkEBRw0BIAAgBEEIaiADKQMAEA4QrQENACAEKQMIIAWtVw0BIABB0KwBQQAQFQsgACABEAtCgICAgOAAIQELIARBEGokACABC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEFqag4EAgEBAgALIABBsQFGDQELIABBHUYhAgsgAgtpACABQQFqQQhNBEAgACABQbN/akH/AXEQDw8LIAFBgAFqQf8BTQRAIABBuwEQDyAAIAFB/wFxEA8PCyABQYCAAmpB//8DTQRAIABBvAEQDyAAIAFB//8DcRAwDwsgAEEBEA8gACABEB0LaQEEfyAAKAIEIQUCQANAIAEgBU4NAQJAAkAgACgCACABaiIDLQAAIgRBtAFHBEAgBEHAAUYNASAEQesARw0EIAIgAygAAUcNBAwCCyACIAMoAAFGDQELIAFBBWohAQwBCwtBASEGCyAGC4ECAQV/IAAgAUF/EG8aAkADQCAGQQpGBEBB6wAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhBwNAAkACQCAFIAdqIggtAAAiBEG0AUYNACAEQcABRwRAIARBDkcNAkEpIQQDQCAHIAVBAWoiBWotAAAiA0EORg0ACyADQSlGDQZBDiEEDAYLIANFDQAgAyAIKAABNgIACyAFIARBAnRBkDFqLQAAaiEFDAELCyAEQesARw0CIAZBAWohBiAIKAABIQEMAQsLQZ2KAUGhDUGg8wFBlJoBEAAACyACIAQ2AgAgACABQQEQbxogAQs2AAJAIAAgAUEIEFYiAEEASA0AIAEoAmBFDQAgASgCdCAAQQR0aiIBIAEoAgxBAnI2AgwLIAALpQEBAn8gASgCwAIiCkGAgAROBEAgAEGekAFBABBEQX8PC0F/IQkgACABQcgCakEIIAFBxAJqIApBAWoQfAR/QX8FIAEgASgCwAIiCUEBajYCwAIgASgCyAIgCUEDdGoiCSAEOwECIAkgB0EDdEEIcSAGQQJ0QQRxIANBAXRBAnEgAkEBcXJyciAIQQR0cjoAACAJIAAgBRAYNgIEIAEoAsACQX9qCwvVAQEDfwJAAkAgAUGhf0YEQEF/IQMgAEEIIAIQqgJFDQEMAgtBfyEDIABBoX8gAhC8Aw0BC0EAIQMgACgCECABRw0AQekAQeoAIAFBoX9GGyEFIAJBe3EhAiAAEDUhBANAQX8hAyAAEBANASAAQREQDSAAIAUgBBAcGiAAQQ4QDQJAIAFBoX9GBEAgAEEIIAIQqgJFDQEMAwsgAEGhfyACELwDDQILIAAoAhAiAyABRg0ACyADQaZ/RgRAIABBpYcBQQAQFEF/DwsgACAEEB5BACEDCyADC40BAQJ/AkACQCAAKAJAIgEQpAEiAkG/AUcEQCACQc0ARw0BIAEoApgCIQIgAUF/NgKYAiABIAI2AoQCIABBzgAQDQ8LIAEoApgCIgAgACABKAKAAiICaigAAWsgAmoiAC0AAUHWAEcNASAAQdcAOgABIAFBfzYCmAILDwtB1oUBQaENQY+wAUGNhgEQAAALWQEDfyAAKALMASACQQN0akEEaiEDA0ACQEF/IQQgAygCACIDQX9GDQAgACgCdCADQQR0aiIFKAIEIAJHDQAgAyEEIAUoAgAgAUYNACAFQQhqIQMMAQsLIAQLihkCCX8BfiMAQRBrIgQkACABQQJxIgNBAXYhCUF+IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIFQYABag4HAgMSDQEBBQALAkAgBUHVAGoODAkLDAEBAQEKAQEBDwALAkAgBUE7ag4KBwEBCAEBAQEREAALIAVBKEYNBSAFQS9GDQMgBUHbAEYgBUH7AEZyDQ0LIAAoAjghAyAEIAAoAhgiATYCBCAEIAMgAWs2AgAgAEHdggEgBBAUDBQLAkAgACkDICILQv////8PWARAIABBARANIAAgC6cQOQwBCyAAIAtBABDPAUEASA0UC0F/IQEgABAQDRQMEQtBfyEBIAAgACkDIEEBEM8BDRMgABAQRQ0QDBMLQX8hAgsgACAAKAI4IAJqNgI4IAAoAgAoAugBRQRAIABBjYABQQAQFAwRC0F/IQEgABDOBA0RQQAhAiAAIAApAyBBABDPARogACgCACIDIAApAyAgACkDKCADKALoAREWACILEAwEQCAAKAJAIgMEQCADKAJoQQBHQQF0IQILIAAoAgAiAyADKAIQKQN4IAAoAgwgACgCFCACEL0CDBILIAAgC0EAEM8BIQMgACgCACALEAsgAw0RIABBMxANIAAQEEUNDwwRCwJAIAFBBHFFDQBBACECIABBAEEBEKUBQaR/Rw0AQX8hASAAQQNBACAAKAIYIAAoAhQQ1AFFDQ8MEQtBfyEBIAAQhwJFDQ0MEAtBfyEBQQAhAiAAQQJBACAAKAIYIAAoAhQQ1AFFDQ0MDwtBfyEBQQAhAiAAQQFBABDtAkUNDAwOC0F/IQEgABAQDQ0gAEEHEA0MCgtBfyEBIAAQEA0MIABBtgEQDSAAQQgQGwwIC0F/IQEgABAQDQsgAEEJEA0MCAtBfyEBIAAQEA0KIABBChANDAcLIAAoAigEQCAAEOwBDAkLAkAgAUEEcSIDRQ0AIABBARCFAUGkf0cNAEF/IQFBACECIABBA0EAIAAoAhggACgCFBDUAUUNCAwKCwJAAkAgAEGFARBPRQ0AIABBARCFAUEKRg0AIAAoAhQhCCAAKAIYIQVBfyEBIAAQEA0LIAAoAhAiAkFFRgRAIABBAkECIAUgCBDUAUUNCQwMCwJAIANFDQACQCACQShGBH8gAEEAQQEQpQFBpH9GDQEgACgCEAUgAgtBg39HDQEgACgCKA0BIABBARCFAUGkf0cNAQsgAEEDQQIgBSAIENQBRQ0JDAwLQYUBIQIgACgCAEGFARAYGgwBCwJAIAAoAiAiA0HNAEcNACAAKAJAKAJcDQAgAEGmgAFBABAUDAoLQX8hASAAKAIAIAMQGCECIAAQEA0KCyAAQbYBEA0gACACEDkgACAAKAJALwG8ARAXDAYLIAAgBEEMakEAEKUBQT1GBEAgAEEAQQBBACAEKAIMQQJxQQEQ0QFBAE4NBgwICyAAKAIQQfsARgRAIAAQ6QZFDQYMCAsgABDoBkUNBQwHC0F/IQEgABAQDQcgACgCEEEuRgRAIAAQEA0IIABB1gAQT0UEQCAAQeeAAUEAEBQMCQsgACgCQCgCUEUEQCAAQfiAAUEAEBQMCQsgABAQDQggAEG2ARANIABB8QAQGwwECyAAQQAQvwMNB0EBIQkgACgCEEEoRgRAQQEhAgwGCyAAQREQDSAAQSEQDQwDC0F/IQEgABAQDQYCQCAAKAIQIgNB2wBGIANBLkZyRQRAIANBKEcNAUECIQIgACgCQCgCVA0GIABBoYEBQQAQFAwICyAAKAJAKAJYRQRAIABB1oEBQQAQFAwICyAAQbYBEA0gAEEIEBtBACECIABBABAXIABBtgEQDSAAQfMAEBsgAEEAEBcgAEE0EA0MBQsgAEH4gQFBABAUDAYLQX8hASAAEBANBSAAKAIQQS5GBEAgABAQDQYgAEH7ABBPRQRAIABBj4IBQQAQFAwHCyAAKAJERQRAIABBnYIBQQAQFAwHCyAAEBANBiAAQQwQDSAAQQYQawwDCyAAQSgQLw0FIANFBEAgAEHDggFBABAUDAYLIAAQXg0FIABBKRAvDQUgAEE1EA1BACECQQEhCQwDC0F/IQFBACECIABBAEEAEMsEDQQMAgtBACECIABBABAXDAELQQAhAgsgBEF/NgIMA0AgACgCQCEGAkACQAJAAkACQAJAAkACfwJAIAAoAhAiAUGnf0ciBUUEQCAAEBANCyAAKAIQIQEgCQRAQQEhCiABQShGDQILIAFB2wBHDQUMCQsgAiABQYJ/R3JFBEBBACEKIAQoAgxBAEgEQEEDIQNBAAwDCyAAQYSDAUEAEBQMCwsgCUUNA0EAIQogAUEoRw0DCyAAEBANCUEAIQMgAgRAQQAhByACIQMMAgtBAQshBUEBIQFBACEHAkACQAJAAkACQCAGEKQBIgJBuX9qDgQBBAQDAAsgAkG8AUcEQCACQbYBRg0CIAJBwQBHDQQgBigCgAIgBigCmAJqQcIAOgAAQQIhAUHBACEHDAQLIAYoAoACIAYoApgCakG9AToAAEECIQFBvAEhBwwDCyAGKAKAAiAGKAKYAmpByAA6AABBAiEBQccAIQcMAgsgBigCgAIgBigCmAJqIggoAAEhAiAKRQRAQTEhByAFIAJBOkZxDQMLIAYgCC8ABRDnBkUEQEG2ASEHDAILQboBIQcgCEG6AToAAAwBC0HHACEHIAYoAoACIAYoApgCakHHADoAAEECIQELIApFDQAgACAEQQxqIAEQ5QILAkAgA0EDRgRAIABBASAEQQhqEMsEDQkMAQsCQCADQQJHIgVFBEAgAEG2ARANIABB8gAQGyAAQQAQFyAAQTQQDSAAQbYBEA0gAEHxABAbIABBABAXDAELIANBAUcNACAAQREQDQtBACEBAkACQANAIAAoAhAiAkEpRg0CIAFB//8DRgRAIARB//8DNgIIIABBuIMBQQAQFAwMCyACQaV/Rg0BIAAQXkUEQCABQQFqIQEgACgCEEEpRg0DIABBLBAvRQ0BCwsgBCABNgIIDAoLIAQgATYCCCAAQSYQDSAAIAFB//8DcRAXIABBARANIAAgARA5A0ACQAJAIAAoAhAiAUGlf0cEQCABQSlGDQIgABBeDQ0gAEHRABANQY8BIQIMAQtBfyEBIAAQEA0NQdIAIQIgABBeDQ0LIAAgAhANIAAoAhBBKUYNAEF/IQEgAEEsEC9FDQEMDAsLIAAQEA0JIABBDhANAkACQAJAAkAgB0HGfmoOAwEDAQALIAdBMUYNASAHQccARg0AIAdBwQBHDQILIABBGBANIABBJxANIAAgA0EBRhAXQQAhAgwKCyAAQTIQDQwHCyAFRQRAIABBJxANIABBARAXDAYLIANBAUYEQCAAQRgQDSAAQScQDSAAQQEQF0EAIQIMCQsgAEEGEA0gAEEbEA0gAEEnEA1BACECIABBABAXDAgLIAQgATYCCCAAEBANCAsCQAJAAkACQCAHQcZ+ag4DAQMBAAsgB0ExRg0BIAdBxwBGDQAgB0HBAEcNAgsgAEEkEA0gACAELwEIEBdBACECDAgLIABBMRANIAAgBC8BCBAXDAULAkACQAJAIANBf2oOAgEAAgsgAEEhEA0gACAELwEIEBcMBQsgAEEhEA0gACAELwEIEBdBACECDAcLIABBIhANIAAgBC8BCBAXQQAhAgwGCyABQdsARg0EIAFBLkcNASAAEBANBiAAKAIQIQELAkAgAUGpf0YEQCAGEKQBQTRGBEAgAEHQgwFBABAUDAgLIAVFBEAgACAEQQxqQQEQ5QILIABBvAEQDSAAIAAoAiAQGyAAIAAoAkAvAbwBEBcMAQsgARDTAUUEQCAAQfqDAUEAEBQMBwsgBhCkAUE0RgRAIAAgACgCACAAKAIgEGQiC0EBEM8BIQEgACgCACALEAsgAQ0HIABBygAQDQwBCyAFRQRAIAAgBEEMakEBEOUCCyAAQcEAEA0gACAAKAIgEBsLQX8hASAAEBBFDQQMBgtBACEBIAQoAgwiA0EASA0FIAAgAxAeDAULIABBERANIABBuwEQDSAAQQgQG0EAIQIgAEEAEBcgABDSBAwCCyAAIAYvAbwBEBcgBkEBNgJEQQAhAgwBCyAGEKQBIQMgBUUEQCAAIARBDGpBARDlAgtBfyEBIAAQEA0CIAAQlwENAiAAQd0AEC8NAiADQTRGBEAgAEHKABANBSAAQccAEA0LDAALAAtBfyEBCyAEQRBqJAAgAQtoAAJAIAFBf0oNAEF/IQEgACgCACAAQaQCakEUIABBqAJqIAAoAqwCQQFqEHwNACAAIAAoAqwCIgFBAWo2AqwCIAAoAqQCIAFBFGxqIgBBADYCECAAQn83AgggAEKAgICAcDcCAAsgAQuCAQEBfwJAAkAgACgCEEGDf0cNACAAKAIoDQAgACgCICECIAAoAkAtAG5BAXFFDQEgAkHNAEYNACACQTpHDQELIABBx/4AQQAQFEEADwsgACgCACACEBghAgJAAkAgAQRAIAAgAhDNBA0BCyAAEBBFDQELIAAoAgAgAhASQQAhAgsgAgvaBAEEfwJAAkACQAJ/AkACQAJAAkACQCACRQ0AAkAgAEHBABBPRQRAIABBwgAQT0UNAQsgACgCACAAKAIgEBghBSAAEBANBEEBIQcCQAJAIAAoAhAiCEFYag4FBAEBAQQACyAIQTpGIAhB/QBGcg0DCyAAKAIAIAUQEkEDQQIgBUHCAEYbIQYMAQsgACgCEEEqRgRAIAAQEA0IQQQhBgwBCyAAQYUBEE9FDQAgAEEBEIUBQQpGDQAgACgCACAAKAIgEBghBSAAEBANA0EBIQcCQAJAIAAoAhAiCEFYag4FAwEBAQMACyAIQTpGIAhB/QBGcg0CCyAAKAIAIAUQEkEFIQYgACgCEEEqRw0AIAAQEA0HQQYhBgsgACgCECIFENMBRQ0BQQAhByAFQYN/RgRAIAAoAihFIQcLIAAoAgAgACgCIBAYIQUgABAQDQILQQAgBiADRSAHRXJyDQMaIAAoAhAiAEE6RyACRSAAQShHcnEhBkEAIQQMBgsCQAJAAkAgBUGAAWoOAgEAAgsgACgCACAAKQMgEDoiBUUNBiAAEBANAgwDCyAAKAIAIAApAyAQOiIFRQ0FIAAQEEUNAgwBCyAFQdsARwRAIARFIAVBqX9Hcg0EIAAoAgAgACgCIBAYIQUgABAQDQFBEAwDCyAAEBANBCAAEJcBDQQgAEHdABAvDQRBACEFQQAMAgsgACgCACAFEBIMAwtBAAshBCAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRASCyAAQeKKAUEAEBQLIAFBADYCAEF/DwsgASAFNgIAIAQgBnILUwEBf0F/IQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQfEUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILkgEBAn8gASgCiAEiBEGAgAROBEAgAEG2/QBBABBEQX8PC0F/IQMgACABQYABakEQIAFBhAFqIARBAWoQfAR/QX8FIAEgASgCiAEiA0EBajYCiAEgASgCgAEgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAYNgIAIAMgAygCDEGA////B3I2AgwgASgCiAFBf2oLC5ABAQJ/AkADQCACQQBOBEACQCAAKAJ0IAJBBHRqIgQoAgAgAUcNACAEKAIMIgVBAnENAyADRQ0AIAVB+ABxQRhGDQMLIAQoAgghAgwBCwsCQCAAKAIgRQ0AIAAoAiQNAEGAgICABCECAkAgACABEKwCIgAEQCAALQAEQQJxDQELQQAhAAsgAA0BC0F/IQILIAILogEBA38jAEEQayICJAACf0EAIABBJxBPRQ0AGiAAIAIQ7wJBfwJ/QX8gABAQDQAaAkAgACgCECIDQS9qIgRBB01BAEEBIAR0QcEBcRsgA0H7AEZyRQRAQQEgA0HbAEYNAhogA0GDf0cNAUEAIAAoAigNAhoLIAFBAnZBAXEgACgCBCAAKAIURnIMAQtBAAsgACACEO4CGwshACACQRBqJAAgAAuCAgEFfwJAAkACQCACQc0ARiACQTpGckUEQCAAKAIAIQUgAkEWRw0BIAAoAkAhBgwCCyAAQe6PAUEAEBQMAgsgACgCQCIGKALAAiIHQQAgB0EAShshBwNAIAQgB0YNASAEQQN0IQggBEEBaiEEIAggBigCyAJqKAIEIAJHDQALIABBhZABQQAQFAwBCyAFIAYgA0H9AEZBACABKAI4IAJBAUEBQQAQuwMiAEEASA0AIAUgAUE0akEMIAFBPGogASgCOEEBahB8DQAgASABKAI4IgJBAWo2AjggASgCNCEBIAUgAxAYIQMgASACQQxsaiIBIAA2AgAgASADNgIEQQAPC0F/C6wEAQd/IwBBEGsiBCQAIAAoAkAhByAAKAIAIQYgAkGxf0chCUG7f0G7f0G3fyACQVFGIggbIAJBSUYbQf8BcSEKAn8CQANAAkACQCAAKAIQIgVBg39GBEAgACgCKARAIAAQ7AEMBQsgBiAAKAIgEBgiBUEnRyAIRUEAIAJBSUcbckUEQCAAQfmOAUEAEBQMAwsgABAQDQIgACAFIAIQrgINAiADBEAgACAAKAJAKAKUAyAFIAVBABCIAkUNAwsCQCAAKAIQQT1GBEAgABAQDQQgCUUEQCAAQbYBEA0gACAFEBsgACAHLwG8ARAXIAAgBEEMaiAEQQhqIAQgBEEEakEAQQBBPRC6AUEASA0FIAAgARC5AQRAIAYgBCgCABASDAYLIAAgBRCpASAAIAQoAgwgBCgCCCAEKAIAIAQoAgRBAEEAENABDAILIAAgARC5AQ0EIAAgBRCpASAAIAoQDSAAIAUQGyAAIAcvAbwBEBcMAQsgCEUEQCACQUlHDQEgAEGhjwFBABAUDAQLIABBBhANIABBuwEQDSAAIAUQGyAAIAcvAbwBEBcLIAYgBRASDAELAkAgBUEgckH7AEcNACAAIARBDGpBABClAUE9Rw0AIABBBhANIAAgAkEAQQEgBCgCDEECcUEBENEBQQBODQEMBAsgAEHIjwFBABAUDAMLQQAgACgCEEEsRw0DGiAAEBBFDQEMAgsLIAYgBRASC0F/CyEAIARBEGokACAAC/QCAgR/AX4jAEEgayICJAACfwJAIAAoAgAgAkEIakEgEEINAAJAA0ACQCABIgQgACgCPE8NACAEQQFqIQFB4AAhAwJAAkACQAJAAkAgBC0AACIFQaR/ag4FAgMDAwEACyAFQSRHDQJBJCEDIAEtAABB+wBHDQMgBEECaiEBCyAAQYJ/NgIQIAAgAzYCKCACQQhqEDghBiAAIAE2AjggACAGNwMgQQAMBwsgAkEIakHcABA8DQUgASAAKAI8Tw0CIARBAmohASAELQABIQULAkACQAJAIAUiA0F2ag4EAQICAAILIAFBAWogASABLQAAQQpGGyEBCyAAIAAoAghBAWo2AghBCiEDDAELIANBGHRBGHVBf0oNACABQX9qQQYgAkEEahBjIgNB///DAEsNAyACKAIEIQELIAJBCGogAxC+AUUNAQwDCwsgAEGL1gBBABAUDAELIABB9NUAQQAQFAsgAkEIahBFQX8LIQEgAkEgaiQAIAELdgECfyABIAEtAABBfHFBAXIiBDoAACABIAItAAxBAnRBBHEgBEF5cXIiBDoAACABIARBdXEgAi0ADEECdEEIcXIiBDoAACACLQAMIQUgASADOwECIAEgBEENcSAFQQF0QfABcXI6AAAgASAAIAIoAgAQGDYCBAs7AQF/IAEoAgAhAgNAAkAgAiAAKAIEQf////8HcU4NACAAIAIQMUEgRw0AIAEgAkEBaiICNgIADAELCwshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLYwECfyMAQTBrIgEkAEGAgICAeCECIAEgAEKZ+P//v0FZBH9B/////wcgAELoB3+nIABC/////78+VRsFQYCAgIB4CzYCLCABQSxqIAEQCBogASgCJCECIAFBMGokACACQURtC7QDAwF/CH4BfCMAQRBrIgUkAAJ/QX8gACAFQQhqIAEQsAINABoCfCAFKwMIIg69Qv///////////wCDQoGAgICAgID4/wBaBEBEAAAAAAAAAAAgBA0BGkEADAILAn4gDplEAAAAAAAA4ENjBEAgDrAMAQtCgICAgICAgICAfwshBkQAAAAAAAAAACADRQ0AGkEAIAYQzQNrIgCsQuDUA34gBnwhBiAAtwshDiAGQoC4mSkQ4AQiASABQugHfyIHQugHfn0hCSABQoDd2wF/IQogAULg1AN/QjyBIQsgB0I8gSEMIAUgBiABfUKAuJkpfyIGNwMAQgAhASAGQgR8QgcQ4AQhDSAFEIAHIQggBSkDACEHA0ACQCABQgtRDQAgAadBAnRBsPcAajQCACEGIAFCAVEEQCAIEMwDIAZ8QpN9fCEGCyAHIAZTDQAgAUIBfCEBIAcgBn0hBwwBCwsgAiAOOQNAIAIgDbk5AzggAiAJuTkDMCACIAy5OQMoIAIgC7k5AyAgAiAKuTkDGCACIAG5OQMIIAIgCLk5AwAgAiAHQgF8uTkDEEEBCyEAIAVBEGokACAACw0AIAAgASACQQEQ5QQLIQAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAFBCGoQ/gILC1kCAn8BfiMAQRBrIgMkAEF/IQQCQCAAIAFBABB4IgUQDA0AIAAgA0EMaiAFEMQBDQAgACABQQAgAygCDCACaiIArRCVAkEASA0AIABFIQQLIANBEGokACAECxsAIAEoAiAEQCAAIAFBKGoQ/gIgAUEANgIgCwugAQICfwF8AkACfAJAAkACQAJAAkAgABBTIgJBCGoOCgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQyQUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEoiAyADvUL///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsQACAAQRh0IABBCHRyQRB2C1QBAX8gAEEgEC4iAkUEQEEADwsgAkEBNgIAIAJCgICAgMAAQoCAgIAwIAEbNwMYIAIgAkEYajYCECACIAItAAVBAXI6AAUgACgCECACQQMQvAEgAgsyAAJAIAAgAiABQQBBABAjIgIQDA0AIAIQIQ0AIAAgAhALIAAQJ0KAgICA4AAhAgsgAgsLACAAIAEgAhDEAQsMACAAQdHJAEEAEBUL/AIBBX8jAEEQayIHJAAgAUEANgIAIAJBADYCAEECIQYCQCAFIAMgBBDsB0F/Sg0AQX8hBiAAIAUgAyAEEOsHQQBIDQACQCADIAQQowUiBgRAIAYoAghFDQEgBigCDCIEQf0ARg0BIAAgASACIAMoAhAgBigCAEEDdGooAgQgBCAFENkDIQYMAgsgBEEWRwRAA0AgCCADKAIsSARAIAYhCkEAIQkCQAJAAkAgACAHQQxqIAdBCGogAygCECADKAIoIAhBAnRqKAIAQQN0aigCBCAEIAUQ2QMiBkEBag4FAgABAQIBCyACKAIAIgYEQCABKAIAIAcoAgxGBEAgBygCCCgCDCAGKAIMRg0CCyABQQA2AgAgAkEANgIAQQMhBgwCCyABIAcoAgw2AgAgAiAHKAIINgIAC0EBIQkgCiEGCyAIQQFqIQggCQ0BDAQLC0EAIQYgAigCAA0CC0EBIQYMAQsgASADNgIAIAIgBjYCAEEAIQYLIAdBEGokACAGC3MBAn8jAEGQAWsiBCQAQeA8IQUCQAJAAkACQCABQQFqDgUDAgIAAQILQYo9IQUMAQtByT0hBQsgACAEQdAAaiADEJUBIQEgBCAAIARBEGogAigCBBCVATYCBCAEIAE2AgAgACAFIAQQyQILIARBkAFqJAALaAECfyMAQRBrIgUkACAFQQA2AgggBUIANwMAIAAgASACIAMgBCAFENkDIQEDQCAGIAUoAghORQRAIAAgBSgCACAGQQN0aigCBBASIAZBAWohBgwBCwsgACAFKAIAEBkgBUEQaiQAIAELpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQtAEiBEUEQCAAEP0CDAELIARBEGohBSADKAIMQQF2IQYgACgCCCECA0AgAkEBSEUEQCAFIAJBf2oiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAEgBmo2AgxBACECCyADQRBqJAAgAgsHACAAQQFxC1QBAn8gACABKQMYIAIQIiAAIAEpAwAgAhAiAkAgASgCPCIERQ0AIAEoAiAhAwNAIAMgBE8NASAAIAMpAwAgAhAiIANBCGohAyABKAI8IQQMAAsACwsaAQF/IAGnKAIgIgMEQCAAIAMpAwAgAhAiCwtCAQF/IAEgASgCAEF/aiICNgIAAkAgAkUEQCABKAIERQ0BIAFBEGoQRyAAIAEQIAsPC0GXH0GhDUGc5AJBoR8QAAALCgAgACgCBCAARgt8AQR/IAGnIgYvAQYhByAAQRgQLiIFRQRAIAAgAhALQX8PCyACpyIIKAIgIQAgBSAEIAdBmR5qMQAAhj4CFCAFIAOnIgc2AhAgBSAINgIMIAUgBjYCCCAFIABBDGoQTSAGIAQ+AiggBiAFNgIgIAYgACgCCCAHajYCJEEACw0AIAAgASACIAMQnQgLOwEBfyAAKAIQIgMgASACEM0CIgFFBEAgABDHAUKAgICA4AAPCyADKAI4IAFBAnRqNQIAQoCAgICAf4QLEwAgAEKAgICAcINCgICAgIB/UQseACABKAIAQQRHBEAgACABQQhqEP4CIAFBBDYCAAsLLgEBfyAAIAAgASAAIAIQyAEiAiABQQAQEyIBELgBIQMgACABEAsgACACEBIgAwvuAQEBfyAAQZgDEGoiBkUEQEEADwsgBiAANgIAIAZBEGoQbiAGQX82AgggBiABNgIEIAEEQCAGQRhqIAFBEGoQTSAGIAEtAG46AG4gBiABKAK8ATYCDAsgBiADNgIsIAYgAjYCICAAIAZBgAJqEJACIAZBADYCcCAGQX82ApgCIAZBkAFqQf8BQSgQTBogBkKEgICAEDcCxAEgBiAGQdABajYCzAEgBkJ/NwLQASAGQX82AvABIAZCgICAgHA3ArwBIAAgBBDIASEBIAYgBTYC8AIgBiABNgLsAiAAIAZB9AJqEJACIAYgBTYCnAIgBgsVAQF+IAAgARDuBCECIAAgARALIAIL4QoCA38KfiMAQRBrIgQkACAEIAI3AwgCQAJAAkACQAJAAkACQAJAAkACQCACEFNBB2oODwMCAgICAgAEBAQCAgICAQILAkACQAJAAkACQAJAIAKnIgYvAQZBfGoOAwEABAULQoCAgIAwIQMgACACED4iAhAMDQEgBCAAIAIQ6QMiAjcDCCACEAwNASABKAIoIAIQigEhBQwNCyAEIAAgAhCcASICNwMIQoCAgIAwIQMgAhAMRQ0BC0KAgICAMCELQoCAgIAwIQdCgICAgDAhCUKAgICAMCEMDAoLIAEoAiggAhCKASEFDAoLIAEoAiggBikDIBCJASEFIAAgAhALDAkLQoCAgIAwIQkgACABKQMIQQEgBEEIahDtAyIIEAwNBiAAIAgQLQRAIABB380AQQAQFQwHCyAAIAMQDiIOIAEpAxgQDhC/AiIMEAwEQEKAgICAMCEDQoCAgIAwIQsMBgsCQCABKQMYEPQBRQRAAkAgAEG0ECAMEA4iCEG+FRC9ASIDEAwEQEKAgICAMCELDAELIABB/NYAEHIiCxAMRQ0CC0KAgICAMCEHIAghDAwJCyABKQMgEA4hAyABKQMgEA4hCwsgACAAIAEpAwhBASAEQQhqQQAQlwUQjAINBSAAIAIQwAEiBkEASA0FIAYEQCAAIAQgAhBADQYgASgCKEHbABA8GiAEKQMAIg9CACAPQgBVGyEQA0AgByAQUgRAIAdQRQRAIAEoAihBLBA8GgsgASgCKCADEIkBGiAAIAIgBxBxIgoQDA0IIAAgByIIQoCAgIAIWgR+IAi5EBYFIAgLED4iDRAMBEBCgICAgDAhByANIQkMCwsgACABIAIgCiANEOwDIQogACANEAsgChAMDQggCEIBfCEHIAAgAUKAgICAICAKIAoQERsgDBDqA0UNAQwICwtCgICAgDAhB0HdACEGIA9CAVMNBSABKQMYEPQBDQUgASgCKEEKEDwaIAEoAiggDhCJARoMBQsCfiABKQMQIggQEUUEQCAIEA4MAQsgAEKAgICAMEEBIARBCGpBABCWBQsiBxAMDQcgACAEIAcQQA0HIAEoAihB+wAQPBogBCkDACIIQgAgCEIAVRshDQNAIAogDVIEQCAAIAkQCyAAIAcgChBxIgkQDA0JIAAgAiAJEA4iCRCdASIIEAwNCSAAIAEgAiAIIAkQ7AMiCBAMDQkgCBARRQRAIAUEQCABKAIoQSwQPBoLIAAgCRDpAyIJEAwEQCAAIAgQCwwLCyABKAIoIAMQiQEaIAEoAiggCRCJARogASgCKEE6EDwaIAEoAiggCxCJARpBASEFIAAgASAIIAwQ6gMNCgsgCkIBfCEKDAELC0H9ACEGIAVFDQQgASgCGCgCBEH/////B3FFDQQgASgCKEEKEDwaIAEoAiggDhCJARoMBAsgAhBKvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0CQoCAgIAgIQIgBEKAgICAIDcDCAwCCyAAIAIQCwwGCyAEIAAgAhDpAyICNwMIQoCAgIAwIQNCgICAgDAhC0KAgICAMCEHQoCAgIAwIQlCgICAgDAhDCACEAwNBAsgASgCKCACEIoBIQUMBAsgASgCKCAGEDwaQQAhBSAAIAAgASkDCEEAQQBBABCVBRCMAg0CIAAgAhALIAAgBxALIAAgAxALIAAgCxALIAAgDBALIAAgCRALDAMLQoCAgIAwIQcMAQtCgICAgDAhA0KAgICAMCELQoCAgIAwIQdCgICAgDAhDAsgACACEAsgACAHEAsgACADEAsgACALEAsgACAMEAsgACAJEAtBfyEFCyAEQRBqJAAgBQugAgEEfyABQShqEG4gASACpygCICIGLQAQNgI4IAEgBigCFDYCMCABIAAgBi8BKCAEEEsiCCAGLwEqaiAGLwEuakEBEEtBA3QQLiIANgIgIABFBEBBfw8LIAEgAhAONwMYIAMQDiECIAEgCDYCNCABIAQ2AgggASACNwMAIAEgASgCICIHIAhBA3RqIgA2AiQgASAAIAYvASpBA3RqNgI8QQAhACAEQQAgBEEAShshCQNAIAAgCUZFBEAgBSAAQQN0IgdqKQMAEA4hAiAHIAEoAiAiB2ogAjcDACAAQQFqIQAMAQsLIAQgCCAGLwEqaiIAIAAgBEgbIQADfyAAIARGBH9BAAUgByAEQQN0akKAgICAMDcDACAEQQFqIQQMAQsLC4oCAQF/IwBBIGsiBSQAIAUgBDcDGAJAAkACQCADECEEQCAAIANBiwEgA0EAEBMiBBAMBEAgAyEEDAMLIAAgBBA7BEAgACAEIANBASAFQRhqEDYhBCAAIAMQCyAEEAxFDQIMAwsgACAEEAsLIAMhBAsCQCABKQMAIgMQEQRAIAQhAwwBCyAFIAQ3AwggBSAFKQMYNwMAIAAgAyACQQIgBRAjIQMgACAEEAsgAyEEIAMQDA0BCwJAIAMQU0EHaiIBQQ5LDQBBASABdEGBxwFxDQIgAUEGRw0AIAAgAxA7RQ0CCyAAIAMQC0KAgICAMCEDDAELIAAgBBALQoCAgIDgACEDCyAFQSBqJAAgAwu+AgICfwR+IwBBIGsiBCQAQoCAgIDgACEIAkAgACAEQRhqIAAgARApIgkQQA0AAkAgBCkDGCIHQgFTDQAgBEIANwMQIAJBAk4EQCAAIARBEGogAykDCEIAIAcgBxB9DQILAkACQCAJIARBDGogBEEIahCNAkUEQCAEKQMQIQEMAQsgBCkDECIGIAQ1AggiASAGIAFVGyEBIAQoAgwhAgNAIAEgBlIEQCAGpyEFIAZCAXwhBiAAIAMpAwAQDiACIAVBA3RqKQMAEA5BAhDbAUUNAQwDCwsgBCABNwMQCyABIAcgASAHVRshBgNAIAEgBlENAiAAIAkgARBxIgcQDA0DIAFCAXwhASAAIAMpAwAQDiAHQQIQ2wFFDQALC0KBgICAECEIDAELQoCAgIAQIQgLIAAgCRALIARBIGokACAIC/8FAgJ/B34jAEHgAGsiBCQAQoCAgIAwIQcgBEKAgICAMDcDMCAEQoCAgIAwNwMoIARCgICAgDA3AyAgBEKAgICAMDcDGCAEIARByABqNgJAIAQgAEEvEDI3AzggACAEQcgAakEAEEIaIAQgABBOIgY3AyBCgICAgOAAIQkCQAJAIAYQDA0AAkAgACACEDsEQCAEIAI3AxgMAQsgACACEMABIgVBAEgNASAFRQ0AIAQgABBOIgY3AyggBhAMDQEgACAEQQhqIAIQQA0BIAQpAwgiBkIAIAZCAFUbIQsDQCAIIAtRDQEgBCAAIAIgCBBxIgY3AxAgBhAMDQICQAJAAkAgBhAhBEAgBqcvAQZB/v8DcUEERw0CIAQgACAGED4iBjcDECAGEAxFDQEMBgsgBhCLAQRAIAQgACAGED4iBjcDECAGEAxFDQEMBgsgBhCaAUUNAQsgACAEKQMoQQEgBEEQahDtAyIMEAwEQCAAIAYQCwwFCyAAIAwQLQ0AIAAgBCkDKCAKIAYQjAEaIApCAXwhCgwBCyAAIAYQCwsgCEIBfCEIDAALAAsCQCADEA4iBhAhRQ0AAkACQAJAIAanLwEGQXxqDgIAAQILIAAgBhCcASEGDAELIAAgBhA+IQYLIAYQDEUNACAAIAYQCwwBCyAEAn4gBhCLAQRAIAAgBEEEaiAGQQpBABBgDQIgAEHbGiAEKAIEEPwBDAELIAYQmgEEQCAAIAanIgVBACAFKAIEQf////8HcUEKELEBEJkBDAELIAQpAzgQDgsiAjcDMCAAIAYQCyACEAwNACAAED0iBxAMDQAgACAHQS8gARAOIgFBBxAaQQBIDQAgACAEQRhqIAcgARAOIAQpAzgiAhDsAyIBEAwNACABEBEEQEKAgICAMCEJDAELIAAgBEEYaiABIAIQ6gMNACAEKAJAEDghCQwBCyAEKAJAEEULIAAgBxALIAAgBCkDOBALIAAgBCkDMBALIAAgBCkDKBALIAAgBCkDIBALIARB4ABqJAAgCQsNACAAIAEgAiADEKYIC0ABAX8jAEEQayICJAACfyABIAAoAhBHBEAgAiABNgIAIABB7dYAIAIQFEF/DAELIAAQrgELIQAgAkEQaiQAIAAL4QQCBH8CfiMAQRBrIgMkACAAKAIAIQICQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgFBgAFqDgQCAQUDAAsgAUGqf0YNAyABQdsARwRAIAFB+wBHDQVCgICAgCAhBSAAEK4BDQggAhA9IgUQDA0IAkAgACgCECIBQf0ARg0AA0ACQCABQYF/RgRAIAIgACkDIBA6IgENAQwMCyABQYN/Rw0KIAAoAkxFDQogAiAAKAIgEBghAQsCQAJAIAAQrgENACAAQToQ8AMNACAAEPEDIgYQDEUNAQsgAiABEBIMCwsgAiAFIAEgBkEHEBohBCACIAEQEiAEQQBIDQogACgCEEEsRw0BIAAQrgENCiAAKAJMRSAAKAIQIgFB/QBHcg0ACwsgAEH9ABDwAw0IDAkLQoCAgIAgIQUgABCuAQ0HIAIQTiIFEAwNBwJAIAAoAhBB3QBGDQBBACEBA0AgABDxAyIGEAwNCSACIAUgASAGQQcQmwFBAEgNCSAAKAIQQSxHDQEgABCuAQ0JIAFBAWohASAAKAJMRQ0AIAAoAhBB3QBHDQALCyAAQd0AEPADDQcMCAsgACkDIBAOIQUgABCuAQ0GDAcLIAApAyAhBSAAEK4BDQUMBgsgACgCIEF/aiIBQQJLDQEgAUEDdEGA3AFqKQMAIQUgABCuAQ0EDAULIABBvNYAQQAQFAwBCyAAKAI4IQEgAyAAKAIYIgQ2AgQgAyABIARrNgIAIABB1NYAIAMQFAtCgICAgCAhBQwBCyAAQaTWAEEAEBQLIAIgBRALQoCAgIDgACEFCyADQRBqJAAgBQsOACAAKAIQKAKEASkDCAtHAgF/AX4gARAhRQRAQQAPC0F/IQIgACABQcQBIAFBABATIgMQDAR/QX8FIAMQEUUEQCAAIAMQLQ8LIAAgAUEAENkBQQBHCwuuAgIGfwF+IwBB4ABrIgMkAAJAIAIQEUUEQEKAgICA4AAhCSAAIANB3ABqIAIQjwIiB0UNASADKAJcIQgDQCAFIAhHBEACQCAFIAdqLAAAQZl/akEfdyIGQQlLQcsFIAZ2QQFxRXJFBEAgBkECdEHU2wFqKAIAIgYgBHFFDQELIAAgBxA3IABB184AQQAQyQIMBAsgBUEBaiEFIAQgBnIhBAwBCwsgACAHEDcLQoCAgIDgACEJIAAgA0HcAGogASAEQQR2QX9zQQFxEJIEIgVFDQAgA0HYAGogA0EQaiAFIAMoAlwgBCAAENAJIQQgACAFEDcgBEUEQCADIANBEGo2AgAgAEH4zgAgAxDJAgwBCyAAIAQgAygCWBDOAiEJIAAgBBAZCyADQeAAaiQAIAkLDgAgACgCECABIAIQ4wELegIDfwF+IAEpAlQiBUI4hkI4h6dFBEAgASAFQoB+g0IBhDcCVANAIAMgASgCFE4EQEEADwsgACABKAIEIAEoAhAgA0EDdGoiAigCABCoCCIERQRAQX8PCyACIAQ2AgQgA0EBaiEDQX8hAiAAIAQQ9gNBf0oNAAsLIAILcAEBf0HGACECAkACQAJAAkACQAJAAkACQAJAIAEQU0EIag4QBgEHBwcHBwIIAAUDBwcHCAcLQccADwtByAAPCyABpywABUEATg0BC0HFAA8LQRshAiAAIAEQOw0DC0HJAA8LQcoADwtBzAAhAgsgAgvUAwICfwF+IwBBIGsiBiQAAkACQAJAAkACQAJAA0AgAUUNAQJAIAEtAAVBBHFFDQAgACgCECgCRCABLwEGQRhsaigCFCIHRQ0AIAcoAhhFDQAgACABrUKAgICAcIQQDiIIIAIgAyAEIAUgBygCGBE1ACEHIAAgCBALDAYLIAAgBiABIAIQWiIHQQBIDQYCQCAHBEAgBi0AAEEQcUUNASAAQQAgBikDGCIIpyAIEBEbIAQgAyAFEJcDIQcgACAGKQMQEAsgACAGKQMYEAsMCAsgASgCECgCLCEBDAELCyAAIAYpAwgQCyAGLQAAQQJxRQ0BCyAEECFFBEAgACAFQbrLABB2IQcMBQsgACAGIASnIgEgAhBaIgdBAEgNBCAHRQ0CIAYtAABBEHEEQCAAIAYpAxAQCyAAIAYpAxgQCyAAIAMQCyAAIAVB1MsAEHYhBwwFCyAAIAYpAwgQCyAGLQAAQQJxRQ0AIAEvAQZBC0cNAQsgACADEAsgACAFIAIQ3AEhBwwDCyAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABB1IQcMAQsgACABIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQhQQhBwsgACADEAsLIAZBIGokACAHC2MBAn8CQCABQoCAgIBwVA0AIAGnIgMvAQYQ9QFFDQAgAygCIC0AEUEIcUUNACADKAIoIgQEQCAAIAStQoCAgIBwhBALC0EAIQAgAyACQoCAgIBwWgR/IAIQDqcFQQALNgIoCwvGAQEDfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQX5qLwEAIAJHDQAgBEF4aiIFLQAFQQF2QQFxIANHDQAgBSAFKAIAQQFqNgIAIAUPCyAEQQRqIQQMAQsLIABBIBAuIgBFBEBBAA8LIABBATYCACAAIAI7AQYgACAALQAFQfwBcSADQQF0QQJxcjoABSAAQQhqIAYQTSABQRBBFCADG2ooAgAhASAAQoCAgIAwNwMYIAAgASACQQN0ajYCECAAC5ICAgV/AX4jAEEQayIGJAACQCACQv////9vWARAIABBmMgAQQAQFQwBCyAAIAZBDGogAhDYAQ0AIABBASAGKAIMIgUiBEEBIARLG0EDdBBqIgRFDQACQAJAIAKnIgcvAQYiA0EIR0EAIANBAkcbDQAgBy0ABUEIcUUNACAFIAcoAihHDQBBACEDA0AgAyAFRg0CIAQgA0EDdCIAaiAHKAIkIABqKQMAEA43AwAgA0EBaiEDDAALAAtBACEDA0AgAyAFRg0BIAAgAiADEHgiCBAMBEAgACAEIAMQjQNBACEDDAMFIAQgA0EDdGogCDcDACADQQFqIQMMAQsACwALIAEgBTYCACAEIQMLIAZBEGokACADC4YCAgJ/An5CgICAgOAAIQkCQCAAEI4BDQACQAJAIAFCgICAgHBaBEAgAaciBi0ABUEQcUUEQCAAQbbMAEEAEBVCgICAgOAADwsgBUEBciEFIAYvAQYiB0ENRg0CIAAoAhAoAkQgB0EYbGooAhAiBg0BCyAAQY/EAEEAEBVCgICAgOAADwsgACABIAIgAyAEIAUgBhEXAA8LIAYoAiAtABFBBHEEQCAAIAFCgICAgDAgAiADIAQgBRDfAQ8LIAAgAkEBEGwiCBAMDQACQCAAIAEgCCACIAMgBCAFEN8BIgFC/////29YBEAgARAMRQ0BCyAAIAgQCyABDwsgACABEAsgCCEJCyAJC9ABAgF/AX4CQAJAIAAgAaciBC8AEUEDdkEGcUGQxwBqLwEAEKABIgUQDARADAELAkAgACAFIAQgAiADEIQFIgEQDA0AIAAgASAEKAIcIgJBLyACGyAELwEsEJ4DIAQvABEiAkEQcQRAIAAgACgCKEGQA0HAAiACQTBxQTBGG2opAwAQUSIFEAwNASAAIAFBOyAFQQIQGhogAQ8LIAJBAXFFDQIgAUEBEKYDIAAgAUE7QQBBAEECEIgDGiABDwsLIAAgARALQoCAgIDgACEBCyABCw0AIAAgASACEA4QsQULNQECfwJAIABCgICAgHBUDQAgAKciBC8BBkEMRw0AIAQoAiQgAUcNACAELgEqIAJGIQMLIAMLTwEDfyAAKALMASABKAIUIAAoAsABEMoCQQJ0aiECA0AgAiIDKAIAIgRBKGohAiABIARHDQALIAMgASgCKDYCACAAIAAoAsgBQX9qNgLIAQsXACAAKAIgKAIUIAAvAQZBmR5qLQAAdgsYACAAIABBCHZBB3EiAHEgAEF/cyABcXIL2QQBB38jAEEQayIFJAACQAJAA0AgASgCECIEIAQoAhggAnFBf3MiCEECdGooAgAhBkEAIQMgBBAoIQcDQCAGBEAgBSAHIAZBf2oiCUEDdGoiBDYCDCAEKAIAIQYgAiAEKAIERgRAQQAhBCAGQYCAgCBxRQ0FQX8hBCAAIAEgBUEMahDgAQ0FIAEoAhAhAgJAIAMEQCACECggAyAHa0EDdUEAIAMbQQN0aiIDIAMoAgBBgICAYHEgBSgCDCgCAEH///8fcXI2AgAgBSgCDCEDDAELIAhBAnQgAmogBSgCDCIDKAIAQf///x9xNgIAC0EBIQQgAiACKAIkQQFqNgIkIAAoAhAgASgCFCAJQQN0aiIGIAMoAgBBGnYQswUgACAFKAIMKAIEEBIgBSgCDCIDIAMoAgBB////H3E2AgAgBSgCDEEANgIEIAZCgICAgDA3AwAgAigCJCIDQQhIDQUgAyACKAIgQQF2SQ0FIAAgARDbCAwFBSAGQf///x9xIQYgBCEDDAILAAsLQQEhBCABLQAFIgNBBHFFDQIgA0EIcUUNASAAIAVBCGogAhCzAUUNAiAFKAIIIgMgASgCKCIGTw0CIAEvAQYiBEEIRiAEQQJGckUEQEEAIQQMAwsgBkF/aiADRgRAIAAgASgCJCADQQN0aikDABALIAEgAzYCKEEBIQQMAwsgACABEJUDRQ0AC0F/IQQMAQsgACgCECgCRCABLwEGQRhsaigCFCIDRQ0AIAMoAggiA0UNACAAIAGtQoCAgIBwhCACIAMREgAhBAsgBUEQaiQAIAQLkwEBBX8jAEEgayIEJAAgA0EAIANBAEobIQdBACEDA0ACQCADIAdGBEBBACEFDAELIARBADYCGCAEQgA3AxAgBEIANwMIIAQgASADQQxsaiIGKAIENgIMIAQgBigCCDYCECACIANqIQhBfyEFIANBAWohAyAAIAggBEEIaiAGKAIAEMEIQX9KDQELCyAEQSBqJAAgBQv0BAIDfwF+IwBBEGsiCCQAAkACQAJAAkACQCABLQAFIgdBBHFFDQAgAS8BBiIJQQJGBEACQCAHQQhxBEACQCACEF0EQCAIIAIQeSIJNgIMIAkgASgCKEcNASAHQQFxRQ0GIAZBgDBxDQEgBkEAEIIEQQdHDQEgACABIAMQDiAGEIYEIQcMCQsgACAIQQxqIAIQswFFDQQLQX8hByAAIAEQlQNFDQEMBwsgACAIQQxqIAIQswFFDQILIAAgCEEIaiABKAIUIgkpAwAQxQEaIAgoAgxBAWoiByAIKAIITQ0BIAEoAhAQKC0AA0EIcUUEQCAAIAZBMBDcASEHDAYLIAggBzYCCCAAIAkgB0EATgR+IAetBSAHuBAWCxAfDAELIAlBa2pB//8DcUEITQRAIAAgAhCZAyIHRQ0BIAdBAEgNBCAAIAZBhsEAEHYhBwwFCyAGQYCACHENACAAKAIQKAJEIAlBGGxqKAIUIgdFDQAgAa1CgICAgHCEIQogBygCDCIHBEAgACAKIAIgAyAEIAUgBiAHEScAIQcMBQsgACAKEJ4BIgdBAEgNAyAHRQ0BCyABLQAFQQFxDQELIAAgBkGiFxB2IQcMAgsgACABIAIgBkEFcUEQciAGQQdxIAZBgDBxIgIbEH4iAUUNACACBEAgAUEANgIAAkAgBkGAEHFFDQAgACAEEDtFDQAgASAEEA4+AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDtFDQIgASAFEA4+AgQMAgsCQCAGQYDAAHEEQCABIAMQDjcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwvpAQIEfwF+IwBBEGsiBSQAAn8gASgCFCIGKQMAIghC/////w9WIAEoAigiB0EBaiIEIAinTXJFBEAgASgCEBAoLQADQQhxRQRAIAAgAhALIAAgA0EwENwBDAILIAYgBK03AwALAkAgBCABKAIgIgNNBEAgASgCJCEDDAELIAAgASgCJCAEIANBA2xBAXYQSyIGQQN0IAVBDGoQtAEiA0UEQCAAIAIQC0F/DAILIAUoAgwhACABIAM2AiQgASAAQQN2IAZqNgIgCyADIAdBA3RqIAI3AwAgASAENgIoQQELIQEgBUEQaiQAIAELCwAgACABQQEQkQQLOQEBfyABQoCAgIBwVARAQQAPCyABpyICLwEGQSlGBEAgACABEOQIDwsgAiACLQAFQf4BcToABUEBCy4BAX8gAKcpAyAiAEKAgICAcINCgICAgJB/UQR/IACnKAIEQf////8HcQVBAAsLBABBAAsKACAAKAIAQXxxCzMAIAAgAkEBEPoBIgBFBEBCgICAgOAADwsgAEEQaiABIAJBAXQQJBogAK1CgICAgJB/hAsVAQF+IAAgARD5ASECIAAgARALIAILZQICfwF+QQQhAkKAgICAICEEAkACQAJAAkACQAJAIAEQUyIDQQhqDgoDAgUFBQUFBQQBAAsgA0EHRg0DDAQLQQYhAgwCC0EFIQIMAQtBByECCyAAKAIoIAJBA3RqKQMAIQQLIAQLXwEBfCAAKQIEQv//////////P1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBB/////wdxIABBH3YiAHQgAGtBEWq4IAKjoDkDEAsL2gMBBX8CQAJAAkACQAJAAkACQAJAAkAgAS0ABEEPcQ4GAAEEAgMGBQsgACABKAIQIgYgAhEDACAGECghBQNAIAMgBigCIEgEQAJAIAUoAgRFDQAgASgCFCADQQN0aiEEAkACQAJAAkAgBSgCAEEedkEBaw4DAAECAwsgBCgCACIHBEAgACAHIAIRAwALIAQoAgQiBEUNAyAAIAQgAhEDAAwDCyAEKAIAIgQtAAVBAXFFDQIgACAEIAIRAwAMAgsgACAEEIsEIAIRAwAMAQsgACAEKQMAIAIQIgsgA0EBaiEDIAVBCGohBQwBCwsgAS8BBiIDQQFGDQYgACgCRCADQRhsaigCDCIDRQ0GIAAgAa1CgICAgHCEIAIgAxERAA8LA0AgAyABKAI4SARAIAAgASgCNCADQQN0aikDACACECIgA0EBaiEDDAELCyABKAIwIgFFDQUgACABIAIRAwAPCyABLQAFQQFxRQ0FIAAgASgCECkDACACECIPCyABKAIgBEAgACABQShqIAIQ3gMLIAAgASkDECACECIgACABKQMYIAIQIg8LIAEoAiwiAUUNAiAAIAEgAhEDAA8LEAEACyAAIAEgAhD2BwsPC0GzOUGhDUH4K0HIORAAAAuJAgICfwF+IwBBMGsiAyQAQaEZIQRCgICAgOAAIQUCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgARBTQQhqDhAFBgkJCQkKBAABAgMJCQsICQsgAyABPgIAIANBEGpBIEGeGSADEFQaIANBEGohBAwJCyAAQQNBAiABpxsQMiEFDAkLIABBARAyIQUMCAsgAEHFABAyIQUMBwsgACABQQAQkAMiARAMBEAgASEFDAcLIAAgASACEJEEIQUgACABEAsMBgsgAkUNAQsgARAOIQUMBAsgAEG1GUEAEBUMAwsgACABEEpBCkEAQQAQwgIhBQwCC0HVGSEECyAAIAQQciEFCyADQTBqJAAgBQumBAEJfwJAAkACQCACQoCAgIBwg0KAgICAkH9SBEAgACACECwiAhAMRQ0BDAILIAIQDiECCyACpyIKKAIEIgVB/////wdxIQYCQCAFQQBOBEAgCkEQaiEFQQAhAwNAIAQgBkZFBEAgAyAEIAVqLQAAQQd2aiEDIARBAWohBAwBCwsgA0UEQCABRQ0EIAEgBjYCACAFDwsgACADIAZqQQAQ+gEiB0UNAkEAIQMgB0EQaiILIQQDQCADIAZGDQICfyADIAVqLAAAIghBAE4EQCAEIAg6AAAgBEEBagwBCyAEIAhBP3FBgAFyOgABIAQgCEHAAXFBBnZBwAFyOgAAIARBAmoLIQQgA0EBaiEDDAALAAsgACAGQQNsQQAQ+gEiB0UNAUEAIQUgB0EQaiILIQQDQCAFIgggBk4NASAIQQFqIQUgCiAIQQF0ai8BECIJQf8ATQRAIAQgCToAACAEQQFqIQQFAkAgCUGA+ANxQYCwA0cgA3IgBSAGTnINACAKIAVBAXRqLwEQIgxBgPgDcUGAuANHDQAgCUEKdEGA+D9xIAxB/wdxckGAgARqIQkgCEECaiEFCyAEIAkQsAMgBGohBAsMAAsACyAEQQA6AAAgByAEIAdrQXBqQf////8Hca0gBykCBEKAgICAeIOENwIEIAAgAhALIAEEQCABIAcoAgRB/////wdxNgIACyALDwsgAUUEQEEADwtBACEFIAFBADYCAAsgBQslAgF/AX4gACABEDIiAxAMRQRAIAAgAxC4ASECIAAgAxALCyACCz0BAX8gASABKAIAIgJBf2o2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQoAMPCyAAIAEQIAsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDLBUUNACACKAIMIgNBAEgNACAAIAEQlAQgAxCRAQwBCyAAIAFBARDNAgshASACQRBqJAAgAQsMACABIAAoAgwRBAALXAEDfyAAQeABaiEEIAAoAuQBIQMDQCAEIAMiAkcEQCACKAIEIQMCQAJAAkAgAQ4DAgABBAsgAiwATA0DDAELIAIpAkxCIIZCOIenDQILIAAgAkF4ahDNBQwBCwsLwQEBA38CQCACKAIQIgMEfyADBSACENIFDQEgAigCEAsgAigCFCIFayABSQRAIAIgACABIAIoAiQRAAAPCwJAIAIsAEtBAEgEQEEAIQMMAQsgASEEA0AgBCIDRQRAQQAhAwwCCyAAIANBf2oiBGotAABBCkcNAAsgAiAAIAMgAigCJBEAACIEIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABECQaIAIgAigCFCABajYCFCABIANqIQQLIAQLQAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQeiAAIAUpAwA3AwAgACAFKQMINwMIIAVBEGokAAslAQF/IABCADcDcCAAIAAoAggiASAAKAIEa6w3A3ggACABNgJoCxAAIAAgASACQQBB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IAJKGyICQQAgAkEAShshAgNAIAIgBUcEQCAAIAZBCGogAyAFQQN0aikDABBIDQMgBisDCCILvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0CIAZBEGogBSAHakEDdGogC505AwAgBUEBaiEFDAELCyAGQRBqIAgQgQMhCgsgACABIAoQ4wQhCQsgBkHgAGokACAJC3oBAX8CQCABQoCAgIBwVA0AIAGnIgMvAQZBCkcNACAAIAMpAyAQCyADAn4gAr0CfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAIQFgsiATcDICABEA4PCyAAQZD1AEEAEBVCgICAgOAAC4ABAQN/IwBBEGsiBCQAIAQgATcDCCADQQF0IQZBACEDA0ACQAJAIANBAkYNACAAQTdBASADIAZqQQEgBEEIahDiASIBEAxFDQFBfyEFIANBAUcNACAAIAIpAwAQCwsgBEEQaiQAIAUPCyACIANBA3RqIAE3AwAgA0EBaiEDDAALAAtxAQF/IwBBEGsiBCQAIAQgAjcDCCABKAJMIgEQRyAAIAAgAUEgaiADQQN0aikDAEKAgICAMEEBIARBCGoQIxALIAAgASkDEBALIAAgASkDGBALIAAgASkDIBALIAAgASkDKBALIAAgARAZIARBEGokAAvpAwIEfwJ+IAFBCGohAyABQcgAaiEEAkACQAJAA0AgBBDhAw0CIAEoAkwhAgJAAkACfwJAAkACQAJAIAEoAgQOBgACAgUJAQYLIAIoAghFDQIgACABENADDAYLAkACQCACKAIIDgIIAAELIAFBBDYCBCAAIAEgAikDEBCKBw8LIAAgASACKQMQEM8DDwsgAikDEBAOIQYCQCACKAIIIgVBAkcNACABKAIEQQFHDQAgACAGEJABQQEMAgsgASgCRCICIAWtNwMAIAJBeGogBjcDACABIAJBCGo2AkQLQQALIQIgAUEDNgIEIAEgAjYCFAsgACADELkCIgcQDARAIAAQjwEhBiAAIAEQ0AMgACABIAYQzwMgACAGEAsMAgsgB0L/////D1gEQCABKAJEQXhqIgIpAwAhBiACQoCAgIAwNwMAAkACQAJAIAenIgIOAwIAAQQLQQEhAgsgASACNgIEIAAgASAGQQAQ8QIgACAGEAsMAwsgACABIAYQiQcgACAG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IgQgASgCwAJBA3RqIgUgASgChAJqEGoiA0UNASADQQE2AgAgAyADIAVqIgU2AhQgAyABKAKEAiIINgIYIAUgASgCgAIgCBAkGiAAIAEoAoACEBkgAUEANgKAAiADIAEoAnA2AhwgASgCfCIFIAEoAogBIghqQQFIDQYgAS0AbkECcUUNBCABKAJEDQRBACECA0AgAiAFTgRAQQAhAgNAIAIgASgCiAFOBEBBACECA0AgAiABKALAAk4NCiAAIAJBA3QiBSABKALIAmooAgQQEiABKALIAiAFakEANgIEIAJBAWohAgwACwAFIAAgASgCgAEgAkEEdGooAgAQEiACQQFqIQIMAQsACwAFIAAgASgCdCACQQR0aigCABASIAJBAWohAiABKAJ8IQUMAQsACwALQfOVAUGhDUGk/QFBgpYBEAAACwUgASgCdCACQQR0aiIFIAEoAswBIAUoAgRBA3RqIgUoAgQ2AgggBSACNgIEIAJBAWohAgwBCwsgACABEIADQoCAgIDgAAwDCyADIAIgA2oiAjYCICACIAEoAoABIAhBBHQQJBogAygCICABKAKIAUEEdGogASgCdCABKAJ8QQR0ECQaCyADIAEoAnw7ASogAyABKAKIATsBKCADIAEoAowBOwEsIAAgASgCgAEQGSAAIAEoAnQQGQsgAyABKAK4AiICNgI4IAIEQCADIAMgB2oiBTYCNCAFIAEoArQCIAJBA3QQJBoLIAAgASgCtAIQGSABQQA2ArQCIAMgBigCDDsBLgJAIAEtAG5BAnEEQCAAIAEoAuwCEBIgAUH0AmoQogEMAQsgAyADLwARQYAIcjsAESADIAEoAuwCNgJAIAMgASgC8AI2AkQgAyAAIAEoAvQCIAEoAvgCEJkCIgI2AlAgAkUEQCADIAEoAvQCNgJQCyADIAEoAvgCNgJMIAMgASgCjAM2AlQgAyABKAKQAzYCSAsgASgCzAEiAiABQdABakcEQCAAIAIQGQsgAyABKALAAiICNgI8IAIEQCADIAMgBGoiBDYCJCAEIAEoAsgCIAJBA3QQJBoLIAAgASgCyAIQGSABQQA2AsgCIAMgAy8AEUF+cSABLwE0QQFxciICOwARIAMgAS8BOEEBdEECcSACQX1xciICOwARIAMgAS0AbjoAECADIAEvAWBBAnRBBHEgAkF7cXIiAjsAESAD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RQRAIABBEBAuIgUNAiAAIAcQCwtBfyEGIANFDQAgACABKQMAEAsLIAAoAhAgBBDoBCAGDwsgBCAEKAIAQQFqNgIAIAUgBDYCCCAFIAIQDjcDACAHIAUQhwEgACAHQS9BARCeAyABIANBA3RqIAc3AwAgA0EBaiEDDAALAAt0AQN/IAFByABqIQMgASgCTCECA0AgAiADRkUEQCACKAIEIQQgACACKQMQECYgACACKQMYECYgACACKQMgECYgACACKQMoECYgACACECAgBCECDAELCyABKAIEQX5xQQRHBEAgACABQQhqEP4CCyAAIAEQIAsgAQF/IAEgASgCAEF/aiICNgIAIAJFBEAgACABEJwHCwvvAgIEfwF+IwBBMGsiAiQAAkAgACABQShqELkCIgYQDEUEQCACIAEoAmRBeGoiAykDADcDICADQoCAgIAwNwMAIAYQEQRAIAAgACABKQMQQoCAgIAwQQEgAkEgahAjEAsgACACKQMgEAsgACgCECABENIDDAILIAAgBhALQQAhAyAAIAApA1BBASACQSBqQQAQiwIhBiAAIAIpAyAQC0ECIQQCQCAGEAwNACAAIAEgAkEQahCZBwRAIAAgBhALDAELIAJCgICAgDA3AwggAkKAgICAMDcDACAAIAYgAkEQaiACELICIQUgACAGEAsDQCADQQJGRQRAIAAgAkEQaiADQQN0aikDABALIANBAWohAwwBCwsgBUEAR0EBdCEEIAVFIQMLIAMgBEVyDQELIAIgABCPATcDKCAAIAEpAxhCgICAgDBBASACQShqECMhBiAAIAIpAygQCyAAKAIQIAEQ0gMgACAGEAsLIAJBMGokAAu3AgIFfwF+IwBBMGsiBSQAAkAgAUEqEEEiBEUNACAEKAIADQAgACAEQRhqIAIQDiICEB8gBCADQQFqIgY2AgACQCAGQQJHDQAgBCgCFA0AIAAoAhAiBigCkAEiB0UNACAAIAEgAkEAIAYoApQBIAcRMQALIARBBGoiByADQQN0aiIIKAIEIQQgA0EAR61CgICAgBCEIQEDQCAEIAhGRQRAIAQoAgQhBiAFIAQpAwg3AwAgBSAEKQMQNwMIIAQpAxghCSAFIAI3AyAgBSABNwMYIAUgCTcDECAAQS1BBSAFEPwCIAQQRyAAKAIQIAQQswIgBiEEDAELCyAHQQEgA2tB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ASAAELYCC+ICAQJ/IAAoAhAQ8QgCQCAAQTAQLiIDBEAgA0EANgIgIANBADYCGCADQQE6AAUgAyACOwEGIAMgATYCECADIAAgASgCHEEDdBAuIgQ2AhQgBA0BIAAgAxAZCyAAKAIQIAEQnAJCgICAgOAADwsCQAJAAkACQAJAAkACQAJAIAJBf2oOHgcABgQEBAQCBgQGAQYGBgYGBQYGAgICAgICAgICAwYLIANBADYCKCADQgA3AyAgAyADLQAFQQxyOgAFIAEgACgCJEcEfyAAIANBMEEKEH4FIAQLQgA3AwAMBgsgBEKAgICAMDcDAAwFCyADQgA3AiQgAyADLQAFQQxyOgAFDAQLIANCADcCJAwDCyADQoCAgIAwNwMgDAELIANCADcDIAsgACgCECgCRCACQRhsaigCFEUNACADIAMtAAVBBHI6AAULIANBATYCACAAKAIQIANBABC8ASADrUKAgICAcIQLQAAgACABIAJ0IAJrQRFqEOcBIgBFBEBBAA8LIABBADYCDCAAQQE2AgAgACABQf////8HcSACQR90cq03AgQgAAvXAQIBfwF+IwBB0ABrIgMkAAJAAn4gARBdBEAgAyABEHk2AgAgA0EQakHAAEHxDSADEFQaIAAgA0EQahByDAELIAAoAhAiACgCLCABTQ0BAkACQCAAKAI4IgAgAUECdGooAgAiASkCBCIEQoCAgICAgICAQINCgICAgICAgIDAAFENACACRQ0BIASnQYCAgIB4Rw0AIAAoArwBIQELIAGtQoCAgICQf4QQDgwBCyABrUKAgICAgH+EEA4LIQQgA0HQAGokACAEDwtByi9BoQ1BhBhB3y8QAAALCgAgAEEBdEEBcgtoAQF/IAEoAgQhAyAAKAIEQQBOBEAgA0EATgRAIABBEGogAUEQaiACEHQPC0EAIAFBEGogAEEQaiACEIcFaw8LIABBEGohACADQQBOBEAgACABQRBqIAIQhwUPCyAAIAFBEGogAhD8BwsxAQF/IAAoAgQiAkF/TARAIABBEGogAkH/////B3EgARD9Bw8LIABBEGogAiABEMwFC2ACAn8BfiMAQRBrIgIkAAJAIAFBAE4EQCABEJEBIQMMAQsgAiABNgIAIAJBBWpBC0HxDSACEFQaIAAgAkEFahByIgQQDA0AIAAoAhAgBKdBARDNAiEDCyACQRBqJAAgAwvhAQIGfwF+AkAgASgCBCIEQf////8HcSICQX9qQQlLDQACfyAEQX9MBEAgAS8BEAwBCyABLQAQCyIDEEZFDQACfwJAIANBMEYEQEEAIgMgAkEBRw0CGgwBCyACQQEgAkEBSxshBSABQRBqIQYgA0FQaiEDIARBf0ohB0EBIQIDQCACIAVGDQECfyAHRQRAIAEgAkEBdGovARAMAQsgAiAGai0AAAsiBBBGRQ0DIARBUGqsIAOtQgp+fCIIpyEDIAJBAWohAiAIQoCAgIAQVA0ACwwCCyAAIAM2AgBBAQsPC0EACywBAX8DQCABIANGRQRAIAAgA2otAAAgAkGHAmxqIQIgA0EBaiEDDAELCyACC4gCAQJ/IAAgASgCBBASA0AgAiABKAIUTkUEQCAAIAEoAhAgAkEDdGooAgAQEiACQQFqIQIMAQsLIAAgASgCEBAZQQAhAgNAIAIgASgCIEgEQCABKAIcIAJBFGxqIgMoAghFBEAgACgCECADKAIEEPcBCyAAIAMoAhAQEiAAIAMoAgwQEiACQQFqIQIMAQsLIAAgASgCHBAZIAAgASgCKBAZQQAhAgNAIAIgASgCOE5FBEAgACABKAI0IAJBDGxqKAIEEBIgAkEBaiECDAELCyAAIAEoAjQQGSAAIAEpA0AQCyAAIAEpA0gQCyAAIAEpA2AQCyAAIAEpA2gQCyABQQhqEEcgACABEBkLrwICAn8DfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgAykDACIGEGYNACAAIAFBKhBsIgEQDA0AAkAgAEEgEGoiBEUNAEEAIQMgBEEANgIUIARBADYCACAEQQRqIQUDQCADQQJGRQRAIAUgA0EDdGoQbiADQQFqIQMMAQsLIARCgICAgDA3AxggASAEEIcBIAAgAkEQaiABEJAFDQACQCAAIAZCgICAgDBBAiACQRBqECMiCBAMBEAgAiAAEI8BNwMIIAAgAikDGEKAgICAMEEBIAJBCGoQIyEGIAAgAikDCBALIAYQDA0BIAAgBhALCyAAIAgQCyAAIAIpAxAQCyAAIAIpAxgQCyABIQcMAgsgACACKQMQEAsgACACKQMYEAsLIAAgARALCyACQSBqJAAgBwsWACAARQRAQQAPC0GEpwQgADYCAEF/CzMAIAECfyACKAJMQX9MBEAgACABIAIQmAQMAQsgACABIAIQmAQLIgBGBEAPCyAAIAFuGgt/AQN/IwBBEGsiASQAIAFBCjoADwJAIAAoAhAiAkUEQCAAENIFDQEgACgCECECCwJAIAAoAhQiAyACTw0AIAAsAEtBCkYNACAAIANBAWo2AhQgA0EKOgAADAELIAAgAUEPakEBIAAoAiQRAABBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAALQBKIgFBf2ogAXI6AEogACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC5UGAgR/A34jAEGAAWsiBSQAAkACQAJAIAMgBEIAQgAQgAJFDQAgAyAEEP0IIQcgAkIwiKciCEH//wFxIgZB//8BRg0AIAcNAQsgBUEQaiABIAIgAyAEEDMgBSAFKQMQIgEgBSkDGCICIAEgAhDYBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRCAAkEATARAIAEgCiADIAkQgAIEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQYh/aiEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0GIf2ohByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gBCADVK19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBf2oiBiAHSg0ACyAHIQYLAkAgCiAJfSAEIANUrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQX9qIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALiQQCAn8EfgJAIAG9IgZCAYYiBVAgBkL///////////8Ag0KAgICAgICA+P8AVnJFBEAgAL0iB0I0iKdB/w9xIgJB/w9HDQELIAAgAaIiACAAow8LIAdCAYYiBCAFVgRAIAZCNIinQf8PcSEDAn4gAkUEQEEAIQIgB0IMhiIEQgBZBEADQCACQX9qIQIgBEIBhiIEQn9VDQALCyAHQQEgAmuthgwBCyAHQv////////8Hg0KAgICAgICACIQLIQQCfiADRQRAQQAhAyAGQgyGIgVCAFkEQANAIANBf2ohAyAFQgGGIgVCf1UNAAsLIAZBASADa62GDAELIAZC/////////weDQoCAgICAgIAIhAshBiACIANKBEADQAJAIAQgBn0iBUIAUw0AIAUiBEIAUg0AIABEAAAAAAAAAACiDwsgBEIBhiEEIAJBf2oiAiADSg0ACyADIQILAkAgBCAGfSIFQgBTDQAgBSIEQgBSDQAgAEQAAAAAAAAAAKIPCwJAIARC/////////wdWBEAgBCEFDAELA0AgAkF/aiECIARCgICAgICAgARUIQMgBEIBhiIFIQQgAw0ACwsgB0KAgICAgICAgIB/gyEEIAJBAU4EfiAFQoCAgICAgIB4fCACrUI0hoQFIAVBASACa62ICyAEhL8PCyAARAAAAAAAAAAAoiAAIAQgBVEbC6MMAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgMgAWohASAAIANrIgBB+KcEKAIARwRAQfSnBCgCACEEIANB/wFNBEAgACgCCCIEIANBA3YiA0EDdEGMqARqRxogBCAAKAIMIgJGBEBB5KcEQeSnBCgCAEF+IAN3cTYCAAwDCyAEIAI2AgwgAiAENgIIDAILIAAoAhghBgJAIAAgACgCDCICRwRAIAQgACgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgAEEUaiIDKAIAIgQNACAAQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQECQCAAIAAoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAMLIAZBEEEUIAYoAhAgAEYbaiACNgIAIAJFDQILIAIgBjYCGCAAKAIQIgMEQCACIAM2AhAgAyACNgIYCyAAKAIUIgNFDQEgAiADNgIUIAMgAjYCGAwBCyAFKAIEIgJBA3FBA0cNAEHspwQgATYCACAFIAJBfnE2AgQgACABQQFyNgIEIAUgATYCAA8LAkAgBSgCBCICQQJxRQRAIAVB/KcEKAIARgRAQfynBCAANgIAQfCnBEHwpwQoAgAgAWoiATYCACAAIAFBAXI2AgQgAEH4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgADYCAEHspwRB7KcEKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LQfSnBCgCACEDIAJBeHEgAWohAQJAIAJB/wFNBEAgBSgCCCIEIAJBA3YiAkEDdEGMqARqRxogBCAFKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAUoAhghBgJAIAUgBSgCDCICRwRAIAMgBSgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgBUEUaiIDKAIAIgQNACAFQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQfinBCgCAEcNAUHspwQgATYCAA8LIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQf8BTQRAIAFBA3YiAkEDdEGMqARqIQECf0HkpwQoAgAiA0EBIAJ0IgJxRQRAQeSnBCACIANyNgIAIAEMAQsgASgCCAshAyABIAA2AgggAyAANgIMIAAgATYCDCAAIAM2AggPC0EfIQMgAEIANwIQIAFB////B00EQCABQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgMgA0GA4B9qQRB2QQRxIgN0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAIgA3IgBHJrIgJBAXQgASACQRVqdkEBcXJBHGohAwsgACADNgIcIANBAnRBlKoEaiECAkACQEHopwQoAgAiBEEBIAN0IgdxRQRAQeinBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEAQRkgA0EBdmsgA0EfRht0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuFAQECfyAARQRAIAEQnwIPCyABQUBPBEBBhKcEQTA2AgBBAA8LIABBeGpBECABQQtqQXhxIAFBC0kbEIMJIgIEQCACQQhqDwsgARCfAiICRQRAQQAPCyACIABBfEF4IABBfGooAgAiA0EDcRsgA0F4cWoiAyABIAMgAUkbECQaIAAQ/wEgAgvYAwICfwJ+IwBBIGsiAiQAAkAgAUL///////////8AgyIFQoCAgICAgMD/Q3wgBUKAgICAgIDAgLx/fFQEQCABQgSGIABCPIiEIQQgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhBAwCCyAEQoCAgICAgICAQH0hBCAAQoCAgICAgICACIVCAFINASAEQgGDIAR8IQQMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCEEDAELQoCAgICAgID4/wAhBCAFQv///////7//wwBWDQBCACEEIAVCMIinIgNBkfcASQ0AIAJBEGogACABQv///////z+DQoCAgICAgMAAhCIEIANB/4h/ahB7IAIgACAEQYH4ACADaxDPAiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICAgICAf4OEvwuGEQIFfwx+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyELIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQX9qQf3/AU0EQCAHQX9qQf7/AUkNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIAxC////////P1gEQCAFQbABaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQe0EQIAZrIQYgBSkDuAEhCyAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQXFqEHsgBiAIakFwaiEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC1ASAFQYABakIAIAUpA5gBfSAEELUBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtQEgBUHgAGogBEIAIAUpA3h9ELUBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELUBIAVBQGsgBEIAIAUpA1h9ELUBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtQEgBUEgaiAEQgAgBSkDOH0QtQEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC1ASAFIARCACAFKQMYfRC1ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCf3wiDEL/////D4MiBCACQiCIIgp+Ig0gDEIgiCIMIAJC/////w+DIhB+fCICQiCIIAIgDVStQiCGhCAKIAx+fCACQiCGIgogBCAQfnwiAiAKVK18IAIgBCADQhGIQv////8PgyINfiIQIAwgA0IPhkKAgP7/D4MiDn58IgpCIIYiDyAEIA5+fCAPVK0gDCANfiAKIBBUrUIghiAKQiCIhHx8fCIKIAJUrXwgCkIAUq18fSICQv////8PgyINIAR+IhAgDCANfiIOIAQgAkIgiCIPfnwiAkIghnwiDSAQVK0gDCAPfiACIA5UrUIghiACQiCIhHx8IA1CACAKfSICQiCIIgogBH4iECACQv////8PgyIOIAx+fCICQiCGIg8gBCAOfnwgD1StIAogDH4gAiAQVK1CIIYgAkIgiIR8fHwiAiANVK18IAJCfnwiECACVK18Qn98IgpC/////w+DIgIgC0IChiABQj6IhEL/////D4MiBH4iDSABQh6IQv////8PgyIMIApCIIgiCn58Ig4gDVStIA4gEEIgiCINIAtCHohC///v/w+DQoCAEIQiC358Ig8gDlStfCAKIAt+fCACIAt+IhMgBCAKfnwiDiATVK1CIIYgDkIgiIR8IA8gDkIghnwiDiAPVK18IA4gDCANfiITIBBC/////w+DIhAgBH58Ig8gE1StIA8gAiABQgKGQvz///8PgyITfnwiFSAPVK18fCIPIA5UrXwgDyAKIBN+IgogCyAQfnwiCyAEIA1+fCIEIAIgDH58IgJCIIggAiAEVK0gCyAKVK0gBCALVK18fEIghoR8IgsgD1StfCALIBUgDSATfiIEIAwgEH58IgxCIIggDCAEVK1CIIaEfCIEIBVUrSAEIAJCIIZ8IARUrXx8IgQgC1StfCICQv////////8AWARAIAFCMYYgBEL/////D4MiASADQv////8PgyIMfiILQgBSrX1CACALfSIQIARCIIgiCyAMfiIOIAEgA0IgiCIKfnwiDUIghiIPVK19IAJC/////w+DIAx+IAEgEkL/////D4N+fCAKIAt+fCANIA5UrUIghiANQiCIhHwgBCAUQiCIfiADIAJCIIh+fCACIAp+fCALIBJ+fEIghnx9IRIgBkF/aiEGIBAgD30MAQsgBEIhiCEKIAFCMIYgAkI/hiAEQgGIhCIEQv////8PgyIBIANC/////w+DIgx+IgtCAFKtfUIAIAt9Ig0gASADQiCIIgt+IhAgCiACQh+GhCIOQv////8PgyIPIAx+fCIKQiCGIhNUrX0gBCAUQiCIfiADIAJCIYh+fCACQgGIIgIgC358IA4gEn58QiCGIAsgD34gAkL/////D4MgDH58IAEgEkL/////D4N+fCAKIBBUrUIghiAKQiCIhHx8fSESIA0gE30LIQEgBkGAgAFOBEAgEUKAgICAgIDA//8AhCERQgAhAQwBCyAGQf//AGohByAGQYGAf0wEQAJAIAcNACAEIAFCAYYgA1YgEkIBhiABQj+IhCIBIBRWIAEgFFEbrXwiASAEVK0gAkL///////8/g3wiAkKAgICAgIDAAINQDQAgAiARhCERDAILQgAhAQwBCyAEIAFCAYYgA1ogEkIBhiABQj+IhCIBIBRaIAEgFFEbrXwiASAEVK0gAkL///////8/gyAHrUIwhoR8IBGEIRELIAAgATcDACAAIBE3AwggBUHAAWokAA8LIABCADcDACAAQoCAgICAgOD//wAgESACIAOEUBs3AwggBUHAAWokAAvHAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQBBACACQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACAAIAQgBYSEUARAQQAPCyABIAKDQgBZBEAgAEIAVCABIAJTIAEgAlEbDQEgACABIAKFhEIAUg8LIABCAFYgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwsuAgF/AXwjAEEQayIBJAAgASAAEIsJIAEpAwAgASkDCBDXBSECIAFBEGokACACC/ADAgR/AX4CQAJAAkACfyAAKAIEIgEgACgCaEkEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFsLIgFBVWoOAwEAAQALIAFBUGohAgwBCyABQS1GIQQCQAJ/IAAoAgQiASAAKAJoSQRAIAAgAUEBajYCBCABLQAADAELIAAQWwsiAUFQ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FUKAgICA4AAhAQsgAQsDAAELCQAgACABEKYCC0YBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQwwENACACKAIMIgNBfmpBI0kNACAAQea0ARBpQX8hAwsgAkEQaiQAIAMLigECAX8BfiMAQRBrIgIkAAJ+IAAgARCmAiIGEAwEQCAGDAELQQohBQJAAkAgBA0AIAMpAwAiARARDQAgACABEI0GIgVBAEgNAQtCgICAgOAAIAAgAkEIaiAGEFkNARogACACKwMIIAVBAEEAEMICDAELIAAgBhALQoCAgIDgAAshASACQRBqJAAgAQvDAQIBfgF8IwBBEGsiAiQAAkAgACABEKYCIgQQDARAIAQhAQwBC0KAgICA4AAhASAAIAIgBBBZDQACQAJAIAMpAwAiBBARBEAgAisDACEFDAELIAAgAkEMaiAEEMMBDQIgAisDACIFvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0BCyAAIAUQFhA+IQEMAQsgAigCDCIDQX9qQeQATwRAIABBwLQBEGkMAQsgACAFQQogA0EBEMICIQELIAJBEGokACABC58BAgF+AXwjAEEQayICJAACQCAAIAEQpgIiBBAMBEAgBCEBDAELQoCAgIDgACEBIAAgAiAEEFkNACAAIAJBDGogAykDABDDAQ0AIAIoAgwiA0HlAE8EQCAAQcC0ARBpDAELIAIrAwAiBZlEUO/i1uQaS0RmQQFzRQRAIAAgBRAWED4hAQwBCyAAIAVBCiADQQIQwgIhAQsgAkEQaiQAIAELxQEDAX8BfgF8IwBBEGsiAiQAAkAgACABEKYCIgUQDARAIAUhAQwBC0KAgICA4AAhASAAIAIgBRBZDQAgACACQQxqIAMpAwAQwwENACACKwMAIga9QoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgACAGEBYQPiEBDAELAn9BBCADKQMAEBENABogAigCDCIDQeUATwRAIABBwLQBEGkMAgsgA0EBaiEEQQULIQMgACAGQQogBCADEMICIQELIAJBEGokACABC3sBAn9CgICAgDAhAQJAIAJBf2pBAUsNACAAIAMpAwBCgICAgDBCgICAgDAQ7gMiARAMDQAgACABELgBIQQgACABEAsgBEUEQEKAgICA4AAPCyAEIAJBAkYEfyAAIAMpAwgQ9gEFQQALEAYgACAEEDdCgICAgDAhAQsgAQubAgIDfwF+IwBBEGsiBCQAIARBADoAD0KAgICAMCEBAkAgAkF/akEBSw0AAkAgACADKQMAELgBIgVFDQACQCACQQJHDQAgACADKQMIQoCAgIAwQoCAgIAwEO4DIgcQDARAIAAgBRA3IAchAQwDCyAAIAcQuAEhBiAAIAcQCyAGDQAgACAFEDcMAQsgBSAGIARBD2oQByECIAAgBRA3IAAgBhA3IAJFDQECfiAELQAPRQRAIAAgAiACEENBhrMBEO8DDAELAkAgAEEDEKABIgEQDARAQoCAgIAgIQEMAQsgACABQTMgACACEHJBAxAaGgsgACABEJABQoCAgIDgAAshASACEP8BDAELQoCAgIDgACEBCyAEQRBqJAAgAQtWACMAQRBrIgAkACAAQQhqQQAQAhoCfiAANAIMIAA0AghCwIQ9fnwiAUKAgICACHxC/////w9YBEAgAUL/////D4MMAQsgAbkQFgshASAAQRBqJAAgAQvzAQEEfyMAQSBrIgIkACAAIAMpAwAQLCIBEAxFBEAgACACQQhqQQAQQhogAaciBSgCBEH/////B3EhBkEAIQMDQCADIAZORQRAAkAgBSADEDEiBEElRw0AAkAgA0EGaiAGSg0AIAUgA0EBahAxQfUARw0AIAUgA0ECakEEELMDIgRBAEgNACADQQVqIQMMAQtBJSEEIANBA2ogBkoNACAFIANBAWpBAhCzAyIEQSUgBEF/SiIHGyEEIANBAmogAyAHGyEDCyACQQhqIAQQkgEaIANBAWohAwwBCwsgACABEAsgAkEIahA4IQELIAJBIGokACABC7IBAQR/IwBBIGsiAiQAIAAgAykDABAsIgEQDEUEQCAAIAJBCGogAaciBCgCBEH/////B3EQQhogBCgCBEH/////B3EhBkEAIQMDQCADIAZHBEACQCAEIAMQMSIFIgdB/wFMBH9BwLIBIAdBxQAQgQIFQQALBEAgAkEIaiAFEJIBGgwBCyACQQhqIAUQhAILIANBAWohAwwBCwsgACABEAsgAkEIahA4IQELIAJBIGokACABC0sBAX8CQCAAQf8BSg0AQQEhAiAAQVBqQQpJIABBX3FBv39qQRpJcg0AQZiyASAAQQkQgQINAEEAIQIgAQ0AIAAQsgRBAEchAgsgAguqAwEFfyMA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RQ0AIAItABJBBHFFDQAgACACKAJAEDIhAwsgAwsoAEKAgICA4AAgACADKQMAIAEQvQUiAEEAR61CgICAgBCEIABBAEgbC6wBAgJ/AX5CgICAgOAAIQYgACABEGYEfkKAgICA4AAFQdelASECAkAgAaciAy8BBhD1AUUNAAJAIAMoAiAiAy8AESIEQYAIcUUNACADKAJUIgVFDQAgACAFIAMoAkgQ/AEPCyAEQQR2QQNxQX9qIgNBAksNACADQQJ0QZjcAWooAgAhAgsgACACIAAgAUE2IAFBABATIgEQEQR+IABBLxAyBSABC0GNpgEQvQELC/IDAwV/A34DfAJAIAAgARBmDQAgACAAKQMwQQ4QUCIKEAwNACAKpyIGIAEQsgFBBHRBEHEgBi0ABUHvAXFyOgAFAkAgAEEAIAJBf2oQSyICQQN0QRhqEC4iBEUNACAEIAEQDiIBNwMAIAMpAwAQDiEJIAQgAjYCECAEIAk3AwggAkEAIAJBAEobIQcgBEEYaiEIA0AgBSAHRwRAIAggBUEDdGogAyAFQQFqIgVBA3RqKQMAEA43AwAMAQsLIAYgBDYCICAAIAEQ5ggiA0EASA0AAkAgA0UNACAAIAFBMCABQQAQEyIJEAwNASAJQv////8PWARAIAmnIgMgAmtBACADIAJKG60hCwwBCyAJEFNBB0YEQAJAIAkQSiINvUL///////////8Ag0KAgICAgICA+P8AVg0AIA2dIg0gArciDmUNACANIA6hIQwLIAy9An8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgK3vVEEQCACrSELDAILIAwQFiELDAELIAAgCRALCyAAIApBMCALQQEQGhogACABQTYgAUEAEBMiARAMDQAgAEHQpQEgARCaAQR+IAEFIAAgARALIABBLxAyC0G+FRC9ASIBEAwNACAAIApBNiABQQEQGhogCg8LIAAgChALC0KAgICA4AALMAAgAkEATARAIAAgAUKAgICAMEEAQQAQIw8LIAAgASADKQMAIAJBf2ogA0EIahAjC8IBAgF/AX4jAEEgayICJABCgICAgOAAIQYCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQADQCAAIAIgAacgAxBaIgVBAEgNAiAFBEBCgICAgDAhBiACLQAAQRBxBEAgAkEYaiACQRBqIAQbKQMAEA4hBgsgACACEFIMAwsgACABEI0EIgEQDA0CIAEQKgRAQoCAgIAwIQYMAwsgABCOAUUNAAsMAQtBACEDCyAAIAMQEiAAIAEQCyACQSBqJAAgBguVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARAMRQRAIAAgBRBmRQRAIAAgBhA6IgINAgsgACABEAsLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCyAAIAIQEkKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBFFBEAgARAqRQ0BCyAAECdCgICAgOAADwsCQCACECENACACECoNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJgCQQBIGwslAQF+IAAgARApIgEQDARAIAEPCyAAIAEQ+QEhAiAAIAEQCyACC5MBAgF/AX4jAEEgayICJABCgICAgOAAIQUCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQAgACACIAGnIAMQWiIEQQBIDQEgBEUEQEKAgICAECEFDAILIAI1AgAhBSAAIAIQUiAFQgKIQgGDQoCAgIAQhCEFDAELQQAhAwsgACADEBIgACABEAsgAkEgaiQAIAULiAEBAn4gAykDACIFECFFBEBCgICAgBAPCwJAIAAgARApIgQQDEUEQCAEpyECIAUQDiEBA0AgACABEI0EIgEQDEUEQCABECoiAyACIAGnRnINAyAAEI4BRQ0BCwsgACABEAsgACAEEAsLQoCAgIDgAA8LIAAgARALIAAgBBALIANFrUKAgICAEIQLZQEBfkKAgICA4AAhBAJAIAAgAykDABA6IgJFDQAgACABECkiARAMBEAgACACEBIgAQ8LIABBACABpyACEFohAyAAIAIQEiAAIAEQCyADQQBIDQAgA0EAR61CgICAgBCEIQQLIAQLCAAgACABECkLDwAgACABQTdBAEEAELwCC5wCAQV+IwBBEGsiAiQAIAMpAwAhBQJAIAAQPSIBEAwEQCABIQUMAQtCgICAgDAhBwJAAkAgACAFQQAQ8wEiBBAMDQAgACAEQeoAIARBABATIgcQDA0AA0AgACAEIAcgAkEMahCsASIGEAwNASACKAIMBEAgASEFDAMLAkACQCAGECFFBEAgABAnDAELIAAgBkEAEHgiCBAMDQAgACAGQQEQeCIFEAwEQCAAIAgQCwwBCyAAIAEgCCAFQYeAARDDAkF/Sg0BCyAAIAYQCwwCCyAAIAYQCwwACwALQoCAgIDgACEFIAQQIQRAIAAgBEEBELABGgsgByEGIAQhByABIQQLIAAgBhALIAAgBxALIAAgBBALCyACQRBqJAAgBQtIAEEvIQIgACADKQMAIgEQU0F/RgR/IAGnLwEGIgJBKUYEQEENQSkgACABEDsbIQILIAAoAhAoAkQgAkEYbGooAgQFQS8LEDIL8wECBH8BfiMAQTBrIgIkAAJAIAMpAwAiCRAhRQRAQoGAgIAQIQEMAQtCgICAgOAAIQEgACACQSxqIAJBKGogCaciCEEDEI0BDQAgAigCLCEGIAIoAighB0EAIQMCQANAIAMgB0cEQCAAIAJBCGogCCAGIANBA3RqKAIEEFoiBUEASA0CAkAgBUUNACAAIAJBCGoQUiACKAIIIgVBAXFFQQAgBEUgBUECcUVyGw0AQoCAgIAQIQEMAwsgA0EBaiEDDAELCyAAIAkQngEiA0EASA0BIANBAUetQoCAgIAQhCEBCyAAIAYgBxBoCyACQTBqJAAgAQudAQIBfwF+QoCAgIAwIQECQAJAIAAgAykDABApIgUQDA0AIAJBASACQQFKGyEEQQEhAgNAIAIgBEYNAgJAIAMgAkEDdGopAwAiARAqDQAgARARDQAgACABECkiARAMDQIgACAFIAFCgICAgDBBARCoBQ0CIAAgARALCyACQQFqIQIMAAsACyAAIAUQCyAAIAEQC0KAgICA4AAhBQsgBQsbACAAIAMpAwAgAykDCBBYQQBHrUKAgICAEIQLmwICA38DfiMAQSBrIgIkAEKAgICA4AAhByAAIAMpAwAQKSIIEAxFBEBCgICAgDAhAQJ+AkAgACACQRxqIAJBGGogCKdBAxCNAQ0AIAAQPSIBEAwNACACKAIcIQQgAigCGCEFQQAhAwNAIAMgBUcEQCAAIAQgA0EDdGoiBigCBBBkIgkQDA0CIAIgCTcDCCACIAg3AwAgAEKAgICAMEECIAJBABC7BCEHIAAgCRALIAcQDA0CIAcQEUUEQCAAIAEgBigCBCAHQYeAARAaQX9MDQMLIANBAWohAwwBCwsgACAEIAUQaCABDAELIAAgAigCHCACKAIYEGggACAIEAsgASEIQoCAgIDgAAshByAAIAgQCwsgAkEgaiQAIAcLbQACfgJAIAMpAwAiAUL/////b1gEQCAERQ0BIAAQJ0KAgICA4AAPC0KAgICA4AAgACABEIgEIgJBAEgNARogBARAIAJBAEetQoCAgIAQhA8LIAINACAAQaucAUEAEBVCgICAgOAADwsgARAOCwtPAAJAAkAgAykDACIBQv////9vWARAIARFBEBCgICAgBAPCyAAECcMAQsgACABEJ4BIgBBAE4NAQtCgICAgOAADwsgAEEAR61CgICAgBCECxAAIAAgAykDAEECQQAQ9AILEAAgACADKQMAQQFBABD0AgstAQF+QoCAgIDgACEBIAAgAykDACIEIAMpAwgQvQQEfkKAgICA4AAFIAQQDgsLQAACfgJAIAEQnAMiAkUNACACLQAQQQFxDQBCgICAgDAgAi0AEUEBcQ0BGgsgACABQQBBABDCBBpCgICAgOAACwt9AQJ+IAMpAwAiAUL/////b1gEQCAAECdCgICAgOAADwsgAykDECEGQoCAgIDgACEFAkAgACADKQMIEDoiAkUNACAAIAEgAiAGIARFQQ50ELwEIQMgACACEBIgA0EASA0AIAQEQCADQQBHrUKAgICAEIQPCyABEA4hBQsgBQsnACAAIAMpAwAiASADKQMIQQEQmAJBAEgEQEKAgICA4AAPCyABEA4LOAAgAykDACIBQiCIpyICQX9GIARFQQAgAkF+cUECRxtyRQRAIAAQJ0KAgICA4AAPCyAAIAEQ+QELYgEBfgJAIAMpAwAiARAhDQAgARAqDQAgAEHAoQFBABAVQoCAgIDgAA8LAkAgACABEFEiARAMRQRAIAMpAwgiBBARDQEgACABIAQQvQRFDQEgACABEAsLQoCAgIDgAA8LIAELuAEBAn4gARAhRQRAIAAQJ0KAgICA4AAPC0KAgICA4AAhBQJ+IAAgAUE2IAFBABATIgQQEQRAIABBjgEQMgwBCyAAIAQQPgsiBBAMBH5CgICAgOAABQJ+IAAgAUEzIAFBABATIgEQEQRAIABBLxAyDAELIAAgARA+CyIBEAwEQCAAIAQQC0KAgICA4AAPCwJAIAQQ9AENACABEPQBDQAgAEG+FSAEQZCcARC9ASEECyAAIAQgARC/AgsLTgEBfyAA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AgwgAygCCCIEayEGAkACQAJAAkAgAygCBEF/ag4EAAEDAgMLIAIoArAFIARqIAZB/wFxEMEEDAILIAIoArAFIARqIAZB//8DcRD4AgwBCyACKAKwBSAEaiAGEFwLIANBEGohAyAFQQFqIQUgASgC1AIhCQwACwALIAAgASgCzAIQGSABQQA2AswCIAAgASgCpAIQGSABQQA2AqQCIAEQ1QYgACABKALYAhAZIAFBADYC2AIgDRCiASANIAIpA8AFNwIQIA0gAikDuAU3AgggDSACKQOwBTcCACABQQE2AqACQQAgDSgCDEUNFBogABDHAQwTCyAGIAM2AgALIAogAigCsAVqQX9qIAM6AAAgBigCBCIDIAIoArAFIApqaiIEIAQgBWogAigCtAUgBSAKaiADamsQ/QEgAiACKAK0BSAFazYCtAVBACEEIAEoAqwCIgNBACADQQBKGyEHIAEoAqQCIQMDQCAEIAdGBEAgASgC1AIhCSAGIQcgCCEEA0ACQCAEQQFqIgQgCU4EQEEAIQMgASgC4AIiBEEAIARBAEobIQQDQCADIARGDQIgASgC2AIgA0EDdGoiBygCACILIApLBEAgByALIAVrNgIACyADQQFqIQMMAAsACyAHIgNBEGohByADKAIYIgsgCkwNASADIAsgBWs2AhgMAQsLIAxBAWohDAwCCyADKAIMIgkgCkoEQCADIAkgBWs2AgwLIANBFGohAyAEQQFqIQQMAAsACyAGQRBqIQYgCEEBaiEIDAALAAtBnYoBQaENQc32AUGomQEQAAALIAIoApQFIgRBAE4EQCACIAQ2AsgFCyACKAKgBSEFIAIoApAFIQYgAigCmAVBl39qIAhGDQEgASAFQX8QbxogBiEDDAwLIAQhBgwJCyACQX82AoQFIAJBiAVqIAYgASAFIAJBzAVqIAJBhAVqELkDIgcQuAMEQCABIAdBfxBvGiAGIQMMCwsgAigCzAUiBEFYaiIFQQdLQQEgBXRBgwFxRXJFBEAgASAHQX8QbxogASACKAK0BSACKALIBRA0IAJBsAVqIARB/wFxEA8gASAKIAkgBiACQcgFahCpAiEDDAsLQesAIQUMCAsCQCAFQfB+akECTwRAIAVBlwFGDQEgBUG0AUcEQCAFQcABRw0DIAIgBigAATYCyAUgBCEDDAwLIAYoAAEiA0EASA0D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UQRAIAStDAELIAUQFgshASACQdAAaiQAIAELhQEBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQsAINABpCgICAgMB+IAIrAwgiBL1C////////////AINCgICAgICAgPj/AFYNABoCfiAEnSIEmUQAAAAAAADgQ2MEQCAEsAwBC0KAgICAgICAgIB/CxDNA60LIQEgAkEQaiQAIAELdQEBfgJAIAEQIUUEQCAAECcMAQsCQCADKQMAIgQQmgFFDQAgACAEEDoiAkUNASAAIAIQEkERIQMCQAJAAkAgAkG6f2oOAwIDAQALIAJBFkcNAgtBECEDCyAAIAEgAxCQAw8LIABB4PcAQQAQFQtCgICAgOAAC2gBAXwjAEEQayICJAACfkKAgICA4AAgACACQQhqIAEQsAINABogAisDCCIEvQJ/IASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0MAQsgBBAWCyEBIAJBEGokACABC8UBAQF/IARBAXEhBiAFKQMAQTIQQSICKAIEIQUgAykDACEBAkACQAJAIARBAk4EQCAFQX5xQQRHDQIgAkEFNgIEIAYEQCAAIAIgARDPAwwCCyAAIAIgAUEBEPECDAELIAVBA0cNAiACIAY2AhQgARAOIQECQCAGBEAgACABEJABDAELIAIoAkRBeGogATcDAAsgACACEOYEC0KAgICAMA8LQZXpAEGhDUH1mAFB/OkAEAAAC0Gg6gBBoQ1B/pgBQfzpABAAAAuvAQEBfyMAQTBrIgMkACADIAI3AygCQCAAIAApA1BBASADQShqQQAQiwIiAhAMDQAgACABNQIAQoCAgIBwhCADQRBqQQAQ5AQEQCAAIAIQCwwBCyADQoCAgIAwNwMIIANCgICAgDA3AwAgACACIANBEGogAxCyAhogACACEAtBACEBA0AgAUECRg0BIAAgA0EQaiABQQN0aikDABALIAFBAWohAQwACwALIANBMGokAAuMAQEBfyMAQTBrIgMkACADIAI3AyggACAAKQNQQQEgA0EoakEAEIsCIgIQDEUEQCAAIAE1AgBCgICAgHCEIANBARDkBEUEQCADQoCAgIAwNwMYIANCgICAgDA3AxAgACACIAMgA0EQahCyAhogACADKQMAEAsgACADKQMIEAsLIAAgAhALCyADQTBq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AkEQaiQAIAEL8QEBAn4jAEEgayICJAAgAykDACEEAkAgACABQoCAgIAwEO8BIgUQDA0AAkAgACAEEDtFBEAgAiAEEA4iBDcDECACIAQQDjcDGAwBCyACIAQ3AwggAiAFNwMAQQAhAwNAIANBAkYNASACQRBqIANBA3RqIABBMkEBIANBAiACEOIBIgQ3AwAgBBAMBEAgA0EBRgRAIAAgAikDEBALCyAAIAUQC0KAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRALIAAgAUH/AEECIAJBEGoQvAIhBSAAIAIpAxAQCyAAIAIpAxgQCwsgAkEgaiQAIAULOQAjAEEQayICJAAgAkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhC8AiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBnRQ0AIAAgAUKAgICAMBDvASIGEAwEQCAGIQUMAQsgACACIAYQuAIhByAAIAYQCwJAIAcQDA0AIAAgASADIAIQsgIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAsgBEEBaiEEDAELCyADRQ0AIAAgBxALDAELIAchBQsgAkEQaiQAIAULbgICfwF+A0ACQAJAIANBAkYNACACIANBA3RqIAAgACkDMCADQS5qEFAiBTcDACAFEAxFDQFBfyEEIANBAUcNACAAIAIpAwAQCwsgBA8LIAEgASgCAEEBajYCACAFpyABNgIgIANBAWohAwwACwALCABCgICAgDAL3wECAX8DfiMAQRBrIgMkACABQQVGBEAgAikDECEEIAAgAikDGBD2ASEBIAMgAikDICIFNwMIIAMCfiAEEBEEQCAFEA4iBCABRQ0BGiAAIAQQkAFCgICAgOAADAELIAAgBEKAgICAMEEBIANBCGoQIwsiBDcDACAEEAwiAQRAIAMgABCPASIENwMAC0KAgICAMCEFIAAgAiABQQN0aikDACIGEBEEfiAEBSAAIAZCgICAgDBBASADECMhBSADKQMACxALIANBEGokACAFDwtBx+MAQaENQa3oAkHR4wAQAAALJgAgACABENIDIAAgASkDEBAmIAAgASkDGBAmIAEQnQIgACABECALgQEBA38CQCABQTIQQSIERQ0AIARBzABqIQMgBEHIAGohBQNAIAMo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BEAgAkHIAGogAyAGIAmnEFcaIAJByABqIAwQiQEaIAunKQIEQv////8HgyAJfKchBgsgBUEBaiEFDAELCyACQcgAaiADIAYgAygCBEH/////B3EQVxogAkHIAGoQOCERDAILQoCAgIAwIQxCgICAgDAhCkKAgICAMCELCyACQcgAahBFCyACQRBqEPAEIAAgEBALIAAgCxALIAAgChALIAAgDBALIAAgDRALIAAgDhALCyACQZABaiQAIBELkgEAIwBBIGsiAiQAAn4CQCABECFFBEAgABAnDAELIAAgAkEIakEAEEIaIAJBCGpBLxA8GgJAIAJBCGogACABQewAIAFBABATEIoBDQAgAkEIakEvEDwaIAJBCGogACABQe0AIAFBABATEIoBDQAgAkEIahA4DAILIAJBCGoQRQtCgICAgOAACyEBIAJBIGokACABC6YBAQN/IABBAjoAaCAAQdgAaiECIABB4ABqIQMDQCADIAAoAmQiAUcEQCABQXxqLQAAQQ5xBEAgARBHIAEgAhBNDAIFIAAgAUF4ahDCBQwCCwALCyAAQQA6AGggACgCXCEBAkADQCABIAJHBEAgAUF8ai0AAEEOcQ0CIAEoAgQhAyAAIAFBeGoQICADIQEMAQsLIAIQbg8LQf85QaENQYctQeA6EAAACz8BAX5CgICAgOAAIQQgACABIAMpAwAQ1gEiARAMBH5CgICAgOAABSABECohAiAAIAEQCyACRa1CgICAgBCECwuAAgEDfgJAIAAgAUEBENkBIgJFDQAgAykDCCEGAkACQCAAIAMpAwAiBEEAENkBIgMEQCAGEBFFBEAgAEHn0gBBABAVQoCAgIDgAA8LIAM1AgBCgICAgJB/hBAOIQQgAzUCBEKAgICAkH+EEA4hBQwBC0KAgICAMCEFAn4gBBARBEAgAEEvEDIMAQsgACAEECwLIgQQDA0BIAAgBCAGEPQDIgUQDA0BCyAAIAI1AgBCgICAgJB/hBALIAAgAjUCBEKAgICAkH+EEAsgAiAFPgIEIAIgBD4CACAAIAFB1QBCABBJQQBIDQEgARAODwsgACAEEAsgACAFEAsLQoCAgIDgAAtrAQF/IAFC/////29YBEAgABAnQoCAgIDgAA8LAn4gACABQQAQ2QEiA0UEQEKAgICAMCAAIAEgACgCKCkDkAEQWA0BGiAAQRIQkQNCgICAgOAADwsgAiADKAIELQAQcUEAR61CgICAgBCECwvHAwEHfyMAQSBrIgUkAAJAAkACQAJAAkAgAUL/////b1gEQCAAECcMAQsgACABIAAoAigpA5ABEFgNAiAAIAFBARDZASICDQELQoCAgIDgACEBDAMLIAIoAgAiBykCBKciAkH/////B3EiAw0BCyAAQcDSABByIQEMAQsgACAFQQhqIAMgAkEfdhCfAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEDEiA0Glf2oOAwMBAgALIAIhAAJAIANBdmoOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQMSEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQMUHdAEYiAhshAEHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDghAQwDCyACIQBBASEECyAFQQhqIAMQkgEaIAZBAEgNACAFQQhqIAYQkgEaDAALAAsgBUEgaiQAIAEL2AICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAnQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABATEC0iAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBj88AEMUCEC0iA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFBms8AEMUCEC0iA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBpM8AEMUCEC0iA0EASA0AIAMEQCACQfMAOgAAIAJBAWohAgsgACAAIAFB7wAgAUEAEBMQLSIDQQBIDQAgAwRAIAJB9QA6AAAgAkEBaiECCyAAIAAgAUGzzwAQxQIQLSIDQQBIDQAgACAEQQhqIAMEfyACQfkAOgAAIAJBAWoFIAILIARBCGprEPwBIQULIARBEGokACAFC4EBAgJ/AX4jAEEgayIDJABCgICAgOAAIQUCQCAAIANBCGogAhBCDQBBACEAIAJBACACQQBKGyECAkADQCAA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IANBAWohAwwACwALIAAoAgQgACgCCEEBdGpBEGogASACQQF0ECQaCyAAIAAoAgggAmo2AghBACEDCyADC3gCAX8BfgJAIAEQXQ0AQQAgACgCECgCOCABQQJ0aigCACkCBCIDQoCAgICAgICAQINCgICAgICAgICAf1IgA0KAgICA8P///z+DUCADQv//////////v39WcRsNACADp0F/c0EfdkEBIANC/////weDUBshAgsgAgt4AgF/An5CgICAgOAAIQMgACABQeoAIAFBABATIgQQDEUEQCAAQTAQoAEiAxAMBEAgACAEEAsgAw8LIABBEBBqIgJFBEAgACADEAsgACAEEAtCgICAgOAADwsgARAOIQEgAiAENwMIIAIgATcDACADIAIQhwELIAML7wECAn8CfgJAAkAgAikCBCIFp0H/////B3EgASkCBCIGp0H/////B3FqIgNBgICAgARPBEAgAEH0DUEAEEQMAQsgACADIAUgBoSnQR92IgQQ+gEiAA0BC0KAgICA4AAPCwJAIARFBEAgAEEQaiABQRBqIAEoAgRB/////wdxECQiBCABKAIEQf////8HcWogAkEQaiACKAIEQf////8HcRAkGiADIARqQQA6AAAMAQsgAEEQaiIDIAEgASgCBEH/////B3EQ9gQgAyABKAIEQQF0aiACIAIoAgRB/////wdxEPYECyAArUKAgICAkH+EC+ACAgF/An4jAEEgayIFJAACQAJAIAAgAUElEGciAkUNAAJAIAIpAwAiARARRQRAAkACQCABpyIDLwEGQWtqQf//A3FBCE0EQCADEKsBRQ0BIAAQcAwFCyAAIAVBHGogARDYAQ0EIAUoAhwhBgwBCyAFIAMoAigiBjYCHAsgAigCDCIDIAZJDQEgACACKQMAEAsgAkKAgICAMDcDAAsgBEEBNgIAQoCAgIAwIQEMAgsgAiADQQFqNgIMIARBADYCACACKAIIRQRAIANBAE4EQCADrSEBDAMLIAO4EBYhAQwCC0KAgICA4AAhASAAIAIpAwAgAxB4IgcQDA0BIAIoAghBAUYEQCAHIQEMAgsgA0EATgR+IAOtBSADuBAWCyEIIAUgBzcDCCAFIAg3AwAgAEECIAUQhQMhASAAIAcQCyAAIAgQCwwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABC8UE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AkEBaiECIANBCGohAwwBCwsgACABKAIUECAgACAEEJwCIAFCADcDECABKAIYBEAgACABEPcHCyAAKAJEIAEvAQZBGGxqKAIIIgIEQCAAIAGtQoCAgIBwhCACEQ0ACyABQgA3AyAgAUEAOwEGIAFBADYCKCABEJ0CAkAgAC0AaEECRw0AIAEoAgBFDQAgAUEIaiAAQdgAahBNDwsgACABECALmwIBAX8gACABKAIUIAEoAhhBARCGBQJAIAEoAiBFDQADQCACIAEvASogAS8BKGpPDQEgACABKAIgIAJBBHRqKAIAEPIBIAJBAWohAgwACwALQQAhAgNAIAIgASgCOE4EQEEAIQIDQCACIAEoAjxORQRAIAAgASgCJCACQQN0aigCBBDyASACQQFqIQIMAQsLIAEoAjAiAgRAIAIQogMLIAAgASgCHBDyASABLQASQQRxBEAgACABKAJAEPIBIAAgASgCUBAgIAAgASgCVBAgCyABEJ0CAkAgAC0AaEECRw0AIAEoAgBFDQAgAUEIaiAAQdgAahBNDwsgACABECAFIAAgASgCNCACQQN0aikDABAmIAJBAWohAgwBCwsLqAEBB38gAEEBIAF0IgZBAnQQmwIiBQRAIAAoAsQBIgRBACAEQQBKGyEHA0AgAyAHRkUEQCAAKALMASADQQJ0aigCACECA0AgAgRAIAIoAighBCACIAUgAigCFCABEMoCQQJ0aiIIKAIANgIoIAggAjYCACAEIQIMAQsLIANBAWohAwwBCwsgACAAKALMARAgIAAgBTYCzAEgACAGNgLEASAAIAE2AsABCwuFAQECfyABKAIARQRAIAEtABAEQCAAIAEQgAQLIAEoAiwiAgRAIAAgAq1CgICAgHCEECYLQQAhAiABECghAwNAIAIgASgCIE9FBEAgACADKAIEEPIBIAJBAWohAiADQQhqIQMMAQsLIAEQnQIgACABELcCECAPC0HwL0GhDUGtIkGKMBAAAAtEAQJ/IAJBACACQQBKGyEEA0AgAyAERgRAQQAPCyADQQF0IQIgA0EBaiEDIAAgAmovAQAgASACai8BAGsiAkUNAAsgAgsvAQF/A0AgASADRkUEQCAAIANBAXRqLwEAIAJBhwJsaiECIANBAWohAwwBCwsgAgtjAAJAAn8CQCABRQRAIAINAQwDCyACRQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQwDC0EAIAAoAgQgAmogACgCCEsNARogASACENYFDwsgACACEIgFCw8LQQALJgAgAQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEN4DCwscAQF/IAFBKBBBIgIEQCAAIAIQ5gMgACACECALCyUBAX8gAacoAiAiAwRAIAAgAykDACACECIgACADKQMIIAIQIgsLJwEBfyABpygCICICBEAgACACKQMAECYgACACKQMIECYgACACECALCx4BAX8gAacoAiAiAgRAIAAgAikDABAmIAAgAhAgCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDBBUUNACACKAIMIgNFDQAgACADEOADIAIpAwAhAQsgACABECYgACACECALC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECILIAAgAykDGCACECIgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBcGohBCACQXRqKAIARQRAAkAgAygCAARAIAQQiQUMAQsgACACKQMQECYLIAAgAikDGBAmCyAAIAQQICAGIQIMAQsLIAAgAygCEBAgIAAgAxAgCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIgsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEMEFBH4gAhBHIAI1AgxCgICAgHCEBSABCxAmIAAgAhAgCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK0ASIDRQ0AIAAoArwBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEFAAsgACACECALCykBAX8gACABpyICNQIkQoCAgICQf4QQJiAAIAI1AiBCgICAgJB/hBAmCxEAIAAgAacoAiApAwAgAhAiCxkBAX8gACABpygCICICKQMAECYgACACECALQQEDfwJAIAFBDxBBIgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikD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////////////AINCgYCAgICAgPj/AFoEQCAAQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGNBAXNFBEAgAEEtOgAAIABBAWohAAsgAEG8wwAtAAA6AAggAEG0wwApAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiCEL/////////D3xC/v///////x9WIAi5IAFicg0BIAAgBUHWAWogCCACEOkHEOsFDAILRAAAAAAAAAAAIAEgAUQAAAAAAAAAAGEbIQEgBEECRw0AIAAgASADEOgHDAELIAEgAyAFQQhqIAVBDGogBUEQaiAEQQNxQQFGIgcQ5wchBiAFKAIIIQIgBSgCDARAIABBLToAACAAQQFqIQALAkAgBEEEcQ0AIAJBAUggAiADQRUgBxtKckUEQCAGIAJMBEBBACEEIAIgBmsiAkEAIAJBAEobIQIgACAFQRBqIAYQJCAGaiEAA0AgAiAERwRAIABBMDoAACAEQQFqIQQgAEEBaiEADAELCyAAQQA6AAAMAwsgACAFQRBqIAIQJCACaiIEQS46AABBACEAIAYgAmsiA0EAIANBAEobIQMDQCAEQQFqIQQgACADRwRAIAQgBUEQaiAAIAJqai0AADoAACAAQQFqIQAMAQsLIARBADoAAAwCCyACQQVqQQVLDQAgAEGw3AA7AABBACEEQQAgAmsgAkEfdXEhAiAAQQJqIQADQCACIARHBEAgAEEwOgAAIARBAWohBCAAQQFqIQAMAQsLIAAgBUEQaiAGECQgBmpBADoAAAwBCyAAIAUtABA6AAACQCAGQQJIBEAgAEEBaiEEDAELIABBLjoAASAAQQJqIQRBASEAA0AgACAGRg0BIAQgBUEQaiAAai0AADoAACAAQQFqIQAgBEEBaiEEDAALAAsgBEHlADoAACACQX9qIQAgAkEBSAR/IARBAWoFIARBKzoAASAEQQJqCyECIAUgADYCACACIAUQnQkLIAVB4AFqJAALLgAgAEEANgLIASAAQoSAgICAAjcDwAEgACAAQcAAEJsCIgA2AswBQQBBfyAAGwtWAQF8An8gACACEJwBIgIQDARARAAAAAAAAPh/IQNBfwwBCyACEFMiAEEHRwRAIABFBEAgAqe3IQNBAAwCCxABAAsgAhBKIQNBAAshACABIAM5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A2ggASABKQNwIARBAWogAigCHBDhAa18NwNwIAJBKGohAgwBCwsgBUEBaiEFDAELCyABIAtCA3wiETcDICABIAAoAigiBaw3AyggASAAKAIsIgMgACgCJGpBAnStIgs3AzBBACECIANBACADQQBKGyEDA0AgAiADRwRAIAAoAjggAkECdGooAgAiBBDdA0UEQCABIAsgBCgCBCIEQf////8HcSAEQR92IgR0IARrQRFqrXwiCzcDMAsgAkEBaiECDAELCyABAn4gBisDCBCjAyIXmUQAAAAAAADgQ2MEQCAXsAwBC0KAgICAgICAgIB/CyIMNwM4IAECfiAGKwMQEKMDIheZRAAAAAAAAOBDYwRAIBewDAELQoCAgICAgICAgH8LIg03A0AgASAGKQMYIhI3A3ggAQJ+IAYrAyAQowMiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfwsiEzcDgAEgASAGKQMoIhQ3A4gBIAEgBikDMCIVNwOQASABIAYpAzgiFjcDmAEgBisDACEXIAEgASkDcCABKQNgIBYgFCAPIBB8IA18IBN8fHwgC3x8fDcDECABAn4gFxCjAyAFt6AgDLmgIA65oCABKQNouaAgErmgIBW5oCARuaAiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfws3AyAgBkFAayQACw8AIAEgASgCAEEBajYCAAs5AQF/IAEgASgCACICQQFqNgIAIAJFBEAgAUEIaiICEEcgAiAAQdAAahBNIAEgAS0ABEEPcToABAsLVQEBfyABKAIAIgJBAEoEQCABIAJBf2oiAjYCAAJAIAINACABLQAEQfABcUEQRw0AIAFBCGoiARBHIAEgAEHgAGoQTQsPC0HWOUGhDUGaLEHnORAAAAtSAQJ/IABBAToAaCAAQdgAaiECAkADQCACIAAoAlwiAUcEQCABQXhqIgEoAgANAiAAIAEQwgUMAQsLIABBADoAaA8LQcYwQaENQcUqQdgwEAAACyoAIAAoAhRBMGogACgCbEsEQCAAEIoFIAAgACgCFCIAQQF2IABqNgJsCwtaAQF/IAAoAswBIAEQwwUiAiAAKALAARDKAkECdGohAANAAkAgACgCACIARQ0AAkAgACgCFCACRw0AIAAoAiwgAUcNACAAKAIgRQ0BCyAAQShqIQAMAQsL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gMDyA0kNARogABCiAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCiBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAAEOoFCwsFACAAmwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABDnBSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARChBCECIAErAwAgASsDCCACQQFxEOcFIQALIAFBEGokACAAC7wCAwN/A34BfCMAQSBrIgIkACAAvUL///////////8AgyIFIAG9Qv///////////wCDIgYgBSAGVBsiB78hAAJAIAdCNIinIgNB/w9GDQAgBSAGIAUgBlYbIgW/IQECQCAHUA0AIAVCNIinIgRB/w9GDQAgBCADa0HBAE4EQCABIACgIQAMAgsCfCAEQf4LTwRAIABEAAAAAAAAMBSiIQAgAUQAAAAAAAAwFKIhAUQAAAAAAACwawwBC0QAAAAAAADwPyADQbwESw0AGiAARAAAAAAAALBroiEAIAFEAAAAAAAAsGuiIQFEAAAAAAAAMBQLIQggAkEYaiACQRBqIAEQ6QUgAkEIaiACIAAQ6QUgCCACKwMAIAIrAxCgIAIrAwigIAIrAxign6IhAAwBCyABIQALIAJBIGokACAAC60DAgV/AX4gAb1C////////////AINCgICAgICAgPj/AFhBACAAvUL///////////8Ag0KBgICAgICA+P8AVBtFBEAgACABoA8LIAG9IgdCIIinIgJBgIDAgHxqIAenIgVyRQRAIAAQoAQPCyAHQj6Ip0ECcSIGIAC9IgdCP4inciEDAkACQCAHQiCIp0H/////B3EiBCAHp3JFBEACQCADQQJrDgICAAMLRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCAEQYCAwP8HRw0BIANBA3RBkJwEaisDAA8LIARBgIDA/wdHQQAgAkGAgIAgaiAETxtFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCgBAshAAJAAkACQCADDgMF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CwwBC0KAgICAMCEICyACRQ0BCyAIECEEQCAAIAhBARCwARoLIAAgCxALIAAgCBALIAAgChALIAAgARALDAELIAEhDQsgBUEgaiQAIA0LgwIDAn8BfgF8IAC9IgNCIIinQf////8HcSIBQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiECAkAgAUH//z9NBEBBk/H9ywIhAiAARAAAAAAAAFBDor0iA0IgiKdB/////wdxIgFFDQELIAAgA0KAgICAgICAgIB/gyABQQNuIAJqrUIghoS/IgQgBKIgBCAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIASivUKAgICACHxCgICAgHyDvyIAIACioyIEIAChIAAgAKAgBKCjIACiIACgIQALIAALsgEDAX8BfgF8IAC9IgJC////////////AIO/IQACQCACQjSIp0H/D3EiAUGZCE8EQCAAENECRO85+v5CLuY/oCEADAELIAFBgAhPBEAgACAAoEQAAAAAAADwPyAAIACiRAAAAAAAAPA/oJ8gAKCjoBDRAiEADAELIAFB5QdJDQAgACAAoiIDIANEAAAAAAAA8D+gn0QAAAAAAADwP6CjIACgEKQDIQALIAAgAJogAkJ/VRsLyAEBAX8CQAJAIAAgAXNBA3ENACABQQNxBEADQCAAIAEtAAAiAjoAACACRQ0DIABBAWohACABQQFqIgFBA3ENAAsLIAEoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENAANAIAAgAjYCACABKAIEIQIgAEEEaiEAIAFBBGohASACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLIAAgAS0AACICOgAAIAJFDQADQCAAIAEtAAEiAjoAASAAQQFqIQAgAUEBaiEBIAINAAsLC9kBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUgAiABQf8BcUZyDQMgAEEBaiIAQQNxDQALCwJAIAAoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENACADQYGChAhsIQMDQCACIANzIgJBf3MgAkH//ft3anFBgIGChHhxDQEgACgCBCECIABBBGohACACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLA0AgACICLQAA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QdHJAEEAEBVCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBAOBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQLCIEEAwEfkKAgICA4AAFIAAgBKdBAhDkAwsLSQIBfwF+IAAgARCwBCIBEAwEQCABDwtCgICAgDAhAyABpyICKAIEQYCAgIB4RwRAIAAgACgCECACEMwCEDIhAwsgACABEAsgAwsJACAAIAEQsAQLQAEBfiAAIAMpAwAQ9gFBAEetQoCAgIAQhCEEIAEQEQRAIAQPCyAAIAFBBhBsIgEQDEUEQCAAIAEgBBDoAQsgAQtOAQF+IwBBEGsiAiQAIAIgACABELAEIgE3AwgCQCABEAwEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQhgYhBCAAIAEQCwsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQmAIiAEEAR61CgICAgBCEIABBAEgbC4sBAQR+IAMpAxAhBiADKQMIIQcgAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQUCQCAAIAcQOiICRQ0AIAAgAacgAiAGEA4gBEEAEPgDIQMgACACEBIgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAECdCgICAgOAADwsgACABQQNBABD0AgtjAQF+IAMpAwAiBEL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOiICRQ0AIAAgBCACEHchAyAAIAIQEiADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQJwwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA6IgINAQtCgICAgOAADwsgACABIAIgBEEAEBMhASAAIAIQEiABC2YBAX4gAykDACIEQv////9vWARAIAAQJ0KAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA6IgJFDQAgACAEIAJBABDaASEDIAAgAhASIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuLAQIBfwJ+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gIAEaiEDDAILIAAgBGotABAhAwsgBCECCyABIAI2AgAgAwvZAgICfwJ+IwBBIGsiAiQAQoCAgIDgACEHAkAgACABEF8iARAMDQAgACACQQhqQQcQQhogAkEIakE8EDwaIAJBCGogBEEDdCIFQcDCAWooAgAiBhCIARpBnj0gBHZBAXFFBEAgAkEIakEgEDwaIAJBCGogBUHEwgFqKAIAEIgBGiACQQhqQcHDARCIARogACADKQMAEF8iCBAMBEAgACABEAsgAkEIahBFDAILIAinIQNBACEEA0AgBCADKAIEQf////8HcU9FBEACQCADIAQQMSIFQSJGBEAgAkEIakHEwwEQiAEaDAELIAJBCGogBRCSARoLIARBAWohBAwBCwsgACAIEAsgAkEIakEiEDwaCyACQQhqQT4QPBogAkEIaiABEIoBGiACQQhqQcvDARCIARogAkEIaiAGEIgBGiACQQhqQT4QPBogAkEIahA4IQcLIAJBIGokACAHC4oBAQJ/IwBBEGsiAiQAIAIgATYCDANAIAAgAkEMahCmCiIDEPUFDQALAkAgAxD3BUUEQEEAIQMMAQtBASEDIAIgAUEBaiIBNgIMA0AgASAAKAIEQf////8HcU4NASAAIAJBDGoQ1wEiARD1BQRAIAIoAgwhAQwBCwsgARD3BUUhAwsgAkEQaiQAIAMLogIBA38jAEEwayICJAACQCAAIAEQXyIBEAwNACABpyIFKAIEQf////8HcSIDRQ0AAkAgACACQRhqIAMQQg0AQQAhAyACQQA2AhQDQAJAIAMgBSgCBEH/////B3FIBEACQAJAIARFIAUgAkEUahDXASIDQaMHR3INACAFIAIoAhRBf2oQqApFDQAgAkHCBzYCCEEBIQYMAQsgAkEIaiADIAQQpgQiBkEBTg0AQQAhBgtBACEDA0AgAyAGRg0CIANBAnQhByADQQFqIQMgAkEYaiAHIAJBCGpqKAIAEL4BRQ0ACwwDCyAAIAEQCyACQRhqEDghAQwDCyACKAIUIQMMAAsACyAAIAEQCyACQRhqEEVCgICAgOAAIQELIAJBMGokACABC1oBAX5CgICAgOAAIQQgACABEF8iARAMBH5CgICAgOAABSAAIAMpAwAQLCIEEAwEQCAAIAEQC0KAgICA4AAPCyABpyAEpxCUAiECIAAgARALIAAgBBAL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dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wGwLgAAgC8AAEAwAACgMAAA8DAAAEAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0L8jBjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdABzdHJpbmcgZXhwZWN0ZWQAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB2YWx1ZSBpcyBub3QgaXRlcmFibGUAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQBKU19OZXdTeW1ib2xGcm9tQXRvbQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAbm90IGEgc3ltYm9sAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAWwBdAGdldCAAc2V0IABwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBwYXJlbnQgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIG51bGwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGpzX29wX2RlZmluZV9jbGFzcwByZWNlaXZlciBpcyBub3QgYW4gb2JqZWN0AHNldHRlciBpcyBmb3JiaWRkZW4AaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AaW52YWxpZCAnaW4nIG9wZXJhbmQAbm90IGEgY29uc3RydWN0b3IAICAgIGF0ICVzADolZAA8YW5vbnltb3VzPgAgKCVzACAobmF0aXZlKQBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAC4ALi4AYnl0ZWNvZGUgZnVuY3Rpb24gZXhwZWN0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAGNpcmN1bGFyIHJlZmVyZW5jZQBnZXQgJXMAc2V0ICVzAGNhbm5vdCBjb252ZXJ0IHRvIG9iamVjdABub3JtYWxpemUAQbDOAAv1ARknAAADAAAAAAAAAHQAAABiYWQgbm9ybWFsaXphdGlvbiBmb3JtAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzACVzAGZsYWdzAHNvdXJjZQBnbG9iYWwAaWdub3JlQ2FzZQBtdWx0aWxpbmUAZG90QWxsAHVuaWNvZGUAc3RpY2t5AGV4ZWMAY29tcGlsZQB0ZXN0AHRvU3RyaW5nAFtTeW1ib2wucmVwbGFjZV0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wuc3BsaXRdAEGw0AAL4AN7JwAAAQEAAHUAAAAAAAAAgScAAAEBAAB2AAAAAAAAAIgnAAABAgEAdwAAAAAAAACPJwAAAQICAHcAAAAAAAAAmicAAAECBAB3AAAAAAAAAKQnAAABAggAdwAAAAAAAACrJwAAAQIQAHcAAAAAAAAAsycAAAECIAB3AAAAAAAAALonAAADAAAAAQAAADAAAAC/JwAAAwAAAAIAAAB4AAAAxycAAAMAAAABAAAAeQAAAMwnAAADAAAAAAAAAHoAAADVJwAAAwAAAAIAAAB7AAAA5icAAAMAAAABAAAAfAAAAPUnAAADAAAAAQAAAH0AAAAHKAAAAwAAAAEAAAB+AAAAFygAAAMAAAACAAAAfwAAACg/OikAb3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFJlZ0V4cCBleGVjIG1ldGhvZCBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbABub3QgYSBzdHJpbmcAeQBbU3ltYm9sLnNwZWNpZXNdAL8pAAABAQAAgAAAAAAAAABuZXh0AFtTeW1ib2wudG9TdHJpbmdUYWddAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAQaDUAAvXCuApAAADAAAAAAwAAIEAAADlKQAAAQMAAPopAAAAAAAAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudAB1bmV4cGVjdGVkIGNoYXJhY3RlcgBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAZXhwZWN0aW5nIHByb3BlcnR5IG5hbWUAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAGV4cGVjdGluZyAnJWMnACAAXHUlMDR4AEFycmF5IGxvbyBsb25nAEpTT04AAAAAAAAAAJQrAAADCAAAwCsAAAMAAABwYXJzZQBzdHJpbmdpZnkAsCsAAAMAAAACAAAAggAAALYrAAADAAAAAwAAAIMAAADlKQAAAQMAAJQrAAAAAAAAcHJveHk6IGluY29uc2lzdGVudCBpc0V4dGVuc2libGUAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBwcm94eTogaW5jb25zaXN0ZW50IGdldE93blByb3BlcnR5RGVzY3JpcHRvcgBpbnZhbGlkIGdldHRlcgBpbnZhbGlkIHNldHRlcgBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBwcm94eTogZHVwbGljYXRlIHByb3BlcnR5AHByb3h5OiB0YXJnZXQgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50IGluIHByb3h5IG93bktleXMAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGRlZmluZVByb3BlcnR5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IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24Acy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwAA5SkAAAEDAABCDgAAAAAAAHZhbHVlT2YAW1N5bWJvbC50b1ByaW1pdGl2ZV0AdG9VVENTdHJpbmcAdG9HTVRTdHJpbmcAdG9JU09TdHJpbmcAdG9EYXRlU3RyaW5nAHRvVGltZVN0cmluZwB0b0xvY2FsZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAGdldFRpbWV6b25lT2Zmc2V0AGdldFRpbWUAZ2V0WWVhcgBnZXRGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBnZXRNb250aABnZXRVVENNb250aABnZXREYXRlAGdldFVUQ0RhdGUAZ2V0SG91cnMAZ2V0VVRDSG91cnMAZ2V0TWludXRlcwBnZXRVVENNaW51dGVzAGdldFNlY29uZHMAZ2V0VVRDU2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAZ2V0VVRDTWlsbGlzZWNvbmRzAGdldERheQBnZXRVVENEYXkAc2V0VGltZQBzZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAHNldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBzZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAc2V0SG91cnMAc2V0VVRDSG91cnMAc2V0RGF0ZQBzZXRVVENEYXRlAHNldE1vbnRoAHNldFVUQ01vbnRoAHNldFllYXIAc2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAdG9KU09OAEGg7wALtgZgNQAAAwAAAAAAAACXAAAAzCcAAAMAEwAAAQAAmAAAAGg1AAADAAAAAQAAAJkAAAB9NQAAAwADAAABAACYAAAAiTUAAAMJAAB9NQAA/////5U1AAADACMAAAEAAJgAAAChNQAAAwARAAABAACYAAAArjUAAAMAEgAAAQAAmAAAALs1AAADADMAAAEAAJgAAADKNQAAAwAxAAABAACYAAAA3TUAAAMAMgAAAQAAmAAAAPA1AAADAAAAAAAAAJoAAAACNgAAAwAAAAAAAACXAAAACjYAAAMAAQEAAQAAmwAAABI2AAADAAEAAAEAAJsAAAAeNgAAAwAAAAABAACbAAAALTYAAAMAEQAAAQAAmwAAADY2AAADABAAAAEAAJsAAABCNgAAAwAhAAABAACbAAAASjYAAAMAIAAAAQAAmwAAAFU2AAADADEAAAEAAJsAAABeNgAAAwAwAAABAACbAAAAajYAAAMAQQAAAQAAmwAAAHU2AAADAEAAAAEAAJsAAACDNgAAAwBRAAABAACbAAAAjjYAAAMAUAAAAQAAmwAAAJw2AAADAGEAAAEAAJsAAACsNgAAAwBgAAABAACbAAAAvzYAAAMAcQAAAQAAmwAAAMY2AAADAHAAAAEAAJsAAADQNgAAAwAAAAEAAACcAAAA2DYAAAMAcQYBAQAAnQAAAOg2AAADAHAGAQEAAJ0AAAD7NgAAAwBxBQIBAACdAAAABjcAAAMAcAUCAQAAnQAAABQ3AAADAHEEAwEAAJ0AAAAfNwAAAwBwBAMBAACdAAAALTcAAAMAcQMEAQAAnQAAADY3AAADAHADBAEAAJ0AAABCNwAAAwAxAgEBAACdAAAASjcAAAMAMAIBAQAAnQAAAFU3AAADADEBAgEAAJ0AAABeNwAAAwAwAQIBAACdAAAAajcAAAMAAAABAAAAngAAAHI3AAADADEAAwEAAJ0AAAB+NwAAAwAwAAMBAACdAAAAjTcAAAMAAAABAAAAnwAAAG5vdCBhIERhdGUgb2JqZWN0AERhdGUgdmFsdWUgaXMgTmFOAEludmFsaWQgRGF0ZQAlLjNzLCAlMDJkICUuM3MgJTAqZCAAQeD1AAsVU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGA9gALogFKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMAJS4zcyAlLjNzICUwMmQgJTAqZAAlMDRkACUrMDdkAC0lMDJkLSUwMmRUACUwMmQvJTAyZC8lMCpkACUwMmQ6JTAyZDolMDJkIEdNVAAlMDJkJTAyZAAlMDJkOiUwMmQ6JTAyZC4lMDNkWgAlMDJkOiUwMmQ6JTAyZCAlY00AQbD3AAtkHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAaW52YWxpZCBoaW50AG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAbm93AFVUQwBBoPgAC7AsDTwAAAMAAAAAAAAAoAAAALArAAADAAAAAQAAAKEAAAARPAAAAwAAAAcAAACiAAAAc2YgIT0gTlVMTABfX0pTX0V2YWxJbnRlcm5hbABKU19WQUxVRV9HRVRfVEFHKHNmLT5jdXJfZnVuYykgPT0gSlNfVEFHX09CSkVDVABqc19jbGFzc19oYXNfYnl0ZWNvZGUocC0+Y2xhc3NfaWQpAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIG51bWJlciBsaXRlcmFsACUuKnMAdXNlIHN0cmljdAB1c2Ugc3RyaXAAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAGZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQB0b28gbWFueSBhcmd1bWVudHMAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACguLi5hKXtzdXBlciguLi5hKTt9ACgpe30AZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAHlpZWxkIGluIGRlZmF1bHQgZXhwcmVzc2lvbgCam5ydnqChoq2ur59jYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAYXdhaXQgaW4gZGVmYXVsdCBleHByZXNzaW9uAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9kZQBjYW5ub3QgZGVsZXRlIGEgcHJpdmF0ZSBjbGFzcyBmaWVsZABpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AHVwZGF0ZV9sYWJlbABscy0+cmVmX2NvdW50ID49IDAAaW52YWxpZCBwcm9wZXJ0eSBuYW1lAGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHB1dF9sdmFsdWUAc2V0X29iamVjdF9uYW1lACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGlkZW50aWZpZXIgZXhwZWN0ZWQAaW52YWxpZCBleHBvcnQgc3ludGF4AGZyb20gY2xhdXNlIGV4cGVjdGVkACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAGV4cGVjdGluZyAnYXMnAGludmFsaWQgaW1wb3J0IGJpbmRpbmcAZHVwbGljYXRlIGltcG9ydCBiaW5kaW5nAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAHJldHVybiBub3QgaW4gYSBmdW5jdGlvbgBsaW5lIHRlcm1pbmF0b3Igbm90IGFsbG93ZWQgYWZ0ZXIgdGhyb3cAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAGR1cGxpY2F0ZSBkZWZhdWx0AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBpbnZhbGlkIGtleXdvcmQ6IHdpdGgAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAYSBkZWNsYXJhdGlvbiBpbiB0aGUgaGVhZCBvZiBhIGZvci0lcyBsb29wIGNhbid0IGhhdmUgYW4gaW5pdGlhbGl6ZXIAb2YAaW4AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AY29udGludWUgbXVzdCBiZSBpbnNpZGUgbG9vcABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABicmVhay9jb250aW51ZSBsYWJlbCBub3QgZm91bmQAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAY3Bvb2xfaWR4ID49IDAAanNfY3JlYXRlX2Z1bmN0aW9uAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABhZGRfZXZhbF92YXJpYWJsZXMAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdAByZXNvbHZlX3ZhcmlhYmxlcwBsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AGJjX2J1Zltwb3NdID09IE9QX2xhYmVsAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgB2YXJfa2luZCAhPSBKU19WQVJfTk9STUFMAHJlc29sdmVfc2NvcGVfcHJpdmF0ZV9maWVsZAB2YXJfa2luZCA9PSBKU19WQVJfUFJJVkFURV9TRVRURVIAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABza2lwX2RlYWRfY29kZQByZXNvbHZlX2xhYmVscwBscy0+YWRkciA9PSAtMQBkaWZmID09IChpbnQxNl90KWRpZmYAZGlmZiA9PSAoaW50OF90KWRpZmYAbGFiZWxfc2xvdHNbaV0uZmlyc3RfcmVsb2MgPT0gTlVMTABmaW5kX2p1bXBfdGFyZ2V0AGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpAGJ5dGVjb2RlIGJ1ZmZlciBvdmVyZmxvdyAob3A9JWQsIHBjPSVkKQBzdGFjayB1bmRlcmZsb3cgKG9w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ZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA0HEAAJBvAADgcQAAAQAwADoAQeDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBsOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEvABYBLxgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNADNpTQALhUzEB4lMwgeJTMAHjU0CE41NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB/AZqgfzEoAIIBKBSCMSRYggEkbIIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9ABB4PIBC+MDAQCcBgdNAwQQAI8LAAARAAgAU0pRAFIAUwA6VFUAV1k/XVwARmFjQmQAZgBoAGoAbABuAABAAAAAABoAkwAAIDUAJwAhACQiKgATa20AJiQnFBYYGxw+Hj8fOT0iIUEeQCUlJiggKkksQy5LMEwyREKZAACVj31+g4QSgIJ2dxJ7o3x4eYqSmKaghQCaoZN1M5UAjgB0mZiXlgAAngCcAKGgFS4vMLS1TqqpEhQeISIiKjQ1pqc2H0oAAJcBWtodNgUAxMPGxcjHysnMy8TVRdZC10bYztDS1NrZ7vb+DgcPgJ8AIYCj7QDAQMZg59vmmcAAAAZg3Cn9FRIGFvjdBhUShAjGFv/fA8BAAEZg3uBtNzg5FRQXFgAaGRwbAF+3ZURHAE9iTlAAAEgAAACjpKUAAAAAALYAAFoASABbVlhgXnBpb00AADtnuAAARaiKi4yrrFhYr5Swb7JcW15dYF9iYWRjZmVoZwAAAAAAAACZAwgDAQOlAxMDAANCA5EDlwOpA0YASQBMAFMAaQAHA7wCTgBKAAwDNQVSBUgAMQNUAFcACgNZAEEAvgIIH4AfKB+QH2gfoB+6H4YDsx/KH4kDwx+hA/ofjwPzH0QFRgU7BU4FPQW4A2IESqZgHskDawDlAEHQ9gELwgFAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBXdvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmIDHgkM0ogaAjGEoltSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdZY5mFmYWZAAAAALkC4KAeQJ6mQLrUAYnXAYrxAQBBoPgBC7QFpgWAioCiAIDGAwADAYFB9kC/GRiICIBA+oZAzgSAsKwAAQEAq4CKhYmKAKKAiZSPgOQ4iQOgAICdmtqKuYoYCJeXqoL2r7YAAzsChomBjICOgLkDH4CTgZkBgbgDCwkSgJ0KgIqBuAMgC4CTgZUogLkBAB8GgYqBnYC8gIuAsQKAuBQQHoGKgZyAuQEFBIGTgZuBuAsfgJOBnIDHBhCA2QGGiojhAYiIAIXJgZoAAIC2jQQBhIqAo4iA5RgoCYGYC4KPg4wBDYCOgN2AQl+CQ7GCnIKcgZ2Bvwg3AYoQIKyDs4DAgaGA9ROBiAWCQNoJgLkAMAABPYkIpgeQvoOvACAEgKeIi4GfGQiCtwAKAIK5OYG/hdEQjAYYKBGxvoyAod4EQbwAgoqCjIKMgoyBiyeBiQEBhLAgiQCMgI+MsqBLioHwgvyAjoDfn66AQdSAoxokgNyF3IJgbxWAROGFQQ2A4RiJAJuDz4GNoc2AloLsDwIDgJgMgECWgZmRjIClh5iKrYKvARmBkICUgcEpCYGLB4CigIqAsgARDAiAmoCNDAiA44SIgvgBA4BgTy+AQJKPQj2PEIuPoQGAQKgGBYCKgKIAgK6ArIHCgJSCQgCAQOGAQJSERoUQDIOnE4BApIFCPINBgoFAmIpAr4C1jreCsBkJgI6AsYKjIIe9gIuBs4iJGYDeEQANgECfAoeUgbgKgKQyhEDCORCAloDTKAMIgUDtHQiBmoHUOQCB6QABKIDkERiEQQKIAUD/CAOAQI8ZC4CfiacpH4CIKYKtjAFBlTAogNGVDgEB+SoACDCAxwoAgEFagVU6iGA2toS6hoiDRAqAvpC/CIFgTLcIg1TCgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEQQSNQa2DRd+G7IdKroRsDACAnd//QO8AQeD9AQtCvgUA/gcAUgogBQwgOw5AYRBADxggQxtgeR0A8SAADaZALqkg3qoAD/8g5wpBghEhxBRhRBkBSB0hpLwBPuEB8AEOAEGw/gELlQjAmYWZroCJAwSWgJ6AQcmDi40mAIBAgCAJGAUAEACTgNKAQIqHQKWApQiFqMaaG6yqogjiAI4OgYkRgI8AnZzYioCXoIgLBJUYiAKAlpiGirSUgJG7tRCRBomOjx8JgZUGABMQj4CMCIKNgYkHKwmVBgEBAZ4YgJKCj4gCgJUGAQQQkYCOgZaAijkJlQYBBBCdCIKOgJAAKhAaCAAKChKLlYCzOBCWgI8QmRSBnQM4EJaAiQQQnwCBjoGQiAKAqAiPBBeClyyRgpeAiAAOua8Bi4a5CAAglwCAiQGIASCAlIOfgL44o5qE8qqTgI8rGgIOE4yLgJClACCBqoBBTAMOAAOBqAOBoAMOAAOBjoC4A4HCpI+P1Q2CQmuBkICZhMqCioaMA42RjZGNjAKOs6IDgMLYhqgAhMWJnrCdDIqrg5m1loi00YDcrpCGtp2MgYmrmaOogomjgYiGqgqoGCgKBEC/v0EVDYGlDQ8AAACAnoG0BgASBhMNg4wiBvOAjICPjOQDAYkADSgAAICPCyQYkKhKdq6AroBAhCsRi6UAIIG3MI+WiDAwMDAwMDCGQiWCmIg0DIPVHIDZA4SqgN2Qn6+PQf9Zv79gUfyCRIzCrYFBDIKPiYGTro+egc+miIHmgbSBiKmMAgOAlpyzjbG9KgCBipuJlpichq6bgI8giYkgqJYQh5OWEIKxABEMCACXEYoyiykphYgwMKqAjYXynGAro4uWg7BgIQNBbYHppYaLJACJgIwEAAEBgOugQWqRv4G1p4vzIECGo5mFmYrYFQ0NCqKLgJmAkgGAjoGNofrEtEEKnIKwrp+MnYSliZ2Box8EqUCdkaODo4Onh7NAm0E2iJWJh0CXKQCrARCBlomWiJ7AkgGJlYmZxbcpv4COGBCcqZyCnKI4m5q1iZWJkoyR7ci2soyyjKNBW6kpzZyJB5XplJqWi7TKrJ+YmaOcAQeiEIuvjYOUAICikYCY0zAAGI6AiYaupTkJlQYBBBCRgIuEQJ20kYOTgp2vkwiAQLeuqIOjr5OAuqqMgMaaQOSr87+eOQE4CJeOAIDdOaaPAICbgImnMJSAiq2SgKG4QQaIgKSQgLCd7zAIpZSAmCgIn42AQUaSQLyAzkOZ5e6QQMNKu0QuT9BCRmAhuEI4hp7wnZGvj4OelISSQq+//8ogwYy/CICbV/eHRNWpiGAi9kEesIKQH0GLSQPqhIyCiIaJV2XUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHSTOsiYaPgEFwq0UTQMS6wzBEsxiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEgJBRQ2Cm3aFQNIpA3YFWgY1dMEweQh1F4VNKAEHQhgILY/YDIKYHAKkJALQKALoLAD4NAOAOIFcSAOsWAMoZIMAdYIAgAC4tAMAxIImnIPCpAOOrAD79APsAITcHYQEKAR0PISwSAcgUIdEZIUcdATlqIQmNAbzUAanXITruAd6mIksTAwBBwIcCC/IEr4mkgNaAQkfvloBA+oRBCKwAAQEAx4qvnijkMSkIGYmWgJ2a2oqOiaCIiICXGIgCBKqC9o6AoLUQkQaJCYmQgrcAMQmCiICJCYmNAYK3ACMJEoCTixCKgrcAOBCCkwmJiSiCtwAxCRaCiQmJkYC6IhCDiICNiY+EuDAQHoGKCYmQgrcAMBAegYoJiY+DtggwEIOIgIkJiZCCxQMoAD2JCbwBhos4idYBiIopib0NiYoAAAOBsJMBhIqAo4iA45OAiYsbEBEyg4yLgI5CvoKIiEOfgpyCnIGdgb+fiAGJoBGJQI6A9YuDi4mJ/4q7hLiJgJyBioWJlY0BvoSukIqJkIiLgp2MgYmrja+Th4mFifUQlBgoCkDFuQRCPoGSgPqMGIKLS/2CQIyA359CKYXogWB1hInEA4mfgc+BQQ8CA4CWI4DSgbGRiYmFkYyKm4eYjKuDro2OiYqAiYmujYsHCYmggrEAEQwIgKgkgUDrOAmJYE8jgELgj4+PEZeCQL+JpIBCvIBA4YBAlIRBJIlFVhAMg6cTgECkgUI8H4lBcIFAmIpAroK0jp6JjoOsirSJKqONgIkhq4CLgq+NO4CL0YsoQJ+LhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSINgS2iJQIWEuoaYiUP0ALYz0ICKgWBMqoFUxSIvOYadg0CTgkWIsUH/toOxOI2AlSCORU8wkA4BBEEEhoiJQaGNRdWG7DSJUpWJbAUFQO8AQcCMAgujEvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEHwngILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHAB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YXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEHwvgILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFu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jVR1Hw1bdR+NYXUfDWh1H41udR8NdXUfjXt1Hw2CdR+NiHUfDY91H42VdR8NnHUfjaJ1AwGpdZ8IqnWBQK51n4OudYFAsHWfjLB1gcC2dS0Dt3WfiLh1gcC8dZ8DvXWBwL51nwy/dYFAxXUtg8V1nwjHdYFAy3Wfg8t1gUDNdZ+MzXWBwNN1LQPUdZ+I1XWBwNl1nwPadYHA23WfDNx1gUDidS2D4nWfCOR1gUDodZ+D6HWBQOp1n4zqdYHA8HUtBPF1H4XzdR8F9nUfhfh1HwX7dR+F/XUtAoB7rU2BewNCiHuBwIl7LUWKewMEjXuBgJB7A9yRey0FoHutyKJ7g0Soe63IqnuXAEB8IUVAfCUNRHyHgEp8FcFKfBdBS3wfDUx8F4JSfJmAU3yXwFN8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCr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";if(!T(U)){var ka=U;U=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){try{if(v)return new Uint8Array(v);var a=U;if(T(a))try{var c=ma(a.slice(37)),d=new Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting base64 string to bytes failed.");}else e=void 0;var f=e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function na(){return v||"function"!==typeof fetch?Promise.resolve().then(la):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return la();});}function V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 0===c.A?P.get(d)():P.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function oa(a){var c=ca(a)+1,d=K(c);D(a,E,d,c);return d;}function pa(){}var qa=[null,[],[]];function ra(){function a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!sa){sa=!0;var c=new Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var f=e.getTimezoneOffset(),g=Math.max(c,f);M[ta()>>2]=60*g;M[ua()>>2]=Number(c!=f);d=a(d);e=a(e);d=da(d);e=da(e);f<c?(M[X()>>2]=d,M[X()+4>>2]=e):(M[X()>>2]=e,M[X()+4>>2]=d);}}var sa;pa=(a,c,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return e?oa(e):null;}catch(e){return b.HEAPU8[d]=1,oa(e.message);}};var ma="function"===typeof atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return c;};fa.push({B:function(){va();}});var wa={b:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},c:function(){w();},i:pa,h:function(a,c){a=H(a);let d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},f:function(a,c,d){E.copyWithin(a,c,c+d);},g:function(){w("OOM");},e:function(a,c,d,e){for(var f=0,g=0;g<d;g++){for(var k=M[c+8*g>>2],m=M[c+(8*g+4)>>2],z=0;z<m;z++){var l=E[k+z],p=qa[a];0===l||10===l?((1===a?aa:u)(ba(p,0)),p.length=0):p.push(l);}f+=m;}M[e>>2]=f;return 0;},d:function(a){var c=Date.now();M[a>>2]=c/1E3|0;M[a+4>>2]=c%1E3*1E3|0;return 0;},j:function(a,c){ra();a=new Date(1E3*M[a>>2]);M[c>>2]=a.getSeconds();M[c+4>>2]=a.getMinutes();M[c+8>>2]=a.getHours();M[c+12>>2]=a.getDate();M[c+16>>2]=a.getMonth();M[c+20>>2]=a.getFullYear()-1900;M[c+24>>2]=a.getDay();var d=new Date(a.getFullYear(),0,1);M[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;M[c+36>>2]=-(60*a.getTimezoneOffset());var e=new Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;M[c+32>>2]=a;a=M[X()+(a?4:0)>>2];M[c+40>>2]=a;return c;},k:function(a){a=H(a);window.console.log(a);},a:x,l:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: ${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function a(f){b.asm=f.exports;P=b.asm.m;Q--;b.monitorRunDependencies&&b.monitorRunDependencies(Q);0==Q&&(null!==R&&(clearInterval(R),R=null),S&&(f=S,S=null,f()));}function c(f){a(f.instance);}function d(f){return na().then(function(g){return WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: "+g);w(g);});}var e={a:wa};Q++;b.monitorRunDependencies&&b.monitorRunDependencies(Q);if(b.instantiateWasm)try{return b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: "+f),!1;}(function(){return v||"function"!==typeof WebAssembly.instantiateStreaming||T(U)||"function"!==typeof fetch?d(c):fetch(U,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(n);return{};})();var va=b.___wasm_call_ctors=function(){return(va=b.___wasm_call_ctors=b.asm.n).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.o).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.p).apply(null,arguments);};b._init=function(){return(b._init=b.asm.q).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.r).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.s).apply(null,arguments);};var K=b._malloc=function(){return(K=b._malloc=b.asm.t).apply(null,arguments);},X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},ua=b.__get_daylight=function(){return(ua=b.__get_daylight=b.asm.v).apply(null,arguments);},ta=b.__get_timezone=function(){return(ta=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return B(a,c,d,arguments,e);};};var Y;S=function xa(){Y||Z();Y||(S=xa);};function Z(){function a(){if(!Y&&(Y=!0,b.calledRun=!0,!y)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();ia.unshift(c);}V(ia);}}if(!(0<Q)){if(b.preRun)for("function"==typeof b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<Q||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.pop()();noExitRuntime=!0;Z();return Module.ready;};}();var _default=Module;exports.default=_default; + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports) => { + + + +class SandboxSupportBase { + constructor(win) { + this.win = win; + this.timeoutIds = new Map(); + this.commFun = null; + } + + destroy() { + this.commFunc = null; + this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id)); + this.timeoutIds = null; + } + + exportValueToSandbox(val) { + throw new Error("Not implemented"); + } + + importValueFromSandbox(val) { + throw new Error("Not implemented"); + } + + createErrorForSandbox(errorMessage) { + throw new Error("Not implemented"); + } + + callSandboxFunction(name, args) { + try { + args = this.exportValueToSandbox(args); + this.commFun(name, args); + } catch (e) { + this.win.console.error(e); + } + } + + createSandboxExternals() { + const externals = { + setTimeout: (callbackId, nMilliseconds) => { + if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") { + return; + } + + const id = this.win.setTimeout(() => { + this.timeoutIds.delete(callbackId); + this.callSandboxFunction("timeoutCb", { + callbackId, + interval: false + }); + }, nMilliseconds); + this.timeoutIds.set(callbackId, id); + }, + clearTimeout: id => { + this.win.clearTimeout(this.timeoutIds.get(id)); + this.timeoutIds.delete(id); + }, + setInterval: (callbackId, nMilliseconds) => { + if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") { + return; + } + + const id = this.win.setInterval(() => { + this.callSandboxFunction("timeoutCb", { + callbackId, + interval: true + }); + }, nMilliseconds); + this.timeoutIds.set(callbackId, id); + }, + clearInterval: id => { + this.win.clearInterval(this.timeoutIds.get(id)); + this.timeoutIds.delete(id); + }, + alert: cMsg => { + if (typeof cMsg !== "string") { + return; + } + + this.win.alert(cMsg); + }, + prompt: (cQuestion, cDefault) => { + if (typeof cQuestion !== "string" || typeof cDefault !== "string") { + return null; + } + + return this.win.prompt(cQuestion, cDefault); + }, + parseURL: cUrl => { + const url = new this.win.URL(cUrl); + const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", "protocol", "search", "searchParams", "username"]; + return Object.fromEntries(props.map(name => [name, url[name].toString()])); + }, + send: data => { + if (!data) { + return; + } + + const event = new this.win.CustomEvent("updatefromsandbox", { + detail: this.importValueFromSandbox(data) + }); + this.win.dispatchEvent(event); + } + }; + Object.setPrototypeOf(externals, null); + return (name, args) => { + try { + const result = externals[name](...args); + return this.exportValueToSandbox(result); + } catch (error) { + throw this.createErrorForSandbox(error?.toString() ?? ""); + } + }; + } + +} + +{ + exports.SandboxSupportBase = SandboxSupportBase; +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __w_pdfjs_require__(0); +/******/ })() +; +}); +//# sourceMappingURL=pdf.sandbox.js.map
\ No newline at end of file diff --git a/third-party/pdfjs/build/pdf.worker.js b/third-party/pdfjs/build/pdf.worker.js index 58bdf7c19..9589a7121 100644 --- a/third-party/pdfjs/build/pdf.worker.js +++ b/third-party/pdfjs/build/pdf.worker.js @@ -30,125 +30,39 @@ else root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory(); })(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __w_pdfjs_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __w_pdfjs_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __w_pdfjs_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __w_pdfjs_require__.d = function(exports, name, getter) { -/******/ if(!__w_pdfjs_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __w_pdfjs_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __w_pdfjs_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __w_pdfjs_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __w_pdfjs_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __w_pdfjs_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __w_pdfjs_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __w_pdfjs_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ /* 0 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -Object.defineProperty(exports, "WorkerMessageHandler", { +})); +Object.defineProperty(exports, "WorkerMessageHandler", ({ enumerable: true, get: function () { return _worker.WorkerMessageHandler; } -}); +})); var _worker = __w_pdfjs_require__(1); -const pdfjsVersion = '2.6.347'; -const pdfjsBuild = '3be9c65f'; +const pdfjsVersion = '2.7.570'; +const pdfjsBuild = 'f2c7338b0'; /***/ }), /* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.WorkerMessageHandler = exports.WorkerTask = void 0; +})); +exports.WorkerTask = exports.WorkerMessageHandler = void 0; var _util = __w_pdfjs_require__(2); @@ -156,13 +70,13 @@ var _primitives = __w_pdfjs_require__(5); var _pdf_manager = __w_pdfjs_require__(6); -var _writer = __w_pdfjs_require__(27); +var _writer = __w_pdfjs_require__(46); var _is_node = __w_pdfjs_require__(4); -var _message_handler = __w_pdfjs_require__(46); +var _message_handler = __w_pdfjs_require__(48); -var _worker_stream = __w_pdfjs_require__(47); +var _worker_stream = __w_pdfjs_require__(49); var _core_utils = __w_pdfjs_require__(8); @@ -231,7 +145,7 @@ class WorkerMessageHandler { var WorkerTasks = []; const verbosity = (0, _util.getVerbosityLevel)(); const apiVersion = docParams.apiVersion; - const workerVersion = '2.6.347'; + const workerVersion = '2.7.570'; if (apiVersion !== workerVersion) { throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); @@ -247,8 +161,8 @@ class WorkerMessageHandler { throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + enumerableProperties.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s."); } - if (typeof ReadableStream === "undefined" || typeof Promise.allSettled === "undefined") { - throw new Error("The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. " + "`ReadableStream` and/or `Promise.allSettled`); " + "please use an ES5-compatible build instead."); + if (typeof ReadableStream === "undefined") { + throw new Error("The browser/environment lacks native support for critical " + "functionality used by the PDF.js library (e.g. `ReadableStream`); " + "please use an `es5`-build instead."); } var docId = docParams.docId; @@ -530,6 +444,16 @@ class WorkerMessageHandler { handler.on("GetJavaScript", function wphSetupGetJavaScript(data) { return pdfManager.ensureCatalog("javaScript"); }); + handler.on("GetDocJSActions", function wphSetupGetDocJSActions(data) { + return pdfManager.ensureCatalog("jsActions"); + }); + handler.on("GetPageJSActions", function ({ + pageIndex + }) { + return pdfManager.getPage(pageIndex).then(function (page) { + return page.jsActions; + }); + }); handler.on("GetOutline", function wphSetupGetOutline(data) { return pdfManager.ensureCatalog("documentOutline"); }); @@ -542,6 +466,9 @@ class WorkerMessageHandler { handler.on("GetMetadata", function wphSetupGetMetadata(data) { return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata")]); }); + handler.on("GetMarkInfo", function wphSetupGetMarkInfo(data) { + return pdfManager.ensureCatalog("markInfo"); + }); handler.on("GetData", function wphSetupGetData(data) { pdfManager.requestLoadedStream(); return pdfManager.onLoadedStream().then(function (stream) { @@ -559,23 +486,34 @@ class WorkerMessageHandler { return page.getAnnotationsData(intent); }); }); + handler.on("GetFieldObjects", function (data) { + return pdfManager.ensureDoc("fieldObjects"); + }); + handler.on("HasJSActions", function (data) { + return pdfManager.ensureDoc("hasJSActions"); + }); + handler.on("GetCalculationOrderIds", function (data) { + return pdfManager.ensureDoc("calculationOrderIds"); + }); handler.on("SaveDocument", function ({ numPages, annotationStorage, filename }) { pdfManager.requestLoadedStream(); - const promises = [pdfManager.onLoadedStream()]; - const document = pdfManager.pdfDocument; + const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")]; for (let pageIndex = 0; pageIndex < numPages; pageIndex++) { promises.push(pdfManager.getPage(pageIndex).then(function (page) { const task = new WorkerTask(`Save: page ${pageIndex}`); - return page.save(handler, task, annotationStorage); + startWorkerTask(task); + return page.save(handler, task, annotationStorage).finally(function () { + finishWorkerTask(task); + }); })); } - return Promise.all(promises).then(([stream, ...refs]) => { + return Promise.all(promises).then(function ([stream, acroForm, xref, startXRef, ...refs]) { let newRefs = []; for (const ref of refs) { @@ -586,18 +524,29 @@ class WorkerMessageHandler { return stream.bytes; } - const xref = document.xref; + const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || []; + let xfaDatasets = null; + + if (Array.isArray(xfa)) { + for (let i = 0, ii = xfa.length; i < ii; i += 2) { + if (xfa[i] === "datasets") { + xfaDatasets = xfa[i + 1]; + } + } + } else { + (0, _util.warn)("Unsupported XFA type."); + } + let newXrefInfo = Object.create(null); if (xref.trailer) { - const _info = Object.create(null); - + const infoObj = Object.create(null); const xrefInfo = xref.trailer.get("Info") || null; - if (xrefInfo) { + if (xrefInfo instanceof _primitives.Dict) { xrefInfo.forEach((key, value) => { if ((0, _util.isString)(key) && (0, _util.isString)(value)) { - _info[key] = (0, _util.stringToPDFString)(value); + infoObj[key] = (0, _util.stringToPDFString)(value); } }); } @@ -607,15 +556,21 @@ class WorkerMessageHandler { encrypt: xref.trailer.getRaw("Encrypt") || null, newRef: xref.getNewRef(), infoRef: xref.trailer.getRaw("Info") || null, - info: _info, + info: infoObj, fileIds: xref.trailer.getRaw("ID") || null, - startXRef: document.startXRef, + startXRef, filename }; } xref.resetNewRef(); - return (0, _writer.incrementalUpdate)(stream.bytes, newXrefInfo, newRefs); + return (0, _writer.incrementalUpdate)({ + originalData: stream.bytes, + xrefInfo: newXrefInfo, + newRefs, + xref, + datasetsRef: xfaDatasets + }); }); }); handler.on("GetOperatorList", function wphSetupRenderPage(data, sink) { @@ -652,7 +607,7 @@ class WorkerMessageHandler { sink.error(reason); }); }); - }, this); + }); handler.on("GetTextContent", function wphExtractText(data, sink) { var pageIndex = data.pageIndex; @@ -748,41 +703,45 @@ if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "unde /***/ }), /* 2 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.arrayByteLength = arrayByteLength; exports.arraysToBytes = arraysToBytes; exports.assert = assert; exports.bytesToString = bytesToString; exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.encodeToXmlString = encodeToXmlString; exports.escapeString = escapeString; exports.getModificationDate = getModificationDate; exports.getVerbosityLevel = getVerbosityLevel; exports.info = info; exports.isArrayBuffer = isArrayBuffer; exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; exports.isBool = isBool; exports.isNum = isNum; -exports.isString = isString; exports.isSameOrigin = isSameOrigin; -exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.isString = isString; +exports.objectFromEntries = objectFromEntries; +exports.objectSize = objectSize; exports.removeNullCharacters = removeNullCharacters; exports.setVerbosityLevel = setVerbosityLevel; exports.shadow = shadow; exports.string32 = string32; exports.stringToBytes = stringToBytes; exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; exports.utf8StringToString = utf8StringToString; exports.warn = warn; -exports.unreachable = unreachable; -exports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0; +exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; __w_pdfjs_require__(3); @@ -915,6 +874,36 @@ const AnnotationBorderStyleType = { UNDERLINE: 5 }; exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; const StreamType = { UNKNOWN: "UNKNOWN", FLATE: "FLATE", @@ -1323,6 +1312,14 @@ function string32(value) { return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); } +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromEntries(iterable) { + return Object.assign(Object.create(null), Object.fromEntries(iterable)); +} + function isLittleEndian() { const buffer8 = new Uint8Array(4); buffer8[0] = 1; @@ -1354,14 +1351,11 @@ const IsEvalSupportedCached = { }; exports.IsEvalSupportedCached = IsEvalSupportedCached; -const rgbBuf = ["rgb(", 0, ",", 0, ",", 0, ")"]; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); class Util { - static makeCssRgb(r, g, b) { - rgbBuf[1] = r; - rgbBuf[3] = g; - rgbBuf[5] = b; - return rgbBuf.join(""); + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; } static transform(m1, m2) { @@ -1483,7 +1477,31 @@ function stringToPDFString(str) { } function escapeString(str) { - return str.replace(/([\(\)\\])/g, "\\$1"); + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff)); + buf.push(String.fromCharCode(char & 0xff)); + } + + return buf.join(""); } function stringToUTF8String(str) { @@ -1520,8 +1538,8 @@ function isArrayEqual(arr1, arr2) { }); } -function getModificationDate(date = new Date(Date.now())) { - const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), (date.getUTCDate() + 1).toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; return buffer.join(""); } @@ -1576,12 +1594,62 @@ const createObjectURL = function createObjectURLClosure() { }(); exports.createObjectURL = createObjectURL; +const XMLEntities = { + 0x3c: "<", + 0x3e: ">", + 0x26: "&", + 0x22: """, + 0x27: "'" +}; + +function encodeToXmlString(str) { + const buffer = []; + let start = 0; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.codePointAt(i); + + if (0x20 <= char && char <= 0x7e) { + const entity = XMLEntities[char]; + + if (entity) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(entity); + start = i + 1; + } + } else { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(`&#x${char.toString(16).toUpperCase()};`); + + if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) { + i++; + } + + start = i + 1; + } + } + + if (buffer.length === 0) { + return str; + } + + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + + return buffer.join(""); +} /***/ }), /* 3 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { -"use strict"; var _is_node = __w_pdfjs_require__(4); @@ -1590,37 +1658,35 @@ var _is_node = __w_pdfjs_require__(4); /***/ }), /* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.isNodeJS = void 0; const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); exports.isNodeJS = isNodeJS; /***/ }), /* 5 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.clearPrimitiveCaches = clearPrimitiveCaches; -exports.isEOF = isEOF; exports.isCmd = isCmd; exports.isDict = isDict; +exports.isEOF = isEOF; exports.isName = isName; exports.isRef = isRef; exports.isRefsEqual = isRefsEqual; exports.isStream = isStream; -exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = void 0; +exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd = void 0; var _util = __w_pdfjs_require__(2); @@ -1772,7 +1838,16 @@ var Dict = function DictClosure() { } } }; - Dict.empty = new Dict(null); + + Dict.empty = function () { + const emptyDict = new Dict(null); + + emptyDict.set = (key, value) => { + (0, _util.unreachable)("Should not call `set` on the empty dictionary."); + }; + + return emptyDict; + }(); Dict.merge = function ({ xref, @@ -1884,8 +1959,8 @@ var Ref = function RefClosure() { exports.Ref = Ref; class RefSet { - constructor() { - this._set = new Set(); + constructor(parent = null) { + this._set = new Set(parent && parent._set); } has(ref) { @@ -1900,6 +1975,16 @@ class RefSet { this._set.delete(ref.toString()); } + forEach(callback) { + for (const ref of this._set.values()) { + callback(ref); + } + } + + clear() { + this._set.clear(); + } + } exports.RefSet = RefSet; @@ -1981,14 +2066,13 @@ function clearPrimitiveCaches() { /***/ }), /* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.NetworkPdfManager = exports.LocalPdfManager = void 0; var _util = __w_pdfjs_require__(2); @@ -2188,14 +2272,13 @@ exports.NetworkPdfManager = NetworkPdfManager; /***/ }), /* 7 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.ChunkedStreamManager = exports.ChunkedStream = void 0; var _util = __w_pdfjs_require__(2); @@ -2815,26 +2898,31 @@ exports.ChunkedStreamManager = ChunkedStreamManager; /***/ }), /* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.getLookupTableFactory = getLookupTableFactory; +})); +exports.collectActions = collectActions; +exports.escapePDFName = escapePDFName; +exports.getArrayLookupTableFactory = getArrayLookupTableFactory; exports.getInheritableProperty = getInheritableProperty; -exports.toRomanNumerals = toRomanNumerals; +exports.getLookupTableFactory = getLookupTableFactory; +exports.isWhiteSpace = isWhiteSpace; exports.log2 = log2; +exports.parseXFAPath = parseXFAPath; exports.readInt8 = readInt8; exports.readUint16 = readUint16; exports.readUint32 = readUint32; -exports.isWhiteSpace = isWhiteSpace; +exports.toRomanNumerals = toRomanNumerals; exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0; var _util = __w_pdfjs_require__(2); +var _primitives = __w_pdfjs_require__(5); + function getLookupTableFactory(initializer) { let lookup; return function () { @@ -2848,6 +2936,25 @@ function getLookupTableFactory(initializer) { }; } +function getArrayLookupTableFactory(initializer) { + let lookup; + return function () { + if (initializer) { + let arr = initializer(); + initializer = null; + lookup = Object.create(null); + + for (let i = 0, ii = arr.length; i < ii; i += 2) { + lookup[arr[i]] = arr[i + 1]; + } + + arr = null; + } + + return lookup; + }; +} + class MissingDataException extends _util.BaseException { constructor(begin, end) { super(`Missing data [${begin}, ${end})`); @@ -2950,16 +3057,149 @@ function isWhiteSpace(ch) { return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a; } +function parseXFAPath(path) { + const positionPattern = /(.+)\[([0-9]+)\]$/; + return path.split(".").map(component => { + const m = component.match(positionPattern); + + if (m) { + return { + name: m[1], + pos: parseInt(m[2], 10) + }; + } + + return { + name: component, + pos: 0 + }; + }); +} + +function escapePDFName(str) { + const buffer = []; + let start = 0; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + + if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) { + if (start < i) { + buffer.push(str.substring(start, i)); + } + + buffer.push(`#${char.toString(16)}`); + start = i + 1; + } + } + + if (buffer.length === 0) { + return str; + } + + if (start < str.length) { + buffer.push(str.substring(start, str.length)); + } + + return buffer.join(""); +} + +function _collectJS(entry, xref, list, parents) { + if (!entry) { + return; + } + + let parent = null; + + if ((0, _primitives.isRef)(entry)) { + if (parents.has(entry)) { + return; + } + + parent = entry; + parents.put(parent); + entry = xref.fetch(entry); + } + + if (Array.isArray(entry)) { + for (const element of entry) { + _collectJS(element, xref, list, parents); + } + } else if (entry instanceof _primitives.Dict) { + if ((0, _primitives.isName)(entry.get("S"), "JavaScript") && entry.has("JS")) { + const js = entry.get("JS"); + let code; + + if ((0, _primitives.isStream)(js)) { + code = (0, _util.bytesToString)(js.getBytes()); + } else { + code = js; + } + + code = (0, _util.stringToPDFString)(code); + + if (code) { + list.push(code); + } + } + + _collectJS(entry.getRaw("Next"), xref, list, parents); + } + + if (parent) { + parents.remove(parent); + } +} + +function collectActions(xref, dict, eventType) { + const actions = Object.create(null); + + if (dict.has("AA")) { + const additionalActions = dict.get("AA"); + + for (const key of additionalActions.getKeys()) { + const action = eventType[key]; + + if (!action) { + continue; + } + + const actionDict = additionalActions.getRaw(key); + const parents = new _primitives.RefSet(); + const list = []; + + _collectJS(actionDict, xref, list, parents); + + if (list.length > 0) { + actions[action] = list; + } + } + } + + if (dict.has("A")) { + const actionDict = dict.get("A"); + const parents = new _primitives.RefSet(); + const list = []; + + _collectJS(actionDict, xref, list, parents); + + if (list.length > 0) { + actions.Action = list; + } + } + + return (0, _util.objectSize)(actions) > 0 ? actions : null; +} + /***/ }), /* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFDocument = exports.Page = void 0; var _util = __w_pdfjs_require__(2); @@ -2978,9 +3218,9 @@ var _crypto = __w_pdfjs_require__(22); var _parser = __w_pdfjs_require__(11); -var _operator_list = __w_pdfjs_require__(26); +var _operator_list = __w_pdfjs_require__(44); -var _evaluator = __w_pdfjs_require__(28); +var _evaluator = __w_pdfjs_require__(27); const DEFAULT_USER_UNIT = 1.0; const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; @@ -2999,7 +3239,8 @@ class Page { globalIdFactory, fontCache, builtInCMapCache, - globalImageCache + globalImageCache, + nonBlendModesSet }) { this.pdfManager = pdfManager; this.pageIndex = pageIndex; @@ -3009,6 +3250,7 @@ class Page { this.fontCache = fontCache; this.builtInCMapCache = builtInCMapCache; this.globalImageCache = globalImageCache; + this.nonBlendModesSet = nonBlendModesSet; this.evaluatorOptions = pdfManager.evaluatorOptions; this.resourcesPromise = null; const idCounters = { @@ -3206,7 +3448,7 @@ class Page { const pageListPromise = dataPromises.then(([contentStream]) => { const opList = new _operator_list.OperatorList(intent, sink); handler.send("StartRenderPage", { - transparency: partialEvaluator.hasBlendModes(this.resources), + transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet), pageIndex: this.pageIndex, intent }); @@ -3230,7 +3472,7 @@ class Page { const opListPromises = []; for (const annotation of annotations) { - if (isAnnotationRenderable(annotation, intent)) { + if (isAnnotationRenderable(annotation, intent) && !annotation.isHidden(annotationStorage)) { opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms, annotationStorage).catch(function (reason) { (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: "${reason}".`); return null; @@ -3301,7 +3543,9 @@ class Page { } get annotations() { - return (0, _util.shadow)(this, "annotations", this._getInheritableProperty("Annots") || []); + const annots = this._getInheritableProperty("Annots"); + + return (0, _util.shadow)(this, "annotations", Array.isArray(annots) ? annots : []); } get _parsedAnnotations() { @@ -3322,6 +3566,11 @@ class Page { return (0, _util.shadow)(this, "_parsedAnnotations", parsedAnnotations); } + get jsActions() { + const actions = (0, _core_utils.collectActions)(this.xref, this.pageDict, _util.PageActionEventType); + return (0, _util.shadow)(this, "jsActions", actions); + } + } exports.Page = Page; @@ -3537,9 +3786,18 @@ class PDFDocument { _hasOnlyDocumentSignatures(fields, recursionDepth = 0) { const RECURSION_LIMIT = 10; + + if (!Array.isArray(fields)) { + return false; + } + return fields.every(field => { field = this.xref.fetchIfRef(field); + if (!(field instanceof _primitives.Dict)) { + return false; + } + if (field.has("Kids")) { if (++recursionDepth > RECURSION_LIMIT) { (0, _util.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"); @@ -3558,6 +3816,7 @@ class PDFDocument { get formInfo() { const formInfo = { + hasFields: false, hasAcroForm: false, hasXfa: false }; @@ -3568,11 +3827,11 @@ class PDFDocument { } try { - const xfa = acroForm.get("XFA"); - const hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && !xfa.isEmpty; - formInfo.hasXfa = hasXfa; const fields = acroForm.get("Fields"); const hasFields = Array.isArray(fields) && fields.length > 0; + formInfo.hasFields = hasFields; + const xfa = acroForm.get("XFA"); + formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || (0, _primitives.isStream)(xfa) && !xfa.isEmpty; const sigFlags = acroForm.get("SigFlags"); const hasOnlyDocumentSignatures = !!(sigFlags & 0x1) && this._hasOnlyDocumentSignatures(fields); @@ -3583,7 +3842,7 @@ class PDFDocument { throw ex; } - (0, _util.info)("Cannot fetch form information."); + (0, _util.warn)(`Cannot fetch form information: "${ex}".`); } return (0, _util.shadow)(this, "formInfo", formInfo); @@ -3725,7 +3984,8 @@ class PDFDocument { globalIdFactory: this._globalIdFactory, fontCache: catalog.fontCache, builtInCMapCache: catalog.builtInCMapCache, - globalImageCache: catalog.globalImageCache + globalImageCache: catalog.globalImageCache, + nonBlendModesSet: catalog.nonBlendModesSet }); }); } @@ -3748,30 +4008,115 @@ class PDFDocument { return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _primitives.clearPrimitiveCaches)(); } + _collectFieldObjects(name, fieldRef, promises) { + const field = this.xref.fetchIfRef(fieldRef); + + if (field.has("T")) { + const partName = (0, _util.stringToPDFString)(field.get("T")); + + if (name === "") { + name = partName; + } else { + name = `${name}.${partName}`; + } + } + + if (!promises.has(name)) { + promises.set(name, []); + } + + promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, this._localIdFactory).then(annotation => annotation && annotation.getFieldObject()).catch(function (reason) { + (0, _util.warn)(`_collectFieldObjects: "${reason}".`); + return null; + })); + + if (field.has("Kids")) { + const kids = field.get("Kids"); + + for (const kid of kids) { + this._collectFieldObjects(name, kid, promises); + } + } + } + + get fieldObjects() { + if (!this.formInfo.hasFields) { + return (0, _util.shadow)(this, "fieldObjects", Promise.resolve(null)); + } + + const allFields = Object.create(null); + const fieldPromises = new Map(); + + for (const fieldRef of this.catalog.acroForm.get("Fields")) { + this._collectFieldObjects("", fieldRef, fieldPromises); + } + + const allPromises = []; + + for (const [name, promises] of fieldPromises) { + allPromises.push(Promise.all(promises).then(fields => { + fields = fields.filter(field => !!field); + + if (fields.length > 0) { + allFields[name] = fields; + } + })); + } + + return (0, _util.shadow)(this, "fieldObjects", Promise.all(allPromises).then(() => allFields)); + } + + get hasJSActions() { + return (0, _util.shadow)(this, "hasJSActions", this.fieldObjects.then(fieldObjects => { + return fieldObjects !== null && Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null)) || !!this.catalog.jsActions; + })); + } + + get calculationOrderIds() { + const acroForm = this.catalog.acroForm; + + if (!acroForm || !acroForm.has("CO")) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + const calculationOrder = acroForm.get("CO"); + + if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + const ids = calculationOrder.filter(_primitives.isRef).map(ref => ref.toString()); + + if (ids.length === 0) { + return (0, _util.shadow)(this, "calculationOrderIds", null); + } + + return (0, _util.shadow)(this, "calculationOrderIds", ids); + } + } exports.PDFDocument = PDFDocument; /***/ }), /* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0; +})); +exports.XRef = exports.ObjectLoader = exports.FileSpec = exports.Catalog = void 0; var _util = __w_pdfjs_require__(2); var _primitives = __w_pdfjs_require__(5); -var _parser = __w_pdfjs_require__(11); - var _core_utils = __w_pdfjs_require__(8); +var _parser = __w_pdfjs_require__(11); + var _crypto = __w_pdfjs_require__(22); var _colorspace = __w_pdfjs_require__(23); @@ -3796,6 +4141,7 @@ class Catalog { this.builtInCMapCache = new Map(); this.globalImageCache = new _image_utils.GlobalImageCache(); this.pageKidsCountCache = new _primitives.RefSetCache(); + this.nonBlendModesSet = new _primitives.RefSet(); } get version() { @@ -3879,6 +4225,52 @@ class Catalog { return (0, _util.shadow)(this, "metadata", metadata); } + get markInfo() { + let markInfo = null; + + try { + markInfo = this._readMarkInfo(); + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + + (0, _util.warn)("Unable to read mark info."); + } + + return (0, _util.shadow)(this, "markInfo", markInfo); + } + + _readMarkInfo() { + const obj = this._catDict.get("MarkInfo"); + + if (!(0, _primitives.isDict)(obj)) { + return null; + } + + const markInfo = Object.assign(Object.create(null), { + Marked: false, + UserProperties: false, + Suspects: false + }); + + for (const key in markInfo) { + if (!obj.has(key)) { + continue; + } + + const value = obj.get(key); + + if (!(0, _util.isBool)(value)) { + continue; + } + + markInfo[key] = value; + } + + return markInfo; + } + get toplevelPagesDict() { const pagesObj = this._catDict.get("Pages"); @@ -4581,7 +4973,7 @@ class Catalog { get openAction() { const obj = this._catDict.get("OpenAction"); - let openAction = null; + const openAction = Object.create(null); if ((0, _primitives.isDict)(obj)) { const destDict = new _primitives.Dict(this.xref); @@ -4597,27 +4989,15 @@ class Catalog { }); if (Array.isArray(resultObj.dest)) { - if (!openAction) { - openAction = Object.create(null); - } - openAction.dest = resultObj.dest; } else if (resultObj.action) { - if (!openAction) { - openAction = Object.create(null); - } - openAction.action = resultObj.action; } } else if (Array.isArray(obj)) { - if (!openAction) { - openAction = Object.create(null); - } - openAction.dest = obj; } - return (0, _util.shadow)(this, "openAction", openAction); + return (0, _util.shadow)(this, "openAction", (0, _util.objectSize)(openAction) > 0 ? openAction : null); } get attachments() { @@ -4643,12 +5023,12 @@ class Catalog { return (0, _util.shadow)(this, "attachments", attachments); } - get javaScript() { + _collectJavaScript() { const obj = this._catDict.get("Names"); let javaScript = null; - function appendIfJavaScriptDict(jsDict) { + function appendIfJavaScriptDict(name, jsDict) { const type = jsDict.get("S"); if (!(0, _primitives.isName)(type, "JavaScript")) { @@ -4663,11 +5043,11 @@ class Catalog { return; } - if (!javaScript) { - javaScript = []; + if (javaScript === null) { + javaScript = Object.create(null); } - javaScript.push((0, _util.stringToPDFString)(js)); + javaScript[name] = (0, _util.stringToPDFString)(js); } if (obj && obj.has("JavaScript")) { @@ -4678,7 +5058,7 @@ class Catalog { const jsDict = names[name]; if ((0, _primitives.isDict)(jsDict)) { - appendIfJavaScriptDict(jsDict); + appendIfJavaScriptDict(name, jsDict); } } } @@ -4686,10 +5066,38 @@ class Catalog { const openAction = this._catDict.get("OpenAction"); if ((0, _primitives.isDict)(openAction) && (0, _primitives.isName)(openAction.get("S"), "JavaScript")) { - appendIfJavaScriptDict(openAction); + appendIfJavaScriptDict("OpenAction", openAction); + } + + return javaScript; + } + + get javaScript() { + const javaScript = this._collectJavaScript(); + + return (0, _util.shadow)(this, "javaScript", javaScript ? Object.values(javaScript) : null); + } + + get jsActions() { + const js = this._collectJavaScript(); + + let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType); + + if (!actions && js) { + actions = Object.create(null); + } + + if (actions && js) { + for (const [key, val] of Object.entries(js)) { + if (key in actions) { + actions[key].push(val); + } else { + actions[key] = [val]; + } + } } - return (0, _util.shadow)(this, "javaScript", javaScript); + return (0, _util.shadow)(this, "jsActions", actions); } fontFallback(id, handler) { @@ -4711,6 +5119,7 @@ class Catalog { (0, _primitives.clearPrimitiveCaches)(); this.globalImageCache.clear(manuallyTriggered); this.pageKidsCountCache.clear(); + this.nonBlendModesSet.clear(); const promises = []; this.fontCache.forEach(function (promise) { promises.push(promise); @@ -4719,7 +5128,7 @@ class Catalog { for (const { dict } of translatedFonts) { - delete dict.translated; + delete dict.cacheKey; } this.fontCache.clear(); @@ -4948,8 +5357,20 @@ class Catalog { url, dest; - if (!(0, _primitives.isDict)(action) && destDict.has("Dest")) { - action = destDict.get("Dest"); + if (!(0, _primitives.isDict)(action)) { + if (destDict.has("Dest")) { + action = destDict.get("Dest"); + } else { + action = destDict.get("AA"); + + if ((0, _primitives.isDict)(action)) { + if (action.has("D")) { + action = action.get("D"); + } else if (action.has("U")) { + action = action.get("U"); + } + } + } } if ((0, _primitives.isDict)(action)) { @@ -5510,16 +5931,14 @@ var XRef = function XRefClosure() { } } - var i, ii; - - for (i = 0, ii = xrefStms.length; i < ii; ++i) { + for (let i = 0, ii = xrefStms.length; i < ii; ++i) { this.startXRefQueue.push(xrefStms[i]); this.readXRef(true); } let trailerDict; - for (i = 0, ii = trailers.length; i < ii; ++i) { + for (let i = 0, ii = trailers.length; i < ii; ++i) { stream.pos = trailers[i]; const parser = new _parser.Parser({ lexer: new _parser.Lexer(stream), @@ -5539,10 +5958,24 @@ var XRef = function XRefClosure() { continue; } - let rootDict; - try { - rootDict = dict.get("Root"); + const rootDict = dict.get("Root"); + + if (!(rootDict instanceof _primitives.Dict)) { + continue; + } + + const pagesDict = rootDict.get("Pages"); + + if (!(pagesDict instanceof _primitives.Dict)) { + continue; + } + + const pagesCount = pagesDict.get("Count"); + + if (!Number.isInteger(pagesCount)) { + continue; + } } catch (ex) { if (ex instanceof _core_utils.MissingDataException) { throw ex; @@ -5551,10 +5984,6 @@ var XRef = function XRefClosure() { continue; } - if (!(0, _primitives.isDict)(rootDict) || !rootDict.has("Pages")) { - continue; - } - if (dict.has("ID")) { return dict; } @@ -6233,14 +6662,13 @@ exports.ObjectLoader = ObjectLoader; /***/ }), /* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Parser = exports.Linearization = exports.Lexer = void 0; var _stream = __w_pdfjs_require__(12); @@ -7577,15 +8005,14 @@ exports.Linearization = Linearization; /***/ }), /* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0; +})); +exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.LZWStream = exports.FlateStream = exports.DecryptStream = exports.DecodeStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0; var _util = __w_pdfjs_require__(2); @@ -7738,6 +8165,10 @@ var DecodeStream = function DecodeStreamClosure() { } DecodeStream.prototype = { + get length() { + (0, _util.unreachable)("Should not access DecodeStream.length"); + }, + get isEmpty() { while (!this.eof && this.bufferLength === 0) { this.readBlock(); @@ -8879,14 +9310,13 @@ exports.NullStream = NullStream; /***/ }), /* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CCITTFaxStream = void 0; var _primitives = __w_pdfjs_require__(5); @@ -8946,14 +9376,13 @@ exports.CCITTFaxStream = CCITTFaxStream; /***/ }), /* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.CCITTFaxDecoder = void 0; var _util = __w_pdfjs_require__(2); @@ -9651,14 +10080,13 @@ exports.CCITTFaxDecoder = CCITTFaxDecoder; /***/ }), /* 15 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Jbig2Stream = void 0; var _primitives = __w_pdfjs_require__(5); @@ -9735,14 +10163,13 @@ exports.Jbig2Stream = Jbig2Stream; /***/ }), /* 16 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Jbig2Image = void 0; var _util = __w_pdfjs_require__(2); @@ -11943,14 +12370,13 @@ exports.Jbig2Image = Jbig2Image; /***/ }), /* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.ArithmeticDecoder = void 0; const QeTable = [{ qe: 0x5601, @@ -12297,14 +12723,13 @@ exports.ArithmeticDecoder = ArithmeticDecoder; /***/ }), /* 18 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpegStream = void 0; var _stream = __w_pdfjs_require__(12); @@ -12404,14 +12829,13 @@ exports.JpegStream = JpegStream; /***/ }), /* 19 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpegImage = void 0; var _util = __w_pdfjs_require__(2); @@ -13417,7 +13841,7 @@ var JpegImage = function JpegImageClosure() { break; } - if (offset >= data.length - 1) { + if (!nextFileMarker || offset >= data.length - 1) { (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9)."); break markerLoop; } @@ -13650,14 +14074,13 @@ exports.JpegImage = JpegImage; /***/ }), /* 20 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpxStream = void 0; var _stream = __w_pdfjs_require__(12); @@ -13737,14 +14160,13 @@ exports.JpxStream = JpxStream; /***/ }), /* 21 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.JpxImage = void 0; var _util = __w_pdfjs_require__(2); @@ -14134,7 +14556,7 @@ var JpxImage = function JpxImageClosure() { if (unsupported.length > 0) { doNotRecover = true; - throw new Error("Unsupported COD options (" + unsupported.join(", ") + ")"); + (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`); } if (context.mainHeader) { @@ -14178,6 +14600,9 @@ var JpxImage = function JpxImageClosure() { parseTilePackets(context, data, position, length); break; + case 0xff53: + (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented."); + case 0xff55: case 0xff57: case 0xff58: @@ -14185,9 +14610,6 @@ var JpxImage = function JpxImageClosure() { length = (0, _core_utils.readUint16)(data, position); break; - case 0xff53: - throw new Error("Codestream code 0xFF53 (COC) is not implemented"); - default: throw new Error("Unknown codestream code: " + code.toString(16)); } @@ -14198,7 +14620,7 @@ var JpxImage = function JpxImageClosure() { if (doNotRecover || this.failOnCorruptedImage) { throw new JpxError(e.message); } else { - (0, _util.warn)("JPX: Trying to recover from: " + e.message); + (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`); } } @@ -16073,15 +16495,14 @@ exports.JpxImage = JpxImage; /***/ }), /* 22 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; +})); +exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0; var _util = __w_pdfjs_require__(2); @@ -17700,14 +18121,13 @@ exports.CipherTransformFactory = CipherTransformFactory; /***/ }), /* 23 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.ColorSpace = void 0; var _util = __w_pdfjs_require__(2); @@ -18768,15 +19188,14 @@ const LabCS = function LabCSClosure() { /***/ }), /* 24 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.GlobalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.LocalImageCache = void 0; +})); +exports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0; var _util = __w_pdfjs_require__(2); @@ -18932,6 +19351,35 @@ class LocalGStateCache extends BaseLocalCache { exports.LocalGStateCache = LocalGStateCache; +class LocalTilingPatternCache extends BaseLocalCache { + set(name, ref = null, data) { + if (!name) { + throw new Error('LocalTilingPatternCache.set - expected "name" argument.'); + } + + if (ref) { + if (this._imageCache.has(ref)) { + return; + } + + this._nameRefMap.set(name, ref); + + this._imageCache.put(ref, data); + + return; + } + + if (this._imageMap.has(name)) { + return; + } + + this._imageMap.set(name, data); + } + +} + +exports.LocalTilingPatternCache = LocalTilingPatternCache; + class GlobalImageCache { static get NUM_PAGES_THRESHOLD() { return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2); @@ -19024,14 +19472,13 @@ exports.GlobalImageCache = GlobalImageCache; /***/ }), /* 25 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getQuadPoints = getQuadPoints; exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0; @@ -19039,17 +19486,19 @@ var _util = __w_pdfjs_require__(2); var _obj = __w_pdfjs_require__(10); +var _core_utils = __w_pdfjs_require__(8); + +var _default_appearance = __w_pdfjs_require__(26); + var _primitives = __w_pdfjs_require__(5); var _colorspace = __w_pdfjs_require__(23); -var _core_utils = __w_pdfjs_require__(8); - -var _operator_list = __w_pdfjs_require__(26); +var _operator_list = __w_pdfjs_require__(44); var _stream = __w_pdfjs_require__(12); -var _writer = __w_pdfjs_require__(27); +var _writer = __w_pdfjs_require__(46); class AnnotationFactory { static create(xref, ref, pdfManager, idFactory) { @@ -19173,7 +19622,7 @@ function getQuadPoints(dict, rect) { const quadPoints = dict.getArray("QuadPoints"); - if (!Array.isArray(quadPoints) || quadPoints.length % 8 > 0) { + if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) { return null; } @@ -19186,7 +19635,7 @@ function getQuadPoints(dict, rect) { const x = quadPoints[j]; const y = quadPoints[j + 1]; - if (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]) { + if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) { return null; } @@ -19197,7 +19646,22 @@ function getQuadPoints(dict, rect) { } } - return quadPointsLists; + return quadPointsLists.map(quadPointsList => { + const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]); + return [{ + x: minX, + y: maxY + }, { + x: maxX, + y: maxY + }, { + x: minX, + y: minY + }, { + x: maxX, + y: minY + }]; + }); } function getTransformMatrix(rect, bbox, matrix) { @@ -19222,6 +19686,12 @@ class Annotation { this.setColor(dict.getArray("C")); this.setBorderStyle(dict); this.setAppearance(dict); + this._streams = []; + + if (this.appearance) { + this._streams.push(this.appearance); + } + this.data = { annotationFlags: this.flags, borderStyle: this.borderStyle, @@ -19233,6 +19703,7 @@ class Annotation { rect: this.rectangle, subtype: params.subtype }; + this._fallbackFontDict = null; } _hasFlag(flags, flag) { @@ -19240,14 +19711,28 @@ class Annotation { } _isViewable(flags) { - return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); + return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); } _isPrintable(flags) { - return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN); + return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE); + } + + isHidden(annotationStorage) { + const data = annotationStorage && annotationStorage[this.data.id]; + + if (data && "hidden" in data) { + return data.hidden; + } + + return this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN); } get viewable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { return true; } @@ -19256,6 +19741,10 @@ class Annotation { } get printable() { + if (this.data.quadPoints === null) { + return false; + } + if (this.flags === 0) { return false; } @@ -19417,10 +19906,11 @@ class Annotation { stream: appearance, task, resources, - operatorList: opList + operatorList: opList, + fallbackFontDict: this._fallbackFontDict }).then(() => { opList.addOp(_util.OPS.endAnnotation, []); - appearance.reset(); + this.reset(); return opList; }); }); @@ -19430,6 +19920,16 @@ class Annotation { return null; } + getFieldObject() { + return null; + } + + reset() { + for (const stream of this._streams) { + stream.reset(); + } + } + } exports.Annotation = Annotation; @@ -19593,6 +20093,68 @@ class MarkupAnnotation extends Annotation { this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null; } + _setDefaultAppearance({ + xref, + extra, + strokeColor, + fillColor, + blendMode, + pointsCallback + }) { + let minX = Number.MAX_VALUE; + let minY = Number.MAX_VALUE; + let maxX = Number.MIN_VALUE; + let maxY = Number.MIN_VALUE; + const buffer = ["q"]; + + if (extra) { + buffer.push(extra); + } + + if (strokeColor) { + buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`); + } + + if (fillColor) { + buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`); + } + + for (const points of this.data.quadPoints) { + const [mX, MX, mY, MY] = pointsCallback(buffer, points); + minX = Math.min(minX, mX); + maxX = Math.max(maxX, MX); + minY = Math.min(minY, mY); + maxY = Math.max(maxY, MY); + } + + buffer.push("Q"); + const formDict = new _primitives.Dict(xref); + const appearanceStreamDict = new _primitives.Dict(xref); + appearanceStreamDict.set("Subtype", _primitives.Name.get("Form")); + const appearanceStream = new _stream.StringStream(buffer.join(" ")); + appearanceStream.dict = appearanceStreamDict; + formDict.set("Fm0", appearanceStream); + const gsDict = new _primitives.Dict(xref); + + if (blendMode) { + gsDict.set("BM", _primitives.Name.get(blendMode)); + } + + const stateDict = new _primitives.Dict(xref); + stateDict.set("GS0", gsDict); + const resources = new _primitives.Dict(xref); + resources.set("ExtGState", stateDict); + resources.set("XObject", formDict); + const appearanceDict = new _primitives.Dict(xref); + appearanceDict.set("Resources", resources); + const bbox = this.data.rect = [minX, minY, maxX, maxY]; + appearanceDict.set("BBox", bbox); + this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do"); + this.appearance.dict = appearanceDict; + + this._streams.push(this.appearance, appearanceStream); + } + } exports.MarkupAnnotation = MarkupAnnotation; @@ -19605,26 +20167,47 @@ class WidgetAnnotation extends Annotation { this.ref = params.ref; data.annotationType = _util.AnnotationType.WIDGET; data.fieldName = this._constructFieldName(dict); + data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType); const fieldValue = (0, _core_utils.getInheritableProperty)({ dict, key: "V", getArray: true }); data.fieldValue = this._decodeFormValue(fieldValue); + const defaultFieldValue = (0, _core_utils.getInheritableProperty)({ + dict, + key: "DV", + getArray: true + }); + data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || ""); - data.defaultAppearance = (0, _core_utils.getInheritableProperty)({ + const defaultAppearance = (0, _core_utils.getInheritableProperty)({ dict, key: "DA" }) || params.acroForm.get("DA") || ""; + data.defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : ""; + data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(data.defaultAppearance); const fieldType = (0, _core_utils.getInheritableProperty)({ dict, key: "FT" }); data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null; - this.fieldResources = (0, _core_utils.getInheritableProperty)({ + const localResources = (0, _core_utils.getInheritableProperty)({ dict, key: "DR" - }) || params.acroForm.get("DR") || _primitives.Dict.empty; + }); + const acroFormResources = params.acroForm.get("DR"); + const appearanceResources = this.appearance && this.appearance.dict.get("Resources"); + this._fieldResources = { + localResources, + acroFormResources, + appearanceResources, + mergedResources: _primitives.Dict.merge({ + xref: params.xref, + dictArray: [localResources, appearanceResources, acroFormResources], + mergeSubDicts: true + }) + }; data.fieldFlags = (0, _core_utils.getInheritableProperty)({ dict, key: "Ff" @@ -19635,10 +20218,12 @@ class WidgetAnnotation extends Annotation { } data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); + data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN); if (data.fieldType === "Sig") { data.fieldValue = null; this.setFlags(_util.AnnotationFlag.HIDDEN); + data.hidden = true; } } @@ -19719,7 +20304,7 @@ class WidgetAnnotation extends Annotation { return evaluator.getOperatorList({ stream, task, - resources: this.fieldResources, + resources: this._fieldResources.mergedResources, operatorList }).then(function () { operatorList.addOp(_util.OPS.endAnnotation, []); @@ -19729,7 +20314,9 @@ class WidgetAnnotation extends Annotation { } async save(evaluator, task, annotationStorage) { - if (this.data.fieldValue === annotationStorage[this.data.id]) { + const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value; + + if (value === this.data.fieldValue || value === undefined) { return null; } @@ -19739,18 +20326,24 @@ class WidgetAnnotation extends Annotation { return null; } - const dict = evaluator.xref.fetchIfRef(this.ref); + const { + xref + } = evaluator; + const dict = xref.fetchIfRef(this.ref); if (!(0, _primitives.isDict)(dict)) { return null; } const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]; - const newRef = evaluator.xref.getNewRef(); - const AP = new _primitives.Dict(evaluator.xref); + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value + }; + const newRef = xref.getNewRef(); + const AP = new _primitives.Dict(xref); AP.set("N", newRef); - const value = annotationStorage[this.data.id]; - const encrypt = evaluator.xref.encrypt; + const encrypt = xref.encrypt; let originalTransform = null; let newTransform = null; @@ -19760,13 +20353,13 @@ class WidgetAnnotation extends Annotation { appearance = newTransform.encryptString(appearance); } - dict.set("V", value); + dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value)); dict.set("AP", AP); dict.set("M", `D:${(0, _util.getModificationDate)()}`); - const appearanceDict = new _primitives.Dict(evaluator.xref); + const appearanceDict = new _primitives.Dict(xref); appearanceDict.set("Length", appearance.length); appearanceDict.set("Subtype", _primitives.Name.get("Form")); - appearanceDict.set("Resources", this.fieldResources); + appearanceDict.set("Resources", this._getSaveFieldResources(xref)); appearanceDict.set("BBox", bbox); const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`]; (0, _writer.writeDict)(dict, bufferOriginal, originalTransform); @@ -19778,10 +20371,12 @@ class WidgetAnnotation extends Annotation { bufferNew.push("\nendstream\nendobj\n"); return [{ ref: this.ref, - data: bufferOriginal.join("") + data: bufferOriginal.join(""), + xfa }, { ref: newRef, - data: bufferNew.join("") + data: bufferNew.join(""), + xfa: null }]; } @@ -19792,7 +20387,11 @@ class WidgetAnnotation extends Annotation { return null; } - const value = annotationStorage[this.data.id]; + const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value; + + if (value === undefined) { + return null; + } if (value === "") { return ""; @@ -19802,10 +20401,16 @@ class WidgetAnnotation extends Annotation { const hPadding = defaultPadding; const totalHeight = this.data.rect[3] - this.data.rect[1]; const totalWidth = this.data.rect[2] - this.data.rect[0]; - const fontInfo = await this._getFontData(evaluator, task); - const [font, fontName] = fontInfo; - let fontSize = fontInfo[2]; - fontSize = this._computeFontSize(font, fontName, fontSize, totalHeight); + + if (!this.data.defaultAppearance) { + this.data.defaultAppearance = "/Helvetica 0 Tf 0 g"; + this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this.data.defaultAppearance); + } + + const font = await this._getFontData(evaluator, task); + + const fontSize = this._computeFontSize(font, totalHeight); + let descent = font.descent; if (isNaN(descent)) { @@ -19816,19 +20421,21 @@ class WidgetAnnotation extends Annotation { const defaultAppearance = this.data.defaultAppearance; const alignment = this.data.textAlignment; - if (this.data.comb) { - return this._getCombAppearance(defaultAppearance, value, totalWidth, hPadding, vPadding); - } - if (this.data.multiLine) { return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, alignment, hPadding, vPadding); } + const encodedString = font.encodeString(value).join(""); + + if (this.data.comb) { + return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding); + } + if (alignment === 0 || alignment > 2) { - return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, _util.escapeString)(value)}) Tj` + " ET Q EMC"; + return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, _util.escapeString)(encodedString)}) Tj` + " ET Q EMC"; } - const renderedText = this._renderText(value, font, fontSize, totalWidth, alignment, hPadding, vPadding); + const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, vPadding); return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC"; } @@ -19836,37 +20443,50 @@ class WidgetAnnotation extends Annotation { async _getFontData(evaluator, task) { const operatorList = new _operator_list.OperatorList(); const initialState = { - fontSize: 0, font: null, - fontName: null, clone() { return this; } }; - await evaluator.getOperatorList({ - stream: new _stream.StringStream(this.data.defaultAppearance), - task, - resources: this.fieldResources, - operatorList, - initialState - }); - return [initialState.font, initialState.fontName, initialState.fontSize]; + const { + fontName, + fontSize + } = this.data.defaultAppearanceData; + await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName, fontSize], null, operatorList, task, initialState, null); + return initialState.font; } - _computeFontSize(font, fontName, fontSize, height) { - if (fontSize === null || fontSize === 0) { - const em = font.charsToGlyphs("M", true)[0].width / 1000; - const capHeight = 0.7 * em; - fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight))); - let fontRegex = new RegExp(`/${fontName}\\s+[0-9\.]+\\s+Tf`); + _computeFontSize(font, height) { + let fontSize = this.data.defaultAppearanceData.fontSize; - if (this.data.defaultAppearance.search(fontRegex) === -1) { - fontRegex = new RegExp(`/${fontName}\\s+Tf`); + if (!fontSize) { + const { + fontColor, + fontName + } = this.data.defaultAppearanceData; + let capHeight; + + if (font.capHeight) { + capHeight = font.capHeight; + } else { + const glyphs = font.charsToGlyphs(font.encodeString("M").join("")); + + if (glyphs.length === 1 && glyphs[0].width) { + const em = glyphs[0].width / 1000; + capHeight = 0.7 * em; + } else { + capHeight = 0.7; + } } - this.data.defaultAppearance = this.data.defaultAppearance.replace(fontRegex, `/${fontName} ${fontSize} Tf`); + fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight))); + this.data.defaultAppearance = (0, _default_appearance.createDefaultAppearance)({ + fontSize, + fontName, + fontColor + }); } return fontSize; @@ -19896,6 +20516,59 @@ class WidgetAnnotation extends Annotation { return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`; } + _getSaveFieldResources(xref) { + const { + localResources, + appearanceResources, + acroFormResources + } = this._fieldResources; + const fontNameStr = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName.name; + + if (!fontNameStr) { + return localResources || _primitives.Dict.empty; + } + + for (const resources of [localResources, appearanceResources]) { + if (resources instanceof _primitives.Dict) { + const localFont = resources.get("Font"); + + if (localFont instanceof _primitives.Dict && localFont.has(fontNameStr)) { + return resources; + } + } + } + + if (acroFormResources instanceof _primitives.Dict) { + const acroFormFont = acroFormResources.get("Font"); + + if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontNameStr)) { + const subFontDict = new _primitives.Dict(xref); + subFontDict.set(fontNameStr, acroFormFont.getRaw(fontNameStr)); + const subResourcesDict = new _primitives.Dict(xref); + subResourcesDict.set("Font", subFontDict); + return _primitives.Dict.merge({ + xref, + dictArray: [subResourcesDict, localResources], + mergeSubDicts: true + }); + } + } + + return localResources || _primitives.Dict.empty; + } + + getFieldObject() { + if (this.data.fieldType === "Sig") { + return { + id: this.data.id, + value: null, + type: "signature" + }; + } + + return null; + } + } class TextWidgetAnnotation extends WidgetAnnotation { @@ -19932,12 +20605,13 @@ class TextWidgetAnnotation extends WidgetAnnotation { this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null; } - _getCombAppearance(defaultAppearance, text, width, hPadding, vPadding) { + _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) { const combWidth = (width / this.data.maxLen).toFixed(2); const buf = []; + const positions = font.getCharPositions(text); - for (const character of text) { - buf.push(`(${(0, _util.escapeString)(character)}) Tj`); + for (const [start, end] of positions) { + buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`); } const renderedComb = buf.join(` ${combWidth} 0 Td `); @@ -19963,46 +20637,55 @@ class TextWidgetAnnotation extends WidgetAnnotation { } _splitLine(line, font, fontSize, width) { - if (line.length <= 1) { + line = font.encodeString(line).join(""); + const glyphs = font.charsToGlyphs(line); + + if (glyphs.length <= 1) { return [line]; } + const positions = font.getCharPositions(line); const scale = fontSize / 1000; - const whitespace = font.charsToGlyphs(" ", true)[0].width * scale; const chunks = []; - let lastSpacePos = -1, + let lastSpacePosInStringStart = -1, + lastSpacePosInStringEnd = -1, + lastSpacePos = -1, startChunk = 0, currentWidth = 0; - for (let i = 0, ii = line.length; i < ii; i++) { - const character = line.charAt(i); - - if (character === " ") { - if (currentWidth + whitespace > width) { - chunks.push(line.substring(startChunk, i)); - startChunk = i; - currentWidth = whitespace; + for (let i = 0, ii = glyphs.length; i < ii; i++) { + const [start, end] = positions[i]; + const glyph = glyphs[i]; + const glyphWidth = glyph.width * scale; + + if (glyph.unicode === " ") { + if (currentWidth + glyphWidth > width) { + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; + lastSpacePosInStringStart = -1; lastSpacePos = -1; } else { - currentWidth += whitespace; + currentWidth += glyphWidth; + lastSpacePosInStringStart = start; + lastSpacePosInStringEnd = end; lastSpacePos = i; } } else { - const charWidth = font.charsToGlyphs(character, false)[0].width * scale; - - if (currentWidth + charWidth > width) { - if (lastSpacePos !== -1) { - chunks.push(line.substring(startChunk, lastSpacePos + 1)); - startChunk = i = lastSpacePos + 1; - lastSpacePos = -1; + if (currentWidth + glyphWidth > width) { + if (lastSpacePosInStringStart !== -1) { + chunks.push(line.substring(startChunk, lastSpacePosInStringEnd)); + startChunk = lastSpacePosInStringEnd; + i = lastSpacePos + 1; + lastSpacePosInStringStart = -1; currentWidth = 0; } else { - chunks.push(line.substring(startChunk, i)); - startChunk = i; - currentWidth = charWidth; + chunks.push(line.substring(startChunk, start)); + startChunk = start; + currentWidth = glyphWidth; } } else { - currentWidth += charWidth; + currentWidth += glyphWidth; } } } @@ -20014,6 +20697,24 @@ class TextWidgetAnnotation extends WidgetAnnotation { return chunks; } + getFieldObject() { + return { + id: this.data.id, + value: this.data.fieldValue, + defaultValue: this.data.defaultFieldValue, + multiline: this.data.multiLine, + password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD), + charLimit: this.data.maxLen, + comb: this.data.comb, + editable: !this.data.readOnly, + hidden: this.data.hidden, + name: this.data.fieldName, + rect: this.data.rect, + actions: this.data.actions, + type: "text" + }; + } + } class ButtonWidgetAnnotation extends WidgetAnnotation { @@ -20024,6 +20725,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + this.data.isTooltipOnly = false; if (this.data.checkBox) { this._processCheckBox(params); @@ -20042,7 +20744,12 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { } if (annotationStorage) { - const value = annotationStorage[this.data.id] || false; + const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value; + + if (value === undefined) { + return super.getOperatorList(evaluator, task, renderForms, annotationStorage); + } + let appearance; if (value) { @@ -20074,12 +20781,17 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { return this._saveRadioButton(evaluator, task, annotationStorage); } - return super.save(evaluator, task, annotationStorage); + return null; } async _saveCheckbox(evaluator, task, annotationStorage) { + const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value; + + if (value === undefined) { + return null; + } + const defaultValue = this.data.fieldValue && this.data.fieldValue !== "Off"; - const value = annotationStorage[this.data.id]; if (defaultValue === value) { return null; @@ -20091,6 +20803,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { return null; } + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value: value ? this.data.exportValue : "" + }; + const name = _primitives.Name.get(value ? this.data.exportValue : "Off"); dict.set("V", name); @@ -20108,13 +20825,19 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { buffer.push("\nendobj\n"); return [{ ref: this.ref, - data: buffer.join("") + data: buffer.join(""), + xfa }]; } async _saveRadioButton(evaluator, task, annotationStorage) { + const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value; + + if (value === undefined) { + return null; + } + const defaultValue = this.data.fieldValue === this.data.buttonValue; - const value = annotationStorage[this.data.id]; if (defaultValue === value) { return null; @@ -20126,6 +20849,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { return null; } + const xfa = { + path: (0, _util.stringToPDFString)(dict.get("T") || ""), + value: value ? this.data.buttonValue : "" + }; + const name = _primitives.Name.get(value ? this.data.buttonValue : "Off"); let parentBuffer = null; @@ -20162,13 +20890,15 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { buffer.push("\nendobj\n"); const newRefs = [{ ref: this.ref, - data: buffer.join("") + data: buffer.join(""), + xfa }]; if (parentBuffer !== null) { newRefs.push({ ref: this.parent, - data: parentBuffer.join("") + data: parentBuffer.join(""), + xfa: null }); } @@ -20201,17 +20931,25 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { this.data.exportValue = exportValues[0] === "Off" ? exportValues[1] : exportValues[0]; this.checkedAppearance = normalAppearance.get(this.data.exportValue); this.uncheckedAppearance = normalAppearance.get("Off") || null; + + this._streams.push(this.checkedAppearance); + + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + + this._fallbackFontDict = this.fallbackFontDict; } _processRadioButton(params) { this.data.fieldValue = this.data.buttonValue = null; const fieldParent = params.dict.get("Parent"); - if ((0, _primitives.isDict)(fieldParent) && fieldParent.has("V")) { + if ((0, _primitives.isDict)(fieldParent)) { + this.parent = params.dict.getRaw("Parent"); const fieldParentValue = fieldParent.get("V"); if ((0, _primitives.isName)(fieldParentValue)) { - this.parent = params.dict.getRaw("Parent"); this.data.fieldValue = this._decodeFormValue(fieldParentValue); } } @@ -20230,21 +20968,31 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { for (const key of normalAppearance.getKeys()) { if (key !== "Off") { - this.data.buttonValue = key; + this.data.buttonValue = this._decodeFormValue(key); break; } } this.checkedAppearance = normalAppearance.get(this.data.buttonValue); this.uncheckedAppearance = normalAppearance.get("Off") || null; + + this._streams.push(this.checkedAppearance); + + if (this.uncheckedAppearance) { + this._streams.push(this.uncheckedAppearance); + } + + this._fallbackFontDict = this.fallbackFontDict; } _processPushButton(params) { - if (!params.dict.has("A")) { + if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) { (0, _util.warn)("Push buttons without action dictionaries are not supported"); return; } + this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA"); + _obj.Catalog.parseDestDictionary({ destDict: params.dict, resultObj: this.data, @@ -20252,6 +21000,41 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { }); } + getFieldObject() { + let type = "button"; + let exportValues; + + if (this.data.checkBox) { + type = "checkbox"; + exportValues = this.data.exportValue; + } else if (this.data.radioButton) { + type = "radiobutton"; + exportValues = this.data.buttonValue; + } + + return { + id: this.data.id, + value: this.data.fieldValue || "Off", + defaultValue: this.data.defaultFieldValue, + exportValues, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + hidden: this.data.hidden, + actions: this.data.actions, + type + }; + } + + get fallbackFontDict() { + const dict = new _primitives.Dict(); + dict.set("BaseFont", _primitives.Name.get("ZapfDingbats")); + dict.set("Type", _primitives.Name.get("FallbackType")); + dict.set("Subtype", _primitives.Name.get("FallbackType")); + dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding")); + return (0, _util.shadow)(this, "fallbackFontDict", dict); + } + } class ChoiceWidgetAnnotation extends WidgetAnnotation { @@ -20287,6 +21070,24 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { this._hasText = true; } + getFieldObject() { + const type = this.data.combo ? "combobox" : "listbox"; + const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null; + return { + id: this.data.id, + value, + defaultValue: this.data.defaultFieldValue, + editable: !this.data.readOnly, + name: this.data.fieldName, + rect: this.data.rect, + numItems: this.data.fieldValue.length, + multipleSelection: this.data.multiSelect, + hidden: this.data.hidden, + actions: this.data.actions, + type + }; + } + } class TextAnnotation extends MarkupAnnotation { @@ -20349,6 +21150,14 @@ class PopupAnnotation extends Annotation { this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null; const rawParent = parameters.dict.getRaw("Parent"); this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null; + const parentRect = parentItem.getArray("Rect"); + + if (Array.isArray(parentRect) && parentRect.length === 4) { + this.data.parentRect = _util.Util.normalizeRect(parentRect); + } else { + this.data.parentRect = [0, 0, 0, 0]; + } + const rt = parentItem.get("RT"); if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) { @@ -20420,8 +21229,12 @@ class PolylineAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.POLYLINE; - const rawVertices = parameters.dict.getArray("Vertices"); this.data.vertices = []; + const rawVertices = parameters.dict.getArray("Vertices"); + + if (!Array.isArray(rawVertices)) { + return; + } for (let i = 0, ii = rawVertices.length; i < ii; i += 2) { this.data.vertices.push({ @@ -20453,17 +21266,22 @@ class InkAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.INK; - const xref = parameters.xref; - const originalInkLists = parameters.dict.getArray("InkList"); this.data.inkLists = []; + const rawInkLists = parameters.dict.getArray("InkList"); + + if (!Array.isArray(rawInkLists)) { + return; + } - for (let i = 0, ii = originalInkLists.length; i < ii; ++i) { + const xref = parameters.xref; + + for (let i = 0, ii = rawInkLists.length; i < ii; ++i) { this.data.inkLists.push([]); - for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) { + for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) { this.data.inkLists[i].push({ - x: xref.fetchIfRef(originalInkLists[i][j]), - y: xref.fetchIfRef(originalInkLists[i][j + 1]) + x: xref.fetchIfRef(rawInkLists[i][j]), + y: xref.fetchIfRef(rawInkLists[i][j + 1]) }); } } @@ -20475,10 +21293,28 @@ class HighlightAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.HIGHLIGHT; - const quadPoints = getQuadPoints(parameters.dict, this.rectangle); + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); if (quadPoints) { - this.data.quadPoints = quadPoints; + if (!this.appearance) { + const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0]; + + this._setDefaultAppearance({ + xref: parameters.xref, + fillColor, + blendMode: "Multiply", + pointsCallback: (buffer, points) => { + buffer.push(`${points[0].x} ${points[0].y} m`); + buffer.push(`${points[1].x} ${points[1].y} l`); + buffer.push(`${points[3].x} ${points[3].y} l`); + buffer.push(`${points[2].x} ${points[2].y} l`); + buffer.push("f"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; } } @@ -20488,10 +21324,26 @@ class UnderlineAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.UNDERLINE; - const quadPoints = getQuadPoints(parameters.dict, this.rectangle); + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); if (quadPoints) { - this.data.quadPoints = quadPoints; + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + pointsCallback: (buffer, points) => { + buffer.push(`${points[2].x} ${points[2].y} m`); + buffer.push(`${points[3].x} ${points[3].y} l`); + buffer.push("S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; } } @@ -20501,10 +21353,37 @@ class SquigglyAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.SQUIGGLY; - const quadPoints = getQuadPoints(parameters.dict, this.rectangle); + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); if (quadPoints) { - this.data.quadPoints = quadPoints; + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + pointsCallback: (buffer, points) => { + const dy = (points[0].y - points[2].y) / 6; + let shift = dy; + let x = points[2].x; + const y = points[2].y; + const xEnd = points[3].x; + buffer.push(`${x} ${y + shift} m`); + + do { + x += 2; + shift = shift === 0 ? dy : 0; + buffer.push(`${x} ${y + shift} l`); + } while (x < xEnd); + + buffer.push("S"); + return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy]; + } + }); + } + } else { + this.data.hasPopup = false; } } @@ -20514,10 +21393,26 @@ class StrikeOutAnnotation extends MarkupAnnotation { constructor(parameters) { super(parameters); this.data.annotationType = _util.AnnotationType.STRIKEOUT; - const quadPoints = getQuadPoints(parameters.dict, this.rectangle); + const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null); if (quadPoints) { - this.data.quadPoints = quadPoints; + if (!this.appearance) { + const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0]; + + this._setDefaultAppearance({ + xref: parameters.xref, + extra: "[] 0 d 1 w", + strokeColor, + pointsCallback: (buffer, points) => { + buffer.push(`${(points[0].x + points[2].x) / 2}` + ` ${(points[0].y + points[2].y) / 2} m`); + buffer.push(`${(points[1].x + points[3].x) / 2}` + ` ${(points[1].y + points[3].y) / 2} l`); + buffer.push("S"); + return [points[0].x, points[1].x, points[3].y, points[1].y]; + } + }); + } + } else { + this.data.hasPopup = false; } } @@ -20543,944 +21438,168 @@ class FileAttachmentAnnotation extends MarkupAnnotation { /***/ }), /* 26 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.OperatorList = void 0; - -var _util = __w_pdfjs_require__(2); - -var QueueOptimizer = function QueueOptimizerClosure() { - function addState(parentState, pattern, checkFn, iterateFn, processFn) { - var state = parentState; +})); +exports.createDefaultAppearance = createDefaultAppearance; +exports.parseDefaultAppearance = parseDefaultAppearance; - for (var i = 0, ii = pattern.length - 1; i < ii; i++) { - var item = pattern[i]; - state = state[item] || (state[item] = []); - } +var _primitives = __w_pdfjs_require__(5); - state[pattern[pattern.length - 1]] = { - checkFn, - iterateFn, - processFn - }; - } +var _util = __w_pdfjs_require__(2); - function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) { - var iFirstPIMXO = iFirstSave + 2; +var _colorspace = __w_pdfjs_require__(23); - for (var i = 0; i < count; i++) { - var arg = argsArray[iFirstPIMXO + 4 * i]; - var imageMask = arg.length === 1 && arg[0]; +var _core_utils = __w_pdfjs_require__(8); - if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) { - fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask; - continue; - } +var _evaluator = __w_pdfjs_require__(27); - break; - } +var _stream = __w_pdfjs_require__(12); - return count - i; +class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor { + constructor(str) { + super(new _stream.StringStream(str)); } - var InitialState = []; - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { - var fnArray = context.fnArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; - - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; - - case 1: - return fnArray[i] === _util.OPS.transform; - - case 2: - return fnArray[i] === _util.OPS.paintInlineImageXObject; - - case 3: - return fnArray[i] === _util.OPS.restore; - } - - throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`); - }, function foundInlineImageGroup(context, i) { - var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; - var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; - var MAX_WIDTH = 1000; - var IMAGE_PADDING = 1; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIIXO = curr - 1; - var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); - - if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - var maxX = 0; - var map = [], - maxLineHeight = 0; - var currentX = IMAGE_PADDING, - currentY = IMAGE_PADDING; - var q; - - for (q = 0; q < count; q++) { - var transform = argsArray[iFirstTransform + (q << 2)]; - var img = argsArray[iFirstPIIXO + (q << 2)][0]; - - if (currentX + img.width > MAX_WIDTH) { - maxX = Math.max(maxX, currentX); - currentY += maxLineHeight + 2 * IMAGE_PADDING; - currentX = 0; - maxLineHeight = 0; - } - - map.push({ - transform, - x: currentX, - y: currentY, - w: img.width, - h: img.height - }); - currentX += img.width + 2 * IMAGE_PADDING; - maxLineHeight = Math.max(maxLineHeight, img.height); - } - - var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; - var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; - var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4); - var imgRowSize = imgWidth << 2; - - for (q = 0; q < count; q++) { - var data = argsArray[iFirstPIIXO + (q << 2)][0].data; - var rowSize = map[q].w << 2; - var dataOffset = 0; - var offset = map[q].x + map[q].y * imgWidth << 2; - imgData.set(data.subarray(0, rowSize), offset - imgRowSize); - - for (var k = 0, kk = map[q].h; k < kk; k++) { - imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); - dataOffset += rowSize; - offset += imgRowSize; - } - - imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); - - while (offset >= 0) { - data[offset - 4] = data[offset]; - data[offset - 3] = data[offset + 1]; - data[offset - 2] = data[offset + 2]; - data[offset - 1] = data[offset + 3]; - data[offset + rowSize] = data[offset + rowSize - 4]; - data[offset + rowSize + 1] = data[offset + rowSize - 3]; - data[offset + rowSize + 2] = data[offset + rowSize - 2]; - data[offset + rowSize + 3] = data[offset + rowSize - 1]; - offset -= imgRowSize; - } - } - - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [{ - width: imgWidth, - height: imgHeight, - kind: _util.ImageKind.RGBA_32BPP, - data: imgData - }, map]); - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) { - var fnArray = context.fnArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; - - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; - - case 1: - return fnArray[i] === _util.OPS.transform; - - case 2: - return fnArray[i] === _util.OPS.paintImageMaskXObject; - - case 3: - return fnArray[i] === _util.OPS.restore; - } - - throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`); - }, function foundImageMaskGroup(context, i) { - var MIN_IMAGES_IN_MASKS_BLOCK = 10; - var MAX_IMAGES_IN_MASKS_BLOCK = 100; - var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIMXO = curr - 1; - var count = Math.floor((i - iFirstSave) / 4); - count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray); - - if (count < MIN_IMAGES_IN_MASKS_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - var q; - var isSameImage = false; - var iTransform, transformArgs; - var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; - const firstTransformArg0 = argsArray[iFirstTransform][0], - firstTransformArg1 = argsArray[iFirstTransform][1], - firstTransformArg2 = argsArray[iFirstTransform][2], - firstTransformArg3 = argsArray[iFirstTransform][3]; - - if (firstTransformArg1 === firstTransformArg2) { - isSameImage = true; - iTransform = iFirstTransform + 4; - var iPIMXO = iFirstPIMXO + 4; - - for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { - transformArgs = argsArray[iTransform]; - - if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) { - if (q < MIN_IMAGES_IN_MASKS_BLOCK) { - isSameImage = false; - } else { - count = q; - } - - break; - } - } - } - - if (isSameImage) { - count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); - var positions = new Float32Array(count * 2); - iTransform = iFirstTransform; - - for (q = 0; q < count; q++, iTransform += 4) { - transformArgs = argsArray[iTransform]; - positions[q << 1] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]); - } else { - count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); - var images = []; - - for (q = 0; q < count; q++) { - transformArgs = argsArray[iFirstTransform + (q << 2)]; - var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; - images.push({ - data: maskParams.data, - width: maskParams.width, - height: maskParams.height, - transform: transformArgs - }); - } - - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); - argsArray.splice(iFirstSave, count * 4, [images]); - } - - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { - var argsArray = context.argsArray; - var iFirstTransform = context.iCurr - 2; - return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; - }, function iterateImageGroup(context, i) { - var fnArray = context.fnArray, - argsArray = context.argsArray; - var iFirstSave = context.iCurr - 3; - var pos = (i - iFirstSave) % 4; - - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.save; - - case 1: - if (fnArray[i] !== _util.OPS.transform) { - return false; - } - - var iFirstTransform = context.iCurr - 2; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - - if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { - return false; - } - - return true; - - case 2: - if (fnArray[i] !== _util.OPS.paintImageXObject) { - return false; - } - - var iFirstPIXO = context.iCurr - 1; - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - - if (argsArray[i][0] !== firstPIXOArg0) { - return false; - } - - return true; - - case 3: - return fnArray[i] === _util.OPS.restore; - } - - throw new Error(`iterateImageGroup - invalid pos: ${pos}`); - }, function (context, i) { - var MIN_IMAGES_IN_BLOCK = 3; - var MAX_IMAGES_IN_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstSave = curr - 3; - var iFirstTransform = curr - 2; - var iFirstPIXO = curr - 1; - var firstPIXOArg0 = argsArray[iFirstPIXO][0]; - var firstTransformArg0 = argsArray[iFirstTransform][0]; - var firstTransformArg3 = argsArray[iFirstTransform][3]; - var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); - - if (count < MIN_IMAGES_IN_BLOCK) { - return i - (i - iFirstSave) % 4; - } - - var positions = new Float32Array(count * 2); - var iTransform = iFirstTransform; - - for (var q = 0; q < count; q++, iTransform += 4) { - var transformArgs = argsArray[iTransform]; - positions[q << 1] = transformArgs[4]; - positions[(q << 1) + 1] = transformArgs[5]; - } - - var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; - fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); - argsArray.splice(iFirstSave, count * 4, args); - return iFirstSave + 1; - }); - addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) { - var fnArray = context.fnArray, - argsArray = context.argsArray; - var iFirstSave = context.iCurr - 4; - var pos = (i - iFirstSave) % 5; - - switch (pos) { - case 0: - return fnArray[i] === _util.OPS.beginText; - - case 1: - return fnArray[i] === _util.OPS.setFont; - - case 2: - return fnArray[i] === _util.OPS.setTextMatrix; - - case 3: - if (fnArray[i] !== _util.OPS.showText) { - return false; - } - - var iFirstSetFont = context.iCurr - 3; - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - - if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { - return false; - } - - return true; - - case 4: - return fnArray[i] === _util.OPS.endText; - } - - throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`); - }, function (context, i) { - var MIN_CHARS_IN_BLOCK = 3; - var MAX_CHARS_IN_BLOCK = 1000; - var fnArray = context.fnArray, - argsArray = context.argsArray; - var curr = context.iCurr; - var iFirstBeginText = curr - 4; - var iFirstSetFont = curr - 3; - var iFirstSetTextMatrix = curr - 2; - var iFirstShowText = curr - 1; - var iFirstEndText = curr; - var firstSetFontArg0 = argsArray[iFirstSetFont][0]; - var firstSetFontArg1 = argsArray[iFirstSetFont][1]; - var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); - - if (count < MIN_CHARS_IN_BLOCK) { - return i - (i - iFirstBeginText) % 5; - } - - var iFirst = iFirstBeginText; - - if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { - count++; - iFirst -= 5; - } - - var iEndText = iFirst + 4; - - for (var q = 1; q < count; q++) { - fnArray.splice(iEndText, 3); - argsArray.splice(iEndText, 3); - iEndText += 2; - } - - return iEndText + 1; - }); - - function QueueOptimizer(queue) { - this.queue = queue; - this.state = null; - this.context = { - iCurr: 0, - fnArray: queue.fnArray, - argsArray: queue.argsArray + parse() { + const operation = { + fn: 0, + args: [] + }; + const result = { + fontSize: 0, + fontName: _primitives.Name.get(""), + fontColor: new Uint8ClampedArray([0, 0, 0]) }; - this.match = null; - this.lastProcessed = 0; - } - - QueueOptimizer.prototype = { - _optimize() { - const fnArray = this.queue.fnArray; - let i = this.lastProcessed, - ii = fnArray.length; - let state = this.state; - let match = this.match; - - if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { - this.lastProcessed = ii; - return; - } - - const context = this.context; - - while (i < ii) { - if (match) { - const iterate = (0, match.iterateFn)(context, i); - - if (iterate) { - i++; - continue; - } - - i = (0, match.processFn)(context, i + 1); - ii = fnArray.length; - match = null; - state = null; - - if (i >= ii) { - break; - } - } - state = (state || InitialState)[fnArray[i]]; + try { + while (true) { + operation.args.length = 0; - if (!state || Array.isArray(state)) { - i++; - continue; + if (!this.read(operation)) { + break; } - context.iCurr = i; - i++; - - if (state.checkFn && !(0, state.checkFn)(context)) { - state = null; + if (this.savedStatesDepth !== 0) { continue; } - match = state; - state = null; - } - - this.state = state; - this.match = match; - this.lastProcessed = i; - }, - - push(fn, args) { - this.queue.fnArray.push(fn); - this.queue.argsArray.push(args); - - this._optimize(); - }, - - flush() { - while (this.match) { - const length = this.queue.fnArray.length; - this.lastProcessed = (0, this.match.processFn)(this.context, length); - this.match = null; - this.state = null; - - this._optimize(); - } - }, - - reset() { - this.state = null; - this.match = null; - this.lastProcessed = 0; - } - - }; - return QueueOptimizer; -}(); - -var NullOptimizer = function NullOptimizerClosure() { - function NullOptimizer(queue) { - this.queue = queue; - } - - NullOptimizer.prototype = { - push(fn, args) { - this.queue.fnArray.push(fn); - this.queue.argsArray.push(args); - }, - - flush() {}, - - reset() {} - - }; - return NullOptimizer; -}(); - -var OperatorList = function OperatorListClosure() { - var CHUNK_SIZE = 1000; - var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; - - function OperatorList(intent, streamSink) { - this._streamSink = streamSink; - this.fnArray = []; - this.argsArray = []; - - if (streamSink && intent !== "oplist") { - this.optimizer = new QueueOptimizer(this); - } else { - this.optimizer = new NullOptimizer(this); - } - - this.dependencies = new Set(); - this._totalLength = 0; - this.weight = 0; - this._resolved = streamSink ? null : Promise.resolve(); - } - - OperatorList.prototype = { - get length() { - return this.argsArray.length; - }, - - get ready() { - return this._resolved || this._streamSink.ready; - }, - - get totalLength() { - return this._totalLength + this.length; - }, - - addOp(fn, args) { - this.optimizer.push(fn, args); - this.weight++; - - if (this._streamSink) { - if (this.weight >= CHUNK_SIZE) { - this.flush(); - } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { - this.flush(); - } - } - }, - - addDependency(dependency) { - if (this.dependencies.has(dependency)) { - return; - } + const { + fn, + args + } = operation; - this.dependencies.add(dependency); - this.addOp(_util.OPS.dependency, [dependency]); - }, + switch (fn | 0) { + case _util.OPS.setFont: + const [fontName, fontSize] = args; - addDependencies(dependencies) { - for (const dependency of dependencies) { - this.addDependency(dependency); - } - }, + if ((0, _primitives.isName)(fontName)) { + result.fontName = fontName; + } - addOpList(opList) { - if (!(opList instanceof OperatorList)) { - (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.'); - return; - } + if (typeof fontSize === "number" && fontSize > 0) { + result.fontSize = fontSize; + } - for (const dependency of opList.dependencies) { - this.dependencies.add(dependency); - } + break; - for (var i = 0, ii = opList.length; i < ii; i++) { - this.addOp(opList.fnArray[i], opList.argsArray[i]); - } - }, + case _util.OPS.setFillRGBColor: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0); - getIR() { - return { - fnArray: this.fnArray, - argsArray: this.argsArray, - length: this.length - }; - }, + break; - get _transfers() { - const transfers = []; - const { - fnArray, - argsArray, - length - } = this; + case _util.OPS.setFillGray: + _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0); - for (let i = 0; i < length; i++) { - switch (fnArray[i]) { - case _util.OPS.paintInlineImageXObject: - case _util.OPS.paintInlineImageXObjectGroup: - case _util.OPS.paintImageMaskXObject: - const arg = argsArray[i][0]; - ; + break; - if (!arg.cached) { - transfers.push(arg.data.buffer); - } + case _util.OPS.setFillColorSpace: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0); break; } } - - return transfers; - }, - - flush(lastChunk = false) { - this.optimizer.flush(); - const length = this.length; - this._totalLength += length; - - this._streamSink.enqueue({ - fnArray: this.fnArray, - argsArray: this.argsArray, - lastChunk, - length - }, 1, this._transfers); - - this.dependencies.clear(); - this.fnArray.length = 0; - this.argsArray.length = 0; - this.weight = 0; - this.optimizer.reset(); + } catch (reason) { + (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`); } - }; - return OperatorList; -}(); - -exports.OperatorList = OperatorList; - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.writeDict = writeDict; -exports.incrementalUpdate = incrementalUpdate; - -var _util = __w_pdfjs_require__(2); - -var _primitives = __w_pdfjs_require__(5); - -var _crypto = __w_pdfjs_require__(22); - -function writeDict(dict, buffer, transform) { - buffer.push("<<"); - - for (const key of dict.getKeys()) { - buffer.push(` /${key} `); - writeValue(dict.getRaw(key), buffer, transform); - } - - buffer.push(">>"); -} - -function writeStream(stream, buffer, transform) { - writeDict(stream.dict, buffer, transform); - buffer.push(" stream\n"); - let string = (0, _util.bytesToString)(stream.getBytes()); - - if (transform !== null) { - string = transform.encryptString(string); - } - - buffer.push(string); - buffer.push("\nendstream\n"); -} - -function writeArray(array, buffer, transform) { - buffer.push("["); - let first = true; - - for (const val of array) { - if (!first) { - buffer.push(" "); - } else { - first = false; - } - - writeValue(val, buffer, transform); - } - - buffer.push("]"); -} - -function numberToString(value) { - if (Number.isInteger(value)) { - return value.toString(); - } - - const roundedValue = Math.round(value * 100); - - if (roundedValue % 100 === 0) { - return (roundedValue / 100).toString(); - } - - if (roundedValue % 10 === 0) { - return value.toFixed(1); - } - - return value.toFixed(2); -} - -function writeValue(value, buffer, transform) { - if ((0, _primitives.isName)(value)) { - buffer.push(`/${value.name}`); - } else if ((0, _primitives.isRef)(value)) { - buffer.push(`${value.num} ${value.gen} R`); - } else if (Array.isArray(value)) { - writeArray(value, buffer, transform); - } else if (typeof value === "string") { - if (transform !== null) { - value = transform.encryptString(value); - } - - buffer.push(`(${(0, _util.escapeString)(value)})`); - } else if (typeof value === "number") { - buffer.push(numberToString(value)); - } else if ((0, _primitives.isDict)(value)) { - writeDict(value, buffer, transform); - } else if ((0, _primitives.isStream)(value)) { - writeStream(value, buffer, transform); - } -} - -function writeInt(number, size, offset, buffer) { - for (let i = size + offset - 1; i > offset - 1; i--) { - buffer[i] = number & 0xff; - number >>= 8; + return result; } - return offset + size; } -function writeString(string, offset, buffer) { - for (let i = 0, len = string.length; i < len; i++) { - buffer[offset + i] = string.charCodeAt(i) & 0xff; - } -} - -function computeMD5(filesize, xrefInfo) { - const time = Math.floor(Date.now() / 1000); - const filename = xrefInfo.filename || ""; - const md5Buffer = [time.toString(), filename, filesize.toString()]; - let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0); - - for (const value of Object.values(xrefInfo.info)) { - md5Buffer.push(value); - md5BufferLen += value.length; - } - - const array = new Uint8Array(md5BufferLen); - let offset = 0; - - for (const str of md5Buffer) { - writeString(str, offset, array); - offset += str.length; - } - - return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array)); +function parseDefaultAppearance(str) { + return new DefaultAppearanceEvaluator(str).parse(); } -function incrementalUpdate(originalData, xrefInfo, newRefs) { - const newXref = new _primitives.Dict(null); - const refForXrefTable = xrefInfo.newRef; - let buffer, baseOffset; - const lastByte = originalData[originalData.length - 1]; +function createDefaultAppearance({ + fontSize, + fontName, + fontColor +}) { + let colorCmd; - if (lastByte === 0x0a || lastByte === 0x0d) { - buffer = []; - baseOffset = originalData.length; + if (fontColor.every(c => c === 0)) { + colorCmd = "0 g"; } else { - buffer = ["\n"]; - baseOffset = originalData.length + 1; - } - - newXref.set("Size", refForXrefTable.num + 1); - newXref.set("Prev", xrefInfo.startXRef); - newXref.set("Type", _primitives.Name.get("XRef")); - - if (xrefInfo.rootRef !== null) { - newXref.set("Root", xrefInfo.rootRef); - } - - if (xrefInfo.infoRef !== null) { - newXref.set("Info", xrefInfo.infoRef); - } - - if (xrefInfo.encrypt !== null) { - newXref.set("Encrypt", xrefInfo.encrypt); - } - - newRefs.push({ - ref: refForXrefTable, - data: "" - }); - newRefs = newRefs.sort((a, b) => { - return a.ref.num - b.ref.num; - }); - const xrefTableData = [[0, 1, 0xffff]]; - const indexes = [0, 1]; - let maxOffset = 0; - - for (const { - ref, - data - } of newRefs) { - maxOffset = Math.max(maxOffset, baseOffset); - xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]); - baseOffset += data.length; - indexes.push(ref.num); - indexes.push(1); - buffer.push(data); + colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg"; } - newXref.set("Index", indexes); - - if (xrefInfo.fileIds.length !== 0) { - const md5 = computeMD5(baseOffset, xrefInfo); - newXref.set("ID", [xrefInfo.fileIds[0], md5]); - } - - const offsetSize = Math.ceil(Math.log2(maxOffset) / 8); - const sizes = [1, offsetSize, 2]; - const structSize = sizes[0] + sizes[1] + sizes[2]; - const tableLength = structSize * xrefTableData.length; - newXref.set("W", sizes); - newXref.set("Length", tableLength); - buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`); - writeDict(newXref, buffer, null); - buffer.push(" stream\n"); - const bufferLen = buffer.reduce((a, str) => a + str.length, 0); - const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`; - const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length); - array.set(originalData); - let offset = originalData.length; - - for (const str of buffer) { - writeString(str, offset, array); - offset += str.length; - } - - for (const [type, objOffset, gen] of xrefTableData) { - offset = writeInt(type, sizes[0], offset, array); - offset = writeInt(objOffset, sizes[1], offset, array); - offset = writeInt(gen, sizes[2], offset, array); - } - - writeString(footer, offset, array); - return array; + return `/${(0, _core_utils.escapePDFName)(fontName.name)} ${fontSize} Tf ${colorCmd}`; } /***/ }), -/* 28 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PartialEvaluator = void 0; +})); +exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0; var _util = __w_pdfjs_require__(2); -var _cmap = __w_pdfjs_require__(29); +var _cmap = __w_pdfjs_require__(28); var _primitives = __w_pdfjs_require__(5); -var _fonts = __w_pdfjs_require__(30); +var _fonts = __w_pdfjs_require__(29); -var _encodings = __w_pdfjs_require__(33); +var _encodings = __w_pdfjs_require__(32); var _core_utils = __w_pdfjs_require__(8); -var _unicode = __w_pdfjs_require__(36); +var _unicode = __w_pdfjs_require__(35); -var _standard_fonts = __w_pdfjs_require__(35); +var _standard_fonts = __w_pdfjs_require__(34); -var _pattern = __w_pdfjs_require__(39); +var _pattern = __w_pdfjs_require__(38); -var _function = __w_pdfjs_require__(40); +var _function = __w_pdfjs_require__(39); var _parser = __w_pdfjs_require__(11); var _image_utils = __w_pdfjs_require__(24); -var _bidi = __w_pdfjs_require__(42); +var _bidi = __w_pdfjs_require__(41); var _colorspace = __w_pdfjs_require__(23); var _stream = __w_pdfjs_require__(12); -var _glyphlist = __w_pdfjs_require__(34); +var _glyphlist = __w_pdfjs_require__(33); -var _metrics = __w_pdfjs_require__(43); +var _metrics = __w_pdfjs_require__(42); -var _murmurhash = __w_pdfjs_require__(44); +var _murmurhash = __w_pdfjs_require__(43); -var _operator_list = __w_pdfjs_require__(26); +var _operator_list = __w_pdfjs_require__(44); var _image = __w_pdfjs_require__(45); @@ -21644,12 +21763,16 @@ class PartialEvaluator { return newEvaluator; } - hasBlendModes(resources) { + hasBlendModes(resources, nonBlendModesSet) { if (!(resources instanceof _primitives.Dict)) { return false; } - const processed = new _primitives.RefSet(); + if (resources.objId && nonBlendModesSet.has(resources.objId)) { + return false; + } + + const processed = new _primitives.RefSet(nonBlendModesSet); if (resources.objId) { processed.put(resources.objId); @@ -21761,6 +21884,9 @@ class PartialEvaluator { } } + processed.forEach(ref => { + nonBlendModesSet.put(ref); + }); return false; } @@ -22098,7 +22224,7 @@ class PartialEvaluator { return transferMaps; } - handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) { + handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, localTilingPatternCache) { const tilingOpList = new _operator_list.OperatorList(); const patternResources = _primitives.Dict.merge({ @@ -22112,14 +22238,18 @@ class PartialEvaluator { resources: patternResources, operatorList: tilingOpList }).then(function () { - return (0, _pattern.getTilingPatternIR)({ - fnArray: tilingOpList.fnArray, - argsArray: tilingOpList.argsArray - }, patternDict, args); - }).then(function (tilingPatternIR) { + const operatorListIR = tilingOpList.getIR(); + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color); operatorList.addDependencies(tilingOpList.dependencies); operatorList.addOp(fn, tilingPatternIR); - }, reason => { + + if (cacheKey) { + localTilingPatternCache.set(cacheKey, patternDict.objId, { + operatorListIR, + dict: patternDict + }); + } + }).catch(reason => { if (reason instanceof _util.AbortException) { return; } @@ -22136,17 +22266,15 @@ class PartialEvaluator { }); } - handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) { - var fontName, - fontSize = 0; + handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null) { + var fontName; if (fontArgs) { fontArgs = fontArgs.slice(); fontName = fontArgs[0].name; - fontSize = fontArgs[1]; } - return this.loadFont(fontName, fontRef, resources).then(translated => { + return this.loadFont(fontName, fontRef, resources, fallbackFontDict).then(translated => { if (!translated.font.isType3Font) { return translated; } @@ -22167,8 +22295,6 @@ class PartialEvaluator { }); }).then(translated => { state.font = translated.font; - state.fontSize = fontSize; - state.fontName = fontName; translated.send(this.handler); return translated.loadedName; }); @@ -22313,14 +22439,14 @@ class PartialEvaluator { }); } - loadFont(fontName, font, resources) { - const errorFont = () => { - return Promise.resolve(new TranslatedFont({ + loadFont(fontName, font, resources, fallbackFontDict = null) { + const errorFont = async () => { + return new TranslatedFont({ loadedName: "g_font_error", font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`), dict: font, extraProperties: this.options.fontExtraProperties - })); + }); }; var fontRef, @@ -22352,7 +22478,12 @@ class PartialEvaluator { featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing }); (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`); - fontRef = PartialEvaluator.fallbackFontDict; + + if (fallbackFontDict) { + fontRef = fallbackFontDict; + } else { + fontRef = PartialEvaluator.fallbackFontDict; + } } if (this.fontCache.has(fontRef)) { @@ -22365,12 +22496,20 @@ class PartialEvaluator { return errorFont(); } - if (font.translated) { - return font.translated; + if (font.cacheKey && this.fontCache.has(font.cacheKey)) { + return this.fontCache.get(font.cacheKey); } var fontCapability = (0, _util.createPromiseCapability)(); - var preEvaluatedFont = this.preEvaluateFont(font); + let preEvaluatedFont; + + try { + preEvaluatedFont = this.preEvaluateFont(font); + } catch (reason) { + (0, _util.warn)(`loadFont - ignoring preEvaluateFont errors: "${reason}".`); + return errorFont(); + } + const { descriptor, hash @@ -22416,21 +22555,13 @@ class PartialEvaluator { fontID = this.idFactory.createFontId(); } - this.fontCache.put(`id_${fontID}`, fontCapability.promise); + font.cacheKey = `cacheKey_${fontID}`; + this.fontCache.put(font.cacheKey, fontCapability.promise); } (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.'); font.loadedName = `${this.idFactory.getDocId()}_${fontID}`; - font.translated = fontCapability.promise; - var translatedPromise; - - try { - translatedPromise = this.translateFont(preEvaluatedFont); - } catch (e) { - translatedPromise = Promise.reject(e); - } - - translatedPromise.then(translatedFont => { + this.translateFont(preEvaluatedFont).then(translatedFont => { if (translatedFont.fontType !== undefined) { var xrefFontStats = xref.stats.fontTypes; xrefFontStats[translatedFont.fontType] = true; @@ -22518,26 +22649,45 @@ class PartialEvaluator { }); } - async handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache) { - var patternName = args[args.length - 1]; - var pattern; + handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache) { + const patternName = args.pop(); - if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) { - var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern; - var typeNum = dict.get("PatternType"); + if (patternName instanceof _primitives.Name) { + const name = patternName.name; + const localTilingPattern = localTilingPatternCache.getByName(name); - if (typeNum === PatternType.TILING) { - var color = cs.base ? cs.base.getRgb(args, 0) : null; - return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task); - } else if (typeNum === PatternType.SHADING) { - var shading = dict.get("Shading"); - var matrix = dict.getArray("Matrix"); - pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache); - operatorList.addOp(fn, pattern.getIR()); - return undefined; + if (localTilingPattern) { + try { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, localTilingPattern.dict, color); + operatorList.addOp(fn, tilingPatternIR); + return undefined; + } catch (ex) { + if (ex instanceof _core_utils.MissingDataException) { + throw ex; + } + } } - throw new _util.FormatError(`Unknown PatternType: ${typeNum}`); + let pattern = patterns.get(name); + + if (pattern) { + var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern; + var typeNum = dict.get("PatternType"); + + if (typeNum === PatternType.TILING) { + const color = cs.base ? cs.base.getRgb(args, 0) : null; + return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, name, localTilingPatternCache); + } else if (typeNum === PatternType.SHADING) { + var shading = dict.get("Shading"); + var matrix = dict.getArray("Matrix"); + pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache); + operatorList.addOp(fn, pattern.getIR()); + return undefined; + } + + throw new _util.FormatError(`Unknown PatternType: ${typeNum}`); + } } throw new _util.FormatError(`Unknown PatternName: ${patternName}`); @@ -22604,7 +22754,8 @@ class PartialEvaluator { task, resources, operatorList, - initialState = null + initialState = null, + fallbackFontDict = null }) { resources = resources || _primitives.Dict.empty; initialState = initialState || new EvalState(); @@ -22619,6 +22770,7 @@ class PartialEvaluator { const localImageCache = new _image_utils.LocalImageCache(); const localColorSpaceCache = new _image_utils.LocalColorSpaceCache(); const localGStateCache = new _image_utils.LocalGStateCache(); + const localTilingPatternCache = new _image_utils.LocalTilingPatternCache(); var xobjs = resources.get("XObject") || _primitives.Dict.empty; @@ -22759,7 +22911,7 @@ class PartialEvaluator { case _util.OPS.setFont: var fontSize = args[1]; - next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) { + next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) { operatorList.addDependency(loadedName); operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); })); @@ -22951,7 +23103,7 @@ class PartialEvaluator { cs = stateManager.state.fillColorSpace; if (cs.name === "Pattern") { - next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache)); + next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache)); return; } @@ -22963,7 +23115,7 @@ class PartialEvaluator { cs = stateManager.state.strokeColorSpace; if (cs.name === "Pattern") { - next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache)); + next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache)); return; } @@ -24293,6 +24445,11 @@ class PartialEvaluator { } dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df; + + if (!(dict instanceof _primitives.Dict)) { + throw new _util.FormatError("Descendant font is not a dictionary."); + } + type = dict.get("Subtype"); if (!(0, _primitives.isName)(type)) { @@ -24368,7 +24525,7 @@ class PartialEvaluator { }; } - translateFont(preEvaluatedFont) { + async translateFont(preEvaluatedFont) { var baseDict = preEvaluatedFont.baseDict; var dict = preEvaluatedFont.dict; var composite = preEvaluatedFont.composite; @@ -24440,7 +24597,7 @@ class PartialEvaluator { var baseFontStr = baseFont && baseFont.name; if (fontNameStr !== baseFontStr) { - (0, _util.info)(`The FontDescriptor\'s FontName is "${fontNameStr}" but ` + `should be the same as the Font\'s BaseFont "${baseFontStr}".`); + (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as the Font's BaseFont "${baseFontStr}".`); if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) { fontName = baseFont; @@ -24493,30 +24650,24 @@ class PartialEvaluator { italicAngle: descriptor.get("ItalicAngle"), isType3Font: false }; - var cMapPromise; if (composite) { - var cidEncoding = baseDict.get("Encoding"); + const cidEncoding = baseDict.get("Encoding"); if ((0, _primitives.isName)(cidEncoding)) { properties.cidEncoding = cidEncoding.name; } - cMapPromise = _cmap.CMapFactory.create({ + const cMap = await _cmap.CMapFactory.create({ encoding: cidEncoding, fetchBuiltInCMap: this._fetchBuiltInCMapBound, useCMap: null - }).then(function (cMap) { - properties.cMap = cMap; - properties.vertical = properties.cMap.vertical; }); - } else { - cMapPromise = Promise.resolve(undefined); + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; } - return cMapPromise.then(() => { - return this.extractDataStructures(dict, baseDict, properties); - }).then(newProperties => { + return this.extractDataStructures(dict, baseDict, properties).then(newProperties => { this.extractWidths(dict, descriptor, newProperties); if (type === "Type3") { @@ -24615,7 +24766,7 @@ class TranslatedFont { var charProcOperatorList = Object.create(null); for (const key of charProcs.getKeys()) { - loadCharProcsPromise = loadCharProcsPromise.then(function () { + loadCharProcsPromise = loadCharProcsPromise.then(() => { var glyphStream = charProcs.get(key); var operatorList = new _operator_list.OperatorList(); return type3Evaluator.getOperatorList({ @@ -24623,7 +24774,11 @@ class TranslatedFont { task, resources: fontResources, operatorList - }).then(function () { + }).then(() => { + if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) { + this._removeType3ColorOperators(operatorList); + } + charProcOperatorList[key] = operatorList.getIR(); for (const dependency of operatorList.dependencies) { @@ -24643,10 +24798,66 @@ class TranslatedFont { return this.type3Loaded; } + _removeType3ColorOperators(operatorList) { + let i = 1, + ii = operatorList.length; + + while (i < ii) { + switch (operatorList.fnArray[i]) { + case _util.OPS.setStrokeColorSpace: + case _util.OPS.setFillColorSpace: + case _util.OPS.setStrokeColor: + case _util.OPS.setStrokeColorN: + case _util.OPS.setFillColor: + case _util.OPS.setFillColorN: + case _util.OPS.setStrokeGray: + case _util.OPS.setFillGray: + case _util.OPS.setStrokeRGBColor: + case _util.OPS.setFillRGBColor: + case _util.OPS.setStrokeCMYKColor: + case _util.OPS.setFillCMYKColor: + case _util.OPS.shadingFill: + case _util.OPS.setRenderingIntent: + operatorList.fnArray.splice(i, 1); + operatorList.argsArray.splice(i, 1); + ii--; + continue; + + case _util.OPS.setGState: + const [gStateObj] = operatorList.argsArray[i]; + let j = 0, + jj = gStateObj.length; + + while (j < jj) { + const [gStateKey] = gStateObj[j]; + + switch (gStateKey) { + case "TR": + case "TR2": + case "HT": + case "BG": + case "BG2": + case "UCR": + case "UCR2": + gStateObj.splice(j, 1); + jj--; + continue; + } + + j++; + } + + break; + } + + i++; + } + } + } class StateManager { - constructor(initialState) { + constructor(initialState = new EvalState()) { this.state = initialState; this.stateStack = []; } @@ -25179,7 +25390,7 @@ class EvaluatorPreprocessor { return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 20); } - constructor(stream, xref, stateManager) { + constructor(stream, xref, stateManager = new StateManager()) { this.parser = new _parser.Parser({ lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap), xref @@ -25292,17 +25503,18 @@ class EvaluatorPreprocessor { } +exports.EvaluatorPreprocessor = EvaluatorPreprocessor; + /***/ }), -/* 29 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 28 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0; +})); +exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0; var _util = __w_pdfjs_require__(2); @@ -25443,6 +25655,25 @@ class CMap { out.length = 1; } + getCharCodeLength(charCode) { + const codespaceRanges = this.codespaceRanges; + + for (let n = 0, nn = codespaceRanges.length; n < nn; n++) { + const codespaceRange = codespaceRanges[n]; + + for (let k = 0, kk = codespaceRange.length; k < kk;) { + const low = codespaceRange[k++]; + const high = codespaceRange[k++]; + + if (charCode >= low && charCode <= high) { + return n + 1; + } + } + } + + return 1; + } + get length() { return this._map.length; } @@ -26203,39 +26434,38 @@ var CMapFactory = function CMapFactoryClosure() { exports.CMapFactory = CMapFactory; /***/ }), -/* 30 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getFontType = getFontType; -exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = void 0; +exports.ToUnicodeMap = exports.SEAC_ANALYSIS_ENABLED = exports.IdentityToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = void 0; var _util = __w_pdfjs_require__(2); -var _cff_parser = __w_pdfjs_require__(31); +var _cff_parser = __w_pdfjs_require__(30); -var _glyphlist = __w_pdfjs_require__(34); +var _glyphlist = __w_pdfjs_require__(33); -var _encodings = __w_pdfjs_require__(33); +var _encodings = __w_pdfjs_require__(32); -var _standard_fonts = __w_pdfjs_require__(35); +var _standard_fonts = __w_pdfjs_require__(34); -var _unicode = __w_pdfjs_require__(36); +var _unicode = __w_pdfjs_require__(35); var _core_utils = __w_pdfjs_require__(8); -var _font_renderer = __w_pdfjs_require__(37); +var _font_renderer = __w_pdfjs_require__(36); -var _cmap = __w_pdfjs_require__(29); +var _cmap = __w_pdfjs_require__(28); var _stream = __w_pdfjs_require__(12); -var _type1_parser = __w_pdfjs_require__(38); +var _type1_parser = __w_pdfjs_require__(37); const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]]; var PDF_GLYPH_SPACE_UNITS = 1000; @@ -26623,6 +26853,7 @@ var Font = function FontClosure() { this.defaultWidth = properties.defaultWidth; this.composite = properties.composite; this.cMap = properties.cMap; + this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS; this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; this.fontMatrix = properties.fontMatrix; @@ -26654,7 +26885,7 @@ var Font = function FontClosure() { (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")"); } - this.fallbackToSystemFont(); + this.fallbackToSystemFont(properties); return; } @@ -26697,7 +26928,7 @@ var Font = function FontClosure() { } } catch (e) { (0, _util.warn)(e); - this.fallbackToSystemFont(); + this.fallbackToSystemFont(properties); return; } @@ -27208,7 +27439,7 @@ var Font = function FontClosure() { return data; }, - fallbackToSystemFont: function Font_fallbackToSystemFont() { + fallbackToSystemFont(properties) { this.missingFile = true; var name = this.name; var type = this.type; @@ -27216,15 +27447,18 @@ var Font = function FontClosure() { let fontName = name.replace(/[,_]/g, "-").replace(/\s/g, ""); var stdFontMap = (0, _standard_fonts.getStdFontMap)(), nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); - var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); + const isStandardFont = !!stdFontMap[fontName]; + const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; this.bold = fontName.search(/bold/gi) !== -1; this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1; this.black = name.search(/Black/g) !== -1; - this.remeasure = Object.keys(this.widths).length > 0; + const isNarrow = name.search(/Narrow/g) !== -1; + this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0; - if (isStandardFont && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { - const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(); + if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && this.cidEncoding.startsWith("Identity-")) { + const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(), + cidToGidMap = properties.cidToGidMap; const map = []; for (const charCode in GlyphMapForStandardFonts) { @@ -27245,6 +27479,16 @@ var Font = function FontClosure() { } } + if (cidToGidMap) { + for (const charCode in map) { + const cid = map[charCode]; + + if (cidToGidMap[cid] !== undefined) { + map[+charCode] = cidToGidMap[cid]; + } + } + } + var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; if (!isIdentityUnicode) { @@ -27297,6 +27541,7 @@ var Font = function FontClosure() { this.loadedName = fontName.split("-")[0]; this.fontType = getFontType(type, subtype); }, + checkAndRepair: function Font_checkAndRepair(name, font, properties) { const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", "fpgm", "prep", "cvt ", "CFF "]; @@ -28829,7 +29074,7 @@ var Font = function FontClosure() { return (0, _util.shadow)(this, "spaceWidth", width); }, - charToGlyph: function Font_charToGlyph(charcode, isSpace) { + _charToGlyph(charcode, isSpace = false) { var fontCharCode, width, operatorListId; var widthCode = charcode; @@ -28894,6 +29139,7 @@ var Font = function FontClosure() { return glyph; }, + charsToGlyphs: function Font_charsToGlyphs(chars) { var charsCache = this.charsCache; var glyphs, glyph, charcode; @@ -28924,13 +29170,13 @@ var Font = function FontClosure() { var length = c.length; i += length; var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20; - glyph = this.charToGlyph(charcode, isSpace); + glyph = this._charToGlyph(charcode, isSpace); glyphs.push(glyph); } } else { for (i = 0, ii = chars.length; i < ii; ++i) { charcode = chars.charCodeAt(i); - glyph = this.charToGlyph(charcode, charcode === 0x20); + glyph = this._charToGlyph(charcode, charcode === 0x20); glyphs.push(glyph); } } @@ -28938,8 +29184,75 @@ var Font = function FontClosure() { return charsCache[charsCacheKey] = glyphs; }, + getCharPositions(chars) { + const positions = []; + + if (this.cMap) { + const c = Object.create(null); + let i = 0; + + while (i < chars.length) { + this.cMap.readCharCode(chars, i, c); + const length = c.length; + positions.push([i, i + length]); + i += length; + } + } else { + for (let i = 0, ii = chars.length; i < ii; ++i) { + positions.push([i, i + 1]); + } + } + + return positions; + }, + get glyphCacheValues() { return Object.values(this.glyphCache); + }, + + encodeString(str) { + const buffers = []; + const currentBuf = []; + + const hasCurrentBufErrors = () => buffers.length % 2 === 1; + + for (let i = 0, ii = str.length; i < ii; i++) { + const unicode = str.codePointAt(i); + + if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) { + i++; + } + + if (this.toUnicode) { + const char = String.fromCodePoint(unicode); + const charCode = this.toUnicode.charCodeOf(char); + + if (charCode !== -1) { + if (hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + + const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1; + + for (let j = charCodeLength - 1; j >= 0; j--) { + currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff)); + } + + continue; + } + } + + if (!hasCurrentBufErrors()) { + buffers.push(currentBuf.join("")); + currentBuf.length = 0; + } + + currentBuf.push(String.fromCodePoint(unicode)); + } + + buffers.push(currentBuf.join("")); + return buffers; } }; @@ -28959,6 +29272,9 @@ var ErrorFont = function ErrorFontClosure() { charsToGlyphs: function ErrorFont_charsToGlyphs() { return []; }, + encodeString: function ErrorFont_encodeString(chars) { + return [chars]; + }, exportData(extraProperties = false) { return { @@ -29444,22 +29760,21 @@ var CFFFont = function CFFFontClosure() { }(); /***/ }), -/* 31 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 30 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = void 0; +})); +exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = exports.CFFCharset = exports.CFF = void 0; var _util = __w_pdfjs_require__(2); -var _charsets = __w_pdfjs_require__(32); +var _charsets = __w_pdfjs_require__(31); -var _encodings = __w_pdfjs_require__(33); +var _encodings = __w_pdfjs_require__(32); var MAX_SUBR_NESTING = 10; var CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"]; @@ -30816,6 +31131,12 @@ class CFFCompiler { } } + const xuid = cff.topDict.getByName("XUID"); + + if (xuid && xuid.length > 16) { + cff.topDict.removeByName("XUID"); + } + cff.topDict.setByName("charset", 0); var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); output.add(compiled.output); @@ -31275,16 +31596,15 @@ class CFFCompiler { exports.CFFCompiler = CFFCompiler; /***/ }), -/* 32 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 31 */ +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0; +})); +exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0; const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"]; exports.ISOAdobeCharset = ISOAdobeCharset; const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; @@ -31293,17 +31613,16 @@ const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperi exports.ExpertSubsetCharset = ExpertSubsetCharset; /***/ }), -/* 33 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 32 */ +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getEncoding = getEncoding; -exports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding = exports.StandardEncoding = exports.WinAnsiEncoding = void 0; +exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0; const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"]; exports.ExpertEncoding = ExpertEncoding; const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", "questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", "Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", "Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", "Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", "Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", "Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", "seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", "osuperior", "fiveinferior", "", "commainferior", "periodinferior", "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", "Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", "", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", "exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", "tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", "Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", "Dotaccentsmall", "Ringsmall", "", "", "", ""]; @@ -31347,4553 +31666,9086 @@ function getEncoding(encodingName) { } /***/ }), -/* 34 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -var getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory; -var getGlyphsUnicode = getLookupTableFactory(function (t) { - t.A = 0x0041; - t.AE = 0x00c6; - t.AEacute = 0x01fc; - t.AEmacron = 0x01e2; - t.AEsmall = 0xf7e6; - t.Aacute = 0x00c1; - t.Aacutesmall = 0xf7e1; - t.Abreve = 0x0102; - t.Abreveacute = 0x1eae; - t.Abrevecyrillic = 0x04d0; - t.Abrevedotbelow = 0x1eb6; - t.Abrevegrave = 0x1eb0; - t.Abrevehookabove = 0x1eb2; - t.Abrevetilde = 0x1eb4; - t.Acaron = 0x01cd; - t.Acircle = 0x24b6; - t.Acircumflex = 0x00c2; - t.Acircumflexacute = 0x1ea4; - t.Acircumflexdotbelow = 0x1eac; - t.Acircumflexgrave = 0x1ea6; - t.Acircumflexhookabove = 0x1ea8; - t.Acircumflexsmall = 0xf7e2; - t.Acircumflextilde = 0x1eaa; - t.Acute = 0xf6c9; - t.Acutesmall = 0xf7b4; - t.Acyrillic = 0x0410; - t.Adblgrave = 0x0200; - t.Adieresis = 0x00c4; - t.Adieresiscyrillic = 0x04d2; - t.Adieresismacron = 0x01de; - t.Adieresissmall = 0xf7e4; - t.Adotbelow = 0x1ea0; - t.Adotmacron = 0x01e0; - t.Agrave = 0x00c0; - t.Agravesmall = 0xf7e0; - t.Ahookabove = 0x1ea2; - t.Aiecyrillic = 0x04d4; - t.Ainvertedbreve = 0x0202; - t.Alpha = 0x0391; - t.Alphatonos = 0x0386; - t.Amacron = 0x0100; - t.Amonospace = 0xff21; - t.Aogonek = 0x0104; - t.Aring = 0x00c5; - t.Aringacute = 0x01fa; - t.Aringbelow = 0x1e00; - t.Aringsmall = 0xf7e5; - t.Asmall = 0xf761; - t.Atilde = 0x00c3; - t.Atildesmall = 0xf7e3; - t.Aybarmenian = 0x0531; - t.B = 0x0042; - t.Bcircle = 0x24b7; - t.Bdotaccent = 0x1e02; - t.Bdotbelow = 0x1e04; - t.Becyrillic = 0x0411; - t.Benarmenian = 0x0532; - t.Beta = 0x0392; - t.Bhook = 0x0181; - t.Blinebelow = 0x1e06; - t.Bmonospace = 0xff22; - t.Brevesmall = 0xf6f4; - t.Bsmall = 0xf762; - t.Btopbar = 0x0182; - t.C = 0x0043; - t.Caarmenian = 0x053e; - t.Cacute = 0x0106; - t.Caron = 0xf6ca; - t.Caronsmall = 0xf6f5; - t.Ccaron = 0x010c; - t.Ccedilla = 0x00c7; - t.Ccedillaacute = 0x1e08; - t.Ccedillasmall = 0xf7e7; - t.Ccircle = 0x24b8; - t.Ccircumflex = 0x0108; - t.Cdot = 0x010a; - t.Cdotaccent = 0x010a; - t.Cedillasmall = 0xf7b8; - t.Chaarmenian = 0x0549; - t.Cheabkhasiancyrillic = 0x04bc; - t.Checyrillic = 0x0427; - t.Chedescenderabkhasiancyrillic = 0x04be; - t.Chedescendercyrillic = 0x04b6; - t.Chedieresiscyrillic = 0x04f4; - t.Cheharmenian = 0x0543; - t.Chekhakassiancyrillic = 0x04cb; - t.Cheverticalstrokecyrillic = 0x04b8; - t.Chi = 0x03a7; - t.Chook = 0x0187; - t.Circumflexsmall = 0xf6f6; - t.Cmonospace = 0xff23; - t.Coarmenian = 0x0551; - t.Csmall = 0xf763; - t.D = 0x0044; - t.DZ = 0x01f1; - t.DZcaron = 0x01c4; - t.Daarmenian = 0x0534; - t.Dafrican = 0x0189; - t.Dcaron = 0x010e; - t.Dcedilla = 0x1e10; - t.Dcircle = 0x24b9; - t.Dcircumflexbelow = 0x1e12; - t.Dcroat = 0x0110; - t.Ddotaccent = 0x1e0a; - t.Ddotbelow = 0x1e0c; - t.Decyrillic = 0x0414; - t.Deicoptic = 0x03ee; - t.Delta = 0x2206; - t.Deltagreek = 0x0394; - t.Dhook = 0x018a; - t.Dieresis = 0xf6cb; - t.DieresisAcute = 0xf6cc; - t.DieresisGrave = 0xf6cd; - t.Dieresissmall = 0xf7a8; - t.Digammagreek = 0x03dc; - t.Djecyrillic = 0x0402; - t.Dlinebelow = 0x1e0e; - t.Dmonospace = 0xff24; - t.Dotaccentsmall = 0xf6f7; - t.Dslash = 0x0110; - t.Dsmall = 0xf764; - t.Dtopbar = 0x018b; - t.Dz = 0x01f2; - t.Dzcaron = 0x01c5; - t.Dzeabkhasiancyrillic = 0x04e0; - t.Dzecyrillic = 0x0405; - t.Dzhecyrillic = 0x040f; - t.E = 0x0045; - t.Eacute = 0x00c9; - t.Eacutesmall = 0xf7e9; - t.Ebreve = 0x0114; - t.Ecaron = 0x011a; - t.Ecedillabreve = 0x1e1c; - t.Echarmenian = 0x0535; - t.Ecircle = 0x24ba; - t.Ecircumflex = 0x00ca; - t.Ecircumflexacute = 0x1ebe; - t.Ecircumflexbelow = 0x1e18; - t.Ecircumflexdotbelow = 0x1ec6; - t.Ecircumflexgrave = 0x1ec0; - t.Ecircumflexhookabove = 0x1ec2; - t.Ecircumflexsmall = 0xf7ea; - t.Ecircumflextilde = 0x1ec4; - t.Ecyrillic = 0x0404; - t.Edblgrave = 0x0204; - t.Edieresis = 0x00cb; - t.Edieresissmall = 0xf7eb; - t.Edot = 0x0116; - t.Edotaccent = 0x0116; - t.Edotbelow = 0x1eb8; - t.Efcyrillic = 0x0424; - t.Egrave = 0x00c8; - t.Egravesmall = 0xf7e8; - t.Eharmenian = 0x0537; - t.Ehookabove = 0x1eba; - t.Eightroman = 0x2167; - t.Einvertedbreve = 0x0206; - t.Eiotifiedcyrillic = 0x0464; - t.Elcyrillic = 0x041b; - t.Elevenroman = 0x216a; - t.Emacron = 0x0112; - t.Emacronacute = 0x1e16; - t.Emacrongrave = 0x1e14; - t.Emcyrillic = 0x041c; - t.Emonospace = 0xff25; - t.Encyrillic = 0x041d; - t.Endescendercyrillic = 0x04a2; - t.Eng = 0x014a; - t.Enghecyrillic = 0x04a4; - t.Enhookcyrillic = 0x04c7; - t.Eogonek = 0x0118; - t.Eopen = 0x0190; - t.Epsilon = 0x0395; - t.Epsilontonos = 0x0388; - t.Ercyrillic = 0x0420; - t.Ereversed = 0x018e; - t.Ereversedcyrillic = 0x042d; - t.Escyrillic = 0x0421; - t.Esdescendercyrillic = 0x04aa; - t.Esh = 0x01a9; - t.Esmall = 0xf765; - t.Eta = 0x0397; - t.Etarmenian = 0x0538; - t.Etatonos = 0x0389; - t.Eth = 0x00d0; - t.Ethsmall = 0xf7f0; - t.Etilde = 0x1ebc; - t.Etildebelow = 0x1e1a; - t.Euro = 0x20ac; - t.Ezh = 0x01b7; - t.Ezhcaron = 0x01ee; - t.Ezhreversed = 0x01b8; - t.F = 0x0046; - t.Fcircle = 0x24bb; - t.Fdotaccent = 0x1e1e; - t.Feharmenian = 0x0556; - t.Feicoptic = 0x03e4; - t.Fhook = 0x0191; - t.Fitacyrillic = 0x0472; - t.Fiveroman = 0x2164; - t.Fmonospace = 0xff26; - t.Fourroman = 0x2163; - t.Fsmall = 0xf766; - t.G = 0x0047; - t.GBsquare = 0x3387; - t.Gacute = 0x01f4; - t.Gamma = 0x0393; - t.Gammaafrican = 0x0194; - t.Gangiacoptic = 0x03ea; - t.Gbreve = 0x011e; - t.Gcaron = 0x01e6; - t.Gcedilla = 0x0122; - t.Gcircle = 0x24bc; - t.Gcircumflex = 0x011c; - t.Gcommaaccent = 0x0122; - t.Gdot = 0x0120; - t.Gdotaccent = 0x0120; - t.Gecyrillic = 0x0413; - t.Ghadarmenian = 0x0542; - t.Ghemiddlehookcyrillic = 0x0494; - t.Ghestrokecyrillic = 0x0492; - t.Gheupturncyrillic = 0x0490; - t.Ghook = 0x0193; - t.Gimarmenian = 0x0533; - t.Gjecyrillic = 0x0403; - t.Gmacron = 0x1e20; - t.Gmonospace = 0xff27; - t.Grave = 0xf6ce; - t.Gravesmall = 0xf760; - t.Gsmall = 0xf767; - t.Gsmallhook = 0x029b; - t.Gstroke = 0x01e4; - t.H = 0x0048; - t.H18533 = 0x25cf; - t.H18543 = 0x25aa; - t.H18551 = 0x25ab; - t.H22073 = 0x25a1; - t.HPsquare = 0x33cb; - t.Haabkhasiancyrillic = 0x04a8; - t.Hadescendercyrillic = 0x04b2; - t.Hardsigncyrillic = 0x042a; - t.Hbar = 0x0126; - t.Hbrevebelow = 0x1e2a; - t.Hcedilla = 0x1e28; - t.Hcircle = 0x24bd; - t.Hcircumflex = 0x0124; - t.Hdieresis = 0x1e26; - t.Hdotaccent = 0x1e22; - t.Hdotbelow = 0x1e24; - t.Hmonospace = 0xff28; - t.Hoarmenian = 0x0540; - t.Horicoptic = 0x03e8; - t.Hsmall = 0xf768; - t.Hungarumlaut = 0xf6cf; - t.Hungarumlautsmall = 0xf6f8; - t.Hzsquare = 0x3390; - t.I = 0x0049; - t.IAcyrillic = 0x042f; - t.IJ = 0x0132; - t.IUcyrillic = 0x042e; - t.Iacute = 0x00cd; - t.Iacutesmall = 0xf7ed; - t.Ibreve = 0x012c; - t.Icaron = 0x01cf; - t.Icircle = 0x24be; - t.Icircumflex = 0x00ce; - t.Icircumflexsmall = 0xf7ee; - t.Icyrillic = 0x0406; - t.Idblgrave = 0x0208; - t.Idieresis = 0x00cf; - t.Idieresisacute = 0x1e2e; - t.Idieresiscyrillic = 0x04e4; - t.Idieresissmall = 0xf7ef; - t.Idot = 0x0130; - t.Idotaccent = 0x0130; - t.Idotbelow = 0x1eca; - t.Iebrevecyrillic = 0x04d6; - t.Iecyrillic = 0x0415; - t.Ifraktur = 0x2111; - t.Igrave = 0x00cc; - t.Igravesmall = 0xf7ec; - t.Ihookabove = 0x1ec8; - t.Iicyrillic = 0x0418; - t.Iinvertedbreve = 0x020a; - t.Iishortcyrillic = 0x0419; - t.Imacron = 0x012a; - t.Imacroncyrillic = 0x04e2; - t.Imonospace = 0xff29; - t.Iniarmenian = 0x053b; - t.Iocyrillic = 0x0401; - t.Iogonek = 0x012e; - t.Iota = 0x0399; - t.Iotaafrican = 0x0196; - t.Iotadieresis = 0x03aa; - t.Iotatonos = 0x038a; - t.Ismall = 0xf769; - t.Istroke = 0x0197; - t.Itilde = 0x0128; - t.Itildebelow = 0x1e2c; - t.Izhitsacyrillic = 0x0474; - t.Izhitsadblgravecyrillic = 0x0476; - t.J = 0x004a; - t.Jaarmenian = 0x0541; - t.Jcircle = 0x24bf; - t.Jcircumflex = 0x0134; - t.Jecyrillic = 0x0408; - t.Jheharmenian = 0x054b; - t.Jmonospace = 0xff2a; - t.Jsmall = 0xf76a; - t.K = 0x004b; - t.KBsquare = 0x3385; - t.KKsquare = 0x33cd; - t.Kabashkircyrillic = 0x04a0; - t.Kacute = 0x1e30; - t.Kacyrillic = 0x041a; - t.Kadescendercyrillic = 0x049a; - t.Kahookcyrillic = 0x04c3; - t.Kappa = 0x039a; - t.Kastrokecyrillic = 0x049e; - t.Kaverticalstrokecyrillic = 0x049c; - t.Kcaron = 0x01e8; - t.Kcedilla = 0x0136; - t.Kcircle = 0x24c0; - t.Kcommaaccent = 0x0136; - t.Kdotbelow = 0x1e32; - t.Keharmenian = 0x0554; - t.Kenarmenian = 0x053f; - t.Khacyrillic = 0x0425; - t.Kheicoptic = 0x03e6; - t.Khook = 0x0198; - t.Kjecyrillic = 0x040c; - t.Klinebelow = 0x1e34; - t.Kmonospace = 0xff2b; - t.Koppacyrillic = 0x0480; - t.Koppagreek = 0x03de; - t.Ksicyrillic = 0x046e; - t.Ksmall = 0xf76b; - t.L = 0x004c; - t.LJ = 0x01c7; - t.LL = 0xf6bf; - t.Lacute = 0x0139; - t.Lambda = 0x039b; - t.Lcaron = 0x013d; - t.Lcedilla = 0x013b; - t.Lcircle = 0x24c1; - t.Lcircumflexbelow = 0x1e3c; - t.Lcommaaccent = 0x013b; - t.Ldot = 0x013f; - t.Ldotaccent = 0x013f; - t.Ldotbelow = 0x1e36; - t.Ldotbelowmacron = 0x1e38; - t.Liwnarmenian = 0x053c; - t.Lj = 0x01c8; - t.Ljecyrillic = 0x0409; - t.Llinebelow = 0x1e3a; - t.Lmonospace = 0xff2c; - t.Lslash = 0x0141; - t.Lslashsmall = 0xf6f9; - t.Lsmall = 0xf76c; - t.M = 0x004d; - t.MBsquare = 0x3386; - t.Macron = 0xf6d0; - t.Macronsmall = 0xf7af; - t.Macute = 0x1e3e; - t.Mcircle = 0x24c2; - t.Mdotaccent = 0x1e40; - t.Mdotbelow = 0x1e42; - t.Menarmenian = 0x0544; - t.Mmonospace = 0xff2d; - t.Msmall = 0xf76d; - t.Mturned = 0x019c; - t.Mu = 0x039c; - t.N = 0x004e; - t.NJ = 0x01ca; - t.Nacute = 0x0143; - t.Ncaron = 0x0147; - t.Ncedilla = 0x0145; - t.Ncircle = 0x24c3; - t.Ncircumflexbelow = 0x1e4a; - t.Ncommaaccent = 0x0145; - t.Ndotaccent = 0x1e44; - t.Ndotbelow = 0x1e46; - t.Nhookleft = 0x019d; - t.Nineroman = 0x2168; - t.Nj = 0x01cb; - t.Njecyrillic = 0x040a; - t.Nlinebelow = 0x1e48; - t.Nmonospace = 0xff2e; - t.Nowarmenian = 0x0546; - t.Nsmall = 0xf76e; - t.Ntilde = 0x00d1; - t.Ntildesmall = 0xf7f1; - t.Nu = 0x039d; - t.O = 0x004f; - t.OE = 0x0152; - t.OEsmall = 0xf6fa; - t.Oacute = 0x00d3; - t.Oacutesmall = 0xf7f3; - t.Obarredcyrillic = 0x04e8; - t.Obarreddieresiscyrillic = 0x04ea; - t.Obreve = 0x014e; - t.Ocaron = 0x01d1; - t.Ocenteredtilde = 0x019f; - t.Ocircle = 0x24c4; - t.Ocircumflex = 0x00d4; - t.Ocircumflexacute = 0x1ed0; - t.Ocircumflexdotbelow = 0x1ed8; - t.Ocircumflexgrave = 0x1ed2; - t.Ocircumflexhookabove = 0x1ed4; - t.Ocircumflexsmall = 0xf7f4; - t.Ocircumflextilde = 0x1ed6; - t.Ocyrillic = 0x041e; - t.Odblacute = 0x0150; - t.Odblgrave = 0x020c; - t.Odieresis = 0x00d6; - t.Odieresiscyrillic = 0x04e6; - t.Odieresissmall = 0xf7f6; - t.Odotbelow = 0x1ecc; - t.Ogoneksmall = 0xf6fb; - t.Ograve = 0x00d2; - t.Ogravesmall = 0xf7f2; - t.Oharmenian = 0x0555; - t.Ohm = 0x2126; - t.Ohookabove = 0x1ece; - t.Ohorn = 0x01a0; - t.Ohornacute = 0x1eda; - t.Ohorndotbelow = 0x1ee2; - t.Ohorngrave = 0x1edc; - t.Ohornhookabove = 0x1ede; - t.Ohorntilde = 0x1ee0; - t.Ohungarumlaut = 0x0150; - t.Oi = 0x01a2; - t.Oinvertedbreve = 0x020e; - t.Omacron = 0x014c; - t.Omacronacute = 0x1e52; - t.Omacrongrave = 0x1e50; - t.Omega = 0x2126; - t.Omegacyrillic = 0x0460; - t.Omegagreek = 0x03a9; - t.Omegaroundcyrillic = 0x047a; - t.Omegatitlocyrillic = 0x047c; - t.Omegatonos = 0x038f; - t.Omicron = 0x039f; - t.Omicrontonos = 0x038c; - t.Omonospace = 0xff2f; - t.Oneroman = 0x2160; - t.Oogonek = 0x01ea; - t.Oogonekmacron = 0x01ec; - t.Oopen = 0x0186; - t.Oslash = 0x00d8; - t.Oslashacute = 0x01fe; - t.Oslashsmall = 0xf7f8; - t.Osmall = 0xf76f; - t.Ostrokeacute = 0x01fe; - t.Otcyrillic = 0x047e; - t.Otilde = 0x00d5; - t.Otildeacute = 0x1e4c; - t.Otildedieresis = 0x1e4e; - t.Otildesmall = 0xf7f5; - t.P = 0x0050; - t.Pacute = 0x1e54; - t.Pcircle = 0x24c5; - t.Pdotaccent = 0x1e56; - t.Pecyrillic = 0x041f; - t.Peharmenian = 0x054a; - t.Pemiddlehookcyrillic = 0x04a6; - t.Phi = 0x03a6; - t.Phook = 0x01a4; - t.Pi = 0x03a0; - t.Piwrarmenian = 0x0553; - t.Pmonospace = 0xff30; - t.Psi = 0x03a8; - t.Psicyrillic = 0x0470; - t.Psmall = 0xf770; - t.Q = 0x0051; - t.Qcircle = 0x24c6; - t.Qmonospace = 0xff31; - t.Qsmall = 0xf771; - t.R = 0x0052; - t.Raarmenian = 0x054c; - t.Racute = 0x0154; - t.Rcaron = 0x0158; - t.Rcedilla = 0x0156; - t.Rcircle = 0x24c7; - t.Rcommaaccent = 0x0156; - t.Rdblgrave = 0x0210; - t.Rdotaccent = 0x1e58; - t.Rdotbelow = 0x1e5a; - t.Rdotbelowmacron = 0x1e5c; - t.Reharmenian = 0x0550; - t.Rfraktur = 0x211c; - t.Rho = 0x03a1; - t.Ringsmall = 0xf6fc; - t.Rinvertedbreve = 0x0212; - t.Rlinebelow = 0x1e5e; - t.Rmonospace = 0xff32; - t.Rsmall = 0xf772; - t.Rsmallinverted = 0x0281; - t.Rsmallinvertedsuperior = 0x02b6; - t.S = 0x0053; - t.SF010000 = 0x250c; - t.SF020000 = 0x2514; - t.SF030000 = 0x2510; - t.SF040000 = 0x2518; - t.SF050000 = 0x253c; - t.SF060000 = 0x252c; - t.SF070000 = 0x2534; - t.SF080000 = 0x251c; - t.SF090000 = 0x2524; - t.SF100000 = 0x2500; - t.SF110000 = 0x2502; - t.SF190000 = 0x2561; - t.SF200000 = 0x2562; - t.SF210000 = 0x2556; - t.SF220000 = 0x2555; - t.SF230000 = 0x2563; - t.SF240000 = 0x2551; - t.SF250000 = 0x2557; - t.SF260000 = 0x255d; - t.SF270000 = 0x255c; - t.SF280000 = 0x255b; - t.SF360000 = 0x255e; - t.SF370000 = 0x255f; - t.SF380000 = 0x255a; - t.SF390000 = 0x2554; - t.SF400000 = 0x2569; - t.SF410000 = 0x2566; - t.SF420000 = 0x2560; - t.SF430000 = 0x2550; - t.SF440000 = 0x256c; - t.SF450000 = 0x2567; - t.SF460000 = 0x2568; - t.SF470000 = 0x2564; - t.SF480000 = 0x2565; - t.SF490000 = 0x2559; - t.SF500000 = 0x2558; - t.SF510000 = 0x2552; - t.SF520000 = 0x2553; - t.SF530000 = 0x256b; - t.SF540000 = 0x256a; - t.Sacute = 0x015a; - t.Sacutedotaccent = 0x1e64; - t.Sampigreek = 0x03e0; - t.Scaron = 0x0160; - t.Scarondotaccent = 0x1e66; - t.Scaronsmall = 0xf6fd; - t.Scedilla = 0x015e; - t.Schwa = 0x018f; - t.Schwacyrillic = 0x04d8; - t.Schwadieresiscyrillic = 0x04da; - t.Scircle = 0x24c8; - t.Scircumflex = 0x015c; - t.Scommaaccent = 0x0218; - t.Sdotaccent = 0x1e60; - t.Sdotbelow = 0x1e62; - t.Sdotbelowdotaccent = 0x1e68; - t.Seharmenian = 0x054d; - t.Sevenroman = 0x2166; - t.Shaarmenian = 0x0547; - t.Shacyrillic = 0x0428; - t.Shchacyrillic = 0x0429; - t.Sheicoptic = 0x03e2; - t.Shhacyrillic = 0x04ba; - t.Shimacoptic = 0x03ec; - t.Sigma = 0x03a3; - t.Sixroman = 0x2165; - t.Smonospace = 0xff33; - t.Softsigncyrillic = 0x042c; - t.Ssmall = 0xf773; - t.Stigmagreek = 0x03da; - t.T = 0x0054; - t.Tau = 0x03a4; - t.Tbar = 0x0166; - t.Tcaron = 0x0164; - t.Tcedilla = 0x0162; - t.Tcircle = 0x24c9; - t.Tcircumflexbelow = 0x1e70; - t.Tcommaaccent = 0x0162; - t.Tdotaccent = 0x1e6a; - t.Tdotbelow = 0x1e6c; - t.Tecyrillic = 0x0422; - t.Tedescendercyrillic = 0x04ac; - t.Tenroman = 0x2169; - t.Tetsecyrillic = 0x04b4; - t.Theta = 0x0398; - t.Thook = 0x01ac; - t.Thorn = 0x00de; - t.Thornsmall = 0xf7fe; - t.Threeroman = 0x2162; - t.Tildesmall = 0xf6fe; - t.Tiwnarmenian = 0x054f; - t.Tlinebelow = 0x1e6e; - t.Tmonospace = 0xff34; - t.Toarmenian = 0x0539; - t.Tonefive = 0x01bc; - t.Tonesix = 0x0184; - t.Tonetwo = 0x01a7; - t.Tretroflexhook = 0x01ae; - t.Tsecyrillic = 0x0426; - t.Tshecyrillic = 0x040b; - t.Tsmall = 0xf774; - t.Twelveroman = 0x216b; - t.Tworoman = 0x2161; - t.U = 0x0055; - t.Uacute = 0x00da; - t.Uacutesmall = 0xf7fa; - t.Ubreve = 0x016c; - t.Ucaron = 0x01d3; - t.Ucircle = 0x24ca; - t.Ucircumflex = 0x00db; - t.Ucircumflexbelow = 0x1e76; - t.Ucircumflexsmall = 0xf7fb; - t.Ucyrillic = 0x0423; - t.Udblacute = 0x0170; - t.Udblgrave = 0x0214; - t.Udieresis = 0x00dc; - t.Udieresisacute = 0x01d7; - t.Udieresisbelow = 0x1e72; - t.Udieresiscaron = 0x01d9; - t.Udieresiscyrillic = 0x04f0; - t.Udieresisgrave = 0x01db; - t.Udieresismacron = 0x01d5; - t.Udieresissmall = 0xf7fc; - t.Udotbelow = 0x1ee4; - t.Ugrave = 0x00d9; - t.Ugravesmall = 0xf7f9; - t.Uhookabove = 0x1ee6; - t.Uhorn = 0x01af; - t.Uhornacute = 0x1ee8; - t.Uhorndotbelow = 0x1ef0; - t.Uhorngrave = 0x1eea; - t.Uhornhookabove = 0x1eec; - t.Uhorntilde = 0x1eee; - t.Uhungarumlaut = 0x0170; - t.Uhungarumlautcyrillic = 0x04f2; - t.Uinvertedbreve = 0x0216; - t.Ukcyrillic = 0x0478; - t.Umacron = 0x016a; - t.Umacroncyrillic = 0x04ee; - t.Umacrondieresis = 0x1e7a; - t.Umonospace = 0xff35; - t.Uogonek = 0x0172; - t.Upsilon = 0x03a5; - t.Upsilon1 = 0x03d2; - t.Upsilonacutehooksymbolgreek = 0x03d3; - t.Upsilonafrican = 0x01b1; - t.Upsilondieresis = 0x03ab; - t.Upsilondieresishooksymbolgreek = 0x03d4; - t.Upsilonhooksymbol = 0x03d2; - t.Upsilontonos = 0x038e; - t.Uring = 0x016e; - t.Ushortcyrillic = 0x040e; - t.Usmall = 0xf775; - t.Ustraightcyrillic = 0x04ae; - t.Ustraightstrokecyrillic = 0x04b0; - t.Utilde = 0x0168; - t.Utildeacute = 0x1e78; - t.Utildebelow = 0x1e74; - t.V = 0x0056; - t.Vcircle = 0x24cb; - t.Vdotbelow = 0x1e7e; - t.Vecyrillic = 0x0412; - t.Vewarmenian = 0x054e; - t.Vhook = 0x01b2; - t.Vmonospace = 0xff36; - t.Voarmenian = 0x0548; - t.Vsmall = 0xf776; - t.Vtilde = 0x1e7c; - t.W = 0x0057; - t.Wacute = 0x1e82; - t.Wcircle = 0x24cc; - t.Wcircumflex = 0x0174; - t.Wdieresis = 0x1e84; - t.Wdotaccent = 0x1e86; - t.Wdotbelow = 0x1e88; - t.Wgrave = 0x1e80; - t.Wmonospace = 0xff37; - t.Wsmall = 0xf777; - t.X = 0x0058; - t.Xcircle = 0x24cd; - t.Xdieresis = 0x1e8c; - t.Xdotaccent = 0x1e8a; - t.Xeharmenian = 0x053d; - t.Xi = 0x039e; - t.Xmonospace = 0xff38; - t.Xsmall = 0xf778; - t.Y = 0x0059; - t.Yacute = 0x00dd; - t.Yacutesmall = 0xf7fd; - t.Yatcyrillic = 0x0462; - t.Ycircle = 0x24ce; - t.Ycircumflex = 0x0176; - t.Ydieresis = 0x0178; - t.Ydieresissmall = 0xf7ff; - t.Ydotaccent = 0x1e8e; - t.Ydotbelow = 0x1ef4; - t.Yericyrillic = 0x042b; - t.Yerudieresiscyrillic = 0x04f8; - t.Ygrave = 0x1ef2; - t.Yhook = 0x01b3; - t.Yhookabove = 0x1ef6; - t.Yiarmenian = 0x0545; - t.Yicyrillic = 0x0407; - t.Yiwnarmenian = 0x0552; - t.Ymonospace = 0xff39; - t.Ysmall = 0xf779; - t.Ytilde = 0x1ef8; - t.Yusbigcyrillic = 0x046a; - t.Yusbigiotifiedcyrillic = 0x046c; - t.Yuslittlecyrillic = 0x0466; - t.Yuslittleiotifiedcyrillic = 0x0468; - t.Z = 0x005a; - t.Zaarmenian = 0x0536; - t.Zacute = 0x0179; - t.Zcaron = 0x017d; - t.Zcaronsmall = 0xf6ff; - t.Zcircle = 0x24cf; - t.Zcircumflex = 0x1e90; - t.Zdot = 0x017b; - t.Zdotaccent = 0x017b; - t.Zdotbelow = 0x1e92; - t.Zecyrillic = 0x0417; - t.Zedescendercyrillic = 0x0498; - t.Zedieresiscyrillic = 0x04de; - t.Zeta = 0x0396; - t.Zhearmenian = 0x053a; - t.Zhebrevecyrillic = 0x04c1; - t.Zhecyrillic = 0x0416; - t.Zhedescendercyrillic = 0x0496; - t.Zhedieresiscyrillic = 0x04dc; - t.Zlinebelow = 0x1e94; - t.Zmonospace = 0xff3a; - t.Zsmall = 0xf77a; - t.Zstroke = 0x01b5; - t.a = 0x0061; - t.aabengali = 0x0986; - t.aacute = 0x00e1; - t.aadeva = 0x0906; - t.aagujarati = 0x0a86; - t.aagurmukhi = 0x0a06; - t.aamatragurmukhi = 0x0a3e; - t.aarusquare = 0x3303; - t.aavowelsignbengali = 0x09be; - t.aavowelsigndeva = 0x093e; - t.aavowelsigngujarati = 0x0abe; - t.abbreviationmarkarmenian = 0x055f; - t.abbreviationsigndeva = 0x0970; - t.abengali = 0x0985; - t.abopomofo = 0x311a; - t.abreve = 0x0103; - t.abreveacute = 0x1eaf; - t.abrevecyrillic = 0x04d1; - t.abrevedotbelow = 0x1eb7; - t.abrevegrave = 0x1eb1; - t.abrevehookabove = 0x1eb3; - t.abrevetilde = 0x1eb5; - t.acaron = 0x01ce; - t.acircle = 0x24d0; - t.acircumflex = 0x00e2; - t.acircumflexacute = 0x1ea5; - t.acircumflexdotbelow = 0x1ead; - t.acircumflexgrave = 0x1ea7; - t.acircumflexhookabove = 0x1ea9; - t.acircumflextilde = 0x1eab; - t.acute = 0x00b4; - t.acutebelowcmb = 0x0317; - t.acutecmb = 0x0301; - t.acutecomb = 0x0301; - t.acutedeva = 0x0954; - t.acutelowmod = 0x02cf; - t.acutetonecmb = 0x0341; - t.acyrillic = 0x0430; - t.adblgrave = 0x0201; - t.addakgurmukhi = 0x0a71; - t.adeva = 0x0905; - t.adieresis = 0x00e4; - t.adieresiscyrillic = 0x04d3; - t.adieresismacron = 0x01df; - t.adotbelow = 0x1ea1; - t.adotmacron = 0x01e1; - t.ae = 0x00e6; - t.aeacute = 0x01fd; - t.aekorean = 0x3150; - t.aemacron = 0x01e3; - t.afii00208 = 0x2015; - t.afii08941 = 0x20a4; - t.afii10017 = 0x0410; - t.afii10018 = 0x0411; - t.afii10019 = 0x0412; - t.afii10020 = 0x0413; - t.afii10021 = 0x0414; - t.afii10022 = 0x0415; - t.afii10023 = 0x0401; - t.afii10024 = 0x0416; - t.afii10025 = 0x0417; - t.afii10026 = 0x0418; - t.afii10027 = 0x0419; - t.afii10028 = 0x041a; - t.afii10029 = 0x041b; - t.afii10030 = 0x041c; - t.afii10031 = 0x041d; - t.afii10032 = 0x041e; - t.afii10033 = 0x041f; - t.afii10034 = 0x0420; - t.afii10035 = 0x0421; - t.afii10036 = 0x0422; - t.afii10037 = 0x0423; - t.afii10038 = 0x0424; - t.afii10039 = 0x0425; - t.afii10040 = 0x0426; - t.afii10041 = 0x0427; - t.afii10042 = 0x0428; - t.afii10043 = 0x0429; - t.afii10044 = 0x042a; - t.afii10045 = 0x042b; - t.afii10046 = 0x042c; - t.afii10047 = 0x042d; - t.afii10048 = 0x042e; - t.afii10049 = 0x042f; - t.afii10050 = 0x0490; - t.afii10051 = 0x0402; - t.afii10052 = 0x0403; - t.afii10053 = 0x0404; - t.afii10054 = 0x0405; - t.afii10055 = 0x0406; - t.afii10056 = 0x0407; - t.afii10057 = 0x0408; - t.afii10058 = 0x0409; - t.afii10059 = 0x040a; - t.afii10060 = 0x040b; - t.afii10061 = 0x040c; - t.afii10062 = 0x040e; - t.afii10063 = 0xf6c4; - t.afii10064 = 0xf6c5; - t.afii10065 = 0x0430; - t.afii10066 = 0x0431; - t.afii10067 = 0x0432; - t.afii10068 = 0x0433; - t.afii10069 = 0x0434; - t.afii10070 = 0x0435; - t.afii10071 = 0x0451; - t.afii10072 = 0x0436; - t.afii10073 = 0x0437; - t.afii10074 = 0x0438; - t.afii10075 = 0x0439; - t.afii10076 = 0x043a; - t.afii10077 = 0x043b; - t.afii10078 = 0x043c; - t.afii10079 = 0x043d; - t.afii10080 = 0x043e; - t.afii10081 = 0x043f; - t.afii10082 = 0x0440; - t.afii10083 = 0x0441; - t.afii10084 = 0x0442; - t.afii10085 = 0x0443; - t.afii10086 = 0x0444; - t.afii10087 = 0x0445; - t.afii10088 = 0x0446; - t.afii10089 = 0x0447; - t.afii10090 = 0x0448; - t.afii10091 = 0x0449; - t.afii10092 = 0x044a; - t.afii10093 = 0x044b; - t.afii10094 = 0x044c; - t.afii10095 = 0x044d; - t.afii10096 = 0x044e; - t.afii10097 = 0x044f; - t.afii10098 = 0x0491; - t.afii10099 = 0x0452; - t.afii10100 = 0x0453; - t.afii10101 = 0x0454; - t.afii10102 = 0x0455; - t.afii10103 = 0x0456; - t.afii10104 = 0x0457; - t.afii10105 = 0x0458; - t.afii10106 = 0x0459; - t.afii10107 = 0x045a; - t.afii10108 = 0x045b; - t.afii10109 = 0x045c; - t.afii10110 = 0x045e; - t.afii10145 = 0x040f; - t.afii10146 = 0x0462; - t.afii10147 = 0x0472; - t.afii10148 = 0x0474; - t.afii10192 = 0xf6c6; - t.afii10193 = 0x045f; - t.afii10194 = 0x0463; - t.afii10195 = 0x0473; - t.afii10196 = 0x0475; - t.afii10831 = 0xf6c7; - t.afii10832 = 0xf6c8; - t.afii10846 = 0x04d9; - t.afii299 = 0x200e; - t.afii300 = 0x200f; - t.afii301 = 0x200d; - t.afii57381 = 0x066a; - t.afii57388 = 0x060c; - t.afii57392 = 0x0660; - t.afii57393 = 0x0661; - t.afii57394 = 0x0662; - t.afii57395 = 0x0663; - t.afii57396 = 0x0664; - t.afii57397 = 0x0665; - t.afii57398 = 0x0666; - t.afii57399 = 0x0667; - t.afii57400 = 0x0668; - t.afii57401 = 0x0669; - t.afii57403 = 0x061b; - t.afii57407 = 0x061f; - t.afii57409 = 0x0621; - t.afii57410 = 0x0622; - t.afii57411 = 0x0623; - t.afii57412 = 0x0624; - t.afii57413 = 0x0625; - t.afii57414 = 0x0626; - t.afii57415 = 0x0627; - t.afii57416 = 0x0628; - t.afii57417 = 0x0629; - t.afii57418 = 0x062a; - t.afii57419 = 0x062b; - t.afii57420 = 0x062c; - t.afii57421 = 0x062d; - t.afii57422 = 0x062e; - t.afii57423 = 0x062f; - t.afii57424 = 0x0630; - t.afii57425 = 0x0631; - t.afii57426 = 0x0632; - t.afii57427 = 0x0633; - t.afii57428 = 0x0634; - t.afii57429 = 0x0635; - t.afii57430 = 0x0636; - t.afii57431 = 0x0637; - t.afii57432 = 0x0638; - t.afii57433 = 0x0639; - t.afii57434 = 0x063a; - t.afii57440 = 0x0640; - t.afii57441 = 0x0641; - t.afii57442 = 0x0642; - t.afii57443 = 0x0643; - t.afii57444 = 0x0644; - t.afii57445 = 0x0645; - t.afii57446 = 0x0646; - t.afii57448 = 0x0648; - t.afii57449 = 0x0649; - t.afii57450 = 0x064a; - t.afii57451 = 0x064b; - t.afii57452 = 0x064c; - t.afii57453 = 0x064d; - t.afii57454 = 0x064e; - t.afii57455 = 0x064f; - t.afii57456 = 0x0650; - t.afii57457 = 0x0651; - t.afii57458 = 0x0652; - t.afii57470 = 0x0647; - t.afii57505 = 0x06a4; - t.afii57506 = 0x067e; - t.afii57507 = 0x0686; - t.afii57508 = 0x0698; - t.afii57509 = 0x06af; - t.afii57511 = 0x0679; - t.afii57512 = 0x0688; - t.afii57513 = 0x0691; - t.afii57514 = 0x06ba; - t.afii57519 = 0x06d2; - t.afii57534 = 0x06d5; - t.afii57636 = 0x20aa; - t.afii57645 = 0x05be; - t.afii57658 = 0x05c3; - t.afii57664 = 0x05d0; - t.afii57665 = 0x05d1; - t.afii57666 = 0x05d2; - t.afii57667 = 0x05d3; - t.afii57668 = 0x05d4; - t.afii57669 = 0x05d5; - t.afii57670 = 0x05d6; - t.afii57671 = 0x05d7; - t.afii57672 = 0x05d8; - t.afii57673 = 0x05d9; - t.afii57674 = 0x05da; - t.afii57675 = 0x05db; - t.afii57676 = 0x05dc; - t.afii57677 = 0x05dd; - t.afii57678 = 0x05de; - t.afii57679 = 0x05df; - t.afii57680 = 0x05e0; - t.afii57681 = 0x05e1; - t.afii57682 = 0x05e2; - t.afii57683 = 0x05e3; - t.afii57684 = 0x05e4; - t.afii57685 = 0x05e5; - t.afii57686 = 0x05e6; - t.afii57687 = 0x05e7; - t.afii57688 = 0x05e8; - t.afii57689 = 0x05e9; - t.afii57690 = 0x05ea; - t.afii57694 = 0xfb2a; - t.afii57695 = 0xfb2b; - t.afii57700 = 0xfb4b; - t.afii57705 = 0xfb1f; - t.afii57716 = 0x05f0; - t.afii57717 = 0x05f1; - t.afii57718 = 0x05f2; - t.afii57723 = 0xfb35; - t.afii57793 = 0x05b4; - t.afii57794 = 0x05b5; - t.afii57795 = 0x05b6; - t.afii57796 = 0x05bb; - t.afii57797 = 0x05b8; - t.afii57798 = 0x05b7; - t.afii57799 = 0x05b0; - t.afii57800 = 0x05b2; - t.afii57801 = 0x05b1; - t.afii57802 = 0x05b3; - t.afii57803 = 0x05c2; - t.afii57804 = 0x05c1; - t.afii57806 = 0x05b9; - t.afii57807 = 0x05bc; - t.afii57839 = 0x05bd; - t.afii57841 = 0x05bf; - t.afii57842 = 0x05c0; - t.afii57929 = 0x02bc; - t.afii61248 = 0x2105; - t.afii61289 = 0x2113; - t.afii61352 = 0x2116; - t.afii61573 = 0x202c; - t.afii61574 = 0x202d; - t.afii61575 = 0x202e; - t.afii61664 = 0x200c; - t.afii63167 = 0x066d; - t.afii64937 = 0x02bd; - t.agrave = 0x00e0; - t.agujarati = 0x0a85; - t.agurmukhi = 0x0a05; - t.ahiragana = 0x3042; - t.ahookabove = 0x1ea3; - t.aibengali = 0x0990; - t.aibopomofo = 0x311e; - t.aideva = 0x0910; - t.aiecyrillic = 0x04d5; - t.aigujarati = 0x0a90; - t.aigurmukhi = 0x0a10; - t.aimatragurmukhi = 0x0a48; - t.ainarabic = 0x0639; - t.ainfinalarabic = 0xfeca; - t.aininitialarabic = 0xfecb; - t.ainmedialarabic = 0xfecc; - t.ainvertedbreve = 0x0203; - t.aivowelsignbengali = 0x09c8; - t.aivowelsigndeva = 0x0948; - t.aivowelsigngujarati = 0x0ac8; - t.akatakana = 0x30a2; - t.akatakanahalfwidth = 0xff71; - t.akorean = 0x314f; - t.alef = 0x05d0; - t.alefarabic = 0x0627; - t.alefdageshhebrew = 0xfb30; - t.aleffinalarabic = 0xfe8e; - t.alefhamzaabovearabic = 0x0623; - t.alefhamzaabovefinalarabic = 0xfe84; - t.alefhamzabelowarabic = 0x0625; - t.alefhamzabelowfinalarabic = 0xfe88; - t.alefhebrew = 0x05d0; - t.aleflamedhebrew = 0xfb4f; - t.alefmaddaabovearabic = 0x0622; - t.alefmaddaabovefinalarabic = 0xfe82; - t.alefmaksuraarabic = 0x0649; - t.alefmaksurafinalarabic = 0xfef0; - t.alefmaksurainitialarabic = 0xfef3; - t.alefmaksuramedialarabic = 0xfef4; - t.alefpatahhebrew = 0xfb2e; - t.alefqamatshebrew = 0xfb2f; - t.aleph = 0x2135; - t.allequal = 0x224c; - t.alpha = 0x03b1; - t.alphatonos = 0x03ac; - t.amacron = 0x0101; - t.amonospace = 0xff41; - t.ampersand = 0x0026; - t.ampersandmonospace = 0xff06; - t.ampersandsmall = 0xf726; - t.amsquare = 0x33c2; - t.anbopomofo = 0x3122; - t.angbopomofo = 0x3124; - t.angbracketleft = 0x3008; - t.angbracketright = 0x3009; - t.angkhankhuthai = 0x0e5a; - t.angle = 0x2220; - t.anglebracketleft = 0x3008; - t.anglebracketleftvertical = 0xfe3f; - t.anglebracketright = 0x3009; - t.anglebracketrightvertical = 0xfe40; - t.angleleft = 0x2329; - t.angleright = 0x232a; - t.angstrom = 0x212b; - t.anoteleia = 0x0387; - t.anudattadeva = 0x0952; - t.anusvarabengali = 0x0982; - t.anusvaradeva = 0x0902; - t.anusvaragujarati = 0x0a82; - t.aogonek = 0x0105; - t.apaatosquare = 0x3300; - t.aparen = 0x249c; - t.apostrophearmenian = 0x055a; - t.apostrophemod = 0x02bc; - t.apple = 0xf8ff; - t.approaches = 0x2250; - t.approxequal = 0x2248; - t.approxequalorimage = 0x2252; - t.approximatelyequal = 0x2245; - t.araeaekorean = 0x318e; - t.araeakorean = 0x318d; - t.arc = 0x2312; - t.arighthalfring = 0x1e9a; - t.aring = 0x00e5; - t.aringacute = 0x01fb; - t.aringbelow = 0x1e01; - t.arrowboth = 0x2194; - t.arrowdashdown = 0x21e3; - t.arrowdashleft = 0x21e0; - t.arrowdashright = 0x21e2; - t.arrowdashup = 0x21e1; - t.arrowdblboth = 0x21d4; - t.arrowdbldown = 0x21d3; - t.arrowdblleft = 0x21d0; - t.arrowdblright = 0x21d2; - t.arrowdblup = 0x21d1; - t.arrowdown = 0x2193; - t.arrowdownleft = 0x2199; - t.arrowdownright = 0x2198; - t.arrowdownwhite = 0x21e9; - t.arrowheaddownmod = 0x02c5; - t.arrowheadleftmod = 0x02c2; - t.arrowheadrightmod = 0x02c3; - t.arrowheadupmod = 0x02c4; - t.arrowhorizex = 0xf8e7; - t.arrowleft = 0x2190; - t.arrowleftdbl = 0x21d0; - t.arrowleftdblstroke = 0x21cd; - t.arrowleftoverright = 0x21c6; - t.arrowleftwhite = 0x21e6; - t.arrowright = 0x2192; - t.arrowrightdblstroke = 0x21cf; - t.arrowrightheavy = 0x279e; - t.arrowrightoverleft = 0x21c4; - t.arrowrightwhite = 0x21e8; - t.arrowtableft = 0x21e4; - t.arrowtabright = 0x21e5; - t.arrowup = 0x2191; - t.arrowupdn = 0x2195; - t.arrowupdnbse = 0x21a8; - t.arrowupdownbase = 0x21a8; - t.arrowupleft = 0x2196; - t.arrowupleftofdown = 0x21c5; - t.arrowupright = 0x2197; - t.arrowupwhite = 0x21e7; - t.arrowvertex = 0xf8e6; - t.asciicircum = 0x005e; - t.asciicircummonospace = 0xff3e; - t.asciitilde = 0x007e; - t.asciitildemonospace = 0xff5e; - t.ascript = 0x0251; - t.ascriptturned = 0x0252; - t.asmallhiragana = 0x3041; - t.asmallkatakana = 0x30a1; - t.asmallkatakanahalfwidth = 0xff67; - t.asterisk = 0x002a; - t.asteriskaltonearabic = 0x066d; - t.asteriskarabic = 0x066d; - t.asteriskmath = 0x2217; - t.asteriskmonospace = 0xff0a; - t.asterisksmall = 0xfe61; - t.asterism = 0x2042; - t.asuperior = 0xf6e9; - t.asymptoticallyequal = 0x2243; - t.at = 0x0040; - t.atilde = 0x00e3; - t.atmonospace = 0xff20; - t.atsmall = 0xfe6b; - t.aturned = 0x0250; - t.aubengali = 0x0994; - t.aubopomofo = 0x3120; - t.audeva = 0x0914; - t.augujarati = 0x0a94; - t.augurmukhi = 0x0a14; - t.aulengthmarkbengali = 0x09d7; - t.aumatragurmukhi = 0x0a4c; - t.auvowelsignbengali = 0x09cc; - t.auvowelsigndeva = 0x094c; - t.auvowelsigngujarati = 0x0acc; - t.avagrahadeva = 0x093d; - t.aybarmenian = 0x0561; - t.ayin = 0x05e2; - t.ayinaltonehebrew = 0xfb20; - t.ayinhebrew = 0x05e2; - t.b = 0x0062; - t.babengali = 0x09ac; - t.backslash = 0x005c; - t.backslashmonospace = 0xff3c; - t.badeva = 0x092c; - t.bagujarati = 0x0aac; - t.bagurmukhi = 0x0a2c; - t.bahiragana = 0x3070; - t.bahtthai = 0x0e3f; - t.bakatakana = 0x30d0; - t.bar = 0x007c; - t.barmonospace = 0xff5c; - t.bbopomofo = 0x3105; - t.bcircle = 0x24d1; - t.bdotaccent = 0x1e03; - t.bdotbelow = 0x1e05; - t.beamedsixteenthnotes = 0x266c; - t.because = 0x2235; - t.becyrillic = 0x0431; - t.beharabic = 0x0628; - t.behfinalarabic = 0xfe90; - t.behinitialarabic = 0xfe91; - t.behiragana = 0x3079; - t.behmedialarabic = 0xfe92; - t.behmeeminitialarabic = 0xfc9f; - t.behmeemisolatedarabic = 0xfc08; - t.behnoonfinalarabic = 0xfc6d; - t.bekatakana = 0x30d9; - t.benarmenian = 0x0562; - t.bet = 0x05d1; - t.beta = 0x03b2; - t.betasymbolgreek = 0x03d0; - t.betdagesh = 0xfb31; - t.betdageshhebrew = 0xfb31; - t.bethebrew = 0x05d1; - t.betrafehebrew = 0xfb4c; - t.bhabengali = 0x09ad; - t.bhadeva = 0x092d; - t.bhagujarati = 0x0aad; - t.bhagurmukhi = 0x0a2d; - t.bhook = 0x0253; - t.bihiragana = 0x3073; - t.bikatakana = 0x30d3; - t.bilabialclick = 0x0298; - t.bindigurmukhi = 0x0a02; - t.birusquare = 0x3331; - t.blackcircle = 0x25cf; - t.blackdiamond = 0x25c6; - t.blackdownpointingtriangle = 0x25bc; - t.blackleftpointingpointer = 0x25c4; - t.blackleftpointingtriangle = 0x25c0; - t.blacklenticularbracketleft = 0x3010; - t.blacklenticularbracketleftvertical = 0xfe3b; - t.blacklenticularbracketright = 0x3011; - t.blacklenticularbracketrightvertical = 0xfe3c; - t.blacklowerlefttriangle = 0x25e3; - t.blacklowerrighttriangle = 0x25e2; - t.blackrectangle = 0x25ac; - t.blackrightpointingpointer = 0x25ba; - t.blackrightpointingtriangle = 0x25b6; - t.blacksmallsquare = 0x25aa; - t.blacksmilingface = 0x263b; - t.blacksquare = 0x25a0; - t.blackstar = 0x2605; - t.blackupperlefttriangle = 0x25e4; - t.blackupperrighttriangle = 0x25e5; - t.blackuppointingsmalltriangle = 0x25b4; - t.blackuppointingtriangle = 0x25b2; - t.blank = 0x2423; - t.blinebelow = 0x1e07; - t.block = 0x2588; - t.bmonospace = 0xff42; - t.bobaimaithai = 0x0e1a; - t.bohiragana = 0x307c; - t.bokatakana = 0x30dc; - t.bparen = 0x249d; - t.bqsquare = 0x33c3; - t.braceex = 0xf8f4; - t.braceleft = 0x007b; - t.braceleftbt = 0xf8f3; - t.braceleftmid = 0xf8f2; - t.braceleftmonospace = 0xff5b; - t.braceleftsmall = 0xfe5b; - t.bracelefttp = 0xf8f1; - t.braceleftvertical = 0xfe37; - t.braceright = 0x007d; - t.bracerightbt = 0xf8fe; - t.bracerightmid = 0xf8fd; - t.bracerightmonospace = 0xff5d; - t.bracerightsmall = 0xfe5c; - t.bracerighttp = 0xf8fc; - t.bracerightvertical = 0xfe38; - t.bracketleft = 0x005b; - t.bracketleftbt = 0xf8f0; - t.bracketleftex = 0xf8ef; - t.bracketleftmonospace = 0xff3b; - t.bracketlefttp = 0xf8ee; - t.bracketright = 0x005d; - t.bracketrightbt = 0xf8fb; - t.bracketrightex = 0xf8fa; - t.bracketrightmonospace = 0xff3d; - t.bracketrighttp = 0xf8f9; - t.breve = 0x02d8; - t.brevebelowcmb = 0x032e; - t.brevecmb = 0x0306; - t.breveinvertedbelowcmb = 0x032f; - t.breveinvertedcmb = 0x0311; - t.breveinverteddoublecmb = 0x0361; - t.bridgebelowcmb = 0x032a; - t.bridgeinvertedbelowcmb = 0x033a; - t.brokenbar = 0x00a6; - t.bstroke = 0x0180; - t.bsuperior = 0xf6ea; - t.btopbar = 0x0183; - t.buhiragana = 0x3076; - t.bukatakana = 0x30d6; - t.bullet = 0x2022; - t.bulletinverse = 0x25d8; - t.bulletoperator = 0x2219; - t.bullseye = 0x25ce; - t.c = 0x0063; - t.caarmenian = 0x056e; - t.cabengali = 0x099a; - t.cacute = 0x0107; - t.cadeva = 0x091a; - t.cagujarati = 0x0a9a; - t.cagurmukhi = 0x0a1a; - t.calsquare = 0x3388; - t.candrabindubengali = 0x0981; - t.candrabinducmb = 0x0310; - t.candrabindudeva = 0x0901; - t.candrabindugujarati = 0x0a81; - t.capslock = 0x21ea; - t.careof = 0x2105; - t.caron = 0x02c7; - t.caronbelowcmb = 0x032c; - t.caroncmb = 0x030c; - t.carriagereturn = 0x21b5; - t.cbopomofo = 0x3118; - t.ccaron = 0x010d; - t.ccedilla = 0x00e7; - t.ccedillaacute = 0x1e09; - t.ccircle = 0x24d2; - t.ccircumflex = 0x0109; - t.ccurl = 0x0255; - t.cdot = 0x010b; - t.cdotaccent = 0x010b; - t.cdsquare = 0x33c5; - t.cedilla = 0x00b8; - t.cedillacmb = 0x0327; - t.cent = 0x00a2; - t.centigrade = 0x2103; - t.centinferior = 0xf6df; - t.centmonospace = 0xffe0; - t.centoldstyle = 0xf7a2; - t.centsuperior = 0xf6e0; - t.chaarmenian = 0x0579; - t.chabengali = 0x099b; - t.chadeva = 0x091b; - t.chagujarati = 0x0a9b; - t.chagurmukhi = 0x0a1b; - t.chbopomofo = 0x3114; - t.cheabkhasiancyrillic = 0x04bd; - t.checkmark = 0x2713; - t.checyrillic = 0x0447; - t.chedescenderabkhasiancyrillic = 0x04bf; - t.chedescendercyrillic = 0x04b7; - t.chedieresiscyrillic = 0x04f5; - t.cheharmenian = 0x0573; - t.chekhakassiancyrillic = 0x04cc; - t.cheverticalstrokecyrillic = 0x04b9; - t.chi = 0x03c7; - t.chieuchacirclekorean = 0x3277; - t.chieuchaparenkorean = 0x3217; - t.chieuchcirclekorean = 0x3269; - t.chieuchkorean = 0x314a; - t.chieuchparenkorean = 0x3209; - t.chochangthai = 0x0e0a; - t.chochanthai = 0x0e08; - t.chochingthai = 0x0e09; - t.chochoethai = 0x0e0c; - t.chook = 0x0188; - t.cieucacirclekorean = 0x3276; - t.cieucaparenkorean = 0x3216; - t.cieuccirclekorean = 0x3268; - t.cieuckorean = 0x3148; - t.cieucparenkorean = 0x3208; - t.cieucuparenkorean = 0x321c; - t.circle = 0x25cb; - t.circlecopyrt = 0x00a9; - t.circlemultiply = 0x2297; - t.circleot = 0x2299; - t.circleplus = 0x2295; - t.circlepostalmark = 0x3036; - t.circlewithlefthalfblack = 0x25d0; - t.circlewithrighthalfblack = 0x25d1; - t.circumflex = 0x02c6; - t.circumflexbelowcmb = 0x032d; - t.circumflexcmb = 0x0302; - t.clear = 0x2327; - t.clickalveolar = 0x01c2; - t.clickdental = 0x01c0; - t.clicklateral = 0x01c1; - t.clickretroflex = 0x01c3; - t.club = 0x2663; - t.clubsuitblack = 0x2663; - t.clubsuitwhite = 0x2667; - t.cmcubedsquare = 0x33a4; - t.cmonospace = 0xff43; - t.cmsquaredsquare = 0x33a0; - t.coarmenian = 0x0581; - t.colon = 0x003a; - t.colonmonetary = 0x20a1; - t.colonmonospace = 0xff1a; - t.colonsign = 0x20a1; - t.colonsmall = 0xfe55; - t.colontriangularhalfmod = 0x02d1; - t.colontriangularmod = 0x02d0; - t.comma = 0x002c; - t.commaabovecmb = 0x0313; - t.commaaboverightcmb = 0x0315; - t.commaaccent = 0xf6c3; - t.commaarabic = 0x060c; - t.commaarmenian = 0x055d; - t.commainferior = 0xf6e1; - t.commamonospace = 0xff0c; - t.commareversedabovecmb = 0x0314; - t.commareversedmod = 0x02bd; - t.commasmall = 0xfe50; - t.commasuperior = 0xf6e2; - t.commaturnedabovecmb = 0x0312; - t.commaturnedmod = 0x02bb; - t.compass = 0x263c; - t.congruent = 0x2245; - t.contourintegral = 0x222e; - t.control = 0x2303; - t.controlACK = 0x0006; - t.controlBEL = 0x0007; - t.controlBS = 0x0008; - t.controlCAN = 0x0018; - t.controlCR = 0x000d; - t.controlDC1 = 0x0011; - t.controlDC2 = 0x0012; - t.controlDC3 = 0x0013; - t.controlDC4 = 0x0014; - t.controlDEL = 0x007f; - t.controlDLE = 0x0010; - t.controlEM = 0x0019; - t.controlENQ = 0x0005; - t.controlEOT = 0x0004; - t.controlESC = 0x001b; - t.controlETB = 0x0017; - t.controlETX = 0x0003; - t.controlFF = 0x000c; - t.controlFS = 0x001c; - t.controlGS = 0x001d; - t.controlHT = 0x0009; - t.controlLF = 0x000a; - t.controlNAK = 0x0015; - t.controlNULL = 0x0000; - t.controlRS = 0x001e; - t.controlSI = 0x000f; - t.controlSO = 0x000e; - t.controlSOT = 0x0002; - t.controlSTX = 0x0001; - t.controlSUB = 0x001a; - t.controlSYN = 0x0016; - t.controlUS = 0x001f; - t.controlVT = 0x000b; - t.copyright = 0x00a9; - t.copyrightsans = 0xf8e9; - t.copyrightserif = 0xf6d9; - t.cornerbracketleft = 0x300c; - t.cornerbracketlefthalfwidth = 0xff62; - t.cornerbracketleftvertical = 0xfe41; - t.cornerbracketright = 0x300d; - t.cornerbracketrighthalfwidth = 0xff63; - t.cornerbracketrightvertical = 0xfe42; - t.corporationsquare = 0x337f; - t.cosquare = 0x33c7; - t.coverkgsquare = 0x33c6; - t.cparen = 0x249e; - t.cruzeiro = 0x20a2; - t.cstretched = 0x0297; - t.curlyand = 0x22cf; - t.curlyor = 0x22ce; - t.currency = 0x00a4; - t.cyrBreve = 0xf6d1; - t.cyrFlex = 0xf6d2; - t.cyrbreve = 0xf6d4; - t.cyrflex = 0xf6d5; - t.d = 0x0064; - t.daarmenian = 0x0564; - t.dabengali = 0x09a6; - t.dadarabic = 0x0636; - t.dadeva = 0x0926; - t.dadfinalarabic = 0xfebe; - t.dadinitialarabic = 0xfebf; - t.dadmedialarabic = 0xfec0; - t.dagesh = 0x05bc; - t.dageshhebrew = 0x05bc; - t.dagger = 0x2020; - t.daggerdbl = 0x2021; - t.dagujarati = 0x0aa6; - t.dagurmukhi = 0x0a26; - t.dahiragana = 0x3060; - t.dakatakana = 0x30c0; - t.dalarabic = 0x062f; - t.dalet = 0x05d3; - t.daletdagesh = 0xfb33; - t.daletdageshhebrew = 0xfb33; - t.dalethebrew = 0x05d3; - t.dalfinalarabic = 0xfeaa; - t.dammaarabic = 0x064f; - t.dammalowarabic = 0x064f; - t.dammatanaltonearabic = 0x064c; - t.dammatanarabic = 0x064c; - t.danda = 0x0964; - t.dargahebrew = 0x05a7; - t.dargalefthebrew = 0x05a7; - t.dasiapneumatacyrilliccmb = 0x0485; - t.dblGrave = 0xf6d3; - t.dblanglebracketleft = 0x300a; - t.dblanglebracketleftvertical = 0xfe3d; - t.dblanglebracketright = 0x300b; - t.dblanglebracketrightvertical = 0xfe3e; - t.dblarchinvertedbelowcmb = 0x032b; - t.dblarrowleft = 0x21d4; - t.dblarrowright = 0x21d2; - t.dbldanda = 0x0965; - t.dblgrave = 0xf6d6; - t.dblgravecmb = 0x030f; - t.dblintegral = 0x222c; - t.dbllowline = 0x2017; - t.dbllowlinecmb = 0x0333; - t.dbloverlinecmb = 0x033f; - t.dblprimemod = 0x02ba; - t.dblverticalbar = 0x2016; - t.dblverticallineabovecmb = 0x030e; - t.dbopomofo = 0x3109; - t.dbsquare = 0x33c8; - t.dcaron = 0x010f; - t.dcedilla = 0x1e11; - t.dcircle = 0x24d3; - t.dcircumflexbelow = 0x1e13; - t.dcroat = 0x0111; - t.ddabengali = 0x09a1; - t.ddadeva = 0x0921; - t.ddagujarati = 0x0aa1; - t.ddagurmukhi = 0x0a21; - t.ddalarabic = 0x0688; - t.ddalfinalarabic = 0xfb89; - t.dddhadeva = 0x095c; - t.ddhabengali = 0x09a2; - t.ddhadeva = 0x0922; - t.ddhagujarati = 0x0aa2; - t.ddhagurmukhi = 0x0a22; - t.ddotaccent = 0x1e0b; - t.ddotbelow = 0x1e0d; - t.decimalseparatorarabic = 0x066b; - t.decimalseparatorpersian = 0x066b; - t.decyrillic = 0x0434; - t.degree = 0x00b0; - t.dehihebrew = 0x05ad; - t.dehiragana = 0x3067; - t.deicoptic = 0x03ef; - t.dekatakana = 0x30c7; - t.deleteleft = 0x232b; - t.deleteright = 0x2326; - t.delta = 0x03b4; - t.deltaturned = 0x018d; - t.denominatorminusonenumeratorbengali = 0x09f8; - t.dezh = 0x02a4; - t.dhabengali = 0x09a7; - t.dhadeva = 0x0927; - t.dhagujarati = 0x0aa7; - t.dhagurmukhi = 0x0a27; - t.dhook = 0x0257; - t.dialytikatonos = 0x0385; - t.dialytikatonoscmb = 0x0344; - t.diamond = 0x2666; - t.diamondsuitwhite = 0x2662; - t.dieresis = 0x00a8; - t.dieresisacute = 0xf6d7; - t.dieresisbelowcmb = 0x0324; - t.dieresiscmb = 0x0308; - t.dieresisgrave = 0xf6d8; - t.dieresistonos = 0x0385; - t.dihiragana = 0x3062; - t.dikatakana = 0x30c2; - t.dittomark = 0x3003; - t.divide = 0x00f7; - t.divides = 0x2223; - t.divisionslash = 0x2215; - t.djecyrillic = 0x0452; - t.dkshade = 0x2593; - t.dlinebelow = 0x1e0f; - t.dlsquare = 0x3397; - t.dmacron = 0x0111; - t.dmonospace = 0xff44; - t.dnblock = 0x2584; - t.dochadathai = 0x0e0e; - t.dodekthai = 0x0e14; - t.dohiragana = 0x3069; - t.dokatakana = 0x30c9; - t.dollar = 0x0024; - t.dollarinferior = 0xf6e3; - t.dollarmonospace = 0xff04; - t.dollaroldstyle = 0xf724; - t.dollarsmall = 0xfe69; - t.dollarsuperior = 0xf6e4; - t.dong = 0x20ab; - t.dorusquare = 0x3326; - t.dotaccent = 0x02d9; - t.dotaccentcmb = 0x0307; - t.dotbelowcmb = 0x0323; - t.dotbelowcomb = 0x0323; - t.dotkatakana = 0x30fb; - t.dotlessi = 0x0131; - t.dotlessj = 0xf6be; - t.dotlessjstrokehook = 0x0284; - t.dotmath = 0x22c5; - t.dottedcircle = 0x25cc; - t.doubleyodpatah = 0xfb1f; - t.doubleyodpatahhebrew = 0xfb1f; - t.downtackbelowcmb = 0x031e; - t.downtackmod = 0x02d5; - t.dparen = 0x249f; - t.dsuperior = 0xf6eb; - t.dtail = 0x0256; - t.dtopbar = 0x018c; - t.duhiragana = 0x3065; - t.dukatakana = 0x30c5; - t.dz = 0x01f3; - t.dzaltone = 0x02a3; - t.dzcaron = 0x01c6; - t.dzcurl = 0x02a5; - t.dzeabkhasiancyrillic = 0x04e1; - t.dzecyrillic = 0x0455; - t.dzhecyrillic = 0x045f; - t.e = 0x0065; - t.eacute = 0x00e9; - t.earth = 0x2641; - t.ebengali = 0x098f; - t.ebopomofo = 0x311c; - t.ebreve = 0x0115; - t.ecandradeva = 0x090d; - t.ecandragujarati = 0x0a8d; - t.ecandravowelsigndeva = 0x0945; - t.ecandravowelsigngujarati = 0x0ac5; - t.ecaron = 0x011b; - t.ecedillabreve = 0x1e1d; - t.echarmenian = 0x0565; - t.echyiwnarmenian = 0x0587; - t.ecircle = 0x24d4; - t.ecircumflex = 0x00ea; - t.ecircumflexacute = 0x1ebf; - t.ecircumflexbelow = 0x1e19; - t.ecircumflexdotbelow = 0x1ec7; - t.ecircumflexgrave = 0x1ec1; - t.ecircumflexhookabove = 0x1ec3; - t.ecircumflextilde = 0x1ec5; - t.ecyrillic = 0x0454; - t.edblgrave = 0x0205; - t.edeva = 0x090f; - t.edieresis = 0x00eb; - t.edot = 0x0117; - t.edotaccent = 0x0117; - t.edotbelow = 0x1eb9; - t.eegurmukhi = 0x0a0f; - t.eematragurmukhi = 0x0a47; - t.efcyrillic = 0x0444; - t.egrave = 0x00e8; - t.egujarati = 0x0a8f; - t.eharmenian = 0x0567; - t.ehbopomofo = 0x311d; - t.ehiragana = 0x3048; - t.ehookabove = 0x1ebb; - t.eibopomofo = 0x311f; - t.eight = 0x0038; - t.eightarabic = 0x0668; - t.eightbengali = 0x09ee; - t.eightcircle = 0x2467; - t.eightcircleinversesansserif = 0x2791; - t.eightdeva = 0x096e; - t.eighteencircle = 0x2471; - t.eighteenparen = 0x2485; - t.eighteenperiod = 0x2499; - t.eightgujarati = 0x0aee; - t.eightgurmukhi = 0x0a6e; - t.eighthackarabic = 0x0668; - t.eighthangzhou = 0x3028; - t.eighthnotebeamed = 0x266b; - t.eightideographicparen = 0x3227; - t.eightinferior = 0x2088; - t.eightmonospace = 0xff18; - t.eightoldstyle = 0xf738; - t.eightparen = 0x247b; - t.eightperiod = 0x248f; - t.eightpersian = 0x06f8; - t.eightroman = 0x2177; - t.eightsuperior = 0x2078; - t.eightthai = 0x0e58; - t.einvertedbreve = 0x0207; - t.eiotifiedcyrillic = 0x0465; - t.ekatakana = 0x30a8; - t.ekatakanahalfwidth = 0xff74; - t.ekonkargurmukhi = 0x0a74; - t.ekorean = 0x3154; - t.elcyrillic = 0x043b; - t.element = 0x2208; - t.elevencircle = 0x246a; - t.elevenparen = 0x247e; - t.elevenperiod = 0x2492; - t.elevenroman = 0x217a; - t.ellipsis = 0x2026; - t.ellipsisvertical = 0x22ee; - t.emacron = 0x0113; - t.emacronacute = 0x1e17; - t.emacrongrave = 0x1e15; - t.emcyrillic = 0x043c; - t.emdash = 0x2014; - t.emdashvertical = 0xfe31; - t.emonospace = 0xff45; - t.emphasismarkarmenian = 0x055b; - t.emptyset = 0x2205; - t.enbopomofo = 0x3123; - t.encyrillic = 0x043d; - t.endash = 0x2013; - t.endashvertical = 0xfe32; - t.endescendercyrillic = 0x04a3; - t.eng = 0x014b; - t.engbopomofo = 0x3125; - t.enghecyrillic = 0x04a5; - t.enhookcyrillic = 0x04c8; - t.enspace = 0x2002; - t.eogonek = 0x0119; - t.eokorean = 0x3153; - t.eopen = 0x025b; - t.eopenclosed = 0x029a; - t.eopenreversed = 0x025c; - t.eopenreversedclosed = 0x025e; - t.eopenreversedhook = 0x025d; - t.eparen = 0x24a0; - t.epsilon = 0x03b5; - t.epsilontonos = 0x03ad; - t.equal = 0x003d; - t.equalmonospace = 0xff1d; - t.equalsmall = 0xfe66; - t.equalsuperior = 0x207c; - t.equivalence = 0x2261; - t.erbopomofo = 0x3126; - t.ercyrillic = 0x0440; - t.ereversed = 0x0258; - t.ereversedcyrillic = 0x044d; - t.escyrillic = 0x0441; - t.esdescendercyrillic = 0x04ab; - t.esh = 0x0283; - t.eshcurl = 0x0286; - t.eshortdeva = 0x090e; - t.eshortvowelsigndeva = 0x0946; - t.eshreversedloop = 0x01aa; - t.eshsquatreversed = 0x0285; - t.esmallhiragana = 0x3047; - t.esmallkatakana = 0x30a7; - t.esmallkatakanahalfwidth = 0xff6a; - t.estimated = 0x212e; - t.esuperior = 0xf6ec; - t.eta = 0x03b7; - t.etarmenian = 0x0568; - t.etatonos = 0x03ae; - t.eth = 0x00f0; - t.etilde = 0x1ebd; - t.etildebelow = 0x1e1b; - t.etnahtafoukhhebrew = 0x0591; - t.etnahtafoukhlefthebrew = 0x0591; - t.etnahtahebrew = 0x0591; - t.etnahtalefthebrew = 0x0591; - t.eturned = 0x01dd; - t.eukorean = 0x3161; - t.euro = 0x20ac; - t.evowelsignbengali = 0x09c7; - t.evowelsigndeva = 0x0947; - t.evowelsigngujarati = 0x0ac7; - t.exclam = 0x0021; - t.exclamarmenian = 0x055c; - t.exclamdbl = 0x203c; - t.exclamdown = 0x00a1; - t.exclamdownsmall = 0xf7a1; - t.exclammonospace = 0xff01; - t.exclamsmall = 0xf721; - t.existential = 0x2203; - t.ezh = 0x0292; - t.ezhcaron = 0x01ef; - t.ezhcurl = 0x0293; - t.ezhreversed = 0x01b9; - t.ezhtail = 0x01ba; - t.f = 0x0066; - t.fadeva = 0x095e; - t.fagurmukhi = 0x0a5e; - t.fahrenheit = 0x2109; - t.fathaarabic = 0x064e; - t.fathalowarabic = 0x064e; - t.fathatanarabic = 0x064b; - t.fbopomofo = 0x3108; - t.fcircle = 0x24d5; - t.fdotaccent = 0x1e1f; - t.feharabic = 0x0641; - t.feharmenian = 0x0586; - t.fehfinalarabic = 0xfed2; - t.fehinitialarabic = 0xfed3; - t.fehmedialarabic = 0xfed4; - t.feicoptic = 0x03e5; - t.female = 0x2640; - t.ff = 0xfb00; - t.f_f = 0xfb00; - t.ffi = 0xfb03; - t.ffl = 0xfb04; - t.fi = 0xfb01; - t.fifteencircle = 0x246e; - t.fifteenparen = 0x2482; - t.fifteenperiod = 0x2496; - t.figuredash = 0x2012; - t.filledbox = 0x25a0; - t.filledrect = 0x25ac; - t.finalkaf = 0x05da; - t.finalkafdagesh = 0xfb3a; - t.finalkafdageshhebrew = 0xfb3a; - t.finalkafhebrew = 0x05da; - t.finalmem = 0x05dd; - t.finalmemhebrew = 0x05dd; - t.finalnun = 0x05df; - t.finalnunhebrew = 0x05df; - t.finalpe = 0x05e3; - t.finalpehebrew = 0x05e3; - t.finaltsadi = 0x05e5; - t.finaltsadihebrew = 0x05e5; - t.firsttonechinese = 0x02c9; - t.fisheye = 0x25c9; - t.fitacyrillic = 0x0473; - t.five = 0x0035; - t.fivearabic = 0x0665; - t.fivebengali = 0x09eb; - t.fivecircle = 0x2464; - t.fivecircleinversesansserif = 0x278e; - t.fivedeva = 0x096b; - t.fiveeighths = 0x215d; - t.fivegujarati = 0x0aeb; - t.fivegurmukhi = 0x0a6b; - t.fivehackarabic = 0x0665; - t.fivehangzhou = 0x3025; - t.fiveideographicparen = 0x3224; - t.fiveinferior = 0x2085; - t.fivemonospace = 0xff15; - t.fiveoldstyle = 0xf735; - t.fiveparen = 0x2478; - t.fiveperiod = 0x248c; - t.fivepersian = 0x06f5; - t.fiveroman = 0x2174; - t.fivesuperior = 0x2075; - t.fivethai = 0x0e55; - t.fl = 0xfb02; - t.florin = 0x0192; - t.fmonospace = 0xff46; - t.fmsquare = 0x3399; - t.fofanthai = 0x0e1f; - t.fofathai = 0x0e1d; - t.fongmanthai = 0x0e4f; - t.forall = 0x2200; - t.four = 0x0034; - t.fourarabic = 0x0664; - t.fourbengali = 0x09ea; - t.fourcircle = 0x2463; - t.fourcircleinversesansserif = 0x278d; - t.fourdeva = 0x096a; - t.fourgujarati = 0x0aea; - t.fourgurmukhi = 0x0a6a; - t.fourhackarabic = 0x0664; - t.fourhangzhou = 0x3024; - t.fourideographicparen = 0x3223; - t.fourinferior = 0x2084; - t.fourmonospace = 0xff14; - t.fournumeratorbengali = 0x09f7; - t.fouroldstyle = 0xf734; - t.fourparen = 0x2477; - t.fourperiod = 0x248b; - t.fourpersian = 0x06f4; - t.fourroman = 0x2173; - t.foursuperior = 0x2074; - t.fourteencircle = 0x246d; - t.fourteenparen = 0x2481; - t.fourteenperiod = 0x2495; - t.fourthai = 0x0e54; - t.fourthtonechinese = 0x02cb; - t.fparen = 0x24a1; - t.fraction = 0x2044; - t.franc = 0x20a3; - t.g = 0x0067; - t.gabengali = 0x0997; - t.gacute = 0x01f5; - t.gadeva = 0x0917; - t.gafarabic = 0x06af; - t.gaffinalarabic = 0xfb93; - t.gafinitialarabic = 0xfb94; - t.gafmedialarabic = 0xfb95; - t.gagujarati = 0x0a97; - t.gagurmukhi = 0x0a17; - t.gahiragana = 0x304c; - t.gakatakana = 0x30ac; - t.gamma = 0x03b3; - t.gammalatinsmall = 0x0263; - t.gammasuperior = 0x02e0; - t.gangiacoptic = 0x03eb; - t.gbopomofo = 0x310d; - t.gbreve = 0x011f; - t.gcaron = 0x01e7; - t.gcedilla = 0x0123; - t.gcircle = 0x24d6; - t.gcircumflex = 0x011d; - t.gcommaaccent = 0x0123; - t.gdot = 0x0121; - t.gdotaccent = 0x0121; - t.gecyrillic = 0x0433; - t.gehiragana = 0x3052; - t.gekatakana = 0x30b2; - t.geometricallyequal = 0x2251; - t.gereshaccenthebrew = 0x059c; - t.gereshhebrew = 0x05f3; - t.gereshmuqdamhebrew = 0x059d; - t.germandbls = 0x00df; - t.gershayimaccenthebrew = 0x059e; - t.gershayimhebrew = 0x05f4; - t.getamark = 0x3013; - t.ghabengali = 0x0998; - t.ghadarmenian = 0x0572; - t.ghadeva = 0x0918; - t.ghagujarati = 0x0a98; - t.ghagurmukhi = 0x0a18; - t.ghainarabic = 0x063a; - t.ghainfinalarabic = 0xfece; - t.ghaininitialarabic = 0xfecf; - t.ghainmedialarabic = 0xfed0; - t.ghemiddlehookcyrillic = 0x0495; - t.ghestrokecyrillic = 0x0493; - t.gheupturncyrillic = 0x0491; - t.ghhadeva = 0x095a; - t.ghhagurmukhi = 0x0a5a; - t.ghook = 0x0260; - t.ghzsquare = 0x3393; - t.gihiragana = 0x304e; - t.gikatakana = 0x30ae; - t.gimarmenian = 0x0563; - t.gimel = 0x05d2; - t.gimeldagesh = 0xfb32; - t.gimeldageshhebrew = 0xfb32; - t.gimelhebrew = 0x05d2; - t.gjecyrillic = 0x0453; - t.glottalinvertedstroke = 0x01be; - t.glottalstop = 0x0294; - t.glottalstopinverted = 0x0296; - t.glottalstopmod = 0x02c0; - t.glottalstopreversed = 0x0295; - t.glottalstopreversedmod = 0x02c1; - t.glottalstopreversedsuperior = 0x02e4; - t.glottalstopstroke = 0x02a1; - t.glottalstopstrokereversed = 0x02a2; - t.gmacron = 0x1e21; - t.gmonospace = 0xff47; - t.gohiragana = 0x3054; - t.gokatakana = 0x30b4; - t.gparen = 0x24a2; - t.gpasquare = 0x33ac; - t.gradient = 0x2207; - t.grave = 0x0060; - t.gravebelowcmb = 0x0316; - t.gravecmb = 0x0300; - t.gravecomb = 0x0300; - t.gravedeva = 0x0953; - t.gravelowmod = 0x02ce; - t.gravemonospace = 0xff40; - t.gravetonecmb = 0x0340; - t.greater = 0x003e; - t.greaterequal = 0x2265; - t.greaterequalorless = 0x22db; - t.greatermonospace = 0xff1e; - t.greaterorequivalent = 0x2273; - t.greaterorless = 0x2277; - t.greateroverequal = 0x2267; - t.greatersmall = 0xfe65; - t.gscript = 0x0261; - t.gstroke = 0x01e5; - t.guhiragana = 0x3050; - t.guillemotleft = 0x00ab; - t.guillemotright = 0x00bb; - t.guilsinglleft = 0x2039; - t.guilsinglright = 0x203a; - t.gukatakana = 0x30b0; - t.guramusquare = 0x3318; - t.gysquare = 0x33c9; - t.h = 0x0068; - t.haabkhasiancyrillic = 0x04a9; - t.haaltonearabic = 0x06c1; - t.habengali = 0x09b9; - t.hadescendercyrillic = 0x04b3; - t.hadeva = 0x0939; - t.hagujarati = 0x0ab9; - t.hagurmukhi = 0x0a39; - t.haharabic = 0x062d; - t.hahfinalarabic = 0xfea2; - t.hahinitialarabic = 0xfea3; - t.hahiragana = 0x306f; - t.hahmedialarabic = 0xfea4; - t.haitusquare = 0x332a; - t.hakatakana = 0x30cf; - t.hakatakanahalfwidth = 0xff8a; - t.halantgurmukhi = 0x0a4d; - t.hamzaarabic = 0x0621; - t.hamzalowarabic = 0x0621; - t.hangulfiller = 0x3164; - t.hardsigncyrillic = 0x044a; - t.harpoonleftbarbup = 0x21bc; - t.harpoonrightbarbup = 0x21c0; - t.hasquare = 0x33ca; - t.hatafpatah = 0x05b2; - t.hatafpatah16 = 0x05b2; - t.hatafpatah23 = 0x05b2; - t.hatafpatah2f = 0x05b2; - t.hatafpatahhebrew = 0x05b2; - t.hatafpatahnarrowhebrew = 0x05b2; - t.hatafpatahquarterhebrew = 0x05b2; - t.hatafpatahwidehebrew = 0x05b2; - t.hatafqamats = 0x05b3; - t.hatafqamats1b = 0x05b3; - t.hatafqamats28 = 0x05b3; - t.hatafqamats34 = 0x05b3; - t.hatafqamatshebrew = 0x05b3; - t.hatafqamatsnarrowhebrew = 0x05b3; - t.hatafqamatsquarterhebrew = 0x05b3; - t.hatafqamatswidehebrew = 0x05b3; - t.hatafsegol = 0x05b1; - t.hatafsegol17 = 0x05b1; - t.hatafsegol24 = 0x05b1; - t.hatafsegol30 = 0x05b1; - t.hatafsegolhebrew = 0x05b1; - t.hatafsegolnarrowhebrew = 0x05b1; - t.hatafsegolquarterhebrew = 0x05b1; - t.hatafsegolwidehebrew = 0x05b1; - t.hbar = 0x0127; - t.hbopomofo = 0x310f; - t.hbrevebelow = 0x1e2b; - t.hcedilla = 0x1e29; - t.hcircle = 0x24d7; - t.hcircumflex = 0x0125; - t.hdieresis = 0x1e27; - t.hdotaccent = 0x1e23; - t.hdotbelow = 0x1e25; - t.he = 0x05d4; - t.heart = 0x2665; - t.heartsuitblack = 0x2665; - t.heartsuitwhite = 0x2661; - t.hedagesh = 0xfb34; - t.hedageshhebrew = 0xfb34; - t.hehaltonearabic = 0x06c1; - t.heharabic = 0x0647; - t.hehebrew = 0x05d4; - t.hehfinalaltonearabic = 0xfba7; - t.hehfinalalttwoarabic = 0xfeea; - t.hehfinalarabic = 0xfeea; - t.hehhamzaabovefinalarabic = 0xfba5; - t.hehhamzaaboveisolatedarabic = 0xfba4; - t.hehinitialaltonearabic = 0xfba8; - t.hehinitialarabic = 0xfeeb; - t.hehiragana = 0x3078; - t.hehmedialaltonearabic = 0xfba9; - t.hehmedialarabic = 0xfeec; - t.heiseierasquare = 0x337b; - t.hekatakana = 0x30d8; - t.hekatakanahalfwidth = 0xff8d; - t.hekutaarusquare = 0x3336; - t.henghook = 0x0267; - t.herutusquare = 0x3339; - t.het = 0x05d7; - t.hethebrew = 0x05d7; - t.hhook = 0x0266; - t.hhooksuperior = 0x02b1; - t.hieuhacirclekorean = 0x327b; - t.hieuhaparenkorean = 0x321b; - t.hieuhcirclekorean = 0x326d; - t.hieuhkorean = 0x314e; - t.hieuhparenkorean = 0x320d; - t.hihiragana = 0x3072; - t.hikatakana = 0x30d2; - t.hikatakanahalfwidth = 0xff8b; - t.hiriq = 0x05b4; - t.hiriq14 = 0x05b4; - t.hiriq21 = 0x05b4; - t.hiriq2d = 0x05b4; - t.hiriqhebrew = 0x05b4; - t.hiriqnarrowhebrew = 0x05b4; - t.hiriqquarterhebrew = 0x05b4; - t.hiriqwidehebrew = 0x05b4; - t.hlinebelow = 0x1e96; - t.hmonospace = 0xff48; - t.hoarmenian = 0x0570; - t.hohipthai = 0x0e2b; - t.hohiragana = 0x307b; - t.hokatakana = 0x30db; - t.hokatakanahalfwidth = 0xff8e; - t.holam = 0x05b9; - t.holam19 = 0x05b9; - t.holam26 = 0x05b9; - t.holam32 = 0x05b9; - t.holamhebrew = 0x05b9; - t.holamnarrowhebrew = 0x05b9; - t.holamquarterhebrew = 0x05b9; - t.holamwidehebrew = 0x05b9; - t.honokhukthai = 0x0e2e; - t.hookabovecomb = 0x0309; - t.hookcmb = 0x0309; - t.hookpalatalizedbelowcmb = 0x0321; - t.hookretroflexbelowcmb = 0x0322; - t.hoonsquare = 0x3342; - t.horicoptic = 0x03e9; - t.horizontalbar = 0x2015; - t.horncmb = 0x031b; - t.hotsprings = 0x2668; - t.house = 0x2302; - t.hparen = 0x24a3; - t.hsuperior = 0x02b0; - t.hturned = 0x0265; - t.huhiragana = 0x3075; - t.huiitosquare = 0x3333; - t.hukatakana = 0x30d5; - t.hukatakanahalfwidth = 0xff8c; - t.hungarumlaut = 0x02dd; - t.hungarumlautcmb = 0x030b; - t.hv = 0x0195; - t.hyphen = 0x002d; - t.hypheninferior = 0xf6e5; - t.hyphenmonospace = 0xff0d; - t.hyphensmall = 0xfe63; - t.hyphensuperior = 0xf6e6; - t.hyphentwo = 0x2010; - t.i = 0x0069; - t.iacute = 0x00ed; - t.iacyrillic = 0x044f; - t.ibengali = 0x0987; - t.ibopomofo = 0x3127; - t.ibreve = 0x012d; - t.icaron = 0x01d0; - t.icircle = 0x24d8; - t.icircumflex = 0x00ee; - t.icyrillic = 0x0456; - t.idblgrave = 0x0209; - t.ideographearthcircle = 0x328f; - t.ideographfirecircle = 0x328b; - t.ideographicallianceparen = 0x323f; - t.ideographiccallparen = 0x323a; - t.ideographiccentrecircle = 0x32a5; - t.ideographicclose = 0x3006; - t.ideographiccomma = 0x3001; - t.ideographiccommaleft = 0xff64; - t.ideographiccongratulationparen = 0x3237; - t.ideographiccorrectcircle = 0x32a3; - t.ideographicearthparen = 0x322f; - t.ideographicenterpriseparen = 0x323d; - t.ideographicexcellentcircle = 0x329d; - t.ideographicfestivalparen = 0x3240; - t.ideographicfinancialcircle = 0x3296; - t.ideographicfinancialparen = 0x3236; - t.ideographicfireparen = 0x322b; - t.ideographichaveparen = 0x3232; - t.ideographichighcircle = 0x32a4; - t.ideographiciterationmark = 0x3005; - t.ideographiclaborcircle = 0x3298; - t.ideographiclaborparen = 0x3238; - t.ideographicleftcircle = 0x32a7; - t.ideographiclowcircle = 0x32a6; - t.ideographicmedicinecircle = 0x32a9; - t.ideographicmetalparen = 0x322e; - t.ideographicmoonparen = 0x322a; - t.ideographicnameparen = 0x3234; - t.ideographicperiod = 0x3002; - t.ideographicprintcircle = 0x329e; - t.ideographicreachparen = 0x3243; - t.ideographicrepresentparen = 0x3239; - t.ideographicresourceparen = 0x323e; - t.ideographicrightcircle = 0x32a8; - t.ideographicsecretcircle = 0x3299; - t.ideographicselfparen = 0x3242; - t.ideographicsocietyparen = 0x3233; - t.ideographicspace = 0x3000; - t.ideographicspecialparen = 0x3235; - t.ideographicstockparen = 0x3231; - t.ideographicstudyparen = 0x323b; - t.ideographicsunparen = 0x3230; - t.ideographicsuperviseparen = 0x323c; - t.ideographicwaterparen = 0x322c; - t.ideographicwoodparen = 0x322d; - t.ideographiczero = 0x3007; - t.ideographmetalcircle = 0x328e; - t.ideographmooncircle = 0x328a; - t.ideographnamecircle = 0x3294; - t.ideographsuncircle = 0x3290; - t.ideographwatercircle = 0x328c; - t.ideographwoodcircle = 0x328d; - t.ideva = 0x0907; - t.idieresis = 0x00ef; - t.idieresisacute = 0x1e2f; - t.idieresiscyrillic = 0x04e5; - t.idotbelow = 0x1ecb; - t.iebrevecyrillic = 0x04d7; - t.iecyrillic = 0x0435; - t.ieungacirclekorean = 0x3275; - t.ieungaparenkorean = 0x3215; - t.ieungcirclekorean = 0x3267; - t.ieungkorean = 0x3147; - t.ieungparenkorean = 0x3207; - t.igrave = 0x00ec; - t.igujarati = 0x0a87; - t.igurmukhi = 0x0a07; - t.ihiragana = 0x3044; - t.ihookabove = 0x1ec9; - t.iibengali = 0x0988; - t.iicyrillic = 0x0438; - t.iideva = 0x0908; - t.iigujarati = 0x0a88; - t.iigurmukhi = 0x0a08; - t.iimatragurmukhi = 0x0a40; - t.iinvertedbreve = 0x020b; - t.iishortcyrillic = 0x0439; - t.iivowelsignbengali = 0x09c0; - t.iivowelsigndeva = 0x0940; - t.iivowelsigngujarati = 0x0ac0; - t.ij = 0x0133; - t.ikatakana = 0x30a4; - t.ikatakanahalfwidth = 0xff72; - t.ikorean = 0x3163; - t.ilde = 0x02dc; - t.iluyhebrew = 0x05ac; - t.imacron = 0x012b; - t.imacroncyrillic = 0x04e3; - t.imageorapproximatelyequal = 0x2253; - t.imatragurmukhi = 0x0a3f; - t.imonospace = 0xff49; - t.increment = 0x2206; - t.infinity = 0x221e; - t.iniarmenian = 0x056b; - t.integral = 0x222b; - t.integralbottom = 0x2321; - t.integralbt = 0x2321; - t.integralex = 0xf8f5; - t.integraltop = 0x2320; - t.integraltp = 0x2320; - t.intersection = 0x2229; - t.intisquare = 0x3305; - t.invbullet = 0x25d8; - t.invcircle = 0x25d9; - t.invsmileface = 0x263b; - t.iocyrillic = 0x0451; - t.iogonek = 0x012f; - t.iota = 0x03b9; - t.iotadieresis = 0x03ca; - t.iotadieresistonos = 0x0390; - t.iotalatin = 0x0269; - t.iotatonos = 0x03af; - t.iparen = 0x24a4; - t.irigurmukhi = 0x0a72; - t.ismallhiragana = 0x3043; - t.ismallkatakana = 0x30a3; - t.ismallkatakanahalfwidth = 0xff68; - t.issharbengali = 0x09fa; - t.istroke = 0x0268; - t.isuperior = 0xf6ed; - t.iterationhiragana = 0x309d; - t.iterationkatakana = 0x30fd; - t.itilde = 0x0129; - t.itildebelow = 0x1e2d; - t.iubopomofo = 0x3129; - t.iucyrillic = 0x044e; - t.ivowelsignbengali = 0x09bf; - t.ivowelsigndeva = 0x093f; - t.ivowelsigngujarati = 0x0abf; - t.izhitsacyrillic = 0x0475; - t.izhitsadblgravecyrillic = 0x0477; - t.j = 0x006a; - t.jaarmenian = 0x0571; - t.jabengali = 0x099c; - t.jadeva = 0x091c; - t.jagujarati = 0x0a9c; - t.jagurmukhi = 0x0a1c; - t.jbopomofo = 0x3110; - t.jcaron = 0x01f0; - t.jcircle = 0x24d9; - t.jcircumflex = 0x0135; - t.jcrossedtail = 0x029d; - t.jdotlessstroke = 0x025f; - t.jecyrillic = 0x0458; - t.jeemarabic = 0x062c; - t.jeemfinalarabic = 0xfe9e; - t.jeeminitialarabic = 0xfe9f; - t.jeemmedialarabic = 0xfea0; - t.jeharabic = 0x0698; - t.jehfinalarabic = 0xfb8b; - t.jhabengali = 0x099d; - t.jhadeva = 0x091d; - t.jhagujarati = 0x0a9d; - t.jhagurmukhi = 0x0a1d; - t.jheharmenian = 0x057b; - t.jis = 0x3004; - t.jmonospace = 0xff4a; - t.jparen = 0x24a5; - t.jsuperior = 0x02b2; - t.k = 0x006b; - t.kabashkircyrillic = 0x04a1; - t.kabengali = 0x0995; - t.kacute = 0x1e31; - t.kacyrillic = 0x043a; - t.kadescendercyrillic = 0x049b; - t.kadeva = 0x0915; - t.kaf = 0x05db; - t.kafarabic = 0x0643; - t.kafdagesh = 0xfb3b; - t.kafdageshhebrew = 0xfb3b; - t.kaffinalarabic = 0xfeda; - t.kafhebrew = 0x05db; - t.kafinitialarabic = 0xfedb; - t.kafmedialarabic = 0xfedc; - t.kafrafehebrew = 0xfb4d; - t.kagujarati = 0x0a95; - t.kagurmukhi = 0x0a15; - t.kahiragana = 0x304b; - t.kahookcyrillic = 0x04c4; - t.kakatakana = 0x30ab; - t.kakatakanahalfwidth = 0xff76; - t.kappa = 0x03ba; - t.kappasymbolgreek = 0x03f0; - t.kapyeounmieumkorean = 0x3171; - t.kapyeounphieuphkorean = 0x3184; - t.kapyeounpieupkorean = 0x3178; - t.kapyeounssangpieupkorean = 0x3179; - t.karoriisquare = 0x330d; - t.kashidaautoarabic = 0x0640; - t.kashidaautonosidebearingarabic = 0x0640; - t.kasmallkatakana = 0x30f5; - t.kasquare = 0x3384; - t.kasraarabic = 0x0650; - t.kasratanarabic = 0x064d; - t.kastrokecyrillic = 0x049f; - t.katahiraprolongmarkhalfwidth = 0xff70; - t.kaverticalstrokecyrillic = 0x049d; - t.kbopomofo = 0x310e; - t.kcalsquare = 0x3389; - t.kcaron = 0x01e9; - t.kcedilla = 0x0137; - t.kcircle = 0x24da; - t.kcommaaccent = 0x0137; - t.kdotbelow = 0x1e33; - t.keharmenian = 0x0584; - t.kehiragana = 0x3051; - t.kekatakana = 0x30b1; - t.kekatakanahalfwidth = 0xff79; - t.kenarmenian = 0x056f; - t.kesmallkatakana = 0x30f6; - t.kgreenlandic = 0x0138; - t.khabengali = 0x0996; - t.khacyrillic = 0x0445; - t.khadeva = 0x0916; - t.khagujarati = 0x0a96; - t.khagurmukhi = 0x0a16; - t.khaharabic = 0x062e; - t.khahfinalarabic = 0xfea6; - t.khahinitialarabic = 0xfea7; - t.khahmedialarabic = 0xfea8; - t.kheicoptic = 0x03e7; - t.khhadeva = 0x0959; - t.khhagurmukhi = 0x0a59; - t.khieukhacirclekorean = 0x3278; - t.khieukhaparenkorean = 0x3218; - t.khieukhcirclekorean = 0x326a; - t.khieukhkorean = 0x314b; - t.khieukhparenkorean = 0x320a; - t.khokhaithai = 0x0e02; - t.khokhonthai = 0x0e05; - t.khokhuatthai = 0x0e03; - t.khokhwaithai = 0x0e04; - t.khomutthai = 0x0e5b; - t.khook = 0x0199; - t.khorakhangthai = 0x0e06; - t.khzsquare = 0x3391; - t.kihiragana = 0x304d; - t.kikatakana = 0x30ad; - t.kikatakanahalfwidth = 0xff77; - t.kiroguramusquare = 0x3315; - t.kiromeetorusquare = 0x3316; - t.kirosquare = 0x3314; - t.kiyeokacirclekorean = 0x326e; - t.kiyeokaparenkorean = 0x320e; - t.kiyeokcirclekorean = 0x3260; - t.kiyeokkorean = 0x3131; - t.kiyeokparenkorean = 0x3200; - t.kiyeoksioskorean = 0x3133; - t.kjecyrillic = 0x045c; - t.klinebelow = 0x1e35; - t.klsquare = 0x3398; - t.kmcubedsquare = 0x33a6; - t.kmonospace = 0xff4b; - t.kmsquaredsquare = 0x33a2; - t.kohiragana = 0x3053; - t.kohmsquare = 0x33c0; - t.kokaithai = 0x0e01; - t.kokatakana = 0x30b3; - t.kokatakanahalfwidth = 0xff7a; - t.kooposquare = 0x331e; - t.koppacyrillic = 0x0481; - t.koreanstandardsymbol = 0x327f; - t.koroniscmb = 0x0343; - t.kparen = 0x24a6; - t.kpasquare = 0x33aa; - t.ksicyrillic = 0x046f; - t.ktsquare = 0x33cf; - t.kturned = 0x029e; - t.kuhiragana = 0x304f; - t.kukatakana = 0x30af; - t.kukatakanahalfwidth = 0xff78; - t.kvsquare = 0x33b8; - t.kwsquare = 0x33be; - t.l = 0x006c; - t.labengali = 0x09b2; - t.lacute = 0x013a; - t.ladeva = 0x0932; - t.lagujarati = 0x0ab2; - t.lagurmukhi = 0x0a32; - t.lakkhangyaothai = 0x0e45; - t.lamaleffinalarabic = 0xfefc; - t.lamalefhamzaabovefinalarabic = 0xfef8; - t.lamalefhamzaaboveisolatedarabic = 0xfef7; - t.lamalefhamzabelowfinalarabic = 0xfefa; - t.lamalefhamzabelowisolatedarabic = 0xfef9; - t.lamalefisolatedarabic = 0xfefb; - t.lamalefmaddaabovefinalarabic = 0xfef6; - t.lamalefmaddaaboveisolatedarabic = 0xfef5; - t.lamarabic = 0x0644; - t.lambda = 0x03bb; - t.lambdastroke = 0x019b; - t.lamed = 0x05dc; - t.lameddagesh = 0xfb3c; - t.lameddageshhebrew = 0xfb3c; - t.lamedhebrew = 0x05dc; - t.lamfinalarabic = 0xfede; - t.lamhahinitialarabic = 0xfcca; - t.laminitialarabic = 0xfedf; - t.lamjeeminitialarabic = 0xfcc9; - t.lamkhahinitialarabic = 0xfccb; - t.lamlamhehisolatedarabic = 0xfdf2; - t.lammedialarabic = 0xfee0; - t.lammeemhahinitialarabic = 0xfd88; - t.lammeeminitialarabic = 0xfccc; - t.largecircle = 0x25ef; - t.lbar = 0x019a; - t.lbelt = 0x026c; - t.lbopomofo = 0x310c; - t.lcaron = 0x013e; - t.lcedilla = 0x013c; - t.lcircle = 0x24db; - t.lcircumflexbelow = 0x1e3d; - t.lcommaaccent = 0x013c; - t.ldot = 0x0140; - t.ldotaccent = 0x0140; - t.ldotbelow = 0x1e37; - t.ldotbelowmacron = 0x1e39; - t.leftangleabovecmb = 0x031a; - t.lefttackbelowcmb = 0x0318; - t.less = 0x003c; - t.lessequal = 0x2264; - t.lessequalorgreater = 0x22da; - t.lessmonospace = 0xff1c; - t.lessorequivalent = 0x2272; - t.lessorgreater = 0x2276; - t.lessoverequal = 0x2266; - t.lesssmall = 0xfe64; - t.lezh = 0x026e; - t.lfblock = 0x258c; - t.lhookretroflex = 0x026d; - t.lira = 0x20a4; - t.liwnarmenian = 0x056c; - t.lj = 0x01c9; - t.ljecyrillic = 0x0459; - t.ll = 0xf6c0; - t.lladeva = 0x0933; - t.llagujarati = 0x0ab3; - t.llinebelow = 0x1e3b; - t.llladeva = 0x0934; - t.llvocalicbengali = 0x09e1; - t.llvocalicdeva = 0x0961; - t.llvocalicvowelsignbengali = 0x09e3; - t.llvocalicvowelsigndeva = 0x0963; - t.lmiddletilde = 0x026b; - t.lmonospace = 0xff4c; - t.lmsquare = 0x33d0; - t.lochulathai = 0x0e2c; - t.logicaland = 0x2227; - t.logicalnot = 0x00ac; - t.logicalnotreversed = 0x2310; - t.logicalor = 0x2228; - t.lolingthai = 0x0e25; - t.longs = 0x017f; - t.lowlinecenterline = 0xfe4e; - t.lowlinecmb = 0x0332; - t.lowlinedashed = 0xfe4d; - t.lozenge = 0x25ca; - t.lparen = 0x24a7; - t.lslash = 0x0142; - t.lsquare = 0x2113; - t.lsuperior = 0xf6ee; - t.ltshade = 0x2591; - t.luthai = 0x0e26; - t.lvocalicbengali = 0x098c; - t.lvocalicdeva = 0x090c; - t.lvocalicvowelsignbengali = 0x09e2; - t.lvocalicvowelsigndeva = 0x0962; - t.lxsquare = 0x33d3; - t.m = 0x006d; - t.mabengali = 0x09ae; - t.macron = 0x00af; - t.macronbelowcmb = 0x0331; - t.macroncmb = 0x0304; - t.macronlowmod = 0x02cd; - t.macronmonospace = 0xffe3; - t.macute = 0x1e3f; - t.madeva = 0x092e; - t.magujarati = 0x0aae; - t.magurmukhi = 0x0a2e; - t.mahapakhhebrew = 0x05a4; - t.mahapakhlefthebrew = 0x05a4; - t.mahiragana = 0x307e; - t.maichattawalowleftthai = 0xf895; - t.maichattawalowrightthai = 0xf894; - t.maichattawathai = 0x0e4b; - t.maichattawaupperleftthai = 0xf893; - t.maieklowleftthai = 0xf88c; - t.maieklowrightthai = 0xf88b; - t.maiekthai = 0x0e48; - t.maiekupperleftthai = 0xf88a; - t.maihanakatleftthai = 0xf884; - t.maihanakatthai = 0x0e31; - t.maitaikhuleftthai = 0xf889; - t.maitaikhuthai = 0x0e47; - t.maitholowleftthai = 0xf88f; - t.maitholowrightthai = 0xf88e; - t.maithothai = 0x0e49; - t.maithoupperleftthai = 0xf88d; - t.maitrilowleftthai = 0xf892; - t.maitrilowrightthai = 0xf891; - t.maitrithai = 0x0e4a; - t.maitriupperleftthai = 0xf890; - t.maiyamokthai = 0x0e46; - t.makatakana = 0x30de; - t.makatakanahalfwidth = 0xff8f; - t.male = 0x2642; - t.mansyonsquare = 0x3347; - t.maqafhebrew = 0x05be; - t.mars = 0x2642; - t.masoracirclehebrew = 0x05af; - t.masquare = 0x3383; - t.mbopomofo = 0x3107; - t.mbsquare = 0x33d4; - t.mcircle = 0x24dc; - t.mcubedsquare = 0x33a5; - t.mdotaccent = 0x1e41; - t.mdotbelow = 0x1e43; - t.meemarabic = 0x0645; - t.meemfinalarabic = 0xfee2; - t.meeminitialarabic = 0xfee3; - t.meemmedialarabic = 0xfee4; - t.meemmeeminitialarabic = 0xfcd1; - t.meemmeemisolatedarabic = 0xfc48; - t.meetorusquare = 0x334d; - t.mehiragana = 0x3081; - t.meizierasquare = 0x337e; - t.mekatakana = 0x30e1; - t.mekatakanahalfwidth = 0xff92; - t.mem = 0x05de; - t.memdagesh = 0xfb3e; - t.memdageshhebrew = 0xfb3e; - t.memhebrew = 0x05de; - t.menarmenian = 0x0574; - t.merkhahebrew = 0x05a5; - t.merkhakefulahebrew = 0x05a6; - t.merkhakefulalefthebrew = 0x05a6; - t.merkhalefthebrew = 0x05a5; - t.mhook = 0x0271; - t.mhzsquare = 0x3392; - t.middledotkatakanahalfwidth = 0xff65; - t.middot = 0x00b7; - t.mieumacirclekorean = 0x3272; - t.mieumaparenkorean = 0x3212; - t.mieumcirclekorean = 0x3264; - t.mieumkorean = 0x3141; - t.mieumpansioskorean = 0x3170; - t.mieumparenkorean = 0x3204; - t.mieumpieupkorean = 0x316e; - t.mieumsioskorean = 0x316f; - t.mihiragana = 0x307f; - t.mikatakana = 0x30df; - t.mikatakanahalfwidth = 0xff90; - t.minus = 0x2212; - t.minusbelowcmb = 0x0320; - t.minuscircle = 0x2296; - t.minusmod = 0x02d7; - t.minusplus = 0x2213; - t.minute = 0x2032; - t.miribaarusquare = 0x334a; - t.mirisquare = 0x3349; - t.mlonglegturned = 0x0270; - t.mlsquare = 0x3396; - t.mmcubedsquare = 0x33a3; - t.mmonospace = 0xff4d; - t.mmsquaredsquare = 0x339f; - t.mohiragana = 0x3082; - t.mohmsquare = 0x33c1; - t.mokatakana = 0x30e2; - t.mokatakanahalfwidth = 0xff93; - t.molsquare = 0x33d6; - t.momathai = 0x0e21; - t.moverssquare = 0x33a7; - t.moverssquaredsquare = 0x33a8; - t.mparen = 0x24a8; - t.mpasquare = 0x33ab; - t.mssquare = 0x33b3; - t.msuperior = 0xf6ef; - t.mturned = 0x026f; - t.mu = 0x00b5; - t.mu1 = 0x00b5; - t.muasquare = 0x3382; - t.muchgreater = 0x226b; - t.muchless = 0x226a; - t.mufsquare = 0x338c; - t.mugreek = 0x03bc; - t.mugsquare = 0x338d; - t.muhiragana = 0x3080; - t.mukatakana = 0x30e0; - t.mukatakanahalfwidth = 0xff91; - t.mulsquare = 0x3395; - t.multiply = 0x00d7; - t.mumsquare = 0x339b; - t.munahhebrew = 0x05a3; - t.munahlefthebrew = 0x05a3; - t.musicalnote = 0x266a; - t.musicalnotedbl = 0x266b; - t.musicflatsign = 0x266d; - t.musicsharpsign = 0x266f; - t.mussquare = 0x33b2; - t.muvsquare = 0x33b6; - t.muwsquare = 0x33bc; - t.mvmegasquare = 0x33b9; - t.mvsquare = 0x33b7; - t.mwmegasquare = 0x33bf; - t.mwsquare = 0x33bd; - t.n = 0x006e; - t.nabengali = 0x09a8; - t.nabla = 0x2207; - t.nacute = 0x0144; - t.nadeva = 0x0928; - t.nagujarati = 0x0aa8; - t.nagurmukhi = 0x0a28; - t.nahiragana = 0x306a; - t.nakatakana = 0x30ca; - t.nakatakanahalfwidth = 0xff85; - t.napostrophe = 0x0149; - t.nasquare = 0x3381; - t.nbopomofo = 0x310b; - t.nbspace = 0x00a0; - t.ncaron = 0x0148; - t.ncedilla = 0x0146; - t.ncircle = 0x24dd; - t.ncircumflexbelow = 0x1e4b; - t.ncommaaccent = 0x0146; - t.ndotaccent = 0x1e45; - t.ndotbelow = 0x1e47; - t.nehiragana = 0x306d; - t.nekatakana = 0x30cd; - t.nekatakanahalfwidth = 0xff88; - t.newsheqelsign = 0x20aa; - t.nfsquare = 0x338b; - t.ngabengali = 0x0999; - t.ngadeva = 0x0919; - t.ngagujarati = 0x0a99; - t.ngagurmukhi = 0x0a19; - t.ngonguthai = 0x0e07; - t.nhiragana = 0x3093; - t.nhookleft = 0x0272; - t.nhookretroflex = 0x0273; - t.nieunacirclekorean = 0x326f; - t.nieunaparenkorean = 0x320f; - t.nieuncieuckorean = 0x3135; - t.nieuncirclekorean = 0x3261; - t.nieunhieuhkorean = 0x3136; - t.nieunkorean = 0x3134; - t.nieunpansioskorean = 0x3168; - t.nieunparenkorean = 0x3201; - t.nieunsioskorean = 0x3167; - t.nieuntikeutkorean = 0x3166; - t.nihiragana = 0x306b; - t.nikatakana = 0x30cb; - t.nikatakanahalfwidth = 0xff86; - t.nikhahitleftthai = 0xf899; - t.nikhahitthai = 0x0e4d; - t.nine = 0x0039; - t.ninearabic = 0x0669; - t.ninebengali = 0x09ef; - t.ninecircle = 0x2468; - t.ninecircleinversesansserif = 0x2792; - t.ninedeva = 0x096f; - t.ninegujarati = 0x0aef; - t.ninegurmukhi = 0x0a6f; - t.ninehackarabic = 0x0669; - t.ninehangzhou = 0x3029; - t.nineideographicparen = 0x3228; - t.nineinferior = 0x2089; - t.ninemonospace = 0xff19; - t.nineoldstyle = 0xf739; - t.nineparen = 0x247c; - t.nineperiod = 0x2490; - t.ninepersian = 0x06f9; - t.nineroman = 0x2178; - t.ninesuperior = 0x2079; - t.nineteencircle = 0x2472; - t.nineteenparen = 0x2486; - t.nineteenperiod = 0x249a; - t.ninethai = 0x0e59; - t.nj = 0x01cc; - t.njecyrillic = 0x045a; - t.nkatakana = 0x30f3; - t.nkatakanahalfwidth = 0xff9d; - t.nlegrightlong = 0x019e; - t.nlinebelow = 0x1e49; - t.nmonospace = 0xff4e; - t.nmsquare = 0x339a; - t.nnabengali = 0x09a3; - t.nnadeva = 0x0923; - t.nnagujarati = 0x0aa3; - t.nnagurmukhi = 0x0a23; - t.nnnadeva = 0x0929; - t.nohiragana = 0x306e; - t.nokatakana = 0x30ce; - t.nokatakanahalfwidth = 0xff89; - t.nonbreakingspace = 0x00a0; - t.nonenthai = 0x0e13; - t.nonuthai = 0x0e19; - t.noonarabic = 0x0646; - t.noonfinalarabic = 0xfee6; - t.noonghunnaarabic = 0x06ba; - t.noonghunnafinalarabic = 0xfb9f; - t.nooninitialarabic = 0xfee7; - t.noonjeeminitialarabic = 0xfcd2; - t.noonjeemisolatedarabic = 0xfc4b; - t.noonmedialarabic = 0xfee8; - t.noonmeeminitialarabic = 0xfcd5; - t.noonmeemisolatedarabic = 0xfc4e; - t.noonnoonfinalarabic = 0xfc8d; - t.notcontains = 0x220c; - t.notelement = 0x2209; - t.notelementof = 0x2209; - t.notequal = 0x2260; - t.notgreater = 0x226f; - t.notgreaternorequal = 0x2271; - t.notgreaternorless = 0x2279; - t.notidentical = 0x2262; - t.notless = 0x226e; - t.notlessnorequal = 0x2270; - t.notparallel = 0x2226; - t.notprecedes = 0x2280; - t.notsubset = 0x2284; - t.notsucceeds = 0x2281; - t.notsuperset = 0x2285; - t.nowarmenian = 0x0576; - t.nparen = 0x24a9; - t.nssquare = 0x33b1; - t.nsuperior = 0x207f; - t.ntilde = 0x00f1; - t.nu = 0x03bd; - t.nuhiragana = 0x306c; - t.nukatakana = 0x30cc; - t.nukatakanahalfwidth = 0xff87; - t.nuktabengali = 0x09bc; - t.nuktadeva = 0x093c; - t.nuktagujarati = 0x0abc; - t.nuktagurmukhi = 0x0a3c; - t.numbersign = 0x0023; - t.numbersignmonospace = 0xff03; - t.numbersignsmall = 0xfe5f; - t.numeralsigngreek = 0x0374; - t.numeralsignlowergreek = 0x0375; - t.numero = 0x2116; - t.nun = 0x05e0; - t.nundagesh = 0xfb40; - t.nundageshhebrew = 0xfb40; - t.nunhebrew = 0x05e0; - t.nvsquare = 0x33b5; - t.nwsquare = 0x33bb; - t.nyabengali = 0x099e; - t.nyadeva = 0x091e; - t.nyagujarati = 0x0a9e; - t.nyagurmukhi = 0x0a1e; - t.o = 0x006f; - t.oacute = 0x00f3; - t.oangthai = 0x0e2d; - t.obarred = 0x0275; - t.obarredcyrillic = 0x04e9; - t.obarreddieresiscyrillic = 0x04eb; - t.obengali = 0x0993; - t.obopomofo = 0x311b; - t.obreve = 0x014f; - t.ocandradeva = 0x0911; - t.ocandragujarati = 0x0a91; - t.ocandravowelsigndeva = 0x0949; - t.ocandravowelsigngujarati = 0x0ac9; - t.ocaron = 0x01d2; - t.ocircle = 0x24de; - t.ocircumflex = 0x00f4; - t.ocircumflexacute = 0x1ed1; - t.ocircumflexdotbelow = 0x1ed9; - t.ocircumflexgrave = 0x1ed3; - t.ocircumflexhookabove = 0x1ed5; - t.ocircumflextilde = 0x1ed7; - t.ocyrillic = 0x043e; - t.odblacute = 0x0151; - t.odblgrave = 0x020d; - t.odeva = 0x0913; - t.odieresis = 0x00f6; - t.odieresiscyrillic = 0x04e7; - t.odotbelow = 0x1ecd; - t.oe = 0x0153; - t.oekorean = 0x315a; - t.ogonek = 0x02db; - t.ogonekcmb = 0x0328; - t.ograve = 0x00f2; - t.ogujarati = 0x0a93; - t.oharmenian = 0x0585; - t.ohiragana = 0x304a; - t.ohookabove = 0x1ecf; - t.ohorn = 0x01a1; - t.ohornacute = 0x1edb; - t.ohorndotbelow = 0x1ee3; - t.ohorngrave = 0x1edd; - t.ohornhookabove = 0x1edf; - t.ohorntilde = 0x1ee1; - t.ohungarumlaut = 0x0151; - t.oi = 0x01a3; - t.oinvertedbreve = 0x020f; - t.okatakana = 0x30aa; - t.okatakanahalfwidth = 0xff75; - t.okorean = 0x3157; - t.olehebrew = 0x05ab; - t.omacron = 0x014d; - t.omacronacute = 0x1e53; - t.omacrongrave = 0x1e51; - t.omdeva = 0x0950; - t.omega = 0x03c9; - t.omega1 = 0x03d6; - t.omegacyrillic = 0x0461; - t.omegalatinclosed = 0x0277; - t.omegaroundcyrillic = 0x047b; - t.omegatitlocyrillic = 0x047d; - t.omegatonos = 0x03ce; - t.omgujarati = 0x0ad0; - t.omicron = 0x03bf; - t.omicrontonos = 0x03cc; - t.omonospace = 0xff4f; - t.one = 0x0031; - t.onearabic = 0x0661; - t.onebengali = 0x09e7; - t.onecircle = 0x2460; - t.onecircleinversesansserif = 0x278a; - t.onedeva = 0x0967; - t.onedotenleader = 0x2024; - t.oneeighth = 0x215b; - t.onefitted = 0xf6dc; - t.onegujarati = 0x0ae7; - t.onegurmukhi = 0x0a67; - t.onehackarabic = 0x0661; - t.onehalf = 0x00bd; - t.onehangzhou = 0x3021; - t.oneideographicparen = 0x3220; - t.oneinferior = 0x2081; - t.onemonospace = 0xff11; - t.onenumeratorbengali = 0x09f4; - t.oneoldstyle = 0xf731; - t.oneparen = 0x2474; - t.oneperiod = 0x2488; - t.onepersian = 0x06f1; - t.onequarter = 0x00bc; - t.oneroman = 0x2170; - t.onesuperior = 0x00b9; - t.onethai = 0x0e51; - t.onethird = 0x2153; - t.oogonek = 0x01eb; - t.oogonekmacron = 0x01ed; - t.oogurmukhi = 0x0a13; - t.oomatragurmukhi = 0x0a4b; - t.oopen = 0x0254; - t.oparen = 0x24aa; - t.openbullet = 0x25e6; - t.option = 0x2325; - t.ordfeminine = 0x00aa; - t.ordmasculine = 0x00ba; - t.orthogonal = 0x221f; - t.oshortdeva = 0x0912; - t.oshortvowelsigndeva = 0x094a; - t.oslash = 0x00f8; - t.oslashacute = 0x01ff; - t.osmallhiragana = 0x3049; - t.osmallkatakana = 0x30a9; - t.osmallkatakanahalfwidth = 0xff6b; - t.ostrokeacute = 0x01ff; - t.osuperior = 0xf6f0; - t.otcyrillic = 0x047f; - t.otilde = 0x00f5; - t.otildeacute = 0x1e4d; - t.otildedieresis = 0x1e4f; - t.oubopomofo = 0x3121; - t.overline = 0x203e; - t.overlinecenterline = 0xfe4a; - t.overlinecmb = 0x0305; - t.overlinedashed = 0xfe49; - t.overlinedblwavy = 0xfe4c; - t.overlinewavy = 0xfe4b; - t.overscore = 0x00af; - t.ovowelsignbengali = 0x09cb; - t.ovowelsigndeva = 0x094b; - t.ovowelsigngujarati = 0x0acb; - t.p = 0x0070; - t.paampssquare = 0x3380; - t.paasentosquare = 0x332b; - t.pabengali = 0x09aa; - t.pacute = 0x1e55; - t.padeva = 0x092a; - t.pagedown = 0x21df; - t.pageup = 0x21de; - t.pagujarati = 0x0aaa; - t.pagurmukhi = 0x0a2a; - t.pahiragana = 0x3071; - t.paiyannoithai = 0x0e2f; - t.pakatakana = 0x30d1; - t.palatalizationcyrilliccmb = 0x0484; - t.palochkacyrillic = 0x04c0; - t.pansioskorean = 0x317f; - t.paragraph = 0x00b6; - t.parallel = 0x2225; - t.parenleft = 0x0028; - t.parenleftaltonearabic = 0xfd3e; - t.parenleftbt = 0xf8ed; - t.parenleftex = 0xf8ec; - t.parenleftinferior = 0x208d; - t.parenleftmonospace = 0xff08; - t.parenleftsmall = 0xfe59; - t.parenleftsuperior = 0x207d; - t.parenlefttp = 0xf8eb; - t.parenleftvertical = 0xfe35; - t.parenright = 0x0029; - t.parenrightaltonearabic = 0xfd3f; - t.parenrightbt = 0xf8f8; - t.parenrightex = 0xf8f7; - t.parenrightinferior = 0x208e; - t.parenrightmonospace = 0xff09; - t.parenrightsmall = 0xfe5a; - t.parenrightsuperior = 0x207e; - t.parenrighttp = 0xf8f6; - t.parenrightvertical = 0xfe36; - t.partialdiff = 0x2202; - t.paseqhebrew = 0x05c0; - t.pashtahebrew = 0x0599; - t.pasquare = 0x33a9; - t.patah = 0x05b7; - t.patah11 = 0x05b7; - t.patah1d = 0x05b7; - t.patah2a = 0x05b7; - t.patahhebrew = 0x05b7; - t.patahnarrowhebrew = 0x05b7; - t.patahquarterhebrew = 0x05b7; - t.patahwidehebrew = 0x05b7; - t.pazerhebrew = 0x05a1; - t.pbopomofo = 0x3106; - t.pcircle = 0x24df; - t.pdotaccent = 0x1e57; - t.pe = 0x05e4; - t.pecyrillic = 0x043f; - t.pedagesh = 0xfb44; - t.pedageshhebrew = 0xfb44; - t.peezisquare = 0x333b; - t.pefinaldageshhebrew = 0xfb43; - t.peharabic = 0x067e; - t.peharmenian = 0x057a; - t.pehebrew = 0x05e4; - t.pehfinalarabic = 0xfb57; - t.pehinitialarabic = 0xfb58; - t.pehiragana = 0x307a; - t.pehmedialarabic = 0xfb59; - t.pekatakana = 0x30da; - t.pemiddlehookcyrillic = 0x04a7; - t.perafehebrew = 0xfb4e; - t.percent = 0x0025; - t.percentarabic = 0x066a; - t.percentmonospace = 0xff05; - t.percentsmall = 0xfe6a; - t.period = 0x002e; - t.periodarmenian = 0x0589; - t.periodcentered = 0x00b7; - t.periodhalfwidth = 0xff61; - t.periodinferior = 0xf6e7; - t.periodmonospace = 0xff0e; - t.periodsmall = 0xfe52; - t.periodsuperior = 0xf6e8; - t.perispomenigreekcmb = 0x0342; - t.perpendicular = 0x22a5; - t.perthousand = 0x2030; - t.peseta = 0x20a7; - t.pfsquare = 0x338a; - t.phabengali = 0x09ab; - t.phadeva = 0x092b; - t.phagujarati = 0x0aab; - t.phagurmukhi = 0x0a2b; - t.phi = 0x03c6; - t.phi1 = 0x03d5; - t.phieuphacirclekorean = 0x327a; - t.phieuphaparenkorean = 0x321a; - t.phieuphcirclekorean = 0x326c; - t.phieuphkorean = 0x314d; - t.phieuphparenkorean = 0x320c; - t.philatin = 0x0278; - t.phinthuthai = 0x0e3a; - t.phisymbolgreek = 0x03d5; - t.phook = 0x01a5; - t.phophanthai = 0x0e1e; - t.phophungthai = 0x0e1c; - t.phosamphaothai = 0x0e20; - t.pi = 0x03c0; - t.pieupacirclekorean = 0x3273; - t.pieupaparenkorean = 0x3213; - t.pieupcieuckorean = 0x3176; - t.pieupcirclekorean = 0x3265; - t.pieupkiyeokkorean = 0x3172; - t.pieupkorean = 0x3142; - t.pieupparenkorean = 0x3205; - t.pieupsioskiyeokkorean = 0x3174; - t.pieupsioskorean = 0x3144; - t.pieupsiostikeutkorean = 0x3175; - t.pieupthieuthkorean = 0x3177; - t.pieuptikeutkorean = 0x3173; - t.pihiragana = 0x3074; - t.pikatakana = 0x30d4; - t.pisymbolgreek = 0x03d6; - t.piwrarmenian = 0x0583; - t.plus = 0x002b; - t.plusbelowcmb = 0x031f; - t.pluscircle = 0x2295; - t.plusminus = 0x00b1; - t.plusmod = 0x02d6; - t.plusmonospace = 0xff0b; - t.plussmall = 0xfe62; - t.plussuperior = 0x207a; - t.pmonospace = 0xff50; - t.pmsquare = 0x33d8; - t.pohiragana = 0x307d; - t.pointingindexdownwhite = 0x261f; - t.pointingindexleftwhite = 0x261c; - t.pointingindexrightwhite = 0x261e; - t.pointingindexupwhite = 0x261d; - t.pokatakana = 0x30dd; - t.poplathai = 0x0e1b; - t.postalmark = 0x3012; - t.postalmarkface = 0x3020; - t.pparen = 0x24ab; - t.precedes = 0x227a; - t.prescription = 0x211e; - t.primemod = 0x02b9; - t.primereversed = 0x2035; - t.product = 0x220f; - t.projective = 0x2305; - t.prolongedkana = 0x30fc; - t.propellor = 0x2318; - t.propersubset = 0x2282; - t.propersuperset = 0x2283; - t.proportion = 0x2237; - t.proportional = 0x221d; - t.psi = 0x03c8; - t.psicyrillic = 0x0471; - t.psilipneumatacyrilliccmb = 0x0486; - t.pssquare = 0x33b0; - t.puhiragana = 0x3077; - t.pukatakana = 0x30d7; - t.pvsquare = 0x33b4; - t.pwsquare = 0x33ba; - t.q = 0x0071; - t.qadeva = 0x0958; - t.qadmahebrew = 0x05a8; - t.qafarabic = 0x0642; - t.qaffinalarabic = 0xfed6; - t.qafinitialarabic = 0xfed7; - t.qafmedialarabic = 0xfed8; - t.qamats = 0x05b8; - t.qamats10 = 0x05b8; - t.qamats1a = 0x05b8; - t.qamats1c = 0x05b8; - t.qamats27 = 0x05b8; - t.qamats29 = 0x05b8; - t.qamats33 = 0x05b8; - t.qamatsde = 0x05b8; - t.qamatshebrew = 0x05b8; - t.qamatsnarrowhebrew = 0x05b8; - t.qamatsqatanhebrew = 0x05b8; - t.qamatsqatannarrowhebrew = 0x05b8; - t.qamatsqatanquarterhebrew = 0x05b8; - t.qamatsqatanwidehebrew = 0x05b8; - t.qamatsquarterhebrew = 0x05b8; - t.qamatswidehebrew = 0x05b8; - t.qarneyparahebrew = 0x059f; - t.qbopomofo = 0x3111; - t.qcircle = 0x24e0; - t.qhook = 0x02a0; - t.qmonospace = 0xff51; - t.qof = 0x05e7; - t.qofdagesh = 0xfb47; - t.qofdageshhebrew = 0xfb47; - t.qofhebrew = 0x05e7; - t.qparen = 0x24ac; - t.quarternote = 0x2669; - t.qubuts = 0x05bb; - t.qubuts18 = 0x05bb; - t.qubuts25 = 0x05bb; - t.qubuts31 = 0x05bb; - t.qubutshebrew = 0x05bb; - t.qubutsnarrowhebrew = 0x05bb; - t.qubutsquarterhebrew = 0x05bb; - t.qubutswidehebrew = 0x05bb; - t.question = 0x003f; - t.questionarabic = 0x061f; - t.questionarmenian = 0x055e; - t.questiondown = 0x00bf; - t.questiondownsmall = 0xf7bf; - t.questiongreek = 0x037e; - t.questionmonospace = 0xff1f; - t.questionsmall = 0xf73f; - t.quotedbl = 0x0022; - t.quotedblbase = 0x201e; - t.quotedblleft = 0x201c; - t.quotedblmonospace = 0xff02; - t.quotedblprime = 0x301e; - t.quotedblprimereversed = 0x301d; - t.quotedblright = 0x201d; - t.quoteleft = 0x2018; - t.quoteleftreversed = 0x201b; - t.quotereversed = 0x201b; - t.quoteright = 0x2019; - t.quoterightn = 0x0149; - t.quotesinglbase = 0x201a; - t.quotesingle = 0x0027; - t.quotesinglemonospace = 0xff07; - t.r = 0x0072; - t.raarmenian = 0x057c; - t.rabengali = 0x09b0; - t.racute = 0x0155; - t.radeva = 0x0930; - t.radical = 0x221a; - t.radicalex = 0xf8e5; - t.radoverssquare = 0x33ae; - t.radoverssquaredsquare = 0x33af; - t.radsquare = 0x33ad; - t.rafe = 0x05bf; - t.rafehebrew = 0x05bf; - t.ragujarati = 0x0ab0; - t.ragurmukhi = 0x0a30; - t.rahiragana = 0x3089; - t.rakatakana = 0x30e9; - t.rakatakanahalfwidth = 0xff97; - t.ralowerdiagonalbengali = 0x09f1; - t.ramiddlediagonalbengali = 0x09f0; - t.ramshorn = 0x0264; - t.ratio = 0x2236; - t.rbopomofo = 0x3116; - t.rcaron = 0x0159; - t.rcedilla = 0x0157; - t.rcircle = 0x24e1; - t.rcommaaccent = 0x0157; - t.rdblgrave = 0x0211; - t.rdotaccent = 0x1e59; - t.rdotbelow = 0x1e5b; - t.rdotbelowmacron = 0x1e5d; - t.referencemark = 0x203b; - t.reflexsubset = 0x2286; - t.reflexsuperset = 0x2287; - t.registered = 0x00ae; - t.registersans = 0xf8e8; - t.registerserif = 0xf6da; - t.reharabic = 0x0631; - t.reharmenian = 0x0580; - t.rehfinalarabic = 0xfeae; - t.rehiragana = 0x308c; - t.rekatakana = 0x30ec; - t.rekatakanahalfwidth = 0xff9a; - t.resh = 0x05e8; - t.reshdageshhebrew = 0xfb48; - t.reshhebrew = 0x05e8; - t.reversedtilde = 0x223d; - t.reviahebrew = 0x0597; - t.reviamugrashhebrew = 0x0597; - t.revlogicalnot = 0x2310; - t.rfishhook = 0x027e; - t.rfishhookreversed = 0x027f; - t.rhabengali = 0x09dd; - t.rhadeva = 0x095d; - t.rho = 0x03c1; - t.rhook = 0x027d; - t.rhookturned = 0x027b; - t.rhookturnedsuperior = 0x02b5; - t.rhosymbolgreek = 0x03f1; - t.rhotichookmod = 0x02de; - t.rieulacirclekorean = 0x3271; - t.rieulaparenkorean = 0x3211; - t.rieulcirclekorean = 0x3263; - t.rieulhieuhkorean = 0x3140; - t.rieulkiyeokkorean = 0x313a; - t.rieulkiyeoksioskorean = 0x3169; - t.rieulkorean = 0x3139; - t.rieulmieumkorean = 0x313b; - t.rieulpansioskorean = 0x316c; - t.rieulparenkorean = 0x3203; - t.rieulphieuphkorean = 0x313f; - t.rieulpieupkorean = 0x313c; - t.rieulpieupsioskorean = 0x316b; - t.rieulsioskorean = 0x313d; - t.rieulthieuthkorean = 0x313e; - t.rieultikeutkorean = 0x316a; - t.rieulyeorinhieuhkorean = 0x316d; - t.rightangle = 0x221f; - t.righttackbelowcmb = 0x0319; - t.righttriangle = 0x22bf; - t.rihiragana = 0x308a; - t.rikatakana = 0x30ea; - t.rikatakanahalfwidth = 0xff98; - t.ring = 0x02da; - t.ringbelowcmb = 0x0325; - t.ringcmb = 0x030a; - t.ringhalfleft = 0x02bf; - t.ringhalfleftarmenian = 0x0559; - t.ringhalfleftbelowcmb = 0x031c; - t.ringhalfleftcentered = 0x02d3; - t.ringhalfright = 0x02be; - t.ringhalfrightbelowcmb = 0x0339; - t.ringhalfrightcentered = 0x02d2; - t.rinvertedbreve = 0x0213; - t.rittorusquare = 0x3351; - t.rlinebelow = 0x1e5f; - t.rlongleg = 0x027c; - t.rlonglegturned = 0x027a; - t.rmonospace = 0xff52; - t.rohiragana = 0x308d; - t.rokatakana = 0x30ed; - t.rokatakanahalfwidth = 0xff9b; - t.roruathai = 0x0e23; - t.rparen = 0x24ad; - t.rrabengali = 0x09dc; - t.rradeva = 0x0931; - t.rragurmukhi = 0x0a5c; - t.rreharabic = 0x0691; - t.rrehfinalarabic = 0xfb8d; - t.rrvocalicbengali = 0x09e0; - t.rrvocalicdeva = 0x0960; - t.rrvocalicgujarati = 0x0ae0; - t.rrvocalicvowelsignbengali = 0x09c4; - t.rrvocalicvowelsigndeva = 0x0944; - t.rrvocalicvowelsigngujarati = 0x0ac4; - t.rsuperior = 0xf6f1; - t.rtblock = 0x2590; - t.rturned = 0x0279; - t.rturnedsuperior = 0x02b4; - t.ruhiragana = 0x308b; - t.rukatakana = 0x30eb; - t.rukatakanahalfwidth = 0xff99; - t.rupeemarkbengali = 0x09f2; - t.rupeesignbengali = 0x09f3; - t.rupiah = 0xf6dd; - t.ruthai = 0x0e24; - t.rvocalicbengali = 0x098b; - t.rvocalicdeva = 0x090b; - t.rvocalicgujarati = 0x0a8b; - t.rvocalicvowelsignbengali = 0x09c3; - t.rvocalicvowelsigndeva = 0x0943; - t.rvocalicvowelsigngujarati = 0x0ac3; - t.s = 0x0073; - t.sabengali = 0x09b8; - t.sacute = 0x015b; - t.sacutedotaccent = 0x1e65; - t.sadarabic = 0x0635; - t.sadeva = 0x0938; - t.sadfinalarabic = 0xfeba; - t.sadinitialarabic = 0xfebb; - t.sadmedialarabic = 0xfebc; - t.sagujarati = 0x0ab8; - t.sagurmukhi = 0x0a38; - t.sahiragana = 0x3055; - t.sakatakana = 0x30b5; - t.sakatakanahalfwidth = 0xff7b; - t.sallallahoualayhewasallamarabic = 0xfdfa; - t.samekh = 0x05e1; - t.samekhdagesh = 0xfb41; - t.samekhdageshhebrew = 0xfb41; - t.samekhhebrew = 0x05e1; - t.saraaathai = 0x0e32; - t.saraaethai = 0x0e41; - t.saraaimaimalaithai = 0x0e44; - t.saraaimaimuanthai = 0x0e43; - t.saraamthai = 0x0e33; - t.saraathai = 0x0e30; - t.saraethai = 0x0e40; - t.saraiileftthai = 0xf886; - t.saraiithai = 0x0e35; - t.saraileftthai = 0xf885; - t.saraithai = 0x0e34; - t.saraothai = 0x0e42; - t.saraueeleftthai = 0xf888; - t.saraueethai = 0x0e37; - t.saraueleftthai = 0xf887; - t.sarauethai = 0x0e36; - t.sarauthai = 0x0e38; - t.sarauuthai = 0x0e39; - t.sbopomofo = 0x3119; - t.scaron = 0x0161; - t.scarondotaccent = 0x1e67; - t.scedilla = 0x015f; - t.schwa = 0x0259; - t.schwacyrillic = 0x04d9; - t.schwadieresiscyrillic = 0x04db; - t.schwahook = 0x025a; - t.scircle = 0x24e2; - t.scircumflex = 0x015d; - t.scommaaccent = 0x0219; - t.sdotaccent = 0x1e61; - t.sdotbelow = 0x1e63; - t.sdotbelowdotaccent = 0x1e69; - t.seagullbelowcmb = 0x033c; - t.second = 0x2033; - t.secondtonechinese = 0x02ca; - t.section = 0x00a7; - t.seenarabic = 0x0633; - t.seenfinalarabic = 0xfeb2; - t.seeninitialarabic = 0xfeb3; - t.seenmedialarabic = 0xfeb4; - t.segol = 0x05b6; - t.segol13 = 0x05b6; - t.segol1f = 0x05b6; - t.segol2c = 0x05b6; - t.segolhebrew = 0x05b6; - t.segolnarrowhebrew = 0x05b6; - t.segolquarterhebrew = 0x05b6; - t.segoltahebrew = 0x0592; - t.segolwidehebrew = 0x05b6; - t.seharmenian = 0x057d; - t.sehiragana = 0x305b; - t.sekatakana = 0x30bb; - t.sekatakanahalfwidth = 0xff7e; - t.semicolon = 0x003b; - t.semicolonarabic = 0x061b; - t.semicolonmonospace = 0xff1b; - t.semicolonsmall = 0xfe54; - t.semivoicedmarkkana = 0x309c; - t.semivoicedmarkkanahalfwidth = 0xff9f; - t.sentisquare = 0x3322; - t.sentosquare = 0x3323; - t.seven = 0x0037; - t.sevenarabic = 0x0667; - t.sevenbengali = 0x09ed; - t.sevencircle = 0x2466; - t.sevencircleinversesansserif = 0x2790; - t.sevendeva = 0x096d; - t.seveneighths = 0x215e; - t.sevengujarati = 0x0aed; - t.sevengurmukhi = 0x0a6d; - t.sevenhackarabic = 0x0667; - t.sevenhangzhou = 0x3027; - t.sevenideographicparen = 0x3226; - t.seveninferior = 0x2087; - t.sevenmonospace = 0xff17; - t.sevenoldstyle = 0xf737; - t.sevenparen = 0x247a; - t.sevenperiod = 0x248e; - t.sevenpersian = 0x06f7; - t.sevenroman = 0x2176; - t.sevensuperior = 0x2077; - t.seventeencircle = 0x2470; - t.seventeenparen = 0x2484; - t.seventeenperiod = 0x2498; - t.seventhai = 0x0e57; - t.sfthyphen = 0x00ad; - t.shaarmenian = 0x0577; - t.shabengali = 0x09b6; - t.shacyrillic = 0x0448; - t.shaddaarabic = 0x0651; - t.shaddadammaarabic = 0xfc61; - t.shaddadammatanarabic = 0xfc5e; - t.shaddafathaarabic = 0xfc60; - t.shaddakasraarabic = 0xfc62; - t.shaddakasratanarabic = 0xfc5f; - t.shade = 0x2592; - t.shadedark = 0x2593; - t.shadelight = 0x2591; - t.shademedium = 0x2592; - t.shadeva = 0x0936; - t.shagujarati = 0x0ab6; - t.shagurmukhi = 0x0a36; - t.shalshelethebrew = 0x0593; - t.shbopomofo = 0x3115; - t.shchacyrillic = 0x0449; - t.sheenarabic = 0x0634; - t.sheenfinalarabic = 0xfeb6; - t.sheeninitialarabic = 0xfeb7; - t.sheenmedialarabic = 0xfeb8; - t.sheicoptic = 0x03e3; - t.sheqel = 0x20aa; - t.sheqelhebrew = 0x20aa; - t.sheva = 0x05b0; - t.sheva115 = 0x05b0; - t.sheva15 = 0x05b0; - t.sheva22 = 0x05b0; - t.sheva2e = 0x05b0; - t.shevahebrew = 0x05b0; - t.shevanarrowhebrew = 0x05b0; - t.shevaquarterhebrew = 0x05b0; - t.shevawidehebrew = 0x05b0; - t.shhacyrillic = 0x04bb; - t.shimacoptic = 0x03ed; - t.shin = 0x05e9; - t.shindagesh = 0xfb49; - t.shindageshhebrew = 0xfb49; - t.shindageshshindot = 0xfb2c; - t.shindageshshindothebrew = 0xfb2c; - t.shindageshsindot = 0xfb2d; - t.shindageshsindothebrew = 0xfb2d; - t.shindothebrew = 0x05c1; - t.shinhebrew = 0x05e9; - t.shinshindot = 0xfb2a; - t.shinshindothebrew = 0xfb2a; - t.shinsindot = 0xfb2b; - t.shinsindothebrew = 0xfb2b; - t.shook = 0x0282; - t.sigma = 0x03c3; - t.sigma1 = 0x03c2; - t.sigmafinal = 0x03c2; - t.sigmalunatesymbolgreek = 0x03f2; - t.sihiragana = 0x3057; - t.sikatakana = 0x30b7; - t.sikatakanahalfwidth = 0xff7c; - t.siluqhebrew = 0x05bd; - t.siluqlefthebrew = 0x05bd; - t.similar = 0x223c; - t.sindothebrew = 0x05c2; - t.siosacirclekorean = 0x3274; - t.siosaparenkorean = 0x3214; - t.sioscieuckorean = 0x317e; - t.sioscirclekorean = 0x3266; - t.sioskiyeokkorean = 0x317a; - t.sioskorean = 0x3145; - t.siosnieunkorean = 0x317b; - t.siosparenkorean = 0x3206; - t.siospieupkorean = 0x317d; - t.siostikeutkorean = 0x317c; - t.six = 0x0036; - t.sixarabic = 0x0666; - t.sixbengali = 0x09ec; - t.sixcircle = 0x2465; - t.sixcircleinversesansserif = 0x278f; - t.sixdeva = 0x096c; - t.sixgujarati = 0x0aec; - t.sixgurmukhi = 0x0a6c; - t.sixhackarabic = 0x0666; - t.sixhangzhou = 0x3026; - t.sixideographicparen = 0x3225; - t.sixinferior = 0x2086; - t.sixmonospace = 0xff16; - t.sixoldstyle = 0xf736; - t.sixparen = 0x2479; - t.sixperiod = 0x248d; - t.sixpersian = 0x06f6; - t.sixroman = 0x2175; - t.sixsuperior = 0x2076; - t.sixteencircle = 0x246f; - t.sixteencurrencydenominatorbengali = 0x09f9; - t.sixteenparen = 0x2483; - t.sixteenperiod = 0x2497; - t.sixthai = 0x0e56; - t.slash = 0x002f; - t.slashmonospace = 0xff0f; - t.slong = 0x017f; - t.slongdotaccent = 0x1e9b; - t.smileface = 0x263a; - t.smonospace = 0xff53; - t.sofpasuqhebrew = 0x05c3; - t.softhyphen = 0x00ad; - t.softsigncyrillic = 0x044c; - t.sohiragana = 0x305d; - t.sokatakana = 0x30bd; - t.sokatakanahalfwidth = 0xff7f; - t.soliduslongoverlaycmb = 0x0338; - t.solidusshortoverlaycmb = 0x0337; - t.sorusithai = 0x0e29; - t.sosalathai = 0x0e28; - t.sosothai = 0x0e0b; - t.sosuathai = 0x0e2a; - t.space = 0x0020; - t.spacehackarabic = 0x0020; - t.spade = 0x2660; - t.spadesuitblack = 0x2660; - t.spadesuitwhite = 0x2664; - t.sparen = 0x24ae; - t.squarebelowcmb = 0x033b; - t.squarecc = 0x33c4; - t.squarecm = 0x339d; - t.squarediagonalcrosshatchfill = 0x25a9; - t.squarehorizontalfill = 0x25a4; - t.squarekg = 0x338f; - t.squarekm = 0x339e; - t.squarekmcapital = 0x33ce; - t.squareln = 0x33d1; - t.squarelog = 0x33d2; - t.squaremg = 0x338e; - t.squaremil = 0x33d5; - t.squaremm = 0x339c; - t.squaremsquared = 0x33a1; - t.squareorthogonalcrosshatchfill = 0x25a6; - t.squareupperlefttolowerrightfill = 0x25a7; - t.squareupperrighttolowerleftfill = 0x25a8; - t.squareverticalfill = 0x25a5; - t.squarewhitewithsmallblack = 0x25a3; - t.srsquare = 0x33db; - t.ssabengali = 0x09b7; - t.ssadeva = 0x0937; - t.ssagujarati = 0x0ab7; - t.ssangcieuckorean = 0x3149; - t.ssanghieuhkorean = 0x3185; - t.ssangieungkorean = 0x3180; - t.ssangkiyeokkorean = 0x3132; - t.ssangnieunkorean = 0x3165; - t.ssangpieupkorean = 0x3143; - t.ssangsioskorean = 0x3146; - t.ssangtikeutkorean = 0x3138; - t.ssuperior = 0xf6f2; - t.sterling = 0x00a3; - t.sterlingmonospace = 0xffe1; - t.strokelongoverlaycmb = 0x0336; - t.strokeshortoverlaycmb = 0x0335; - t.subset = 0x2282; - t.subsetnotequal = 0x228a; - t.subsetorequal = 0x2286; - t.succeeds = 0x227b; - t.suchthat = 0x220b; - t.suhiragana = 0x3059; - t.sukatakana = 0x30b9; - t.sukatakanahalfwidth = 0xff7d; - t.sukunarabic = 0x0652; - t.summation = 0x2211; - t.sun = 0x263c; - t.superset = 0x2283; - t.supersetnotequal = 0x228b; - t.supersetorequal = 0x2287; - t.svsquare = 0x33dc; - t.syouwaerasquare = 0x337c; - t.t = 0x0074; - t.tabengali = 0x09a4; - t.tackdown = 0x22a4; - t.tackleft = 0x22a3; - t.tadeva = 0x0924; - t.tagujarati = 0x0aa4; - t.tagurmukhi = 0x0a24; - t.taharabic = 0x0637; - t.tahfinalarabic = 0xfec2; - t.tahinitialarabic = 0xfec3; - t.tahiragana = 0x305f; - t.tahmedialarabic = 0xfec4; - t.taisyouerasquare = 0x337d; - t.takatakana = 0x30bf; - t.takatakanahalfwidth = 0xff80; - t.tatweelarabic = 0x0640; - t.tau = 0x03c4; - t.tav = 0x05ea; - t.tavdages = 0xfb4a; - t.tavdagesh = 0xfb4a; - t.tavdageshhebrew = 0xfb4a; - t.tavhebrew = 0x05ea; - t.tbar = 0x0167; - t.tbopomofo = 0x310a; - t.tcaron = 0x0165; - t.tccurl = 0x02a8; - t.tcedilla = 0x0163; - t.tcheharabic = 0x0686; - t.tchehfinalarabic = 0xfb7b; - t.tchehinitialarabic = 0xfb7c; - t.tchehmedialarabic = 0xfb7d; - t.tcircle = 0x24e3; - t.tcircumflexbelow = 0x1e71; - t.tcommaaccent = 0x0163; - t.tdieresis = 0x1e97; - t.tdotaccent = 0x1e6b; - t.tdotbelow = 0x1e6d; - t.tecyrillic = 0x0442; - t.tedescendercyrillic = 0x04ad; - t.teharabic = 0x062a; - t.tehfinalarabic = 0xfe96; - t.tehhahinitialarabic = 0xfca2; - t.tehhahisolatedarabic = 0xfc0c; - t.tehinitialarabic = 0xfe97; - t.tehiragana = 0x3066; - t.tehjeeminitialarabic = 0xfca1; - t.tehjeemisolatedarabic = 0xfc0b; - t.tehmarbutaarabic = 0x0629; - t.tehmarbutafinalarabic = 0xfe94; - t.tehmedialarabic = 0xfe98; - t.tehmeeminitialarabic = 0xfca4; - t.tehmeemisolatedarabic = 0xfc0e; - t.tehnoonfinalarabic = 0xfc73; - t.tekatakana = 0x30c6; - t.tekatakanahalfwidth = 0xff83; - t.telephone = 0x2121; - t.telephoneblack = 0x260e; - t.telishagedolahebrew = 0x05a0; - t.telishaqetanahebrew = 0x05a9; - t.tencircle = 0x2469; - t.tenideographicparen = 0x3229; - t.tenparen = 0x247d; - t.tenperiod = 0x2491; - t.tenroman = 0x2179; - t.tesh = 0x02a7; - t.tet = 0x05d8; - t.tetdagesh = 0xfb38; - t.tetdageshhebrew = 0xfb38; - t.tethebrew = 0x05d8; - t.tetsecyrillic = 0x04b5; - t.tevirhebrew = 0x059b; - t.tevirlefthebrew = 0x059b; - t.thabengali = 0x09a5; - t.thadeva = 0x0925; - t.thagujarati = 0x0aa5; - t.thagurmukhi = 0x0a25; - t.thalarabic = 0x0630; - t.thalfinalarabic = 0xfeac; - t.thanthakhatlowleftthai = 0xf898; - t.thanthakhatlowrightthai = 0xf897; - t.thanthakhatthai = 0x0e4c; - t.thanthakhatupperleftthai = 0xf896; - t.theharabic = 0x062b; - t.thehfinalarabic = 0xfe9a; - t.thehinitialarabic = 0xfe9b; - t.thehmedialarabic = 0xfe9c; - t.thereexists = 0x2203; - t.therefore = 0x2234; - t.theta = 0x03b8; - t.theta1 = 0x03d1; - t.thetasymbolgreek = 0x03d1; - t.thieuthacirclekorean = 0x3279; - t.thieuthaparenkorean = 0x3219; - t.thieuthcirclekorean = 0x326b; - t.thieuthkorean = 0x314c; - t.thieuthparenkorean = 0x320b; - t.thirteencircle = 0x246c; - t.thirteenparen = 0x2480; - t.thirteenperiod = 0x2494; - t.thonangmonthothai = 0x0e11; - t.thook = 0x01ad; - t.thophuthaothai = 0x0e12; - t.thorn = 0x00fe; - t.thothahanthai = 0x0e17; - t.thothanthai = 0x0e10; - t.thothongthai = 0x0e18; - t.thothungthai = 0x0e16; - t.thousandcyrillic = 0x0482; - t.thousandsseparatorarabic = 0x066c; - t.thousandsseparatorpersian = 0x066c; - t.three = 0x0033; - t.threearabic = 0x0663; - t.threebengali = 0x09e9; - t.threecircle = 0x2462; - t.threecircleinversesansserif = 0x278c; - t.threedeva = 0x0969; - t.threeeighths = 0x215c; - t.threegujarati = 0x0ae9; - t.threegurmukhi = 0x0a69; - t.threehackarabic = 0x0663; - t.threehangzhou = 0x3023; - t.threeideographicparen = 0x3222; - t.threeinferior = 0x2083; - t.threemonospace = 0xff13; - t.threenumeratorbengali = 0x09f6; - t.threeoldstyle = 0xf733; - t.threeparen = 0x2476; - t.threeperiod = 0x248a; - t.threepersian = 0x06f3; - t.threequarters = 0x00be; - t.threequartersemdash = 0xf6de; - t.threeroman = 0x2172; - t.threesuperior = 0x00b3; - t.threethai = 0x0e53; - t.thzsquare = 0x3394; - t.tihiragana = 0x3061; - t.tikatakana = 0x30c1; - t.tikatakanahalfwidth = 0xff81; - t.tikeutacirclekorean = 0x3270; - t.tikeutaparenkorean = 0x3210; - t.tikeutcirclekorean = 0x3262; - t.tikeutkorean = 0x3137; - t.tikeutparenkorean = 0x3202; - t.tilde = 0x02dc; - t.tildebelowcmb = 0x0330; - t.tildecmb = 0x0303; - t.tildecomb = 0x0303; - t.tildedoublecmb = 0x0360; - t.tildeoperator = 0x223c; - t.tildeoverlaycmb = 0x0334; - t.tildeverticalcmb = 0x033e; - t.timescircle = 0x2297; - t.tipehahebrew = 0x0596; - t.tipehalefthebrew = 0x0596; - t.tippigurmukhi = 0x0a70; - t.titlocyrilliccmb = 0x0483; - t.tiwnarmenian = 0x057f; - t.tlinebelow = 0x1e6f; - t.tmonospace = 0xff54; - t.toarmenian = 0x0569; - t.tohiragana = 0x3068; - t.tokatakana = 0x30c8; - t.tokatakanahalfwidth = 0xff84; - t.tonebarextrahighmod = 0x02e5; - t.tonebarextralowmod = 0x02e9; - t.tonebarhighmod = 0x02e6; - t.tonebarlowmod = 0x02e8; - t.tonebarmidmod = 0x02e7; - t.tonefive = 0x01bd; - t.tonesix = 0x0185; - t.tonetwo = 0x01a8; - t.tonos = 0x0384; - t.tonsquare = 0x3327; - t.topatakthai = 0x0e0f; - t.tortoiseshellbracketleft = 0x3014; - t.tortoiseshellbracketleftsmall = 0xfe5d; - t.tortoiseshellbracketleftvertical = 0xfe39; - t.tortoiseshellbracketright = 0x3015; - t.tortoiseshellbracketrightsmall = 0xfe5e; - t.tortoiseshellbracketrightvertical = 0xfe3a; - t.totaothai = 0x0e15; - t.tpalatalhook = 0x01ab; - t.tparen = 0x24af; - t.trademark = 0x2122; - t.trademarksans = 0xf8ea; - t.trademarkserif = 0xf6db; - t.tretroflexhook = 0x0288; - t.triagdn = 0x25bc; - t.triaglf = 0x25c4; - t.triagrt = 0x25ba; - t.triagup = 0x25b2; - t.ts = 0x02a6; - t.tsadi = 0x05e6; - t.tsadidagesh = 0xfb46; - t.tsadidageshhebrew = 0xfb46; - t.tsadihebrew = 0x05e6; - t.tsecyrillic = 0x0446; - t.tsere = 0x05b5; - t.tsere12 = 0x05b5; - t.tsere1e = 0x05b5; - t.tsere2b = 0x05b5; - t.tserehebrew = 0x05b5; - t.tserenarrowhebrew = 0x05b5; - t.tserequarterhebrew = 0x05b5; - t.tserewidehebrew = 0x05b5; - t.tshecyrillic = 0x045b; - t.tsuperior = 0xf6f3; - t.ttabengali = 0x099f; - t.ttadeva = 0x091f; - t.ttagujarati = 0x0a9f; - t.ttagurmukhi = 0x0a1f; - t.tteharabic = 0x0679; - t.ttehfinalarabic = 0xfb67; - t.ttehinitialarabic = 0xfb68; - t.ttehmedialarabic = 0xfb69; - t.tthabengali = 0x09a0; - t.tthadeva = 0x0920; - t.tthagujarati = 0x0aa0; - t.tthagurmukhi = 0x0a20; - t.tturned = 0x0287; - t.tuhiragana = 0x3064; - t.tukatakana = 0x30c4; - t.tukatakanahalfwidth = 0xff82; - t.tusmallhiragana = 0x3063; - t.tusmallkatakana = 0x30c3; - t.tusmallkatakanahalfwidth = 0xff6f; - t.twelvecircle = 0x246b; - t.twelveparen = 0x247f; - t.twelveperiod = 0x2493; - t.twelveroman = 0x217b; - t.twentycircle = 0x2473; - t.twentyhangzhou = 0x5344; - t.twentyparen = 0x2487; - t.twentyperiod = 0x249b; - t.two = 0x0032; - t.twoarabic = 0x0662; - t.twobengali = 0x09e8; - t.twocircle = 0x2461; - t.twocircleinversesansserif = 0x278b; - t.twodeva = 0x0968; - t.twodotenleader = 0x2025; - t.twodotleader = 0x2025; - t.twodotleadervertical = 0xfe30; - t.twogujarati = 0x0ae8; - t.twogurmukhi = 0x0a68; - t.twohackarabic = 0x0662; - t.twohangzhou = 0x3022; - t.twoideographicparen = 0x3221; - t.twoinferior = 0x2082; - t.twomonospace = 0xff12; - t.twonumeratorbengali = 0x09f5; - t.twooldstyle = 0xf732; - t.twoparen = 0x2475; - t.twoperiod = 0x2489; - t.twopersian = 0x06f2; - t.tworoman = 0x2171; - t.twostroke = 0x01bb; - t.twosuperior = 0x00b2; - t.twothai = 0x0e52; - t.twothirds = 0x2154; - t.u = 0x0075; - t.uacute = 0x00fa; - t.ubar = 0x0289; - t.ubengali = 0x0989; - t.ubopomofo = 0x3128; - t.ubreve = 0x016d; - t.ucaron = 0x01d4; - t.ucircle = 0x24e4; - t.ucircumflex = 0x00fb; - t.ucircumflexbelow = 0x1e77; - t.ucyrillic = 0x0443; - t.udattadeva = 0x0951; - t.udblacute = 0x0171; - t.udblgrave = 0x0215; - t.udeva = 0x0909; - t.udieresis = 0x00fc; - t.udieresisacute = 0x01d8; - t.udieresisbelow = 0x1e73; - t.udieresiscaron = 0x01da; - t.udieresiscyrillic = 0x04f1; - t.udieresisgrave = 0x01dc; - t.udieresismacron = 0x01d6; - t.udotbelow = 0x1ee5; - t.ugrave = 0x00f9; - t.ugujarati = 0x0a89; - t.ugurmukhi = 0x0a09; - t.uhiragana = 0x3046; - t.uhookabove = 0x1ee7; - t.uhorn = 0x01b0; - t.uhornacute = 0x1ee9; - t.uhorndotbelow = 0x1ef1; - t.uhorngrave = 0x1eeb; - t.uhornhookabove = 0x1eed; - t.uhorntilde = 0x1eef; - t.uhungarumlaut = 0x0171; - t.uhungarumlautcyrillic = 0x04f3; - t.uinvertedbreve = 0x0217; - t.ukatakana = 0x30a6; - t.ukatakanahalfwidth = 0xff73; - t.ukcyrillic = 0x0479; - t.ukorean = 0x315c; - t.umacron = 0x016b; - t.umacroncyrillic = 0x04ef; - t.umacrondieresis = 0x1e7b; - t.umatragurmukhi = 0x0a41; - t.umonospace = 0xff55; - t.underscore = 0x005f; - t.underscoredbl = 0x2017; - t.underscoremonospace = 0xff3f; - t.underscorevertical = 0xfe33; - t.underscorewavy = 0xfe4f; - t.union = 0x222a; - t.universal = 0x2200; - t.uogonek = 0x0173; - t.uparen = 0x24b0; - t.upblock = 0x2580; - t.upperdothebrew = 0x05c4; - t.upsilon = 0x03c5; - t.upsilondieresis = 0x03cb; - t.upsilondieresistonos = 0x03b0; - t.upsilonlatin = 0x028a; - t.upsilontonos = 0x03cd; - t.uptackbelowcmb = 0x031d; - t.uptackmod = 0x02d4; - t.uragurmukhi = 0x0a73; - t.uring = 0x016f; - t.ushortcyrillic = 0x045e; - t.usmallhiragana = 0x3045; - t.usmallkatakana = 0x30a5; - t.usmallkatakanahalfwidth = 0xff69; - t.ustraightcyrillic = 0x04af; - t.ustraightstrokecyrillic = 0x04b1; - t.utilde = 0x0169; - t.utildeacute = 0x1e79; - t.utildebelow = 0x1e75; - t.uubengali = 0x098a; - t.uudeva = 0x090a; - t.uugujarati = 0x0a8a; - t.uugurmukhi = 0x0a0a; - t.uumatragurmukhi = 0x0a42; - t.uuvowelsignbengali = 0x09c2; - t.uuvowelsigndeva = 0x0942; - t.uuvowelsigngujarati = 0x0ac2; - t.uvowelsignbengali = 0x09c1; - t.uvowelsigndeva = 0x0941; - t.uvowelsigngujarati = 0x0ac1; - t.v = 0x0076; - t.vadeva = 0x0935; - t.vagujarati = 0x0ab5; - t.vagurmukhi = 0x0a35; - t.vakatakana = 0x30f7; - t.vav = 0x05d5; - t.vavdagesh = 0xfb35; - t.vavdagesh65 = 0xfb35; - t.vavdageshhebrew = 0xfb35; - t.vavhebrew = 0x05d5; - t.vavholam = 0xfb4b; - t.vavholamhebrew = 0xfb4b; - t.vavvavhebrew = 0x05f0; - t.vavyodhebrew = 0x05f1; - t.vcircle = 0x24e5; - t.vdotbelow = 0x1e7f; - t.vecyrillic = 0x0432; - t.veharabic = 0x06a4; - t.vehfinalarabic = 0xfb6b; - t.vehinitialarabic = 0xfb6c; - t.vehmedialarabic = 0xfb6d; - t.vekatakana = 0x30f9; - t.venus = 0x2640; - t.verticalbar = 0x007c; - t.verticallineabovecmb = 0x030d; - t.verticallinebelowcmb = 0x0329; - t.verticallinelowmod = 0x02cc; - t.verticallinemod = 0x02c8; - t.vewarmenian = 0x057e; - t.vhook = 0x028b; - t.vikatakana = 0x30f8; - t.viramabengali = 0x09cd; - t.viramadeva = 0x094d; - t.viramagujarati = 0x0acd; - t.visargabengali = 0x0983; - t.visargadeva = 0x0903; - t.visargagujarati = 0x0a83; - t.vmonospace = 0xff56; - t.voarmenian = 0x0578; - t.voicediterationhiragana = 0x309e; - t.voicediterationkatakana = 0x30fe; - t.voicedmarkkana = 0x309b; - t.voicedmarkkanahalfwidth = 0xff9e; - t.vokatakana = 0x30fa; - t.vparen = 0x24b1; - t.vtilde = 0x1e7d; - t.vturned = 0x028c; - t.vuhiragana = 0x3094; - t.vukatakana = 0x30f4; - t.w = 0x0077; - t.wacute = 0x1e83; - t.waekorean = 0x3159; - t.wahiragana = 0x308f; - t.wakatakana = 0x30ef; - t.wakatakanahalfwidth = 0xff9c; - t.wakorean = 0x3158; - t.wasmallhiragana = 0x308e; - t.wasmallkatakana = 0x30ee; - t.wattosquare = 0x3357; - t.wavedash = 0x301c; - t.wavyunderscorevertical = 0xfe34; - t.wawarabic = 0x0648; - t.wawfinalarabic = 0xfeee; - t.wawhamzaabovearabic = 0x0624; - t.wawhamzaabovefinalarabic = 0xfe86; - t.wbsquare = 0x33dd; - t.wcircle = 0x24e6; - t.wcircumflex = 0x0175; - t.wdieresis = 0x1e85; - t.wdotaccent = 0x1e87; - t.wdotbelow = 0x1e89; - t.wehiragana = 0x3091; - t.weierstrass = 0x2118; - t.wekatakana = 0x30f1; - t.wekorean = 0x315e; - t.weokorean = 0x315d; - t.wgrave = 0x1e81; - t.whitebullet = 0x25e6; - t.whitecircle = 0x25cb; - t.whitecircleinverse = 0x25d9; - t.whitecornerbracketleft = 0x300e; - t.whitecornerbracketleftvertical = 0xfe43; - t.whitecornerbracketright = 0x300f; - t.whitecornerbracketrightvertical = 0xfe44; - t.whitediamond = 0x25c7; - t.whitediamondcontainingblacksmalldiamond = 0x25c8; - t.whitedownpointingsmalltriangle = 0x25bf; - t.whitedownpointingtriangle = 0x25bd; - t.whiteleftpointingsmalltriangle = 0x25c3; - t.whiteleftpointingtriangle = 0x25c1; - t.whitelenticularbracketleft = 0x3016; - t.whitelenticularbracketright = 0x3017; - t.whiterightpointingsmalltriangle = 0x25b9; - t.whiterightpointingtriangle = 0x25b7; - t.whitesmallsquare = 0x25ab; - t.whitesmilingface = 0x263a; - t.whitesquare = 0x25a1; - t.whitestar = 0x2606; - t.whitetelephone = 0x260f; - t.whitetortoiseshellbracketleft = 0x3018; - t.whitetortoiseshellbracketright = 0x3019; - t.whiteuppointingsmalltriangle = 0x25b5; - t.whiteuppointingtriangle = 0x25b3; - t.wihiragana = 0x3090; - t.wikatakana = 0x30f0; - t.wikorean = 0x315f; - t.wmonospace = 0xff57; - t.wohiragana = 0x3092; - t.wokatakana = 0x30f2; - t.wokatakanahalfwidth = 0xff66; - t.won = 0x20a9; - t.wonmonospace = 0xffe6; - t.wowaenthai = 0x0e27; - t.wparen = 0x24b2; - t.wring = 0x1e98; - t.wsuperior = 0x02b7; - t.wturned = 0x028d; - t.wynn = 0x01bf; - t.x = 0x0078; - t.xabovecmb = 0x033d; - t.xbopomofo = 0x3112; - t.xcircle = 0x24e7; - t.xdieresis = 0x1e8d; - t.xdotaccent = 0x1e8b; - t.xeharmenian = 0x056d; - t.xi = 0x03be; - t.xmonospace = 0xff58; - t.xparen = 0x24b3; - t.xsuperior = 0x02e3; - t.y = 0x0079; - t.yaadosquare = 0x334e; - t.yabengali = 0x09af; - t.yacute = 0x00fd; - t.yadeva = 0x092f; - t.yaekorean = 0x3152; - t.yagujarati = 0x0aaf; - t.yagurmukhi = 0x0a2f; - t.yahiragana = 0x3084; - t.yakatakana = 0x30e4; - t.yakatakanahalfwidth = 0xff94; - t.yakorean = 0x3151; - t.yamakkanthai = 0x0e4e; - t.yasmallhiragana = 0x3083; - t.yasmallkatakana = 0x30e3; - t.yasmallkatakanahalfwidth = 0xff6c; - t.yatcyrillic = 0x0463; - t.ycircle = 0x24e8; - t.ycircumflex = 0x0177; - t.ydieresis = 0x00ff; - t.ydotaccent = 0x1e8f; - t.ydotbelow = 0x1ef5; - t.yeharabic = 0x064a; - t.yehbarreearabic = 0x06d2; - t.yehbarreefinalarabic = 0xfbaf; - t.yehfinalarabic = 0xfef2; - t.yehhamzaabovearabic = 0x0626; - t.yehhamzaabovefinalarabic = 0xfe8a; - t.yehhamzaaboveinitialarabic = 0xfe8b; - t.yehhamzaabovemedialarabic = 0xfe8c; - t.yehinitialarabic = 0xfef3; - t.yehmedialarabic = 0xfef4; - t.yehmeeminitialarabic = 0xfcdd; - t.yehmeemisolatedarabic = 0xfc58; - t.yehnoonfinalarabic = 0xfc94; - t.yehthreedotsbelowarabic = 0x06d1; - t.yekorean = 0x3156; - t.yen = 0x00a5; - t.yenmonospace = 0xffe5; - t.yeokorean = 0x3155; - t.yeorinhieuhkorean = 0x3186; - t.yerahbenyomohebrew = 0x05aa; - t.yerahbenyomolefthebrew = 0x05aa; - t.yericyrillic = 0x044b; - t.yerudieresiscyrillic = 0x04f9; - t.yesieungkorean = 0x3181; - t.yesieungpansioskorean = 0x3183; - t.yesieungsioskorean = 0x3182; - t.yetivhebrew = 0x059a; - t.ygrave = 0x1ef3; - t.yhook = 0x01b4; - t.yhookabove = 0x1ef7; - t.yiarmenian = 0x0575; - t.yicyrillic = 0x0457; - t.yikorean = 0x3162; - t.yinyang = 0x262f; - t.yiwnarmenian = 0x0582; - t.ymonospace = 0xff59; - t.yod = 0x05d9; - t.yoddagesh = 0xfb39; - t.yoddageshhebrew = 0xfb39; - t.yodhebrew = 0x05d9; - t.yodyodhebrew = 0x05f2; - t.yodyodpatahhebrew = 0xfb1f; - t.yohiragana = 0x3088; - t.yoikorean = 0x3189; - t.yokatakana = 0x30e8; - t.yokatakanahalfwidth = 0xff96; - t.yokorean = 0x315b; - t.yosmallhiragana = 0x3087; - t.yosmallkatakana = 0x30e7; - t.yosmallkatakanahalfwidth = 0xff6e; - t.yotgreek = 0x03f3; - t.yoyaekorean = 0x3188; - t.yoyakorean = 0x3187; - t.yoyakthai = 0x0e22; - t.yoyingthai = 0x0e0d; - t.yparen = 0x24b4; - t.ypogegrammeni = 0x037a; - t.ypogegrammenigreekcmb = 0x0345; - t.yr = 0x01a6; - t.yring = 0x1e99; - t.ysuperior = 0x02b8; - t.ytilde = 0x1ef9; - t.yturned = 0x028e; - t.yuhiragana = 0x3086; - t.yuikorean = 0x318c; - t.yukatakana = 0x30e6; - t.yukatakanahalfwidth = 0xff95; - t.yukorean = 0x3160; - t.yusbigcyrillic = 0x046b; - t.yusbigiotifiedcyrillic = 0x046d; - t.yuslittlecyrillic = 0x0467; - t.yuslittleiotifiedcyrillic = 0x0469; - t.yusmallhiragana = 0x3085; - t.yusmallkatakana = 0x30e5; - t.yusmallkatakanahalfwidth = 0xff6d; - t.yuyekorean = 0x318b; - t.yuyeokorean = 0x318a; - t.yyabengali = 0x09df; - t.yyadeva = 0x095f; - t.z = 0x007a; - t.zaarmenian = 0x0566; - t.zacute = 0x017a; - t.zadeva = 0x095b; - t.zagurmukhi = 0x0a5b; - t.zaharabic = 0x0638; - t.zahfinalarabic = 0xfec6; - t.zahinitialarabic = 0xfec7; - t.zahiragana = 0x3056; - t.zahmedialarabic = 0xfec8; - t.zainarabic = 0x0632; - t.zainfinalarabic = 0xfeb0; - t.zakatakana = 0x30b6; - t.zaqefgadolhebrew = 0x0595; - t.zaqefqatanhebrew = 0x0594; - t.zarqahebrew = 0x0598; - t.zayin = 0x05d6; - t.zayindagesh = 0xfb36; - t.zayindageshhebrew = 0xfb36; - t.zayinhebrew = 0x05d6; - t.zbopomofo = 0x3117; - t.zcaron = 0x017e; - t.zcircle = 0x24e9; - t.zcircumflex = 0x1e91; - t.zcurl = 0x0291; - t.zdot = 0x017c; - t.zdotaccent = 0x017c; - t.zdotbelow = 0x1e93; - t.zecyrillic = 0x0437; - t.zedescendercyrillic = 0x0499; - t.zedieresiscyrillic = 0x04df; - t.zehiragana = 0x305c; - t.zekatakana = 0x30bc; - t.zero = 0x0030; - t.zeroarabic = 0x0660; - t.zerobengali = 0x09e6; - t.zerodeva = 0x0966; - t.zerogujarati = 0x0ae6; - t.zerogurmukhi = 0x0a66; - t.zerohackarabic = 0x0660; - t.zeroinferior = 0x2080; - t.zeromonospace = 0xff10; - t.zerooldstyle = 0xf730; - t.zeropersian = 0x06f0; - t.zerosuperior = 0x2070; - t.zerothai = 0x0e50; - t.zerowidthjoiner = 0xfeff; - t.zerowidthnonjoiner = 0x200c; - t.zerowidthspace = 0x200b; - t.zeta = 0x03b6; - t.zhbopomofo = 0x3113; - t.zhearmenian = 0x056a; - t.zhebrevecyrillic = 0x04c2; - t.zhecyrillic = 0x0436; - t.zhedescendercyrillic = 0x0497; - t.zhedieresiscyrillic = 0x04dd; - t.zihiragana = 0x3058; - t.zikatakana = 0x30b8; - t.zinorhebrew = 0x05ae; - t.zlinebelow = 0x1e95; - t.zmonospace = 0xff5a; - t.zohiragana = 0x305e; - t.zokatakana = 0x30be; - t.zparen = 0x24b5; - t.zretroflexhook = 0x0290; - t.zstroke = 0x01b6; - t.zuhiragana = 0x305a; - t.zukatakana = 0x30ba; - t[".notdef"] = 0x0000; - t.angbracketleftbig = 0x2329; - t.angbracketleftBig = 0x2329; - t.angbracketleftbigg = 0x2329; - t.angbracketleftBigg = 0x2329; - t.angbracketrightBig = 0x232a; - t.angbracketrightbig = 0x232a; - t.angbracketrightBigg = 0x232a; - t.angbracketrightbigg = 0x232a; - t.arrowhookleft = 0x21aa; - t.arrowhookright = 0x21a9; - t.arrowlefttophalf = 0x21bc; - t.arrowleftbothalf = 0x21bd; - t.arrownortheast = 0x2197; - t.arrownorthwest = 0x2196; - t.arrowrighttophalf = 0x21c0; - t.arrowrightbothalf = 0x21c1; - t.arrowsoutheast = 0x2198; - t.arrowsouthwest = 0x2199; - t.backslashbig = 0x2216; - t.backslashBig = 0x2216; - t.backslashBigg = 0x2216; - t.backslashbigg = 0x2216; - t.bardbl = 0x2016; - t.bracehtipdownleft = 0xfe37; - t.bracehtipdownright = 0xfe37; - t.bracehtipupleft = 0xfe38; - t.bracehtipupright = 0xfe38; - t.braceleftBig = 0x007b; - t.braceleftbig = 0x007b; - t.braceleftbigg = 0x007b; - t.braceleftBigg = 0x007b; - t.bracerightBig = 0x007d; - t.bracerightbig = 0x007d; - t.bracerightbigg = 0x007d; - t.bracerightBigg = 0x007d; - t.bracketleftbig = 0x005b; - t.bracketleftBig = 0x005b; - t.bracketleftbigg = 0x005b; - t.bracketleftBigg = 0x005b; - t.bracketrightBig = 0x005d; - t.bracketrightbig = 0x005d; - t.bracketrightbigg = 0x005d; - t.bracketrightBigg = 0x005d; - t.ceilingleftbig = 0x2308; - t.ceilingleftBig = 0x2308; - t.ceilingleftBigg = 0x2308; - t.ceilingleftbigg = 0x2308; - t.ceilingrightbig = 0x2309; - t.ceilingrightBig = 0x2309; - t.ceilingrightbigg = 0x2309; - t.ceilingrightBigg = 0x2309; - t.circledotdisplay = 0x2299; - t.circledottext = 0x2299; - t.circlemultiplydisplay = 0x2297; - t.circlemultiplytext = 0x2297; - t.circleplusdisplay = 0x2295; - t.circleplustext = 0x2295; - t.contintegraldisplay = 0x222e; - t.contintegraltext = 0x222e; - t.coproductdisplay = 0x2210; - t.coproducttext = 0x2210; - t.floorleftBig = 0x230a; - t.floorleftbig = 0x230a; - t.floorleftbigg = 0x230a; - t.floorleftBigg = 0x230a; - t.floorrightbig = 0x230b; - t.floorrightBig = 0x230b; - t.floorrightBigg = 0x230b; - t.floorrightbigg = 0x230b; - t.hatwide = 0x0302; - t.hatwider = 0x0302; - t.hatwidest = 0x0302; - t.intercal = 0x1d40; - t.integraldisplay = 0x222b; - t.integraltext = 0x222b; - t.intersectiondisplay = 0x22c2; - t.intersectiontext = 0x22c2; - t.logicalanddisplay = 0x2227; - t.logicalandtext = 0x2227; - t.logicalordisplay = 0x2228; - t.logicalortext = 0x2228; - t.parenleftBig = 0x0028; - t.parenleftbig = 0x0028; - t.parenleftBigg = 0x0028; - t.parenleftbigg = 0x0028; - t.parenrightBig = 0x0029; - t.parenrightbig = 0x0029; - t.parenrightBigg = 0x0029; - t.parenrightbigg = 0x0029; - t.prime = 0x2032; - t.productdisplay = 0x220f; - t.producttext = 0x220f; - t.radicalbig = 0x221a; - t.radicalBig = 0x221a; - t.radicalBigg = 0x221a; - t.radicalbigg = 0x221a; - t.radicalbt = 0x221a; - t.radicaltp = 0x221a; - t.radicalvertex = 0x221a; - t.slashbig = 0x002f; - t.slashBig = 0x002f; - t.slashBigg = 0x002f; - t.slashbigg = 0x002f; - t.summationdisplay = 0x2211; - t.summationtext = 0x2211; - t.tildewide = 0x02dc; - t.tildewider = 0x02dc; - t.tildewidest = 0x02dc; - t.uniondisplay = 0x22c3; - t.unionmultidisplay = 0x228e; - t.unionmultitext = 0x228e; - t.unionsqdisplay = 0x2294; - t.unionsqtext = 0x2294; - t.uniontext = 0x22c3; - t.vextenddouble = 0x2225; - t.vextendsingle = 0x2223; +/* 33 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { + +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ "getDingbatsGlyphsUnicode": () => /* binding */ getDingbatsGlyphsUnicode, +/* harmony export */ "getGlyphsUnicode": () => /* binding */ getGlyphsUnicode +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8); + +var getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "A", + 0x0041, + "AE", + 0x00c6, + "AEacute", + 0x01fc, + "AEmacron", + 0x01e2, + "AEsmall", + 0xf7e6, + "Aacute", + 0x00c1, + "Aacutesmall", + 0xf7e1, + "Abreve", + 0x0102, + "Abreveacute", + 0x1eae, + "Abrevecyrillic", + 0x04d0, + "Abrevedotbelow", + 0x1eb6, + "Abrevegrave", + 0x1eb0, + "Abrevehookabove", + 0x1eb2, + "Abrevetilde", + 0x1eb4, + "Acaron", + 0x01cd, + "Acircle", + 0x24b6, + "Acircumflex", + 0x00c2, + "Acircumflexacute", + 0x1ea4, + "Acircumflexdotbelow", + 0x1eac, + "Acircumflexgrave", + 0x1ea6, + "Acircumflexhookabove", + 0x1ea8, + "Acircumflexsmall", + 0xf7e2, + "Acircumflextilde", + 0x1eaa, + "Acute", + 0xf6c9, + "Acutesmall", + 0xf7b4, + "Acyrillic", + 0x0410, + "Adblgrave", + 0x0200, + "Adieresis", + 0x00c4, + "Adieresiscyrillic", + 0x04d2, + "Adieresismacron", + 0x01de, + "Adieresissmall", + 0xf7e4, + "Adotbelow", + 0x1ea0, + "Adotmacron", + 0x01e0, + "Agrave", + 0x00c0, + "Agravesmall", + 0xf7e0, + "Ahookabove", + 0x1ea2, + "Aiecyrillic", + 0x04d4, + "Ainvertedbreve", + 0x0202, + "Alpha", + 0x0391, + "Alphatonos", + 0x0386, + "Amacron", + 0x0100, + "Amonospace", + 0xff21, + "Aogonek", + 0x0104, + "Aring", + 0x00c5, + "Aringacute", + 0x01fa, + "Aringbelow", + 0x1e00, + "Aringsmall", + 0xf7e5, + "Asmall", + 0xf761, + "Atilde", + 0x00c3, + "Atildesmall", + 0xf7e3, + "Aybarmenian", + 0x0531, + "B", + 0x0042, + "Bcircle", + 0x24b7, + "Bdotaccent", + 0x1e02, + "Bdotbelow", + 0x1e04, + "Becyrillic", + 0x0411, + "Benarmenian", + 0x0532, + "Beta", + 0x0392, + "Bhook", + 0x0181, + "Blinebelow", + 0x1e06, + "Bmonospace", + 0xff22, + "Brevesmall", + 0xf6f4, + "Bsmall", + 0xf762, + "Btopbar", + 0x0182, + "C", + 0x0043, + "Caarmenian", + 0x053e, + "Cacute", + 0x0106, + "Caron", + 0xf6ca, + "Caronsmall", + 0xf6f5, + "Ccaron", + 0x010c, + "Ccedilla", + 0x00c7, + "Ccedillaacute", + 0x1e08, + "Ccedillasmall", + 0xf7e7, + "Ccircle", + 0x24b8, + "Ccircumflex", + 0x0108, + "Cdot", + 0x010a, + "Cdotaccent", + 0x010a, + "Cedillasmall", + 0xf7b8, + "Chaarmenian", + 0x0549, + "Cheabkhasiancyrillic", + 0x04bc, + "Checyrillic", + 0x0427, + "Chedescenderabkhasiancyrillic", + 0x04be, + "Chedescendercyrillic", + 0x04b6, + "Chedieresiscyrillic", + 0x04f4, + "Cheharmenian", + 0x0543, + "Chekhakassiancyrillic", + 0x04cb, + "Cheverticalstrokecyrillic", + 0x04b8, + "Chi", + 0x03a7, + "Chook", + 0x0187, + "Circumflexsmall", + 0xf6f6, + "Cmonospace", + 0xff23, + "Coarmenian", + 0x0551, + "Csmall", + 0xf763, + "D", + 0x0044, + "DZ", + 0x01f1, + "DZcaron", + 0x01c4, + "Daarmenian", + 0x0534, + "Dafrican", + 0x0189, + "Dcaron", + 0x010e, + "Dcedilla", + 0x1e10, + "Dcircle", + 0x24b9, + "Dcircumflexbelow", + 0x1e12, + "Dcroat", + 0x0110, + "Ddotaccent", + 0x1e0a, + "Ddotbelow", + 0x1e0c, + "Decyrillic", + 0x0414, + "Deicoptic", + 0x03ee, + "Delta", + 0x2206, + "Deltagreek", + 0x0394, + "Dhook", + 0x018a, + "Dieresis", + 0xf6cb, + "DieresisAcute", + 0xf6cc, + "DieresisGrave", + 0xf6cd, + "Dieresissmall", + 0xf7a8, + "Digammagreek", + 0x03dc, + "Djecyrillic", + 0x0402, + "Dlinebelow", + 0x1e0e, + "Dmonospace", + 0xff24, + "Dotaccentsmall", + 0xf6f7, + "Dslash", + 0x0110, + "Dsmall", + 0xf764, + "Dtopbar", + 0x018b, + "Dz", + 0x01f2, + "Dzcaron", + 0x01c5, + "Dzeabkhasiancyrillic", + 0x04e0, + "Dzecyrillic", + 0x0405, + "Dzhecyrillic", + 0x040f, + "E", + 0x0045, + "Eacute", + 0x00c9, + "Eacutesmall", + 0xf7e9, + "Ebreve", + 0x0114, + "Ecaron", + 0x011a, + "Ecedillabreve", + 0x1e1c, + "Echarmenian", + 0x0535, + "Ecircle", + 0x24ba, + "Ecircumflex", + 0x00ca, + "Ecircumflexacute", + 0x1ebe, + "Ecircumflexbelow", + 0x1e18, + "Ecircumflexdotbelow", + 0x1ec6, + "Ecircumflexgrave", + 0x1ec0, + "Ecircumflexhookabove", + 0x1ec2, + "Ecircumflexsmall", + 0xf7ea, + "Ecircumflextilde", + 0x1ec4, + "Ecyrillic", + 0x0404, + "Edblgrave", + 0x0204, + "Edieresis", + 0x00cb, + "Edieresissmall", + 0xf7eb, + "Edot", + 0x0116, + "Edotaccent", + 0x0116, + "Edotbelow", + 0x1eb8, + "Efcyrillic", + 0x0424, + "Egrave", + 0x00c8, + "Egravesmall", + 0xf7e8, + "Eharmenian", + 0x0537, + "Ehookabove", + 0x1eba, + "Eightroman", + 0x2167, + "Einvertedbreve", + 0x0206, + "Eiotifiedcyrillic", + 0x0464, + "Elcyrillic", + 0x041b, + "Elevenroman", + 0x216a, + "Emacron", + 0x0112, + "Emacronacute", + 0x1e16, + "Emacrongrave", + 0x1e14, + "Emcyrillic", + 0x041c, + "Emonospace", + 0xff25, + "Encyrillic", + 0x041d, + "Endescendercyrillic", + 0x04a2, + "Eng", + 0x014a, + "Enghecyrillic", + 0x04a4, + "Enhookcyrillic", + 0x04c7, + "Eogonek", + 0x0118, + "Eopen", + 0x0190, + "Epsilon", + 0x0395, + "Epsilontonos", + 0x0388, + "Ercyrillic", + 0x0420, + "Ereversed", + 0x018e, + "Ereversedcyrillic", + 0x042d, + "Escyrillic", + 0x0421, + "Esdescendercyrillic", + 0x04aa, + "Esh", + 0x01a9, + "Esmall", + 0xf765, + "Eta", + 0x0397, + "Etarmenian", + 0x0538, + "Etatonos", + 0x0389, + "Eth", + 0x00d0, + "Ethsmall", + 0xf7f0, + "Etilde", + 0x1ebc, + "Etildebelow", + 0x1e1a, + "Euro", + 0x20ac, + "Ezh", + 0x01b7, + "Ezhcaron", + 0x01ee, + "Ezhreversed", + 0x01b8, + "F", + 0x0046, + "Fcircle", + 0x24bb, + "Fdotaccent", + 0x1e1e, + "Feharmenian", + 0x0556, + "Feicoptic", + 0x03e4, + "Fhook", + 0x0191, + "Fitacyrillic", + 0x0472, + "Fiveroman", + 0x2164, + "Fmonospace", + 0xff26, + "Fourroman", + 0x2163, + "Fsmall", + 0xf766, + "G", + 0x0047, + "GBsquare", + 0x3387, + "Gacute", + 0x01f4, + "Gamma", + 0x0393, + "Gammaafrican", + 0x0194, + "Gangiacoptic", + 0x03ea, + "Gbreve", + 0x011e, + "Gcaron", + 0x01e6, + "Gcedilla", + 0x0122, + "Gcircle", + 0x24bc, + "Gcircumflex", + 0x011c, + "Gcommaaccent", + 0x0122, + "Gdot", + 0x0120, + "Gdotaccent", + 0x0120, + "Gecyrillic", + 0x0413, + "Ghadarmenian", + 0x0542, + "Ghemiddlehookcyrillic", + 0x0494, + "Ghestrokecyrillic", + 0x0492, + "Gheupturncyrillic", + 0x0490, + "Ghook", + 0x0193, + "Gimarmenian", + 0x0533, + "Gjecyrillic", + 0x0403, + "Gmacron", + 0x1e20, + "Gmonospace", + 0xff27, + "Grave", + 0xf6ce, + "Gravesmall", + 0xf760, + "Gsmall", + 0xf767, + "Gsmallhook", + 0x029b, + "Gstroke", + 0x01e4, + "H", + 0x0048, + "H18533", + 0x25cf, + "H18543", + 0x25aa, + "H18551", + 0x25ab, + "H22073", + 0x25a1, + "HPsquare", + 0x33cb, + "Haabkhasiancyrillic", + 0x04a8, + "Hadescendercyrillic", + 0x04b2, + "Hardsigncyrillic", + 0x042a, + "Hbar", + 0x0126, + "Hbrevebelow", + 0x1e2a, + "Hcedilla", + 0x1e28, + "Hcircle", + 0x24bd, + "Hcircumflex", + 0x0124, + "Hdieresis", + 0x1e26, + "Hdotaccent", + 0x1e22, + "Hdotbelow", + 0x1e24, + "Hmonospace", + 0xff28, + "Hoarmenian", + 0x0540, + "Horicoptic", + 0x03e8, + "Hsmall", + 0xf768, + "Hungarumlaut", + 0xf6cf, + "Hungarumlautsmall", + 0xf6f8, + "Hzsquare", + 0x3390, + "I", + 0x0049, + "IAcyrillic", + 0x042f, + "IJ", + 0x0132, + "IUcyrillic", + 0x042e, + "Iacute", + 0x00cd, + "Iacutesmall", + 0xf7ed, + "Ibreve", + 0x012c, + "Icaron", + 0x01cf, + "Icircle", + 0x24be, + "Icircumflex", + 0x00ce, + "Icircumflexsmall", + 0xf7ee, + "Icyrillic", + 0x0406, + "Idblgrave", + 0x0208, + "Idieresis", + 0x00cf, + "Idieresisacute", + 0x1e2e, + "Idieresiscyrillic", + 0x04e4, + "Idieresissmall", + 0xf7ef, + "Idot", + 0x0130, + "Idotaccent", + 0x0130, + "Idotbelow", + 0x1eca, + "Iebrevecyrillic", + 0x04d6, + "Iecyrillic", + 0x0415, + "Ifraktur", + 0x2111, + "Igrave", + 0x00cc, + "Igravesmall", + 0xf7ec, + "Ihookabove", + 0x1ec8, + "Iicyrillic", + 0x0418, + "Iinvertedbreve", + 0x020a, + "Iishortcyrillic", + 0x0419, + "Imacron", + 0x012a, + "Imacroncyrillic", + 0x04e2, + "Imonospace", + 0xff29, + "Iniarmenian", + 0x053b, + "Iocyrillic", + 0x0401, + "Iogonek", + 0x012e, + "Iota", + 0x0399, + "Iotaafrican", + 0x0196, + "Iotadieresis", + 0x03aa, + "Iotatonos", + 0x038a, + "Ismall", + 0xf769, + "Istroke", + 0x0197, + "Itilde", + 0x0128, + "Itildebelow", + 0x1e2c, + "Izhitsacyrillic", + 0x0474, + "Izhitsadblgravecyrillic", + 0x0476, + "J", + 0x004a, + "Jaarmenian", + 0x0541, + "Jcircle", + 0x24bf, + "Jcircumflex", + 0x0134, + "Jecyrillic", + 0x0408, + "Jheharmenian", + 0x054b, + "Jmonospace", + 0xff2a, + "Jsmall", + 0xf76a, + "K", + 0x004b, + "KBsquare", + 0x3385, + "KKsquare", + 0x33cd, + "Kabashkircyrillic", + 0x04a0, + "Kacute", + 0x1e30, + "Kacyrillic", + 0x041a, + "Kadescendercyrillic", + 0x049a, + "Kahookcyrillic", + 0x04c3, + "Kappa", + 0x039a, + "Kastrokecyrillic", + 0x049e, + "Kaverticalstrokecyrillic", + 0x049c, + "Kcaron", + 0x01e8, + "Kcedilla", + 0x0136, + "Kcircle", + 0x24c0, + "Kcommaaccent", + 0x0136, + "Kdotbelow", + 0x1e32, + "Keharmenian", + 0x0554, + "Kenarmenian", + 0x053f, + "Khacyrillic", + 0x0425, + "Kheicoptic", + 0x03e6, + "Khook", + 0x0198, + "Kjecyrillic", + 0x040c, + "Klinebelow", + 0x1e34, + "Kmonospace", + 0xff2b, + "Koppacyrillic", + 0x0480, + "Koppagreek", + 0x03de, + "Ksicyrillic", + 0x046e, + "Ksmall", + 0xf76b, + "L", + 0x004c, + "LJ", + 0x01c7, + "LL", + 0xf6bf, + "Lacute", + 0x0139, + "Lambda", + 0x039b, + "Lcaron", + 0x013d, + "Lcedilla", + 0x013b, + "Lcircle", + 0x24c1, + "Lcircumflexbelow", + 0x1e3c, + "Lcommaaccent", + 0x013b, + "Ldot", + 0x013f, + "Ldotaccent", + 0x013f, + "Ldotbelow", + 0x1e36, + "Ldotbelowmacron", + 0x1e38, + "Liwnarmenian", + 0x053c, + "Lj", + 0x01c8, + "Ljecyrillic", + 0x0409, + "Llinebelow", + 0x1e3a, + "Lmonospace", + 0xff2c, + "Lslash", + 0x0141, + "Lslashsmall", + 0xf6f9, + "Lsmall", + 0xf76c, + "M", + 0x004d, + "MBsquare", + 0x3386, + "Macron", + 0xf6d0, + "Macronsmall", + 0xf7af, + "Macute", + 0x1e3e, + "Mcircle", + 0x24c2, + "Mdotaccent", + 0x1e40, + "Mdotbelow", + 0x1e42, + "Menarmenian", + 0x0544, + "Mmonospace", + 0xff2d, + "Msmall", + 0xf76d, + "Mturned", + 0x019c, + "Mu", + 0x039c, + "N", + 0x004e, + "NJ", + 0x01ca, + "Nacute", + 0x0143, + "Ncaron", + 0x0147, + "Ncedilla", + 0x0145, + "Ncircle", + 0x24c3, + "Ncircumflexbelow", + 0x1e4a, + "Ncommaaccent", + 0x0145, + "Ndotaccent", + 0x1e44, + "Ndotbelow", + 0x1e46, + "Nhookleft", + 0x019d, + "Nineroman", + 0x2168, + "Nj", + 0x01cb, + "Njecyrillic", + 0x040a, + "Nlinebelow", + 0x1e48, + "Nmonospace", + 0xff2e, + "Nowarmenian", + 0x0546, + "Nsmall", + 0xf76e, + "Ntilde", + 0x00d1, + "Ntildesmall", + 0xf7f1, + "Nu", + 0x039d, + "O", + 0x004f, + "OE", + 0x0152, + "OEsmall", + 0xf6fa, + "Oacute", + 0x00d3, + "Oacutesmall", + 0xf7f3, + "Obarredcyrillic", + 0x04e8, + "Obarreddieresiscyrillic", + 0x04ea, + "Obreve", + 0x014e, + "Ocaron", + 0x01d1, + "Ocenteredtilde", + 0x019f, + "Ocircle", + 0x24c4, + "Ocircumflex", + 0x00d4, + "Ocircumflexacute", + 0x1ed0, + "Ocircumflexdotbelow", + 0x1ed8, + "Ocircumflexgrave", + 0x1ed2, + "Ocircumflexhookabove", + 0x1ed4, + "Ocircumflexsmall", + 0xf7f4, + "Ocircumflextilde", + 0x1ed6, + "Ocyrillic", + 0x041e, + "Odblacute", + 0x0150, + "Odblgrave", + 0x020c, + "Odieresis", + 0x00d6, + "Odieresiscyrillic", + 0x04e6, + "Odieresissmall", + 0xf7f6, + "Odotbelow", + 0x1ecc, + "Ogoneksmall", + 0xf6fb, + "Ograve", + 0x00d2, + "Ogravesmall", + 0xf7f2, + "Oharmenian", + 0x0555, + "Ohm", + 0x2126, + "Ohookabove", + 0x1ece, + "Ohorn", + 0x01a0, + "Ohornacute", + 0x1eda, + "Ohorndotbelow", + 0x1ee2, + "Ohorngrave", + 0x1edc, + "Ohornhookabove", + 0x1ede, + "Ohorntilde", + 0x1ee0, + "Ohungarumlaut", + 0x0150, + "Oi", + 0x01a2, + "Oinvertedbreve", + 0x020e, + "Omacron", + 0x014c, + "Omacronacute", + 0x1e52, + "Omacrongrave", + 0x1e50, + "Omega", + 0x2126, + "Omegacyrillic", + 0x0460, + "Omegagreek", + 0x03a9, + "Omegaroundcyrillic", + 0x047a, + "Omegatitlocyrillic", + 0x047c, + "Omegatonos", + 0x038f, + "Omicron", + 0x039f, + "Omicrontonos", + 0x038c, + "Omonospace", + 0xff2f, + "Oneroman", + 0x2160, + "Oogonek", + 0x01ea, + "Oogonekmacron", + 0x01ec, + "Oopen", + 0x0186, + "Oslash", + 0x00d8, + "Oslashacute", + 0x01fe, + "Oslashsmall", + 0xf7f8, + "Osmall", + 0xf76f, + "Ostrokeacute", + 0x01fe, + "Otcyrillic", + 0x047e, + "Otilde", + 0x00d5, + "Otildeacute", + 0x1e4c, + "Otildedieresis", + 0x1e4e, + "Otildesmall", + 0xf7f5, + "P", + 0x0050, + "Pacute", + 0x1e54, + "Pcircle", + 0x24c5, + "Pdotaccent", + 0x1e56, + "Pecyrillic", + 0x041f, + "Peharmenian", + 0x054a, + "Pemiddlehookcyrillic", + 0x04a6, + "Phi", + 0x03a6, + "Phook", + 0x01a4, + "Pi", + 0x03a0, + "Piwrarmenian", + 0x0553, + "Pmonospace", + 0xff30, + "Psi", + 0x03a8, + "Psicyrillic", + 0x0470, + "Psmall", + 0xf770, + "Q", + 0x0051, + "Qcircle", + 0x24c6, + "Qmonospace", + 0xff31, + "Qsmall", + 0xf771, + "R", + 0x0052, + "Raarmenian", + 0x054c, + "Racute", + 0x0154, + "Rcaron", + 0x0158, + "Rcedilla", + 0x0156, + "Rcircle", + 0x24c7, + "Rcommaaccent", + 0x0156, + "Rdblgrave", + 0x0210, + "Rdotaccent", + 0x1e58, + "Rdotbelow", + 0x1e5a, + "Rdotbelowmacron", + 0x1e5c, + "Reharmenian", + 0x0550, + "Rfraktur", + 0x211c, + "Rho", + 0x03a1, + "Ringsmall", + 0xf6fc, + "Rinvertedbreve", + 0x0212, + "Rlinebelow", + 0x1e5e, + "Rmonospace", + 0xff32, + "Rsmall", + 0xf772, + "Rsmallinverted", + 0x0281, + "Rsmallinvertedsuperior", + 0x02b6, + "S", + 0x0053, + "SF010000", + 0x250c, + "SF020000", + 0x2514, + "SF030000", + 0x2510, + "SF040000", + 0x2518, + "SF050000", + 0x253c, + "SF060000", + 0x252c, + "SF070000", + 0x2534, + "SF080000", + 0x251c, + "SF090000", + 0x2524, + "SF100000", + 0x2500, + "SF110000", + 0x2502, + "SF190000", + 0x2561, + "SF200000", + 0x2562, + "SF210000", + 0x2556, + "SF220000", + 0x2555, + "SF230000", + 0x2563, + "SF240000", + 0x2551, + "SF250000", + 0x2557, + "SF260000", + 0x255d, + "SF270000", + 0x255c, + "SF280000", + 0x255b, + "SF360000", + 0x255e, + "SF370000", + 0x255f, + "SF380000", + 0x255a, + "SF390000", + 0x2554, + "SF400000", + 0x2569, + "SF410000", + 0x2566, + "SF420000", + 0x2560, + "SF430000", + 0x2550, + "SF440000", + 0x256c, + "SF450000", + 0x2567, + "SF460000", + 0x2568, + "SF470000", + 0x2564, + "SF480000", + 0x2565, + "SF490000", + 0x2559, + "SF500000", + 0x2558, + "SF510000", + 0x2552, + "SF520000", + 0x2553, + "SF530000", + 0x256b, + "SF540000", + 0x256a, + "Sacute", + 0x015a, + "Sacutedotaccent", + 0x1e64, + "Sampigreek", + 0x03e0, + "Scaron", + 0x0160, + "Scarondotaccent", + 0x1e66, + "Scaronsmall", + 0xf6fd, + "Scedilla", + 0x015e, + "Schwa", + 0x018f, + "Schwacyrillic", + 0x04d8, + "Schwadieresiscyrillic", + 0x04da, + "Scircle", + 0x24c8, + "Scircumflex", + 0x015c, + "Scommaaccent", + 0x0218, + "Sdotaccent", + 0x1e60, + "Sdotbelow", + 0x1e62, + "Sdotbelowdotaccent", + 0x1e68, + "Seharmenian", + 0x054d, + "Sevenroman", + 0x2166, + "Shaarmenian", + 0x0547, + "Shacyrillic", + 0x0428, + "Shchacyrillic", + 0x0429, + "Sheicoptic", + 0x03e2, + "Shhacyrillic", + 0x04ba, + "Shimacoptic", + 0x03ec, + "Sigma", + 0x03a3, + "Sixroman", + 0x2165, + "Smonospace", + 0xff33, + "Softsigncyrillic", + 0x042c, + "Ssmall", + 0xf773, + "Stigmagreek", + 0x03da, + "T", + 0x0054, + "Tau", + 0x03a4, + "Tbar", + 0x0166, + "Tcaron", + 0x0164, + "Tcedilla", + 0x0162, + "Tcircle", + 0x24c9, + "Tcircumflexbelow", + 0x1e70, + "Tcommaaccent", + 0x0162, + "Tdotaccent", + 0x1e6a, + "Tdotbelow", + 0x1e6c, + "Tecyrillic", + 0x0422, + "Tedescendercyrillic", + 0x04ac, + "Tenroman", + 0x2169, + "Tetsecyrillic", + 0x04b4, + "Theta", + 0x0398, + "Thook", + 0x01ac, + "Thorn", + 0x00de, + "Thornsmall", + 0xf7fe, + "Threeroman", + 0x2162, + "Tildesmall", + 0xf6fe, + "Tiwnarmenian", + 0x054f, + "Tlinebelow", + 0x1e6e, + "Tmonospace", + 0xff34, + "Toarmenian", + 0x0539, + "Tonefive", + 0x01bc, + "Tonesix", + 0x0184, + "Tonetwo", + 0x01a7, + "Tretroflexhook", + 0x01ae, + "Tsecyrillic", + 0x0426, + "Tshecyrillic", + 0x040b, + "Tsmall", + 0xf774, + "Twelveroman", + 0x216b, + "Tworoman", + 0x2161, + "U", + 0x0055, + "Uacute", + 0x00da, + "Uacutesmall", + 0xf7fa, + "Ubreve", + 0x016c, + "Ucaron", + 0x01d3, + "Ucircle", + 0x24ca, + "Ucircumflex", + 0x00db, + "Ucircumflexbelow", + 0x1e76, + "Ucircumflexsmall", + 0xf7fb, + "Ucyrillic", + 0x0423, + "Udblacute", + 0x0170, + "Udblgrave", + 0x0214, + "Udieresis", + 0x00dc, + "Udieresisacute", + 0x01d7, + "Udieresisbelow", + 0x1e72, + "Udieresiscaron", + 0x01d9, + "Udieresiscyrillic", + 0x04f0, + "Udieresisgrave", + 0x01db, + "Udieresismacron", + 0x01d5, + "Udieresissmall", + 0xf7fc, + "Udotbelow", + 0x1ee4, + "Ugrave", + 0x00d9, + "Ugravesmall", + 0xf7f9, + "Uhookabove", + 0x1ee6, + "Uhorn", + 0x01af, + "Uhornacute", + 0x1ee8, + "Uhorndotbelow", + 0x1ef0, + "Uhorngrave", + 0x1eea, + "Uhornhookabove", + 0x1eec, + "Uhorntilde", + 0x1eee, + "Uhungarumlaut", + 0x0170, + "Uhungarumlautcyrillic", + 0x04f2, + "Uinvertedbreve", + 0x0216, + "Ukcyrillic", + 0x0478, + "Umacron", + 0x016a, + "Umacroncyrillic", + 0x04ee, + "Umacrondieresis", + 0x1e7a, + "Umonospace", + 0xff35, + "Uogonek", + 0x0172, + "Upsilon", + 0x03a5, + "Upsilon1", + 0x03d2, + "Upsilonacutehooksymbolgreek", + 0x03d3, + "Upsilonafrican", + 0x01b1, + "Upsilondieresis", + 0x03ab, + "Upsilondieresishooksymbolgreek", + 0x03d4, + "Upsilonhooksymbol", + 0x03d2, + "Upsilontonos", + 0x038e, + "Uring", + 0x016e, + "Ushortcyrillic", + 0x040e, + "Usmall", + 0xf775, + "Ustraightcyrillic", + 0x04ae, + "Ustraightstrokecyrillic", + 0x04b0, + "Utilde", + 0x0168, + "Utildeacute", + 0x1e78, + "Utildebelow", + 0x1e74, + "V", + 0x0056, + "Vcircle", + 0x24cb, + "Vdotbelow", + 0x1e7e, + "Vecyrillic", + 0x0412, + "Vewarmenian", + 0x054e, + "Vhook", + 0x01b2, + "Vmonospace", + 0xff36, + "Voarmenian", + 0x0548, + "Vsmall", + 0xf776, + "Vtilde", + 0x1e7c, + "W", + 0x0057, + "Wacute", + 0x1e82, + "Wcircle", + 0x24cc, + "Wcircumflex", + 0x0174, + "Wdieresis", + 0x1e84, + "Wdotaccent", + 0x1e86, + "Wdotbelow", + 0x1e88, + "Wgrave", + 0x1e80, + "Wmonospace", + 0xff37, + "Wsmall", + 0xf777, + "X", + 0x0058, + "Xcircle", + 0x24cd, + "Xdieresis", + 0x1e8c, + "Xdotaccent", + 0x1e8a, + "Xeharmenian", + 0x053d, + "Xi", + 0x039e, + "Xmonospace", + 0xff38, + "Xsmall", + 0xf778, + "Y", + 0x0059, + "Yacute", + 0x00dd, + "Yacutesmall", + 0xf7fd, + "Yatcyrillic", + 0x0462, + "Ycircle", + 0x24ce, + "Ycircumflex", + 0x0176, + "Ydieresis", + 0x0178, + "Ydieresissmall", + 0xf7ff, + "Ydotaccent", + 0x1e8e, + "Ydotbelow", + 0x1ef4, + "Yericyrillic", + 0x042b, + "Yerudieresiscyrillic", + 0x04f8, + "Ygrave", + 0x1ef2, + "Yhook", + 0x01b3, + "Yhookabove", + 0x1ef6, + "Yiarmenian", + 0x0545, + "Yicyrillic", + 0x0407, + "Yiwnarmenian", + 0x0552, + "Ymonospace", + 0xff39, + "Ysmall", + 0xf779, + "Ytilde", + 0x1ef8, + "Yusbigcyrillic", + 0x046a, + "Yusbigiotifiedcyrillic", + 0x046c, + "Yuslittlecyrillic", + 0x0466, + "Yuslittleiotifiedcyrillic", + 0x0468, + "Z", + 0x005a, + "Zaarmenian", + 0x0536, + "Zacute", + 0x0179, + "Zcaron", + 0x017d, + "Zcaronsmall", + 0xf6ff, + "Zcircle", + 0x24cf, + "Zcircumflex", + 0x1e90, + "Zdot", + 0x017b, + "Zdotaccent", + 0x017b, + "Zdotbelow", + 0x1e92, + "Zecyrillic", + 0x0417, + "Zedescendercyrillic", + 0x0498, + "Zedieresiscyrillic", + 0x04de, + "Zeta", + 0x0396, + "Zhearmenian", + 0x053a, + "Zhebrevecyrillic", + 0x04c1, + "Zhecyrillic", + 0x0416, + "Zhedescendercyrillic", + 0x0496, + "Zhedieresiscyrillic", + 0x04dc, + "Zlinebelow", + 0x1e94, + "Zmonospace", + 0xff3a, + "Zsmall", + 0xf77a, + "Zstroke", + 0x01b5, + "a", + 0x0061, + "aabengali", + 0x0986, + "aacute", + 0x00e1, + "aadeva", + 0x0906, + "aagujarati", + 0x0a86, + "aagurmukhi", + 0x0a06, + "aamatragurmukhi", + 0x0a3e, + "aarusquare", + 0x3303, + "aavowelsignbengali", + 0x09be, + "aavowelsigndeva", + 0x093e, + "aavowelsigngujarati", + 0x0abe, + "abbreviationmarkarmenian", + 0x055f, + "abbreviationsigndeva", + 0x0970, + "abengali", + 0x0985, + "abopomofo", + 0x311a, + "abreve", + 0x0103, + "abreveacute", + 0x1eaf, + "abrevecyrillic", + 0x04d1, + "abrevedotbelow", + 0x1eb7, + "abrevegrave", + 0x1eb1, + "abrevehookabove", + 0x1eb3, + "abrevetilde", + 0x1eb5, + "acaron", + 0x01ce, + "acircle", + 0x24d0, + "acircumflex", + 0x00e2, + "acircumflexacute", + 0x1ea5, + "acircumflexdotbelow", + 0x1ead, + "acircumflexgrave", + 0x1ea7, + "acircumflexhookabove", + 0x1ea9, + "acircumflextilde", + 0x1eab, + "acute", + 0x00b4, + "acutebelowcmb", + 0x0317, + "acutecmb", + 0x0301, + "acutecomb", + 0x0301, + "acutedeva", + 0x0954, + "acutelowmod", + 0x02cf, + "acutetonecmb", + 0x0341, + "acyrillic", + 0x0430, + "adblgrave", + 0x0201, + "addakgurmukhi", + 0x0a71, + "adeva", + 0x0905, + "adieresis", + 0x00e4, + "adieresiscyrillic", + 0x04d3, + "adieresismacron", + 0x01df, + "adotbelow", + 0x1ea1, + "adotmacron", + 0x01e1, + "ae", + 0x00e6, + "aeacute", + 0x01fd, + "aekorean", + 0x3150, + "aemacron", + 0x01e3, + "afii00208", + 0x2015, + "afii08941", + 0x20a4, + "afii10017", + 0x0410, + "afii10018", + 0x0411, + "afii10019", + 0x0412, + "afii10020", + 0x0413, + "afii10021", + 0x0414, + "afii10022", + 0x0415, + "afii10023", + 0x0401, + "afii10024", + 0x0416, + "afii10025", + 0x0417, + "afii10026", + 0x0418, + "afii10027", + 0x0419, + "afii10028", + 0x041a, + "afii10029", + 0x041b, + "afii10030", + 0x041c, + "afii10031", + 0x041d, + "afii10032", + 0x041e, + "afii10033", + 0x041f, + "afii10034", + 0x0420, + "afii10035", + 0x0421, + "afii10036", + 0x0422, + "afii10037", + 0x0423, + "afii10038", + 0x0424, + "afii10039", + 0x0425, + "afii10040", + 0x0426, + "afii10041", + 0x0427, + "afii10042", + 0x0428, + "afii10043", + 0x0429, + "afii10044", + 0x042a, + "afii10045", + 0x042b, + "afii10046", + 0x042c, + "afii10047", + 0x042d, + "afii10048", + 0x042e, + "afii10049", + 0x042f, + "afii10050", + 0x0490, + "afii10051", + 0x0402, + "afii10052", + 0x0403, + "afii10053", + 0x0404, + "afii10054", + 0x0405, + "afii10055", + 0x0406, + "afii10056", + 0x0407, + "afii10057", + 0x0408, + "afii10058", + 0x0409, + "afii10059", + 0x040a, + "afii10060", + 0x040b, + "afii10061", + 0x040c, + "afii10062", + 0x040e, + "afii10063", + 0xf6c4, + "afii10064", + 0xf6c5, + "afii10065", + 0x0430, + "afii10066", + 0x0431, + "afii10067", + 0x0432, + "afii10068", + 0x0433, + "afii10069", + 0x0434, + "afii10070", + 0x0435, + "afii10071", + 0x0451, + "afii10072", + 0x0436, + "afii10073", + 0x0437, + "afii10074", + 0x0438, + "afii10075", + 0x0439, + "afii10076", + 0x043a, + "afii10077", + 0x043b, + "afii10078", + 0x043c, + "afii10079", + 0x043d, + "afii10080", + 0x043e, + "afii10081", + 0x043f, + "afii10082", + 0x0440, + "afii10083", + 0x0441, + "afii10084", + 0x0442, + "afii10085", + 0x0443, + "afii10086", + 0x0444, + "afii10087", + 0x0445, + "afii10088", + 0x0446, + "afii10089", + 0x0447, + "afii10090", + 0x0448, + "afii10091", + 0x0449, + "afii10092", + 0x044a, + "afii10093", + 0x044b, + "afii10094", + 0x044c, + "afii10095", + 0x044d, + "afii10096", + 0x044e, + "afii10097", + 0x044f, + "afii10098", + 0x0491, + "afii10099", + 0x0452, + "afii10100", + 0x0453, + "afii10101", + 0x0454, + "afii10102", + 0x0455, + "afii10103", + 0x0456, + "afii10104", + 0x0457, + "afii10105", + 0x0458, + "afii10106", + 0x0459, + "afii10107", + 0x045a, + "afii10108", + 0x045b, + "afii10109", + 0x045c, + "afii10110", + 0x045e, + "afii10145", + 0x040f, + "afii10146", + 0x0462, + "afii10147", + 0x0472, + "afii10148", + 0x0474, + "afii10192", + 0xf6c6, + "afii10193", + 0x045f, + "afii10194", + 0x0463, + "afii10195", + 0x0473, + "afii10196", + 0x0475, + "afii10831", + 0xf6c7, + "afii10832", + 0xf6c8, + "afii10846", + 0x04d9, + "afii299", + 0x200e, + "afii300", + 0x200f, + "afii301", + 0x200d, + "afii57381", + 0x066a, + "afii57388", + 0x060c, + "afii57392", + 0x0660, + "afii57393", + 0x0661, + "afii57394", + 0x0662, + "afii57395", + 0x0663, + "afii57396", + 0x0664, + "afii57397", + 0x0665, + "afii57398", + 0x0666, + "afii57399", + 0x0667, + "afii57400", + 0x0668, + "afii57401", + 0x0669, + "afii57403", + 0x061b, + "afii57407", + 0x061f, + "afii57409", + 0x0621, + "afii57410", + 0x0622, + "afii57411", + 0x0623, + "afii57412", + 0x0624, + "afii57413", + 0x0625, + "afii57414", + 0x0626, + "afii57415", + 0x0627, + "afii57416", + 0x0628, + "afii57417", + 0x0629, + "afii57418", + 0x062a, + "afii57419", + 0x062b, + "afii57420", + 0x062c, + "afii57421", + 0x062d, + "afii57422", + 0x062e, + "afii57423", + 0x062f, + "afii57424", + 0x0630, + "afii57425", + 0x0631, + "afii57426", + 0x0632, + "afii57427", + 0x0633, + "afii57428", + 0x0634, + "afii57429", + 0x0635, + "afii57430", + 0x0636, + "afii57431", + 0x0637, + "afii57432", + 0x0638, + "afii57433", + 0x0639, + "afii57434", + 0x063a, + "afii57440", + 0x0640, + "afii57441", + 0x0641, + "afii57442", + 0x0642, + "afii57443", + 0x0643, + "afii57444", + 0x0644, + "afii57445", + 0x0645, + "afii57446", + 0x0646, + "afii57448", + 0x0648, + "afii57449", + 0x0649, + "afii57450", + 0x064a, + "afii57451", + 0x064b, + "afii57452", + 0x064c, + "afii57453", + 0x064d, + "afii57454", + 0x064e, + "afii57455", + 0x064f, + "afii57456", + 0x0650, + "afii57457", + 0x0651, + "afii57458", + 0x0652, + "afii57470", + 0x0647, + "afii57505", + 0x06a4, + "afii57506", + 0x067e, + "afii57507", + 0x0686, + "afii57508", + 0x0698, + "afii57509", + 0x06af, + "afii57511", + 0x0679, + "afii57512", + 0x0688, + "afii57513", + 0x0691, + "afii57514", + 0x06ba, + "afii57519", + 0x06d2, + "afii57534", + 0x06d5, + "afii57636", + 0x20aa, + "afii57645", + 0x05be, + "afii57658", + 0x05c3, + "afii57664", + 0x05d0, + "afii57665", + 0x05d1, + "afii57666", + 0x05d2, + "afii57667", + 0x05d3, + "afii57668", + 0x05d4, + "afii57669", + 0x05d5, + "afii57670", + 0x05d6, + "afii57671", + 0x05d7, + "afii57672", + 0x05d8, + "afii57673", + 0x05d9, + "afii57674", + 0x05da, + "afii57675", + 0x05db, + "afii57676", + 0x05dc, + "afii57677", + 0x05dd, + "afii57678", + 0x05de, + "afii57679", + 0x05df, + "afii57680", + 0x05e0, + "afii57681", + 0x05e1, + "afii57682", + 0x05e2, + "afii57683", + 0x05e3, + "afii57684", + 0x05e4, + "afii57685", + 0x05e5, + "afii57686", + 0x05e6, + "afii57687", + 0x05e7, + "afii57688", + 0x05e8, + "afii57689", + 0x05e9, + "afii57690", + 0x05ea, + "afii57694", + 0xfb2a, + "afii57695", + 0xfb2b, + "afii57700", + 0xfb4b, + "afii57705", + 0xfb1f, + "afii57716", + 0x05f0, + "afii57717", + 0x05f1, + "afii57718", + 0x05f2, + "afii57723", + 0xfb35, + "afii57793", + 0x05b4, + "afii57794", + 0x05b5, + "afii57795", + 0x05b6, + "afii57796", + 0x05bb, + "afii57797", + 0x05b8, + "afii57798", + 0x05b7, + "afii57799", + 0x05b0, + "afii57800", + 0x05b2, + "afii57801", + 0x05b1, + "afii57802", + 0x05b3, + "afii57803", + 0x05c2, + "afii57804", + 0x05c1, + "afii57806", + 0x05b9, + "afii57807", + 0x05bc, + "afii57839", + 0x05bd, + "afii57841", + 0x05bf, + "afii57842", + 0x05c0, + "afii57929", + 0x02bc, + "afii61248", + 0x2105, + "afii61289", + 0x2113, + "afii61352", + 0x2116, + "afii61573", + 0x202c, + "afii61574", + 0x202d, + "afii61575", + 0x202e, + "afii61664", + 0x200c, + "afii63167", + 0x066d, + "afii64937", + 0x02bd, + "agrave", + 0x00e0, + "agujarati", + 0x0a85, + "agurmukhi", + 0x0a05, + "ahiragana", + 0x3042, + "ahookabove", + 0x1ea3, + "aibengali", + 0x0990, + "aibopomofo", + 0x311e, + "aideva", + 0x0910, + "aiecyrillic", + 0x04d5, + "aigujarati", + 0x0a90, + "aigurmukhi", + 0x0a10, + "aimatragurmukhi", + 0x0a48, + "ainarabic", + 0x0639, + "ainfinalarabic", + 0xfeca, + "aininitialarabic", + 0xfecb, + "ainmedialarabic", + 0xfecc, + "ainvertedbreve", + 0x0203, + "aivowelsignbengali", + 0x09c8, + "aivowelsigndeva", + 0x0948, + "aivowelsigngujarati", + 0x0ac8, + "akatakana", + 0x30a2, + "akatakanahalfwidth", + 0xff71, + "akorean", + 0x314f, + "alef", + 0x05d0, + "alefarabic", + 0x0627, + "alefdageshhebrew", + 0xfb30, + "aleffinalarabic", + 0xfe8e, + "alefhamzaabovearabic", + 0x0623, + "alefhamzaabovefinalarabic", + 0xfe84, + "alefhamzabelowarabic", + 0x0625, + "alefhamzabelowfinalarabic", + 0xfe88, + "alefhebrew", + 0x05d0, + "aleflamedhebrew", + 0xfb4f, + "alefmaddaabovearabic", + 0x0622, + "alefmaddaabovefinalarabic", + 0xfe82, + "alefmaksuraarabic", + 0x0649, + "alefmaksurafinalarabic", + 0xfef0, + "alefmaksurainitialarabic", + 0xfef3, + "alefmaksuramedialarabic", + 0xfef4, + "alefpatahhebrew", + 0xfb2e, + "alefqamatshebrew", + 0xfb2f, + "aleph", + 0x2135, + "allequal", + 0x224c, + "alpha", + 0x03b1, + "alphatonos", + 0x03ac, + "amacron", + 0x0101, + "amonospace", + 0xff41, + "ampersand", + 0x0026, + "ampersandmonospace", + 0xff06, + "ampersandsmall", + 0xf726, + "amsquare", + 0x33c2, + "anbopomofo", + 0x3122, + "angbopomofo", + 0x3124, + "angbracketleft", + 0x3008, + "angbracketright", + 0x3009, + "angkhankhuthai", + 0x0e5a, + "angle", + 0x2220, + "anglebracketleft", + 0x3008, + "anglebracketleftvertical", + 0xfe3f, + "anglebracketright", + 0x3009, + "anglebracketrightvertical", + 0xfe40, + "angleleft", + 0x2329, + "angleright", + 0x232a, + "angstrom", + 0x212b, + "anoteleia", + 0x0387, + "anudattadeva", + 0x0952, + "anusvarabengali", + 0x0982, + "anusvaradeva", + 0x0902, + "anusvaragujarati", + 0x0a82, + "aogonek", + 0x0105, + "apaatosquare", + 0x3300, + "aparen", + 0x249c, + "apostrophearmenian", + 0x055a, + "apostrophemod", + 0x02bc, + "apple", + 0xf8ff, + "approaches", + 0x2250, + "approxequal", + 0x2248, + "approxequalorimage", + 0x2252, + "approximatelyequal", + 0x2245, + "araeaekorean", + 0x318e, + "araeakorean", + 0x318d, + "arc", + 0x2312, + "arighthalfring", + 0x1e9a, + "aring", + 0x00e5, + "aringacute", + 0x01fb, + "aringbelow", + 0x1e01, + "arrowboth", + 0x2194, + "arrowdashdown", + 0x21e3, + "arrowdashleft", + 0x21e0, + "arrowdashright", + 0x21e2, + "arrowdashup", + 0x21e1, + "arrowdblboth", + 0x21d4, + "arrowdbldown", + 0x21d3, + "arrowdblleft", + 0x21d0, + "arrowdblright", + 0x21d2, + "arrowdblup", + 0x21d1, + "arrowdown", + 0x2193, + "arrowdownleft", + 0x2199, + "arrowdownright", + 0x2198, + "arrowdownwhite", + 0x21e9, + "arrowheaddownmod", + 0x02c5, + "arrowheadleftmod", + 0x02c2, + "arrowheadrightmod", + 0x02c3, + "arrowheadupmod", + 0x02c4, + "arrowhorizex", + 0xf8e7, + "arrowleft", + 0x2190, + "arrowleftdbl", + 0x21d0, + "arrowleftdblstroke", + 0x21cd, + "arrowleftoverright", + 0x21c6, + "arrowleftwhite", + 0x21e6, + "arrowright", + 0x2192, + "arrowrightdblstroke", + 0x21cf, + "arrowrightheavy", + 0x279e, + "arrowrightoverleft", + 0x21c4, + "arrowrightwhite", + 0x21e8, + "arrowtableft", + 0x21e4, + "arrowtabright", + 0x21e5, + "arrowup", + 0x2191, + "arrowupdn", + 0x2195, + "arrowupdnbse", + 0x21a8, + "arrowupdownbase", + 0x21a8, + "arrowupleft", + 0x2196, + "arrowupleftofdown", + 0x21c5, + "arrowupright", + 0x2197, + "arrowupwhite", + 0x21e7, + "arrowvertex", + 0xf8e6, + "asciicircum", + 0x005e, + "asciicircummonospace", + 0xff3e, + "asciitilde", + 0x007e, + "asciitildemonospace", + 0xff5e, + "ascript", + 0x0251, + "ascriptturned", + 0x0252, + "asmallhiragana", + 0x3041, + "asmallkatakana", + 0x30a1, + "asmallkatakanahalfwidth", + 0xff67, + "asterisk", + 0x002a, + "asteriskaltonearabic", + 0x066d, + "asteriskarabic", + 0x066d, + "asteriskmath", + 0x2217, + "asteriskmonospace", + 0xff0a, + "asterisksmall", + 0xfe61, + "asterism", + 0x2042, + "asuperior", + 0xf6e9, + "asymptoticallyequal", + 0x2243, + "at", + 0x0040, + "atilde", + 0x00e3, + "atmonospace", + 0xff20, + "atsmall", + 0xfe6b, + "aturned", + 0x0250, + "aubengali", + 0x0994, + "aubopomofo", + 0x3120, + "audeva", + 0x0914, + "augujarati", + 0x0a94, + "augurmukhi", + 0x0a14, + "aulengthmarkbengali", + 0x09d7, + "aumatragurmukhi", + 0x0a4c, + "auvowelsignbengali", + 0x09cc, + "auvowelsigndeva", + 0x094c, + "auvowelsigngujarati", + 0x0acc, + "avagrahadeva", + 0x093d, + "aybarmenian", + 0x0561, + "ayin", + 0x05e2, + "ayinaltonehebrew", + 0xfb20, + "ayinhebrew", + 0x05e2, + "b", + 0x0062, + "babengali", + 0x09ac, + "backslash", + 0x005c, + "backslashmonospace", + 0xff3c, + "badeva", + 0x092c, + "bagujarati", + 0x0aac, + "bagurmukhi", + 0x0a2c, + "bahiragana", + 0x3070, + "bahtthai", + 0x0e3f, + "bakatakana", + 0x30d0, + "bar", + 0x007c, + "barmonospace", + 0xff5c, + "bbopomofo", + 0x3105, + "bcircle", + 0x24d1, + "bdotaccent", + 0x1e03, + "bdotbelow", + 0x1e05, + "beamedsixteenthnotes", + 0x266c, + "because", + 0x2235, + "becyrillic", + 0x0431, + "beharabic", + 0x0628, + "behfinalarabic", + 0xfe90, + "behinitialarabic", + 0xfe91, + "behiragana", + 0x3079, + "behmedialarabic", + 0xfe92, + "behmeeminitialarabic", + 0xfc9f, + "behmeemisolatedarabic", + 0xfc08, + "behnoonfinalarabic", + 0xfc6d, + "bekatakana", + 0x30d9, + "benarmenian", + 0x0562, + "bet", + 0x05d1, + "beta", + 0x03b2, + "betasymbolgreek", + 0x03d0, + "betdagesh", + 0xfb31, + "betdageshhebrew", + 0xfb31, + "bethebrew", + 0x05d1, + "betrafehebrew", + 0xfb4c, + "bhabengali", + 0x09ad, + "bhadeva", + 0x092d, + "bhagujarati", + 0x0aad, + "bhagurmukhi", + 0x0a2d, + "bhook", + 0x0253, + "bihiragana", + 0x3073, + "bikatakana", + 0x30d3, + "bilabialclick", + 0x0298, + "bindigurmukhi", + 0x0a02, + "birusquare", + 0x3331, + "blackcircle", + 0x25cf, + "blackdiamond", + 0x25c6, + "blackdownpointingtriangle", + 0x25bc, + "blackleftpointingpointer", + 0x25c4, + "blackleftpointingtriangle", + 0x25c0, + "blacklenticularbracketleft", + 0x3010, + "blacklenticularbracketleftvertical", + 0xfe3b, + "blacklenticularbracketright", + 0x3011, + "blacklenticularbracketrightvertical", + 0xfe3c, + "blacklowerlefttriangle", + 0x25e3, + "blacklowerrighttriangle", + 0x25e2, + "blackrectangle", + 0x25ac, + "blackrightpointingpointer", + 0x25ba, + "blackrightpointingtriangle", + 0x25b6, + "blacksmallsquare", + 0x25aa, + "blacksmilingface", + 0x263b, + "blacksquare", + 0x25a0, + "blackstar", + 0x2605, + "blackupperlefttriangle", + 0x25e4, + "blackupperrighttriangle", + 0x25e5, + "blackuppointingsmalltriangle", + 0x25b4, + "blackuppointingtriangle", + 0x25b2, + "blank", + 0x2423, + "blinebelow", + 0x1e07, + "block", + 0x2588, + "bmonospace", + 0xff42, + "bobaimaithai", + 0x0e1a, + "bohiragana", + 0x307c, + "bokatakana", + 0x30dc, + "bparen", + 0x249d, + "bqsquare", + 0x33c3, + "braceex", + 0xf8f4, + "braceleft", + 0x007b, + "braceleftbt", + 0xf8f3, + "braceleftmid", + 0xf8f2, + "braceleftmonospace", + 0xff5b, + "braceleftsmall", + 0xfe5b, + "bracelefttp", + 0xf8f1, + "braceleftvertical", + 0xfe37, + "braceright", + 0x007d, + "bracerightbt", + 0xf8fe, + "bracerightmid", + 0xf8fd, + "bracerightmonospace", + 0xff5d, + "bracerightsmall", + 0xfe5c, + "bracerighttp", + 0xf8fc, + "bracerightvertical", + 0xfe38, + "bracketleft", + 0x005b, + "bracketleftbt", + 0xf8f0, + "bracketleftex", + 0xf8ef, + "bracketleftmonospace", + 0xff3b, + "bracketlefttp", + 0xf8ee, + "bracketright", + 0x005d, + "bracketrightbt", + 0xf8fb, + "bracketrightex", + 0xf8fa, + "bracketrightmonospace", + 0xff3d, + "bracketrighttp", + 0xf8f9, + "breve", + 0x02d8, + "brevebelowcmb", + 0x032e, + "brevecmb", + 0x0306, + "breveinvertedbelowcmb", + 0x032f, + "breveinvertedcmb", + 0x0311, + "breveinverteddoublecmb", + 0x0361, + "bridgebelowcmb", + 0x032a, + "bridgeinvertedbelowcmb", + 0x033a, + "brokenbar", + 0x00a6, + "bstroke", + 0x0180, + "bsuperior", + 0xf6ea, + "btopbar", + 0x0183, + "buhiragana", + 0x3076, + "bukatakana", + 0x30d6, + "bullet", + 0x2022, + "bulletinverse", + 0x25d8, + "bulletoperator", + 0x2219, + "bullseye", + 0x25ce, + "c", + 0x0063, + "caarmenian", + 0x056e, + "cabengali", + 0x099a, + "cacute", + 0x0107, + "cadeva", + 0x091a, + "cagujarati", + 0x0a9a, + "cagurmukhi", + 0x0a1a, + "calsquare", + 0x3388, + "candrabindubengali", + 0x0981, + "candrabinducmb", + 0x0310, + "candrabindudeva", + 0x0901, + "candrabindugujarati", + 0x0a81, + "capslock", + 0x21ea, + "careof", + 0x2105, + "caron", + 0x02c7, + "caronbelowcmb", + 0x032c, + "caroncmb", + 0x030c, + "carriagereturn", + 0x21b5, + "cbopomofo", + 0x3118, + "ccaron", + 0x010d, + "ccedilla", + 0x00e7, + "ccedillaacute", + 0x1e09, + "ccircle", + 0x24d2, + "ccircumflex", + 0x0109, + "ccurl", + 0x0255, + "cdot", + 0x010b, + "cdotaccent", + 0x010b, + "cdsquare", + 0x33c5, + "cedilla", + 0x00b8, + "cedillacmb", + 0x0327, + "cent", + 0x00a2, + "centigrade", + 0x2103, + "centinferior", + 0xf6df, + "centmonospace", + 0xffe0, + "centoldstyle", + 0xf7a2, + "centsuperior", + 0xf6e0, + "chaarmenian", + 0x0579, + "chabengali", + 0x099b, + "chadeva", + 0x091b, + "chagujarati", + 0x0a9b, + "chagurmukhi", + 0x0a1b, + "chbopomofo", + 0x3114, + "cheabkhasiancyrillic", + 0x04bd, + "checkmark", + 0x2713, + "checyrillic", + 0x0447, + "chedescenderabkhasiancyrillic", + 0x04bf, + "chedescendercyrillic", + 0x04b7, + "chedieresiscyrillic", + 0x04f5, + "cheharmenian", + 0x0573, + "chekhakassiancyrillic", + 0x04cc, + "cheverticalstrokecyrillic", + 0x04b9, + "chi", + 0x03c7, + "chieuchacirclekorean", + 0x3277, + "chieuchaparenkorean", + 0x3217, + "chieuchcirclekorean", + 0x3269, + "chieuchkorean", + 0x314a, + "chieuchparenkorean", + 0x3209, + "chochangthai", + 0x0e0a, + "chochanthai", + 0x0e08, + "chochingthai", + 0x0e09, + "chochoethai", + 0x0e0c, + "chook", + 0x0188, + "cieucacirclekorean", + 0x3276, + "cieucaparenkorean", + 0x3216, + "cieuccirclekorean", + 0x3268, + "cieuckorean", + 0x3148, + "cieucparenkorean", + 0x3208, + "cieucuparenkorean", + 0x321c, + "circle", + 0x25cb, + "circlecopyrt", + 0x00a9, + "circlemultiply", + 0x2297, + "circleot", + 0x2299, + "circleplus", + 0x2295, + "circlepostalmark", + 0x3036, + "circlewithlefthalfblack", + 0x25d0, + "circlewithrighthalfblack", + 0x25d1, + "circumflex", + 0x02c6, + "circumflexbelowcmb", + 0x032d, + "circumflexcmb", + 0x0302, + "clear", + 0x2327, + "clickalveolar", + 0x01c2, + "clickdental", + 0x01c0, + "clicklateral", + 0x01c1, + "clickretroflex", + 0x01c3, + "club", + 0x2663, + "clubsuitblack", + 0x2663, + "clubsuitwhite", + 0x2667, + "cmcubedsquare", + 0x33a4, + "cmonospace", + 0xff43, + "cmsquaredsquare", + 0x33a0, + "coarmenian", + 0x0581, + "colon", + 0x003a, + "colonmonetary", + 0x20a1, + "colonmonospace", + 0xff1a, + "colonsign", + 0x20a1, + "colonsmall", + 0xfe55, + "colontriangularhalfmod", + 0x02d1, + "colontriangularmod", + 0x02d0, + "comma", + 0x002c, + "commaabovecmb", + 0x0313, + "commaaboverightcmb", + 0x0315, + "commaaccent", + 0xf6c3, + "commaarabic", + 0x060c, + "commaarmenian", + 0x055d, + "commainferior", + 0xf6e1, + "commamonospace", + 0xff0c, + "commareversedabovecmb", + 0x0314, + "commareversedmod", + 0x02bd, + "commasmall", + 0xfe50, + "commasuperior", + 0xf6e2, + "commaturnedabovecmb", + 0x0312, + "commaturnedmod", + 0x02bb, + "compass", + 0x263c, + "congruent", + 0x2245, + "contourintegral", + 0x222e, + "control", + 0x2303, + "controlACK", + 0x0006, + "controlBEL", + 0x0007, + "controlBS", + 0x0008, + "controlCAN", + 0x0018, + "controlCR", + 0x000d, + "controlDC1", + 0x0011, + "controlDC2", + 0x0012, + "controlDC3", + 0x0013, + "controlDC4", + 0x0014, + "controlDEL", + 0x007f, + "controlDLE", + 0x0010, + "controlEM", + 0x0019, + "controlENQ", + 0x0005, + "controlEOT", + 0x0004, + "controlESC", + 0x001b, + "controlETB", + 0x0017, + "controlETX", + 0x0003, + "controlFF", + 0x000c, + "controlFS", + 0x001c, + "controlGS", + 0x001d, + "controlHT", + 0x0009, + "controlLF", + 0x000a, + "controlNAK", + 0x0015, + "controlNULL", + 0x0000, + "controlRS", + 0x001e, + "controlSI", + 0x000f, + "controlSO", + 0x000e, + "controlSOT", + 0x0002, + "controlSTX", + 0x0001, + "controlSUB", + 0x001a, + "controlSYN", + 0x0016, + "controlUS", + 0x001f, + "controlVT", + 0x000b, + "copyright", + 0x00a9, + "copyrightsans", + 0xf8e9, + "copyrightserif", + 0xf6d9, + "cornerbracketleft", + 0x300c, + "cornerbracketlefthalfwidth", + 0xff62, + "cornerbracketleftvertical", + 0xfe41, + "cornerbracketright", + 0x300d, + "cornerbracketrighthalfwidth", + 0xff63, + "cornerbracketrightvertical", + 0xfe42, + "corporationsquare", + 0x337f, + "cosquare", + 0x33c7, + "coverkgsquare", + 0x33c6, + "cparen", + 0x249e, + "cruzeiro", + 0x20a2, + "cstretched", + 0x0297, + "curlyand", + 0x22cf, + "curlyor", + 0x22ce, + "currency", + 0x00a4, + "cyrBreve", + 0xf6d1, + "cyrFlex", + 0xf6d2, + "cyrbreve", + 0xf6d4, + "cyrflex", + 0xf6d5, + "d", + 0x0064, + "daarmenian", + 0x0564, + "dabengali", + 0x09a6, + "dadarabic", + 0x0636, + "dadeva", + 0x0926, + "dadfinalarabic", + 0xfebe, + "dadinitialarabic", + 0xfebf, + "dadmedialarabic", + 0xfec0, + "dagesh", + 0x05bc, + "dageshhebrew", + 0x05bc, + "dagger", + 0x2020, + "daggerdbl", + 0x2021, + "dagujarati", + 0x0aa6, + "dagurmukhi", + 0x0a26, + "dahiragana", + 0x3060, + "dakatakana", + 0x30c0, + "dalarabic", + 0x062f, + "dalet", + 0x05d3, + "daletdagesh", + 0xfb33, + "daletdageshhebrew", + 0xfb33, + "dalethebrew", + 0x05d3, + "dalfinalarabic", + 0xfeaa, + "dammaarabic", + 0x064f, + "dammalowarabic", + 0x064f, + "dammatanaltonearabic", + 0x064c, + "dammatanarabic", + 0x064c, + "danda", + 0x0964, + "dargahebrew", + 0x05a7, + "dargalefthebrew", + 0x05a7, + "dasiapneumatacyrilliccmb", + 0x0485, + "dblGrave", + 0xf6d3, + "dblanglebracketleft", + 0x300a, + "dblanglebracketleftvertical", + 0xfe3d, + "dblanglebracketright", + 0x300b, + "dblanglebracketrightvertical", + 0xfe3e, + "dblarchinvertedbelowcmb", + 0x032b, + "dblarrowleft", + 0x21d4, + "dblarrowright", + 0x21d2, + "dbldanda", + 0x0965, + "dblgrave", + 0xf6d6, + "dblgravecmb", + 0x030f, + "dblintegral", + 0x222c, + "dbllowline", + 0x2017, + "dbllowlinecmb", + 0x0333, + "dbloverlinecmb", + 0x033f, + "dblprimemod", + 0x02ba, + "dblverticalbar", + 0x2016, + "dblverticallineabovecmb", + 0x030e, + "dbopomofo", + 0x3109, + "dbsquare", + 0x33c8, + "dcaron", + 0x010f, + "dcedilla", + 0x1e11, + "dcircle", + 0x24d3, + "dcircumflexbelow", + 0x1e13, + "dcroat", + 0x0111, + "ddabengali", + 0x09a1, + "ddadeva", + 0x0921, + "ddagujarati", + 0x0aa1, + "ddagurmukhi", + 0x0a21, + "ddalarabic", + 0x0688, + "ddalfinalarabic", + 0xfb89, + "dddhadeva", + 0x095c, + "ddhabengali", + 0x09a2, + "ddhadeva", + 0x0922, + "ddhagujarati", + 0x0aa2, + "ddhagurmukhi", + 0x0a22, + "ddotaccent", + 0x1e0b, + "ddotbelow", + 0x1e0d, + "decimalseparatorarabic", + 0x066b, + "decimalseparatorpersian", + 0x066b, + "decyrillic", + 0x0434, + "degree", + 0x00b0, + "dehihebrew", + 0x05ad, + "dehiragana", + 0x3067, + "deicoptic", + 0x03ef, + "dekatakana", + 0x30c7, + "deleteleft", + 0x232b, + "deleteright", + 0x2326, + "delta", + 0x03b4, + "deltaturned", + 0x018d, + "denominatorminusonenumeratorbengali", + 0x09f8, + "dezh", + 0x02a4, + "dhabengali", + 0x09a7, + "dhadeva", + 0x0927, + "dhagujarati", + 0x0aa7, + "dhagurmukhi", + 0x0a27, + "dhook", + 0x0257, + "dialytikatonos", + 0x0385, + "dialytikatonoscmb", + 0x0344, + "diamond", + 0x2666, + "diamondsuitwhite", + 0x2662, + "dieresis", + 0x00a8, + "dieresisacute", + 0xf6d7, + "dieresisbelowcmb", + 0x0324, + "dieresiscmb", + 0x0308, + "dieresisgrave", + 0xf6d8, + "dieresistonos", + 0x0385, + "dihiragana", + 0x3062, + "dikatakana", + 0x30c2, + "dittomark", + 0x3003, + "divide", + 0x00f7, + "divides", + 0x2223, + "divisionslash", + 0x2215, + "djecyrillic", + 0x0452, + "dkshade", + 0x2593, + "dlinebelow", + 0x1e0f, + "dlsquare", + 0x3397, + "dmacron", + 0x0111, + "dmonospace", + 0xff44, + "dnblock", + 0x2584, + "dochadathai", + 0x0e0e, + "dodekthai", + 0x0e14, + "dohiragana", + 0x3069, + "dokatakana", + 0x30c9, + "dollar", + 0x0024, + "dollarinferior", + 0xf6e3, + "dollarmonospace", + 0xff04, + "dollaroldstyle", + 0xf724, + "dollarsmall", + 0xfe69, + "dollarsuperior", + 0xf6e4, + "dong", + 0x20ab, + "dorusquare", + 0x3326, + "dotaccent", + 0x02d9, + "dotaccentcmb", + 0x0307, + "dotbelowcmb", + 0x0323, + "dotbelowcomb", + 0x0323, + "dotkatakana", + 0x30fb, + "dotlessi", + 0x0131, + "dotlessj", + 0xf6be, + "dotlessjstrokehook", + 0x0284, + "dotmath", + 0x22c5, + "dottedcircle", + 0x25cc, + "doubleyodpatah", + 0xfb1f, + "doubleyodpatahhebrew", + 0xfb1f, + "downtackbelowcmb", + 0x031e, + "downtackmod", + 0x02d5, + "dparen", + 0x249f, + "dsuperior", + 0xf6eb, + "dtail", + 0x0256, + "dtopbar", + 0x018c, + "duhiragana", + 0x3065, + "dukatakana", + 0x30c5, + "dz", + 0x01f3, + "dzaltone", + 0x02a3, + "dzcaron", + 0x01c6, + "dzcurl", + 0x02a5, + "dzeabkhasiancyrillic", + 0x04e1, + "dzecyrillic", + 0x0455, + "dzhecyrillic", + 0x045f, + "e", + 0x0065, + "eacute", + 0x00e9, + "earth", + 0x2641, + "ebengali", + 0x098f, + "ebopomofo", + 0x311c, + "ebreve", + 0x0115, + "ecandradeva", + 0x090d, + "ecandragujarati", + 0x0a8d, + "ecandravowelsigndeva", + 0x0945, + "ecandravowelsigngujarati", + 0x0ac5, + "ecaron", + 0x011b, + "ecedillabreve", + 0x1e1d, + "echarmenian", + 0x0565, + "echyiwnarmenian", + 0x0587, + "ecircle", + 0x24d4, + "ecircumflex", + 0x00ea, + "ecircumflexacute", + 0x1ebf, + "ecircumflexbelow", + 0x1e19, + "ecircumflexdotbelow", + 0x1ec7, + "ecircumflexgrave", + 0x1ec1, + "ecircumflexhookabove", + 0x1ec3, + "ecircumflextilde", + 0x1ec5, + "ecyrillic", + 0x0454, + "edblgrave", + 0x0205, + "edeva", + 0x090f, + "edieresis", + 0x00eb, + "edot", + 0x0117, + "edotaccent", + 0x0117, + "edotbelow", + 0x1eb9, + "eegurmukhi", + 0x0a0f, + "eematragurmukhi", + 0x0a47, + "efcyrillic", + 0x0444, + "egrave", + 0x00e8, + "egujarati", + 0x0a8f, + "eharmenian", + 0x0567, + "ehbopomofo", + 0x311d, + "ehiragana", + 0x3048, + "ehookabove", + 0x1ebb, + "eibopomofo", + 0x311f, + "eight", + 0x0038, + "eightarabic", + 0x0668, + "eightbengali", + 0x09ee, + "eightcircle", + 0x2467, + "eightcircleinversesansserif", + 0x2791, + "eightdeva", + 0x096e, + "eighteencircle", + 0x2471, + "eighteenparen", + 0x2485, + "eighteenperiod", + 0x2499, + "eightgujarati", + 0x0aee, + "eightgurmukhi", + 0x0a6e, + "eighthackarabic", + 0x0668, + "eighthangzhou", + 0x3028, + "eighthnotebeamed", + 0x266b, + "eightideographicparen", + 0x3227, + "eightinferior", + 0x2088, + "eightmonospace", + 0xff18, + "eightoldstyle", + 0xf738, + "eightparen", + 0x247b, + "eightperiod", + 0x248f, + "eightpersian", + 0x06f8, + "eightroman", + 0x2177, + "eightsuperior", + 0x2078, + "eightthai", + 0x0e58, + "einvertedbreve", + 0x0207, + "eiotifiedcyrillic", + 0x0465, + "ekatakana", + 0x30a8, + "ekatakanahalfwidth", + 0xff74, + "ekonkargurmukhi", + 0x0a74, + "ekorean", + 0x3154, + "elcyrillic", + 0x043b, + "element", + 0x2208, + "elevencircle", + 0x246a, + "elevenparen", + 0x247e, + "elevenperiod", + 0x2492, + "elevenroman", + 0x217a, + "ellipsis", + 0x2026, + "ellipsisvertical", + 0x22ee, + "emacron", + 0x0113, + "emacronacute", + 0x1e17, + "emacrongrave", + 0x1e15, + "emcyrillic", + 0x043c, + "emdash", + 0x2014, + "emdashvertical", + 0xfe31, + "emonospace", + 0xff45, + "emphasismarkarmenian", + 0x055b, + "emptyset", + 0x2205, + "enbopomofo", + 0x3123, + "encyrillic", + 0x043d, + "endash", + 0x2013, + "endashvertical", + 0xfe32, + "endescendercyrillic", + 0x04a3, + "eng", + 0x014b, + "engbopomofo", + 0x3125, + "enghecyrillic", + 0x04a5, + "enhookcyrillic", + 0x04c8, + "enspace", + 0x2002, + "eogonek", + 0x0119, + "eokorean", + 0x3153, + "eopen", + 0x025b, + "eopenclosed", + 0x029a, + "eopenreversed", + 0x025c, + "eopenreversedclosed", + 0x025e, + "eopenreversedhook", + 0x025d, + "eparen", + 0x24a0, + "epsilon", + 0x03b5, + "epsilontonos", + 0x03ad, + "equal", + 0x003d, + "equalmonospace", + 0xff1d, + "equalsmall", + 0xfe66, + "equalsuperior", + 0x207c, + "equivalence", + 0x2261, + "erbopomofo", + 0x3126, + "ercyrillic", + 0x0440, + "ereversed", + 0x0258, + "ereversedcyrillic", + 0x044d, + "escyrillic", + 0x0441, + "esdescendercyrillic", + 0x04ab, + "esh", + 0x0283, + "eshcurl", + 0x0286, + "eshortdeva", + 0x090e, + "eshortvowelsigndeva", + 0x0946, + "eshreversedloop", + 0x01aa, + "eshsquatreversed", + 0x0285, + "esmallhiragana", + 0x3047, + "esmallkatakana", + 0x30a7, + "esmallkatakanahalfwidth", + 0xff6a, + "estimated", + 0x212e, + "esuperior", + 0xf6ec, + "eta", + 0x03b7, + "etarmenian", + 0x0568, + "etatonos", + 0x03ae, + "eth", + 0x00f0, + "etilde", + 0x1ebd, + "etildebelow", + 0x1e1b, + "etnahtafoukhhebrew", + 0x0591, + "etnahtafoukhlefthebrew", + 0x0591, + "etnahtahebrew", + 0x0591, + "etnahtalefthebrew", + 0x0591, + "eturned", + 0x01dd, + "eukorean", + 0x3161, + "euro", + 0x20ac, + "evowelsignbengali", + 0x09c7, + "evowelsigndeva", + 0x0947, + "evowelsigngujarati", + 0x0ac7, + "exclam", + 0x0021, + "exclamarmenian", + 0x055c, + "exclamdbl", + 0x203c, + "exclamdown", + 0x00a1, + "exclamdownsmall", + 0xf7a1, + "exclammonospace", + 0xff01, + "exclamsmall", + 0xf721, + "existential", + 0x2203, + "ezh", + 0x0292, + "ezhcaron", + 0x01ef, + "ezhcurl", + 0x0293, + "ezhreversed", + 0x01b9, + "ezhtail", + 0x01ba, + "f", + 0x0066, + "fadeva", + 0x095e, + "fagurmukhi", + 0x0a5e, + "fahrenheit", + 0x2109, + "fathaarabic", + 0x064e, + "fathalowarabic", + 0x064e, + "fathatanarabic", + 0x064b, + "fbopomofo", + 0x3108, + "fcircle", + 0x24d5, + "fdotaccent", + 0x1e1f, + "feharabic", + 0x0641, + "feharmenian", + 0x0586, + "fehfinalarabic", + 0xfed2, + "fehinitialarabic", + 0xfed3, + "fehmedialarabic", + 0xfed4, + "feicoptic", + 0x03e5, + "female", + 0x2640, + "ff", + 0xfb00, + "f_f", + 0xfb00, + "ffi", + 0xfb03, + "ffl", + 0xfb04, + "fi", + 0xfb01, + "fifteencircle", + 0x246e, + "fifteenparen", + 0x2482, + "fifteenperiod", + 0x2496, + "figuredash", + 0x2012, + "filledbox", + 0x25a0, + "filledrect", + 0x25ac, + "finalkaf", + 0x05da, + "finalkafdagesh", + 0xfb3a, + "finalkafdageshhebrew", + 0xfb3a, + "finalkafhebrew", + 0x05da, + "finalmem", + 0x05dd, + "finalmemhebrew", + 0x05dd, + "finalnun", + 0x05df, + "finalnunhebrew", + 0x05df, + "finalpe", + 0x05e3, + "finalpehebrew", + 0x05e3, + "finaltsadi", + 0x05e5, + "finaltsadihebrew", + 0x05e5, + "firsttonechinese", + 0x02c9, + "fisheye", + 0x25c9, + "fitacyrillic", + 0x0473, + "five", + 0x0035, + "fivearabic", + 0x0665, + "fivebengali", + 0x09eb, + "fivecircle", + 0x2464, + "fivecircleinversesansserif", + 0x278e, + "fivedeva", + 0x096b, + "fiveeighths", + 0x215d, + "fivegujarati", + 0x0aeb, + "fivegurmukhi", + 0x0a6b, + "fivehackarabic", + 0x0665, + "fivehangzhou", + 0x3025, + "fiveideographicparen", + 0x3224, + "fiveinferior", + 0x2085, + "fivemonospace", + 0xff15, + "fiveoldstyle", + 0xf735, + "fiveparen", + 0x2478, + "fiveperiod", + 0x248c, + "fivepersian", + 0x06f5, + "fiveroman", + 0x2174, + "fivesuperior", + 0x2075, + "fivethai", + 0x0e55, + "fl", + 0xfb02, + "florin", + 0x0192, + "fmonospace", + 0xff46, + "fmsquare", + 0x3399, + "fofanthai", + 0x0e1f, + "fofathai", + 0x0e1d, + "fongmanthai", + 0x0e4f, + "forall", + 0x2200, + "four", + 0x0034, + "fourarabic", + 0x0664, + "fourbengali", + 0x09ea, + "fourcircle", + 0x2463, + "fourcircleinversesansserif", + 0x278d, + "fourdeva", + 0x096a, + "fourgujarati", + 0x0aea, + "fourgurmukhi", + 0x0a6a, + "fourhackarabic", + 0x0664, + "fourhangzhou", + 0x3024, + "fourideographicparen", + 0x3223, + "fourinferior", + 0x2084, + "fourmonospace", + 0xff14, + "fournumeratorbengali", + 0x09f7, + "fouroldstyle", + 0xf734, + "fourparen", + 0x2477, + "fourperiod", + 0x248b, + "fourpersian", + 0x06f4, + "fourroman", + 0x2173, + "foursuperior", + 0x2074, + "fourteencircle", + 0x246d, + "fourteenparen", + 0x2481, + "fourteenperiod", + 0x2495, + "fourthai", + 0x0e54, + "fourthtonechinese", + 0x02cb, + "fparen", + 0x24a1, + "fraction", + 0x2044, + "franc", + 0x20a3, + "g", + 0x0067, + "gabengali", + 0x0997, + "gacute", + 0x01f5, + "gadeva", + 0x0917, + "gafarabic", + 0x06af, + "gaffinalarabic", + 0xfb93, + "gafinitialarabic", + 0xfb94, + "gafmedialarabic", + 0xfb95, + "gagujarati", + 0x0a97, + "gagurmukhi", + 0x0a17, + "gahiragana", + 0x304c, + "gakatakana", + 0x30ac, + "gamma", + 0x03b3, + "gammalatinsmall", + 0x0263, + "gammasuperior", + 0x02e0, + "gangiacoptic", + 0x03eb, + "gbopomofo", + 0x310d, + "gbreve", + 0x011f, + "gcaron", + 0x01e7, + "gcedilla", + 0x0123, + "gcircle", + 0x24d6, + "gcircumflex", + 0x011d, + "gcommaaccent", + 0x0123, + "gdot", + 0x0121, + "gdotaccent", + 0x0121, + "gecyrillic", + 0x0433, + "gehiragana", + 0x3052, + "gekatakana", + 0x30b2, + "geometricallyequal", + 0x2251, + "gereshaccenthebrew", + 0x059c, + "gereshhebrew", + 0x05f3, + "gereshmuqdamhebrew", + 0x059d, + "germandbls", + 0x00df, + "gershayimaccenthebrew", + 0x059e, + "gershayimhebrew", + 0x05f4, + "getamark", + 0x3013, + "ghabengali", + 0x0998, + "ghadarmenian", + 0x0572, + "ghadeva", + 0x0918, + "ghagujarati", + 0x0a98, + "ghagurmukhi", + 0x0a18, + "ghainarabic", + 0x063a, + "ghainfinalarabic", + 0xfece, + "ghaininitialarabic", + 0xfecf, + "ghainmedialarabic", + 0xfed0, + "ghemiddlehookcyrillic", + 0x0495, + "ghestrokecyrillic", + 0x0493, + "gheupturncyrillic", + 0x0491, + "ghhadeva", + 0x095a, + "ghhagurmukhi", + 0x0a5a, + "ghook", + 0x0260, + "ghzsquare", + 0x3393, + "gihiragana", + 0x304e, + "gikatakana", + 0x30ae, + "gimarmenian", + 0x0563, + "gimel", + 0x05d2, + "gimeldagesh", + 0xfb32, + "gimeldageshhebrew", + 0xfb32, + "gimelhebrew", + 0x05d2, + "gjecyrillic", + 0x0453, + "glottalinvertedstroke", + 0x01be, + "glottalstop", + 0x0294, + "glottalstopinverted", + 0x0296, + "glottalstopmod", + 0x02c0, + "glottalstopreversed", + 0x0295, + "glottalstopreversedmod", + 0x02c1, + "glottalstopreversedsuperior", + 0x02e4, + "glottalstopstroke", + 0x02a1, + "glottalstopstrokereversed", + 0x02a2, + "gmacron", + 0x1e21, + "gmonospace", + 0xff47, + "gohiragana", + 0x3054, + "gokatakana", + 0x30b4, + "gparen", + 0x24a2, + "gpasquare", + 0x33ac, + "gradient", + 0x2207, + "grave", + 0x0060, + "gravebelowcmb", + 0x0316, + "gravecmb", + 0x0300, + "gravecomb", + 0x0300, + "gravedeva", + 0x0953, + "gravelowmod", + 0x02ce, + "gravemonospace", + 0xff40, + "gravetonecmb", + 0x0340, + "greater", + 0x003e, + "greaterequal", + 0x2265, + "greaterequalorless", + 0x22db, + "greatermonospace", + 0xff1e, + "greaterorequivalent", + 0x2273, + "greaterorless", + 0x2277, + "greateroverequal", + 0x2267, + "greatersmall", + 0xfe65, + "gscript", + 0x0261, + "gstroke", + 0x01e5, + "guhiragana", + 0x3050, + "guillemotleft", + 0x00ab, + "guillemotright", + 0x00bb, + "guilsinglleft", + 0x2039, + "guilsinglright", + 0x203a, + "gukatakana", + 0x30b0, + "guramusquare", + 0x3318, + "gysquare", + 0x33c9, + "h", + 0x0068, + "haabkhasiancyrillic", + 0x04a9, + "haaltonearabic", + 0x06c1, + "habengali", + 0x09b9, + "hadescendercyrillic", + 0x04b3, + "hadeva", + 0x0939, + "hagujarati", + 0x0ab9, + "hagurmukhi", + 0x0a39, + "haharabic", + 0x062d, + "hahfinalarabic", + 0xfea2, + "hahinitialarabic", + 0xfea3, + "hahiragana", + 0x306f, + "hahmedialarabic", + 0xfea4, + "haitusquare", + 0x332a, + "hakatakana", + 0x30cf, + "hakatakanahalfwidth", + 0xff8a, + "halantgurmukhi", + 0x0a4d, + "hamzaarabic", + 0x0621, + "hamzalowarabic", + 0x0621, + "hangulfiller", + 0x3164, + "hardsigncyrillic", + 0x044a, + "harpoonleftbarbup", + 0x21bc, + "harpoonrightbarbup", + 0x21c0, + "hasquare", + 0x33ca, + "hatafpatah", + 0x05b2, + "hatafpatah16", + 0x05b2, + "hatafpatah23", + 0x05b2, + "hatafpatah2f", + 0x05b2, + "hatafpatahhebrew", + 0x05b2, + "hatafpatahnarrowhebrew", + 0x05b2, + "hatafpatahquarterhebrew", + 0x05b2, + "hatafpatahwidehebrew", + 0x05b2, + "hatafqamats", + 0x05b3, + "hatafqamats1b", + 0x05b3, + "hatafqamats28", + 0x05b3, + "hatafqamats34", + 0x05b3, + "hatafqamatshebrew", + 0x05b3, + "hatafqamatsnarrowhebrew", + 0x05b3, + "hatafqamatsquarterhebrew", + 0x05b3, + "hatafqamatswidehebrew", + 0x05b3, + "hatafsegol", + 0x05b1, + "hatafsegol17", + 0x05b1, + "hatafsegol24", + 0x05b1, + "hatafsegol30", + 0x05b1, + "hatafsegolhebrew", + 0x05b1, + "hatafsegolnarrowhebrew", + 0x05b1, + "hatafsegolquarterhebrew", + 0x05b1, + "hatafsegolwidehebrew", + 0x05b1, + "hbar", + 0x0127, + "hbopomofo", + 0x310f, + "hbrevebelow", + 0x1e2b, + "hcedilla", + 0x1e29, + "hcircle", + 0x24d7, + "hcircumflex", + 0x0125, + "hdieresis", + 0x1e27, + "hdotaccent", + 0x1e23, + "hdotbelow", + 0x1e25, + "he", + 0x05d4, + "heart", + 0x2665, + "heartsuitblack", + 0x2665, + "heartsuitwhite", + 0x2661, + "hedagesh", + 0xfb34, + "hedageshhebrew", + 0xfb34, + "hehaltonearabic", + 0x06c1, + "heharabic", + 0x0647, + "hehebrew", + 0x05d4, + "hehfinalaltonearabic", + 0xfba7, + "hehfinalalttwoarabic", + 0xfeea, + "hehfinalarabic", + 0xfeea, + "hehhamzaabovefinalarabic", + 0xfba5, + "hehhamzaaboveisolatedarabic", + 0xfba4, + "hehinitialaltonearabic", + 0xfba8, + "hehinitialarabic", + 0xfeeb, + "hehiragana", + 0x3078, + "hehmedialaltonearabic", + 0xfba9, + "hehmedialarabic", + 0xfeec, + "heiseierasquare", + 0x337b, + "hekatakana", + 0x30d8, + "hekatakanahalfwidth", + 0xff8d, + "hekutaarusquare", + 0x3336, + "henghook", + 0x0267, + "herutusquare", + 0x3339, + "het", + 0x05d7, + "hethebrew", + 0x05d7, + "hhook", + 0x0266, + "hhooksuperior", + 0x02b1, + "hieuhacirclekorean", + 0x327b, + "hieuhaparenkorean", + 0x321b, + "hieuhcirclekorean", + 0x326d, + "hieuhkorean", + 0x314e, + "hieuhparenkorean", + 0x320d, + "hihiragana", + 0x3072, + "hikatakana", + 0x30d2, + "hikatakanahalfwidth", + 0xff8b, + "hiriq", + 0x05b4, + "hiriq14", + 0x05b4, + "hiriq21", + 0x05b4, + "hiriq2d", + 0x05b4, + "hiriqhebrew", + 0x05b4, + "hiriqnarrowhebrew", + 0x05b4, + "hiriqquarterhebrew", + 0x05b4, + "hiriqwidehebrew", + 0x05b4, + "hlinebelow", + 0x1e96, + "hmonospace", + 0xff48, + "hoarmenian", + 0x0570, + "hohipthai", + 0x0e2b, + "hohiragana", + 0x307b, + "hokatakana", + 0x30db, + "hokatakanahalfwidth", + 0xff8e, + "holam", + 0x05b9, + "holam19", + 0x05b9, + "holam26", + 0x05b9, + "holam32", + 0x05b9, + "holamhebrew", + 0x05b9, + "holamnarrowhebrew", + 0x05b9, + "holamquarterhebrew", + 0x05b9, + "holamwidehebrew", + 0x05b9, + "honokhukthai", + 0x0e2e, + "hookabovecomb", + 0x0309, + "hookcmb", + 0x0309, + "hookpalatalizedbelowcmb", + 0x0321, + "hookretroflexbelowcmb", + 0x0322, + "hoonsquare", + 0x3342, + "horicoptic", + 0x03e9, + "horizontalbar", + 0x2015, + "horncmb", + 0x031b, + "hotsprings", + 0x2668, + "house", + 0x2302, + "hparen", + 0x24a3, + "hsuperior", + 0x02b0, + "hturned", + 0x0265, + "huhiragana", + 0x3075, + "huiitosquare", + 0x3333, + "hukatakana", + 0x30d5, + "hukatakanahalfwidth", + 0xff8c, + "hungarumlaut", + 0x02dd, + "hungarumlautcmb", + 0x030b, + "hv", + 0x0195, + "hyphen", + 0x002d, + "hypheninferior", + 0xf6e5, + "hyphenmonospace", + 0xff0d, + "hyphensmall", + 0xfe63, + "hyphensuperior", + 0xf6e6, + "hyphentwo", + 0x2010, + "i", + 0x0069, + "iacute", + 0x00ed, + "iacyrillic", + 0x044f, + "ibengali", + 0x0987, + "ibopomofo", + 0x3127, + "ibreve", + 0x012d, + "icaron", + 0x01d0, + "icircle", + 0x24d8, + "icircumflex", + 0x00ee, + "icyrillic", + 0x0456, + "idblgrave", + 0x0209, + "ideographearthcircle", + 0x328f, + "ideographfirecircle", + 0x328b, + "ideographicallianceparen", + 0x323f, + "ideographiccallparen", + 0x323a, + "ideographiccentrecircle", + 0x32a5, + "ideographicclose", + 0x3006, + "ideographiccomma", + 0x3001, + "ideographiccommaleft", + 0xff64, + "ideographiccongratulationparen", + 0x3237, + "ideographiccorrectcircle", + 0x32a3, + "ideographicearthparen", + 0x322f, + "ideographicenterpriseparen", + 0x323d, + "ideographicexcellentcircle", + 0x329d, + "ideographicfestivalparen", + 0x3240, + "ideographicfinancialcircle", + 0x3296, + "ideographicfinancialparen", + 0x3236, + "ideographicfireparen", + 0x322b, + "ideographichaveparen", + 0x3232, + "ideographichighcircle", + 0x32a4, + "ideographiciterationmark", + 0x3005, + "ideographiclaborcircle", + 0x3298, + "ideographiclaborparen", + 0x3238, + "ideographicleftcircle", + 0x32a7, + "ideographiclowcircle", + 0x32a6, + "ideographicmedicinecircle", + 0x32a9, + "ideographicmetalparen", + 0x322e, + "ideographicmoonparen", + 0x322a, + "ideographicnameparen", + 0x3234, + "ideographicperiod", + 0x3002, + "ideographicprintcircle", + 0x329e, + "ideographicreachparen", + 0x3243, + "ideographicrepresentparen", + 0x3239, + "ideographicresourceparen", + 0x323e, + "ideographicrightcircle", + 0x32a8, + "ideographicsecretcircle", + 0x3299, + "ideographicselfparen", + 0x3242, + "ideographicsocietyparen", + 0x3233, + "ideographicspace", + 0x3000, + "ideographicspecialparen", + 0x3235, + "ideographicstockparen", + 0x3231, + "ideographicstudyparen", + 0x323b, + "ideographicsunparen", + 0x3230, + "ideographicsuperviseparen", + 0x323c, + "ideographicwaterparen", + 0x322c, + "ideographicwoodparen", + 0x322d, + "ideographiczero", + 0x3007, + "ideographmetalcircle", + 0x328e, + "ideographmooncircle", + 0x328a, + "ideographnamecircle", + 0x3294, + "ideographsuncircle", + 0x3290, + "ideographwatercircle", + 0x328c, + "ideographwoodcircle", + 0x328d, + "ideva", + 0x0907, + "idieresis", + 0x00ef, + "idieresisacute", + 0x1e2f, + "idieresiscyrillic", + 0x04e5, + "idotbelow", + 0x1ecb, + "iebrevecyrillic", + 0x04d7, + "iecyrillic", + 0x0435, + "ieungacirclekorean", + 0x3275, + "ieungaparenkorean", + 0x3215, + "ieungcirclekorean", + 0x3267, + "ieungkorean", + 0x3147, + "ieungparenkorean", + 0x3207, + "igrave", + 0x00ec, + "igujarati", + 0x0a87, + "igurmukhi", + 0x0a07, + "ihiragana", + 0x3044, + "ihookabove", + 0x1ec9, + "iibengali", + 0x0988, + "iicyrillic", + 0x0438, + "iideva", + 0x0908, + "iigujarati", + 0x0a88, + "iigurmukhi", + 0x0a08, + "iimatragurmukhi", + 0x0a40, + "iinvertedbreve", + 0x020b, + "iishortcyrillic", + 0x0439, + "iivowelsignbengali", + 0x09c0, + "iivowelsigndeva", + 0x0940, + "iivowelsigngujarati", + 0x0ac0, + "ij", + 0x0133, + "ikatakana", + 0x30a4, + "ikatakanahalfwidth", + 0xff72, + "ikorean", + 0x3163, + "ilde", + 0x02dc, + "iluyhebrew", + 0x05ac, + "imacron", + 0x012b, + "imacroncyrillic", + 0x04e3, + "imageorapproximatelyequal", + 0x2253, + "imatragurmukhi", + 0x0a3f, + "imonospace", + 0xff49, + "increment", + 0x2206, + "infinity", + 0x221e, + "iniarmenian", + 0x056b, + "integral", + 0x222b, + "integralbottom", + 0x2321, + "integralbt", + 0x2321, + "integralex", + 0xf8f5, + "integraltop", + 0x2320, + "integraltp", + 0x2320, + "intersection", + 0x2229, + "intisquare", + 0x3305, + "invbullet", + 0x25d8, + "invcircle", + 0x25d9, + "invsmileface", + 0x263b, + "iocyrillic", + 0x0451, + "iogonek", + 0x012f, + "iota", + 0x03b9, + "iotadieresis", + 0x03ca, + "iotadieresistonos", + 0x0390, + "iotalatin", + 0x0269, + "iotatonos", + 0x03af, + "iparen", + 0x24a4, + "irigurmukhi", + 0x0a72, + "ismallhiragana", + 0x3043, + "ismallkatakana", + 0x30a3, + "ismallkatakanahalfwidth", + 0xff68, + "issharbengali", + 0x09fa, + "istroke", + 0x0268, + "isuperior", + 0xf6ed, + "iterationhiragana", + 0x309d, + "iterationkatakana", + 0x30fd, + "itilde", + 0x0129, + "itildebelow", + 0x1e2d, + "iubopomofo", + 0x3129, + "iucyrillic", + 0x044e, + "ivowelsignbengali", + 0x09bf, + "ivowelsigndeva", + 0x093f, + "ivowelsigngujarati", + 0x0abf, + "izhitsacyrillic", + 0x0475, + "izhitsadblgravecyrillic", + 0x0477, + "j", + 0x006a, + "jaarmenian", + 0x0571, + "jabengali", + 0x099c, + "jadeva", + 0x091c, + "jagujarati", + 0x0a9c, + "jagurmukhi", + 0x0a1c, + "jbopomofo", + 0x3110, + "jcaron", + 0x01f0, + "jcircle", + 0x24d9, + "jcircumflex", + 0x0135, + "jcrossedtail", + 0x029d, + "jdotlessstroke", + 0x025f, + "jecyrillic", + 0x0458, + "jeemarabic", + 0x062c, + "jeemfinalarabic", + 0xfe9e, + "jeeminitialarabic", + 0xfe9f, + "jeemmedialarabic", + 0xfea0, + "jeharabic", + 0x0698, + "jehfinalarabic", + 0xfb8b, + "jhabengali", + 0x099d, + "jhadeva", + 0x091d, + "jhagujarati", + 0x0a9d, + "jhagurmukhi", + 0x0a1d, + "jheharmenian", + 0x057b, + "jis", + 0x3004, + "jmonospace", + 0xff4a, + "jparen", + 0x24a5, + "jsuperior", + 0x02b2, + "k", + 0x006b, + "kabashkircyrillic", + 0x04a1, + "kabengali", + 0x0995, + "kacute", + 0x1e31, + "kacyrillic", + 0x043a, + "kadescendercyrillic", + 0x049b, + "kadeva", + 0x0915, + "kaf", + 0x05db, + "kafarabic", + 0x0643, + "kafdagesh", + 0xfb3b, + "kafdageshhebrew", + 0xfb3b, + "kaffinalarabic", + 0xfeda, + "kafhebrew", + 0x05db, + "kafinitialarabic", + 0xfedb, + "kafmedialarabic", + 0xfedc, + "kafrafehebrew", + 0xfb4d, + "kagujarati", + 0x0a95, + "kagurmukhi", + 0x0a15, + "kahiragana", + 0x304b, + "kahookcyrillic", + 0x04c4, + "kakatakana", + 0x30ab, + "kakatakanahalfwidth", + 0xff76, + "kappa", + 0x03ba, + "kappasymbolgreek", + 0x03f0, + "kapyeounmieumkorean", + 0x3171, + "kapyeounphieuphkorean", + 0x3184, + "kapyeounpieupkorean", + 0x3178, + "kapyeounssangpieupkorean", + 0x3179, + "karoriisquare", + 0x330d, + "kashidaautoarabic", + 0x0640, + "kashidaautonosidebearingarabic", + 0x0640, + "kasmallkatakana", + 0x30f5, + "kasquare", + 0x3384, + "kasraarabic", + 0x0650, + "kasratanarabic", + 0x064d, + "kastrokecyrillic", + 0x049f, + "katahiraprolongmarkhalfwidth", + 0xff70, + "kaverticalstrokecyrillic", + 0x049d, + "kbopomofo", + 0x310e, + "kcalsquare", + 0x3389, + "kcaron", + 0x01e9, + "kcedilla", + 0x0137, + "kcircle", + 0x24da, + "kcommaaccent", + 0x0137, + "kdotbelow", + 0x1e33, + "keharmenian", + 0x0584, + "kehiragana", + 0x3051, + "kekatakana", + 0x30b1, + "kekatakanahalfwidth", + 0xff79, + "kenarmenian", + 0x056f, + "kesmallkatakana", + 0x30f6, + "kgreenlandic", + 0x0138, + "khabengali", + 0x0996, + "khacyrillic", + 0x0445, + "khadeva", + 0x0916, + "khagujarati", + 0x0a96, + "khagurmukhi", + 0x0a16, + "khaharabic", + 0x062e, + "khahfinalarabic", + 0xfea6, + "khahinitialarabic", + 0xfea7, + "khahmedialarabic", + 0xfea8, + "kheicoptic", + 0x03e7, + "khhadeva", + 0x0959, + "khhagurmukhi", + 0x0a59, + "khieukhacirclekorean", + 0x3278, + "khieukhaparenkorean", + 0x3218, + "khieukhcirclekorean", + 0x326a, + "khieukhkorean", + 0x314b, + "khieukhparenkorean", + 0x320a, + "khokhaithai", + 0x0e02, + "khokhonthai", + 0x0e05, + "khokhuatthai", + 0x0e03, + "khokhwaithai", + 0x0e04, + "khomutthai", + 0x0e5b, + "khook", + 0x0199, + "khorakhangthai", + 0x0e06, + "khzsquare", + 0x3391, + "kihiragana", + 0x304d, + "kikatakana", + 0x30ad, + "kikatakanahalfwidth", + 0xff77, + "kiroguramusquare", + 0x3315, + "kiromeetorusquare", + 0x3316, + "kirosquare", + 0x3314, + "kiyeokacirclekorean", + 0x326e, + "kiyeokaparenkorean", + 0x320e, + "kiyeokcirclekorean", + 0x3260, + "kiyeokkorean", + 0x3131, + "kiyeokparenkorean", + 0x3200, + "kiyeoksioskorean", + 0x3133, + "kjecyrillic", + 0x045c, + "klinebelow", + 0x1e35, + "klsquare", + 0x3398, + "kmcubedsquare", + 0x33a6, + "kmonospace", + 0xff4b, + "kmsquaredsquare", + 0x33a2, + "kohiragana", + 0x3053, + "kohmsquare", + 0x33c0, + "kokaithai", + 0x0e01, + "kokatakana", + 0x30b3, + "kokatakanahalfwidth", + 0xff7a, + "kooposquare", + 0x331e, + "koppacyrillic", + 0x0481, + "koreanstandardsymbol", + 0x327f, + "koroniscmb", + 0x0343, + "kparen", + 0x24a6, + "kpasquare", + 0x33aa, + "ksicyrillic", + 0x046f, + "ktsquare", + 0x33cf, + "kturned", + 0x029e, + "kuhiragana", + 0x304f, + "kukatakana", + 0x30af, + "kukatakanahalfwidth", + 0xff78, + "kvsquare", + 0x33b8, + "kwsquare", + 0x33be, + "l", + 0x006c, + "labengali", + 0x09b2, + "lacute", + 0x013a, + "ladeva", + 0x0932, + "lagujarati", + 0x0ab2, + "lagurmukhi", + 0x0a32, + "lakkhangyaothai", + 0x0e45, + "lamaleffinalarabic", + 0xfefc, + "lamalefhamzaabovefinalarabic", + 0xfef8, + "lamalefhamzaaboveisolatedarabic", + 0xfef7, + "lamalefhamzabelowfinalarabic", + 0xfefa, + "lamalefhamzabelowisolatedarabic", + 0xfef9, + "lamalefisolatedarabic", + 0xfefb, + "lamalefmaddaabovefinalarabic", + 0xfef6, + "lamalefmaddaaboveisolatedarabic", + 0xfef5, + "lamarabic", + 0x0644, + "lambda", + 0x03bb, + "lambdastroke", + 0x019b, + "lamed", + 0x05dc, + "lameddagesh", + 0xfb3c, + "lameddageshhebrew", + 0xfb3c, + "lamedhebrew", + 0x05dc, + "lamfinalarabic", + 0xfede, + "lamhahinitialarabic", + 0xfcca, + "laminitialarabic", + 0xfedf, + "lamjeeminitialarabic", + 0xfcc9, + "lamkhahinitialarabic", + 0xfccb, + "lamlamhehisolatedarabic", + 0xfdf2, + "lammedialarabic", + 0xfee0, + "lammeemhahinitialarabic", + 0xfd88, + "lammeeminitialarabic", + 0xfccc, + "largecircle", + 0x25ef, + "lbar", + 0x019a, + "lbelt", + 0x026c, + "lbopomofo", + 0x310c, + "lcaron", + 0x013e, + "lcedilla", + 0x013c, + "lcircle", + 0x24db, + "lcircumflexbelow", + 0x1e3d, + "lcommaaccent", + 0x013c, + "ldot", + 0x0140, + "ldotaccent", + 0x0140, + "ldotbelow", + 0x1e37, + "ldotbelowmacron", + 0x1e39, + "leftangleabovecmb", + 0x031a, + "lefttackbelowcmb", + 0x0318, + "less", + 0x003c, + "lessequal", + 0x2264, + "lessequalorgreater", + 0x22da, + "lessmonospace", + 0xff1c, + "lessorequivalent", + 0x2272, + "lessorgreater", + 0x2276, + "lessoverequal", + 0x2266, + "lesssmall", + 0xfe64, + "lezh", + 0x026e, + "lfblock", + 0x258c, + "lhookretroflex", + 0x026d, + "lira", + 0x20a4, + "liwnarmenian", + 0x056c, + "lj", + 0x01c9, + "ljecyrillic", + 0x0459, + "ll", + 0xf6c0, + "lladeva", + 0x0933, + "llagujarati", + 0x0ab3, + "llinebelow", + 0x1e3b, + "llladeva", + 0x0934, + "llvocalicbengali", + 0x09e1, + "llvocalicdeva", + 0x0961, + "llvocalicvowelsignbengali", + 0x09e3, + "llvocalicvowelsigndeva", + 0x0963, + "lmiddletilde", + 0x026b, + "lmonospace", + 0xff4c, + "lmsquare", + 0x33d0, + "lochulathai", + 0x0e2c, + "logicaland", + 0x2227, + "logicalnot", + 0x00ac, + "logicalnotreversed", + 0x2310, + "logicalor", + 0x2228, + "lolingthai", + 0x0e25, + "longs", + 0x017f, + "lowlinecenterline", + 0xfe4e, + "lowlinecmb", + 0x0332, + "lowlinedashed", + 0xfe4d, + "lozenge", + 0x25ca, + "lparen", + 0x24a7, + "lslash", + 0x0142, + "lsquare", + 0x2113, + "lsuperior", + 0xf6ee, + "ltshade", + 0x2591, + "luthai", + 0x0e26, + "lvocalicbengali", + 0x098c, + "lvocalicdeva", + 0x090c, + "lvocalicvowelsignbengali", + 0x09e2, + "lvocalicvowelsigndeva", + 0x0962, + "lxsquare", + 0x33d3, + "m", + 0x006d, + "mabengali", + 0x09ae, + "macron", + 0x00af, + "macronbelowcmb", + 0x0331, + "macroncmb", + 0x0304, + "macronlowmod", + 0x02cd, + "macronmonospace", + 0xffe3, + "macute", + 0x1e3f, + "madeva", + 0x092e, + "magujarati", + 0x0aae, + "magurmukhi", + 0x0a2e, + "mahapakhhebrew", + 0x05a4, + "mahapakhlefthebrew", + 0x05a4, + "mahiragana", + 0x307e, + "maichattawalowleftthai", + 0xf895, + "maichattawalowrightthai", + 0xf894, + "maichattawathai", + 0x0e4b, + "maichattawaupperleftthai", + 0xf893, + "maieklowleftthai", + 0xf88c, + "maieklowrightthai", + 0xf88b, + "maiekthai", + 0x0e48, + "maiekupperleftthai", + 0xf88a, + "maihanakatleftthai", + 0xf884, + "maihanakatthai", + 0x0e31, + "maitaikhuleftthai", + 0xf889, + "maitaikhuthai", + 0x0e47, + "maitholowleftthai", + 0xf88f, + "maitholowrightthai", + 0xf88e, + "maithothai", + 0x0e49, + "maithoupperleftthai", + 0xf88d, + "maitrilowleftthai", + 0xf892, + "maitrilowrightthai", + 0xf891, + "maitrithai", + 0x0e4a, + "maitriupperleftthai", + 0xf890, + "maiyamokthai", + 0x0e46, + "makatakana", + 0x30de, + "makatakanahalfwidth", + 0xff8f, + "male", + 0x2642, + "mansyonsquare", + 0x3347, + "maqafhebrew", + 0x05be, + "mars", + 0x2642, + "masoracirclehebrew", + 0x05af, + "masquare", + 0x3383, + "mbopomofo", + 0x3107, + "mbsquare", + 0x33d4, + "mcircle", + 0x24dc, + "mcubedsquare", + 0x33a5, + "mdotaccent", + 0x1e41, + "mdotbelow", + 0x1e43, + "meemarabic", + 0x0645, + "meemfinalarabic", + 0xfee2, + "meeminitialarabic", + 0xfee3, + "meemmedialarabic", + 0xfee4, + "meemmeeminitialarabic", + 0xfcd1, + "meemmeemisolatedarabic", + 0xfc48, + "meetorusquare", + 0x334d, + "mehiragana", + 0x3081, + "meizierasquare", + 0x337e, + "mekatakana", + 0x30e1, + "mekatakanahalfwidth", + 0xff92, + "mem", + 0x05de, + "memdagesh", + 0xfb3e, + "memdageshhebrew", + 0xfb3e, + "memhebrew", + 0x05de, + "menarmenian", + 0x0574, + "merkhahebrew", + 0x05a5, + "merkhakefulahebrew", + 0x05a6, + "merkhakefulalefthebrew", + 0x05a6, + "merkhalefthebrew", + 0x05a5, + "mhook", + 0x0271, + "mhzsquare", + 0x3392, + "middledotkatakanahalfwidth", + 0xff65, + "middot", + 0x00b7, + "mieumacirclekorean", + 0x3272, + "mieumaparenkorean", + 0x3212, + "mieumcirclekorean", + 0x3264, + "mieumkorean", + 0x3141, + "mieumpansioskorean", + 0x3170, + "mieumparenkorean", + 0x3204, + "mieumpieupkorean", + 0x316e, + "mieumsioskorean", + 0x316f, + "mihiragana", + 0x307f, + "mikatakana", + 0x30df, + "mikatakanahalfwidth", + 0xff90, + "minus", + 0x2212, + "minusbelowcmb", + 0x0320, + "minuscircle", + 0x2296, + "minusmod", + 0x02d7, + "minusplus", + 0x2213, + "minute", + 0x2032, + "miribaarusquare", + 0x334a, + "mirisquare", + 0x3349, + "mlonglegturned", + 0x0270, + "mlsquare", + 0x3396, + "mmcubedsquare", + 0x33a3, + "mmonospace", + 0xff4d, + "mmsquaredsquare", + 0x339f, + "mohiragana", + 0x3082, + "mohmsquare", + 0x33c1, + "mokatakana", + 0x30e2, + "mokatakanahalfwidth", + 0xff93, + "molsquare", + 0x33d6, + "momathai", + 0x0e21, + "moverssquare", + 0x33a7, + "moverssquaredsquare", + 0x33a8, + "mparen", + 0x24a8, + "mpasquare", + 0x33ab, + "mssquare", + 0x33b3, + "msuperior", + 0xf6ef, + "mturned", + 0x026f, + "mu", + 0x00b5, + "mu1", + 0x00b5, + "muasquare", + 0x3382, + "muchgreater", + 0x226b, + "muchless", + 0x226a, + "mufsquare", + 0x338c, + "mugreek", + 0x03bc, + "mugsquare", + 0x338d, + "muhiragana", + 0x3080, + "mukatakana", + 0x30e0, + "mukatakanahalfwidth", + 0xff91, + "mulsquare", + 0x3395, + "multiply", + 0x00d7, + "mumsquare", + 0x339b, + "munahhebrew", + 0x05a3, + "munahlefthebrew", + 0x05a3, + "musicalnote", + 0x266a, + "musicalnotedbl", + 0x266b, + "musicflatsign", + 0x266d, + "musicsharpsign", + 0x266f, + "mussquare", + 0x33b2, + "muvsquare", + 0x33b6, + "muwsquare", + 0x33bc, + "mvmegasquare", + 0x33b9, + "mvsquare", + 0x33b7, + "mwmegasquare", + 0x33bf, + "mwsquare", + 0x33bd, + "n", + 0x006e, + "nabengali", + 0x09a8, + "nabla", + 0x2207, + "nacute", + 0x0144, + "nadeva", + 0x0928, + "nagujarati", + 0x0aa8, + "nagurmukhi", + 0x0a28, + "nahiragana", + 0x306a, + "nakatakana", + 0x30ca, + "nakatakanahalfwidth", + 0xff85, + "napostrophe", + 0x0149, + "nasquare", + 0x3381, + "nbopomofo", + 0x310b, + "nbspace", + 0x00a0, + "ncaron", + 0x0148, + "ncedilla", + 0x0146, + "ncircle", + 0x24dd, + "ncircumflexbelow", + 0x1e4b, + "ncommaaccent", + 0x0146, + "ndotaccent", + 0x1e45, + "ndotbelow", + 0x1e47, + "nehiragana", + 0x306d, + "nekatakana", + 0x30cd, + "nekatakanahalfwidth", + 0xff88, + "newsheqelsign", + 0x20aa, + "nfsquare", + 0x338b, + "ngabengali", + 0x0999, + "ngadeva", + 0x0919, + "ngagujarati", + 0x0a99, + "ngagurmukhi", + 0x0a19, + "ngonguthai", + 0x0e07, + "nhiragana", + 0x3093, + "nhookleft", + 0x0272, + "nhookretroflex", + 0x0273, + "nieunacirclekorean", + 0x326f, + "nieunaparenkorean", + 0x320f, + "nieuncieuckorean", + 0x3135, + "nieuncirclekorean", + 0x3261, + "nieunhieuhkorean", + 0x3136, + "nieunkorean", + 0x3134, + "nieunpansioskorean", + 0x3168, + "nieunparenkorean", + 0x3201, + "nieunsioskorean", + 0x3167, + "nieuntikeutkorean", + 0x3166, + "nihiragana", + 0x306b, + "nikatakana", + 0x30cb, + "nikatakanahalfwidth", + 0xff86, + "nikhahitleftthai", + 0xf899, + "nikhahitthai", + 0x0e4d, + "nine", + 0x0039, + "ninearabic", + 0x0669, + "ninebengali", + 0x09ef, + "ninecircle", + 0x2468, + "ninecircleinversesansserif", + 0x2792, + "ninedeva", + 0x096f, + "ninegujarati", + 0x0aef, + "ninegurmukhi", + 0x0a6f, + "ninehackarabic", + 0x0669, + "ninehangzhou", + 0x3029, + "nineideographicparen", + 0x3228, + "nineinferior", + 0x2089, + "ninemonospace", + 0xff19, + "nineoldstyle", + 0xf739, + "nineparen", + 0x247c, + "nineperiod", + 0x2490, + "ninepersian", + 0x06f9, + "nineroman", + 0x2178, + "ninesuperior", + 0x2079, + "nineteencircle", + 0x2472, + "nineteenparen", + 0x2486, + "nineteenperiod", + 0x249a, + "ninethai", + 0x0e59, + "nj", + 0x01cc, + "njecyrillic", + 0x045a, + "nkatakana", + 0x30f3, + "nkatakanahalfwidth", + 0xff9d, + "nlegrightlong", + 0x019e, + "nlinebelow", + 0x1e49, + "nmonospace", + 0xff4e, + "nmsquare", + 0x339a, + "nnabengali", + 0x09a3, + "nnadeva", + 0x0923, + "nnagujarati", + 0x0aa3, + "nnagurmukhi", + 0x0a23, + "nnnadeva", + 0x0929, + "nohiragana", + 0x306e, + "nokatakana", + 0x30ce, + "nokatakanahalfwidth", + 0xff89, + "nonbreakingspace", + 0x00a0, + "nonenthai", + 0x0e13, + "nonuthai", + 0x0e19, + "noonarabic", + 0x0646, + "noonfinalarabic", + 0xfee6, + "noonghunnaarabic", + 0x06ba, + "noonghunnafinalarabic", + 0xfb9f, + "nooninitialarabic", + 0xfee7, + "noonjeeminitialarabic", + 0xfcd2, + "noonjeemisolatedarabic", + 0xfc4b, + "noonmedialarabic", + 0xfee8, + "noonmeeminitialarabic", + 0xfcd5, + "noonmeemisolatedarabic", + 0xfc4e, + "noonnoonfinalarabic", + 0xfc8d, + "notcontains", + 0x220c, + "notelement", + 0x2209, + "notelementof", + 0x2209, + "notequal", + 0x2260, + "notgreater", + 0x226f, + "notgreaternorequal", + 0x2271, + "notgreaternorless", + 0x2279, + "notidentical", + 0x2262, + "notless", + 0x226e, + "notlessnorequal", + 0x2270, + "notparallel", + 0x2226, + "notprecedes", + 0x2280, + "notsubset", + 0x2284, + "notsucceeds", + 0x2281, + "notsuperset", + 0x2285, + "nowarmenian", + 0x0576, + "nparen", + 0x24a9, + "nssquare", + 0x33b1, + "nsuperior", + 0x207f, + "ntilde", + 0x00f1, + "nu", + 0x03bd, + "nuhiragana", + 0x306c, + "nukatakana", + 0x30cc, + "nukatakanahalfwidth", + 0xff87, + "nuktabengali", + 0x09bc, + "nuktadeva", + 0x093c, + "nuktagujarati", + 0x0abc, + "nuktagurmukhi", + 0x0a3c, + "numbersign", + 0x0023, + "numbersignmonospace", + 0xff03, + "numbersignsmall", + 0xfe5f, + "numeralsigngreek", + 0x0374, + "numeralsignlowergreek", + 0x0375, + "numero", + 0x2116, + "nun", + 0x05e0, + "nundagesh", + 0xfb40, + "nundageshhebrew", + 0xfb40, + "nunhebrew", + 0x05e0, + "nvsquare", + 0x33b5, + "nwsquare", + 0x33bb, + "nyabengali", + 0x099e, + "nyadeva", + 0x091e, + "nyagujarati", + 0x0a9e, + "nyagurmukhi", + 0x0a1e, + "o", + 0x006f, + "oacute", + 0x00f3, + "oangthai", + 0x0e2d, + "obarred", + 0x0275, + "obarredcyrillic", + 0x04e9, + "obarreddieresiscyrillic", + 0x04eb, + "obengali", + 0x0993, + "obopomofo", + 0x311b, + "obreve", + 0x014f, + "ocandradeva", + 0x0911, + "ocandragujarati", + 0x0a91, + "ocandravowelsigndeva", + 0x0949, + "ocandravowelsigngujarati", + 0x0ac9, + "ocaron", + 0x01d2, + "ocircle", + 0x24de, + "ocircumflex", + 0x00f4, + "ocircumflexacute", + 0x1ed1, + "ocircumflexdotbelow", + 0x1ed9, + "ocircumflexgrave", + 0x1ed3, + "ocircumflexhookabove", + 0x1ed5, + "ocircumflextilde", + 0x1ed7, + "ocyrillic", + 0x043e, + "odblacute", + 0x0151, + "odblgrave", + 0x020d, + "odeva", + 0x0913, + "odieresis", + 0x00f6, + "odieresiscyrillic", + 0x04e7, + "odotbelow", + 0x1ecd, + "oe", + 0x0153, + "oekorean", + 0x315a, + "ogonek", + 0x02db, + "ogonekcmb", + 0x0328, + "ograve", + 0x00f2, + "ogujarati", + 0x0a93, + "oharmenian", + 0x0585, + "ohiragana", + 0x304a, + "ohookabove", + 0x1ecf, + "ohorn", + 0x01a1, + "ohornacute", + 0x1edb, + "ohorndotbelow", + 0x1ee3, + "ohorngrave", + 0x1edd, + "ohornhookabove", + 0x1edf, + "ohorntilde", + 0x1ee1, + "ohungarumlaut", + 0x0151, + "oi", + 0x01a3, + "oinvertedbreve", + 0x020f, + "okatakana", + 0x30aa, + "okatakanahalfwidth", + 0xff75, + "okorean", + 0x3157, + "olehebrew", + 0x05ab, + "omacron", + 0x014d, + "omacronacute", + 0x1e53, + "omacrongrave", + 0x1e51, + "omdeva", + 0x0950, + "omega", + 0x03c9, + "omega1", + 0x03d6, + "omegacyrillic", + 0x0461, + "omegalatinclosed", + 0x0277, + "omegaroundcyrillic", + 0x047b, + "omegatitlocyrillic", + 0x047d, + "omegatonos", + 0x03ce, + "omgujarati", + 0x0ad0, + "omicron", + 0x03bf, + "omicrontonos", + 0x03cc, + "omonospace", + 0xff4f, + "one", + 0x0031, + "onearabic", + 0x0661, + "onebengali", + 0x09e7, + "onecircle", + 0x2460, + "onecircleinversesansserif", + 0x278a, + "onedeva", + 0x0967, + "onedotenleader", + 0x2024, + "oneeighth", + 0x215b, + "onefitted", + 0xf6dc, + "onegujarati", + 0x0ae7, + "onegurmukhi", + 0x0a67, + "onehackarabic", + 0x0661, + "onehalf", + 0x00bd, + "onehangzhou", + 0x3021, + "oneideographicparen", + 0x3220, + "oneinferior", + 0x2081, + "onemonospace", + 0xff11, + "onenumeratorbengali", + 0x09f4, + "oneoldstyle", + 0xf731, + "oneparen", + 0x2474, + "oneperiod", + 0x2488, + "onepersian", + 0x06f1, + "onequarter", + 0x00bc, + "oneroman", + 0x2170, + "onesuperior", + 0x00b9, + "onethai", + 0x0e51, + "onethird", + 0x2153, + "oogonek", + 0x01eb, + "oogonekmacron", + 0x01ed, + "oogurmukhi", + 0x0a13, + "oomatragurmukhi", + 0x0a4b, + "oopen", + 0x0254, + "oparen", + 0x24aa, + "openbullet", + 0x25e6, + "option", + 0x2325, + "ordfeminine", + 0x00aa, + "ordmasculine", + 0x00ba, + "orthogonal", + 0x221f, + "oshortdeva", + 0x0912, + "oshortvowelsigndeva", + 0x094a, + "oslash", + 0x00f8, + "oslashacute", + 0x01ff, + "osmallhiragana", + 0x3049, + "osmallkatakana", + 0x30a9, + "osmallkatakanahalfwidth", + 0xff6b, + "ostrokeacute", + 0x01ff, + "osuperior", + 0xf6f0, + "otcyrillic", + 0x047f, + "otilde", + 0x00f5, + "otildeacute", + 0x1e4d, + "otildedieresis", + 0x1e4f, + "oubopomofo", + 0x3121, + "overline", + 0x203e, + "overlinecenterline", + 0xfe4a, + "overlinecmb", + 0x0305, + "overlinedashed", + 0xfe49, + "overlinedblwavy", + 0xfe4c, + "overlinewavy", + 0xfe4b, + "overscore", + 0x00af, + "ovowelsignbengali", + 0x09cb, + "ovowelsigndeva", + 0x094b, + "ovowelsigngujarati", + 0x0acb, + "p", + 0x0070, + "paampssquare", + 0x3380, + "paasentosquare", + 0x332b, + "pabengali", + 0x09aa, + "pacute", + 0x1e55, + "padeva", + 0x092a, + "pagedown", + 0x21df, + "pageup", + 0x21de, + "pagujarati", + 0x0aaa, + "pagurmukhi", + 0x0a2a, + "pahiragana", + 0x3071, + "paiyannoithai", + 0x0e2f, + "pakatakana", + 0x30d1, + "palatalizationcyrilliccmb", + 0x0484, + "palochkacyrillic", + 0x04c0, + "pansioskorean", + 0x317f, + "paragraph", + 0x00b6, + "parallel", + 0x2225, + "parenleft", + 0x0028, + "parenleftaltonearabic", + 0xfd3e, + "parenleftbt", + 0xf8ed, + "parenleftex", + 0xf8ec, + "parenleftinferior", + 0x208d, + "parenleftmonospace", + 0xff08, + "parenleftsmall", + 0xfe59, + "parenleftsuperior", + 0x207d, + "parenlefttp", + 0xf8eb, + "parenleftvertical", + 0xfe35, + "parenright", + 0x0029, + "parenrightaltonearabic", + 0xfd3f, + "parenrightbt", + 0xf8f8, + "parenrightex", + 0xf8f7, + "parenrightinferior", + 0x208e, + "parenrightmonospace", + 0xff09, + "parenrightsmall", + 0xfe5a, + "parenrightsuperior", + 0x207e, + "parenrighttp", + 0xf8f6, + "parenrightvertical", + 0xfe36, + "partialdiff", + 0x2202, + "paseqhebrew", + 0x05c0, + "pashtahebrew", + 0x0599, + "pasquare", + 0x33a9, + "patah", + 0x05b7, + "patah11", + 0x05b7, + "patah1d", + 0x05b7, + "patah2a", + 0x05b7, + "patahhebrew", + 0x05b7, + "patahnarrowhebrew", + 0x05b7, + "patahquarterhebrew", + 0x05b7, + "patahwidehebrew", + 0x05b7, + "pazerhebrew", + 0x05a1, + "pbopomofo", + 0x3106, + "pcircle", + 0x24df, + "pdotaccent", + 0x1e57, + "pe", + 0x05e4, + "pecyrillic", + 0x043f, + "pedagesh", + 0xfb44, + "pedageshhebrew", + 0xfb44, + "peezisquare", + 0x333b, + "pefinaldageshhebrew", + 0xfb43, + "peharabic", + 0x067e, + "peharmenian", + 0x057a, + "pehebrew", + 0x05e4, + "pehfinalarabic", + 0xfb57, + "pehinitialarabic", + 0xfb58, + "pehiragana", + 0x307a, + "pehmedialarabic", + 0xfb59, + "pekatakana", + 0x30da, + "pemiddlehookcyrillic", + 0x04a7, + "perafehebrew", + 0xfb4e, + "percent", + 0x0025, + "percentarabic", + 0x066a, + "percentmonospace", + 0xff05, + "percentsmall", + 0xfe6a, + "period", + 0x002e, + "periodarmenian", + 0x0589, + "periodcentered", + 0x00b7, + "periodhalfwidth", + 0xff61, + "periodinferior", + 0xf6e7, + "periodmonospace", + 0xff0e, + "periodsmall", + 0xfe52, + "periodsuperior", + 0xf6e8, + "perispomenigreekcmb", + 0x0342, + "perpendicular", + 0x22a5, + "perthousand", + 0x2030, + "peseta", + 0x20a7, + "pfsquare", + 0x338a, + "phabengali", + 0x09ab, + "phadeva", + 0x092b, + "phagujarati", + 0x0aab, + "phagurmukhi", + 0x0a2b, + "phi", + 0x03c6, + "phi1", + 0x03d5, + "phieuphacirclekorean", + 0x327a, + "phieuphaparenkorean", + 0x321a, + "phieuphcirclekorean", + 0x326c, + "phieuphkorean", + 0x314d, + "phieuphparenkorean", + 0x320c, + "philatin", + 0x0278, + "phinthuthai", + 0x0e3a, + "phisymbolgreek", + 0x03d5, + "phook", + 0x01a5, + "phophanthai", + 0x0e1e, + "phophungthai", + 0x0e1c, + "phosamphaothai", + 0x0e20, + "pi", + 0x03c0, + "pieupacirclekorean", + 0x3273, + "pieupaparenkorean", + 0x3213, + "pieupcieuckorean", + 0x3176, + "pieupcirclekorean", + 0x3265, + "pieupkiyeokkorean", + 0x3172, + "pieupkorean", + 0x3142, + "pieupparenkorean", + 0x3205, + "pieupsioskiyeokkorean", + 0x3174, + "pieupsioskorean", + 0x3144, + "pieupsiostikeutkorean", + 0x3175, + "pieupthieuthkorean", + 0x3177, + "pieuptikeutkorean", + 0x3173, + "pihiragana", + 0x3074, + "pikatakana", + 0x30d4, + "pisymbolgreek", + 0x03d6, + "piwrarmenian", + 0x0583, + "plus", + 0x002b, + "plusbelowcmb", + 0x031f, + "pluscircle", + 0x2295, + "plusminus", + 0x00b1, + "plusmod", + 0x02d6, + "plusmonospace", + 0xff0b, + "plussmall", + 0xfe62, + "plussuperior", + 0x207a, + "pmonospace", + 0xff50, + "pmsquare", + 0x33d8, + "pohiragana", + 0x307d, + "pointingindexdownwhite", + 0x261f, + "pointingindexleftwhite", + 0x261c, + "pointingindexrightwhite", + 0x261e, + "pointingindexupwhite", + 0x261d, + "pokatakana", + 0x30dd, + "poplathai", + 0x0e1b, + "postalmark", + 0x3012, + "postalmarkface", + 0x3020, + "pparen", + 0x24ab, + "precedes", + 0x227a, + "prescription", + 0x211e, + "primemod", + 0x02b9, + "primereversed", + 0x2035, + "product", + 0x220f, + "projective", + 0x2305, + "prolongedkana", + 0x30fc, + "propellor", + 0x2318, + "propersubset", + 0x2282, + "propersuperset", + 0x2283, + "proportion", + 0x2237, + "proportional", + 0x221d, + "psi", + 0x03c8, + "psicyrillic", + 0x0471, + "psilipneumatacyrilliccmb", + 0x0486, + "pssquare", + 0x33b0, + "puhiragana", + 0x3077, + "pukatakana", + 0x30d7, + "pvsquare", + 0x33b4, + "pwsquare", + 0x33ba, + "q", + 0x0071, + "qadeva", + 0x0958, + "qadmahebrew", + 0x05a8, + "qafarabic", + 0x0642, + "qaffinalarabic", + 0xfed6, + "qafinitialarabic", + 0xfed7, + "qafmedialarabic", + 0xfed8, + "qamats", + 0x05b8, + "qamats10", + 0x05b8, + "qamats1a", + 0x05b8, + "qamats1c", + 0x05b8, + "qamats27", + 0x05b8, + "qamats29", + 0x05b8, + "qamats33", + 0x05b8, + "qamatsde", + 0x05b8, + "qamatshebrew", + 0x05b8, + "qamatsnarrowhebrew", + 0x05b8, + "qamatsqatanhebrew", + 0x05b8, + "qamatsqatannarrowhebrew", + 0x05b8, + "qamatsqatanquarterhebrew", + 0x05b8, + "qamatsqatanwidehebrew", + 0x05b8, + "qamatsquarterhebrew", + 0x05b8, + "qamatswidehebrew", + 0x05b8, + "qarneyparahebrew", + 0x059f, + "qbopomofo", + 0x3111, + "qcircle", + 0x24e0, + "qhook", + 0x02a0, + "qmonospace", + 0xff51, + "qof", + 0x05e7, + "qofdagesh", + 0xfb47, + "qofdageshhebrew", + 0xfb47, + "qofhebrew", + 0x05e7, + "qparen", + 0x24ac, + "quarternote", + 0x2669, + "qubuts", + 0x05bb, + "qubuts18", + 0x05bb, + "qubuts25", + 0x05bb, + "qubuts31", + 0x05bb, + "qubutshebrew", + 0x05bb, + "qubutsnarrowhebrew", + 0x05bb, + "qubutsquarterhebrew", + 0x05bb, + "qubutswidehebrew", + 0x05bb, + "question", + 0x003f, + "questionarabic", + 0x061f, + "questionarmenian", + 0x055e, + "questiondown", + 0x00bf, + "questiondownsmall", + 0xf7bf, + "questiongreek", + 0x037e, + "questionmonospace", + 0xff1f, + "questionsmall", + 0xf73f, + "quotedbl", + 0x0022, + "quotedblbase", + 0x201e, + "quotedblleft", + 0x201c, + "quotedblmonospace", + 0xff02, + "quotedblprime", + 0x301e, + "quotedblprimereversed", + 0x301d, + "quotedblright", + 0x201d, + "quoteleft", + 0x2018, + "quoteleftreversed", + 0x201b, + "quotereversed", + 0x201b, + "quoteright", + 0x2019, + "quoterightn", + 0x0149, + "quotesinglbase", + 0x201a, + "quotesingle", + 0x0027, + "quotesinglemonospace", + 0xff07, + "r", + 0x0072, + "raarmenian", + 0x057c, + "rabengali", + 0x09b0, + "racute", + 0x0155, + "radeva", + 0x0930, + "radical", + 0x221a, + "radicalex", + 0xf8e5, + "radoverssquare", + 0x33ae, + "radoverssquaredsquare", + 0x33af, + "radsquare", + 0x33ad, + "rafe", + 0x05bf, + "rafehebrew", + 0x05bf, + "ragujarati", + 0x0ab0, + "ragurmukhi", + 0x0a30, + "rahiragana", + 0x3089, + "rakatakana", + 0x30e9, + "rakatakanahalfwidth", + 0xff97, + "ralowerdiagonalbengali", + 0x09f1, + "ramiddlediagonalbengali", + 0x09f0, + "ramshorn", + 0x0264, + "ratio", + 0x2236, + "rbopomofo", + 0x3116, + "rcaron", + 0x0159, + "rcedilla", + 0x0157, + "rcircle", + 0x24e1, + "rcommaaccent", + 0x0157, + "rdblgrave", + 0x0211, + "rdotaccent", + 0x1e59, + "rdotbelow", + 0x1e5b, + "rdotbelowmacron", + 0x1e5d, + "referencemark", + 0x203b, + "reflexsubset", + 0x2286, + "reflexsuperset", + 0x2287, + "registered", + 0x00ae, + "registersans", + 0xf8e8, + "registerserif", + 0xf6da, + "reharabic", + 0x0631, + "reharmenian", + 0x0580, + "rehfinalarabic", + 0xfeae, + "rehiragana", + 0x308c, + "rekatakana", + 0x30ec, + "rekatakanahalfwidth", + 0xff9a, + "resh", + 0x05e8, + "reshdageshhebrew", + 0xfb48, + "reshhebrew", + 0x05e8, + "reversedtilde", + 0x223d, + "reviahebrew", + 0x0597, + "reviamugrashhebrew", + 0x0597, + "revlogicalnot", + 0x2310, + "rfishhook", + 0x027e, + "rfishhookreversed", + 0x027f, + "rhabengali", + 0x09dd, + "rhadeva", + 0x095d, + "rho", + 0x03c1, + "rhook", + 0x027d, + "rhookturned", + 0x027b, + "rhookturnedsuperior", + 0x02b5, + "rhosymbolgreek", + 0x03f1, + "rhotichookmod", + 0x02de, + "rieulacirclekorean", + 0x3271, + "rieulaparenkorean", + 0x3211, + "rieulcirclekorean", + 0x3263, + "rieulhieuhkorean", + 0x3140, + "rieulkiyeokkorean", + 0x313a, + "rieulkiyeoksioskorean", + 0x3169, + "rieulkorean", + 0x3139, + "rieulmieumkorean", + 0x313b, + "rieulpansioskorean", + 0x316c, + "rieulparenkorean", + 0x3203, + "rieulphieuphkorean", + 0x313f, + "rieulpieupkorean", + 0x313c, + "rieulpieupsioskorean", + 0x316b, + "rieulsioskorean", + 0x313d, + "rieulthieuthkorean", + 0x313e, + "rieultikeutkorean", + 0x316a, + "rieulyeorinhieuhkorean", + 0x316d, + "rightangle", + 0x221f, + "righttackbelowcmb", + 0x0319, + "righttriangle", + 0x22bf, + "rihiragana", + 0x308a, + "rikatakana", + 0x30ea, + "rikatakanahalfwidth", + 0xff98, + "ring", + 0x02da, + "ringbelowcmb", + 0x0325, + "ringcmb", + 0x030a, + "ringhalfleft", + 0x02bf, + "ringhalfleftarmenian", + 0x0559, + "ringhalfleftbelowcmb", + 0x031c, + "ringhalfleftcentered", + 0x02d3, + "ringhalfright", + 0x02be, + "ringhalfrightbelowcmb", + 0x0339, + "ringhalfrightcentered", + 0x02d2, + "rinvertedbreve", + 0x0213, + "rittorusquare", + 0x3351, + "rlinebelow", + 0x1e5f, + "rlongleg", + 0x027c, + "rlonglegturned", + 0x027a, + "rmonospace", + 0xff52, + "rohiragana", + 0x308d, + "rokatakana", + 0x30ed, + "rokatakanahalfwidth", + 0xff9b, + "roruathai", + 0x0e23, + "rparen", + 0x24ad, + "rrabengali", + 0x09dc, + "rradeva", + 0x0931, + "rragurmukhi", + 0x0a5c, + "rreharabic", + 0x0691, + "rrehfinalarabic", + 0xfb8d, + "rrvocalicbengali", + 0x09e0, + "rrvocalicdeva", + 0x0960, + "rrvocalicgujarati", + 0x0ae0, + "rrvocalicvowelsignbengali", + 0x09c4, + "rrvocalicvowelsigndeva", + 0x0944, + "rrvocalicvowelsigngujarati", + 0x0ac4, + "rsuperior", + 0xf6f1, + "rtblock", + 0x2590, + "rturned", + 0x0279, + "rturnedsuperior", + 0x02b4, + "ruhiragana", + 0x308b, + "rukatakana", + 0x30eb, + "rukatakanahalfwidth", + 0xff99, + "rupeemarkbengali", + 0x09f2, + "rupeesignbengali", + 0x09f3, + "rupiah", + 0xf6dd, + "ruthai", + 0x0e24, + "rvocalicbengali", + 0x098b, + "rvocalicdeva", + 0x090b, + "rvocalicgujarati", + 0x0a8b, + "rvocalicvowelsignbengali", + 0x09c3, + "rvocalicvowelsigndeva", + 0x0943, + "rvocalicvowelsigngujarati", + 0x0ac3, + "s", + 0x0073, + "sabengali", + 0x09b8, + "sacute", + 0x015b, + "sacutedotaccent", + 0x1e65, + "sadarabic", + 0x0635, + "sadeva", + 0x0938, + "sadfinalarabic", + 0xfeba, + "sadinitialarabic", + 0xfebb, + "sadmedialarabic", + 0xfebc, + "sagujarati", + 0x0ab8, + "sagurmukhi", + 0x0a38, + "sahiragana", + 0x3055, + "sakatakana", + 0x30b5, + "sakatakanahalfwidth", + 0xff7b, + "sallallahoualayhewasallamarabic", + 0xfdfa, + "samekh", + 0x05e1, + "samekhdagesh", + 0xfb41, + "samekhdageshhebrew", + 0xfb41, + "samekhhebrew", + 0x05e1, + "saraaathai", + 0x0e32, + "saraaethai", + 0x0e41, + "saraaimaimalaithai", + 0x0e44, + "saraaimaimuanthai", + 0x0e43, + "saraamthai", + 0x0e33, + "saraathai", + 0x0e30, + "saraethai", + 0x0e40, + "saraiileftthai", + 0xf886, + "saraiithai", + 0x0e35, + "saraileftthai", + 0xf885, + "saraithai", + 0x0e34, + "saraothai", + 0x0e42, + "saraueeleftthai", + 0xf888, + "saraueethai", + 0x0e37, + "saraueleftthai", + 0xf887, + "sarauethai", + 0x0e36, + "sarauthai", + 0x0e38, + "sarauuthai", + 0x0e39, + "sbopomofo", + 0x3119, + "scaron", + 0x0161, + "scarondotaccent", + 0x1e67, + "scedilla", + 0x015f, + "schwa", + 0x0259, + "schwacyrillic", + 0x04d9, + "schwadieresiscyrillic", + 0x04db, + "schwahook", + 0x025a, + "scircle", + 0x24e2, + "scircumflex", + 0x015d, + "scommaaccent", + 0x0219, + "sdotaccent", + 0x1e61, + "sdotbelow", + 0x1e63, + "sdotbelowdotaccent", + 0x1e69, + "seagullbelowcmb", + 0x033c, + "second", + 0x2033, + "secondtonechinese", + 0x02ca, + "section", + 0x00a7, + "seenarabic", + 0x0633, + "seenfinalarabic", + 0xfeb2, + "seeninitialarabic", + 0xfeb3, + "seenmedialarabic", + 0xfeb4, + "segol", + 0x05b6, + "segol13", + 0x05b6, + "segol1f", + 0x05b6, + "segol2c", + 0x05b6, + "segolhebrew", + 0x05b6, + "segolnarrowhebrew", + 0x05b6, + "segolquarterhebrew", + 0x05b6, + "segoltahebrew", + 0x0592, + "segolwidehebrew", + 0x05b6, + "seharmenian", + 0x057d, + "sehiragana", + 0x305b, + "sekatakana", + 0x30bb, + "sekatakanahalfwidth", + 0xff7e, + "semicolon", + 0x003b, + "semicolonarabic", + 0x061b, + "semicolonmonospace", + 0xff1b, + "semicolonsmall", + 0xfe54, + "semivoicedmarkkana", + 0x309c, + "semivoicedmarkkanahalfwidth", + 0xff9f, + "sentisquare", + 0x3322, + "sentosquare", + 0x3323, + "seven", + 0x0037, + "sevenarabic", + 0x0667, + "sevenbengali", + 0x09ed, + "sevencircle", + 0x2466, + "sevencircleinversesansserif", + 0x2790, + "sevendeva", + 0x096d, + "seveneighths", + 0x215e, + "sevengujarati", + 0x0aed, + "sevengurmukhi", + 0x0a6d, + "sevenhackarabic", + 0x0667, + "sevenhangzhou", + 0x3027, + "sevenideographicparen", + 0x3226, + "seveninferior", + 0x2087, + "sevenmonospace", + 0xff17, + "sevenoldstyle", + 0xf737, + "sevenparen", + 0x247a, + "sevenperiod", + 0x248e, + "sevenpersian", + 0x06f7, + "sevenroman", + 0x2176, + "sevensuperior", + 0x2077, + "seventeencircle", + 0x2470, + "seventeenparen", + 0x2484, + "seventeenperiod", + 0x2498, + "seventhai", + 0x0e57, + "sfthyphen", + 0x00ad, + "shaarmenian", + 0x0577, + "shabengali", + 0x09b6, + "shacyrillic", + 0x0448, + "shaddaarabic", + 0x0651, + "shaddadammaarabic", + 0xfc61, + "shaddadammatanarabic", + 0xfc5e, + "shaddafathaarabic", + 0xfc60, + "shaddakasraarabic", + 0xfc62, + "shaddakasratanarabic", + 0xfc5f, + "shade", + 0x2592, + "shadedark", + 0x2593, + "shadelight", + 0x2591, + "shademedium", + 0x2592, + "shadeva", + 0x0936, + "shagujarati", + 0x0ab6, + "shagurmukhi", + 0x0a36, + "shalshelethebrew", + 0x0593, + "shbopomofo", + 0x3115, + "shchacyrillic", + 0x0449, + "sheenarabic", + 0x0634, + "sheenfinalarabic", + 0xfeb6, + "sheeninitialarabic", + 0xfeb7, + "sheenmedialarabic", + 0xfeb8, + "sheicoptic", + 0x03e3, + "sheqel", + 0x20aa, + "sheqelhebrew", + 0x20aa, + "sheva", + 0x05b0, + "sheva115", + 0x05b0, + "sheva15", + 0x05b0, + "sheva22", + 0x05b0, + "sheva2e", + 0x05b0, + "shevahebrew", + 0x05b0, + "shevanarrowhebrew", + 0x05b0, + "shevaquarterhebrew", + 0x05b0, + "shevawidehebrew", + 0x05b0, + "shhacyrillic", + 0x04bb, + "shimacoptic", + 0x03ed, + "shin", + 0x05e9, + "shindagesh", + 0xfb49, + "shindageshhebrew", + 0xfb49, + "shindageshshindot", + 0xfb2c, + "shindageshshindothebrew", + 0xfb2c, + "shindageshsindot", + 0xfb2d, + "shindageshsindothebrew", + 0xfb2d, + "shindothebrew", + 0x05c1, + "shinhebrew", + 0x05e9, + "shinshindot", + 0xfb2a, + "shinshindothebrew", + 0xfb2a, + "shinsindot", + 0xfb2b, + "shinsindothebrew", + 0xfb2b, + "shook", + 0x0282, + "sigma", + 0x03c3, + "sigma1", + 0x03c2, + "sigmafinal", + 0x03c2, + "sigmalunatesymbolgreek", + 0x03f2, + "sihiragana", + 0x3057, + "sikatakana", + 0x30b7, + "sikatakanahalfwidth", + 0xff7c, + "siluqhebrew", + 0x05bd, + "siluqlefthebrew", + 0x05bd, + "similar", + 0x223c, + "sindothebrew", + 0x05c2, + "siosacirclekorean", + 0x3274, + "siosaparenkorean", + 0x3214, + "sioscieuckorean", + 0x317e, + "sioscirclekorean", + 0x3266, + "sioskiyeokkorean", + 0x317a, + "sioskorean", + 0x3145, + "siosnieunkorean", + 0x317b, + "siosparenkorean", + 0x3206, + "siospieupkorean", + 0x317d, + "siostikeutkorean", + 0x317c, + "six", + 0x0036, + "sixarabic", + 0x0666, + "sixbengali", + 0x09ec, + "sixcircle", + 0x2465, + "sixcircleinversesansserif", + 0x278f, + "sixdeva", + 0x096c, + "sixgujarati", + 0x0aec, + "sixgurmukhi", + 0x0a6c, + "sixhackarabic", + 0x0666, + "sixhangzhou", + 0x3026, + "sixideographicparen", + 0x3225, + "sixinferior", + 0x2086, + "sixmonospace", + 0xff16, + "sixoldstyle", + 0xf736, + "sixparen", + 0x2479, + "sixperiod", + 0x248d, + "sixpersian", + 0x06f6, + "sixroman", + 0x2175, + "sixsuperior", + 0x2076, + "sixteencircle", + 0x246f, + "sixteencurrencydenominatorbengali", + 0x09f9, + "sixteenparen", + 0x2483, + "sixteenperiod", + 0x2497, + "sixthai", + 0x0e56, + "slash", + 0x002f, + "slashmonospace", + 0xff0f, + "slong", + 0x017f, + "slongdotaccent", + 0x1e9b, + "smileface", + 0x263a, + "smonospace", + 0xff53, + "sofpasuqhebrew", + 0x05c3, + "softhyphen", + 0x00ad, + "softsigncyrillic", + 0x044c, + "sohiragana", + 0x305d, + "sokatakana", + 0x30bd, + "sokatakanahalfwidth", + 0xff7f, + "soliduslongoverlaycmb", + 0x0338, + "solidusshortoverlaycmb", + 0x0337, + "sorusithai", + 0x0e29, + "sosalathai", + 0x0e28, + "sosothai", + 0x0e0b, + "sosuathai", + 0x0e2a, + "space", + 0x0020, + "spacehackarabic", + 0x0020, + "spade", + 0x2660, + "spadesuitblack", + 0x2660, + "spadesuitwhite", + 0x2664, + "sparen", + 0x24ae, + "squarebelowcmb", + 0x033b, + "squarecc", + 0x33c4, + "squarecm", + 0x339d, + "squarediagonalcrosshatchfill", + 0x25a9, + "squarehorizontalfill", + 0x25a4, + "squarekg", + 0x338f, + "squarekm", + 0x339e, + "squarekmcapital", + 0x33ce, + "squareln", + 0x33d1, + "squarelog", + 0x33d2, + "squaremg", + 0x338e, + "squaremil", + 0x33d5, + "squaremm", + 0x339c, + "squaremsquared", + 0x33a1, + "squareorthogonalcrosshatchfill", + 0x25a6, + "squareupperlefttolowerrightfill", + 0x25a7, + "squareupperrighttolowerleftfill", + 0x25a8, + "squareverticalfill", + 0x25a5, + "squarewhitewithsmallblack", + 0x25a3, + "srsquare", + 0x33db, + "ssabengali", + 0x09b7, + "ssadeva", + 0x0937, + "ssagujarati", + 0x0ab7, + "ssangcieuckorean", + 0x3149, + "ssanghieuhkorean", + 0x3185, + "ssangieungkorean", + 0x3180, + "ssangkiyeokkorean", + 0x3132, + "ssangnieunkorean", + 0x3165, + "ssangpieupkorean", + 0x3143, + "ssangsioskorean", + 0x3146, + "ssangtikeutkorean", + 0x3138, + "ssuperior", + 0xf6f2, + "sterling", + 0x00a3, + "sterlingmonospace", + 0xffe1, + "strokelongoverlaycmb", + 0x0336, + "strokeshortoverlaycmb", + 0x0335, + "subset", + 0x2282, + "subsetnotequal", + 0x228a, + "subsetorequal", + 0x2286, + "succeeds", + 0x227b, + "suchthat", + 0x220b, + "suhiragana", + 0x3059, + "sukatakana", + 0x30b9, + "sukatakanahalfwidth", + 0xff7d, + "sukunarabic", + 0x0652, + "summation", + 0x2211, + "sun", + 0x263c, + "superset", + 0x2283, + "supersetnotequal", + 0x228b, + "supersetorequal", + 0x2287, + "svsquare", + 0x33dc, + "syouwaerasquare", + 0x337c, + "t", + 0x0074, + "tabengali", + 0x09a4, + "tackdown", + 0x22a4, + "tackleft", + 0x22a3, + "tadeva", + 0x0924, + "tagujarati", + 0x0aa4, + "tagurmukhi", + 0x0a24, + "taharabic", + 0x0637, + "tahfinalarabic", + 0xfec2, + "tahinitialarabic", + 0xfec3, + "tahiragana", + 0x305f, + "tahmedialarabic", + 0xfec4, + "taisyouerasquare", + 0x337d, + "takatakana", + 0x30bf, + "takatakanahalfwidth", + 0xff80, + "tatweelarabic", + 0x0640, + "tau", + 0x03c4, + "tav", + 0x05ea, + "tavdages", + 0xfb4a, + "tavdagesh", + 0xfb4a, + "tavdageshhebrew", + 0xfb4a, + "tavhebrew", + 0x05ea, + "tbar", + 0x0167, + "tbopomofo", + 0x310a, + "tcaron", + 0x0165, + "tccurl", + 0x02a8, + "tcedilla", + 0x0163, + "tcheharabic", + 0x0686, + "tchehfinalarabic", + 0xfb7b, + "tchehinitialarabic", + 0xfb7c, + "tchehmedialarabic", + 0xfb7d, + "tcircle", + 0x24e3, + "tcircumflexbelow", + 0x1e71, + "tcommaaccent", + 0x0163, + "tdieresis", + 0x1e97, + "tdotaccent", + 0x1e6b, + "tdotbelow", + 0x1e6d, + "tecyrillic", + 0x0442, + "tedescendercyrillic", + 0x04ad, + "teharabic", + 0x062a, + "tehfinalarabic", + 0xfe96, + "tehhahinitialarabic", + 0xfca2, + "tehhahisolatedarabic", + 0xfc0c, + "tehinitialarabic", + 0xfe97, + "tehiragana", + 0x3066, + "tehjeeminitialarabic", + 0xfca1, + "tehjeemisolatedarabic", + 0xfc0b, + "tehmarbutaarabic", + 0x0629, + "tehmarbutafinalarabic", + 0xfe94, + "tehmedialarabic", + 0xfe98, + "tehmeeminitialarabic", + 0xfca4, + "tehmeemisolatedarabic", + 0xfc0e, + "tehnoonfinalarabic", + 0xfc73, + "tekatakana", + 0x30c6, + "tekatakanahalfwidth", + 0xff83, + "telephone", + 0x2121, + "telephoneblack", + 0x260e, + "telishagedolahebrew", + 0x05a0, + "telishaqetanahebrew", + 0x05a9, + "tencircle", + 0x2469, + "tenideographicparen", + 0x3229, + "tenparen", + 0x247d, + "tenperiod", + 0x2491, + "tenroman", + 0x2179, + "tesh", + 0x02a7, + "tet", + 0x05d8, + "tetdagesh", + 0xfb38, + "tetdageshhebrew", + 0xfb38, + "tethebrew", + 0x05d8, + "tetsecyrillic", + 0x04b5, + "tevirhebrew", + 0x059b, + "tevirlefthebrew", + 0x059b, + "thabengali", + 0x09a5, + "thadeva", + 0x0925, + "thagujarati", + 0x0aa5, + "thagurmukhi", + 0x0a25, + "thalarabic", + 0x0630, + "thalfinalarabic", + 0xfeac, + "thanthakhatlowleftthai", + 0xf898, + "thanthakhatlowrightthai", + 0xf897, + "thanthakhatthai", + 0x0e4c, + "thanthakhatupperleftthai", + 0xf896, + "theharabic", + 0x062b, + "thehfinalarabic", + 0xfe9a, + "thehinitialarabic", + 0xfe9b, + "thehmedialarabic", + 0xfe9c, + "thereexists", + 0x2203, + "therefore", + 0x2234, + "theta", + 0x03b8, + "theta1", + 0x03d1, + "thetasymbolgreek", + 0x03d1, + "thieuthacirclekorean", + 0x3279, + "thieuthaparenkorean", + 0x3219, + "thieuthcirclekorean", + 0x326b, + "thieuthkorean", + 0x314c, + "thieuthparenkorean", + 0x320b, + "thirteencircle", + 0x246c, + "thirteenparen", + 0x2480, + "thirteenperiod", + 0x2494, + "thonangmonthothai", + 0x0e11, + "thook", + 0x01ad, + "thophuthaothai", + 0x0e12, + "thorn", + 0x00fe, + "thothahanthai", + 0x0e17, + "thothanthai", + 0x0e10, + "thothongthai", + 0x0e18, + "thothungthai", + 0x0e16, + "thousandcyrillic", + 0x0482, + "thousandsseparatorarabic", + 0x066c, + "thousandsseparatorpersian", + 0x066c, + "three", + 0x0033, + "threearabic", + 0x0663, + "threebengali", + 0x09e9, + "threecircle", + 0x2462, + "threecircleinversesansserif", + 0x278c, + "threedeva", + 0x0969, + "threeeighths", + 0x215c, + "threegujarati", + 0x0ae9, + "threegurmukhi", + 0x0a69, + "threehackarabic", + 0x0663, + "threehangzhou", + 0x3023, + "threeideographicparen", + 0x3222, + "threeinferior", + 0x2083, + "threemonospace", + 0xff13, + "threenumeratorbengali", + 0x09f6, + "threeoldstyle", + 0xf733, + "threeparen", + 0x2476, + "threeperiod", + 0x248a, + "threepersian", + 0x06f3, + "threequarters", + 0x00be, + "threequartersemdash", + 0xf6de, + "threeroman", + 0x2172, + "threesuperior", + 0x00b3, + "threethai", + 0x0e53, + "thzsquare", + 0x3394, + "tihiragana", + 0x3061, + "tikatakana", + 0x30c1, + "tikatakanahalfwidth", + 0xff81, + "tikeutacirclekorean", + 0x3270, + "tikeutaparenkorean", + 0x3210, + "tikeutcirclekorean", + 0x3262, + "tikeutkorean", + 0x3137, + "tikeutparenkorean", + 0x3202, + "tilde", + 0x02dc, + "tildebelowcmb", + 0x0330, + "tildecmb", + 0x0303, + "tildecomb", + 0x0303, + "tildedoublecmb", + 0x0360, + "tildeoperator", + 0x223c, + "tildeoverlaycmb", + 0x0334, + "tildeverticalcmb", + 0x033e, + "timescircle", + 0x2297, + "tipehahebrew", + 0x0596, + "tipehalefthebrew", + 0x0596, + "tippigurmukhi", + 0x0a70, + "titlocyrilliccmb", + 0x0483, + "tiwnarmenian", + 0x057f, + "tlinebelow", + 0x1e6f, + "tmonospace", + 0xff54, + "toarmenian", + 0x0569, + "tohiragana", + 0x3068, + "tokatakana", + 0x30c8, + "tokatakanahalfwidth", + 0xff84, + "tonebarextrahighmod", + 0x02e5, + "tonebarextralowmod", + 0x02e9, + "tonebarhighmod", + 0x02e6, + "tonebarlowmod", + 0x02e8, + "tonebarmidmod", + 0x02e7, + "tonefive", + 0x01bd, + "tonesix", + 0x0185, + "tonetwo", + 0x01a8, + "tonos", + 0x0384, + "tonsquare", + 0x3327, + "topatakthai", + 0x0e0f, + "tortoiseshellbracketleft", + 0x3014, + "tortoiseshellbracketleftsmall", + 0xfe5d, + "tortoiseshellbracketleftvertical", + 0xfe39, + "tortoiseshellbracketright", + 0x3015, + "tortoiseshellbracketrightsmall", + 0xfe5e, + "tortoiseshellbracketrightvertical", + 0xfe3a, + "totaothai", + 0x0e15, + "tpalatalhook", + 0x01ab, + "tparen", + 0x24af, + "trademark", + 0x2122, + "trademarksans", + 0xf8ea, + "trademarkserif", + 0xf6db, + "tretroflexhook", + 0x0288, + "triagdn", + 0x25bc, + "triaglf", + 0x25c4, + "triagrt", + 0x25ba, + "triagup", + 0x25b2, + "ts", + 0x02a6, + "tsadi", + 0x05e6, + "tsadidagesh", + 0xfb46, + "tsadidageshhebrew", + 0xfb46, + "tsadihebrew", + 0x05e6, + "tsecyrillic", + 0x0446, + "tsere", + 0x05b5, + "tsere12", + 0x05b5, + "tsere1e", + 0x05b5, + "tsere2b", + 0x05b5, + "tserehebrew", + 0x05b5, + "tserenarrowhebrew", + 0x05b5, + "tserequarterhebrew", + 0x05b5, + "tserewidehebrew", + 0x05b5, + "tshecyrillic", + 0x045b, + "tsuperior", + 0xf6f3, + "ttabengali", + 0x099f, + "ttadeva", + 0x091f, + "ttagujarati", + 0x0a9f, + "ttagurmukhi", + 0x0a1f, + "tteharabic", + 0x0679, + "ttehfinalarabic", + 0xfb67, + "ttehinitialarabic", + 0xfb68, + "ttehmedialarabic", + 0xfb69, + "tthabengali", + 0x09a0, + "tthadeva", + 0x0920, + "tthagujarati", + 0x0aa0, + "tthagurmukhi", + 0x0a20, + "tturned", + 0x0287, + "tuhiragana", + 0x3064, + "tukatakana", + 0x30c4, + "tukatakanahalfwidth", + 0xff82, + "tusmallhiragana", + 0x3063, + "tusmallkatakana", + 0x30c3, + "tusmallkatakanahalfwidth", + 0xff6f, + "twelvecircle", + 0x246b, + "twelveparen", + 0x247f, + "twelveperiod", + 0x2493, + "twelveroman", + 0x217b, + "twentycircle", + 0x2473, + "twentyhangzhou", + 0x5344, + "twentyparen", + 0x2487, + "twentyperiod", + 0x249b, + "two", + 0x0032, + "twoarabic", + 0x0662, + "twobengali", + 0x09e8, + "twocircle", + 0x2461, + "twocircleinversesansserif", + 0x278b, + "twodeva", + 0x0968, + "twodotenleader", + 0x2025, + "twodotleader", + 0x2025, + "twodotleadervertical", + 0xfe30, + "twogujarati", + 0x0ae8, + "twogurmukhi", + 0x0a68, + "twohackarabic", + 0x0662, + "twohangzhou", + 0x3022, + "twoideographicparen", + 0x3221, + "twoinferior", + 0x2082, + "twomonospace", + 0xff12, + "twonumeratorbengali", + 0x09f5, + "twooldstyle", + 0xf732, + "twoparen", + 0x2475, + "twoperiod", + 0x2489, + "twopersian", + 0x06f2, + "tworoman", + 0x2171, + "twostroke", + 0x01bb, + "twosuperior", + 0x00b2, + "twothai", + 0x0e52, + "twothirds", + 0x2154, + "u", + 0x0075, + "uacute", + 0x00fa, + "ubar", + 0x0289, + "ubengali", + 0x0989, + "ubopomofo", + 0x3128, + "ubreve", + 0x016d, + "ucaron", + 0x01d4, + "ucircle", + 0x24e4, + "ucircumflex", + 0x00fb, + "ucircumflexbelow", + 0x1e77, + "ucyrillic", + 0x0443, + "udattadeva", + 0x0951, + "udblacute", + 0x0171, + "udblgrave", + 0x0215, + "udeva", + 0x0909, + "udieresis", + 0x00fc, + "udieresisacute", + 0x01d8, + "udieresisbelow", + 0x1e73, + "udieresiscaron", + 0x01da, + "udieresiscyrillic", + 0x04f1, + "udieresisgrave", + 0x01dc, + "udieresismacron", + 0x01d6, + "udotbelow", + 0x1ee5, + "ugrave", + 0x00f9, + "ugujarati", + 0x0a89, + "ugurmukhi", + 0x0a09, + "uhiragana", + 0x3046, + "uhookabove", + 0x1ee7, + "uhorn", + 0x01b0, + "uhornacute", + 0x1ee9, + "uhorndotbelow", + 0x1ef1, + "uhorngrave", + 0x1eeb, + "uhornhookabove", + 0x1eed, + "uhorntilde", + 0x1eef, + "uhungarumlaut", + 0x0171, + "uhungarumlautcyrillic", + 0x04f3, + "uinvertedbreve", + 0x0217, + "ukatakana", + 0x30a6, + "ukatakanahalfwidth", + 0xff73, + "ukcyrillic", + 0x0479, + "ukorean", + 0x315c, + "umacron", + 0x016b, + "umacroncyrillic", + 0x04ef, + "umacrondieresis", + 0x1e7b, + "umatragurmukhi", + 0x0a41, + "umonospace", + 0xff55, + "underscore", + 0x005f, + "underscoredbl", + 0x2017, + "underscoremonospace", + 0xff3f, + "underscorevertical", + 0xfe33, + "underscorewavy", + 0xfe4f, + "union", + 0x222a, + "universal", + 0x2200, + "uogonek", + 0x0173, + "uparen", + 0x24b0, + "upblock", + 0x2580, + "upperdothebrew", + 0x05c4, + "upsilon", + 0x03c5, + "upsilondieresis", + 0x03cb, + "upsilondieresistonos", + 0x03b0, + "upsilonlatin", + 0x028a, + "upsilontonos", + 0x03cd, + "uptackbelowcmb", + 0x031d, + "uptackmod", + 0x02d4, + "uragurmukhi", + 0x0a73, + "uring", + 0x016f, + "ushortcyrillic", + 0x045e, + "usmallhiragana", + 0x3045, + "usmallkatakana", + 0x30a5, + "usmallkatakanahalfwidth", + 0xff69, + "ustraightcyrillic", + 0x04af, + "ustraightstrokecyrillic", + 0x04b1, + "utilde", + 0x0169, + "utildeacute", + 0x1e79, + "utildebelow", + 0x1e75, + "uubengali", + 0x098a, + "uudeva", + 0x090a, + "uugujarati", + 0x0a8a, + "uugurmukhi", + 0x0a0a, + "uumatragurmukhi", + 0x0a42, + "uuvowelsignbengali", + 0x09c2, + "uuvowelsigndeva", + 0x0942, + "uuvowelsigngujarati", + 0x0ac2, + "uvowelsignbengali", + 0x09c1, + "uvowelsigndeva", + 0x0941, + "uvowelsigngujarati", + 0x0ac1, + "v", + 0x0076, + "vadeva", + 0x0935, + "vagujarati", + 0x0ab5, + "vagurmukhi", + 0x0a35, + "vakatakana", + 0x30f7, + "vav", + 0x05d5, + "vavdagesh", + 0xfb35, + "vavdagesh65", + 0xfb35, + "vavdageshhebrew", + 0xfb35, + "vavhebrew", + 0x05d5, + "vavholam", + 0xfb4b, + "vavholamhebrew", + 0xfb4b, + "vavvavhebrew", + 0x05f0, + "vavyodhebrew", + 0x05f1, + "vcircle", + 0x24e5, + "vdotbelow", + 0x1e7f, + "vecyrillic", + 0x0432, + "veharabic", + 0x06a4, + "vehfinalarabic", + 0xfb6b, + "vehinitialarabic", + 0xfb6c, + "vehmedialarabic", + 0xfb6d, + "vekatakana", + 0x30f9, + "venus", + 0x2640, + "verticalbar", + 0x007c, + "verticallineabovecmb", + 0x030d, + "verticallinebelowcmb", + 0x0329, + "verticallinelowmod", + 0x02cc, + "verticallinemod", + 0x02c8, + "vewarmenian", + 0x057e, + "vhook", + 0x028b, + "vikatakana", + 0x30f8, + "viramabengali", + 0x09cd, + "viramadeva", + 0x094d, + "viramagujarati", + 0x0acd, + "visargabengali", + 0x0983, + "visargadeva", + 0x0903, + "visargagujarati", + 0x0a83, + "vmonospace", + 0xff56, + "voarmenian", + 0x0578, + "voicediterationhiragana", + 0x309e, + "voicediterationkatakana", + 0x30fe, + "voicedmarkkana", + 0x309b, + "voicedmarkkanahalfwidth", + 0xff9e, + "vokatakana", + 0x30fa, + "vparen", + 0x24b1, + "vtilde", + 0x1e7d, + "vturned", + 0x028c, + "vuhiragana", + 0x3094, + "vukatakana", + 0x30f4, + "w", + 0x0077, + "wacute", + 0x1e83, + "waekorean", + 0x3159, + "wahiragana", + 0x308f, + "wakatakana", + 0x30ef, + "wakatakanahalfwidth", + 0xff9c, + "wakorean", + 0x3158, + "wasmallhiragana", + 0x308e, + "wasmallkatakana", + 0x30ee, + "wattosquare", + 0x3357, + "wavedash", + 0x301c, + "wavyunderscorevertical", + 0xfe34, + "wawarabic", + 0x0648, + "wawfinalarabic", + 0xfeee, + "wawhamzaabovearabic", + 0x0624, + "wawhamzaabovefinalarabic", + 0xfe86, + "wbsquare", + 0x33dd, + "wcircle", + 0x24e6, + "wcircumflex", + 0x0175, + "wdieresis", + 0x1e85, + "wdotaccent", + 0x1e87, + "wdotbelow", + 0x1e89, + "wehiragana", + 0x3091, + "weierstrass", + 0x2118, + "wekatakana", + 0x30f1, + "wekorean", + 0x315e, + "weokorean", + 0x315d, + "wgrave", + 0x1e81, + "whitebullet", + 0x25e6, + "whitecircle", + 0x25cb, + "whitecircleinverse", + 0x25d9, + "whitecornerbracketleft", + 0x300e, + "whitecornerbracketleftvertical", + 0xfe43, + "whitecornerbracketright", + 0x300f, + "whitecornerbracketrightvertical", + 0xfe44, + "whitediamond", + 0x25c7, + "whitediamondcontainingblacksmalldiamond", + 0x25c8, + "whitedownpointingsmalltriangle", + 0x25bf, + "whitedownpointingtriangle", + 0x25bd, + "whiteleftpointingsmalltriangle", + 0x25c3, + "whiteleftpointingtriangle", + 0x25c1, + "whitelenticularbracketleft", + 0x3016, + "whitelenticularbracketright", + 0x3017, + "whiterightpointingsmalltriangle", + 0x25b9, + "whiterightpointingtriangle", + 0x25b7, + "whitesmallsquare", + 0x25ab, + "whitesmilingface", + 0x263a, + "whitesquare", + 0x25a1, + "whitestar", + 0x2606, + "whitetelephone", + 0x260f, + "whitetortoiseshellbracketleft", + 0x3018, + "whitetortoiseshellbracketright", + 0x3019, + "whiteuppointingsmalltriangle", + 0x25b5, + "whiteuppointingtriangle", + 0x25b3, + "wihiragana", + 0x3090, + "wikatakana", + 0x30f0, + "wikorean", + 0x315f, + "wmonospace", + 0xff57, + "wohiragana", + 0x3092, + "wokatakana", + 0x30f2, + "wokatakanahalfwidth", + 0xff66, + "won", + 0x20a9, + "wonmonospace", + 0xffe6, + "wowaenthai", + 0x0e27, + "wparen", + 0x24b2, + "wring", + 0x1e98, + "wsuperior", + 0x02b7, + "wturned", + 0x028d, + "wynn", + 0x01bf, + "x", + 0x0078, + "xabovecmb", + 0x033d, + "xbopomofo", + 0x3112, + "xcircle", + 0x24e7, + "xdieresis", + 0x1e8d, + "xdotaccent", + 0x1e8b, + "xeharmenian", + 0x056d, + "xi", + 0x03be, + "xmonospace", + 0xff58, + "xparen", + 0x24b3, + "xsuperior", + 0x02e3, + "y", + 0x0079, + "yaadosquare", + 0x334e, + "yabengali", + 0x09af, + "yacute", + 0x00fd, + "yadeva", + 0x092f, + "yaekorean", + 0x3152, + "yagujarati", + 0x0aaf, + "yagurmukhi", + 0x0a2f, + "yahiragana", + 0x3084, + "yakatakana", + 0x30e4, + "yakatakanahalfwidth", + 0xff94, + "yakorean", + 0x3151, + "yamakkanthai", + 0x0e4e, + "yasmallhiragana", + 0x3083, + "yasmallkatakana", + 0x30e3, + "yasmallkatakanahalfwidth", + 0xff6c, + "yatcyrillic", + 0x0463, + "ycircle", + 0x24e8, + "ycircumflex", + 0x0177, + "ydieresis", + 0x00ff, + "ydotaccent", + 0x1e8f, + "ydotbelow", + 0x1ef5, + "yeharabic", + 0x064a, + "yehbarreearabic", + 0x06d2, + "yehbarreefinalarabic", + 0xfbaf, + "yehfinalarabic", + 0xfef2, + "yehhamzaabovearabic", + 0x0626, + "yehhamzaabovefinalarabic", + 0xfe8a, + "yehhamzaaboveinitialarabic", + 0xfe8b, + "yehhamzaabovemedialarabic", + 0xfe8c, + "yehinitialarabic", + 0xfef3, + "yehmedialarabic", + 0xfef4, + "yehmeeminitialarabic", + 0xfcdd, + "yehmeemisolatedarabic", + 0xfc58, + "yehnoonfinalarabic", + 0xfc94, + "yehthreedotsbelowarabic", + 0x06d1, + "yekorean", + 0x3156, + "yen", + 0x00a5, + "yenmonospace", + 0xffe5, + "yeokorean", + 0x3155, + "yeorinhieuhkorean", + 0x3186, + "yerahbenyomohebrew", + 0x05aa, + "yerahbenyomolefthebrew", + 0x05aa, + "yericyrillic", + 0x044b, + "yerudieresiscyrillic", + 0x04f9, + "yesieungkorean", + 0x3181, + "yesieungpansioskorean", + 0x3183, + "yesieungsioskorean", + 0x3182, + "yetivhebrew", + 0x059a, + "ygrave", + 0x1ef3, + "yhook", + 0x01b4, + "yhookabove", + 0x1ef7, + "yiarmenian", + 0x0575, + "yicyrillic", + 0x0457, + "yikorean", + 0x3162, + "yinyang", + 0x262f, + "yiwnarmenian", + 0x0582, + "ymonospace", + 0xff59, + "yod", + 0x05d9, + "yoddagesh", + 0xfb39, + "yoddageshhebrew", + 0xfb39, + "yodhebrew", + 0x05d9, + "yodyodhebrew", + 0x05f2, + "yodyodpatahhebrew", + 0xfb1f, + "yohiragana", + 0x3088, + "yoikorean", + 0x3189, + "yokatakana", + 0x30e8, + "yokatakanahalfwidth", + 0xff96, + "yokorean", + 0x315b, + "yosmallhiragana", + 0x3087, + "yosmallkatakana", + 0x30e7, + "yosmallkatakanahalfwidth", + 0xff6e, + "yotgreek", + 0x03f3, + "yoyaekorean", + 0x3188, + "yoyakorean", + 0x3187, + "yoyakthai", + 0x0e22, + "yoyingthai", + 0x0e0d, + "yparen", + 0x24b4, + "ypogegrammeni", + 0x037a, + "ypogegrammenigreekcmb", + 0x0345, + "yr", + 0x01a6, + "yring", + 0x1e99, + "ysuperior", + 0x02b8, + "ytilde", + 0x1ef9, + "yturned", + 0x028e, + "yuhiragana", + 0x3086, + "yuikorean", + 0x318c, + "yukatakana", + 0x30e6, + "yukatakanahalfwidth", + 0xff95, + "yukorean", + 0x3160, + "yusbigcyrillic", + 0x046b, + "yusbigiotifiedcyrillic", + 0x046d, + "yuslittlecyrillic", + 0x0467, + "yuslittleiotifiedcyrillic", + 0x0469, + "yusmallhiragana", + 0x3085, + "yusmallkatakana", + 0x30e5, + "yusmallkatakanahalfwidth", + 0xff6d, + "yuyekorean", + 0x318b, + "yuyeokorean", + 0x318a, + "yyabengali", + 0x09df, + "yyadeva", + 0x095f, + "z", + 0x007a, + "zaarmenian", + 0x0566, + "zacute", + 0x017a, + "zadeva", + 0x095b, + "zagurmukhi", + 0x0a5b, + "zaharabic", + 0x0638, + "zahfinalarabic", + 0xfec6, + "zahinitialarabic", + 0xfec7, + "zahiragana", + 0x3056, + "zahmedialarabic", + 0xfec8, + "zainarabic", + 0x0632, + "zainfinalarabic", + 0xfeb0, + "zakatakana", + 0x30b6, + "zaqefgadolhebrew", + 0x0595, + "zaqefqatanhebrew", + 0x0594, + "zarqahebrew", + 0x0598, + "zayin", + 0x05d6, + "zayindagesh", + 0xfb36, + "zayindageshhebrew", + 0xfb36, + "zayinhebrew", + 0x05d6, + "zbopomofo", + 0x3117, + "zcaron", + 0x017e, + "zcircle", + 0x24e9, + "zcircumflex", + 0x1e91, + "zcurl", + 0x0291, + "zdot", + 0x017c, + "zdotaccent", + 0x017c, + "zdotbelow", + 0x1e93, + "zecyrillic", + 0x0437, + "zedescendercyrillic", + 0x0499, + "zedieresiscyrillic", + 0x04df, + "zehiragana", + 0x305c, + "zekatakana", + 0x30bc, + "zero", + 0x0030, + "zeroarabic", + 0x0660, + "zerobengali", + 0x09e6, + "zerodeva", + 0x0966, + "zerogujarati", + 0x0ae6, + "zerogurmukhi", + 0x0a66, + "zerohackarabic", + 0x0660, + "zeroinferior", + 0x2080, + "zeromonospace", + 0xff10, + "zerooldstyle", + 0xf730, + "zeropersian", + 0x06f0, + "zerosuperior", + 0x2070, + "zerothai", + 0x0e50, + "zerowidthjoiner", + 0xfeff, + "zerowidthnonjoiner", + 0x200c, + "zerowidthspace", + 0x200b, + "zeta", + 0x03b6, + "zhbopomofo", + 0x3113, + "zhearmenian", + 0x056a, + "zhebrevecyrillic", + 0x04c2, + "zhecyrillic", + 0x0436, + "zhedescendercyrillic", + 0x0497, + "zhedieresiscyrillic", + 0x04dd, + "zihiragana", + 0x3058, + "zikatakana", + 0x30b8, + "zinorhebrew", + 0x05ae, + "zlinebelow", + 0x1e95, + "zmonospace", + 0xff5a, + "zohiragana", + 0x305e, + "zokatakana", + 0x30be, + "zparen", + 0x24b5, + "zretroflexhook", + 0x0290, + "zstroke", + 0x01b6, + "zuhiragana", + 0x305a, + "zukatakana", + 0x30ba, + ".notdef", + 0x0000, + "angbracketleftbig", + 0x2329, + "angbracketleftBig", + 0x2329, + "angbracketleftbigg", + 0x2329, + "angbracketleftBigg", + 0x2329, + "angbracketrightBig", + 0x232a, + "angbracketrightbig", + 0x232a, + "angbracketrightBigg", + 0x232a, + "angbracketrightbigg", + 0x232a, + "arrowhookleft", + 0x21aa, + "arrowhookright", + 0x21a9, + "arrowlefttophalf", + 0x21bc, + "arrowleftbothalf", + 0x21bd, + "arrownortheast", + 0x2197, + "arrownorthwest", + 0x2196, + "arrowrighttophalf", + 0x21c0, + "arrowrightbothalf", + 0x21c1, + "arrowsoutheast", + 0x2198, + "arrowsouthwest", + 0x2199, + "backslashbig", + 0x2216, + "backslashBig", + 0x2216, + "backslashBigg", + 0x2216, + "backslashbigg", + 0x2216, + "bardbl", + 0x2016, + "bracehtipdownleft", + 0xfe37, + "bracehtipdownright", + 0xfe37, + "bracehtipupleft", + 0xfe38, + "bracehtipupright", + 0xfe38, + "braceleftBig", + 0x007b, + "braceleftbig", + 0x007b, + "braceleftbigg", + 0x007b, + "braceleftBigg", + 0x007b, + "bracerightBig", + 0x007d, + "bracerightbig", + 0x007d, + "bracerightbigg", + 0x007d, + "bracerightBigg", + 0x007d, + "bracketleftbig", + 0x005b, + "bracketleftBig", + 0x005b, + "bracketleftbigg", + 0x005b, + "bracketleftBigg", + 0x005b, + "bracketrightBig", + 0x005d, + "bracketrightbig", + 0x005d, + "bracketrightbigg", + 0x005d, + "bracketrightBigg", + 0x005d, + "ceilingleftbig", + 0x2308, + "ceilingleftBig", + 0x2308, + "ceilingleftBigg", + 0x2308, + "ceilingleftbigg", + 0x2308, + "ceilingrightbig", + 0x2309, + "ceilingrightBig", + 0x2309, + "ceilingrightbigg", + 0x2309, + "ceilingrightBigg", + 0x2309, + "circledotdisplay", + 0x2299, + "circledottext", + 0x2299, + "circlemultiplydisplay", + 0x2297, + "circlemultiplytext", + 0x2297, + "circleplusdisplay", + 0x2295, + "circleplustext", + 0x2295, + "contintegraldisplay", + 0x222e, + "contintegraltext", + 0x222e, + "coproductdisplay", + 0x2210, + "coproducttext", + 0x2210, + "floorleftBig", + 0x230a, + "floorleftbig", + 0x230a, + "floorleftbigg", + 0x230a, + "floorleftBigg", + 0x230a, + "floorrightbig", + 0x230b, + "floorrightBig", + 0x230b, + "floorrightBigg", + 0x230b, + "floorrightbigg", + 0x230b, + "hatwide", + 0x0302, + "hatwider", + 0x0302, + "hatwidest", + 0x0302, + "intercal", + 0x1d40, + "integraldisplay", + 0x222b, + "integraltext", + 0x222b, + "intersectiondisplay", + 0x22c2, + "intersectiontext", + 0x22c2, + "logicalanddisplay", + 0x2227, + "logicalandtext", + 0x2227, + "logicalordisplay", + 0x2228, + "logicalortext", + 0x2228, + "parenleftBig", + 0x0028, + "parenleftbig", + 0x0028, + "parenleftBigg", + 0x0028, + "parenleftbigg", + 0x0028, + "parenrightBig", + 0x0029, + "parenrightbig", + 0x0029, + "parenrightBigg", + 0x0029, + "parenrightbigg", + 0x0029, + "prime", + 0x2032, + "productdisplay", + 0x220f, + "producttext", + 0x220f, + "radicalbig", + 0x221a, + "radicalBig", + 0x221a, + "radicalBigg", + 0x221a, + "radicalbigg", + 0x221a, + "radicalbt", + 0x221a, + "radicaltp", + 0x221a, + "radicalvertex", + 0x221a, + "slashbig", + 0x002f, + "slashBig", + 0x002f, + "slashBigg", + 0x002f, + "slashbigg", + 0x002f, + "summationdisplay", + 0x2211, + "summationtext", + 0x2211, + "tildewide", + 0x02dc, + "tildewider", + 0x02dc, + "tildewidest", + 0x02dc, + "uniondisplay", + 0x22c3, + "unionmultidisplay", + 0x228e, + "unionmultitext", + 0x228e, + "unionsqdisplay", + 0x2294, + "unionsqtext", + 0x2294, + "uniontext", + 0x22c3, + "vextenddouble", + 0x2225, + "vextendsingle", + 0x2223 + ]; }); -var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) { - t.space = 0x0020; - t.a1 = 0x2701; - t.a2 = 0x2702; - t.a202 = 0x2703; - t.a3 = 0x2704; - t.a4 = 0x260e; - t.a5 = 0x2706; - t.a119 = 0x2707; - t.a118 = 0x2708; - t.a117 = 0x2709; - t.a11 = 0x261b; - t.a12 = 0x261e; - t.a13 = 0x270c; - t.a14 = 0x270d; - t.a15 = 0x270e; - t.a16 = 0x270f; - t.a105 = 0x2710; - t.a17 = 0x2711; - t.a18 = 0x2712; - t.a19 = 0x2713; - t.a20 = 0x2714; - t.a21 = 0x2715; - t.a22 = 0x2716; - t.a23 = 0x2717; - t.a24 = 0x2718; - t.a25 = 0x2719; - t.a26 = 0x271a; - t.a27 = 0x271b; - t.a28 = 0x271c; - t.a6 = 0x271d; - t.a7 = 0x271e; - t.a8 = 0x271f; - t.a9 = 0x2720; - t.a10 = 0x2721; - t.a29 = 0x2722; - t.a30 = 0x2723; - t.a31 = 0x2724; - t.a32 = 0x2725; - t.a33 = 0x2726; - t.a34 = 0x2727; - t.a35 = 0x2605; - t.a36 = 0x2729; - t.a37 = 0x272a; - t.a38 = 0x272b; - t.a39 = 0x272c; - t.a40 = 0x272d; - t.a41 = 0x272e; - t.a42 = 0x272f; - t.a43 = 0x2730; - t.a44 = 0x2731; - t.a45 = 0x2732; - t.a46 = 0x2733; - t.a47 = 0x2734; - t.a48 = 0x2735; - t.a49 = 0x2736; - t.a50 = 0x2737; - t.a51 = 0x2738; - t.a52 = 0x2739; - t.a53 = 0x273a; - t.a54 = 0x273b; - t.a55 = 0x273c; - t.a56 = 0x273d; - t.a57 = 0x273e; - t.a58 = 0x273f; - t.a59 = 0x2740; - t.a60 = 0x2741; - t.a61 = 0x2742; - t.a62 = 0x2743; - t.a63 = 0x2744; - t.a64 = 0x2745; - t.a65 = 0x2746; - t.a66 = 0x2747; - t.a67 = 0x2748; - t.a68 = 0x2749; - t.a69 = 0x274a; - t.a70 = 0x274b; - t.a71 = 0x25cf; - t.a72 = 0x274d; - t.a73 = 0x25a0; - t.a74 = 0x274f; - t.a203 = 0x2750; - t.a75 = 0x2751; - t.a204 = 0x2752; - t.a76 = 0x25b2; - t.a77 = 0x25bc; - t.a78 = 0x25c6; - t.a79 = 0x2756; - t.a81 = 0x25d7; - t.a82 = 0x2758; - t.a83 = 0x2759; - t.a84 = 0x275a; - t.a97 = 0x275b; - t.a98 = 0x275c; - t.a99 = 0x275d; - t.a100 = 0x275e; - t.a101 = 0x2761; - t.a102 = 0x2762; - t.a103 = 0x2763; - t.a104 = 0x2764; - t.a106 = 0x2765; - t.a107 = 0x2766; - t.a108 = 0x2767; - t.a112 = 0x2663; - t.a111 = 0x2666; - t.a110 = 0x2665; - t.a109 = 0x2660; - t.a120 = 0x2460; - t.a121 = 0x2461; - t.a122 = 0x2462; - t.a123 = 0x2463; - t.a124 = 0x2464; - t.a125 = 0x2465; - t.a126 = 0x2466; - t.a127 = 0x2467; - t.a128 = 0x2468; - t.a129 = 0x2469; - t.a130 = 0x2776; - t.a131 = 0x2777; - t.a132 = 0x2778; - t.a133 = 0x2779; - t.a134 = 0x277a; - t.a135 = 0x277b; - t.a136 = 0x277c; - t.a137 = 0x277d; - t.a138 = 0x277e; - t.a139 = 0x277f; - t.a140 = 0x2780; - t.a141 = 0x2781; - t.a142 = 0x2782; - t.a143 = 0x2783; - t.a144 = 0x2784; - t.a145 = 0x2785; - t.a146 = 0x2786; - t.a147 = 0x2787; - t.a148 = 0x2788; - t.a149 = 0x2789; - t.a150 = 0x278a; - t.a151 = 0x278b; - t.a152 = 0x278c; - t.a153 = 0x278d; - t.a154 = 0x278e; - t.a155 = 0x278f; - t.a156 = 0x2790; - t.a157 = 0x2791; - t.a158 = 0x2792; - t.a159 = 0x2793; - t.a160 = 0x2794; - t.a161 = 0x2192; - t.a163 = 0x2194; - t.a164 = 0x2195; - t.a196 = 0x2798; - t.a165 = 0x2799; - t.a192 = 0x279a; - t.a166 = 0x279b; - t.a167 = 0x279c; - t.a168 = 0x279d; - t.a169 = 0x279e; - t.a170 = 0x279f; - t.a171 = 0x27a0; - t.a172 = 0x27a1; - t.a173 = 0x27a2; - t.a162 = 0x27a3; - t.a174 = 0x27a4; - t.a175 = 0x27a5; - t.a176 = 0x27a6; - t.a177 = 0x27a7; - t.a178 = 0x27a8; - t.a179 = 0x27a9; - t.a193 = 0x27aa; - t.a180 = 0x27ab; - t.a199 = 0x27ac; - t.a181 = 0x27ad; - t.a200 = 0x27ae; - t.a182 = 0x27af; - t.a201 = 0x27b1; - t.a183 = 0x27b2; - t.a184 = 0x27b3; - t.a197 = 0x27b4; - t.a185 = 0x27b5; - t.a194 = 0x27b6; - t.a198 = 0x27b7; - t.a186 = 0x27b8; - t.a195 = 0x27b9; - t.a187 = 0x27ba; - t.a188 = 0x27bb; - t.a189 = 0x27bc; - t.a190 = 0x27bd; - t.a191 = 0x27be; - t.a89 = 0x2768; - t.a90 = 0x2769; - t.a93 = 0x276a; - t.a94 = 0x276b; - t.a91 = 0x276c; - t.a92 = 0x276d; - t.a205 = 0x276e; - t.a85 = 0x276f; - t.a206 = 0x2770; - t.a86 = 0x2771; - t.a87 = 0x2772; - t.a88 = 0x2773; - t.a95 = 0x2774; - t.a96 = 0x2775; - t[".notdef"] = 0x0000; +var getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "space", + 0x0020, + "a1", + 0x2701, + "a2", + 0x2702, + "a202", + 0x2703, + "a3", + 0x2704, + "a4", + 0x260e, + "a5", + 0x2706, + "a119", + 0x2707, + "a118", + 0x2708, + "a117", + 0x2709, + "a11", + 0x261b, + "a12", + 0x261e, + "a13", + 0x270c, + "a14", + 0x270d, + "a15", + 0x270e, + "a16", + 0x270f, + "a105", + 0x2710, + "a17", + 0x2711, + "a18", + 0x2712, + "a19", + 0x2713, + "a20", + 0x2714, + "a21", + 0x2715, + "a22", + 0x2716, + "a23", + 0x2717, + "a24", + 0x2718, + "a25", + 0x2719, + "a26", + 0x271a, + "a27", + 0x271b, + "a28", + 0x271c, + "a6", + 0x271d, + "a7", + 0x271e, + "a8", + 0x271f, + "a9", + 0x2720, + "a10", + 0x2721, + "a29", + 0x2722, + "a30", + 0x2723, + "a31", + 0x2724, + "a32", + 0x2725, + "a33", + 0x2726, + "a34", + 0x2727, + "a35", + 0x2605, + "a36", + 0x2729, + "a37", + 0x272a, + "a38", + 0x272b, + "a39", + 0x272c, + "a40", + 0x272d, + "a41", + 0x272e, + "a42", + 0x272f, + "a43", + 0x2730, + "a44", + 0x2731, + "a45", + 0x2732, + "a46", + 0x2733, + "a47", + 0x2734, + "a48", + 0x2735, + "a49", + 0x2736, + "a50", + 0x2737, + "a51", + 0x2738, + "a52", + 0x2739, + "a53", + 0x273a, + "a54", + 0x273b, + "a55", + 0x273c, + "a56", + 0x273d, + "a57", + 0x273e, + "a58", + 0x273f, + "a59", + 0x2740, + "a60", + 0x2741, + "a61", + 0x2742, + "a62", + 0x2743, + "a63", + 0x2744, + "a64", + 0x2745, + "a65", + 0x2746, + "a66", + 0x2747, + "a67", + 0x2748, + "a68", + 0x2749, + "a69", + 0x274a, + "a70", + 0x274b, + "a71", + 0x25cf, + "a72", + 0x274d, + "a73", + 0x25a0, + "a74", + 0x274f, + "a203", + 0x2750, + "a75", + 0x2751, + "a204", + 0x2752, + "a76", + 0x25b2, + "a77", + 0x25bc, + "a78", + 0x25c6, + "a79", + 0x2756, + "a81", + 0x25d7, + "a82", + 0x2758, + "a83", + 0x2759, + "a84", + 0x275a, + "a97", + 0x275b, + "a98", + 0x275c, + "a99", + 0x275d, + "a100", + 0x275e, + "a101", + 0x2761, + "a102", + 0x2762, + "a103", + 0x2763, + "a104", + 0x2764, + "a106", + 0x2765, + "a107", + 0x2766, + "a108", + 0x2767, + "a112", + 0x2663, + "a111", + 0x2666, + "a110", + 0x2665, + "a109", + 0x2660, + "a120", + 0x2460, + "a121", + 0x2461, + "a122", + 0x2462, + "a123", + 0x2463, + "a124", + 0x2464, + "a125", + 0x2465, + "a126", + 0x2466, + "a127", + 0x2467, + "a128", + 0x2468, + "a129", + 0x2469, + "a130", + 0x2776, + "a131", + 0x2777, + "a132", + 0x2778, + "a133", + 0x2779, + "a134", + 0x277a, + "a135", + 0x277b, + "a136", + 0x277c, + "a137", + 0x277d, + "a138", + 0x277e, + "a139", + 0x277f, + "a140", + 0x2780, + "a141", + 0x2781, + "a142", + 0x2782, + "a143", + 0x2783, + "a144", + 0x2784, + "a145", + 0x2785, + "a146", + 0x2786, + "a147", + 0x2787, + "a148", + 0x2788, + "a149", + 0x2789, + "a150", + 0x278a, + "a151", + 0x278b, + "a152", + 0x278c, + "a153", + 0x278d, + "a154", + 0x278e, + "a155", + 0x278f, + "a156", + 0x2790, + "a157", + 0x2791, + "a158", + 0x2792, + "a159", + 0x2793, + "a160", + 0x2794, + "a161", + 0x2192, + "a163", + 0x2194, + "a164", + 0x2195, + "a196", + 0x2798, + "a165", + 0x2799, + "a192", + 0x279a, + "a166", + 0x279b, + "a167", + 0x279c, + "a168", + 0x279d, + "a169", + 0x279e, + "a170", + 0x279f, + "a171", + 0x27a0, + "a172", + 0x27a1, + "a173", + 0x27a2, + "a162", + 0x27a3, + "a174", + 0x27a4, + "a175", + 0x27a5, + "a176", + 0x27a6, + "a177", + 0x27a7, + "a178", + 0x27a8, + "a179", + 0x27a9, + "a193", + 0x27aa, + "a180", + 0x27ab, + "a199", + 0x27ac, + "a181", + 0x27ad, + "a200", + 0x27ae, + "a182", + 0x27af, + "a201", + 0x27b1, + "a183", + 0x27b2, + "a184", + 0x27b3, + "a197", + 0x27b4, + "a185", + 0x27b5, + "a194", + 0x27b6, + "a198", + 0x27b7, + "a186", + 0x27b8, + "a195", + 0x27b9, + "a187", + 0x27ba, + "a188", + 0x27bb, + "a189", + 0x27bc, + "a190", + 0x27bd, + "a191", + 0x27be, + "a89", + 0x2768, + "a90", + 0x2769, + "a93", + 0x276a, + "a94", + 0x276b, + "a91", + 0x276c, + "a92", + 0x276d, + "a205", + 0x276e, + "a85", + 0x276f, + "a206", + 0x2770, + "a86", + 0x2771, + "a87", + 0x2772, + "a88", + 0x2773, + "a95", + 0x2774, + "a96", + 0x2775, + ".notdef", + 0x0000 + ]; }); -exports.getGlyphsUnicode = getGlyphsUnicode; -exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode; + /***/ }), -/* 35 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0; +})); +exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = exports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = void 0; var _core_utils = __w_pdfjs_require__(8); @@ -36628,11 +41480,20 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory) exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri; /***/ }), -/* 36 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -var getLookupTableFactory = __w_pdfjs_require__(8).getLookupTableFactory; -var getSpecialPUASymbols = getLookupTableFactory(function (t) { +/* 35 */ +/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => { + +__w_pdfjs_require__.r(__webpack_exports__); +/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, { +/* harmony export */ "getNormalizedUnicodes": () => /* binding */ getNormalizedUnicodes, +/* harmony export */ "getUnicodeForGlyph": () => /* binding */ getUnicodeForGlyph, +/* harmony export */ "getUnicodeRangeFor": () => /* binding */ getUnicodeRangeFor, +/* harmony export */ "mapSpecialUnicodeValues": () => /* binding */ mapSpecialUnicodeValues, +/* harmony export */ "reverseIfRtl": () => /* binding */ reverseIfRtl +/* harmony export */ }); +/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8); + +var getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) { t[63721] = 0x00a9; t[63193] = 0x00a9; t[63720] = 0x00ae; @@ -37208,1384 +42069,2763 @@ function isRTLRangeFor(value) { } return false; } -var getNormalizedUnicodes = getLookupTableFactory(function (t) { - t["\u00A8"] = "\u0020\u0308"; - t["\u00AF"] = "\u0020\u0304"; - t["\u00B4"] = "\u0020\u0301"; - t["\u00B5"] = "\u03BC"; - t["\u00B8"] = "\u0020\u0327"; - t["\u0132"] = "\u0049\u004A"; - t["\u0133"] = "\u0069\u006A"; - t["\u013F"] = "\u004C\u00B7"; - t["\u0140"] = "\u006C\u00B7"; - t["\u0149"] = "\u02BC\u006E"; - t["\u017F"] = "\u0073"; - t["\u01C4"] = "\u0044\u017D"; - t["\u01C5"] = "\u0044\u017E"; - t["\u01C6"] = "\u0064\u017E"; - t["\u01C7"] = "\u004C\u004A"; - t["\u01C8"] = "\u004C\u006A"; - t["\u01C9"] = "\u006C\u006A"; - t["\u01CA"] = "\u004E\u004A"; - t["\u01CB"] = "\u004E\u006A"; - t["\u01CC"] = "\u006E\u006A"; - t["\u01F1"] = "\u0044\u005A"; - t["\u01F2"] = "\u0044\u007A"; - t["\u01F3"] = "\u0064\u007A"; - t["\u02D8"] = "\u0020\u0306"; - t["\u02D9"] = "\u0020\u0307"; - t["\u02DA"] = "\u0020\u030A"; - t["\u02DB"] = "\u0020\u0328"; - t["\u02DC"] = "\u0020\u0303"; - t["\u02DD"] = "\u0020\u030B"; - t["\u037A"] = "\u0020\u0345"; - t["\u0384"] = "\u0020\u0301"; - t["\u03D0"] = "\u03B2"; - t["\u03D1"] = "\u03B8"; - t["\u03D2"] = "\u03A5"; - t["\u03D5"] = "\u03C6"; - t["\u03D6"] = "\u03C0"; - t["\u03F0"] = "\u03BA"; - t["\u03F1"] = "\u03C1"; - t["\u03F2"] = "\u03C2"; - t["\u03F4"] = "\u0398"; - t["\u03F5"] = "\u03B5"; - t["\u03F9"] = "\u03A3"; - t["\u0587"] = "\u0565\u0582"; - t["\u0675"] = "\u0627\u0674"; - t["\u0676"] = "\u0648\u0674"; - t["\u0677"] = "\u06C7\u0674"; - t["\u0678"] = "\u064A\u0674"; - t["\u0E33"] = "\u0E4D\u0E32"; - t["\u0EB3"] = "\u0ECD\u0EB2"; - t["\u0EDC"] = "\u0EAB\u0E99"; - t["\u0EDD"] = "\u0EAB\u0EA1"; - t["\u0F77"] = "\u0FB2\u0F81"; - t["\u0F79"] = "\u0FB3\u0F81"; - t["\u1E9A"] = "\u0061\u02BE"; - t["\u1FBD"] = "\u0020\u0313"; - t["\u1FBF"] = "\u0020\u0313"; - t["\u1FC0"] = "\u0020\u0342"; - t["\u1FFE"] = "\u0020\u0314"; - t["\u2002"] = "\u0020"; - t["\u2003"] = "\u0020"; - t["\u2004"] = "\u0020"; - t["\u2005"] = "\u0020"; - t["\u2006"] = "\u0020"; - t["\u2008"] = "\u0020"; - t["\u2009"] = "\u0020"; - t["\u200A"] = "\u0020"; - t["\u2017"] = "\u0020\u0333"; - t["\u2024"] = "\u002E"; - t["\u2025"] = "\u002E\u002E"; - t["\u2026"] = "\u002E\u002E\u002E"; - t["\u2033"] = "\u2032\u2032"; - t["\u2034"] = "\u2032\u2032\u2032"; - t["\u2036"] = "\u2035\u2035"; - t["\u2037"] = "\u2035\u2035\u2035"; - t["\u203C"] = "\u0021\u0021"; - t["\u203E"] = "\u0020\u0305"; - t["\u2047"] = "\u003F\u003F"; - t["\u2048"] = "\u003F\u0021"; - t["\u2049"] = "\u0021\u003F"; - t["\u2057"] = "\u2032\u2032\u2032\u2032"; - t["\u205F"] = "\u0020"; - t["\u20A8"] = "\u0052\u0073"; - t["\u2100"] = "\u0061\u002F\u0063"; - t["\u2101"] = "\u0061\u002F\u0073"; - t["\u2103"] = "\u00B0\u0043"; - t["\u2105"] = "\u0063\u002F\u006F"; - t["\u2106"] = "\u0063\u002F\u0075"; - t["\u2107"] = "\u0190"; - t["\u2109"] = "\u00B0\u0046"; - t["\u2116"] = "\u004E\u006F"; - t["\u2121"] = "\u0054\u0045\u004C"; - t["\u2135"] = "\u05D0"; - t["\u2136"] = "\u05D1"; - t["\u2137"] = "\u05D2"; - t["\u2138"] = "\u05D3"; - t["\u213B"] = "\u0046\u0041\u0058"; - t["\u2160"] = "\u0049"; - t["\u2161"] = "\u0049\u0049"; - t["\u2162"] = "\u0049\u0049\u0049"; - t["\u2163"] = "\u0049\u0056"; - t["\u2164"] = "\u0056"; - t["\u2165"] = "\u0056\u0049"; - t["\u2166"] = "\u0056\u0049\u0049"; - t["\u2167"] = "\u0056\u0049\u0049\u0049"; - t["\u2168"] = "\u0049\u0058"; - t["\u2169"] = "\u0058"; - t["\u216A"] = "\u0058\u0049"; - t["\u216B"] = "\u0058\u0049\u0049"; - t["\u216C"] = "\u004C"; - t["\u216D"] = "\u0043"; - t["\u216E"] = "\u0044"; - t["\u216F"] = "\u004D"; - t["\u2170"] = "\u0069"; - t["\u2171"] = "\u0069\u0069"; - t["\u2172"] = "\u0069\u0069\u0069"; - t["\u2173"] = "\u0069\u0076"; - t["\u2174"] = "\u0076"; - t["\u2175"] = "\u0076\u0069"; - t["\u2176"] = "\u0076\u0069\u0069"; - t["\u2177"] = "\u0076\u0069\u0069\u0069"; - t["\u2178"] = "\u0069\u0078"; - t["\u2179"] = "\u0078"; - t["\u217A"] = "\u0078\u0069"; - t["\u217B"] = "\u0078\u0069\u0069"; - t["\u217C"] = "\u006C"; - t["\u217D"] = "\u0063"; - t["\u217E"] = "\u0064"; - t["\u217F"] = "\u006D"; - t["\u222C"] = "\u222B\u222B"; - t["\u222D"] = "\u222B\u222B\u222B"; - t["\u222F"] = "\u222E\u222E"; - t["\u2230"] = "\u222E\u222E\u222E"; - t["\u2474"] = "\u0028\u0031\u0029"; - t["\u2475"] = "\u0028\u0032\u0029"; - t["\u2476"] = "\u0028\u0033\u0029"; - t["\u2477"] = "\u0028\u0034\u0029"; - t["\u2478"] = "\u0028\u0035\u0029"; - t["\u2479"] = "\u0028\u0036\u0029"; - t["\u247A"] = "\u0028\u0037\u0029"; - t["\u247B"] = "\u0028\u0038\u0029"; - t["\u247C"] = "\u0028\u0039\u0029"; - t["\u247D"] = "\u0028\u0031\u0030\u0029"; - t["\u247E"] = "\u0028\u0031\u0031\u0029"; - t["\u247F"] = "\u0028\u0031\u0032\u0029"; - t["\u2480"] = "\u0028\u0031\u0033\u0029"; - t["\u2481"] = "\u0028\u0031\u0034\u0029"; - t["\u2482"] = "\u0028\u0031\u0035\u0029"; - t["\u2483"] = "\u0028\u0031\u0036\u0029"; - t["\u2484"] = "\u0028\u0031\u0037\u0029"; - t["\u2485"] = "\u0028\u0031\u0038\u0029"; - t["\u2486"] = "\u0028\u0031\u0039\u0029"; - t["\u2487"] = "\u0028\u0032\u0030\u0029"; - t["\u2488"] = "\u0031\u002E"; - t["\u2489"] = "\u0032\u002E"; - t["\u248A"] = "\u0033\u002E"; - t["\u248B"] = "\u0034\u002E"; - t["\u248C"] = "\u0035\u002E"; - t["\u248D"] = "\u0036\u002E"; - t["\u248E"] = "\u0037\u002E"; - t["\u248F"] = "\u0038\u002E"; - t["\u2490"] = "\u0039\u002E"; - t["\u2491"] = "\u0031\u0030\u002E"; - t["\u2492"] = "\u0031\u0031\u002E"; - t["\u2493"] = "\u0031\u0032\u002E"; - t["\u2494"] = "\u0031\u0033\u002E"; - t["\u2495"] = "\u0031\u0034\u002E"; - t["\u2496"] = "\u0031\u0035\u002E"; - t["\u2497"] = "\u0031\u0036\u002E"; - t["\u2498"] = "\u0031\u0037\u002E"; - t["\u2499"] = "\u0031\u0038\u002E"; - t["\u249A"] = "\u0031\u0039\u002E"; - t["\u249B"] = "\u0032\u0030\u002E"; - t["\u249C"] = "\u0028\u0061\u0029"; - t["\u249D"] = "\u0028\u0062\u0029"; - t["\u249E"] = "\u0028\u0063\u0029"; - t["\u249F"] = "\u0028\u0064\u0029"; - t["\u24A0"] = "\u0028\u0065\u0029"; - t["\u24A1"] = "\u0028\u0066\u0029"; - t["\u24A2"] = "\u0028\u0067\u0029"; - t["\u24A3"] = "\u0028\u0068\u0029"; - t["\u24A4"] = "\u0028\u0069\u0029"; - t["\u24A5"] = "\u0028\u006A\u0029"; - t["\u24A6"] = "\u0028\u006B\u0029"; - t["\u24A7"] = "\u0028\u006C\u0029"; - t["\u24A8"] = "\u0028\u006D\u0029"; - t["\u24A9"] = "\u0028\u006E\u0029"; - t["\u24AA"] = "\u0028\u006F\u0029"; - t["\u24AB"] = "\u0028\u0070\u0029"; - t["\u24AC"] = "\u0028\u0071\u0029"; - t["\u24AD"] = "\u0028\u0072\u0029"; - t["\u24AE"] = "\u0028\u0073\u0029"; - t["\u24AF"] = "\u0028\u0074\u0029"; - t["\u24B0"] = "\u0028\u0075\u0029"; - t["\u24B1"] = "\u0028\u0076\u0029"; - t["\u24B2"] = "\u0028\u0077\u0029"; - t["\u24B3"] = "\u0028\u0078\u0029"; - t["\u24B4"] = "\u0028\u0079\u0029"; - t["\u24B5"] = "\u0028\u007A\u0029"; - t["\u2A0C"] = "\u222B\u222B\u222B\u222B"; - t["\u2A74"] = "\u003A\u003A\u003D"; - t["\u2A75"] = "\u003D\u003D"; - t["\u2A76"] = "\u003D\u003D\u003D"; - t["\u2E9F"] = "\u6BCD"; - t["\u2EF3"] = "\u9F9F"; - t["\u2F00"] = "\u4E00"; - t["\u2F01"] = "\u4E28"; - t["\u2F02"] = "\u4E36"; - t["\u2F03"] = "\u4E3F"; - t["\u2F04"] = "\u4E59"; - t["\u2F05"] = "\u4E85"; - t["\u2F06"] = "\u4E8C"; - t["\u2F07"] = "\u4EA0"; - t["\u2F08"] = "\u4EBA"; - t["\u2F09"] = "\u513F"; - t["\u2F0A"] = "\u5165"; - t["\u2F0B"] = "\u516B"; - t["\u2F0C"] = "\u5182"; - t["\u2F0D"] = "\u5196"; - t["\u2F0E"] = "\u51AB"; - t["\u2F0F"] = "\u51E0"; - t["\u2F10"] = "\u51F5"; - t["\u2F11"] = "\u5200"; - t["\u2F12"] = "\u529B"; - t["\u2F13"] = "\u52F9"; - t["\u2F14"] = "\u5315"; - t["\u2F15"] = "\u531A"; - t["\u2F16"] = "\u5338"; - t["\u2F17"] = "\u5341"; - t["\u2F18"] = "\u535C"; - t["\u2F19"] = "\u5369"; - t["\u2F1A"] = "\u5382"; - t["\u2F1B"] = "\u53B6"; - t["\u2F1C"] = "\u53C8"; - t["\u2F1D"] = "\u53E3"; - t["\u2F1E"] = "\u56D7"; - t["\u2F1F"] = "\u571F"; - t["\u2F20"] = "\u58EB"; - t["\u2F21"] = "\u5902"; - t["\u2F22"] = "\u590A"; - t["\u2F23"] = "\u5915"; - t["\u2F24"] = "\u5927"; - t["\u2F25"] = "\u5973"; - t["\u2F26"] = "\u5B50"; - t["\u2F27"] = "\u5B80"; - t["\u2F28"] = "\u5BF8"; - t["\u2F29"] = "\u5C0F"; - t["\u2F2A"] = "\u5C22"; - t["\u2F2B"] = "\u5C38"; - t["\u2F2C"] = "\u5C6E"; - t["\u2F2D"] = "\u5C71"; - t["\u2F2E"] = "\u5DDB"; - t["\u2F2F"] = "\u5DE5"; - t["\u2F30"] = "\u5DF1"; - t["\u2F31"] = "\u5DFE"; - t["\u2F32"] = "\u5E72"; - t["\u2F33"] = "\u5E7A"; - t["\u2F34"] = "\u5E7F"; - t["\u2F35"] = "\u5EF4"; - t["\u2F36"] = "\u5EFE"; - t["\u2F37"] = "\u5F0B"; - t["\u2F38"] = "\u5F13"; - t["\u2F39"] = "\u5F50"; - t["\u2F3A"] = "\u5F61"; - t["\u2F3B"] = "\u5F73"; - t["\u2F3C"] = "\u5FC3"; - t["\u2F3D"] = "\u6208"; - t["\u2F3E"] = "\u6236"; - t["\u2F3F"] = "\u624B"; - t["\u2F40"] = "\u652F"; - t["\u2F41"] = "\u6534"; - t["\u2F42"] = "\u6587"; - t["\u2F43"] = "\u6597"; - t["\u2F44"] = "\u65A4"; - t["\u2F45"] = "\u65B9"; - t["\u2F46"] = "\u65E0"; - t["\u2F47"] = "\u65E5"; - t["\u2F48"] = "\u66F0"; - t["\u2F49"] = "\u6708"; - t["\u2F4A"] = "\u6728"; - t["\u2F4B"] = "\u6B20"; - t["\u2F4C"] = "\u6B62"; - t["\u2F4D"] = "\u6B79"; - t["\u2F4E"] = "\u6BB3"; - t["\u2F4F"] = "\u6BCB"; - t["\u2F50"] = "\u6BD4"; - t["\u2F51"] = "\u6BDB"; - t["\u2F52"] = "\u6C0F"; - t["\u2F53"] = "\u6C14"; - t["\u2F54"] = "\u6C34"; - t["\u2F55"] = "\u706B"; - t["\u2F56"] = "\u722A"; - t["\u2F57"] = "\u7236"; - t["\u2F58"] = "\u723B"; - t["\u2F59"] = "\u723F"; - t["\u2F5A"] = "\u7247"; - t["\u2F5B"] = "\u7259"; - t["\u2F5C"] = "\u725B"; - t["\u2F5D"] = "\u72AC"; - t["\u2F5E"] = "\u7384"; - t["\u2F5F"] = "\u7389"; - t["\u2F60"] = "\u74DC"; - t["\u2F61"] = "\u74E6"; - t["\u2F62"] = "\u7518"; - t["\u2F63"] = "\u751F"; - t["\u2F64"] = "\u7528"; - t["\u2F65"] = "\u7530"; - t["\u2F66"] = "\u758B"; - t["\u2F67"] = "\u7592"; - t["\u2F68"] = "\u7676"; - t["\u2F69"] = "\u767D"; - t["\u2F6A"] = "\u76AE"; - t["\u2F6B"] = "\u76BF"; - t["\u2F6C"] = "\u76EE"; - t["\u2F6D"] = "\u77DB"; - t["\u2F6E"] = "\u77E2"; - t["\u2F6F"] = "\u77F3"; - t["\u2F70"] = "\u793A"; - t["\u2F71"] = "\u79B8"; - t["\u2F72"] = "\u79BE"; - t["\u2F73"] = "\u7A74"; - t["\u2F74"] = "\u7ACB"; - t["\u2F75"] = "\u7AF9"; - t["\u2F76"] = "\u7C73"; - t["\u2F77"] = "\u7CF8"; - t["\u2F78"] = "\u7F36"; - t["\u2F79"] = "\u7F51"; - t["\u2F7A"] = "\u7F8A"; - t["\u2F7B"] = "\u7FBD"; - t["\u2F7C"] = "\u8001"; - t["\u2F7D"] = "\u800C"; - t["\u2F7E"] = "\u8012"; - t["\u2F7F"] = "\u8033"; - t["\u2F80"] = "\u807F"; - t["\u2F81"] = "\u8089"; - t["\u2F82"] = "\u81E3"; - t["\u2F83"] = "\u81EA"; - t["\u2F84"] = "\u81F3"; - t["\u2F85"] = "\u81FC"; - t["\u2F86"] = "\u820C"; - t["\u2F87"] = "\u821B"; - t["\u2F88"] = "\u821F"; - t["\u2F89"] = "\u826E"; - t["\u2F8A"] = "\u8272"; - t["\u2F8B"] = "\u8278"; - t["\u2F8C"] = "\u864D"; - t["\u2F8D"] = "\u866B"; - t["\u2F8E"] = "\u8840"; - t["\u2F8F"] = "\u884C"; - t["\u2F90"] = "\u8863"; - t["\u2F91"] = "\u897E"; - t["\u2F92"] = "\u898B"; - t["\u2F93"] = "\u89D2"; - t["\u2F94"] = "\u8A00"; - t["\u2F95"] = "\u8C37"; - t["\u2F96"] = "\u8C46"; - t["\u2F97"] = "\u8C55"; - t["\u2F98"] = "\u8C78"; - t["\u2F99"] = "\u8C9D"; - t["\u2F9A"] = "\u8D64"; - t["\u2F9B"] = "\u8D70"; - t["\u2F9C"] = "\u8DB3"; - t["\u2F9D"] = "\u8EAB"; - t["\u2F9E"] = "\u8ECA"; - t["\u2F9F"] = "\u8F9B"; - t["\u2FA0"] = "\u8FB0"; - t["\u2FA1"] = "\u8FB5"; - t["\u2FA2"] = "\u9091"; - t["\u2FA3"] = "\u9149"; - t["\u2FA4"] = "\u91C6"; - t["\u2FA5"] = "\u91CC"; - t["\u2FA6"] = "\u91D1"; - t["\u2FA7"] = "\u9577"; - t["\u2FA8"] = "\u9580"; - t["\u2FA9"] = "\u961C"; - t["\u2FAA"] = "\u96B6"; - t["\u2FAB"] = "\u96B9"; - t["\u2FAC"] = "\u96E8"; - t["\u2FAD"] = "\u9751"; - t["\u2FAE"] = "\u975E"; - t["\u2FAF"] = "\u9762"; - t["\u2FB0"] = "\u9769"; - t["\u2FB1"] = "\u97CB"; - t["\u2FB2"] = "\u97ED"; - t["\u2FB3"] = "\u97F3"; - t["\u2FB4"] = "\u9801"; - t["\u2FB5"] = "\u98A8"; - t["\u2FB6"] = "\u98DB"; - t["\u2FB7"] = "\u98DF"; - t["\u2FB8"] = "\u9996"; - t["\u2FB9"] = "\u9999"; - t["\u2FBA"] = "\u99AC"; - t["\u2FBB"] = "\u9AA8"; - t["\u2FBC"] = "\u9AD8"; - t["\u2FBD"] = "\u9ADF"; - t["\u2FBE"] = "\u9B25"; - t["\u2FBF"] = "\u9B2F"; - t["\u2FC0"] = "\u9B32"; - t["\u2FC1"] = "\u9B3C"; - t["\u2FC2"] = "\u9B5A"; - t["\u2FC3"] = "\u9CE5"; - t["\u2FC4"] = "\u9E75"; - t["\u2FC5"] = "\u9E7F"; - t["\u2FC6"] = "\u9EA5"; - t["\u2FC7"] = "\u9EBB"; - t["\u2FC8"] = "\u9EC3"; - t["\u2FC9"] = "\u9ECD"; - t["\u2FCA"] = "\u9ED1"; - t["\u2FCB"] = "\u9EF9"; - t["\u2FCC"] = "\u9EFD"; - t["\u2FCD"] = "\u9F0E"; - t["\u2FCE"] = "\u9F13"; - t["\u2FCF"] = "\u9F20"; - t["\u2FD0"] = "\u9F3B"; - t["\u2FD1"] = "\u9F4A"; - t["\u2FD2"] = "\u9F52"; - t["\u2FD3"] = "\u9F8D"; - t["\u2FD4"] = "\u9F9C"; - t["\u2FD5"] = "\u9FA0"; - t["\u3036"] = "\u3012"; - t["\u3038"] = "\u5341"; - t["\u3039"] = "\u5344"; - t["\u303A"] = "\u5345"; - t["\u309B"] = "\u0020\u3099"; - t["\u309C"] = "\u0020\u309A"; - t["\u3131"] = "\u1100"; - t["\u3132"] = "\u1101"; - t["\u3133"] = "\u11AA"; - t["\u3134"] = "\u1102"; - t["\u3135"] = "\u11AC"; - t["\u3136"] = "\u11AD"; - t["\u3137"] = "\u1103"; - t["\u3138"] = "\u1104"; - t["\u3139"] = "\u1105"; - t["\u313A"] = "\u11B0"; - t["\u313B"] = "\u11B1"; - t["\u313C"] = "\u11B2"; - t["\u313D"] = "\u11B3"; - t["\u313E"] = "\u11B4"; - t["\u313F"] = "\u11B5"; - t["\u3140"] = "\u111A"; - t["\u3141"] = "\u1106"; - t["\u3142"] = "\u1107"; - t["\u3143"] = "\u1108"; - t["\u3144"] = "\u1121"; - t["\u3145"] = "\u1109"; - t["\u3146"] = "\u110A"; - t["\u3147"] = "\u110B"; - t["\u3148"] = "\u110C"; - t["\u3149"] = "\u110D"; - t["\u314A"] = "\u110E"; - t["\u314B"] = "\u110F"; - t["\u314C"] = "\u1110"; - t["\u314D"] = "\u1111"; - t["\u314E"] = "\u1112"; - t["\u314F"] = "\u1161"; - t["\u3150"] = "\u1162"; - t["\u3151"] = "\u1163"; - t["\u3152"] = "\u1164"; - t["\u3153"] = "\u1165"; - t["\u3154"] = "\u1166"; - t["\u3155"] = "\u1167"; - t["\u3156"] = "\u1168"; - t["\u3157"] = "\u1169"; - t["\u3158"] = "\u116A"; - t["\u3159"] = "\u116B"; - t["\u315A"] = "\u116C"; - t["\u315B"] = "\u116D"; - t["\u315C"] = "\u116E"; - t["\u315D"] = "\u116F"; - t["\u315E"] = "\u1170"; - t["\u315F"] = "\u1171"; - t["\u3160"] = "\u1172"; - t["\u3161"] = "\u1173"; - t["\u3162"] = "\u1174"; - t["\u3163"] = "\u1175"; - t["\u3164"] = "\u1160"; - t["\u3165"] = "\u1114"; - t["\u3166"] = "\u1115"; - t["\u3167"] = "\u11C7"; - t["\u3168"] = "\u11C8"; - t["\u3169"] = "\u11CC"; - t["\u316A"] = "\u11CE"; - t["\u316B"] = "\u11D3"; - t["\u316C"] = "\u11D7"; - t["\u316D"] = "\u11D9"; - t["\u316E"] = "\u111C"; - t["\u316F"] = "\u11DD"; - t["\u3170"] = "\u11DF"; - t["\u3171"] = "\u111D"; - t["\u3172"] = "\u111E"; - t["\u3173"] = "\u1120"; - t["\u3174"] = "\u1122"; - t["\u3175"] = "\u1123"; - t["\u3176"] = "\u1127"; - t["\u3177"] = "\u1129"; - t["\u3178"] = "\u112B"; - t["\u3179"] = "\u112C"; - t["\u317A"] = "\u112D"; - t["\u317B"] = "\u112E"; - t["\u317C"] = "\u112F"; - t["\u317D"] = "\u1132"; - t["\u317E"] = "\u1136"; - t["\u317F"] = "\u1140"; - t["\u3180"] = "\u1147"; - t["\u3181"] = "\u114C"; - t["\u3182"] = "\u11F1"; - t["\u3183"] = "\u11F2"; - t["\u3184"] = "\u1157"; - t["\u3185"] = "\u1158"; - t["\u3186"] = "\u1159"; - t["\u3187"] = "\u1184"; - t["\u3188"] = "\u1185"; - t["\u3189"] = "\u1188"; - t["\u318A"] = "\u1191"; - t["\u318B"] = "\u1192"; - t["\u318C"] = "\u1194"; - t["\u318D"] = "\u119E"; - t["\u318E"] = "\u11A1"; - t["\u3200"] = "\u0028\u1100\u0029"; - t["\u3201"] = "\u0028\u1102\u0029"; - t["\u3202"] = "\u0028\u1103\u0029"; - t["\u3203"] = "\u0028\u1105\u0029"; - t["\u3204"] = "\u0028\u1106\u0029"; - t["\u3205"] = "\u0028\u1107\u0029"; - t["\u3206"] = "\u0028\u1109\u0029"; - t["\u3207"] = "\u0028\u110B\u0029"; - t["\u3208"] = "\u0028\u110C\u0029"; - t["\u3209"] = "\u0028\u110E\u0029"; - t["\u320A"] = "\u0028\u110F\u0029"; - t["\u320B"] = "\u0028\u1110\u0029"; - t["\u320C"] = "\u0028\u1111\u0029"; - t["\u320D"] = "\u0028\u1112\u0029"; - t["\u320E"] = "\u0028\u1100\u1161\u0029"; - t["\u320F"] = "\u0028\u1102\u1161\u0029"; - t["\u3210"] = "\u0028\u1103\u1161\u0029"; - t["\u3211"] = "\u0028\u1105\u1161\u0029"; - t["\u3212"] = "\u0028\u1106\u1161\u0029"; - t["\u3213"] = "\u0028\u1107\u1161\u0029"; - t["\u3214"] = "\u0028\u1109\u1161\u0029"; - t["\u3215"] = "\u0028\u110B\u1161\u0029"; - t["\u3216"] = "\u0028\u110C\u1161\u0029"; - t["\u3217"] = "\u0028\u110E\u1161\u0029"; - t["\u3218"] = "\u0028\u110F\u1161\u0029"; - t["\u3219"] = "\u0028\u1110\u1161\u0029"; - t["\u321A"] = "\u0028\u1111\u1161\u0029"; - t["\u321B"] = "\u0028\u1112\u1161\u0029"; - t["\u321C"] = "\u0028\u110C\u116E\u0029"; - t["\u321D"] = "\u0028\u110B\u1169\u110C\u1165\u11AB\u0029"; - t["\u321E"] = "\u0028\u110B\u1169\u1112\u116E\u0029"; - t["\u3220"] = "\u0028\u4E00\u0029"; - t["\u3221"] = "\u0028\u4E8C\u0029"; - t["\u3222"] = "\u0028\u4E09\u0029"; - t["\u3223"] = "\u0028\u56DB\u0029"; - t["\u3224"] = "\u0028\u4E94\u0029"; - t["\u3225"] = "\u0028\u516D\u0029"; - t["\u3226"] = "\u0028\u4E03\u0029"; - t["\u3227"] = "\u0028\u516B\u0029"; - t["\u3228"] = "\u0028\u4E5D\u0029"; - t["\u3229"] = "\u0028\u5341\u0029"; - t["\u322A"] = "\u0028\u6708\u0029"; - t["\u322B"] = "\u0028\u706B\u0029"; - t["\u322C"] = "\u0028\u6C34\u0029"; - t["\u322D"] = "\u0028\u6728\u0029"; - t["\u322E"] = "\u0028\u91D1\u0029"; - t["\u322F"] = "\u0028\u571F\u0029"; - t["\u3230"] = "\u0028\u65E5\u0029"; - t["\u3231"] = "\u0028\u682A\u0029"; - t["\u3232"] = "\u0028\u6709\u0029"; - t["\u3233"] = "\u0028\u793E\u0029"; - t["\u3234"] = "\u0028\u540D\u0029"; - t["\u3235"] = "\u0028\u7279\u0029"; - t["\u3236"] = "\u0028\u8CA1\u0029"; - t["\u3237"] = "\u0028\u795D\u0029"; - t["\u3238"] = "\u0028\u52B4\u0029"; - t["\u3239"] = "\u0028\u4EE3\u0029"; - t["\u323A"] = "\u0028\u547C\u0029"; - t["\u323B"] = "\u0028\u5B66\u0029"; - t["\u323C"] = "\u0028\u76E3\u0029"; - t["\u323D"] = "\u0028\u4F01\u0029"; - t["\u323E"] = "\u0028\u8CC7\u0029"; - t["\u323F"] = "\u0028\u5354\u0029"; - t["\u3240"] = "\u0028\u796D\u0029"; - t["\u3241"] = "\u0028\u4F11\u0029"; - t["\u3242"] = "\u0028\u81EA\u0029"; - t["\u3243"] = "\u0028\u81F3\u0029"; - t["\u32C0"] = "\u0031\u6708"; - t["\u32C1"] = "\u0032\u6708"; - t["\u32C2"] = "\u0033\u6708"; - t["\u32C3"] = "\u0034\u6708"; - t["\u32C4"] = "\u0035\u6708"; - t["\u32C5"] = "\u0036\u6708"; - t["\u32C6"] = "\u0037\u6708"; - t["\u32C7"] = "\u0038\u6708"; - t["\u32C8"] = "\u0039\u6708"; - t["\u32C9"] = "\u0031\u0030\u6708"; - t["\u32CA"] = "\u0031\u0031\u6708"; - t["\u32CB"] = "\u0031\u0032\u6708"; - t["\u3358"] = "\u0030\u70B9"; - t["\u3359"] = "\u0031\u70B9"; - t["\u335A"] = "\u0032\u70B9"; - t["\u335B"] = "\u0033\u70B9"; - t["\u335C"] = "\u0034\u70B9"; - t["\u335D"] = "\u0035\u70B9"; - t["\u335E"] = "\u0036\u70B9"; - t["\u335F"] = "\u0037\u70B9"; - t["\u3360"] = "\u0038\u70B9"; - t["\u3361"] = "\u0039\u70B9"; - t["\u3362"] = "\u0031\u0030\u70B9"; - t["\u3363"] = "\u0031\u0031\u70B9"; - t["\u3364"] = "\u0031\u0032\u70B9"; - t["\u3365"] = "\u0031\u0033\u70B9"; - t["\u3366"] = "\u0031\u0034\u70B9"; - t["\u3367"] = "\u0031\u0035\u70B9"; - t["\u3368"] = "\u0031\u0036\u70B9"; - t["\u3369"] = "\u0031\u0037\u70B9"; - t["\u336A"] = "\u0031\u0038\u70B9"; - t["\u336B"] = "\u0031\u0039\u70B9"; - t["\u336C"] = "\u0032\u0030\u70B9"; - t["\u336D"] = "\u0032\u0031\u70B9"; - t["\u336E"] = "\u0032\u0032\u70B9"; - t["\u336F"] = "\u0032\u0033\u70B9"; - t["\u3370"] = "\u0032\u0034\u70B9"; - t["\u33E0"] = "\u0031\u65E5"; - t["\u33E1"] = "\u0032\u65E5"; - t["\u33E2"] = "\u0033\u65E5"; - t["\u33E3"] = "\u0034\u65E5"; - t["\u33E4"] = "\u0035\u65E5"; - t["\u33E5"] = "\u0036\u65E5"; - t["\u33E6"] = "\u0037\u65E5"; - t["\u33E7"] = "\u0038\u65E5"; - t["\u33E8"] = "\u0039\u65E5"; - t["\u33E9"] = "\u0031\u0030\u65E5"; - t["\u33EA"] = "\u0031\u0031\u65E5"; - t["\u33EB"] = "\u0031\u0032\u65E5"; - t["\u33EC"] = "\u0031\u0033\u65E5"; - t["\u33ED"] = "\u0031\u0034\u65E5"; - t["\u33EE"] = "\u0031\u0035\u65E5"; - t["\u33EF"] = "\u0031\u0036\u65E5"; - t["\u33F0"] = "\u0031\u0037\u65E5"; - t["\u33F1"] = "\u0031\u0038\u65E5"; - t["\u33F2"] = "\u0031\u0039\u65E5"; - t["\u33F3"] = "\u0032\u0030\u65E5"; - t["\u33F4"] = "\u0032\u0031\u65E5"; - t["\u33F5"] = "\u0032\u0032\u65E5"; - t["\u33F6"] = "\u0032\u0033\u65E5"; - t["\u33F7"] = "\u0032\u0034\u65E5"; - t["\u33F8"] = "\u0032\u0035\u65E5"; - t["\u33F9"] = "\u0032\u0036\u65E5"; - t["\u33FA"] = "\u0032\u0037\u65E5"; - t["\u33FB"] = "\u0032\u0038\u65E5"; - t["\u33FC"] = "\u0032\u0039\u65E5"; - t["\u33FD"] = "\u0033\u0030\u65E5"; - t["\u33FE"] = "\u0033\u0031\u65E5"; - t["\uFB00"] = "\u0066\u0066"; - t["\uFB01"] = "\u0066\u0069"; - t["\uFB02"] = "\u0066\u006C"; - t["\uFB03"] = "\u0066\u0066\u0069"; - t["\uFB04"] = "\u0066\u0066\u006C"; - t["\uFB05"] = "\u017F\u0074"; - t["\uFB06"] = "\u0073\u0074"; - t["\uFB13"] = "\u0574\u0576"; - t["\uFB14"] = "\u0574\u0565"; - t["\uFB15"] = "\u0574\u056B"; - t["\uFB16"] = "\u057E\u0576"; - t["\uFB17"] = "\u0574\u056D"; - t["\uFB4F"] = "\u05D0\u05DC"; - t["\uFB50"] = "\u0671"; - t["\uFB51"] = "\u0671"; - t["\uFB52"] = "\u067B"; - t["\uFB53"] = "\u067B"; - t["\uFB54"] = "\u067B"; - t["\uFB55"] = "\u067B"; - t["\uFB56"] = "\u067E"; - t["\uFB57"] = "\u067E"; - t["\uFB58"] = "\u067E"; - t["\uFB59"] = "\u067E"; - t["\uFB5A"] = "\u0680"; - t["\uFB5B"] = "\u0680"; - t["\uFB5C"] = "\u0680"; - t["\uFB5D"] = "\u0680"; - t["\uFB5E"] = "\u067A"; - t["\uFB5F"] = "\u067A"; - t["\uFB60"] = "\u067A"; - t["\uFB61"] = "\u067A"; - t["\uFB62"] = "\u067F"; - t["\uFB63"] = "\u067F"; - t["\uFB64"] = "\u067F"; - t["\uFB65"] = "\u067F"; - t["\uFB66"] = "\u0679"; - t["\uFB67"] = "\u0679"; - t["\uFB68"] = "\u0679"; - t["\uFB69"] = "\u0679"; - t["\uFB6A"] = "\u06A4"; - t["\uFB6B"] = "\u06A4"; - t["\uFB6C"] = "\u06A4"; - t["\uFB6D"] = "\u06A4"; - t["\uFB6E"] = "\u06A6"; - t["\uFB6F"] = "\u06A6"; - t["\uFB70"] = "\u06A6"; - t["\uFB71"] = "\u06A6"; - t["\uFB72"] = "\u0684"; - t["\uFB73"] = "\u0684"; - t["\uFB74"] = "\u0684"; - t["\uFB75"] = "\u0684"; - t["\uFB76"] = "\u0683"; - t["\uFB77"] = "\u0683"; - t["\uFB78"] = "\u0683"; - t["\uFB79"] = "\u0683"; - t["\uFB7A"] = "\u0686"; - t["\uFB7B"] = "\u0686"; - t["\uFB7C"] = "\u0686"; - t["\uFB7D"] = "\u0686"; - t["\uFB7E"] = "\u0687"; - t["\uFB7F"] = "\u0687"; - t["\uFB80"] = "\u0687"; - t["\uFB81"] = "\u0687"; - t["\uFB82"] = "\u068D"; - t["\uFB83"] = "\u068D"; - t["\uFB84"] = "\u068C"; - t["\uFB85"] = "\u068C"; - t["\uFB86"] = "\u068E"; - t["\uFB87"] = "\u068E"; - t["\uFB88"] = "\u0688"; - t["\uFB89"] = "\u0688"; - t["\uFB8A"] = "\u0698"; - t["\uFB8B"] = "\u0698"; - t["\uFB8C"] = "\u0691"; - t["\uFB8D"] = "\u0691"; - t["\uFB8E"] = "\u06A9"; - t["\uFB8F"] = "\u06A9"; - t["\uFB90"] = "\u06A9"; - t["\uFB91"] = "\u06A9"; - t["\uFB92"] = "\u06AF"; - t["\uFB93"] = "\u06AF"; - t["\uFB94"] = "\u06AF"; - t["\uFB95"] = "\u06AF"; - t["\uFB96"] = "\u06B3"; - t["\uFB97"] = "\u06B3"; - t["\uFB98"] = "\u06B3"; - t["\uFB99"] = "\u06B3"; - t["\uFB9A"] = "\u06B1"; - t["\uFB9B"] = "\u06B1"; - t["\uFB9C"] = "\u06B1"; - t["\uFB9D"] = "\u06B1"; - t["\uFB9E"] = "\u06BA"; - t["\uFB9F"] = "\u06BA"; - t["\uFBA0"] = "\u06BB"; - t["\uFBA1"] = "\u06BB"; - t["\uFBA2"] = "\u06BB"; - t["\uFBA3"] = "\u06BB"; - t["\uFBA4"] = "\u06C0"; - t["\uFBA5"] = "\u06C0"; - t["\uFBA6"] = "\u06C1"; - t["\uFBA7"] = "\u06C1"; - t["\uFBA8"] = "\u06C1"; - t["\uFBA9"] = "\u06C1"; - t["\uFBAA"] = "\u06BE"; - t["\uFBAB"] = "\u06BE"; - t["\uFBAC"] = "\u06BE"; - t["\uFBAD"] = "\u06BE"; - t["\uFBAE"] = "\u06D2"; - t["\uFBAF"] = "\u06D2"; - t["\uFBB0"] = "\u06D3"; - t["\uFBB1"] = "\u06D3"; - t["\uFBD3"] = "\u06AD"; - t["\uFBD4"] = "\u06AD"; - t["\uFBD5"] = "\u06AD"; - t["\uFBD6"] = "\u06AD"; - t["\uFBD7"] = "\u06C7"; - t["\uFBD8"] = "\u06C7"; - t["\uFBD9"] = "\u06C6"; - t["\uFBDA"] = "\u06C6"; - t["\uFBDB"] = "\u06C8"; - t["\uFBDC"] = "\u06C8"; - t["\uFBDD"] = "\u0677"; - t["\uFBDE"] = "\u06CB"; - t["\uFBDF"] = "\u06CB"; - t["\uFBE0"] = "\u06C5"; - t["\uFBE1"] = "\u06C5"; - t["\uFBE2"] = "\u06C9"; - t["\uFBE3"] = "\u06C9"; - t["\uFBE4"] = "\u06D0"; - t["\uFBE5"] = "\u06D0"; - t["\uFBE6"] = "\u06D0"; - t["\uFBE7"] = "\u06D0"; - t["\uFBE8"] = "\u0649"; - t["\uFBE9"] = "\u0649"; - t["\uFBEA"] = "\u0626\u0627"; - t["\uFBEB"] = "\u0626\u0627"; - t["\uFBEC"] = "\u0626\u06D5"; - t["\uFBED"] = "\u0626\u06D5"; - t["\uFBEE"] = "\u0626\u0648"; - t["\uFBEF"] = "\u0626\u0648"; - t["\uFBF0"] = "\u0626\u06C7"; - t["\uFBF1"] = "\u0626\u06C7"; - t["\uFBF2"] = "\u0626\u06C6"; - t["\uFBF3"] = "\u0626\u06C6"; - t["\uFBF4"] = "\u0626\u06C8"; - t["\uFBF5"] = "\u0626\u06C8"; - t["\uFBF6"] = "\u0626\u06D0"; - t["\uFBF7"] = "\u0626\u06D0"; - t["\uFBF8"] = "\u0626\u06D0"; - t["\uFBF9"] = "\u0626\u0649"; - t["\uFBFA"] = "\u0626\u0649"; - t["\uFBFB"] = "\u0626\u0649"; - t["\uFBFC"] = "\u06CC"; - t["\uFBFD"] = "\u06CC"; - t["\uFBFE"] = "\u06CC"; - t["\uFBFF"] = "\u06CC"; - t["\uFC00"] = "\u0626\u062C"; - t["\uFC01"] = "\u0626\u062D"; - t["\uFC02"] = "\u0626\u0645"; - t["\uFC03"] = "\u0626\u0649"; - t["\uFC04"] = "\u0626\u064A"; - t["\uFC05"] = "\u0628\u062C"; - t["\uFC06"] = "\u0628\u062D"; - t["\uFC07"] = "\u0628\u062E"; - t["\uFC08"] = "\u0628\u0645"; - t["\uFC09"] = "\u0628\u0649"; - t["\uFC0A"] = "\u0628\u064A"; - t["\uFC0B"] = "\u062A\u062C"; - t["\uFC0C"] = "\u062A\u062D"; - t["\uFC0D"] = "\u062A\u062E"; - t["\uFC0E"] = "\u062A\u0645"; - t["\uFC0F"] = "\u062A\u0649"; - t["\uFC10"] = "\u062A\u064A"; - t["\uFC11"] = "\u062B\u062C"; - t["\uFC12"] = "\u062B\u0645"; - t["\uFC13"] = "\u062B\u0649"; - t["\uFC14"] = "\u062B\u064A"; - t["\uFC15"] = "\u062C\u062D"; - t["\uFC16"] = "\u062C\u0645"; - t["\uFC17"] = "\u062D\u062C"; - t["\uFC18"] = "\u062D\u0645"; - t["\uFC19"] = "\u062E\u062C"; - t["\uFC1A"] = "\u062E\u062D"; - t["\uFC1B"] = "\u062E\u0645"; - t["\uFC1C"] = "\u0633\u062C"; - t["\uFC1D"] = "\u0633\u062D"; - t["\uFC1E"] = "\u0633\u062E"; - t["\uFC1F"] = "\u0633\u0645"; - t["\uFC20"] = "\u0635\u062D"; - t["\uFC21"] = "\u0635\u0645"; - t["\uFC22"] = "\u0636\u062C"; - t["\uFC23"] = "\u0636\u062D"; - t["\uFC24"] = "\u0636\u062E"; - t["\uFC25"] = "\u0636\u0645"; - t["\uFC26"] = "\u0637\u062D"; - t["\uFC27"] = "\u0637\u0645"; - t["\uFC28"] = "\u0638\u0645"; - t["\uFC29"] = "\u0639\u062C"; - t["\uFC2A"] = "\u0639\u0645"; - t["\uFC2B"] = "\u063A\u062C"; - t["\uFC2C"] = "\u063A\u0645"; - t["\uFC2D"] = "\u0641\u062C"; - t["\uFC2E"] = "\u0641\u062D"; - t["\uFC2F"] = "\u0641\u062E"; - t["\uFC30"] = "\u0641\u0645"; - t["\uFC31"] = "\u0641\u0649"; - t["\uFC32"] = "\u0641\u064A"; - t["\uFC33"] = "\u0642\u062D"; - t["\uFC34"] = "\u0642\u0645"; - t["\uFC35"] = "\u0642\u0649"; - t["\uFC36"] = "\u0642\u064A"; - t["\uFC37"] = "\u0643\u0627"; - t["\uFC38"] = "\u0643\u062C"; - t["\uFC39"] = "\u0643\u062D"; - t["\uFC3A"] = "\u0643\u062E"; - t["\uFC3B"] = "\u0643\u0644"; - t["\uFC3C"] = "\u0643\u0645"; - t["\uFC3D"] = "\u0643\u0649"; - t["\uFC3E"] = "\u0643\u064A"; - t["\uFC3F"] = "\u0644\u062C"; - t["\uFC40"] = "\u0644\u062D"; - t["\uFC41"] = "\u0644\u062E"; - t["\uFC42"] = "\u0644\u0645"; - t["\uFC43"] = "\u0644\u0649"; - t["\uFC44"] = "\u0644\u064A"; - t["\uFC45"] = "\u0645\u062C"; - t["\uFC46"] = "\u0645\u062D"; - t["\uFC47"] = "\u0645\u062E"; - t["\uFC48"] = "\u0645\u0645"; - t["\uFC49"] = "\u0645\u0649"; - t["\uFC4A"] = "\u0645\u064A"; - t["\uFC4B"] = "\u0646\u062C"; - t["\uFC4C"] = "\u0646\u062D"; - t["\uFC4D"] = "\u0646\u062E"; - t["\uFC4E"] = "\u0646\u0645"; - t["\uFC4F"] = "\u0646\u0649"; - t["\uFC50"] = "\u0646\u064A"; - t["\uFC51"] = "\u0647\u062C"; - t["\uFC52"] = "\u0647\u0645"; - t["\uFC53"] = "\u0647\u0649"; - t["\uFC54"] = "\u0647\u064A"; - t["\uFC55"] = "\u064A\u062C"; - t["\uFC56"] = "\u064A\u062D"; - t["\uFC57"] = "\u064A\u062E"; - t["\uFC58"] = "\u064A\u0645"; - t["\uFC59"] = "\u064A\u0649"; - t["\uFC5A"] = "\u064A\u064A"; - t["\uFC5B"] = "\u0630\u0670"; - t["\uFC5C"] = "\u0631\u0670"; - t["\uFC5D"] = "\u0649\u0670"; - t["\uFC5E"] = "\u0020\u064C\u0651"; - t["\uFC5F"] = "\u0020\u064D\u0651"; - t["\uFC60"] = "\u0020\u064E\u0651"; - t["\uFC61"] = "\u0020\u064F\u0651"; - t["\uFC62"] = "\u0020\u0650\u0651"; - t["\uFC63"] = "\u0020\u0651\u0670"; - t["\uFC64"] = "\u0626\u0631"; - t["\uFC65"] = "\u0626\u0632"; - t["\uFC66"] = "\u0626\u0645"; - t["\uFC67"] = "\u0626\u0646"; - t["\uFC68"] = "\u0626\u0649"; - t["\uFC69"] = "\u0626\u064A"; - t["\uFC6A"] = "\u0628\u0631"; - t["\uFC6B"] = "\u0628\u0632"; - t["\uFC6C"] = "\u0628\u0645"; - t["\uFC6D"] = "\u0628\u0646"; - t["\uFC6E"] = "\u0628\u0649"; - t["\uFC6F"] = "\u0628\u064A"; - t["\uFC70"] = "\u062A\u0631"; - t["\uFC71"] = "\u062A\u0632"; - t["\uFC72"] = "\u062A\u0645"; - t["\uFC73"] = "\u062A\u0646"; - t["\uFC74"] = "\u062A\u0649"; - t["\uFC75"] = "\u062A\u064A"; - t["\uFC76"] = "\u062B\u0631"; - t["\uFC77"] = "\u062B\u0632"; - t["\uFC78"] = "\u062B\u0645"; - t["\uFC79"] = "\u062B\u0646"; - t["\uFC7A"] = "\u062B\u0649"; - t["\uFC7B"] = "\u062B\u064A"; - t["\uFC7C"] = "\u0641\u0649"; - t["\uFC7D"] = "\u0641\u064A"; - t["\uFC7E"] = "\u0642\u0649"; - t["\uFC7F"] = "\u0642\u064A"; - t["\uFC80"] = "\u0643\u0627"; - t["\uFC81"] = "\u0643\u0644"; - t["\uFC82"] = "\u0643\u0645"; - t["\uFC83"] = "\u0643\u0649"; - t["\uFC84"] = "\u0643\u064A"; - t["\uFC85"] = "\u0644\u0645"; - t["\uFC86"] = "\u0644\u0649"; - t["\uFC87"] = "\u0644\u064A"; - t["\uFC88"] = "\u0645\u0627"; - t["\uFC89"] = "\u0645\u0645"; - t["\uFC8A"] = "\u0646\u0631"; - t["\uFC8B"] = "\u0646\u0632"; - t["\uFC8C"] = "\u0646\u0645"; - t["\uFC8D"] = "\u0646\u0646"; - t["\uFC8E"] = "\u0646\u0649"; - t["\uFC8F"] = "\u0646\u064A"; - t["\uFC90"] = "\u0649\u0670"; - t["\uFC91"] = "\u064A\u0631"; - t["\uFC92"] = "\u064A\u0632"; - t["\uFC93"] = "\u064A\u0645"; - t["\uFC94"] = "\u064A\u0646"; - t["\uFC95"] = "\u064A\u0649"; - t["\uFC96"] = "\u064A\u064A"; - t["\uFC97"] = "\u0626\u062C"; - t["\uFC98"] = "\u0626\u062D"; - t["\uFC99"] = "\u0626\u062E"; - t["\uFC9A"] = "\u0626\u0645"; - t["\uFC9B"] = "\u0626\u0647"; - t["\uFC9C"] = "\u0628\u062C"; - t["\uFC9D"] = "\u0628\u062D"; - t["\uFC9E"] = "\u0628\u062E"; - t["\uFC9F"] = "\u0628\u0645"; - t["\uFCA0"] = "\u0628\u0647"; - t["\uFCA1"] = "\u062A\u062C"; - t["\uFCA2"] = "\u062A\u062D"; - t["\uFCA3"] = "\u062A\u062E"; - t["\uFCA4"] = "\u062A\u0645"; - t["\uFCA5"] = "\u062A\u0647"; - t["\uFCA6"] = "\u062B\u0645"; - t["\uFCA7"] = "\u062C\u062D"; - t["\uFCA8"] = "\u062C\u0645"; - t["\uFCA9"] = "\u062D\u062C"; - t["\uFCAA"] = "\u062D\u0645"; - t["\uFCAB"] = "\u062E\u062C"; - t["\uFCAC"] = "\u062E\u0645"; - t["\uFCAD"] = "\u0633\u062C"; - t["\uFCAE"] = "\u0633\u062D"; - t["\uFCAF"] = "\u0633\u062E"; - t["\uFCB0"] = "\u0633\u0645"; - t["\uFCB1"] = "\u0635\u062D"; - t["\uFCB2"] = "\u0635\u062E"; - t["\uFCB3"] = "\u0635\u0645"; - t["\uFCB4"] = "\u0636\u062C"; - t["\uFCB5"] = "\u0636\u062D"; - t["\uFCB6"] = "\u0636\u062E"; - t["\uFCB7"] = "\u0636\u0645"; - t["\uFCB8"] = "\u0637\u062D"; - t["\uFCB9"] = "\u0638\u0645"; - t["\uFCBA"] = "\u0639\u062C"; - t["\uFCBB"] = "\u0639\u0645"; - t["\uFCBC"] = "\u063A\u062C"; - t["\uFCBD"] = "\u063A\u0645"; - t["\uFCBE"] = "\u0641\u062C"; - t["\uFCBF"] = "\u0641\u062D"; - t["\uFCC0"] = "\u0641\u062E"; - t["\uFCC1"] = "\u0641\u0645"; - t["\uFCC2"] = "\u0642\u062D"; - t["\uFCC3"] = "\u0642\u0645"; - t["\uFCC4"] = "\u0643\u062C"; - t["\uFCC5"] = "\u0643\u062D"; - t["\uFCC6"] = "\u0643\u062E"; - t["\uFCC7"] = "\u0643\u0644"; - t["\uFCC8"] = "\u0643\u0645"; - t["\uFCC9"] = "\u0644\u062C"; - t["\uFCCA"] = "\u0644\u062D"; - t["\uFCCB"] = "\u0644\u062E"; - t["\uFCCC"] = "\u0644\u0645"; - t["\uFCCD"] = "\u0644\u0647"; - t["\uFCCE"] = "\u0645\u062C"; - t["\uFCCF"] = "\u0645\u062D"; - t["\uFCD0"] = "\u0645\u062E"; - t["\uFCD1"] = "\u0645\u0645"; - t["\uFCD2"] = "\u0646\u062C"; - t["\uFCD3"] = "\u0646\u062D"; - t["\uFCD4"] = "\u0646\u062E"; - t["\uFCD5"] = "\u0646\u0645"; - t["\uFCD6"] = "\u0646\u0647"; - t["\uFCD7"] = "\u0647\u062C"; - t["\uFCD8"] = "\u0647\u0645"; - t["\uFCD9"] = "\u0647\u0670"; - t["\uFCDA"] = "\u064A\u062C"; - t["\uFCDB"] = "\u064A\u062D"; - t["\uFCDC"] = "\u064A\u062E"; - t["\uFCDD"] = "\u064A\u0645"; - t["\uFCDE"] = "\u064A\u0647"; - t["\uFCDF"] = "\u0626\u0645"; - t["\uFCE0"] = "\u0626\u0647"; - t["\uFCE1"] = "\u0628\u0645"; - t["\uFCE2"] = "\u0628\u0647"; - t["\uFCE3"] = "\u062A\u0645"; - t["\uFCE4"] = "\u062A\u0647"; - t["\uFCE5"] = "\u062B\u0645"; - t["\uFCE6"] = "\u062B\u0647"; - t["\uFCE7"] = "\u0633\u0645"; - t["\uFCE8"] = "\u0633\u0647"; - t["\uFCE9"] = "\u0634\u0645"; - t["\uFCEA"] = "\u0634\u0647"; - t["\uFCEB"] = "\u0643\u0644"; - t["\uFCEC"] = "\u0643\u0645"; - t["\uFCED"] = "\u0644\u0645"; - t["\uFCEE"] = "\u0646\u0645"; - t["\uFCEF"] = "\u0646\u0647"; - t["\uFCF0"] = "\u064A\u0645"; - t["\uFCF1"] = "\u064A\u0647"; - t["\uFCF2"] = "\u0640\u064E\u0651"; - t["\uFCF3"] = "\u0640\u064F\u0651"; - t["\uFCF4"] = "\u0640\u0650\u0651"; - t["\uFCF5"] = "\u0637\u0649"; - t["\uFCF6"] = "\u0637\u064A"; - t["\uFCF7"] = "\u0639\u0649"; - t["\uFCF8"] = "\u0639\u064A"; - t["\uFCF9"] = "\u063A\u0649"; - t["\uFCFA"] = "\u063A\u064A"; - t["\uFCFB"] = "\u0633\u0649"; - t["\uFCFC"] = "\u0633\u064A"; - t["\uFCFD"] = "\u0634\u0649"; - t["\uFCFE"] = "\u0634\u064A"; - t["\uFCFF"] = "\u062D\u0649"; - t["\uFD00"] = "\u062D\u064A"; - t["\uFD01"] = "\u062C\u0649"; - t["\uFD02"] = "\u062C\u064A"; - t["\uFD03"] = "\u062E\u0649"; - t["\uFD04"] = "\u062E\u064A"; - t["\uFD05"] = "\u0635\u0649"; - t["\uFD06"] = "\u0635\u064A"; - t["\uFD07"] = "\u0636\u0649"; - t["\uFD08"] = "\u0636\u064A"; - t["\uFD09"] = "\u0634\u062C"; - t["\uFD0A"] = "\u0634\u062D"; - t["\uFD0B"] = "\u0634\u062E"; - t["\uFD0C"] = "\u0634\u0645"; - t["\uFD0D"] = "\u0634\u0631"; - t["\uFD0E"] = "\u0633\u0631"; - t["\uFD0F"] = "\u0635\u0631"; - t["\uFD10"] = "\u0636\u0631"; - t["\uFD11"] = "\u0637\u0649"; - t["\uFD12"] = "\u0637\u064A"; - t["\uFD13"] = "\u0639\u0649"; - t["\uFD14"] = "\u0639\u064A"; - t["\uFD15"] = "\u063A\u0649"; - t["\uFD16"] = "\u063A\u064A"; - t["\uFD17"] = "\u0633\u0649"; - t["\uFD18"] = "\u0633\u064A"; - t["\uFD19"] = "\u0634\u0649"; - t["\uFD1A"] = "\u0634\u064A"; - t["\uFD1B"] = "\u062D\u0649"; - t["\uFD1C"] = "\u062D\u064A"; - t["\uFD1D"] = "\u062C\u0649"; - t["\uFD1E"] = "\u062C\u064A"; - t["\uFD1F"] = "\u062E\u0649"; - t["\uFD20"] = "\u062E\u064A"; - t["\uFD21"] = "\u0635\u0649"; - t["\uFD22"] = "\u0635\u064A"; - t["\uFD23"] = "\u0636\u0649"; - t["\uFD24"] = "\u0636\u064A"; - t["\uFD25"] = "\u0634\u062C"; - t["\uFD26"] = "\u0634\u062D"; - t["\uFD27"] = "\u0634\u062E"; - t["\uFD28"] = "\u0634\u0645"; - t["\uFD29"] = "\u0634\u0631"; - t["\uFD2A"] = "\u0633\u0631"; - t["\uFD2B"] = "\u0635\u0631"; - t["\uFD2C"] = "\u0636\u0631"; - t["\uFD2D"] = "\u0634\u062C"; - t["\uFD2E"] = "\u0634\u062D"; - t["\uFD2F"] = "\u0634\u062E"; - t["\uFD30"] = "\u0634\u0645"; - t["\uFD31"] = "\u0633\u0647"; - t["\uFD32"] = "\u0634\u0647"; - t["\uFD33"] = "\u0637\u0645"; - t["\uFD34"] = "\u0633\u062C"; - t["\uFD35"] = "\u0633\u062D"; - t["\uFD36"] = "\u0633\u062E"; - t["\uFD37"] = "\u0634\u062C"; - t["\uFD38"] = "\u0634\u062D"; - t["\uFD39"] = "\u0634\u062E"; - t["\uFD3A"] = "\u0637\u0645"; - t["\uFD3B"] = "\u0638\u0645"; - t["\uFD3C"] = "\u0627\u064B"; - t["\uFD3D"] = "\u0627\u064B"; - t["\uFD50"] = "\u062A\u062C\u0645"; - t["\uFD51"] = "\u062A\u062D\u062C"; - t["\uFD52"] = "\u062A\u062D\u062C"; - t["\uFD53"] = "\u062A\u062D\u0645"; - t["\uFD54"] = "\u062A\u062E\u0645"; - t["\uFD55"] = "\u062A\u0645\u062C"; - t["\uFD56"] = "\u062A\u0645\u062D"; - t["\uFD57"] = "\u062A\u0645\u062E"; - t["\uFD58"] = "\u062C\u0645\u062D"; - t["\uFD59"] = "\u062C\u0645\u062D"; - t["\uFD5A"] = "\u062D\u0645\u064A"; - t["\uFD5B"] = "\u062D\u0645\u0649"; - t["\uFD5C"] = "\u0633\u062D\u062C"; - t["\uFD5D"] = "\u0633\u062C\u062D"; - t["\uFD5E"] = "\u0633\u062C\u0649"; - t["\uFD5F"] = "\u0633\u0645\u062D"; - t["\uFD60"] = "\u0633\u0645\u062D"; - t["\uFD61"] = "\u0633\u0645\u062C"; - t["\uFD62"] = "\u0633\u0645\u0645"; - t["\uFD63"] = "\u0633\u0645\u0645"; - t["\uFD64"] = "\u0635\u062D\u062D"; - t["\uFD65"] = "\u0635\u062D\u062D"; - t["\uFD66"] = "\u0635\u0645\u0645"; - t["\uFD67"] = "\u0634\u062D\u0645"; - t["\uFD68"] = "\u0634\u062D\u0645"; - t["\uFD69"] = "\u0634\u062C\u064A"; - t["\uFD6A"] = "\u0634\u0645\u062E"; - t["\uFD6B"] = "\u0634\u0645\u062E"; - t["\uFD6C"] = "\u0634\u0645\u0645"; - t["\uFD6D"] = "\u0634\u0645\u0645"; - t["\uFD6E"] = "\u0636\u062D\u0649"; - t["\uFD6F"] = "\u0636\u062E\u0645"; - t["\uFD70"] = "\u0636\u062E\u0645"; - t["\uFD71"] = "\u0637\u0645\u062D"; - t["\uFD72"] = "\u0637\u0645\u062D"; - t["\uFD73"] = "\u0637\u0645\u0645"; - t["\uFD74"] = "\u0637\u0645\u064A"; - t["\uFD75"] = "\u0639\u062C\u0645"; - t["\uFD76"] = "\u0639\u0645\u0645"; - t["\uFD77"] = "\u0639\u0645\u0645"; - t["\uFD78"] = "\u0639\u0645\u0649"; - t["\uFD79"] = "\u063A\u0645\u0645"; - t["\uFD7A"] = "\u063A\u0645\u064A"; - t["\uFD7B"] = "\u063A\u0645\u0649"; - t["\uFD7C"] = "\u0641\u062E\u0645"; - t["\uFD7D"] = "\u0641\u062E\u0645"; - t["\uFD7E"] = "\u0642\u0645\u062D"; - t["\uFD7F"] = "\u0642\u0645\u0645"; - t["\uFD80"] = "\u0644\u062D\u0645"; - t["\uFD81"] = "\u0644\u062D\u064A"; - t["\uFD82"] = "\u0644\u062D\u0649"; - t["\uFD83"] = "\u0644\u062C\u062C"; - t["\uFD84"] = "\u0644\u062C\u062C"; - t["\uFD85"] = "\u0644\u062E\u0645"; - t["\uFD86"] = "\u0644\u062E\u0645"; - t["\uFD87"] = "\u0644\u0645\u062D"; - t["\uFD88"] = "\u0644\u0645\u062D"; - t["\uFD89"] = "\u0645\u062D\u062C"; - t["\uFD8A"] = "\u0645\u062D\u0645"; - t["\uFD8B"] = "\u0645\u062D\u064A"; - t["\uFD8C"] = "\u0645\u062C\u062D"; - t["\uFD8D"] = "\u0645\u062C\u0645"; - t["\uFD8E"] = "\u0645\u062E\u062C"; - t["\uFD8F"] = "\u0645\u062E\u0645"; - t["\uFD92"] = "\u0645\u062C\u062E"; - t["\uFD93"] = "\u0647\u0645\u062C"; - t["\uFD94"] = "\u0647\u0645\u0645"; - t["\uFD95"] = "\u0646\u062D\u0645"; - t["\uFD96"] = "\u0646\u062D\u0649"; - t["\uFD97"] = "\u0646\u062C\u0645"; - t["\uFD98"] = "\u0646\u062C\u0645"; - t["\uFD99"] = "\u0646\u062C\u0649"; - t["\uFD9A"] = "\u0646\u0645\u064A"; - t["\uFD9B"] = "\u0646\u0645\u0649"; - t["\uFD9C"] = "\u064A\u0645\u0645"; - t["\uFD9D"] = "\u064A\u0645\u0645"; - t["\uFD9E"] = "\u0628\u062E\u064A"; - t["\uFD9F"] = "\u062A\u062C\u064A"; - t["\uFDA0"] = "\u062A\u062C\u0649"; - t["\uFDA1"] = "\u062A\u062E\u064A"; - t["\uFDA2"] = "\u062A\u062E\u0649"; - t["\uFDA3"] = "\u062A\u0645\u064A"; - t["\uFDA4"] = "\u062A\u0645\u0649"; - t["\uFDA5"] = "\u062C\u0645\u064A"; - t["\uFDA6"] = "\u062C\u062D\u0649"; - t["\uFDA7"] = "\u062C\u0645\u0649"; - t["\uFDA8"] = "\u0633\u062E\u0649"; - t["\uFDA9"] = "\u0635\u062D\u064A"; - t["\uFDAA"] = "\u0634\u062D\u064A"; - t["\uFDAB"] = "\u0636\u062D\u064A"; - t["\uFDAC"] = "\u0644\u062C\u064A"; - t["\uFDAD"] = "\u0644\u0645\u064A"; - t["\uFDAE"] = "\u064A\u062D\u064A"; - t["\uFDAF"] = "\u064A\u062C\u064A"; - t["\uFDB0"] = "\u064A\u0645\u064A"; - t["\uFDB1"] = "\u0645\u0645\u064A"; - t["\uFDB2"] = "\u0642\u0645\u064A"; - t["\uFDB3"] = "\u0646\u062D\u064A"; - t["\uFDB4"] = "\u0642\u0645\u062D"; - t["\uFDB5"] = "\u0644\u062D\u0645"; - t["\uFDB6"] = "\u0639\u0645\u064A"; - t["\uFDB7"] = "\u0643\u0645\u064A"; - t["\uFDB8"] = "\u0646\u062C\u062D"; - t["\uFDB9"] = "\u0645\u062E\u064A"; - t["\uFDBA"] = "\u0644\u062C\u0645"; - t["\uFDBB"] = "\u0643\u0645\u0645"; - t["\uFDBC"] = "\u0644\u062C\u0645"; - t["\uFDBD"] = "\u0646\u062C\u062D"; - t["\uFDBE"] = "\u062C\u062D\u064A"; - t["\uFDBF"] = "\u062D\u062C\u064A"; - t["\uFDC0"] = "\u0645\u062C\u064A"; - t["\uFDC1"] = "\u0641\u0645\u064A"; - t["\uFDC2"] = "\u0628\u062D\u064A"; - t["\uFDC3"] = "\u0643\u0645\u0645"; - t["\uFDC4"] = "\u0639\u062C\u0645"; - t["\uFDC5"] = "\u0635\u0645\u0645"; - t["\uFDC6"] = "\u0633\u062E\u064A"; - t["\uFDC7"] = "\u0646\u062C\u064A"; - t["\uFE49"] = "\u203E"; - t["\uFE4A"] = "\u203E"; - t["\uFE4B"] = "\u203E"; - t["\uFE4C"] = "\u203E"; - t["\uFE4D"] = "\u005F"; - t["\uFE4E"] = "\u005F"; - t["\uFE4F"] = "\u005F"; - t["\uFE80"] = "\u0621"; - t["\uFE81"] = "\u0622"; - t["\uFE82"] = "\u0622"; - t["\uFE83"] = "\u0623"; - t["\uFE84"] = "\u0623"; - t["\uFE85"] = "\u0624"; - t["\uFE86"] = "\u0624"; - t["\uFE87"] = "\u0625"; - t["\uFE88"] = "\u0625"; - t["\uFE89"] = "\u0626"; - t["\uFE8A"] = "\u0626"; - t["\uFE8B"] = "\u0626"; - t["\uFE8C"] = "\u0626"; - t["\uFE8D"] = "\u0627"; - t["\uFE8E"] = "\u0627"; - t["\uFE8F"] = "\u0628"; - t["\uFE90"] = "\u0628"; - t["\uFE91"] = "\u0628"; - t["\uFE92"] = "\u0628"; - t["\uFE93"] = "\u0629"; - t["\uFE94"] = "\u0629"; - t["\uFE95"] = "\u062A"; - t["\uFE96"] = "\u062A"; - t["\uFE97"] = "\u062A"; - t["\uFE98"] = "\u062A"; - t["\uFE99"] = "\u062B"; - t["\uFE9A"] = "\u062B"; - t["\uFE9B"] = "\u062B"; - t["\uFE9C"] = "\u062B"; - t["\uFE9D"] = "\u062C"; - t["\uFE9E"] = "\u062C"; - t["\uFE9F"] = "\u062C"; - t["\uFEA0"] = "\u062C"; - t["\uFEA1"] = "\u062D"; - t["\uFEA2"] = "\u062D"; - t["\uFEA3"] = "\u062D"; - t["\uFEA4"] = "\u062D"; - t["\uFEA5"] = "\u062E"; - t["\uFEA6"] = "\u062E"; - t["\uFEA7"] = "\u062E"; - t["\uFEA8"] = "\u062E"; - t["\uFEA9"] = "\u062F"; - t["\uFEAA"] = "\u062F"; - t["\uFEAB"] = "\u0630"; - t["\uFEAC"] = "\u0630"; - t["\uFEAD"] = "\u0631"; - t["\uFEAE"] = "\u0631"; - t["\uFEAF"] = "\u0632"; - t["\uFEB0"] = "\u0632"; - t["\uFEB1"] = "\u0633"; - t["\uFEB2"] = "\u0633"; - t["\uFEB3"] = "\u0633"; - t["\uFEB4"] = "\u0633"; - t["\uFEB5"] = "\u0634"; - t["\uFEB6"] = "\u0634"; - t["\uFEB7"] = "\u0634"; - t["\uFEB8"] = "\u0634"; - t["\uFEB9"] = "\u0635"; - t["\uFEBA"] = "\u0635"; - t["\uFEBB"] = "\u0635"; - t["\uFEBC"] = "\u0635"; - t["\uFEBD"] = "\u0636"; - t["\uFEBE"] = "\u0636"; - t["\uFEBF"] = "\u0636"; - t["\uFEC0"] = "\u0636"; - t["\uFEC1"] = "\u0637"; - t["\uFEC2"] = "\u0637"; - t["\uFEC3"] = "\u0637"; - t["\uFEC4"] = "\u0637"; - t["\uFEC5"] = "\u0638"; - t["\uFEC6"] = "\u0638"; - t["\uFEC7"] = "\u0638"; - t["\uFEC8"] = "\u0638"; - t["\uFEC9"] = "\u0639"; - t["\uFECA"] = "\u0639"; - t["\uFECB"] = "\u0639"; - t["\uFECC"] = "\u0639"; - t["\uFECD"] = "\u063A"; - t["\uFECE"] = "\u063A"; - t["\uFECF"] = "\u063A"; - t["\uFED0"] = "\u063A"; - t["\uFED1"] = "\u0641"; - t["\uFED2"] = "\u0641"; - t["\uFED3"] = "\u0641"; - t["\uFED4"] = "\u0641"; - t["\uFED5"] = "\u0642"; - t["\uFED6"] = "\u0642"; - t["\uFED7"] = "\u0642"; - t["\uFED8"] = "\u0642"; - t["\uFED9"] = "\u0643"; - t["\uFEDA"] = "\u0643"; - t["\uFEDB"] = "\u0643"; - t["\uFEDC"] = "\u0643"; - t["\uFEDD"] = "\u0644"; - t["\uFEDE"] = "\u0644"; - t["\uFEDF"] = "\u0644"; - t["\uFEE0"] = "\u0644"; - t["\uFEE1"] = "\u0645"; - t["\uFEE2"] = "\u0645"; - t["\uFEE3"] = "\u0645"; - t["\uFEE4"] = "\u0645"; - t["\uFEE5"] = "\u0646"; - t["\uFEE6"] = "\u0646"; - t["\uFEE7"] = "\u0646"; - t["\uFEE8"] = "\u0646"; - t["\uFEE9"] = "\u0647"; - t["\uFEEA"] = "\u0647"; - t["\uFEEB"] = "\u0647"; - t["\uFEEC"] = "\u0647"; - t["\uFEED"] = "\u0648"; - t["\uFEEE"] = "\u0648"; - t["\uFEEF"] = "\u0649"; - t["\uFEF0"] = "\u0649"; - t["\uFEF1"] = "\u064A"; - t["\uFEF2"] = "\u064A"; - t["\uFEF3"] = "\u064A"; - t["\uFEF4"] = "\u064A"; - t["\uFEF5"] = "\u0644\u0622"; - t["\uFEF6"] = "\u0644\u0622"; - t["\uFEF7"] = "\u0644\u0623"; - t["\uFEF8"] = "\u0644\u0623"; - t["\uFEF9"] = "\u0644\u0625"; - t["\uFEFA"] = "\u0644\u0625"; - t["\uFEFB"] = "\u0644\u0627"; - t["\uFEFC"] = "\u0644\u0627"; +var getNormalizedUnicodes = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () { + return [ + "\u00A8", + "\u0020\u0308", + "\u00AF", + "\u0020\u0304", + "\u00B4", + "\u0020\u0301", + "\u00B5", + "\u03BC", + "\u00B8", + "\u0020\u0327", + "\u0132", + "\u0049\u004A", + "\u0133", + "\u0069\u006A", + "\u013F", + "\u004C\u00B7", + "\u0140", + "\u006C\u00B7", + "\u0149", + "\u02BC\u006E", + "\u017F", + "\u0073", + "\u01C4", + "\u0044\u017D", + "\u01C5", + "\u0044\u017E", + "\u01C6", + "\u0064\u017E", + "\u01C7", + "\u004C\u004A", + "\u01C8", + "\u004C\u006A", + "\u01C9", + "\u006C\u006A", + "\u01CA", + "\u004E\u004A", + "\u01CB", + "\u004E\u006A", + "\u01CC", + "\u006E\u006A", + "\u01F1", + "\u0044\u005A", + "\u01F2", + "\u0044\u007A", + "\u01F3", + "\u0064\u007A", + "\u02D8", + "\u0020\u0306", + "\u02D9", + "\u0020\u0307", + "\u02DA", + "\u0020\u030A", + "\u02DB", + "\u0020\u0328", + "\u02DC", + "\u0020\u0303", + "\u02DD", + "\u0020\u030B", + "\u037A", + "\u0020\u0345", + "\u0384", + "\u0020\u0301", + "\u03D0", + "\u03B2", + "\u03D1", + "\u03B8", + "\u03D2", + "\u03A5", + "\u03D5", + "\u03C6", + "\u03D6", + "\u03C0", + "\u03F0", + "\u03BA", + "\u03F1", + "\u03C1", + "\u03F2", + "\u03C2", + "\u03F4", + "\u0398", + "\u03F5", + "\u03B5", + "\u03F9", + "\u03A3", + "\u0587", + "\u0565\u0582", + "\u0675", + "\u0627\u0674", + "\u0676", + "\u0648\u0674", + "\u0677", + "\u06C7\u0674", + "\u0678", + "\u064A\u0674", + "\u0E33", + "\u0E4D\u0E32", + "\u0EB3", + "\u0ECD\u0EB2", + "\u0EDC", + "\u0EAB\u0E99", + "\u0EDD", + "\u0EAB\u0EA1", + "\u0F77", + "\u0FB2\u0F81", + "\u0F79", + "\u0FB3\u0F81", + "\u1E9A", + "\u0061\u02BE", + "\u1FBD", + "\u0020\u0313", + "\u1FBF", + "\u0020\u0313", + "\u1FC0", + "\u0020\u0342", + "\u1FFE", + "\u0020\u0314", + "\u2002", + "\u0020", + "\u2003", + "\u0020", + "\u2004", + "\u0020", + "\u2005", + "\u0020", + "\u2006", + "\u0020", + "\u2008", + "\u0020", + "\u2009", + "\u0020", + "\u200A", + "\u0020", + "\u2017", + "\u0020\u0333", + "\u2024", + "\u002E", + "\u2025", + "\u002E\u002E", + "\u2026", + "\u002E\u002E\u002E", + "\u2033", + "\u2032\u2032", + "\u2034", + "\u2032\u2032\u2032", + "\u2036", + "\u2035\u2035", + "\u2037", + "\u2035\u2035\u2035", + "\u203C", + "\u0021\u0021", + "\u203E", + "\u0020\u0305", + "\u2047", + "\u003F\u003F", + "\u2048", + "\u003F\u0021", + "\u2049", + "\u0021\u003F", + "\u2057", + "\u2032\u2032\u2032\u2032", + "\u205F", + "\u0020", + "\u20A8", + "\u0052\u0073", + "\u2100", + "\u0061\u002F\u0063", + "\u2101", + "\u0061\u002F\u0073", + "\u2103", + "\u00B0\u0043", + "\u2105", + "\u0063\u002F\u006F", + "\u2106", + "\u0063\u002F\u0075", + "\u2107", + "\u0190", + "\u2109", + "\u00B0\u0046", + "\u2116", + "\u004E\u006F", + "\u2121", + "\u0054\u0045\u004C", + "\u2135", + "\u05D0", + "\u2136", + "\u05D1", + "\u2137", + "\u05D2", + "\u2138", + "\u05D3", + "\u213B", + "\u0046\u0041\u0058", + "\u2160", + "\u0049", + "\u2161", + "\u0049\u0049", + "\u2162", + "\u0049\u0049\u0049", + "\u2163", + "\u0049\u0056", + "\u2164", + "\u0056", + "\u2165", + "\u0056\u0049", + "\u2166", + "\u0056\u0049\u0049", + "\u2167", + "\u0056\u0049\u0049\u0049", + "\u2168", + "\u0049\u0058", + "\u2169", + "\u0058", + "\u216A", + "\u0058\u0049", + "\u216B", + "\u0058\u0049\u0049", + "\u216C", + "\u004C", + "\u216D", + "\u0043", + "\u216E", + "\u0044", + "\u216F", + "\u004D", + "\u2170", + "\u0069", + "\u2171", + "\u0069\u0069", + "\u2172", + "\u0069\u0069\u0069", + "\u2173", + "\u0069\u0076", + "\u2174", + "\u0076", + "\u2175", + "\u0076\u0069", + "\u2176", + "\u0076\u0069\u0069", + "\u2177", + "\u0076\u0069\u0069\u0069", + "\u2178", + "\u0069\u0078", + "\u2179", + "\u0078", + "\u217A", + "\u0078\u0069", + "\u217B", + "\u0078\u0069\u0069", + "\u217C", + "\u006C", + "\u217D", + "\u0063", + "\u217E", + "\u0064", + "\u217F", + "\u006D", + "\u222C", + "\u222B\u222B", + "\u222D", + "\u222B\u222B\u222B", + "\u222F", + "\u222E\u222E", + "\u2230", + "\u222E\u222E\u222E", + "\u2474", + "\u0028\u0031\u0029", + "\u2475", + "\u0028\u0032\u0029", + "\u2476", + "\u0028\u0033\u0029", + "\u2477", + "\u0028\u0034\u0029", + "\u2478", + "\u0028\u0035\u0029", + "\u2479", + "\u0028\u0036\u0029", + "\u247A", + "\u0028\u0037\u0029", + "\u247B", + "\u0028\u0038\u0029", + "\u247C", + "\u0028\u0039\u0029", + "\u247D", + "\u0028\u0031\u0030\u0029", + "\u247E", + "\u0028\u0031\u0031\u0029", + "\u247F", + "\u0028\u0031\u0032\u0029", + "\u2480", + "\u0028\u0031\u0033\u0029", + "\u2481", + "\u0028\u0031\u0034\u0029", + "\u2482", + "\u0028\u0031\u0035\u0029", + "\u2483", + "\u0028\u0031\u0036\u0029", + "\u2484", + "\u0028\u0031\u0037\u0029", + "\u2485", + "\u0028\u0031\u0038\u0029", + "\u2486", + "\u0028\u0031\u0039\u0029", + "\u2487", + "\u0028\u0032\u0030\u0029", + "\u2488", + "\u0031\u002E", + "\u2489", + "\u0032\u002E", + "\u248A", + "\u0033\u002E", + "\u248B", + "\u0034\u002E", + "\u248C", + "\u0035\u002E", + "\u248D", + "\u0036\u002E", + "\u248E", + "\u0037\u002E", + "\u248F", + "\u0038\u002E", + "\u2490", + "\u0039\u002E", + "\u2491", + "\u0031\u0030\u002E", + "\u2492", + "\u0031\u0031\u002E", + "\u2493", + "\u0031\u0032\u002E", + "\u2494", + "\u0031\u0033\u002E", + "\u2495", + "\u0031\u0034\u002E", + "\u2496", + "\u0031\u0035\u002E", + "\u2497", + "\u0031\u0036\u002E", + "\u2498", + "\u0031\u0037\u002E", + "\u2499", + "\u0031\u0038\u002E", + "\u249A", + "\u0031\u0039\u002E", + "\u249B", + "\u0032\u0030\u002E", + "\u249C", + "\u0028\u0061\u0029", + "\u249D", + "\u0028\u0062\u0029", + "\u249E", + "\u0028\u0063\u0029", + "\u249F", + "\u0028\u0064\u0029", + "\u24A0", + "\u0028\u0065\u0029", + "\u24A1", + "\u0028\u0066\u0029", + "\u24A2", + "\u0028\u0067\u0029", + "\u24A3", + "\u0028\u0068\u0029", + "\u24A4", + "\u0028\u0069\u0029", + "\u24A5", + "\u0028\u006A\u0029", + "\u24A6", + "\u0028\u006B\u0029", + "\u24A7", + "\u0028\u006C\u0029", + "\u24A8", + "\u0028\u006D\u0029", + "\u24A9", + "\u0028\u006E\u0029", + "\u24AA", + "\u0028\u006F\u0029", + "\u24AB", + "\u0028\u0070\u0029", + "\u24AC", + "\u0028\u0071\u0029", + "\u24AD", + "\u0028\u0072\u0029", + "\u24AE", + "\u0028\u0073\u0029", + "\u24AF", + "\u0028\u0074\u0029", + "\u24B0", + "\u0028\u0075\u0029", + "\u24B1", + "\u0028\u0076\u0029", + "\u24B2", + "\u0028\u0077\u0029", + "\u24B3", + "\u0028\u0078\u0029", + "\u24B4", + "\u0028\u0079\u0029", + "\u24B5", + "\u0028\u007A\u0029", + "\u2A0C", + "\u222B\u222B\u222B\u222B", + "\u2A74", + "\u003A\u003A\u003D", + "\u2A75", + "\u003D\u003D", + "\u2A76", + "\u003D\u003D\u003D", + "\u2E9F", + "\u6BCD", + "\u2EF3", + "\u9F9F", + "\u2F00", + "\u4E00", + "\u2F01", + "\u4E28", + "\u2F02", + "\u4E36", + "\u2F03", + "\u4E3F", + "\u2F04", + "\u4E59", + "\u2F05", + "\u4E85", + "\u2F06", + "\u4E8C", + "\u2F07", + "\u4EA0", + "\u2F08", + "\u4EBA", + "\u2F09", + "\u513F", + "\u2F0A", + "\u5165", + "\u2F0B", + "\u516B", + "\u2F0C", + "\u5182", + "\u2F0D", + "\u5196", + "\u2F0E", + "\u51AB", + "\u2F0F", + "\u51E0", + "\u2F10", + "\u51F5", + "\u2F11", + "\u5200", + "\u2F12", + "\u529B", + "\u2F13", + "\u52F9", + "\u2F14", + "\u5315", + "\u2F15", + "\u531A", + "\u2F16", + "\u5338", + "\u2F17", + "\u5341", + "\u2F18", + "\u535C", + "\u2F19", + "\u5369", + "\u2F1A", + "\u5382", + "\u2F1B", + "\u53B6", + "\u2F1C", + "\u53C8", + "\u2F1D", + "\u53E3", + "\u2F1E", + "\u56D7", + "\u2F1F", + "\u571F", + "\u2F20", + "\u58EB", + "\u2F21", + "\u5902", + "\u2F22", + "\u590A", + "\u2F23", + "\u5915", + "\u2F24", + "\u5927", + "\u2F25", + "\u5973", + "\u2F26", + "\u5B50", + "\u2F27", + "\u5B80", + "\u2F28", + "\u5BF8", + "\u2F29", + "\u5C0F", + "\u2F2A", + "\u5C22", + "\u2F2B", + "\u5C38", + "\u2F2C", + "\u5C6E", + "\u2F2D", + "\u5C71", + "\u2F2E", + "\u5DDB", + "\u2F2F", + "\u5DE5", + "\u2F30", + "\u5DF1", + "\u2F31", + "\u5DFE", + "\u2F32", + "\u5E72", + "\u2F33", + "\u5E7A", + "\u2F34", + "\u5E7F", + "\u2F35", + "\u5EF4", + "\u2F36", + "\u5EFE", + "\u2F37", + "\u5F0B", + "\u2F38", + "\u5F13", + "\u2F39", + "\u5F50", + "\u2F3A", + "\u5F61", + "\u2F3B", + "\u5F73", + "\u2F3C", + "\u5FC3", + "\u2F3D", + "\u6208", + "\u2F3E", + "\u6236", + "\u2F3F", + "\u624B", + "\u2F40", + "\u652F", + "\u2F41", + "\u6534", + "\u2F42", + "\u6587", + "\u2F43", + "\u6597", + "\u2F44", + "\u65A4", + "\u2F45", + "\u65B9", + "\u2F46", + "\u65E0", + "\u2F47", + "\u65E5", + "\u2F48", + "\u66F0", + "\u2F49", + "\u6708", + "\u2F4A", + "\u6728", + "\u2F4B", + "\u6B20", + "\u2F4C", + "\u6B62", + "\u2F4D", + "\u6B79", + "\u2F4E", + "\u6BB3", + "\u2F4F", + "\u6BCB", + "\u2F50", + "\u6BD4", + "\u2F51", + "\u6BDB", + "\u2F52", + "\u6C0F", + "\u2F53", + "\u6C14", + "\u2F54", + "\u6C34", + "\u2F55", + "\u706B", + "\u2F56", + "\u722A", + "\u2F57", + "\u7236", + "\u2F58", + "\u723B", + "\u2F59", + "\u723F", + "\u2F5A", + "\u7247", + "\u2F5B", + "\u7259", + "\u2F5C", + "\u725B", + "\u2F5D", + "\u72AC", + "\u2F5E", + "\u7384", + "\u2F5F", + "\u7389", + "\u2F60", + "\u74DC", + "\u2F61", + "\u74E6", + "\u2F62", + "\u7518", + "\u2F63", + "\u751F", + "\u2F64", + "\u7528", + "\u2F65", + "\u7530", + "\u2F66", + "\u758B", + "\u2F67", + "\u7592", + "\u2F68", + "\u7676", + "\u2F69", + "\u767D", + "\u2F6A", + "\u76AE", + "\u2F6B", + "\u76BF", + "\u2F6C", + "\u76EE", + "\u2F6D", + "\u77DB", + "\u2F6E", + "\u77E2", + "\u2F6F", + "\u77F3", + "\u2F70", + "\u793A", + "\u2F71", + "\u79B8", + "\u2F72", + "\u79BE", + "\u2F73", + "\u7A74", + "\u2F74", + "\u7ACB", + "\u2F75", + "\u7AF9", + "\u2F76", + "\u7C73", + "\u2F77", + "\u7CF8", + "\u2F78", + "\u7F36", + "\u2F79", + "\u7F51", + "\u2F7A", + "\u7F8A", + "\u2F7B", + "\u7FBD", + "\u2F7C", + "\u8001", + "\u2F7D", + "\u800C", + "\u2F7E", + "\u8012", + "\u2F7F", + "\u8033", + "\u2F80", + "\u807F", + "\u2F81", + "\u8089", + "\u2F82", + "\u81E3", + "\u2F83", + "\u81EA", + "\u2F84", + "\u81F3", + "\u2F85", + "\u81FC", + "\u2F86", + "\u820C", + "\u2F87", + "\u821B", + "\u2F88", + "\u821F", + "\u2F89", + "\u826E", + "\u2F8A", + "\u8272", + "\u2F8B", + "\u8278", + "\u2F8C", + "\u864D", + "\u2F8D", + "\u866B", + "\u2F8E", + "\u8840", + "\u2F8F", + "\u884C", + "\u2F90", + "\u8863", + "\u2F91", + "\u897E", + "\u2F92", + "\u898B", + "\u2F93", + "\u89D2", + "\u2F94", + "\u8A00", + "\u2F95", + "\u8C37", + "\u2F96", + "\u8C46", + "\u2F97", + "\u8C55", + "\u2F98", + "\u8C78", + "\u2F99", + "\u8C9D", + "\u2F9A", + "\u8D64", + "\u2F9B", + "\u8D70", + "\u2F9C", + "\u8DB3", + "\u2F9D", + "\u8EAB", + "\u2F9E", + "\u8ECA", + "\u2F9F", + "\u8F9B", + "\u2FA0", + "\u8FB0", + "\u2FA1", + "\u8FB5", + "\u2FA2", + "\u9091", + "\u2FA3", + "\u9149", + "\u2FA4", + "\u91C6", + "\u2FA5", + "\u91CC", + "\u2FA6", + "\u91D1", + "\u2FA7", + "\u9577", + "\u2FA8", + "\u9580", + "\u2FA9", + "\u961C", + "\u2FAA", + "\u96B6", + "\u2FAB", + "\u96B9", + "\u2FAC", + "\u96E8", + "\u2FAD", + "\u9751", + "\u2FAE", + "\u975E", + "\u2FAF", + "\u9762", + "\u2FB0", + "\u9769", + "\u2FB1", + "\u97CB", + "\u2FB2", + "\u97ED", + "\u2FB3", + "\u97F3", + "\u2FB4", + "\u9801", + "\u2FB5", + "\u98A8", + "\u2FB6", + "\u98DB", + "\u2FB7", + "\u98DF", + "\u2FB8", + "\u9996", + "\u2FB9", + "\u9999", + "\u2FBA", + "\u99AC", + "\u2FBB", + "\u9AA8", + "\u2FBC", + "\u9AD8", + "\u2FBD", + "\u9ADF", + "\u2FBE", + "\u9B25", + "\u2FBF", + "\u9B2F", + "\u2FC0", + "\u9B32", + "\u2FC1", + "\u9B3C", + "\u2FC2", + "\u9B5A", + "\u2FC3", + "\u9CE5", + "\u2FC4", + "\u9E75", + "\u2FC5", + "\u9E7F", + "\u2FC6", + "\u9EA5", + "\u2FC7", + "\u9EBB", + "\u2FC8", + "\u9EC3", + "\u2FC9", + "\u9ECD", + "\u2FCA", + "\u9ED1", + "\u2FCB", + "\u9EF9", + "\u2FCC", + "\u9EFD", + "\u2FCD", + "\u9F0E", + "\u2FCE", + "\u9F13", + "\u2FCF", + "\u9F20", + "\u2FD0", + "\u9F3B", + "\u2FD1", + "\u9F4A", + "\u2FD2", + "\u9F52", + "\u2FD3", + "\u9F8D", + "\u2FD4", + "\u9F9C", + "\u2FD5", + "\u9FA0", + "\u3036", + "\u3012", + "\u3038", + "\u5341", + "\u3039", + "\u5344", + "\u303A", + "\u5345", + "\u309B", + "\u0020\u3099", + "\u309C", + "\u0020\u309A", + "\u3131", + "\u1100", + "\u3132", + "\u1101", + "\u3133", + "\u11AA", + "\u3134", + "\u1102", + "\u3135", + "\u11AC", + "\u3136", + "\u11AD", + "\u3137", + "\u1103", + "\u3138", + "\u1104", + "\u3139", + "\u1105", + "\u313A", + "\u11B0", + "\u313B", + "\u11B1", + "\u313C", + "\u11B2", + "\u313D", + "\u11B3", + "\u313E", + "\u11B4", + "\u313F", + "\u11B5", + "\u3140", + "\u111A", + "\u3141", + "\u1106", + "\u3142", + "\u1107", + "\u3143", + "\u1108", + "\u3144", + "\u1121", + "\u3145", + "\u1109", + "\u3146", + "\u110A", + "\u3147", + "\u110B", + "\u3148", + "\u110C", + "\u3149", + "\u110D", + "\u314A", + "\u110E", + "\u314B", + "\u110F", + "\u314C", + "\u1110", + "\u314D", + "\u1111", + "\u314E", + "\u1112", + "\u314F", + "\u1161", + "\u3150", + "\u1162", + "\u3151", + "\u1163", + "\u3152", + "\u1164", + "\u3153", + "\u1165", + "\u3154", + "\u1166", + "\u3155", + "\u1167", + "\u3156", + "\u1168", + "\u3157", + "\u1169", + "\u3158", + "\u116A", + "\u3159", + "\u116B", + "\u315A", + "\u116C", + "\u315B", + "\u116D", + "\u315C", + "\u116E", + "\u315D", + "\u116F", + "\u315E", + "\u1170", + "\u315F", + "\u1171", + "\u3160", + "\u1172", + "\u3161", + "\u1173", + "\u3162", + "\u1174", + "\u3163", + "\u1175", + "\u3164", + "\u1160", + "\u3165", + "\u1114", + "\u3166", + "\u1115", + "\u3167", + "\u11C7", + "\u3168", + "\u11C8", + "\u3169", + "\u11CC", + "\u316A", + "\u11CE", + "\u316B", + "\u11D3", + "\u316C", + "\u11D7", + "\u316D", + "\u11D9", + "\u316E", + "\u111C", + "\u316F", + "\u11DD", + "\u3170", + "\u11DF", + "\u3171", + "\u111D", + "\u3172", + "\u111E", + "\u3173", + "\u1120", + "\u3174", + "\u1122", + "\u3175", + "\u1123", + "\u3176", + "\u1127", + "\u3177", + "\u1129", + "\u3178", + "\u112B", + "\u3179", + "\u112C", + "\u317A", + "\u112D", + "\u317B", + "\u112E", + "\u317C", + "\u112F", + "\u317D", + "\u1132", + "\u317E", + "\u1136", + "\u317F", + "\u1140", + "\u3180", + "\u1147", + "\u3181", + "\u114C", + "\u3182", + "\u11F1", + "\u3183", + "\u11F2", + "\u3184", + "\u1157", + "\u3185", + "\u1158", + "\u3186", + "\u1159", + "\u3187", + "\u1184", + "\u3188", + "\u1185", + "\u3189", + "\u1188", + "\u318A", + "\u1191", + "\u318B", + "\u1192", + "\u318C", + "\u1194", + "\u318D", + "\u119E", + "\u318E", + "\u11A1", + "\u3200", + "\u0028\u1100\u0029", + "\u3201", + "\u0028\u1102\u0029", + "\u3202", + "\u0028\u1103\u0029", + "\u3203", + "\u0028\u1105\u0029", + "\u3204", + "\u0028\u1106\u0029", + "\u3205", + "\u0028\u1107\u0029", + "\u3206", + "\u0028\u1109\u0029", + "\u3207", + "\u0028\u110B\u0029", + "\u3208", + "\u0028\u110C\u0029", + "\u3209", + "\u0028\u110E\u0029", + "\u320A", + "\u0028\u110F\u0029", + "\u320B", + "\u0028\u1110\u0029", + "\u320C", + "\u0028\u1111\u0029", + "\u320D", + "\u0028\u1112\u0029", + "\u320E", + "\u0028\u1100\u1161\u0029", + "\u320F", + "\u0028\u1102\u1161\u0029", + "\u3210", + "\u0028\u1103\u1161\u0029", + "\u3211", + "\u0028\u1105\u1161\u0029", + "\u3212", + "\u0028\u1106\u1161\u0029", + "\u3213", + "\u0028\u1107\u1161\u0029", + "\u3214", + "\u0028\u1109\u1161\u0029", + "\u3215", + "\u0028\u110B\u1161\u0029", + "\u3216", + "\u0028\u110C\u1161\u0029", + "\u3217", + "\u0028\u110E\u1161\u0029", + "\u3218", + "\u0028\u110F\u1161\u0029", + "\u3219", + "\u0028\u1110\u1161\u0029", + "\u321A", + "\u0028\u1111\u1161\u0029", + "\u321B", + "\u0028\u1112\u1161\u0029", + "\u321C", + "\u0028\u110C\u116E\u0029", + "\u321D", + "\u0028\u110B\u1169\u110C\u1165\u11AB\u0029", + "\u321E", + "\u0028\u110B\u1169\u1112\u116E\u0029", + "\u3220", + "\u0028\u4E00\u0029", + "\u3221", + "\u0028\u4E8C\u0029", + "\u3222", + "\u0028\u4E09\u0029", + "\u3223", + "\u0028\u56DB\u0029", + "\u3224", + "\u0028\u4E94\u0029", + "\u3225", + "\u0028\u516D\u0029", + "\u3226", + "\u0028\u4E03\u0029", + "\u3227", + "\u0028\u516B\u0029", + "\u3228", + "\u0028\u4E5D\u0029", + "\u3229", + "\u0028\u5341\u0029", + "\u322A", + "\u0028\u6708\u0029", + "\u322B", + "\u0028\u706B\u0029", + "\u322C", + "\u0028\u6C34\u0029", + "\u322D", + "\u0028\u6728\u0029", + "\u322E", + "\u0028\u91D1\u0029", + "\u322F", + "\u0028\u571F\u0029", + "\u3230", + "\u0028\u65E5\u0029", + "\u3231", + "\u0028\u682A\u0029", + "\u3232", + "\u0028\u6709\u0029", + "\u3233", + "\u0028\u793E\u0029", + "\u3234", + "\u0028\u540D\u0029", + "\u3235", + "\u0028\u7279\u0029", + "\u3236", + "\u0028\u8CA1\u0029", + "\u3237", + "\u0028\u795D\u0029", + "\u3238", + "\u0028\u52B4\u0029", + "\u3239", + "\u0028\u4EE3\u0029", + "\u323A", + "\u0028\u547C\u0029", + "\u323B", + "\u0028\u5B66\u0029", + "\u323C", + "\u0028\u76E3\u0029", + "\u323D", + "\u0028\u4F01\u0029", + "\u323E", + "\u0028\u8CC7\u0029", + "\u323F", + "\u0028\u5354\u0029", + "\u3240", + "\u0028\u796D\u0029", + "\u3241", + "\u0028\u4F11\u0029", + "\u3242", + "\u0028\u81EA\u0029", + "\u3243", + "\u0028\u81F3\u0029", + "\u32C0", + "\u0031\u6708", + "\u32C1", + "\u0032\u6708", + "\u32C2", + "\u0033\u6708", + "\u32C3", + "\u0034\u6708", + "\u32C4", + "\u0035\u6708", + "\u32C5", + "\u0036\u6708", + "\u32C6", + "\u0037\u6708", + "\u32C7", + "\u0038\u6708", + "\u32C8", + "\u0039\u6708", + "\u32C9", + "\u0031\u0030\u6708", + "\u32CA", + "\u0031\u0031\u6708", + "\u32CB", + "\u0031\u0032\u6708", + "\u3358", + "\u0030\u70B9", + "\u3359", + "\u0031\u70B9", + "\u335A", + "\u0032\u70B9", + "\u335B", + "\u0033\u70B9", + "\u335C", + "\u0034\u70B9", + "\u335D", + "\u0035\u70B9", + "\u335E", + "\u0036\u70B9", + "\u335F", + "\u0037\u70B9", + "\u3360", + "\u0038\u70B9", + "\u3361", + "\u0039\u70B9", + "\u3362", + "\u0031\u0030\u70B9", + "\u3363", + "\u0031\u0031\u70B9", + "\u3364", + "\u0031\u0032\u70B9", + "\u3365", + "\u0031\u0033\u70B9", + "\u3366", + "\u0031\u0034\u70B9", + "\u3367", + "\u0031\u0035\u70B9", + "\u3368", + "\u0031\u0036\u70B9", + "\u3369", + "\u0031\u0037\u70B9", + "\u336A", + "\u0031\u0038\u70B9", + "\u336B", + "\u0031\u0039\u70B9", + "\u336C", + "\u0032\u0030\u70B9", + "\u336D", + "\u0032\u0031\u70B9", + "\u336E", + "\u0032\u0032\u70B9", + "\u336F", + "\u0032\u0033\u70B9", + "\u3370", + "\u0032\u0034\u70B9", + "\u33E0", + "\u0031\u65E5", + "\u33E1", + "\u0032\u65E5", + "\u33E2", + "\u0033\u65E5", + "\u33E3", + "\u0034\u65E5", + "\u33E4", + "\u0035\u65E5", + "\u33E5", + "\u0036\u65E5", + "\u33E6", + "\u0037\u65E5", + "\u33E7", + "\u0038\u65E5", + "\u33E8", + "\u0039\u65E5", + "\u33E9", + "\u0031\u0030\u65E5", + "\u33EA", + "\u0031\u0031\u65E5", + "\u33EB", + "\u0031\u0032\u65E5", + "\u33EC", + "\u0031\u0033\u65E5", + "\u33ED", + "\u0031\u0034\u65E5", + "\u33EE", + "\u0031\u0035\u65E5", + "\u33EF", + "\u0031\u0036\u65E5", + "\u33F0", + "\u0031\u0037\u65E5", + "\u33F1", + "\u0031\u0038\u65E5", + "\u33F2", + "\u0031\u0039\u65E5", + "\u33F3", + "\u0032\u0030\u65E5", + "\u33F4", + "\u0032\u0031\u65E5", + "\u33F5", + "\u0032\u0032\u65E5", + "\u33F6", + "\u0032\u0033\u65E5", + "\u33F7", + "\u0032\u0034\u65E5", + "\u33F8", + "\u0032\u0035\u65E5", + "\u33F9", + "\u0032\u0036\u65E5", + "\u33FA", + "\u0032\u0037\u65E5", + "\u33FB", + "\u0032\u0038\u65E5", + "\u33FC", + "\u0032\u0039\u65E5", + "\u33FD", + "\u0033\u0030\u65E5", + "\u33FE", + "\u0033\u0031\u65E5", + "\uFB00", + "\u0066\u0066", + "\uFB01", + "\u0066\u0069", + "\uFB02", + "\u0066\u006C", + "\uFB03", + "\u0066\u0066\u0069", + "\uFB04", + "\u0066\u0066\u006C", + "\uFB05", + "\u017F\u0074", + "\uFB06", + "\u0073\u0074", + "\uFB13", + "\u0574\u0576", + "\uFB14", + "\u0574\u0565", + "\uFB15", + "\u0574\u056B", + "\uFB16", + "\u057E\u0576", + "\uFB17", + "\u0574\u056D", + "\uFB4F", + "\u05D0\u05DC", + "\uFB50", + "\u0671", + "\uFB51", + "\u0671", + "\uFB52", + "\u067B", + "\uFB53", + "\u067B", + "\uFB54", + "\u067B", + "\uFB55", + "\u067B", + "\uFB56", + "\u067E", + "\uFB57", + "\u067E", + "\uFB58", + "\u067E", + "\uFB59", + "\u067E", + "\uFB5A", + "\u0680", + "\uFB5B", + "\u0680", + "\uFB5C", + "\u0680", + "\uFB5D", + "\u0680", + "\uFB5E", + "\u067A", + "\uFB5F", + "\u067A", + "\uFB60", + "\u067A", + "\uFB61", + "\u067A", + "\uFB62", + "\u067F", + "\uFB63", + "\u067F", + "\uFB64", + "\u067F", + "\uFB65", + "\u067F", + "\uFB66", + "\u0679", + "\uFB67", + "\u0679", + "\uFB68", + "\u0679", + "\uFB69", + "\u0679", + "\uFB6A", + "\u06A4", + "\uFB6B", + "\u06A4", + "\uFB6C", + "\u06A4", + "\uFB6D", + "\u06A4", + "\uFB6E", + "\u06A6", + "\uFB6F", + "\u06A6", + "\uFB70", + "\u06A6", + "\uFB71", + "\u06A6", + "\uFB72", + "\u0684", + "\uFB73", + "\u0684", + "\uFB74", + "\u0684", + "\uFB75", + "\u0684", + "\uFB76", + "\u0683", + "\uFB77", + "\u0683", + "\uFB78", + "\u0683", + "\uFB79", + "\u0683", + "\uFB7A", + "\u0686", + "\uFB7B", + "\u0686", + "\uFB7C", + "\u0686", + "\uFB7D", + "\u0686", + "\uFB7E", + "\u0687", + "\uFB7F", + "\u0687", + "\uFB80", + "\u0687", + "\uFB81", + "\u0687", + "\uFB82", + "\u068D", + "\uFB83", + "\u068D", + "\uFB84", + "\u068C", + "\uFB85", + "\u068C", + "\uFB86", + "\u068E", + "\uFB87", + "\u068E", + "\uFB88", + "\u0688", + "\uFB89", + "\u0688", + "\uFB8A", + "\u0698", + "\uFB8B", + "\u0698", + "\uFB8C", + "\u0691", + "\uFB8D", + "\u0691", + "\uFB8E", + "\u06A9", + "\uFB8F", + "\u06A9", + "\uFB90", + "\u06A9", + "\uFB91", + "\u06A9", + "\uFB92", + "\u06AF", + "\uFB93", + "\u06AF", + "\uFB94", + "\u06AF", + "\uFB95", + "\u06AF", + "\uFB96", + "\u06B3", + "\uFB97", + "\u06B3", + "\uFB98", + "\u06B3", + "\uFB99", + "\u06B3", + "\uFB9A", + "\u06B1", + "\uFB9B", + "\u06B1", + "\uFB9C", + "\u06B1", + "\uFB9D", + "\u06B1", + "\uFB9E", + "\u06BA", + "\uFB9F", + "\u06BA", + "\uFBA0", + "\u06BB", + "\uFBA1", + "\u06BB", + "\uFBA2", + "\u06BB", + "\uFBA3", + "\u06BB", + "\uFBA4", + "\u06C0", + "\uFBA5", + "\u06C0", + "\uFBA6", + "\u06C1", + "\uFBA7", + "\u06C1", + "\uFBA8", + "\u06C1", + "\uFBA9", + "\u06C1", + "\uFBAA", + "\u06BE", + "\uFBAB", + "\u06BE", + "\uFBAC", + "\u06BE", + "\uFBAD", + "\u06BE", + "\uFBAE", + "\u06D2", + "\uFBAF", + "\u06D2", + "\uFBB0", + "\u06D3", + "\uFBB1", + "\u06D3", + "\uFBD3", + "\u06AD", + "\uFBD4", + "\u06AD", + "\uFBD5", + "\u06AD", + "\uFBD6", + "\u06AD", + "\uFBD7", + "\u06C7", + "\uFBD8", + "\u06C7", + "\uFBD9", + "\u06C6", + "\uFBDA", + "\u06C6", + "\uFBDB", + "\u06C8", + "\uFBDC", + "\u06C8", + "\uFBDD", + "\u0677", + "\uFBDE", + "\u06CB", + "\uFBDF", + "\u06CB", + "\uFBE0", + "\u06C5", + "\uFBE1", + "\u06C5", + "\uFBE2", + "\u06C9", + "\uFBE3", + "\u06C9", + "\uFBE4", + "\u06D0", + "\uFBE5", + "\u06D0", + "\uFBE6", + "\u06D0", + "\uFBE7", + "\u06D0", + "\uFBE8", + "\u0649", + "\uFBE9", + "\u0649", + "\uFBEA", + "\u0626\u0627", + "\uFBEB", + "\u0626\u0627", + "\uFBEC", + "\u0626\u06D5", + "\uFBED", + "\u0626\u06D5", + "\uFBEE", + "\u0626\u0648", + "\uFBEF", + "\u0626\u0648", + "\uFBF0", + "\u0626\u06C7", + "\uFBF1", + "\u0626\u06C7", + "\uFBF2", + "\u0626\u06C6", + "\uFBF3", + "\u0626\u06C6", + "\uFBF4", + "\u0626\u06C8", + "\uFBF5", + "\u0626\u06C8", + "\uFBF6", + "\u0626\u06D0", + "\uFBF7", + "\u0626\u06D0", + "\uFBF8", + "\u0626\u06D0", + "\uFBF9", + "\u0626\u0649", + "\uFBFA", + "\u0626\u0649", + "\uFBFB", + "\u0626\u0649", + "\uFBFC", + "\u06CC", + "\uFBFD", + "\u06CC", + "\uFBFE", + "\u06CC", + "\uFBFF", + "\u06CC", + "\uFC00", + "\u0626\u062C", + "\uFC01", + "\u0626\u062D", + "\uFC02", + "\u0626\u0645", + "\uFC03", + "\u0626\u0649", + "\uFC04", + "\u0626\u064A", + "\uFC05", + "\u0628\u062C", + "\uFC06", + "\u0628\u062D", + "\uFC07", + "\u0628\u062E", + "\uFC08", + "\u0628\u0645", + "\uFC09", + "\u0628\u0649", + "\uFC0A", + "\u0628\u064A", + "\uFC0B", + "\u062A\u062C", + "\uFC0C", + "\u062A\u062D", + "\uFC0D", + "\u062A\u062E", + "\uFC0E", + "\u062A\u0645", + "\uFC0F", + "\u062A\u0649", + "\uFC10", + "\u062A\u064A", + "\uFC11", + "\u062B\u062C", + "\uFC12", + "\u062B\u0645", + "\uFC13", + "\u062B\u0649", + "\uFC14", + "\u062B\u064A", + "\uFC15", + "\u062C\u062D", + "\uFC16", + "\u062C\u0645", + "\uFC17", + "\u062D\u062C", + "\uFC18", + "\u062D\u0645", + "\uFC19", + "\u062E\u062C", + "\uFC1A", + "\u062E\u062D", + "\uFC1B", + "\u062E\u0645", + "\uFC1C", + "\u0633\u062C", + "\uFC1D", + "\u0633\u062D", + "\uFC1E", + "\u0633\u062E", + "\uFC1F", + "\u0633\u0645", + "\uFC20", + "\u0635\u062D", + "\uFC21", + "\u0635\u0645", + "\uFC22", + "\u0636\u062C", + "\uFC23", + "\u0636\u062D", + "\uFC24", + "\u0636\u062E", + "\uFC25", + "\u0636\u0645", + "\uFC26", + "\u0637\u062D", + "\uFC27", + "\u0637\u0645", + "\uFC28", + "\u0638\u0645", + "\uFC29", + "\u0639\u062C", + "\uFC2A", + "\u0639\u0645", + "\uFC2B", + "\u063A\u062C", + "\uFC2C", + "\u063A\u0645", + "\uFC2D", + "\u0641\u062C", + "\uFC2E", + "\u0641\u062D", + "\uFC2F", + "\u0641\u062E", + "\uFC30", + "\u0641\u0645", + "\uFC31", + "\u0641\u0649", + "\uFC32", + "\u0641\u064A", + "\uFC33", + "\u0642\u062D", + "\uFC34", + "\u0642\u0645", + "\uFC35", + "\u0642\u0649", + "\uFC36", + "\u0642\u064A", + "\uFC37", + "\u0643\u0627", + "\uFC38", + "\u0643\u062C", + "\uFC39", + "\u0643\u062D", + "\uFC3A", + "\u0643\u062E", + "\uFC3B", + "\u0643\u0644", + "\uFC3C", + "\u0643\u0645", + "\uFC3D", + "\u0643\u0649", + "\uFC3E", + "\u0643\u064A", + "\uFC3F", + "\u0644\u062C", + "\uFC40", + "\u0644\u062D", + "\uFC41", + "\u0644\u062E", + "\uFC42", + "\u0644\u0645", + "\uFC43", + "\u0644\u0649", + "\uFC44", + "\u0644\u064A", + "\uFC45", + "\u0645\u062C", + "\uFC46", + "\u0645\u062D", + "\uFC47", + "\u0645\u062E", + "\uFC48", + "\u0645\u0645", + "\uFC49", + "\u0645\u0649", + "\uFC4A", + "\u0645\u064A", + "\uFC4B", + "\u0646\u062C", + "\uFC4C", + "\u0646\u062D", + "\uFC4D", + "\u0646\u062E", + "\uFC4E", + "\u0646\u0645", + "\uFC4F", + "\u0646\u0649", + "\uFC50", + "\u0646\u064A", + "\uFC51", + "\u0647\u062C", + "\uFC52", + "\u0647\u0645", + "\uFC53", + "\u0647\u0649", + "\uFC54", + "\u0647\u064A", + "\uFC55", + "\u064A\u062C", + "\uFC56", + "\u064A\u062D", + "\uFC57", + "\u064A\u062E", + "\uFC58", + "\u064A\u0645", + "\uFC59", + "\u064A\u0649", + "\uFC5A", + "\u064A\u064A", + "\uFC5B", + "\u0630\u0670", + "\uFC5C", + "\u0631\u0670", + "\uFC5D", + "\u0649\u0670", + "\uFC5E", + "\u0020\u064C\u0651", + "\uFC5F", + "\u0020\u064D\u0651", + "\uFC60", + "\u0020\u064E\u0651", + "\uFC61", + "\u0020\u064F\u0651", + "\uFC62", + "\u0020\u0650\u0651", + "\uFC63", + "\u0020\u0651\u0670", + "\uFC64", + "\u0626\u0631", + "\uFC65", + "\u0626\u0632", + "\uFC66", + "\u0626\u0645", + "\uFC67", + "\u0626\u0646", + "\uFC68", + "\u0626\u0649", + "\uFC69", + "\u0626\u064A", + "\uFC6A", + "\u0628\u0631", + "\uFC6B", + "\u0628\u0632", + "\uFC6C", + "\u0628\u0645", + "\uFC6D", + "\u0628\u0646", + "\uFC6E", + "\u0628\u0649", + "\uFC6F", + "\u0628\u064A", + "\uFC70", + "\u062A\u0631", + "\uFC71", + "\u062A\u0632", + "\uFC72", + "\u062A\u0645", + "\uFC73", + "\u062A\u0646", + "\uFC74", + "\u062A\u0649", + "\uFC75", + "\u062A\u064A", + "\uFC76", + "\u062B\u0631", + "\uFC77", + "\u062B\u0632", + "\uFC78", + "\u062B\u0645", + "\uFC79", + "\u062B\u0646", + "\uFC7A", + "\u062B\u0649", + "\uFC7B", + "\u062B\u064A", + "\uFC7C", + "\u0641\u0649", + "\uFC7D", + "\u0641\u064A", + "\uFC7E", + "\u0642\u0649", + "\uFC7F", + "\u0642\u064A", + "\uFC80", + "\u0643\u0627", + "\uFC81", + "\u0643\u0644", + "\uFC82", + "\u0643\u0645", + "\uFC83", + "\u0643\u0649", + "\uFC84", + "\u0643\u064A", + "\uFC85", + "\u0644\u0645", + "\uFC86", + "\u0644\u0649", + "\uFC87", + "\u0644\u064A", + "\uFC88", + "\u0645\u0627", + "\uFC89", + "\u0645\u0645", + "\uFC8A", + "\u0646\u0631", + "\uFC8B", + "\u0646\u0632", + "\uFC8C", + "\u0646\u0645", + "\uFC8D", + "\u0646\u0646", + "\uFC8E", + "\u0646\u0649", + "\uFC8F", + "\u0646\u064A", + "\uFC90", + "\u0649\u0670", + "\uFC91", + "\u064A\u0631", + "\uFC92", + "\u064A\u0632", + "\uFC93", + "\u064A\u0645", + "\uFC94", + "\u064A\u0646", + "\uFC95", + "\u064A\u0649", + "\uFC96", + "\u064A\u064A", + "\uFC97", + "\u0626\u062C", + "\uFC98", + "\u0626\u062D", + "\uFC99", + "\u0626\u062E", + "\uFC9A", + "\u0626\u0645", + "\uFC9B", + "\u0626\u0647", + "\uFC9C", + "\u0628\u062C", + "\uFC9D", + "\u0628\u062D", + "\uFC9E", + "\u0628\u062E", + "\uFC9F", + "\u0628\u0645", + "\uFCA0", + "\u0628\u0647", + "\uFCA1", + "\u062A\u062C", + "\uFCA2", + "\u062A\u062D", + "\uFCA3", + "\u062A\u062E", + "\uFCA4", + "\u062A\u0645", + "\uFCA5", + "\u062A\u0647", + "\uFCA6", + "\u062B\u0645", + "\uFCA7", + "\u062C\u062D", + "\uFCA8", + "\u062C\u0645", + "\uFCA9", + "\u062D\u062C", + "\uFCAA", + "\u062D\u0645", + "\uFCAB", + "\u062E\u062C", + "\uFCAC", + "\u062E\u0645", + "\uFCAD", + "\u0633\u062C", + "\uFCAE", + "\u0633\u062D", + "\uFCAF", + "\u0633\u062E", + "\uFCB0", + "\u0633\u0645", + "\uFCB1", + "\u0635\u062D", + "\uFCB2", + "\u0635\u062E", + "\uFCB3", + "\u0635\u0645", + "\uFCB4", + "\u0636\u062C", + "\uFCB5", + "\u0636\u062D", + "\uFCB6", + "\u0636\u062E", + "\uFCB7", + "\u0636\u0645", + "\uFCB8", + "\u0637\u062D", + "\uFCB9", + "\u0638\u0645", + "\uFCBA", + "\u0639\u062C", + "\uFCBB", + "\u0639\u0645", + "\uFCBC", + "\u063A\u062C", + "\uFCBD", + "\u063A\u0645", + "\uFCBE", + "\u0641\u062C", + "\uFCBF", + "\u0641\u062D", + "\uFCC0", + "\u0641\u062E", + "\uFCC1", + "\u0641\u0645", + "\uFCC2", + "\u0642\u062D", + "\uFCC3", + "\u0642\u0645", + "\uFCC4", + "\u0643\u062C", + "\uFCC5", + "\u0643\u062D", + "\uFCC6", + "\u0643\u062E", + "\uFCC7", + "\u0643\u0644", + "\uFCC8", + "\u0643\u0645", + "\uFCC9", + "\u0644\u062C", + "\uFCCA", + "\u0644\u062D", + "\uFCCB", + "\u0644\u062E", + "\uFCCC", + "\u0644\u0645", + "\uFCCD", + "\u0644\u0647", + "\uFCCE", + "\u0645\u062C", + "\uFCCF", + "\u0645\u062D", + "\uFCD0", + "\u0645\u062E", + "\uFCD1", + "\u0645\u0645", + "\uFCD2", + "\u0646\u062C", + "\uFCD3", + "\u0646\u062D", + "\uFCD4", + "\u0646\u062E", + "\uFCD5", + "\u0646\u0645", + "\uFCD6", + "\u0646\u0647", + "\uFCD7", + "\u0647\u062C", + "\uFCD8", + "\u0647\u0645", + "\uFCD9", + "\u0647\u0670", + "\uFCDA", + "\u064A\u062C", + "\uFCDB", + "\u064A\u062D", + "\uFCDC", + "\u064A\u062E", + "\uFCDD", + "\u064A\u0645", + "\uFCDE", + "\u064A\u0647", + "\uFCDF", + "\u0626\u0645", + "\uFCE0", + "\u0626\u0647", + "\uFCE1", + "\u0628\u0645", + "\uFCE2", + "\u0628\u0647", + "\uFCE3", + "\u062A\u0645", + "\uFCE4", + "\u062A\u0647", + "\uFCE5", + "\u062B\u0645", + "\uFCE6", + "\u062B\u0647", + "\uFCE7", + "\u0633\u0645", + "\uFCE8", + "\u0633\u0647", + "\uFCE9", + "\u0634\u0645", + "\uFCEA", + "\u0634\u0647", + "\uFCEB", + "\u0643\u0644", + "\uFCEC", + "\u0643\u0645", + "\uFCED", + "\u0644\u0645", + "\uFCEE", + "\u0646\u0645", + "\uFCEF", + "\u0646\u0647", + "\uFCF0", + "\u064A\u0645", + "\uFCF1", + "\u064A\u0647", + "\uFCF2", + "\u0640\u064E\u0651", + "\uFCF3", + "\u0640\u064F\u0651", + "\uFCF4", + "\u0640\u0650\u0651", + "\uFCF5", + "\u0637\u0649", + "\uFCF6", + "\u0637\u064A", + "\uFCF7", + "\u0639\u0649", + "\uFCF8", + "\u0639\u064A", + "\uFCF9", + "\u063A\u0649", + "\uFCFA", + "\u063A\u064A", + "\uFCFB", + "\u0633\u0649", + "\uFCFC", + "\u0633\u064A", + "\uFCFD", + "\u0634\u0649", + "\uFCFE", + "\u0634\u064A", + "\uFCFF", + "\u062D\u0649", + "\uFD00", + "\u062D\u064A", + "\uFD01", + "\u062C\u0649", + "\uFD02", + "\u062C\u064A", + "\uFD03", + "\u062E\u0649", + "\uFD04", + "\u062E\u064A", + "\uFD05", + "\u0635\u0649", + "\uFD06", + "\u0635\u064A", + "\uFD07", + "\u0636\u0649", + "\uFD08", + "\u0636\u064A", + "\uFD09", + "\u0634\u062C", + "\uFD0A", + "\u0634\u062D", + "\uFD0B", + "\u0634\u062E", + "\uFD0C", + "\u0634\u0645", + "\uFD0D", + "\u0634\u0631", + "\uFD0E", + "\u0633\u0631", + "\uFD0F", + "\u0635\u0631", + "\uFD10", + "\u0636\u0631", + "\uFD11", + "\u0637\u0649", + "\uFD12", + "\u0637\u064A", + "\uFD13", + "\u0639\u0649", + "\uFD14", + "\u0639\u064A", + "\uFD15", + "\u063A\u0649", + "\uFD16", + "\u063A\u064A", + "\uFD17", + "\u0633\u0649", + "\uFD18", + "\u0633\u064A", + "\uFD19", + "\u0634\u0649", + "\uFD1A", + "\u0634\u064A", + "\uFD1B", + "\u062D\u0649", + "\uFD1C", + "\u062D\u064A", + "\uFD1D", + "\u062C\u0649", + "\uFD1E", + "\u062C\u064A", + "\uFD1F", + "\u062E\u0649", + "\uFD20", + "\u062E\u064A", + "\uFD21", + "\u0635\u0649", + "\uFD22", + "\u0635\u064A", + "\uFD23", + "\u0636\u0649", + "\uFD24", + "\u0636\u064A", + "\uFD25", + "\u0634\u062C", + "\uFD26", + "\u0634\u062D", + "\uFD27", + "\u0634\u062E", + "\uFD28", + "\u0634\u0645", + "\uFD29", + "\u0634\u0631", + "\uFD2A", + "\u0633\u0631", + "\uFD2B", + "\u0635\u0631", + "\uFD2C", + "\u0636\u0631", + "\uFD2D", + "\u0634\u062C", + "\uFD2E", + "\u0634\u062D", + "\uFD2F", + "\u0634\u062E", + "\uFD30", + "\u0634\u0645", + "\uFD31", + "\u0633\u0647", + "\uFD32", + "\u0634\u0647", + "\uFD33", + "\u0637\u0645", + "\uFD34", + "\u0633\u062C", + "\uFD35", + "\u0633\u062D", + "\uFD36", + "\u0633\u062E", + "\uFD37", + "\u0634\u062C", + "\uFD38", + "\u0634\u062D", + "\uFD39", + "\u0634\u062E", + "\uFD3A", + "\u0637\u0645", + "\uFD3B", + "\u0638\u0645", + "\uFD3C", + "\u0627\u064B", + "\uFD3D", + "\u0627\u064B", + "\uFD50", + "\u062A\u062C\u0645", + "\uFD51", + "\u062A\u062D\u062C", + "\uFD52", + "\u062A\u062D\u062C", + "\uFD53", + "\u062A\u062D\u0645", + "\uFD54", + "\u062A\u062E\u0645", + "\uFD55", + "\u062A\u0645\u062C", + "\uFD56", + "\u062A\u0645\u062D", + "\uFD57", + "\u062A\u0645\u062E", + "\uFD58", + "\u062C\u0645\u062D", + "\uFD59", + "\u062C\u0645\u062D", + "\uFD5A", + "\u062D\u0645\u064A", + "\uFD5B", + "\u062D\u0645\u0649", + "\uFD5C", + "\u0633\u062D\u062C", + "\uFD5D", + "\u0633\u062C\u062D", + "\uFD5E", + "\u0633\u062C\u0649", + "\uFD5F", + "\u0633\u0645\u062D", + "\uFD60", + "\u0633\u0645\u062D", + "\uFD61", + "\u0633\u0645\u062C", + "\uFD62", + "\u0633\u0645\u0645", + "\uFD63", + "\u0633\u0645\u0645", + "\uFD64", + "\u0635\u062D\u062D", + "\uFD65", + "\u0635\u062D\u062D", + "\uFD66", + "\u0635\u0645\u0645", + "\uFD67", + "\u0634\u062D\u0645", + "\uFD68", + "\u0634\u062D\u0645", + "\uFD69", + "\u0634\u062C\u064A", + "\uFD6A", + "\u0634\u0645\u062E", + "\uFD6B", + "\u0634\u0645\u062E", + "\uFD6C", + "\u0634\u0645\u0645", + "\uFD6D", + "\u0634\u0645\u0645", + "\uFD6E", + "\u0636\u062D\u0649", + "\uFD6F", + "\u0636\u062E\u0645", + "\uFD70", + "\u0636\u062E\u0645", + "\uFD71", + "\u0637\u0645\u062D", + "\uFD72", + "\u0637\u0645\u062D", + "\uFD73", + "\u0637\u0645\u0645", + "\uFD74", + "\u0637\u0645\u064A", + "\uFD75", + "\u0639\u062C\u0645", + "\uFD76", + "\u0639\u0645\u0645", + "\uFD77", + "\u0639\u0645\u0645", + "\uFD78", + "\u0639\u0645\u0649", + "\uFD79", + "\u063A\u0645\u0645", + "\uFD7A", + "\u063A\u0645\u064A", + "\uFD7B", + "\u063A\u0645\u0649", + "\uFD7C", + "\u0641\u062E\u0645", + "\uFD7D", + "\u0641\u062E\u0645", + "\uFD7E", + "\u0642\u0645\u062D", + "\uFD7F", + "\u0642\u0645\u0645", + "\uFD80", + "\u0644\u062D\u0645", + "\uFD81", + "\u0644\u062D\u064A", + "\uFD82", + "\u0644\u062D\u0649", + "\uFD83", + "\u0644\u062C\u062C", + "\uFD84", + "\u0644\u062C\u062C", + "\uFD85", + "\u0644\u062E\u0645", + "\uFD86", + "\u0644\u062E\u0645", + "\uFD87", + "\u0644\u0645\u062D", + "\uFD88", + "\u0644\u0645\u062D", + "\uFD89", + "\u0645\u062D\u062C", + "\uFD8A", + "\u0645\u062D\u0645", + "\uFD8B", + "\u0645\u062D\u064A", + "\uFD8C", + "\u0645\u062C\u062D", + "\uFD8D", + "\u0645\u062C\u0645", + "\uFD8E", + "\u0645\u062E\u062C", + "\uFD8F", + "\u0645\u062E\u0645", + "\uFD92", + "\u0645\u062C\u062E", + "\uFD93", + "\u0647\u0645\u062C", + "\uFD94", + "\u0647\u0645\u0645", + "\uFD95", + "\u0646\u062D\u0645", + "\uFD96", + "\u0646\u062D\u0649", + "\uFD97", + "\u0646\u062C\u0645", + "\uFD98", + "\u0646\u062C\u0645", + "\uFD99", + "\u0646\u062C\u0649", + "\uFD9A", + "\u0646\u0645\u064A", + "\uFD9B", + "\u0646\u0645\u0649", + "\uFD9C", + "\u064A\u0645\u0645", + "\uFD9D", + "\u064A\u0645\u0645", + "\uFD9E", + "\u0628\u062E\u064A", + "\uFD9F", + "\u062A\u062C\u064A", + "\uFDA0", + "\u062A\u062C\u0649", + "\uFDA1", + "\u062A\u062E\u064A", + "\uFDA2", + "\u062A\u062E\u0649", + "\uFDA3", + "\u062A\u0645\u064A", + "\uFDA4", + "\u062A\u0645\u0649", + "\uFDA5", + "\u062C\u0645\u064A", + "\uFDA6", + "\u062C\u062D\u0649", + "\uFDA7", + "\u062C\u0645\u0649", + "\uFDA8", + "\u0633\u062E\u0649", + "\uFDA9", + "\u0635\u062D\u064A", + "\uFDAA", + "\u0634\u062D\u064A", + "\uFDAB", + "\u0636\u062D\u064A", + "\uFDAC", + "\u0644\u062C\u064A", + "\uFDAD", + "\u0644\u0645\u064A", + "\uFDAE", + "\u064A\u062D\u064A", + "\uFDAF", + "\u064A\u062C\u064A", + "\uFDB0", + "\u064A\u0645\u064A", + "\uFDB1", + "\u0645\u0645\u064A", + "\uFDB2", + "\u0642\u0645\u064A", + "\uFDB3", + "\u0646\u062D\u064A", + "\uFDB4", + "\u0642\u0645\u062D", + "\uFDB5", + "\u0644\u062D\u0645", + "\uFDB6", + "\u0639\u0645\u064A", + "\uFDB7", + "\u0643\u0645\u064A", + "\uFDB8", + "\u0646\u062C\u062D", + "\uFDB9", + "\u0645\u062E\u064A", + "\uFDBA", + "\u0644\u062C\u0645", + "\uFDBB", + "\u0643\u0645\u0645", + "\uFDBC", + "\u0644\u062C\u0645", + "\uFDBD", + "\u0646\u062C\u062D", + "\uFDBE", + "\u062C\u062D\u064A", + "\uFDBF", + "\u062D\u062C\u064A", + "\uFDC0", + "\u0645\u062C\u064A", + "\uFDC1", + "\u0641\u0645\u064A", + "\uFDC2", + "\u0628\u062D\u064A", + "\uFDC3", + "\u0643\u0645\u0645", + "\uFDC4", + "\u0639\u062C\u0645", + "\uFDC5", + "\u0635\u0645\u0645", + "\uFDC6", + "\u0633\u062E\u064A", + "\uFDC7", + "\u0646\u062C\u064A", + "\uFE49", + "\u203E", + "\uFE4A", + "\u203E", + "\uFE4B", + "\u203E", + "\uFE4C", + "\u203E", + "\uFE4D", + "\u005F", + "\uFE4E", + "\u005F", + "\uFE4F", + "\u005F", + "\uFE80", + "\u0621", + "\uFE81", + "\u0622", + "\uFE82", + "\u0622", + "\uFE83", + "\u0623", + "\uFE84", + "\u0623", + "\uFE85", + "\u0624", + "\uFE86", + "\u0624", + "\uFE87", + "\u0625", + "\uFE88", + "\u0625", + "\uFE89", + "\u0626", + "\uFE8A", + "\u0626", + "\uFE8B", + "\u0626", + "\uFE8C", + "\u0626", + "\uFE8D", + "\u0627", + "\uFE8E", + "\u0627", + "\uFE8F", + "\u0628", + "\uFE90", + "\u0628", + "\uFE91", + "\u0628", + "\uFE92", + "\u0628", + "\uFE93", + "\u0629", + "\uFE94", + "\u0629", + "\uFE95", + "\u062A", + "\uFE96", + "\u062A", + "\uFE97", + "\u062A", + "\uFE98", + "\u062A", + "\uFE99", + "\u062B", + "\uFE9A", + "\u062B", + "\uFE9B", + "\u062B", + "\uFE9C", + "\u062B", + "\uFE9D", + "\u062C", + "\uFE9E", + "\u062C", + "\uFE9F", + "\u062C", + "\uFEA0", + "\u062C", + "\uFEA1", + "\u062D", + "\uFEA2", + "\u062D", + "\uFEA3", + "\u062D", + "\uFEA4", + "\u062D", + "\uFEA5", + "\u062E", + "\uFEA6", + "\u062E", + "\uFEA7", + "\u062E", + "\uFEA8", + "\u062E", + "\uFEA9", + "\u062F", + "\uFEAA", + "\u062F", + "\uFEAB", + "\u0630", + "\uFEAC", + "\u0630", + "\uFEAD", + "\u0631", + "\uFEAE", + "\u0631", + "\uFEAF", + "\u0632", + "\uFEB0", + "\u0632", + "\uFEB1", + "\u0633", + "\uFEB2", + "\u0633", + "\uFEB3", + "\u0633", + "\uFEB4", + "\u0633", + "\uFEB5", + "\u0634", + "\uFEB6", + "\u0634", + "\uFEB7", + "\u0634", + "\uFEB8", + "\u0634", + "\uFEB9", + "\u0635", + "\uFEBA", + "\u0635", + "\uFEBB", + "\u0635", + "\uFEBC", + "\u0635", + "\uFEBD", + "\u0636", + "\uFEBE", + "\u0636", + "\uFEBF", + "\u0636", + "\uFEC0", + "\u0636", + "\uFEC1", + "\u0637", + "\uFEC2", + "\u0637", + "\uFEC3", + "\u0637", + "\uFEC4", + "\u0637", + "\uFEC5", + "\u0638", + "\uFEC6", + "\u0638", + "\uFEC7", + "\u0638", + "\uFEC8", + "\u0638", + "\uFEC9", + "\u0639", + "\uFECA", + "\u0639", + "\uFECB", + "\u0639", + "\uFECC", + "\u0639", + "\uFECD", + "\u063A", + "\uFECE", + "\u063A", + "\uFECF", + "\u063A", + "\uFED0", + "\u063A", + "\uFED1", + "\u0641", + "\uFED2", + "\u0641", + "\uFED3", + "\u0641", + "\uFED4", + "\u0641", + "\uFED5", + "\u0642", + "\uFED6", + "\u0642", + "\uFED7", + "\u0642", + "\uFED8", + "\u0642", + "\uFED9", + "\u0643", + "\uFEDA", + "\u0643", + "\uFEDB", + "\u0643", + "\uFEDC", + "\u0643", + "\uFEDD", + "\u0644", + "\uFEDE", + "\u0644", + "\uFEDF", + "\u0644", + "\uFEE0", + "\u0644", + "\uFEE1", + "\u0645", + "\uFEE2", + "\u0645", + "\uFEE3", + "\u0645", + "\uFEE4", + "\u0645", + "\uFEE5", + "\u0646", + "\uFEE6", + "\u0646", + "\uFEE7", + "\u0646", + "\uFEE8", + "\u0646", + "\uFEE9", + "\u0647", + "\uFEEA", + "\u0647", + "\uFEEB", + "\u0647", + "\uFEEC", + "\u0647", + "\uFEED", + "\u0648", + "\uFEEE", + "\u0648", + "\uFEEF", + "\u0649", + "\uFEF0", + "\u0649", + "\uFEF1", + "\u064A", + "\uFEF2", + "\u064A", + "\uFEF3", + "\u064A", + "\uFEF4", + "\u064A", + "\uFEF5", + "\u0644\u0622", + "\uFEF6", + "\u0644\u0622", + "\uFEF7", + "\u0644\u0623", + "\uFEF8", + "\u0644\u0623", + "\uFEF9", + "\u0644\u0625", + "\uFEFA", + "\u0644\u0625", + "\uFEFB", + "\u0644\u0627", + "\uFEFC", + "\u0644\u0627" + ]; }); function reverseIfRtl(chars) { var charsLength = chars.length; @@ -38598,31 +44838,26 @@ function reverseIfRtl(chars) { } return s; } -exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues; -exports.reverseIfRtl = reverseIfRtl; -exports.getUnicodeRangeFor = getUnicodeRangeFor; -exports.getNormalizedUnicodes = getNormalizedUnicodes; -exports.getUnicodeForGlyph = getUnicodeForGlyph; + /***/ }), -/* 37 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 36 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.FontRendererFactory = void 0; var _util = __w_pdfjs_require__(2); -var _cff_parser = __w_pdfjs_require__(31); +var _cff_parser = __w_pdfjs_require__(30); -var _glyphlist = __w_pdfjs_require__(34); +var _glyphlist = __w_pdfjs_require__(33); -var _encodings = __w_pdfjs_require__(33); +var _encodings = __w_pdfjs_require__(32); var _stream = __w_pdfjs_require__(12); @@ -39571,18 +45806,17 @@ var FontRendererFactory = function FontRendererFactoryClosure() { exports.FontRendererFactory = FontRendererFactory; /***/ }), -/* 38 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 37 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Type1Parser = void 0; -var _encodings = __w_pdfjs_require__(33); +var _encodings = __w_pdfjs_require__(32); var _core_utils = __w_pdfjs_require__(8); @@ -40284,15 +46518,14 @@ var Type1Parser = function Type1ParserClosure() { exports.Type1Parser = Type1Parser; /***/ }), -/* 39 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 38 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getTilingPatternIR = getTilingPatternIR; exports.Pattern = void 0; @@ -40442,7 +46675,7 @@ Shadings.RadialAxial = function RadialAxialClosure() { fn(ratio, 0, color, 0); rgbColor = cs.getRgb(color, 0); - var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + var cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]); } @@ -40451,7 +46684,7 @@ Shadings.RadialAxial = function RadialAxialClosure() { if (dict.has("Background")) { rgbColor = cs.getRgb(dict.get("Background"), 0); - background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]); } if (!extendStart) { @@ -41218,7 +47451,7 @@ Shadings.Dummy = function DummyClosure() { return Dummy; }(); -function getTilingPatternIR(operatorList, dict, args) { +function getTilingPatternIR(operatorList, dict, color) { const matrix = dict.getArray("Matrix"); const bbox = _util.Util.normalizeRect(dict.getArray("BBox")); @@ -41232,27 +47465,26 @@ function getTilingPatternIR(operatorList, dict, args) { throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`); } - return ["TilingPattern", args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; + return ["TilingPattern", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; } /***/ }), -/* 40 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 39 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.isPDFFunction = isPDFFunction; -exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0; +exports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0; var _primitives = __w_pdfjs_require__(5); var _util = __w_pdfjs_require__(2); -var _ps_parser = __w_pdfjs_require__(41); +var _ps_parser = __w_pdfjs_require__(40); var _image_utils = __w_pdfjs_require__(24); @@ -41263,7 +47495,6 @@ class PDFFunctionFactory { }) { this.xref = xref; this.isEvalSupported = isEvalSupported !== false; - this._localFunctionCache = null; } create(fn) { @@ -41314,10 +47545,6 @@ class PDFFunctionFactory { } if (fnRef) { - if (!this._localFunctionCache) { - this._localFunctionCache = new _image_utils.LocalFunctionCache(); - } - const localFunction = this._localFunctionCache.getByRef(fnRef); if (localFunction) { @@ -41344,14 +47571,14 @@ class PDFFunctionFactory { } if (fnRef) { - if (!this._localFunctionCache) { - this._localFunctionCache = new _image_utils.LocalFunctionCache(); - } - this._localFunctionCache.set(null, fnRef, parsedFunction); } } + get _localFunctionCache() { + return (0, _util.shadow)(this, "_localFunctionCache", new _image_utils.LocalFunctionCache()); + } + } exports.PDFFunctionFactory = PDFFunctionFactory; @@ -42659,15 +48886,14 @@ var PostScriptCompiler = function PostScriptCompilerClosure() { exports.PostScriptCompiler = PostScriptCompiler; /***/ }), -/* 41 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 40 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PostScriptParser = exports.PostScriptLexer = void 0; var _util = __w_pdfjs_require__(2); @@ -42913,15 +49139,14 @@ class PostScriptLexer { exports.PostScriptLexer = PostScriptLexer; /***/ }), -/* 42 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 41 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.bidi = bidi; var _util = __w_pdfjs_require__(2); @@ -43225,15 +49450,14 @@ function bidi(str, startLevel, vertical) { } /***/ }), -/* 43 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 42 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getMetrics = void 0; var _core_utils = __w_pdfjs_require__(8); @@ -46179,15 +52403,14 @@ var getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) { exports.getMetrics = getMetrics; /***/ }), -/* 44 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 43 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.MurmurHash3_64 = void 0; var _util = __w_pdfjs_require__(2); @@ -46220,7 +52443,7 @@ class MurmurHash3_64 { } } } else if ((0, _util.isArrayBuffer)(input)) { - data = input; + data = input.slice(); length = data.byteLength; } else { throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); @@ -46305,15 +52528,677 @@ class MurmurHash3_64 { exports.MurmurHash3_64 = MurmurHash3_64; /***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OperatorList = void 0; + +var _util = __w_pdfjs_require__(2); + +var QueueOptimizer = function QueueOptimizerClosure() { + function addState(parentState, pattern, checkFn, iterateFn, processFn) { + var state = parentState; + + for (var i = 0, ii = pattern.length - 1; i < ii; i++) { + var item = pattern[i]; + state = state[item] || (state[item] = []); + } + + state[pattern[pattern.length - 1]] = { + checkFn, + iterateFn, + processFn + }; + } + + function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) { + var iFirstPIMXO = iFirstSave + 2; + + for (var i = 0; i < count; i++) { + var arg = argsArray[iFirstPIMXO + 4 * i]; + var imageMask = arg.length === 1 && arg[0]; + + if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) { + fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask; + continue; + } + + break; + } + + return count - i; + } + + var InitialState = []; + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) { + var fnArray = context.fnArray; + var iFirstSave = context.iCurr - 3; + var pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + return fnArray[i] === _util.OPS.transform; + + case 2: + return fnArray[i] === _util.OPS.paintInlineImageXObject; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`); + }, function foundInlineImageGroup(context, i) { + var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; + var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; + var MAX_WIDTH = 1000; + var IMAGE_PADDING = 1; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIIXO = curr - 1; + var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + + if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + var maxX = 0; + var map = [], + maxLineHeight = 0; + var currentX = IMAGE_PADDING, + currentY = IMAGE_PADDING; + var q; + + for (q = 0; q < count; q++) { + var transform = argsArray[iFirstTransform + (q << 2)]; + var img = argsArray[iFirstPIIXO + (q << 2)][0]; + + if (currentX + img.width > MAX_WIDTH) { + maxX = Math.max(maxX, currentX); + currentY += maxLineHeight + 2 * IMAGE_PADDING; + currentX = 0; + maxLineHeight = 0; + } + + map.push({ + transform, + x: currentX, + y: currentY, + w: img.width, + h: img.height + }); + currentX += img.width + 2 * IMAGE_PADDING; + maxLineHeight = Math.max(maxLineHeight, img.height); + } + + var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; + var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; + var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4); + var imgRowSize = imgWidth << 2; + + for (q = 0; q < count; q++) { + var data = argsArray[iFirstPIIXO + (q << 2)][0].data; + var rowSize = map[q].w << 2; + var dataOffset = 0; + var offset = map[q].x + map[q].y * imgWidth << 2; + imgData.set(data.subarray(0, rowSize), offset - imgRowSize); + + for (var k = 0, kk = map[q].h; k < kk; k++) { + imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); + dataOffset += rowSize; + offset += imgRowSize; + } + + imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); + + while (offset >= 0) { + data[offset - 4] = data[offset]; + data[offset - 3] = data[offset + 1]; + data[offset - 2] = data[offset + 2]; + data[offset - 1] = data[offset + 3]; + data[offset + rowSize] = data[offset + rowSize - 4]; + data[offset + rowSize + 1] = data[offset + rowSize - 3]; + data[offset + rowSize + 2] = data[offset + rowSize - 2]; + data[offset + rowSize + 3] = data[offset + rowSize - 1]; + offset -= imgRowSize; + } + } + + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [{ + width: imgWidth, + height: imgHeight, + kind: _util.ImageKind.RGBA_32BPP, + data: imgData + }, map]); + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) { + var fnArray = context.fnArray; + var iFirstSave = context.iCurr - 3; + var pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + return fnArray[i] === _util.OPS.transform; + + case 2: + return fnArray[i] === _util.OPS.paintImageMaskXObject; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`); + }, function foundImageMaskGroup(context, i) { + var MIN_IMAGES_IN_MASKS_BLOCK = 10; + var MAX_IMAGES_IN_MASKS_BLOCK = 100; + var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIMXO = curr - 1; + var count = Math.floor((i - iFirstSave) / 4); + count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray); + + if (count < MIN_IMAGES_IN_MASKS_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + var q; + var isSameImage = false; + var iTransform, transformArgs; + var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + const firstTransformArg0 = argsArray[iFirstTransform][0], + firstTransformArg1 = argsArray[iFirstTransform][1], + firstTransformArg2 = argsArray[iFirstTransform][2], + firstTransformArg3 = argsArray[iFirstTransform][3]; + + if (firstTransformArg1 === firstTransformArg2) { + isSameImage = true; + iTransform = iFirstTransform + 4; + var iPIMXO = iFirstPIMXO + 4; + + for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { + transformArgs = argsArray[iTransform]; + + if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) { + if (q < MIN_IMAGES_IN_MASKS_BLOCK) { + isSameImage = false; + } else { + count = q; + } + + break; + } + } + } + + if (isSameImage) { + count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); + var positions = new Float32Array(count * 2); + iTransform = iFirstTransform; + + for (q = 0; q < count; q++, iTransform += 4) { + transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]); + } else { + count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); + var images = []; + + for (q = 0; q < count; q++) { + transformArgs = argsArray[iFirstTransform + (q << 2)]; + var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; + images.push({ + data: maskParams.data, + width: maskParams.width, + height: maskParams.height, + transform: transformArgs + }); + } + + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [images]); + } + + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { + var argsArray = context.argsArray; + var iFirstTransform = context.iCurr - 2; + return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0; + }, function iterateImageGroup(context, i) { + var fnArray = context.fnArray, + argsArray = context.argsArray; + var iFirstSave = context.iCurr - 3; + var pos = (i - iFirstSave) % 4; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.save; + + case 1: + if (fnArray[i] !== _util.OPS.transform) { + return false; + } + + var iFirstTransform = context.iCurr - 2; + var firstTransformArg0 = argsArray[iFirstTransform][0]; + var firstTransformArg3 = argsArray[iFirstTransform][3]; + + if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) { + return false; + } + + return true; + + case 2: + if (fnArray[i] !== _util.OPS.paintImageXObject) { + return false; + } + + var iFirstPIXO = context.iCurr - 1; + var firstPIXOArg0 = argsArray[iFirstPIXO][0]; + + if (argsArray[i][0] !== firstPIXOArg0) { + return false; + } + + return true; + + case 3: + return fnArray[i] === _util.OPS.restore; + } + + throw new Error(`iterateImageGroup - invalid pos: ${pos}`); + }, function (context, i) { + var MIN_IMAGES_IN_BLOCK = 3; + var MAX_IMAGES_IN_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIXO = curr - 1; + var firstPIXOArg0 = argsArray[iFirstPIXO][0]; + var firstTransformArg0 = argsArray[iFirstTransform][0]; + var firstTransformArg3 = argsArray[iFirstTransform][3]; + var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK); + + if (count < MIN_IMAGES_IN_BLOCK) { + return i - (i - iFirstSave) % 4; + } + + var positions = new Float32Array(count * 2); + var iTransform = iFirstTransform; + + for (var q = 0; q < count; q++, iTransform += 4) { + var transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + + var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, args); + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) { + var fnArray = context.fnArray, + argsArray = context.argsArray; + var iFirstSave = context.iCurr - 4; + var pos = (i - iFirstSave) % 5; + + switch (pos) { + case 0: + return fnArray[i] === _util.OPS.beginText; + + case 1: + return fnArray[i] === _util.OPS.setFont; + + case 2: + return fnArray[i] === _util.OPS.setTextMatrix; + + case 3: + if (fnArray[i] !== _util.OPS.showText) { + return false; + } + + var iFirstSetFont = context.iCurr - 3; + var firstSetFontArg0 = argsArray[iFirstSetFont][0]; + var firstSetFontArg1 = argsArray[iFirstSetFont][1]; + + if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) { + return false; + } + + return true; + + case 4: + return fnArray[i] === _util.OPS.endText; + } + + throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`); + }, function (context, i) { + var MIN_CHARS_IN_BLOCK = 3; + var MAX_CHARS_IN_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstBeginText = curr - 4; + var iFirstSetFont = curr - 3; + var iFirstSetTextMatrix = curr - 2; + var iFirstShowText = curr - 1; + var iFirstEndText = curr; + var firstSetFontArg0 = argsArray[iFirstSetFont][0]; + var firstSetFontArg1 = argsArray[iFirstSetFont][1]; + var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK); + + if (count < MIN_CHARS_IN_BLOCK) { + return i - (i - iFirstBeginText) % 5; + } + + var iFirst = iFirstBeginText; + + if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { + count++; + iFirst -= 5; + } + + var iEndText = iFirst + 4; + + for (var q = 1; q < count; q++) { + fnArray.splice(iEndText, 3); + argsArray.splice(iEndText, 3); + iEndText += 2; + } + + return iEndText + 1; + }); + + function QueueOptimizer(queue) { + this.queue = queue; + this.state = null; + this.context = { + iCurr: 0, + fnArray: queue.fnArray, + argsArray: queue.argsArray + }; + this.match = null; + this.lastProcessed = 0; + } + + QueueOptimizer.prototype = { + _optimize() { + const fnArray = this.queue.fnArray; + let i = this.lastProcessed, + ii = fnArray.length; + let state = this.state; + let match = this.match; + + if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) { + this.lastProcessed = ii; + return; + } + + const context = this.context; + + while (i < ii) { + if (match) { + const iterate = (0, match.iterateFn)(context, i); + + if (iterate) { + i++; + continue; + } + + i = (0, match.processFn)(context, i + 1); + ii = fnArray.length; + match = null; + state = null; + + if (i >= ii) { + break; + } + } + + state = (state || InitialState)[fnArray[i]]; + + if (!state || Array.isArray(state)) { + i++; + continue; + } + + context.iCurr = i; + i++; + + if (state.checkFn && !(0, state.checkFn)(context)) { + state = null; + continue; + } + + match = state; + state = null; + } + + this.state = state; + this.match = match; + this.lastProcessed = i; + }, + + push(fn, args) { + this.queue.fnArray.push(fn); + this.queue.argsArray.push(args); + + this._optimize(); + }, + + flush() { + while (this.match) { + const length = this.queue.fnArray.length; + this.lastProcessed = (0, this.match.processFn)(this.context, length); + this.match = null; + this.state = null; + + this._optimize(); + } + }, + + reset() { + this.state = null; + this.match = null; + this.lastProcessed = 0; + } + + }; + return QueueOptimizer; +}(); + +var NullOptimizer = function NullOptimizerClosure() { + function NullOptimizer(queue) { + this.queue = queue; + } + + NullOptimizer.prototype = { + push(fn, args) { + this.queue.fnArray.push(fn); + this.queue.argsArray.push(args); + }, + + flush() {}, + + reset() {} + + }; + return NullOptimizer; +}(); + +var OperatorList = function OperatorListClosure() { + var CHUNK_SIZE = 1000; + var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; + + function OperatorList(intent, streamSink) { + this._streamSink = streamSink; + this.fnArray = []; + this.argsArray = []; + + if (streamSink && intent !== "oplist") { + this.optimizer = new QueueOptimizer(this); + } else { + this.optimizer = new NullOptimizer(this); + } + + this.dependencies = new Set(); + this._totalLength = 0; + this.weight = 0; + this._resolved = streamSink ? null : Promise.resolve(); + } + + OperatorList.prototype = { + get length() { + return this.argsArray.length; + }, + + get ready() { + return this._resolved || this._streamSink.ready; + }, + + get totalLength() { + return this._totalLength + this.length; + }, + + addOp(fn, args) { + this.optimizer.push(fn, args); + this.weight++; + + if (this._streamSink) { + if (this.weight >= CHUNK_SIZE) { + this.flush(); + } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { + this.flush(); + } + } + }, + + addDependency(dependency) { + if (this.dependencies.has(dependency)) { + return; + } + + this.dependencies.add(dependency); + this.addOp(_util.OPS.dependency, [dependency]); + }, + + addDependencies(dependencies) { + for (const dependency of dependencies) { + this.addDependency(dependency); + } + }, + + addOpList(opList) { + if (!(opList instanceof OperatorList)) { + (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.'); + return; + } + + for (const dependency of opList.dependencies) { + this.dependencies.add(dependency); + } + + for (var i = 0, ii = opList.length; i < ii; i++) { + this.addOp(opList.fnArray[i], opList.argsArray[i]); + } + }, + + getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length + }; + }, + + get _transfers() { + const transfers = []; + const { + fnArray, + argsArray, + length + } = this; + + for (let i = 0; i < length; i++) { + switch (fnArray[i]) { + case _util.OPS.paintInlineImageXObject: + case _util.OPS.paintInlineImageXObjectGroup: + case _util.OPS.paintImageMaskXObject: + const arg = argsArray[i][0]; + ; + + if (!arg.cached) { + transfers.push(arg.data.buffer); + } + + break; + } + } + + return transfers; + }, + + flush(lastChunk = false) { + this.optimizer.flush(); + const length = this.length; + this._totalLength += length; + + this._streamSink.enqueue({ + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk, + length + }, 1, this._transfers); + + this.dependencies.clear(); + this.fnArray.length = 0; + this.argsArray.length = 0; + this.weight = 0; + this.optimizer.reset(); + } + + }; + return OperatorList; +}(); + +exports.OperatorList = OperatorList; + +/***/ }), /* 45 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFImage = void 0; var _util = __w_pdfjs_require__(2); @@ -46980,14 +53865,853 @@ exports.PDFImage = PDFImage; /***/ }), /* 46 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.incrementalUpdate = incrementalUpdate; +exports.writeDict = writeDict; + +var _util = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(5); + +var _core_utils = __w_pdfjs_require__(8); + +var _xml_parser = __w_pdfjs_require__(47); + +var _crypto = __w_pdfjs_require__(22); + +function writeDict(dict, buffer, transform) { + buffer.push("<<"); + + for (const key of dict.getKeys()) { + buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `); + writeValue(dict.getRaw(key), buffer, transform); + } + + buffer.push(">>"); +} + +function writeStream(stream, buffer, transform) { + writeDict(stream.dict, buffer, transform); + buffer.push(" stream\n"); + let string = (0, _util.bytesToString)(stream.getBytes()); + + if (transform !== null) { + string = transform.encryptString(string); + } + + buffer.push(string); + buffer.push("\nendstream\n"); +} + +function writeArray(array, buffer, transform) { + buffer.push("["); + let first = true; + + for (const val of array) { + if (!first) { + buffer.push(" "); + } else { + first = false; + } + + writeValue(val, buffer, transform); + } + + buffer.push("]"); +} + +function numberToString(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const roundedValue = Math.round(value * 100); + + if (roundedValue % 100 === 0) { + return (roundedValue / 100).toString(); + } + + if (roundedValue % 10 === 0) { + return value.toFixed(1); + } + + return value.toFixed(2); +} + +function writeValue(value, buffer, transform) { + if ((0, _primitives.isName)(value)) { + buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`); + } else if ((0, _primitives.isRef)(value)) { + buffer.push(`${value.num} ${value.gen} R`); + } else if (Array.isArray(value)) { + writeArray(value, buffer, transform); + } else if (typeof value === "string") { + if (transform !== null) { + value = transform.encryptString(value); + } + + buffer.push(`(${(0, _util.escapeString)(value)})`); + } else if (typeof value === "number") { + buffer.push(numberToString(value)); + } else if ((0, _primitives.isDict)(value)) { + writeDict(value, buffer, transform); + } else if ((0, _primitives.isStream)(value)) { + writeStream(value, buffer, transform); + } +} + +function writeInt(number, size, offset, buffer) { + for (let i = size + offset - 1; i > offset - 1; i--) { + buffer[i] = number & 0xff; + number >>= 8; + } + + return offset + size; +} + +function writeString(string, offset, buffer) { + for (let i = 0, len = string.length; i < len; i++) { + buffer[offset + i] = string.charCodeAt(i) & 0xff; + } +} + +function computeMD5(filesize, xrefInfo) { + const time = Math.floor(Date.now() / 1000); + const filename = xrefInfo.filename || ""; + const md5Buffer = [time.toString(), filename, filesize.toString()]; + let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0); + + for (const value of Object.values(xrefInfo.info)) { + md5Buffer.push(value); + md5BufferLen += value.length; + } + + const array = new Uint8Array(md5BufferLen); + let offset = 0; + + for (const str of md5Buffer) { + writeString(str, offset, array); + offset += str.length; + } + + return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array)); +} + +function updateXFA(datasetsRef, newRefs, xref) { + if (datasetsRef === null || xref === null) { + return; + } + + const datasets = xref.fetchIfRef(datasetsRef); + const str = (0, _util.bytesToString)(datasets.getBytes()); + const xml = new _xml_parser.SimpleXMLParser({ + hasAttributes: true + }).parseFromString(str); + + for (const { + xfa + } of newRefs) { + if (!xfa) { + continue; + } + + const { + path, + value + } = xfa; + + if (!path) { + continue; + } + + const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0); + + if (node) { + node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)]; + } else { + (0, _util.warn)(`Node not found for path: ${path}`); + } + } + + const buffer = []; + xml.documentElement.dump(buffer); + let updatedXml = buffer.join(""); + const encrypt = xref.encrypt; + + if (encrypt) { + const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen); + updatedXml = transform.encryptString(updatedXml); + } + + const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length ${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n"; + newRefs.push({ + ref: datasetsRef, + data + }); +} + +function incrementalUpdate({ + originalData, + xrefInfo, + newRefs, + xref = null, + datasetsRef = null +}) { + updateXFA(datasetsRef, newRefs, xref); + const newXref = new _primitives.Dict(null); + const refForXrefTable = xrefInfo.newRef; + let buffer, baseOffset; + const lastByte = originalData[originalData.length - 1]; + + if (lastByte === 0x0a || lastByte === 0x0d) { + buffer = []; + baseOffset = originalData.length; + } else { + buffer = ["\n"]; + baseOffset = originalData.length + 1; + } + + newXref.set("Size", refForXrefTable.num + 1); + newXref.set("Prev", xrefInfo.startXRef); + newXref.set("Type", _primitives.Name.get("XRef")); + + if (xrefInfo.rootRef !== null) { + newXref.set("Root", xrefInfo.rootRef); + } + + if (xrefInfo.infoRef !== null) { + newXref.set("Info", xrefInfo.infoRef); + } + + if (xrefInfo.encrypt !== null) { + newXref.set("Encrypt", xrefInfo.encrypt); + } + + newRefs.push({ + ref: refForXrefTable, + data: "" + }); + newRefs = newRefs.sort((a, b) => { + return a.ref.num - b.ref.num; + }); + const xrefTableData = [[0, 1, 0xffff]]; + const indexes = [0, 1]; + let maxOffset = 0; + + for (const { + ref, + data + } of newRefs) { + maxOffset = Math.max(maxOffset, baseOffset); + xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]); + baseOffset += data.length; + indexes.push(ref.num); + indexes.push(1); + buffer.push(data); + } + + newXref.set("Index", indexes); + + if (xrefInfo.fileIds.length !== 0) { + const md5 = computeMD5(baseOffset, xrefInfo); + newXref.set("ID", [xrefInfo.fileIds[0], md5]); + } + + const offsetSize = Math.ceil(Math.log2(maxOffset) / 8); + const sizes = [1, offsetSize, 2]; + const structSize = sizes[0] + sizes[1] + sizes[2]; + const tableLength = structSize * xrefTableData.length; + newXref.set("W", sizes); + newXref.set("Length", tableLength); + buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`); + writeDict(newXref, buffer, null); + buffer.push(" stream\n"); + const bufferLen = buffer.reduce((a, str) => a + str.length, 0); + const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`; + const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length); + array.set(originalData); + let offset = originalData.length; + + for (const str of buffer) { + writeString(str, offset, array); + offset += str.length; + } + + for (const [type, objOffset, gen] of xrefTableData) { + offset = writeInt(type, sizes[0], offset, array); + offset = writeInt(objOffset, sizes[1], offset, array); + offset = writeInt(gen, sizes[2], offset, array); + } + + writeString(footer, offset, array); + return array; +} + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SimpleXMLParser = exports.SimpleDOMNode = void 0; + +var _util = __w_pdfjs_require__(2); + +const XMLParserErrorCode = { + NoError: 0, + EndOfDocument: -1, + UnterminatedCdat: -2, + UnterminatedXmlDeclaration: -3, + UnterminatedDoctypeDeclaration: -4, + UnterminatedComment: -5, + MalformedElement: -6, + OutOfMemory: -7, + UnterminatedAttributeValue: -8, + UnterminatedElement: -9, + ElementNeverBegun: -10 +}; + +function isWhitespace(s, index) { + const ch = s[index]; + return ch === " " || ch === "\n" || ch === "\r" || ch === "\t"; +} + +function isWhitespaceString(s) { + for (let i = 0, ii = s.length; i < ii; i++) { + if (!isWhitespace(s, i)) { + return false; + } + } + + return true; +} + +class XMLParserBase { + _resolveEntities(s) { + return s.replace(/&([^;]+);/g, (all, entity) => { + if (entity.substring(0, 2) === "#x") { + return String.fromCodePoint(parseInt(entity.substring(2), 16)); + } else if (entity.substring(0, 1) === "#") { + return String.fromCodePoint(parseInt(entity.substring(1), 10)); + } + + switch (entity) { + case "lt": + return "<"; + + case "gt": + return ">"; + + case "amp": + return "&"; + + case "quot": + return '"'; + } + + return this.onResolveEntity(entity); + }); + } + + _parseContent(s, start) { + const attributes = []; + let pos = start; + + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") { + ++pos; + } + + const name = s.substring(start, pos); + skipWs(); + + while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") { + skipWs(); + let attrName = "", + attrValue = ""; + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") { + attrName += s[pos]; + ++pos; + } + + skipWs(); + + if (s[pos] !== "=") { + return null; + } + + ++pos; + skipWs(); + const attrEndChar = s[pos]; + + if (attrEndChar !== '"' && attrEndChar !== "'") { + return null; + } + + const attrEndIndex = s.indexOf(attrEndChar, ++pos); + + if (attrEndIndex < 0) { + return null; + } + + attrValue = s.substring(pos, attrEndIndex); + attributes.push({ + name: attrName, + value: this._resolveEntities(attrValue) + }); + pos = attrEndIndex + 1; + skipWs(); + } + + return { + name, + attributes, + parsed: pos - start + }; + } + + _parseProcessingInstruction(s, start) { + let pos = start; + + function skipWs() { + while (pos < s.length && isWhitespace(s, pos)) { + ++pos; + } + } + + while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") { + ++pos; + } + + const name = s.substring(start, pos); + skipWs(); + const attrStart = pos; + + while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) { + ++pos; + } + + const value = s.substring(attrStart, pos); + return { + name, + value, + parsed: pos - start + }; + } + + parseXml(s) { + let i = 0; + + while (i < s.length) { + const ch = s[i]; + let j = i; + + if (ch === "<") { + ++j; + const ch2 = s[j]; + let q; + + switch (ch2) { + case "/": + ++j; + q = s.indexOf(">", j); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + + this.onEndElement(s.substring(j, q)); + j = q + 1; + break; + + case "?": + ++j; + + const pi = this._parseProcessingInstruction(s, j); + + if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") { + this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration); + return; + } + + this.onPi(pi.name, pi.value); + j += pi.parsed + 2; + break; + + case "!": + if (s.substring(j + 1, j + 3) === "--") { + q = s.indexOf("-->", j + 3); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedComment); + return; + } + + this.onComment(s.substring(j + 3, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "[CDATA[") { + q = s.indexOf("]]>", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedCdat); + return; + } + + this.onCdata(s.substring(j + 8, q)); + j = q + 3; + } else if (s.substring(j + 1, j + 8) === "DOCTYPE") { + const q2 = s.indexOf("[", j + 8); + let complexDoctype = false; + q = s.indexOf(">", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + + if (q2 > 0 && q > q2) { + q = s.indexOf("]>", j + 8); + + if (q < 0) { + this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration); + return; + } + + complexDoctype = true; + } + + const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0)); + this.onDoctype(doctypeContent); + j = q + (complexDoctype ? 2 : 1); + } else { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + + break; + + default: + const content = this._parseContent(s, j); + + if (content === null) { + this.onError(XMLParserErrorCode.MalformedElement); + return; + } + + let isClosed = false; + + if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") { + isClosed = true; + } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") { + this.onError(XMLParserErrorCode.UnterminatedElement); + return; + } + + this.onBeginElement(content.name, content.attributes, isClosed); + j += content.parsed + (isClosed ? 2 : 1); + break; + } + } else { + while (j < s.length && s[j] !== "<") { + j++; + } + + const text = s.substring(i, j); + this.onText(this._resolveEntities(text)); + } + + i = j; + } + } + + onResolveEntity(name) { + return `&${name};`; + } + + onPi(name, value) {} + + onComment(text) {} + + onCdata(text) {} + + onDoctype(doctypeContent) {} + + onText(text) {} + + onBeginElement(name, attributes, isEmpty) {} + + onEndElement(name) {} + + onError(code) {} + +} + +class SimpleDOMNode { + constructor(nodeName, nodeValue) { + this.nodeName = nodeName; + this.nodeValue = nodeValue; + Object.defineProperty(this, "parentNode", { + value: null, + writable: true + }); + } + + get firstChild() { + return this.childNodes && this.childNodes[0]; + } + + get nextSibling() { + const childNodes = this.parentNode.childNodes; + + if (!childNodes) { + return undefined; + } + + const index = childNodes.indexOf(this); + + if (index === -1) { + return undefined; + } + + return childNodes[index + 1]; + } + + get textContent() { + if (!this.childNodes) { + return this.nodeValue || ""; + } + + return this.childNodes.map(function (child) { + return child.textContent; + }).join(""); + } + + hasChildNodes() { + return this.childNodes && this.childNodes.length > 0; + } + + searchNode(paths, pos) { + if (pos >= paths.length) { + return this; + } + + const component = paths[pos]; + const stack = []; + let node = this; + + while (true) { + if (component.name === node.nodeName) { + if (component.pos === 0) { + const res = node.searchNode(paths, pos + 1); + + if (res !== null) { + return res; + } + } else if (stack.length === 0) { + return null; + } else { + const [parent] = stack.pop(); + let siblingPos = 0; + + for (const child of parent.childNodes) { + if (component.name === child.nodeName) { + if (siblingPos === component.pos) { + return child.searchNode(paths, pos + 1); + } + + siblingPos++; + } + } + + return node.searchNode(paths, pos + 1); + } + } + + if (node.childNodes && node.childNodes.length !== 0) { + stack.push([node, 0]); + node = node.childNodes[0]; + } else if (stack.length === 0) { + return null; + } else { + while (stack.length !== 0) { + const [parent, currentPos] = stack.pop(); + const newPos = currentPos + 1; + + if (newPos < parent.childNodes.length) { + stack.push([parent, newPos]); + node = parent.childNodes[newPos]; + break; + } + } + + if (stack.length === 0) { + return null; + } + } + } + } + + dump(buffer) { + if (this.nodeName === "#text") { + buffer.push((0, _util.encodeToXmlString)(this.nodeValue)); + return; + } + + buffer.push(`<${this.nodeName}`); + + if (this.attributes) { + for (const attribute of this.attributes) { + buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`); + } + } + + if (this.hasChildNodes()) { + buffer.push(">"); + + for (const child of this.childNodes) { + child.dump(buffer); + } + + buffer.push(`</${this.nodeName}>`); + } else if (this.nodeValue) { + buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`); + } else { + buffer.push("/>"); + } + } + +} + +exports.SimpleDOMNode = SimpleDOMNode; + +class SimpleXMLParser extends XMLParserBase { + constructor({ + hasAttributes = false, + lowerCaseName = false + }) { + super(); + this._currentFragment = null; + this._stack = null; + this._errorCode = XMLParserErrorCode.NoError; + this._hasAttributes = hasAttributes; + this._lowerCaseName = lowerCaseName; + } + + parseFromString(data) { + this._currentFragment = []; + this._stack = []; + this._errorCode = XMLParserErrorCode.NoError; + this.parseXml(data); + + if (this._errorCode !== XMLParserErrorCode.NoError) { + return undefined; + } + + const [documentElement] = this._currentFragment; + + if (!documentElement) { + return undefined; + } + + return { + documentElement + }; + } + + onResolveEntity(name) { + switch (name) { + case "apos": + return "'"; + } + + return super.onResolveEntity(name); + } + + onText(text) { + if (isWhitespaceString(text)) { + return; + } + + const node = new SimpleDOMNode("#text", text); + + this._currentFragment.push(node); + } + + onCdata(text) { + const node = new SimpleDOMNode("#text", text); + + this._currentFragment.push(node); + } + + onBeginElement(name, attributes, isEmpty) { + if (this._lowerCaseName) { + name = name.toLowerCase(); + } + + const node = new SimpleDOMNode(name); + node.childNodes = []; + + if (this._hasAttributes) { + node.attributes = attributes; + } + + this._currentFragment.push(node); + + if (isEmpty) { + return; + } + + this._stack.push(this._currentFragment); + + this._currentFragment = node.childNodes; + } + + onEndElement(name) { + this._currentFragment = this._stack.pop() || []; + const lastElement = this._currentFragment[this._currentFragment.length - 1]; + + if (!lastElement) { + return; + } + + for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) { + lastElement.childNodes[i].parentNode = lastElement; + } + } + + onError(code) { + this._errorCode = code; + } + +} + +exports.SimpleXMLParser = SimpleXMLParser; + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.MessageHandler = void 0; var _util = __w_pdfjs_require__(2); @@ -47480,15 +55204,14 @@ class MessageHandler { exports.MessageHandler = MessageHandler; /***/ }), -/* 47 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +/* 49 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFWorkerStream = void 0; var _util = __w_pdfjs_require__(2); @@ -47633,6 +55356,66 @@ class PDFWorkerStreamRangeReader { } /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __w_pdfjs_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __w_pdfjs_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __w_pdfjs_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __w_pdfjs_require__(0); +/******/ })() +; }); //# sourceMappingURL=pdf.worker.js.map
\ No newline at end of file diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch index 69f488516..a6e1e2764 100644 --- a/third-party/pdfjs/epiphany-pdfjs-changes.patch +++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch @@ -1,13 +1,14 @@ -diff -urN web2/viewer.css web/viewer.css ---- web2/viewer.css 2020-09-03 23:18:08.000000000 +0200 -+++ web/viewer.css 2021-04-05 11:25:24.181448360 +0200 +diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css +index b7277df3d..d7322b41e 100644 +--- a/third-party/pdfjs/web/viewer.css ++++ b/third-party/pdfjs/web/viewer.css @@ -1,4 +1,5 @@ /* Copyright 2014 Mozilla Foundation + * Modifications made for Epiphany by Jan-Michael Brummer <jan.brummer@tabos.org> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. -@@ -2361,6 +2362,7 @@ +@@ -2321,6 +2322,7 @@ html[dir="rtl"] .dropdownToolbarButton::after { } .dropdownToolbarButton > select { @@ -15,7 +16,7 @@ diff -urN web2/viewer.css web/viewer.css width: 162px; height: 28px; font-size: 12px; -@@ -3132,6 +3134,7 @@ +@@ -2942,6 +2944,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] { } .toolbarField.pageNumber { @@ -23,9 +24,10 @@ diff -urN web2/viewer.css web/viewer.css -moz-appearance: textfield; /* hides the spinner in moz */ min-width: 16px; text-align: right; -diff -urN web2/viewer.html web/viewer.html ---- web2/viewer.html 2020-09-03 23:18:08.000000000 +0200 -+++ web/viewer.html 2021-04-05 11:25:24.181448360 +0200 +diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html +index f661cb9f5..7b8dd7663 100644 +--- a/third-party/pdfjs/web/viewer.html ++++ b/third-party/pdfjs/web/viewer.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <!-- @@ -34,7 +36,7 @@ diff -urN web2/viewer.html web/viewer.html Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. -@@ -21,14 +22,14 @@ +@@ -21,14 +22,14 @@ Adobe CMap resources are covered by their own copyright but the same license: See https://github.com/adobe-type-tools/cmap-resources --> <html dir="ltr" mozdisallowselectionprint> @@ -51,7 +53,7 @@ diff -urN web2/viewer.html web/viewer.html <link rel="stylesheet" href="viewer.css"> -@@ -124,7 +125,7 @@ +@@ -136,7 +137,7 @@ See https://github.com/adobe-type-tools/cmap-resources <span data-l10n-id="download_label">Download</span> </button> @@ -60,7 +62,7 @@ diff -urN web2/viewer.html web/viewer.html <span data-l10n-id="bookmark_label">Current View</span> </a> -@@ -226,7 +227,7 @@ +@@ -238,7 +239,7 @@ See https://github.com/adobe-type-tools/cmap-resources <button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download"> <span data-l10n-id="download_label">Download</span> </button> @@ -69,9 +71,10 @@ diff -urN web2/viewer.html web/viewer.html <span data-l10n-id="bookmark_label">Current View</span> </a> -diff -urN web2/viewer.js web/viewer.js ---- web2/viewer.js 2020-09-03 23:18:20.000000000 +0200 -+++ web/viewer.js 2021-04-05 11:25:24.184448405 +0200 +diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js +index d093d773b..ed36e7f02 100644 +--- a/third-party/pdfjs/web/viewer.js ++++ b/third-party/pdfjs/web/viewer.js @@ -3,6 +3,7 @@ * Javascript code in this page * @@ -80,7 +83,7 @@ diff -urN web2/viewer.js web/viewer.js * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. -@@ -1973,8 +1974,7 @@ +@@ -2663,8 +2664,7 @@ function webViewerInitialized() { let file; const queryString = document.location.search.substring(1); const params = (0, _ui_utils.parseQueryString)(queryString); @@ -90,7 +93,7 @@ diff -urN web2/viewer.js web/viewer.js const fileInput = document.createElement("input"); fileInput.id = appConfig.openFileInputName; fileInput.className = "fileInput"; -@@ -1982,12 +1982,8 @@ +@@ -2672,12 +2672,8 @@ function webViewerInitialized() { fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; document.body.appendChild(fileInput); @@ -105,7 +108,7 @@ diff -urN web2/viewer.js web/viewer.js fileInput.addEventListener("change", function (evt) { const files = evt.target.files; -@@ -2049,8 +2045,18 @@ +@@ -2739,8 +2735,18 @@ function webViewerInitialized() { } }, true); @@ -125,19 +128,19 @@ diff -urN web2/viewer.js web/viewer.js } catch (reason) { PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the PDF.").then(msg => { PDFViewerApplication.error(msg, reason); -@@ -6877,6 +6883,8 @@ +@@ -6977,6 +6983,8 @@ class PDFHistory { } } -+ // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl -+ return; ++// FIXME: This currently breaks Epiphany due to rewriting history with baseUrl ++return; if (shouldReplace) { window.history.replaceState(newState, "", newUrl); } else { -@@ -13897,4 +13905,4 @@ - - /***/ }) - /******/ ]); +@@ -14896,4 +14904,4 @@ _app.PDFPrintServiceFactory.instance = { + /******/ // This entry module used 'exports' so it can't be inlined + /******/ })() + ; -//# sourceMappingURL=viewer.js.map -\ Kein Zeilenumbruch am Dateiende. +\ No newline at end of file +//# sourceMappingURL=viewer.js.map diff --git a/third-party/pdfjs/pdfjs.gresource.xml b/third-party/pdfjs/pdfjs.gresource.xml index 9845e7483..a8b511b2e 100644 --- a/third-party/pdfjs/pdfjs.gresource.xml +++ b/third-party/pdfjs/pdfjs.gresource.xml @@ -2,369 +2,337 @@ <gresources> <gresource prefix="/org/gnome/epiphany/pdfjs"> <file compressed="true">build/pdf.js</file> + <file compressed="true">build/pdf.sandbox.js</file> <file compressed="true">build/pdf.worker.js</file> <file compressed="true">web/compressed.tracemonkey-pldi-09.pdf</file> <file compressed="true">web/debugger.js</file> <file compressed="true">web/viewer.css</file> <file compressed="true">web/viewer.html</file> <file compressed="true">web/viewer.js</file> - <file compressed="true">web/images/annotation-paragraph.svg</file> - <file compressed="true">web/images/annotation-note.svg</file> - <file compressed="true">web/images/annotation-noicon.svg</file> - <file compressed="true">web/images/loading-icon.gif</file> + <file compressed="true">web/cmaps/78-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/78-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/78-H.bcmap</file> + <file compressed="true">web/cmaps/78-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/78-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/78-V.bcmap</file> + <file compressed="true">web/cmaps/78ms-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/78ms-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/83pv-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/90ms-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/90ms-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/90msp-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/90msp-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/90pv-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/90pv-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/Add-H.bcmap</file> + <file compressed="true">web/cmaps/Add-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/Add-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/Add-V.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-0.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-1.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-3.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-4.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-5.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-6.bcmap</file> + <file compressed="true">web/cmaps/Adobe-CNS1-UCS2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-0.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-1.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-3.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-4.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-5.bcmap</file> + <file compressed="true">web/cmaps/Adobe-GB1-UCS2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-0.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-1.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-3.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-4.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-5.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-6.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Japan1-UCS2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Korea1-0.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Korea1-1.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Korea1-2.bcmap</file> + <file compressed="true">web/cmaps/Adobe-Korea1-UCS2.bcmap</file> + <file compressed="true">web/cmaps/B5-H.bcmap</file> + <file compressed="true">web/cmaps/B5-V.bcmap</file> + <file compressed="true">web/cmaps/B5pc-H.bcmap</file> + <file compressed="true">web/cmaps/B5pc-V.bcmap</file> + <file compressed="true">web/cmaps/CNS-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/CNS-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/CNS1-H.bcmap</file> + <file compressed="true">web/cmaps/CNS1-V.bcmap</file> + <file compressed="true">web/cmaps/CNS2-H.bcmap</file> + <file compressed="true">web/cmaps/CNS2-V.bcmap</file> + <file compressed="true">web/cmaps/ETHK-B5-H.bcmap</file> + <file compressed="true">web/cmaps/ETHK-B5-V.bcmap</file> + <file compressed="true">web/cmaps/ETen-B5-H.bcmap</file> + <file compressed="true">web/cmaps/ETen-B5-V.bcmap</file> + <file compressed="true">web/cmaps/ETenms-B5-H.bcmap</file> + <file compressed="true">web/cmaps/ETenms-B5-V.bcmap</file> + <file compressed="true">web/cmaps/EUC-H.bcmap</file> + <file compressed="true">web/cmaps/EUC-V.bcmap</file> + <file compressed="true">web/cmaps/Ext-H.bcmap</file> + <file compressed="true">web/cmaps/Ext-RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/Ext-RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/Ext-V.bcmap</file> + <file compressed="true">web/cmaps/GB-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GB-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/GB-H.bcmap</file> + <file compressed="true">web/cmaps/GB-V.bcmap</file> + <file compressed="true">web/cmaps/GBK-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GBK-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/GBK2K-H.bcmap</file> + <file compressed="true">web/cmaps/GBK2K-V.bcmap</file> + <file compressed="true">web/cmaps/GBKp-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GBKp-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/GBT-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GBT-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/GBT-H.bcmap</file> + <file compressed="true">web/cmaps/GBT-V.bcmap</file> + <file compressed="true">web/cmaps/GBTpc-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GBTpc-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/GBpc-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/GBpc-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/H.bcmap</file> + <file compressed="true">web/cmaps/HKdla-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKdla-B5-V.bcmap</file> + <file compressed="true">web/cmaps/HKdlb-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKdlb-B5-V.bcmap</file> + <file compressed="true">web/cmaps/HKgccs-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKgccs-B5-V.bcmap</file> + <file compressed="true">web/cmaps/HKm314-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKm314-B5-V.bcmap</file> + <file compressed="true">web/cmaps/HKm471-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKm471-B5-V.bcmap</file> + <file compressed="true">web/cmaps/HKscs-B5-H.bcmap</file> + <file compressed="true">web/cmaps/HKscs-B5-V.bcmap</file> + <file compressed="true">web/cmaps/Hankaku.bcmap</file> + <file compressed="true">web/cmaps/Hiragana.bcmap</file> + <file compressed="true">web/cmaps/KSC-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/KSC-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/KSC-H.bcmap</file> + <file compressed="true">web/cmaps/KSC-Johab-H.bcmap</file> + <file compressed="true">web/cmaps/KSC-Johab-V.bcmap</file> + <file compressed="true">web/cmaps/KSC-V.bcmap</file> + <file compressed="true">web/cmaps/KSCms-UHC-H.bcmap</file> + <file compressed="true">web/cmaps/KSCms-UHC-HW-H.bcmap</file> + <file compressed="true">web/cmaps/KSCms-UHC-HW-V.bcmap</file> + <file compressed="true">web/cmaps/KSCms-UHC-V.bcmap</file> + <file compressed="true">web/cmaps/KSCpc-EUC-H.bcmap</file> + <file compressed="true">web/cmaps/KSCpc-EUC-V.bcmap</file> + <file compressed="true">web/cmaps/Katakana.bcmap</file> + <file compressed="true">web/cmaps/LICENSE</file> + <file compressed="true">web/cmaps/NWP-H.bcmap</file> + <file compressed="true">web/cmaps/NWP-V.bcmap</file> + <file compressed="true">web/cmaps/RKSJ-H.bcmap</file> + <file compressed="true">web/cmaps/RKSJ-V.bcmap</file> + <file compressed="true">web/cmaps/Roman.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UCS2-H.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UCS2-V.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF16-H.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF16-V.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF8-H.bcmap</file> + <file compressed="true">web/cmaps/UniCNS-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UCS2-H.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UCS2-V.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF16-H.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF16-V.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF8-H.bcmap</file> + <file compressed="true">web/cmaps/UniGB-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UCS2-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UCS2-HW-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UCS2-HW-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UCS2-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF16-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF16-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF8-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF16-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF16-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF8-H.bcmap</file> + <file compressed="true">web/cmaps/UniJIS2004-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/UniJISPro-UCS2-HW-V.bcmap</file> + <file compressed="true">web/cmaps/UniJISPro-UCS2-V.bcmap</file> + <file compressed="true">web/cmaps/UniJISPro-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/UniJISX0213-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniJISX0213-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniJISX02132004-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniJISX02132004-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UCS2-H.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UCS2-V.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF16-H.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF16-V.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF32-H.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF32-V.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF8-H.bcmap</file> + <file compressed="true">web/cmaps/UniKS-UTF8-V.bcmap</file> + <file compressed="true">web/cmaps/V.bcmap</file> + <file compressed="true">web/cmaps/WP-Symbol.bcmap</file> <file compressed="true">web/images/annotation-check.svg</file> - <file compressed="true">web/images/annotation-key.svg</file> + <file compressed="true">web/images/annotation-comment.svg</file> <file compressed="true">web/images/annotation-help.svg</file> - <file compressed="true">web/images/grabbing.cur</file> <file compressed="true">web/images/annotation-insert.svg</file> - <file compressed="true">web/images/annotation-comment.svg</file> - <file compressed="true">web/images/grab.cur</file> + <file compressed="true">web/images/annotation-key.svg</file> <file compressed="true">web/images/annotation-newparagraph.svg</file> - <file compressed="true">web/images/findbarButton-next-dark.svg</file> + <file compressed="true">web/images/annotation-noicon.svg</file> + <file compressed="true">web/images/annotation-note.svg</file> + <file compressed="true">web/images/annotation-paragraph.svg</file> <file compressed="true">web/images/findbarButton-next.svg</file> - <file compressed="true">web/images/findbarButton-previous-dark.svg</file> <file compressed="true">web/images/findbarButton-previous.svg</file> + <file compressed="true">web/images/grab.cur</file> + <file compressed="true">web/images/grabbing.cur</file> <file compressed="true">web/images/loading-dark.svg</file> + <file compressed="true">web/images/loading-icon.gif</file> <file compressed="true">web/images/loading.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-documentProperties-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-documentProperties.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-firstPage-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-firstPage.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-handTool-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-handTool.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-lastPage-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-lastPage.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-rotateCcw-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-rotateCcw.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-rotateCw-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-rotateCw.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-scrollHorizontal-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-scrollHorizontal.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-scrollVertical-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-scrollVertical.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-scrollWrapped-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-scrollWrapped.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-selectTool-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-selectTool.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-spreadEven-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-spreadEven.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-spreadNone-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-spreadNone.svg</file> - <file compressed="true">web/images/secondaryToolbarButton-spreadOdd-dark.svg</file> <file compressed="true">web/images/secondaryToolbarButton-spreadOdd.svg</file> <file compressed="true">web/images/shadow.png</file> - <file compressed="true">web/images/toolbarButton-bookmark-dark.svg</file> <file compressed="true">web/images/toolbarButton-bookmark.svg</file> - <file compressed="true">web/images/toolbarButton-download-dark.svg</file> + <file compressed="true">web/images/toolbarButton-currentOutlineItem.svg</file> <file compressed="true">web/images/toolbarButton-download.svg</file> - <file compressed="true">web/images/toolbarButton-menuArrow-dark.svg</file> <file compressed="true">web/images/toolbarButton-menuArrow.svg</file> - <file compressed="true">web/images/toolbarButton-openFile-dark.svg</file> <file compressed="true">web/images/toolbarButton-openFile.svg</file> - <file compressed="true">web/images/toolbarButton-pageDown-dark.svg</file> <file compressed="true">web/images/toolbarButton-pageDown.svg</file> - <file compressed="true">web/images/toolbarButton-pageUp-dark.svg</file> <file compressed="true">web/images/toolbarButton-pageUp.svg</file> - <file compressed="true">web/images/toolbarButton-presentationMode-dark.svg</file> <file compressed="true">web/images/toolbarButton-presentationMode.svg</file> - <file compressed="true">web/images/toolbarButton-print-dark.svg</file> <file compressed="true">web/images/toolbarButton-print.svg</file> - <file compressed="true">web/images/toolbarButton-search-dark.svg</file> <file compressed="true">web/images/toolbarButton-search.svg</file> - <file compressed="true">web/images/toolbarButton-secondaryToolbarToggle-dark.svg</file> <file compressed="true">web/images/toolbarButton-secondaryToolbarToggle.svg</file> - <file compressed="true">web/images/toolbarButton-sidebarToggle-dark.svg</file> <file compressed="true">web/images/toolbarButton-sidebarToggle.svg</file> - <file compressed="true">web/images/toolbarButton-viewAttachments-dark.svg</file> <file compressed="true">web/images/toolbarButton-viewAttachments.svg</file> - <file compressed="true">web/images/toolbarButton-viewLayers-dark.svg</file> <file compressed="true">web/images/toolbarButton-viewLayers.svg</file> - <file compressed="true">web/images/toolbarButton-viewOutline-dark.svg</file> <file compressed="true">web/images/toolbarButton-viewOutline.svg</file> - <file compressed="true">web/images/toolbarButton-viewThumbnail-dark.svg</file> <file compressed="true">web/images/toolbarButton-viewThumbnail.svg</file> - <file compressed="true">web/images/toolbarButton-zoomIn-dark.svg</file> <file compressed="true">web/images/toolbarButton-zoomIn.svg</file> - <file compressed="true">web/images/toolbarButton-zoomOut-dark.svg</file> <file compressed="true">web/images/toolbarButton-zoomOut.svg</file> - <file compressed="true">web/images/treeitem-collapsed-dark.svg</file> <file compressed="true">web/images/treeitem-collapsed.svg</file> - <file compressed="true">web/images/treeitem-expanded-dark.svg</file> <file compressed="true">web/images/treeitem-expanded.svg</file> <file compressed="true">web/locale/locale.properties</file> - <file compressed="true">web/locale/nn-NO/viewer.properties</file> - <file compressed="true">web/locale/uk/viewer.properties</file> - <file compressed="true">web/locale/ia/viewer.properties</file> - <file compressed="true">web/locale/de/viewer.properties</file> - <file compressed="true">web/locale/ko/viewer.properties</file> + <file compressed="true">web/locale/ach/viewer.properties</file> + <file compressed="true">web/locale/af/viewer.properties</file> + <file compressed="true">web/locale/an/viewer.properties</file> + <file compressed="true">web/locale/ar/viewer.properties</file> + <file compressed="true">web/locale/ast/viewer.properties</file> + <file compressed="true">web/locale/az/viewer.properties</file> <file compressed="true">web/locale/be/viewer.properties</file> - <file compressed="true">web/locale/ur/viewer.properties</file> + <file compressed="true">web/locale/bg/viewer.properties</file> + <file compressed="true">web/locale/bn/viewer.properties</file> + <file compressed="true">web/locale/bo/viewer.properties</file> + <file compressed="true">web/locale/br/viewer.properties</file> + <file compressed="true">web/locale/brx/viewer.properties</file> + <file compressed="true">web/locale/bs/viewer.properties</file> + <file compressed="true">web/locale/ca/viewer.properties</file> + <file compressed="true">web/locale/cak/viewer.properties</file> + <file compressed="true">web/locale/ckb/viewer.properties</file> + <file compressed="true">web/locale/cs/viewer.properties</file> + <file compressed="true">web/locale/cy/viewer.properties</file> + <file compressed="true">web/locale/da/viewer.properties</file> + <file compressed="true">web/locale/de/viewer.properties</file> <file compressed="true">web/locale/dsb/viewer.properties</file> - <file compressed="true">web/locale/es-MX/viewer.properties</file> - <file compressed="true">web/locale/nb-NO/viewer.properties</file> - <file compressed="true">web/locale/fi/viewer.properties</file> - <file compressed="true">web/locale/ast/viewer.properties</file> - <file compressed="true">web/locale/fa/viewer.properties</file> - <file compressed="true">web/locale/zh-CN/viewer.properties</file> - <file compressed="true">web/locale/te/viewer.properties</file> - <file compressed="true">web/locale/si/viewer.properties</file> - <file compressed="true">web/locale/son/viewer.properties</file> - <file compressed="true">web/locale/es-ES/viewer.properties</file> - <file compressed="true">web/locale/sv-SE/viewer.properties</file> - <file compressed="true">web/locale/ms/viewer.properties</file> - <file compressed="true">web/locale/ach/viewer.properties</file> - <file compressed="true">web/locale/sq/viewer.properties</file> - <file compressed="true">web/locale/ka/viewer.properties</file> - <file compressed="true">web/locale/gl/viewer.properties</file> + <file compressed="true">web/locale/el/viewer.properties</file> <file compressed="true">web/locale/en-CA/viewer.properties</file> - <file compressed="true">web/locale/hy-AM/viewer.properties</file> - <file compressed="true">web/locale/et/viewer.properties</file> - <file compressed="true">web/locale/ta/viewer.properties</file> + <file compressed="true">web/locale/en-GB/viewer.properties</file> + <file compressed="true">web/locale/en-US/viewer.properties</file> <file compressed="true">web/locale/eo/viewer.properties</file> - <file compressed="true">web/locale/da/viewer.properties</file> + <file compressed="true">web/locale/es-AR/viewer.properties</file> <file compressed="true">web/locale/es-CL/viewer.properties</file> - <file compressed="true">web/locale/kab/viewer.properties</file> - <file compressed="true">web/locale/hr/viewer.properties</file> - <file compressed="true">web/locale/lt/viewer.properties</file> - <file compressed="true">web/locale/ltg/viewer.properties</file> + <file compressed="true">web/locale/es-ES/viewer.properties</file> + <file compressed="true">web/locale/es-MX/viewer.properties</file> + <file compressed="true">web/locale/et/viewer.properties</file> + <file compressed="true">web/locale/eu/viewer.properties</file> + <file compressed="true">web/locale/fa/viewer.properties</file> + <file compressed="true">web/locale/ff/viewer.properties</file> + <file compressed="true">web/locale/fi/viewer.properties</file> + <file compressed="true">web/locale/fr/viewer.properties</file> + <file compressed="true">web/locale/fy-NL/viewer.properties</file> + <file compressed="true">web/locale/ga-IE/viewer.properties</file> <file compressed="true">web/locale/gd/viewer.properties</file> - <file compressed="true">web/locale/vi/viewer.properties</file> - <file compressed="true">web/locale/af/viewer.properties</file> - <file compressed="true">web/locale/sk/viewer.properties</file> - <file compressed="true">web/locale/ro/viewer.properties</file> - <file compressed="true">web/locale/hsb/viewer.properties</file> - <file compressed="true">web/locale/pt-PT/viewer.properties</file> - <file compressed="true">web/locale/kk/viewer.properties</file> + <file compressed="true">web/locale/gl/viewer.properties</file> + <file compressed="true">web/locale/gn/viewer.properties</file> + <file compressed="true">web/locale/gu-IN/viewer.properties</file> + <file compressed="true">web/locale/he/viewer.properties</file> <file compressed="true">web/locale/hi-IN/viewer.properties</file> + <file compressed="true">web/locale/hr/viewer.properties</file> + <file compressed="true">web/locale/hsb/viewer.properties</file> + <file compressed="true">web/locale/hu/viewer.properties</file> + <file compressed="true">web/locale/hy-AM/viewer.properties</file> + <file compressed="true">web/locale/hye/viewer.properties</file> + <file compressed="true">web/locale/ia/viewer.properties</file> <file compressed="true">web/locale/id/viewer.properties</file> - <file compressed="true">web/locale/tl/viewer.properties</file> - <file compressed="true">web/locale/gu-IN/viewer.properties</file> - <file compressed="true">web/locale/cak/viewer.properties</file> - <file compressed="true">web/locale/es-AR/viewer.properties</file> - <file compressed="true">web/locale/sr/viewer.properties</file> - <file compressed="true">web/locale/meh/viewer.properties</file> - <file compressed="true">web/locale/trs/viewer.properties</file> <file compressed="true">web/locale/is/viewer.properties</file> - <file compressed="true">web/locale/fy-NL/viewer.properties</file> + <file compressed="true">web/locale/it/viewer.properties</file> + <file compressed="true">web/locale/ja/viewer.properties</file> + <file compressed="true">web/locale/ka/viewer.properties</file> + <file compressed="true">web/locale/kab/viewer.properties</file> + <file compressed="true">web/locale/kk/viewer.properties</file> <file compressed="true">web/locale/km/viewer.properties</file> - <file compressed="true">web/locale/ar/viewer.properties</file> - <file compressed="true">web/locale/fr/viewer.properties</file> - <file compressed="true">web/locale/lo/viewer.properties</file> - <file compressed="true">web/locale/pt-BR/viewer.properties</file> - <file compressed="true">web/locale/nl/viewer.properties</file> - <file compressed="true">web/locale/rm/viewer.properties</file> - <file compressed="true">web/locale/mr/viewer.properties</file> - <file compressed="true">web/locale/mk/viewer.properties</file> - <file compressed="true">web/locale/pl/viewer.properties</file> - <file compressed="true">web/locale/xh/viewer.properties</file> - <file compressed="true">web/locale/bn/viewer.properties</file> - <file compressed="true">web/locale/br/viewer.properties</file> - <file compressed="true">web/locale/en-GB/viewer.properties</file> <file compressed="true">web/locale/kn/viewer.properties</file> - <file compressed="true">web/locale/cy/viewer.properties</file> - <file compressed="true">web/locale/brx/viewer.properties</file> - <file compressed="true">web/locale/zh-TW/viewer.properties</file> + <file compressed="true">web/locale/ko/viewer.properties</file> <file compressed="true">web/locale/lij/viewer.properties</file> - <file compressed="true">web/locale/ga-IE/viewer.properties</file> - <file compressed="true">web/locale/ne-NP/viewer.properties</file> - <file compressed="true">web/locale/az/viewer.properties</file> - <file compressed="true">web/locale/hu/viewer.properties</file> - <file compressed="true">web/locale/el/viewer.properties</file> - <file compressed="true">web/locale/gn/viewer.properties</file> - <file compressed="true">web/locale/cs/viewer.properties</file> - <file compressed="true">web/locale/ff/viewer.properties</file> - <file compressed="true">web/locale/pa-IN/viewer.properties</file> - <file compressed="true">web/locale/sl/viewer.properties</file> + <file compressed="true">web/locale/lo/viewer.properties</file> + <file compressed="true">web/locale/lt/viewer.properties</file> + <file compressed="true">web/locale/ltg/viewer.properties</file> <file compressed="true">web/locale/lv/viewer.properties</file> - <file compressed="true">web/locale/ja/viewer.properties</file> - <file compressed="true">web/locale/ru/viewer.properties</file> - <file compressed="true">web/locale/ca/viewer.properties</file> - <file compressed="true">web/locale/wo/viewer.properties</file> - <file compressed="true">web/locale/it/viewer.properties</file> - <file compressed="true">web/locale/tr/viewer.properties</file> - <file compressed="true">web/locale/en-US/viewer.properties</file> - <file compressed="true">web/locale/an/viewer.properties</file> + <file compressed="true">web/locale/meh/viewer.properties</file> + <file compressed="true">web/locale/mk/viewer.properties</file> + <file compressed="true">web/locale/mr/viewer.properties</file> + <file compressed="true">web/locale/ms/viewer.properties</file> <file compressed="true">web/locale/my/viewer.properties</file> - <file compressed="true">web/locale/he/viewer.properties</file> - <file compressed="true">web/locale/eu/viewer.properties</file> - <file compressed="true">web/locale/bg/viewer.properties</file> - <file compressed="true">web/locale/bo/viewer.properties</file> - <file compressed="true">web/locale/uz/viewer.properties</file> + <file compressed="true">web/locale/nb-NO/viewer.properties</file> + <file compressed="true">web/locale/ne-NP/viewer.properties</file> + <file compressed="true">web/locale/nl/viewer.properties</file> + <file compressed="true">web/locale/nn-NO/viewer.properties</file> <file compressed="true">web/locale/oc/viewer.properties</file> - <file compressed="true">web/locale/th/viewer.properties</file> - <file compressed="true">web/locale/bs/viewer.properties</file> - <file compressed="true">web/locale/hye/viewer.properties</file> + <file compressed="true">web/locale/pa-IN/viewer.properties</file> + <file compressed="true">web/locale/pl/viewer.properties</file> + <file compressed="true">web/locale/pt-BR/viewer.properties</file> + <file compressed="true">web/locale/pt-PT/viewer.properties</file> + <file compressed="true">web/locale/rm/viewer.properties</file> + <file compressed="true">web/locale/ro/viewer.properties</file> + <file compressed="true">web/locale/ru/viewer.properties</file> <file compressed="true">web/locale/scn/viewer.properties</file> - <file compressed="true">web/locale/ckb/viewer.properties</file> + <file compressed="true">web/locale/si/viewer.properties</file> + <file compressed="true">web/locale/sk/viewer.properties</file> + <file compressed="true">web/locale/sl/viewer.properties</file> + <file compressed="true">web/locale/son/viewer.properties</file> + <file compressed="true">web/locale/sq/viewer.properties</file> + <file compressed="true">web/locale/sr/viewer.properties</file> + <file compressed="true">web/locale/sv-SE/viewer.properties</file> <file compressed="true">web/locale/szl/viewer.properties</file> - <file compressed="true">web/cmaps/B5pc-H.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF16-V.bcmap</file> - <file compressed="true">web/cmaps/UniJISPro-UCS2-HW-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-4.bcmap</file> - <file compressed="true">web/cmaps/Add-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/ETen-B5-H.bcmap</file> - <file compressed="true">web/cmaps/B5-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Korea1-2.bcmap</file> - <file compressed="true">web/cmaps/UniJISPro-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-0.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-1.bcmap</file> - <file compressed="true">web/cmaps/ETenms-B5-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-UCS2.bcmap</file> - <file compressed="true">web/cmaps/90pv-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/B5pc-V.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF16-V.bcmap</file> - <file compressed="true">web/cmaps/B5-H.bcmap</file> - <file compressed="true">web/cmaps/HKgccs-B5-H.bcmap</file> - <file compressed="true">web/cmaps/KSC-Johab-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UCS2-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-5.bcmap</file> - <file compressed="true">web/cmaps/Add-V.bcmap</file> - <file compressed="true">web/cmaps/GBT-V.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/Hankaku.bcmap</file> - <file compressed="true">web/cmaps/78-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UCS2-H.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-UCS2.bcmap</file> - <file compressed="true">web/cmaps/EUC-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF8-H.bcmap</file> - <file compressed="true">web/cmaps/KSCms-UHC-HW-H.bcmap</file> - <file compressed="true">web/cmaps/78ms-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-2.bcmap</file> - <file compressed="true">web/cmaps/KSCpc-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-0.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF8-H.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/HKscs-B5-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-4.bcmap</file> - <file compressed="true">web/cmaps/KSC-Johab-V.bcmap</file> - <file compressed="true">web/cmaps/Ext-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UCS2-HW-H.bcmap</file> - <file compressed="true">web/cmaps/GBTpc-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF8-H.bcmap</file> - <file compressed="true">web/cmaps/78-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF8-H.bcmap</file> - <file compressed="true">web/cmaps/GBpc-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/HKdlb-B5-V.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UTF16-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Korea1-1.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-1.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-3.bcmap</file> - <file compressed="true">web/cmaps/GBT-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/GBT-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-3.bcmap</file> - <file compressed="true">web/cmaps/Hiragana.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UCS2-H.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UCS2-HW-V.bcmap</file> - <file compressed="true">web/cmaps/Add-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF16-V.bcmap</file> - <file compressed="true">web/cmaps/78-H.bcmap</file> - <file compressed="true">web/cmaps/RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF16-V.bcmap</file> - <file compressed="true">web/cmaps/GBT-H.bcmap</file> - <file compressed="true">web/cmaps/KSC-H.bcmap</file> - <file compressed="true">web/cmaps/CNS2-V.bcmap</file> - <file compressed="true">web/cmaps/GBKp-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/HKm314-B5-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-5.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-6.bcmap</file> - <file compressed="true">web/cmaps/KSC-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/90ms-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/NWP-V.bcmap</file> - <file compressed="true">web/cmaps/GB-H.bcmap</file> - <file compressed="true">web/cmaps/GBpc-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/KSCms-UHC-H.bcmap</file> - <file compressed="true">web/cmaps/83pv-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/78-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/HKm471-B5-V.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF16-H.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF8-V.bcmap</file> - <file compressed="true">web/cmaps/CNS1-H.bcmap</file> - <file compressed="true">web/cmaps/ETHK-B5-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF16-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/UniJISPro-UCS2-V.bcmap</file> - <file compressed="true">web/cmaps/Ext-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/GB-V.bcmap</file> - <file compressed="true">web/cmaps/GB-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/GBK-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Korea1-UCS2.bcmap</file> - <file compressed="true">web/cmaps/GBKp-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/Add-H.bcmap</file> - <file compressed="true">web/cmaps/UniKS-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/78-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/WP-Symbol.bcmap</file> - <file compressed="true">web/cmaps/HKdla-B5-H.bcmap</file> - <file compressed="true">web/cmaps/UniJISX0213-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF8-H.bcmap</file> - <file compressed="true">web/cmaps/90msp-RKSJ-V.bcmap</file> - <file compressed="true">web/cmaps/CNS1-V.bcmap</file> - <file compressed="true">web/cmaps/RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/GBTpc-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/Ext-H.bcmap</file> - <file compressed="true">web/cmaps/GBK-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/ETHK-B5-H.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF16-H.bcmap</file> - <file compressed="true">web/cmaps/KSC-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/UniJISX02132004-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/Ext-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF16-H.bcmap</file> - <file compressed="true">web/cmaps/90msp-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/Roman.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-1.bcmap</file> - <file compressed="true">web/cmaps/KSCms-UHC-HW-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF16-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-3.bcmap</file> - <file compressed="true">web/cmaps/NWP-H.bcmap</file> - <file compressed="true">web/cmaps/LICENSE</file> - <file compressed="true">web/cmaps/ETen-B5-V.bcmap</file> - <file compressed="true">web/cmaps/EUC-V.bcmap</file> - <file compressed="true">web/cmaps/HKgccs-B5-V.bcmap</file> - <file compressed="true">web/cmaps/CNS-EUC-H.bcmap</file> - <file compressed="true">web/cmaps/CNS-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/UniJISX0213-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/HKdlb-B5-H.bcmap</file> - <file compressed="true">web/cmaps/KSC-V.bcmap</file> - <file compressed="true">web/cmaps/HKdla-B5-V.bcmap</file> - <file compressed="true">web/cmaps/UniJIS2004-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/GB-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UCS2-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-2.bcmap</file> - <file compressed="true">web/cmaps/78ms-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/HKscs-B5-H.bcmap</file> - <file compressed="true">web/cmaps/H.bcmap</file> - <file compressed="true">web/cmaps/HKm471-B5-H.bcmap</file> - <file compressed="true">web/cmaps/KSCpc-EUC-V.bcmap</file> - <file compressed="true">web/cmaps/Katakana.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UCS2-V.bcmap</file> - <file compressed="true">web/cmaps/UniJISX02132004-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-GB1-UCS2.bcmap</file> - <file compressed="true">web/cmaps/ETenms-B5-H.bcmap</file> - <file compressed="true">web/cmaps/90ms-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/UniGB-UTF32-H.bcmap</file> - <file compressed="true">web/cmaps/HKm314-B5-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-0.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-2.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-5.bcmap</file> - <file compressed="true">web/cmaps/90pv-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/KSCms-UHC-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-CNS1-4.bcmap</file> - <file compressed="true">web/cmaps/GBK2K-V.bcmap</file> - <file compressed="true">web/cmaps/GBK2K-H.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UTF32-V.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Japan1-6.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UCS2-H.bcmap</file> - <file compressed="true">web/cmaps/78-RKSJ-H.bcmap</file> - <file compressed="true">web/cmaps/UniCNS-UCS2-V.bcmap</file> - <file compressed="true">web/cmaps/CNS2-H.bcmap</file> - <file compressed="true">web/cmaps/Adobe-Korea1-0.bcmap</file> - <file compressed="true">web/cmaps/UniJIS-UCS2-H.bcmap</file> + <file compressed="true">web/locale/ta/viewer.properties</file> + <file compressed="true">web/locale/te/viewer.properties</file> + <file compressed="true">web/locale/th/viewer.properties</file> + <file compressed="true">web/locale/tl/viewer.properties</file> + <file compressed="true">web/locale/tr/viewer.properties</file> + <file compressed="true">web/locale/trs/viewer.properties</file> + <file compressed="true">web/locale/uk/viewer.properties</file> + <file compressed="true">web/locale/ur/viewer.properties</file> + <file compressed="true">web/locale/uz/viewer.properties</file> + <file compressed="true">web/locale/vi/viewer.properties</file> + <file compressed="true">web/locale/wo/viewer.properties</file> + <file compressed="true">web/locale/xh/viewer.properties</file> + <file compressed="true">web/locale/zh-CN/viewer.properties</file> + <file compressed="true">web/locale/zh-TW/viewer.properties</file> </gresource> </gresources> diff --git a/third-party/pdfjs/web/debugger.js b/third-party/pdfjs/web/debugger.js index 500522d84..c79aeeecf 100644 --- a/third-party/pdfjs/web/debugger.js +++ b/third-party/pdfjs/web/debugger.js @@ -115,7 +115,7 @@ var FontInspector = (function FontInspectorClosure() { name.textContent = fontName; var download = document.createElement("a"); if (url) { - url = /url\(['"]?([^\)"']+)/.exec(url); + url = /url\(['"]?([^)"']+)/.exec(url); download.href = url[1]; } else if (fontObj.data) { download.href = URL.createObjectURL( @@ -381,7 +381,6 @@ var Stepper = (function StepperClosure() { line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs)))); } if (operatorsToDisplay < operatorList.fnArray.length) { - line = c("tr"); var lastCell = c("td", "..."); lastCell.colspan = 4; chunk.appendChild(lastCell); diff --git a/third-party/pdfjs/web/images/findbarButton-next-dark.svg b/third-party/pdfjs/web/images/findbarButton-next-dark.svg deleted file mode 100644 index 80df70bc1..000000000 --- a/third-party/pdfjs/web/images/findbarButton-next-dark.svg +++ /dev/null @@ -1,6 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 -9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/findbarButton-previous-dark.svg b/third-party/pdfjs/web/images/findbarButton-previous-dark.svg deleted file mode 100644 index d304a9b8c..000000000 --- a/third-party/pdfjs/web/images/findbarButton-previous-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M13 11a1 1 0 0 1-.707-.293L8 6.414l-4.293 4.293a1 1 0 0 1-1.414-1.414l5-5a1 1 0 0 1 1.414 0l5 5A1 1 0 0 1 13 11z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg deleted file mode 100644 index 306e628d7..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-documentProperties-dark.svg +++ /dev/null @@ -1,16 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 -16" -fill="rgba(255,255,255,1)"> -<path - d="M8 16a8 8 0 1 1 8-8 8.009 8.009 0 0 1-8 8zM8 2a6 6 0 1 0 6 6 6.006 6.006 0 0 0-6-6z"> -</path> -<path - d="M8 7a1 1 0 0 0-1 1v3a1 1 0 0 0 2 0V8a1 1 0 0 0-1-1z"> -</path> -<circle - cx="8" cy="5" r="1.188"> -</circle> -</svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg deleted file mode 100644 index c13ff8671..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-firstPage-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M13 13c-.3 0-.5-.1-.7-.3L8 8.4l-4.3 4.3c-.9.9-2.3-.5-1.4-1.4l5-5c.4-.4 1-.4 1.4 0l5 5c.6.6.2 1.7-.7 1.7zm0-11H3C1.7 2 1.7 4 3 4h10c1.3 0 1.3-2 0-2z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg deleted file mode 100644 index 834d8b0da..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-handTool-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M15 3.7V13c0 1.5-1.53 3-3 3H7.13c-.72 0-1.63-.5-2.13-1l-5-5s.84-1 .87-1c.13-.1.33-.2.53-.2.1 0 .3.1.4.2L4 10.6V2.7c0-.6.4-1 1-1s1 .4 1 1v4.6h1V1c0-.6.4-1 1-1s1 .4 1 1v6.3h1V1.7c0-.6.4-1 1-1s1 .4 1 1v5.7h1V3.7c0-.6.4-1 1-1s1 .4 1 1z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg deleted file mode 100644 index 8633e420a..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-lastPage-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M8 10c-.3 0-.5-.1-.7-.3l-5-5c-.9-.9.5-2.3 1.4-1.4L8 7.6l4.3-4.3c.9-.9 2.3.5 1.4 1.4l-5 5c-.2.2-.4.3-.7.3zm5 2H3c-1.3 0-1.3 2 0 2h10c1.3 0 1.3-2 0-2z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg deleted file mode 100644 index 1a92f802c..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCcw-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M1 1a1 1 0 011 1v2.4A7 7 0 118 15a7 7 0 01-4.9-2 1 1 0 011.4-1.5 5 5 0 10-1-5.5H6a1 1 0 010 2H1a1 1 0 01-1-1V2a1 1 0 011-1z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg deleted file mode 100644 index 2a4ef7385..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-rotateCw-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M15 1a1 1 0 0 0-1 1v2.418A6.995 6.995 0 1 0 8 15a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.019 5.019 0 1 1 12.549 6H10a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg deleted file mode 100644 index 337f85ef4..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M0 4h1.5c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5H0zM9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM16 4h-1.5c-1 0-1.5.5-1.5 1.5v5c0 1 .5 1.5 1.5 1.5H16z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg deleted file mode 100644 index 41bdd8f14..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollVertical-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M9.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C5 4.5 5.5 4 6.5 4zM11 0v.5c0 1-.5 1.5-1.5 1.5h-3C5.5 2 5 1.5 5 .5V0h6zM11 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg deleted file mode 100644 index cd50526ff..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-scrollWrapped-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M5.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5C1 4.5 1.5 4 2.5 4zM7 0v.5C7 1.5 6.5 2 5.5 2h-3C1.5 2 1 1.5 1 .5V0h6zM7 16v-.5c0-1-.5-1.5-1.5-1.5h-3c-1 0-1.5.5-1.5 1.5v.5h6zM13.5 4c1 0 1.5.5 1.5 1.5v5c0 1-.5 1.5-1.5 1.5h-3c-1 0-1.5-.5-1.5-1.5v-5c0-1 .5-1.5 1.5-1.5zM15 0v.5c0 1-.5 1.5-1.5 1.5h-3C9.5 2 9 1.5 9 .5V0h6zM15 16v-.507c0-1-.5-1.5-1.5-1.5h-3C9.5 14 9 14.5 9 15.5v.5h6z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg deleted file mode 100644 index 7a95098af..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-selectTool-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M12.408 8.217l-8.083-6.7A.2.2 0 0 0 4 1.672V12.3a.2.2 0 0 0 .333.146l2.56-2.372 1.857 3.9A1.125 1.125 0 1 0 10.782 13L8.913 9.075l3.4-.51a.2.2 0 0 0 .095-.348z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg deleted file mode 100644 index 0c9586ed8..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadEven-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M1.5 3.5C.5 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm2 1.2c.8 0 1.4.2 1.8.6.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.4-.2.3-.5.7-1 1l-.6.4c-.4.3-.6.4-.75.56-.15.14-.25.24-.35.44H6v1.3H1c0-.6.1-1.1.3-1.5.3-.6.7-1 1.5-1.6.7-.4 1.1-.8 1.28-1 .32-.3.42-.6.42-1 0-.3-.1-.6-.23-.8-.17-.2-.37-.3-.77-.3s-.7.1-.9.5c-.04.2-.1.5-.1.9H1.1c0-.6.1-1.1.3-1.5.4-.7 1.1-1.1 2.1-1.1zM10.54 3.54C9.5 3.54 9 4 9 5v6.5c0 1 .5 1.5 1.54 1.5h4c.96 0 1.46-.5 1.46-1.5V5c0-1-.5-1.46-1.5-1.46zm1.9.95c.7 0 1.3.2 1.7.5.4.4.6.8.6 1.4 0 .4-.1.8-.4 1.1-.2.2-.3.3-.5.4.1 0 .3.1.6.3.4.3.5.8.5 1.4 0 .6-.2 1.2-.6 1.6-.4.5-1.1.7-1.9.7-1 0-1.8-.3-2.2-1-.14-.29-.24-.69-.24-1.29h1.4c0 .3 0 .5.1.7.2.4.5.5 1 .5.3 0 .5-.1.7-.3.2-.2.3-.5.3-.8 0-.5-.2-.8-.6-.95-.2-.05-.5-.15-1-.15v-1c.5 0 .8-.1 1-.14.3-.1.5-.4.5-.9 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.7-.3-.3 0-.6.1-.75.3-.2.2-.2.5-.2.86h-1.34c0-.4.1-.7.19-1.1 0-.12.2-.32.4-.62.2-.2.4-.3.7-.4.3-.1.6-.1 1-.1z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg deleted file mode 100644 index 75e1b985d..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadNone-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M6 3c-1 0-1.5.5-1.5 1.5v7c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5v-7c0-1-.5-1.5-1.5-1.5z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg b/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg deleted file mode 100644 index 8dff9598e..000000000 --- a/third-party/pdfjs/web/images/secondaryToolbarButton-spreadOdd-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M10.56 3.5C9.56 3.5 9 4 9 5v6.5c0 1 .5 1.5 1.5 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.93 1.2c.8 0 1.4.2 1.8.64.5.4.7 1 .7 1.7 0 .5-.2 1-.5 1.44-.2.3-.6.6-1 .93l-.6.4c-.4.3-.6.4-.7.55-.1.1-.2.2-.3.4h3.2v1.27h-5c0-.5.1-1 .3-1.43.2-.49.7-1 1.5-1.54.7-.5 1.1-.8 1.3-1.02.3-.3.4-.7.4-1.05 0-.3-.1-.6-.3-.77-.2-.2-.4-.3-.7-.3-.4 0-.7.2-.9.5-.1.2-.1.5-.2.9h-1.4c0-.6.2-1.1.3-1.5.4-.7 1.1-1.1 2-1.1zM1.54 3.5C.54 3.5 0 4 0 5v6.5c0 1 .5 1.5 1.54 1.5h4c1 0 1.5-.5 1.5-1.5V5c0-1-.5-1.5-1.5-1.5zm1.8 1.125H4.5V12H3V6.9H1.3v-1c.5 0 .8 0 .97-.03.33-.07.53-.17.73-.37.1-.2.2-.3.25-.5.05-.2.05-.3.05-.3z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg b/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg deleted file mode 100644 index 7bf332972..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-bookmark-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M4 16V2s0-1 1-1h6s1 0 1 1v14l-4-5z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg b/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg new file mode 100644 index 000000000..c1c72b208 --- /dev/null +++ b/third-party/pdfjs/web/images/toolbarButton-currentOutlineItem.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16"><path d="m14 9h-6c-1.3 0-1.3 2 0 2h6c1.3 0 1.3-2 0-2zm-5.2-8h-3.8c-1.3 0-1.3 2 0 2h1.7zm-6.8 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.3 1.7-0.7 0-0.5-0.4-1-1-1zm3 8c-1 0-1.3 1-0.7 1.7 0.6 0.6 1.7 0.2 1.7-0.7 0-0.5-0.4-1-1-1zm0.3-4h-0.3c-1.4 0-1.4 2 0 2h2.3zm-3.3 0c-0.9 0-1.4 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.7 0-0.6-0.5-1-1-1zm12 8h-9c-1.3 0-1.3 2 0 2h9c1.3 0 1.3-2 0-2zm-12 0c-1 0-1.3 1-0.7 1.7 0.7 0.6 1.7 0.2 1.7-0.712 0-0.5-0.4-1-1-1z"/><path d="m7.37 4.838 3.93-3.911v2.138h3.629v3.546h-3.629v2.138l-3.93-3.911"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-download-dark.svg b/third-party/pdfjs/web/images/toolbarButton-download-dark.svg deleted file mode 100644 index d2a92e5d4..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-download-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M14 3h-2v2h2v8H2V5h7V3h-.849L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zM2 3h3.219l1.072 1H2z"></path><path d="M8.146 6.146a.5.5 0 0 0 0 .707l2 2a.5.5 0 0 0 .707 0l2-2a.5.5 0 1 0-.707-.707L11 7.293V.5a.5.5 0 0 0-1 0v6.793L8.854 6.146a.5.5 0 0 0-.708 0z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg b/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg deleted file mode 100644 index eb7f50e6d..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-menuArrow-dark.svg +++ /dev/null @@ -1 +0,0 @@ -<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" fill="rgba(255,255,255,1)"><path d="M8 11a1 1 0 01-.707-.293l-2.99-2.99c-.91-.942.471-2.324 1.414-1.414L8 8.586l2.283-2.283c.943-.91 2.324.472 1.414 1.414l-2.99 2.99A1 1 0 018 11z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg b/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg deleted file mode 100644 index 0bd612f0e..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-openFile-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M14.859 3.2a1.335 1.335 0 0 1-1.217.8H13v1h1v8H2V5h8V4h-.642a1.365 1.365 0 0 1-1.325-1.11L6.584 1.538A2 2 0 0 0 5.219 1H2a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-1.141-1.8zM2 3h3.219l1.072 1H2zm7.854-.146L11 1.707V8.5a.5.5 0 0 0 1 0V1.707l1.146 1.146a.5.5 0 1 0 .707-.707l-2-2a.5.5 0 0 0-.707 0l-2 2a.5.5 0 0 0 .707.707z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg b/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg deleted file mode 100644 index c2ca60c8f..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-pageDown-dark.svg +++ /dev/null @@ -1,8 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 -16" -fill="rgba(255,255,255,1)"><path transform='rotate(90) translate(0, -16)' -d="M15.707 7.293l-6-6a1 1 0 0 0-1.414 1.414L12.586 7H1a1 1 0 0 0 0 2h11.586l-4.293 -4.293a1 1 0 1 0 1.414 1.414l6-6a1 1 0 0 0 0-1.414z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg b/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg deleted file mode 100644 index dddc4ab26..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-pageUp-dark.svg +++ /dev/null @@ -1,13 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 -16" -fill="rgba(255,255,255,1)"> -<path - transform='rotate(90) translate(0, -16)' - d="M15 7H3.414l4.293-4.293a1 1 0 0 -0-1.414-1.414l-6 6a1 1 0 0 0 0 1.414l6 6a1 1 0 0 0 1.414-1.414L3.414 9H15a1 1 0 0 -0 0-2z"> -</path> -</svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg b/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg deleted file mode 100644 index 13fa9dc7c..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-presentationMode-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M.5 1H7s0-1 1-1 1 1 1 1h6.5s.5 0 .5.5-.5.5-.5.5H.5S0 2 0 1.5.5 1 .5 1zM1 3h14v7c0 2-1 2-2 2H3c-1 0-2 0-2-2zm5 1v7l6-3.5zM3.72 15.33l.53-2s0-.5.65-.35c.51.13.38.63.38.63l-.53 2s0 .5-.64.35c-.53-.13-.39-.63-.39-.63zM11.24 15.61l-.53-1.99s0-.5.38-.63c.51-.13.64.35.64.35l.53 2s0 .5-.38.63c-.5.13-.64-.35-.65-.35z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-print-dark.svg b/third-party/pdfjs/web/images/toolbarButton-print-dark.svg deleted file mode 100644 index ad37022f0..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-print-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M14 5h-1V1a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v4H2a2 2 0 0 0-2 2v5h3v3a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-3h3V7a2 2 0 0 0-2-2zM2.5 8a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5zm9.5 7H4v-5h8zm0-10H4V1h8zm-6.5 7h4a.5.5 0 0 0 0-1h-4a.5.5 0 1 0 0 1zm0 2h5a.5.5 0 0 0 0-1h-5a.5.5 0 1 0 0 1z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-search-dark.svg b/third-party/pdfjs/web/images/toolbarButton-search-dark.svg deleted file mode 100644 index cec8a4206..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-search-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M15.707 14.293l-4.822-4.822a6.019 6.019 0 1 0-1.414 1.414l4.822 4.822a1 1 0 0 0 1.414-1.414zM6 10a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg b/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg deleted file mode 100644 index 0160c07cd..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-secondaryToolbarToggle-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M8.707 7.293l-5-5a1 1 0 0 0-1.414 1.414L6.586 8l-4.293 4.293a1 1 0 1 0 1.414 1.414l5-5a1 1 0 0 0 0-1.414zm6 0l-5-5a1 1 0 0 0-1.414 1.414L12.586 8l-4.293 4.293a1 1 0 1 0 1.414 1.414l5-5a1 1 0 0 0 0-1.414z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg b/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg deleted file mode 100644 index 0118e41a8..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-sidebarToggle-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M3 1h10a3.008 3.008 0 0 1 3 3v8a3.009 3.009 0 0 1-3 3H3a3.005 3.005 0 0 1-3-3V4a3.013 3.013 0 0 1 3-3zm11 11V4a1 1 0 0 0-1-1H8v10h5a1 1 0 0 0 1-1zM2 12a1 1 0 0 0 1 1h4V3H3a1 1 0 0 0-1 1v8z"></path><path d="M3.5 5h2a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm0 2h2a.5.5 0 0 0 0-1h-2a.5.5 0 0 0 0 1zm1 2h1a.5.5 0 0 0 0-1h-1a.5.5 0 0 0 0 1z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg deleted file mode 100644 index c9714fdea..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-viewAttachments-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M6.2 2s.5-.5 1.06 0c.5.5 0 1 0 1l-4.6 4.61s-2.5 2.5 0 5 5 0 5 0L13.8 6.4s1.6-1.6 0-3.2-3.2 0-3.2 0L5.8 8s-.7.7 0 1.4 1.4 0 1.4 0l3.9-3.9s.6-.5 1 0c.5.5 0 1 0 1l-3.8 4s-1.8 1.8-3.5 0C3 8.7 4.8 7 4.8 7l4.7-4.9s2.7-2.6 5.3 0c2.6 2.6 0 5.3 0 5.3l-6.2 6.3s-3.5 3.5-7 0 0-7 0-7z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg deleted file mode 100644 index 76b042a95..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-viewLayers-dark.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4.233 4.233" height="16" width="16" fill="rgba(255,255,255,1)"><path d="M.15 2.992c-.198.1-.2.266-.002.365l1.604.802a.93.93 0 00.729-.001l1.602-.801c.198-.1.197-.264 0-.364l-.695-.348c-1.306.595-2.542 0-2.542 0m-.264.53l.658-.329c.6.252 1.238.244 1.754 0l.659.329-1.536.768zM.15 1.935c-.198.1-.198.265 0 .364l1.604.802a.926.926 0 00.727 0l1.603-.802c.198-.099.198-.264 0-.363l-.694-.35c-1.14.56-2.546.001-2.546.001m-.264.53l.664-.332c.52.266 1.261.235 1.75.002l.659.33-1.537.768zM.15.877c-.198.099-.198.264 0 .363l1.604.802a.926.926 0 00.727 0l1.603-.802c.198-.099.198-.264 0-.363L2.481.075a.926.926 0 00-.727 0zm.43.182L2.117.29l1.538.769-1.538.768z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg deleted file mode 100644 index 1704d961a..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-viewOutline-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" -fill="rgba(255,255,255,1)"><path d="M14 9H8c-1.3 0-1.3 2 0 2h6c1.3 0 1.3-2 0-2zm0-8H5C3.7 1 3.7 3 5 3h9c1.3 0 1.3-2 0-2zM2 1C1 1 .7 2 1.3 2.7 2 3.3 3 3 3 2c0-.5-.4-1-1-1zm3 8c-1 0-1.3 1-.7 1.7.6.6 1.7.2 1.7-.7 0-.5-.4-1-1-1zM14 5H5C3.6 5 3.6 7 5 7h9c1.3 0 1.3-2 0-2zM2 5c-.9 0-1.4 1-.7 1.7C2 7.3 3 6.9 3 6c0-.6-.5-1-1-1zM14 13H5c-1.3 0-1.3 2 0 2h9c1.3 0 1.3-2 0-2zM2 13c-1 0-1.3 1-.7 1.7.7.6 1.7.2 1.7-.712 0-.5-.4-1-1-1z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg b/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg deleted file mode 100644 index 17c55f7b8..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-viewThumbnail-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><g style="--darkreader-inline-fill:rgba(81, 82, 83, 0.8);" data-darkreader-inline-fill=""><rect x="1" y="1" width="6" height="6" rx="1" ry="1"></rect><rect x="9" y="1" width="6" height="6" rx="1" ry="1"></rect><rect x="1" y="9" width="6" height="6" rx="1" ry="1"></rect><rect x="9" y="9" width="6" height="6" rx="1" ry="1"></rect></g></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg b/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg deleted file mode 100644 index 9b615541e..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-zoomIn-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><path d="M14 7H9V2a1 1 0 0 0-2 0v5H2a1 1 0 0 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2z"></path></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg b/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg deleted file mode 100644 index 0fb3594d1..000000000 --- a/third-party/pdfjs/web/images/toolbarButton-zoomOut-dark.svg +++ /dev/null @@ -1,5 +0,0 @@ -<!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" -fill="rgba(255,255,255,1)"><rect x="2" y="7" width="12" height="2" rx="1"></rect></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg b/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg deleted file mode 100644 index 1fb655162..000000000 --- a/third-party/pdfjs/web/images/treeitem-collapsed-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M13 9L6 5v8z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/images/treeitem-expanded-dark.svg b/third-party/pdfjs/web/images/treeitem-expanded-dark.svg deleted file mode 100644 index 695b0aa61..000000000 --- a/third-party/pdfjs/web/images/treeitem-expanded-dark.svg +++ /dev/null @@ -1,2 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" -fill="rgba(255,255,255,1)"><path d="M10 13l4-7H6z"/></svg>
\ No newline at end of file diff --git a/third-party/pdfjs/web/locale/an/viewer.properties b/third-party/pdfjs/web/locale/an/viewer.properties index 7e3504c77..e33936cde 100644 --- a/third-party/pdfjs/web/locale/an/viewer.properties +++ b/third-party/pdfjs/web/locale/an/viewer.properties @@ -42,7 +42,7 @@ print_label=Imprentar download.title=Descargar download_label=Descargar bookmark.title=Vista actual (copiar u ubrir en una nueva finestra) -bookmark_label=Anvista actual +bookmark_label=Vista actual # Secondary toolbar and context menu tools.title=Ferramientas @@ -65,6 +65,20 @@ cursor_text_select_tool_label=Ferramienta de selección de texto cursor_hand_tool.title=Activar la ferramienta man cursor_hand_tool_label=Ferramienta man +scroll_vertical.title=Usar lo desplazamiento vertical +scroll_vertical_label=Desplazamiento vertical +scroll_horizontal.title=Usar lo desplazamiento horizontal +scroll_horizontal_label=Desplazamiento horizontal +scroll_wrapped.title=Activaar lo desplazamiento contino +scroll_wrapped_label=Desplazamiento contino + +spread_none.title=No unir vistas de pachinas +spread_none_label=Una pachina nomás +spread_odd.title=Mostrar vista de pachinas, con as impars a la zurda +spread_odd_label=Doble pachina, impar a la zurda +spread_even.title=Amostrar vista de pachinas, con as pars a la zurda +spread_even_label=Doble pachina, para a la zurda + # Document properties dialog box document_properties.title=Propiedatz d'o documento... document_properties_label=Propiedatz d'o documento... @@ -89,6 +103,28 @@ document_properties_creator=Creyador: document_properties_producer=Creyador de PDF: document_properties_version=Versión de PDF: document_properties_page_count=Numero de pachinas: +document_properties_page_size=Mida de pachina: +document_properties_page_size_unit_inches=pulgadas +document_properties_page_size_unit_millimeters=mm +document_properties_page_size_orientation_portrait=vertical +document_properties_page_size_orientation_landscape=horizontal +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=Carta +document_properties_page_size_name_legal=Legal +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} x {{height}} {{unit}} {{orientation}} +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} x {{height}} {{unit}} {{name}}, {{orientation}} +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=Vista web rapida: +document_properties_linearized_yes=Sà +document_properties_linearized_no=No document_properties_close=Zarrar print_progress_message=Se ye preparando la documentación pa imprentar… @@ -102,16 +138,22 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Amostrar u amagar a barra lateral toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos) +toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas) toggle_sidebar_label=Amostrar a barra lateral document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items) document_outline_label=Esquema d'o documento attachments.title=Amostrar os adchuntos attachments_label=Adchuntos +layers.title=Amostrar capas (doble clic para reiniciar totas las capas a lo estau per defecto) +layers_label=Capas thumbs.title=Amostrar as miniaturas thumbs_label=Miniaturas findbar.title=Trobar en o documento findbar_label=Trobar +additional_layers=Capas adicionals +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +page_canvas=Pachina {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -129,8 +171,30 @@ find_next.title=Trobar a siguient coincidencia d'a frase find_next_label=Siguient find_highlight=Resaltar-lo tot find_match_case_label=Coincidencia de mayusclas/minusclas +find_entire_word_label=Parolas completas find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} de {{total}} coincidencia +find_match_count[two]={{current}} de {{total}} coincidencias +find_match_count[few]={{current}} de {{total}} coincidencias +find_match_count[many]={{current}} de {{total}} coincidencias +find_match_count[other]={{current}} de {{total}} coincidencias +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=Mas de {{limit}} coincidencias +find_match_count_limit[one]=Mas de {{limit}} coincidencias +find_match_count_limit[two]=Mas que {{limit}} coincidencias +find_match_count_limit[few]=Mas que {{limit}} coincidencias +find_match_count_limit[many]=Mas que {{limit}} coincidencias +find_match_count_limit[other]=Mas que {{limit}} coincidencias find_not_found=No s'ha trobau a frase # Error panel labels @@ -168,6 +232,10 @@ invalid_file_error=O PDF no ye valido u ye estorbau. missing_file_error=No i ha fichero PDF. unexpected_response_error=Respuesta a lo servicio inasperada. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). diff --git a/third-party/pdfjs/web/locale/ar/viewer.properties b/third-party/pdfjs/web/locale/ar/viewer.properties index cffa8bec5..c1ae0bfff 100644 --- a/third-party/pdfjs/web/locale/ar/viewer.properties +++ b/third-party/pdfjs/web/locale/ar/viewer.properties @@ -47,12 +47,12 @@ bookmark_label=المنظور الØالي # Secondary toolbar and context menu tools.title=الأدوات tools_label=الأدوات -first_page.title=اذهب إلى الصÙØØ© الأولى -first_page.label=اذهب إلى الصÙØØ© الأولى -first_page_label=اذهب إلى الصÙØØ© الأولى -last_page.title=اذهب إلى الصÙØØ© الأخيرة -last_page.label=اذهب إلى الصÙØØ© الأخيرة -last_page_label=اذهب إلى الصÙØØ© الأخيرة +first_page.title=انتقل إلى الصÙØØ© الأولى +first_page.label=انتقل إلى الصÙØØ© الأولى +first_page_label=انتقل إلى الصÙØØ© الأولى +last_page.title=انتقل إلى الصÙØØ© الأخيرة +last_page.label=انتقل إلى الصÙØØ© الأخيرة +last_page_label=انتقل إلى الصÙØØ© الأخيرة page_rotate_cw.title=أدر باتجاه عقارب الساعة page_rotate_cw.label=أدر باتجاه عقارب الساعة page_rotate_cw_label=أدر باتجاه عقارب الساعة @@ -138,16 +138,22 @@ print_progress_close=ألغ٠# tooltips) toggle_sidebar.title=بدّل ظهور الشريط الجانبي toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (ÙŠØتوي المستند على مخطط أو مرÙقات) +toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (ÙŠØتوي المستند على مخطط أو مرÙقات أو طبقات) toggle_sidebar_label=بدّل ظهور الشريط الجانبي document_outline.title=اعرض Ùهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر) document_outline_label=مخطط المستند attachments.title=اعرض المرÙقات attachments_label=المÙرÙقات +layers.title=اعرض الطبقات (انقر مرتين لتصÙير كل الطبقات إلى الØالة المبدئية) +layers_label=â€â€Ø§Ù„طبقات thumbs.title=اعرض Ù…Ùصغرات thumbs_label=Ù…Ùصغّرات findbar.title=ابØØ« ÙÙŠ المستند findbar_label=ابØØ« +additional_layers=الطبقات الإضاÙية +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +page_canvas=صÙØØ© {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. diff --git a/third-party/pdfjs/web/locale/az/viewer.properties b/third-party/pdfjs/web/locale/az/viewer.properties index 8f61d9641..99b94a31c 100644 --- a/third-party/pdfjs/web/locale/az/viewer.properties +++ b/third-party/pdfjs/web/locale/az/viewer.properties @@ -39,8 +39,8 @@ open_file.title=Fayl Aç open_file_label=Aç print.title=Yazdır print_label=Yazdır -download.title=YüklÉ™ -download_label=YüklÉ™ +download.title=Endir +download_label=Endir bookmark.title=Hazırkı görünüş (köçür vÉ™ ya yeni pÉ™ncÉ™rÉ™dÉ™ aç) bookmark_label=Hazırkı görünüş @@ -138,16 +138,20 @@ print_progress_close=Ləğv et # tooltips) toggle_sidebar.title=Yan Paneli Aç/BaÄŸla toggle_sidebar_notification.title=Yan paneli çevir (sÉ™nÉ™ddÉ™ icmal/baÄŸlama var) +toggle_sidebar_notification2.title=Yan paneli çevir (sÉ™nÉ™ddÉ™ icmal/baÄŸlamalar/laylar mövcuddur) toggle_sidebar_label=Yan Paneli Aç/BaÄŸla document_outline.title=SÉ™nÉ™din eskizini göstÉ™r (bütün bÉ™ndlÉ™ri açmaq/yığmaq üçün iki dÉ™fÉ™ kliklÉ™yin) document_outline_label=SÉ™nÉ™d strukturu attachments.title=BaÄŸlamaları göstÉ™r attachments_label=BaÄŸlamalar +layers.title=Layları göstÉ™r (bütün layları ilkin halına sıfırlamaq üçün iki dÉ™fÉ™ kliklÉ™yin) +layers_label=Laylar thumbs.title=Kiçik ÅŸÉ™killÉ™ri göstÉ™r thumbs_label=Kiçik ÅŸÉ™killÉ™r findbar.title=SÉ™nÉ™ddÉ™ Tap findbar_label=Tap +additional_layers=ÆlavÉ™ laylar # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=SÉ™hifÉ™ {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/be/viewer.properties b/third-party/pdfjs/web/locale/be/viewer.properties index 6ac719288..d4204c179 100644 --- a/third-party/pdfjs/web/locale/be/viewer.properties +++ b/third-party/pdfjs/web/locale/be/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=СкаÑаваць # tooltips) toggle_sidebar.title=Паказаць/Ñхаваць бакавую панÑль toggle_sidebar_notification.title=Паказаць/Ñхаваць бакавую панÑль (дакумент мае змеÑÑ‚/укладанні) +toggle_sidebar_notification2.title=Паказаць/Ñхаваць бакавую панÑль (дакумент мае змеÑÑ‚/укладанні/плаÑÑ‚Ñ‹) toggle_sidebar_label=Паказаць/Ñхаваць бакавую панÑль document_outline.title=Паказаць Ñтруктуру дакумента (Ð´Ð²Ð°Ð¹Ð½Ð°Ñ Ð¿Ñтрычка, каб разгарнуць /згарнуць уÑе Ñлементы) document_outline_label=Структура дакумента attachments.title=Паказаць далучÑнні attachments_label=ДалучÑнні +layers.title=Паказаць плаÑÑ‚Ñ‹ (двойчы пÑтрыкніце, каб Ñкінуць уÑе плаÑÑ‚Ñ‹ да прадвызначанага Ñтану) +layers_label=ПлаÑÑ‚Ñ‹ thumbs.title=Паказ мініÑцюр thumbs_label=МініÑцюры findbar.title=Пошук у дакуменце findbar_label=ЗнайÑці +additional_layers=Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð¿Ð»Ð°ÑÑ‚Ñ‹ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Старонка {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/br/viewer.properties b/third-party/pdfjs/web/locale/br/viewer.properties index 9add9a432..d46d82f4b 100644 --- a/third-party/pdfjs/web/locale/br/viewer.properties +++ b/third-party/pdfjs/web/locale/br/viewer.properties @@ -82,27 +82,27 @@ spread_even_label=Pajennoù par # Document properties dialog box document_properties.title=Perzhioù an teul… document_properties_label=Perzhioù an teul… -document_properties_file_name=Anv restr : -document_properties_file_size=Ment ar restr : +document_properties_file_name=Anv restr: +document_properties_file_size=Ment ar restr: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit) -document_properties_title=Titl : -document_properties_author=Aozer : -document_properties_subject=Danvez : -document_properties_keywords=Gerioù-alc'hwez : -document_properties_creation_date=Deiziad krouiñ : -document_properties_modification_date=Deiziad kemmañ : +document_properties_title=Titl: +document_properties_author=Aozer: +document_properties_subject=Danvez: +document_properties_keywords=Gerioù-alc'hwez: +document_properties_creation_date=Deiziad krouiñ: +document_properties_modification_date=Deiziad kemmañ: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Krouer : -document_properties_producer=Kenderc'her PDF : -document_properties_version=Handelv PDF : -document_properties_page_count=Niver a bajennoù : +document_properties_creator=Krouer: +document_properties_producer=Kenderc'her PDF: +document_properties_version=Handelv PDF: +document_properties_page_count=Niver a bajennoù: document_properties_page_size=Ment ar bajenn: document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm @@ -138,11 +138,13 @@ print_progress_close=Nullañ # tooltips) toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul) +toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul) toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù) document_outline_label=Sinedoù an teuliad attachments.title=Diskouez ar c'henstagadurioù attachments_label=Kenstagadurioù +layers_label=Gwiskadoù thumbs.title=Diskouez ar melvennoù thumbs_label=Melvennoù findbar.title=Klask e-barzh an teuliad @@ -199,17 +201,17 @@ error_less_info=Nebeutoc'h a ditouroù error_close=Serriñ # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. -error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}}) +error_version_info=PDF.js handelv {{version}} (kempunadur: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. -error_message=Kemennadenn : {{message}} +error_message=Kemennadenn: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. -error_stack=Torn : {{stack}} +error_stack=Torn: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename -error_file=Restr : {{file}} +error_file=Restr: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number -error_line=Linenn : {{line}} +error_line=Linenn: {{line}} rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad. # Predefined zoom values @@ -242,6 +244,6 @@ password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij. password_ok=Mat eo password_cancel=Nullañ -printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. -printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. -web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet. +printing_not_supported=Kemenn: N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ. +printing_not_ready=Kemenn: N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn. +web_fonts_disabled=Diweredekaet eo an nodrezhoù web: n'haller ket arverañ an nodrezhoù PDF enframmet. diff --git a/third-party/pdfjs/web/locale/ca/viewer.properties b/third-party/pdfjs/web/locale/ca/viewer.properties index ac6fb779f..22ae91c1a 100644 --- a/third-party/pdfjs/web/locale/ca/viewer.properties +++ b/third-party/pdfjs/web/locale/ca/viewer.properties @@ -213,7 +213,7 @@ error_line=LÃnia: {{line}} rendering_error=S'ha produït un error mentre es renderitzava la pà gina. # Predefined zoom values -page_scale_width=Amplà ria de la pà gina +page_scale_width=Amplada de la pà gina page_scale_fit=Ajusta la pà gina page_scale_auto=Zoom automà tic page_scale_actual=Mida real diff --git a/third-party/pdfjs/web/locale/cak/viewer.properties b/third-party/pdfjs/web/locale/cak/viewer.properties index d4eae51a8..5d9be9a07 100644 --- a/third-party/pdfjs/web/locale/cak/viewer.properties +++ b/third-party/pdfjs/web/locale/cak/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Tiq'at # tooltips) toggle_sidebar.title=Tijal ri ajxikin kajtz'ik toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq yakb'äl) +toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj) toggle_sidebar_label=Tijal ri ajxikin kajtz'ik document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel ruch'akulal) document_outline_label=Ruch'akulal wuj attachments.title=Kek'ut pe ri taq taqoj attachments_label=Taq taqoj +layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuchuj e k'o wi) +layers_label=Taq kuchuj thumbs.title=Kek'ut pe taq ch'utiq thumbs_label=Koköj findbar.title=Tikanöx chupam ri wuj findbar_label=Tikanöx +additional_layers=Tz'aqat ta Kuchuj # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Ruxaq {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/ckb/viewer.properties b/third-party/pdfjs/web/locale/ckb/viewer.properties index d1bed431b..4cef6ccbc 100644 --- a/third-party/pdfjs/web/locale/ckb/viewer.properties +++ b/third-party/pdfjs/web/locale/ckb/viewer.properties @@ -13,6 +13,8 @@ # limitations under the License. # Main toolbar buttons (tooltips and alt text for images) +previous.title=Ù¾Û•Ú•Û•ÛŒ پێشوو +previous_label=پێشوو next.title=Ù¾Û•Ú•Û•ÛŒ دوواتر next_label=دوواتر @@ -20,20 +22,51 @@ next_label=دوواتر page.title=پەرە # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. +of_pages=Ù„Û• {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. +page_of_pages=({{pageNumber}} Ù„Û• {{pagesCount}}) +zoom_out.title=ڕۆچوونی +zoom_out_label=ڕۆچوونی +zoom_in.title=هێنانەپێش +zoom_in_label=هێنانەپێش +zoom.title=زووم open_file.title=Ù¾Û•Ú•Ú¯Û• بکەرەوە open_file_label=کردنەوە print.title=چاپکردن +print_label=چاپکردن download.title=داگرتن +download_label=داگرتن # Secondary toolbar and context menu tools.title=ئامرازەکان +tools_label=ئامرازەکان first_page.title=برۆ بۆ یەکەم Ù¾Û•Ú•Û• - - +first_page.label=بڕۆ بۆ یەکەم Ù¾Û•Ú•Û• +first_page_label=بڕۆ بۆ یەکەم Ù¾Û•Ú•Û• +last_page.title=بڕۆ بۆ کۆتا Ù¾Û•Ú•Û• +last_page.label=بڕۆ بۆ کۆتا Ù¾Û•Ú•Û• +last_page_label=بڕۆ بۆ کۆتا Ù¾Û•Ú•Û• +page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر +page_rotate_cw.label=ئاڕاستەی میلی کاتژمێر +page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر +page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر +page_rotate_ccw.label=پێچەوانەی میلی کاتژمێر +page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر + +cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە +cursor_text_select_tool_label=توڵامرازی نیشانکەری دەق +cursor_hand_tool.title=توڵامرازی دەستی چالاک بکە +cursor_hand_tool_label=توڵامرازی دەستی + +scroll_vertical.title=ناردنی ئەستوونی بەکاربێنە +scroll_vertical_label=ناردنی ئەستوونی +scroll_horizontal.title=ناردنی ئاسۆیی بەکاربێنە +scroll_horizontal_label=ناردنی ئاسۆیی +scroll_wrapped.title=ناردنی لوولکراو بەکاربێنە +scroll_wrapped_label=ناردنی لوولکراو # Document properties dialog box @@ -41,71 +74,162 @@ document_properties_file_name=ناوی Ù¾Û•Ú•Ú¯Û•: document_properties_file_size=قەبارەی Ù¾Û•Ú•Ú¯Û•: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # will be replaced by the PDF file size in kilobytes, respectively in bytes. +document_properties_kb={{size_kb}} کب ({{size_b}} بایت) # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" # will be replaced by the PDF file size in megabytes, respectively in bytes. +document_properties_mb={{size_mb}} مب ({{size_b}} بایت) document_properties_title=سەردێڕ: document_properties_author=نووسەر +document_properties_subject=بابەت: document_properties_keywords=کلیلەوشە: +document_properties_creation_date=بەرواری درووستکردن: +document_properties_modification_date=بەرواری دەستکاریکردن: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. +document_properties_date_string={{date}}, {{time}} +document_properties_creator=درووستکەر: +document_properties_producer=بەرهەمهێنەری PDF: +document_properties_version=وەشانی PDF: +document_properties_page_count=ژمارەی پەرەکان: +document_properties_page_size=قەبارەی Ù¾Û•Ú•Û•: +document_properties_page_size_unit_inches=ئینچ +document_properties_page_size_unit_millimeters=ملم +document_properties_page_size_orientation_portrait=پۆرترەیت(درێژ) +document_properties_page_size_orientation_landscape=پانیی +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=نامە +document_properties_page_size_name_legal=یاسایی # LOCALIZATION NOTE (document_properties_page_size_dimension_string): # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) # LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): # "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by # the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized=پیشاندانی وێبی خێرا: +document_properties_linearized_yes=بەڵێ +document_properties_linearized_no=نەخێر document_properties_close=داخستن +print_progress_message=بەڵگەنامە ئامادەدەکرێت بۆ چاپکردن... # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. +print_progress_percent={{progress}}% print_progress_close=پاشگەزبوونەوە # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) +toggle_sidebar.title=لاتەنیشت پیشاندان/شاردنەوە +toggle_sidebar_label=لاتەنیشت پیشاندان/شاردنەوە +document_outline_label=سنووری چوارچێوە +attachments.title=پاشکۆکان پیشان بدە +attachments_label=پاشکۆکان +layers_label=چینەکان +thumbs.title=ÙˆÛŽÙ†Û†Ú†Ú©Û• پیشان بدە +thumbs_label=ÙˆÛŽÙ†Û†Ú†Ú©Û• +findbar.title=Ù„Û• بەڵگەنامە بگەرێ findbar_label=دۆزینەوە +additional_layers=چینی زیاتر # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +page_canvas=Ù¾Û•Ú•Û•ÛŒ {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. +thumb_page_title=Ù¾Û•Ú•Û•ÛŒ {{page}} # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # number. +thumb_page_canvas=ÙˆÛŽÙ†Û†Ú†Ú©Û•ÛŒ Ù¾Û•Ú•Û•ÛŒ {{page}} # Find panel button title and messages find_input.title=دۆزینەوە +find_input.placeholder=Ù„Û• بەڵگەنامە بگەرێ... +find_previous.title=هەبوونی پێشوو بدۆزرەوە Ù„Û• ڕستەکەدا +find_previous_label=پێشوو +find_next.title=هەبوونی داهاتوو بدۆزەرەوە Ù„Û• ڕستەکەدا +find_next_label=دوواتر +find_highlight=هەمووی نیشانە بکە +find_match_case_label=دۆخی لەیەکچوون +find_entire_word_label=هەموو وشەکان +find_reached_top=گەشتیتە سەرەوەی بەڵگەنامە، Ù„Û• خوارەوە دەستت پێکرد +find_reached_bottom=گەشتیتە کۆتایی بەڵگەنامە. لەسەرەوە دەستت پێکرد # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. +find_match_count={[ plural(total) ]} +find_match_count[one]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[two]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[few]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[many]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو +find_match_count[other]={{current}} Ù„Û• Ú©Û†ÛŒ {{total}} لەیەکچوو # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. +find_match_count_limit={[ plural(limit) ]} +find_match_count_limit[zero]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[one]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[two]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[few]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[many]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_match_count_limit[other]=زیاتر Ù„Û• {{limit}} لەیەکچوو +find_not_found=نووسین نەدۆزرایەوە # Error panel labels +error_more_info=زانیاری زیاتر +error_less_info=زانیاری کەمتر +error_close=داخستن # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. +error_version_info=PDF.js v{{version}} (build: {{build}}) # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an # english string describing the error. +error_message=پەیام: {{message}} # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack # trace. +error_stack=لەسەریەک: {{stack}} # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename +error_file=Ù¾Û•Ú•Ú¯Û•: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number +error_line=Ù‡ÛŽÚµ: {{line}} +rendering_error=هەڵەیەک ڕوویدا Ù„Û• کاتی پوختەکردنی (ڕێندەر) Ù¾Û•Ú•Û•. # Predefined zoom values +page_scale_width=پانی Ù¾Û•Ú•Û• +page_scale_fit=پڕبوونی Ù¾Û•Ú•Û• +page_scale_auto=زوومی خۆکار +page_scale_actual=قەبارەی ڕاستی # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. +page_scale_percent={{scale}}% # Loading indicator messages +loading_error_indicator=Ù‡Û•ÚµÛ• +loading_error=هەڵەیەک ڕوویدا Ù„Û• کاتی بارکردنی PDF. +invalid_file_error=Ù¾Û•Ú•Ú¯Û•ÛŒ pdf تێکچووە یان نەگونجاوە. +missing_file_error=Ù¾Û•Ú•Ú¯Û•ÛŒ pdf بوونی نیە. +unexpected_response_error=وەڵامی ڕاژەخوازی نەخوازراو. # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be # replaced by the modification date, and time, of the annotation. +annotation_date_string={{date}}, {{time}} # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). # Some common types are e.g.: "Check", "Text", "Comment", "Note" - +text_annotation_type.alt=[{{type}} سەرنج] +password_label=وشەی تێپەڕ بنووسە بۆ کردنەوەی Ù¾Û•Ú•Ú¯Û•ÛŒ pdf. +password_invalid=وشەی تێپەڕ هەڵەیە. تکایە دووبارە Ù‡Û•ÙˆÚµ بدەرەوە. +password_ok=باشە +password_cancel=پاشگەزبوونەوە + +printing_not_supported=ئاگاداربە: چاپکردن بە تەواوی پشتگیر ناکرێت Ù„Û•Ù… وێبگەڕە. +printing_not_ready=ئاگاداربە: PDF بە تەواوی بارنەبووە بۆ چاپکردن. +web_fonts_disabled=جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfÙ€Û•Ú©Û• بەکاربێت. diff --git a/third-party/pdfjs/web/locale/cs/viewer.properties b/third-party/pdfjs/web/locale/cs/viewer.properties index 646f410bb..a5a36c512 100644 --- a/third-party/pdfjs/web/locale/cs/viewer.properties +++ b/third-party/pdfjs/web/locale/cs/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=ZruÅ¡it # tooltips) toggle_sidebar.title=Postrannà liÅ¡ta toggle_sidebar_notification.title=PÅ™epne postrannà liÅ¡tu (dokument obsahuje osnovu/pÅ™Ãlohy) +toggle_sidebar_notification2.title=PÅ™epnout postrannà liÅ¡tu (dokument obsahuje osnovu/pÅ™Ãlohy/vrstvy) toggle_sidebar_label=Postrannà liÅ¡ta document_outline.title=Zobrazà osnovu dokumentu (dvojité klepnutà rozbalÃ/sbalà vÅ¡echny položky) document_outline_label=Osnova dokumentu attachments.title=Zobrazà pÅ™Ãlohy attachments_label=PÅ™Ãlohy +layers.title=Zobrazit vrstvy (poklepánÃm obnovÃte vÅ¡echny vrstvy do výchozÃho stavu) +layers_label=Vrstvy thumbs.title=Zobrazà náhledy thumbs_label=Náhledy findbar.title=Najde v dokumentu findbar_label=NajÃt +additional_layers=DalÅ¡Ã vrstvy # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Strana {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/cy/viewer.properties b/third-party/pdfjs/web/locale/cy/viewer.properties index 16cda5fd7..3f819c2be 100644 --- a/third-party/pdfjs/web/locale/cy/viewer.properties +++ b/third-party/pdfjs/web/locale/cy/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Diddymu # tooltips) toggle_sidebar.title=Toglo'r Bar Ochr toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments) +toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau) toggle_sidebar_label=Toglo'r Bar Ochr document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem) document_outline_label=Amlinelliad Dogfen attachments.title=Dangos Atodiadau attachments_label=Atodiadau +layers.title=Dangos Haenau (cliciwch ddwywaith i ailosod yr holl haenau i'r cyflwr rhagosodedig) +layers_label=Haenau thumbs.title=Dangos Lluniau Bach thumbs_label=Lluniau Bach +current_outline_item.title=Canfod yr Eitem Amlinellol Gyfredol +current_outline_item_label=Yr Eitem Amlinellol Gyfredol findbar.title=Canfod yn y Ddogfen findbar_label=Canfod +additional_layers=Haenau Ychwanegol # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Tudalen {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/da/viewer.properties b/third-party/pdfjs/web/locale/da/viewer.properties index 38ed99d0b..8a33f3c45 100644 --- a/third-party/pdfjs/web/locale/da/viewer.properties +++ b/third-party/pdfjs/web/locale/da/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Annuller # tooltips) toggle_sidebar.title=SlÃ¥ sidepanel til eller fra toggle_sidebar_notification.title=SlÃ¥ sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer) +toggle_sidebar_notification2.title=SlÃ¥ sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) toggle_sidebar_label=SlÃ¥ sidepanel til eller fra document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) document_outline_label=Dokument-disposition attachments.title=Vis vedhæftede filer attachments_label=Vedhæftede filer +layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstanden) +layers_label=Lag thumbs.title=Vis miniaturer thumbs_label=Miniaturer findbar.title=Find i dokument findbar_label=Find +additional_layers=Yderligere lag # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/de/viewer.properties b/third-party/pdfjs/web/locale/de/viewer.properties index 26b682ebe..ed2431616 100644 --- a/third-party/pdfjs/web/locale/de/viewer.properties +++ b/third-party/pdfjs/web/locale/de/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Abbrechen # tooltips) toggle_sidebar.title=Sidebar umschalten toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge) +toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen) toggle_sidebar_label=Sidebar umschalten document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen) document_outline_label=Dokumentstruktur attachments.title=Anhänge anzeigen attachments_label=Anhänge +layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzustand zurückzusetzen) +layers_label=Ebenen thumbs.title=Miniaturansichten anzeigen thumbs_label=Miniaturansichten +current_outline_item.title=Aktuelles Struktur-Element suchen +current_outline_item_label=Aktuelles Struktur-Element findbar.title=Dokument durchsuchen findbar_label=Suchen +additional_layers=Zusätzliche Ebenen # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Seite {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/dsb/viewer.properties b/third-party/pdfjs/web/locale/dsb/viewer.properties index 468ccd745..4902a97e6 100644 --- a/third-party/pdfjs/web/locale/dsb/viewer.properties +++ b/third-party/pdfjs/web/locale/dsb/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=PÅ›etergnuÅ› # tooltips) toggle_sidebar.title=Bócnicu pokazaÅ›/schowaÅ› toggle_sidebar_notification.title=Bocnicu pÅ›eÅ¡altowaÅ› (dokument wopÅ›imujo pÅ›eglÄ›d/pÅ›ipiski) +toggle_sidebar_notification2.title=Bocnicu pÅ›eÅ¡altowaÅ› (dokument rozrÄ›dowanje/pÅ›ipiski/warstwy wopÅ›imujo) toggle_sidebar_label=Bócnicu pokazaÅ›/schowaÅ› document_outline.title=Dokumentowe naraźenje pokazaÅ› (dwójne kliknjenje, aby se wÅ¡ykne zapiski pokazali/schowali) document_outline_label=Dokumentowa struktura attachments.title=PÅ›idanki pokazaÅ› attachments_label=PÅ›idanki +layers.title=Warstwy pokazaÅ› (klikniÅ›o dwójcy, aby wÅ¡ykne warstwy na standardny staw slÄ›dk stajiÅ‚) +layers_label=Warstwy thumbs.title=Miniatury pokazaÅ› thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrÄ›dowaÅ„ski zapisk pytaÅ› +current_outline_item_label=Aktualny rozrÄ›dowaÅ„ski zapisk findbar.title=W dokumenÅ›e pytaÅ› findbar_label=PytaÅ› +additional_layers=DalÅ¡ne warstwy # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Bok {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/el/viewer.properties b/third-party/pdfjs/web/locale/el/viewer.properties index 896bbeefc..2de70330e 100644 --- a/third-party/pdfjs/web/locale/el/viewer.properties +++ b/third-party/pdfjs/web/locale/el/viewer.properties @@ -105,7 +105,7 @@ document_properties_version=Έκδοση PDF: document_properties_page_count=ΑÏιθμός σελίδων: document_properties_page_size=ÎœÎγεθος σελίδας: document_properties_page_size_unit_inches=ίντσες -document_properties_page_size_unit_millimeters=χιλιοστά +document_properties_page_size_unit_millimeters=mm document_properties_page_size_orientation_portrait=κατακόÏυφα document_properties_page_size_orientation_landscape=οÏιζόντια document_properties_page_size_name_a3=A3 @@ -131,23 +131,29 @@ print_progress_message=Î Ïοετοιμασία του εγγÏάφου για Î # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% -print_progress_close=ΆκυÏο +print_progress_close=ΑκÏÏωση # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=(Απ)ενεÏγοποίηση πλευÏικής στήλης toggle_sidebar_notification.title=(Απ)ενεÏγοποίηση πλευÏικής στήλης (το ÎγγÏαφο πεÏιÎχει πεÏίγÏαμμα/συνημμÎνα) +toggle_sidebar_notification2.title=(Απ)ενεÏγοποίηση πλευÏικής στήλης (το ÎγγÏαφο πεÏιÎχει πεÏίγÏαμμα/συνημμÎνα/επίπεδα) toggle_sidebar_label=(Απ)ενεÏγοποίηση πλευÏικής στήλης document_outline.title=Εμφάνιση διάÏθÏωσης εγγÏάφου (διπλό κλικ για ανάπτυξη/σÏμπτυξη όλων των στοιχείων) document_outline_label=ΔιάÏθÏωση εγγÏάφου attachments.title=Î Ïοβολή συνημμÎνων attachments_label=ΣυνημμÎνα +layers.title=Εμφάνιση επιπÎδων (διπλό κλικ για επαναφοÏά όλων των επιπÎδων στην Ï€ÏοεπιλεγμÎνη κατάσταση) +layers_label=Επίπεδα thumbs.title=Î Ïοβολή μικÏογÏαφιών thumbs_label=ΜικÏογÏαφίες +current_outline_item.title=ΕÏÏεση Ï„ÏÎχοντος στοιχείου διάÏθÏωσης +current_outline_item_label=ΤÏÎχον στοιχείο διάÏθÏωσης findbar.title=ΕÏÏεση στο ÎγγÏαφο findbar_label=ΕÏÏεση +additional_layers=ΕπιπÏόσθετα επίπεδα # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Σελίδα {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -239,7 +245,7 @@ annotation_date_string={{date}}, {{time}} text_annotation_type.alt=[{{type}} Σχόλιο] password_label=Εισαγωγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î³Î¹Î± το άνοιγμα του PDF αÏχείου. password_invalid=Μη ÎγκυÏος κωδικός. Î Ïοσπαθείστε ξανά. -password_ok=ΟΚ +password_ok=OK password_cancel=ΑκÏÏωση printing_not_supported=Î Ïοειδοποίηση: Η εκτÏπωση δεν υποστηÏίζεται πλήÏως από αυτόν τον πεÏιηγητή. diff --git a/third-party/pdfjs/web/locale/en-CA/viewer.properties b/third-party/pdfjs/web/locale/en-CA/viewer.properties index 554a0e176..3e0906def 100644 --- a/third-party/pdfjs/web/locale/en-CA/viewer.properties +++ b/third-party/pdfjs/web/locale/en-CA/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancel # tooltips) toggle_sidebar.title=Toggle Sidebar toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline attachments.title=Show Attachments attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails findbar.title=Find in Document findbar_label=Find +additional_layers=Additional Layers # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/en-GB/viewer.properties b/third-party/pdfjs/web/locale/en-GB/viewer.properties index 554a0e176..7b2c7cd9c 100644 --- a/third-party/pdfjs/web/locale/en-GB/viewer.properties +++ b/third-party/pdfjs/web/locale/en-GB/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Cancel # tooltips) toggle_sidebar.title=Toggle Sidebar toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) +toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers) toggle_sidebar_label=Toggle Sidebar document_outline.title=Show Document Outline (double-click to expand/collapse all items) document_outline_label=Document Outline attachments.title=Show Attachments attachments_label=Attachments +layers.title=Show Layers (double-click to reset all layers to the default state) +layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find +additional_layers=Additional Layers # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/en-US/viewer.properties b/third-party/pdfjs/web/locale/en-US/viewer.properties index d31103c00..5d1429f75 100644 --- a/third-party/pdfjs/web/locale/en-US/viewer.properties +++ b/third-party/pdfjs/web/locale/en-US/viewer.properties @@ -147,6 +147,8 @@ layers.title=Show Layers (double-click to reset all layers to the default state) layers_label=Layers thumbs.title=Show Thumbnails thumbs_label=Thumbnails +current_outline_item.title=Find Current Outline Item +current_outline_item_label=Current Outline Item findbar.title=Find in Document findbar_label=Find diff --git a/third-party/pdfjs/web/locale/eo/viewer.properties b/third-party/pdfjs/web/locale/eo/viewer.properties index 804bd9842..6300f0844 100644 --- a/third-party/pdfjs/web/locale/eo/viewer.properties +++ b/third-party/pdfjs/web/locale/eo/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Nuligi # tooltips) toggle_sidebar.title=Montri/kaÅi flankan strion toggle_sidebar_notification.title=Montri/kaÅi flankan strion (la dokumento enhavas konturon/aneksaĵojn) +toggle_sidebar_notification2.title=Montri/kaÅi flankan strion (la dokumento enhavas konturon/kunsendaĵojn/tavolojn) toggle_sidebar_label=Montri/kaÅi flankan strion document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn) document_outline_label=Konturo de dokumento attachments.title=Montri kunsendaĵojn attachments_label=Kunsendaĵojn +layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la norman staton) +layers_label=Tavoloj thumbs.title=Montri miniaturojn thumbs_label=Miniaturoj findbar.title=Serĉi en dokumento findbar_label=Serĉi +additional_layers=Aldonaj tavoloj # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=PaÄo {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/es-AR/viewer.properties b/third-party/pdfjs/web/locale/es-AR/viewer.properties index ca2c87ba6..14f588367 100644 --- a/third-party/pdfjs/web/locale/es-AR/viewer.properties +++ b/third-party/pdfjs/web/locale/es-AR/viewer.properties @@ -138,16 +138,21 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Alternar barra lateral toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los Ãtems) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Buscar elemento de esquema actual findbar.title=Buscar en documento findbar_label=Buscar +additional_layers=Capas adicionales # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/es-CL/viewer.properties b/third-party/pdfjs/web/locale/es-CL/viewer.properties index b6ac40939..eaba35e5d 100644 --- a/third-party/pdfjs/web/locale/es-CL/viewer.properties +++ b/third-party/pdfjs/web/locale/es-CL/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Barra lateral toggle_sidebar_notification.title=Cambiar barra lateral (Ãndice de contenidos del documento/adjuntos) +toggle_sidebar_notification2.title=Cambiar barra lateral (Ãndice de contenidos del documento/adjuntos/capas) toggle_sidebar_label=Mostrar u ocultar la barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/es-ES/viewer.properties b/third-party/pdfjs/web/locale/es-ES/viewer.properties index 75e5f0ad4..806f4f5d5 100644 --- a/third-party/pdfjs/web/locale/es-ES/viewer.properties +++ b/third-party/pdfjs/web/locale/es-ES/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Cambiar barra lateral toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Resumen de documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/es-MX/viewer.properties b/third-party/pdfjs/web/locale/es-MX/viewer.properties index 5098ad195..c39823d36 100644 --- a/third-party/pdfjs/web/locale/es-MX/viewer.properties +++ b/third-party/pdfjs/web/locale/es-MX/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Cambiar barra lateral toggle_sidebar_notification.title=Cambiar barra lateral (Ãndice de contenidos del documento/adjuntos) +toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas) toggle_sidebar_label=Cambiar barra lateral document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos) document_outline_label=Esquema del documento attachments.title=Mostrar adjuntos attachments_label=Adjuntos +layers.title=Mostrar capas (doble clic para restablecer todas las capas al estado predeterminado) +layers_label=Capas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas findbar.title=Buscar en el documento findbar_label=Buscar +additional_layers=Capas adicionales # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/eu/viewer.properties b/third-party/pdfjs/web/locale/eu/viewer.properties index 5700d6019..40956b54b 100644 --- a/third-party/pdfjs/web/locale/eu/viewer.properties +++ b/third-party/pdfjs/web/locale/eu/viewer.properties @@ -143,11 +143,13 @@ document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guz document_outline_label=Dokumentuaren eskema attachments.title=Erakutsi eranskinak attachments_label=Eranskinak +layers_label=Geruzak thumbs.title=Erakutsi koadro txikiak thumbs_label=Koadro txikiak findbar.title=Bilatu dokumentuan findbar_label=Bilatu +additional_layers=Geruza gehigarriak # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}}. orria # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/fi/viewer.properties b/third-party/pdfjs/web/locale/fi/viewer.properties index 38c40a395..f444bc6ee 100644 --- a/third-party/pdfjs/web/locale/fi/viewer.properties +++ b/third-party/pdfjs/web/locale/fi/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Peruuta # tooltips) toggle_sidebar.title=Näytä/piilota sivupaneeli toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä) +toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja) toggle_sidebar_label=Näytä/piilota sivupaneeli document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla) document_outline_label=Dokumentin sisällys attachments.title=Näytä liitteet attachments_label=Liitteet +layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletustilaan) +layers_label=Tasot thumbs.title=Näytä pienoiskuvat thumbs_label=Pienoiskuvat findbar.title=Etsi dokumentista findbar_label=Etsi +additional_layers=Lisätasot # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Sivu {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/fr/viewer.properties b/third-party/pdfjs/web/locale/fr/viewer.properties index 589a4185c..af54b0966 100644 --- a/third-party/pdfjs/web/locale/fr/viewer.properties +++ b/third-party/pdfjs/web/locale/fr/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Annuler # tooltips) toggle_sidebar.title=Afficher/Masquer le panneau latéral toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes) +toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des signets/pièces jointes/calques) toggle_sidebar_label=Afficher/Masquer le panneau latéral document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments) document_outline_label=Signets du document attachments.title=Afficher les pièces jointes attachments_label=Pièces jointes +layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les calques à l’état par défaut) +layers_label=Calques thumbs.title=Afficher les vignettes thumbs_label=Vignettes findbar.title=Rechercher dans le document findbar_label=Rechercher +additional_layers=Calques additionnels # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Page {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/fy-NL/viewer.properties b/third-party/pdfjs/web/locale/fy-NL/viewer.properties index 5a506540b..3d69d0db1 100644 --- a/third-party/pdfjs/web/locale/fy-NL/viewer.properties +++ b/third-party/pdfjs/web/locale/fy-NL/viewer.properties @@ -22,7 +22,7 @@ next_label=Folgjende page.title=Side # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number # representing the total number of pages in the document. -of_pages=fa {{pagesCount}} +of_pages=fan {{pagesCount}} # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # will be replaced by a number representing the currently visible page, # respectively a number representing the total number of pages in the document. @@ -138,16 +138,20 @@ print_progress_close=Annulearje # tooltips) toggle_sidebar.title=Sidebalke yn-/útskeakelje toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen) +toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen) toggle_sidebar_label=Sidebalke yn-/útskeakelje document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen) document_outline_label=Dokumintoersjoch attachments.title=Bylagen toane attachments_label=Bylagen +layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te setten) +layers_label=Lagen thumbs.title=Foarbylden toane thumbs_label=Foarbylden findbar.title=Sykje yn dokumint findbar_label=Sykje +additional_layers=Oanfoljende lagen # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/gd/viewer.properties b/third-party/pdfjs/web/locale/gd/viewer.properties index af4433e3f..bce4dee36 100644 --- a/third-party/pdfjs/web/locale/gd/viewer.properties +++ b/third-party/pdfjs/web/locale/gd/viewer.properties @@ -148,6 +148,7 @@ thumbs_label=Dealbhagan findbar.title=Lorg san sgrìobhainn findbar_label=Lorg +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -226,6 +227,9 @@ invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte. missing_file_error=Faidhle PDF a tha a dhìth. unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). @@ -233,7 +237,7 @@ unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil. text_annotation_type.alt=[Nòtachadh {{type}}] password_label=Cuir a-steach am facal-faire gus am faidhle PDF seo fhosgladh. password_invalid=Tha am facal-faire cearr. Nach fheuch thu ris a-rithist? -password_ok=Ceart ma-tha +password_ok=Ceart ma-thà password_cancel=Sguir dheth printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur là n-taic ri clò-bhualadh. diff --git a/third-party/pdfjs/web/locale/gl/viewer.properties b/third-party/pdfjs/web/locale/gl/viewer.properties index c3a30fecd..fedfb8e74 100644 --- a/third-party/pdfjs/web/locale/gl/viewer.properties +++ b/third-party/pdfjs/web/locale/gl/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Amosar/agochar a barra lateral toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos) +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas) toggle_sidebar_label=Amosar/agochar a barra lateral document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os elementos) document_outline_label=Esquema do documento attachments.title=Amosar anexos attachments_label=Anexos +layers.title=Mostrar capas (prema dúas veces para restaurar todas as capas o estado predeterminado) +layers_label=Capas thumbs.title=Amosar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Atopar o elemento delimitado actualmente +current_outline_item_label=Elemento delimitado actualmente findbar.title=Atopar no documento findbar_label=Atopar +additional_layers=Capas adicionais # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Páxina {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/gn/viewer.properties b/third-party/pdfjs/web/locale/gn/viewer.properties index 4b893971d..7f79a223c 100644 --- a/third-party/pdfjs/web/locale/gn/viewer.properties +++ b/third-party/pdfjs/web/locale/gn/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Heja # tooltips) toggle_sidebar.title=Tenda yke moambue toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirÅ©ha) +toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirÅ©ha/ñuãha) toggle_sidebar_label=Tenda yke moambue document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichÄ© hag̃ua opavavete mba’epuru) document_outline_label=Kuatia apopyre attachments.title=MoirÅ©ha jehechauka attachments_label=MoirÅ©ha +layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãha tekoypýpe) +layers_label=Ñuãha thumbs.title=Mba’emirÄ© jehechauka thumbs_label=Mba’emirÄ© findbar.title=Kuatiápe jeheka findbar_label=Juhu +additional_layers=Ñuãha moirÅ©guáva # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Kuatiarogue {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/he/viewer.properties b/third-party/pdfjs/web/locale/he/viewer.properties index 066478921..02069df09 100644 --- a/third-party/pdfjs/web/locale/he/viewer.properties +++ b/third-party/pdfjs/web/locale/he/viewer.properties @@ -137,17 +137,23 @@ print_progress_close=ביטול # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=הצגה/הסתרה של סרגל הצד -toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל מת×ר/צרופות) +toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן ×¢× ×™×™× ×™×/×§×‘×¦×™× ×ž×¦×•×¨×¤×™×) +toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן ×¢× ×™×™× ×™×/×§×‘×¦×™× ×ž×¦×•×¨×¤×™×/שכבות) toggle_sidebar_label=הצגה/הסתרה של סרגל הצד -document_outline.title=הצגת מת×ר מסמך (לחיצה כפולה כדי להרחיב ×ו ×œ×¦×ž×¦× ×ת כל הפריטי×) -document_outline_label=מת×ר מסמך +document_outline.title=הצגת תוכן ×”×¢× ×™×™× ×™× ×©×œ המסמך (לחיצה כפולה כדי להרחיב ×ו ×œ×¦×ž×¦× ×ת כל הפריטי×) +document_outline_label=תוכן ×”×¢× ×™×™× ×™× ×©×œ המסמך attachments.title=הצגת צרופות attachments_label=צרופות +layers.title=הצגת שכבות (יש ללחוץ לחיצה כפולה כדי ל×פס ×ת כל השכבות למצב ברירת המחדל) +layers_label=שכבות thumbs.title=הצגת תצוגה מקדימה thumbs_label=תצוגה מקדימה +current_outline_item.title=מצי×ת פריט תוכן ×”×¢× ×™×™× ×™× ×”× ×•×›×—×™ +current_outline_item_label=פריט תוכן ×”×¢× ×™×™× ×™× ×”× ×•×›×—×™ findbar.title=חיפוש במסמך findbar_label=חיפוש +additional_layers=שכבות × ×•×¡×¤×•×ª # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=עמוד {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/hr/viewer.properties b/third-party/pdfjs/web/locale/hr/viewer.properties index bfe10f808..5cbca458b 100644 --- a/third-party/pdfjs/web/locale/hr/viewer.properties +++ b/third-party/pdfjs/web/locale/hr/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Odustani # tooltips) toggle_sidebar.title=Prikaži/sakrij boÄnu traku toggle_sidebar_notification.title=Prikazivanje i sklanjanje boÄne trake (dokument sadrži konturu/privitke) +toggle_sidebar_notification2.title=Prikazivanje i sklanjanje boÄne trake (dokument sadrži konturu/privitke/slojeve) toggle_sidebar_label=Prikaži/sakrij boÄnu traku document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki) document_outline_label=Struktura dokumenta attachments.title=Prikaži privitke attachments_label=Privitci +layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje) +layers_label=Slojevi thumbs.title=Prikaži minijature thumbs_label=Minijature findbar.title=Traži u dokumentu findbar_label=Traži +additional_layers=Dodatni slojevi # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Stranica br. {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/hsb/viewer.properties b/third-party/pdfjs/web/locale/hsb/viewer.properties index 9ba3c15a2..11dea4a90 100644 --- a/third-party/pdfjs/web/locale/hsb/viewer.properties +++ b/third-party/pdfjs/web/locale/hsb/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=PÅ™etorhnyć # tooltips) toggle_sidebar.title=BóÄnicu pokazać/schować toggle_sidebar_notification.title=BóÄnicu pÅ™epinać (dokument wobsahuje wobrys/pÅ™iwěški) +toggle_sidebar_notification2.title=BóÄnicu pÅ™epinać (dokument rozrjad/pÅ™iwěški/worÅ¡ty wobsahuje) toggle_sidebar_label=BóÄnicu pokazać/schować document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wÅ¡Ä› zapiski pokazali/schowali) document_outline_label=Dokumentowa struktura attachments.title=PÅ™iwěški pokazać attachments_label=PÅ™iwěški +layers.title=WorÅ¡ty pokazać (klikńće dwójce, zo byšće wÅ¡Ä› worÅ¡ty na standardny staw wróćo stajiÅ‚) +layers_label=WorÅ¡ty thumbs.title=Miniatury pokazać thumbs_label=Miniatury +current_outline_item.title=Aktualny rozrjadowy zapisk pytać +current_outline_item_label=Aktualny rozrjadowy zapisk findbar.title=W dokumenće pytać findbar_label=Pytać +additional_layers=DalÅ¡e worÅ¡ty # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Strona {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/hu/viewer.properties b/third-party/pdfjs/web/locale/hu/viewer.properties index 88c1d0796..e2d4b4955 100644 --- a/third-party/pdfjs/web/locale/hu/viewer.properties +++ b/third-party/pdfjs/web/locale/hu/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Mégse # tooltips) toggle_sidebar.title=Oldalsáv be/ki toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz) +toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz) toggle_sidebar_label=Oldalsáv be/ki document_outline.title=Dokumentum megjelenÃtése online (dupla kattintás minden elem kinyitásához/összecsukásához) document_outline_label=Dokumentumvázlat attachments.title=Mellékletek megjelenÃtése attachments_label=Van melléklet +layers.title=Rétegek megjelenÃtése (dupla kattintás az összes réteg alapértelmezett állapotra visszaállÃtásához) +layers_label=Rétegek thumbs.title=Bélyegképek megjelenÃtése thumbs_label=Bélyegképek +current_outline_item.title=Jelenlegi vázlatelem megkeresése +current_outline_item_label=Jelenlegi vázlatelem findbar.title=Keresés a dokumentumban findbar_label=Keresés +additional_layers=További rétegek # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}}. oldal # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/hye/viewer.properties b/third-party/pdfjs/web/locale/hye/viewer.properties index 80d43019e..c87dd0767 100644 --- a/third-party/pdfjs/web/locale/hye/viewer.properties +++ b/third-party/pdfjs/web/locale/hye/viewer.properties @@ -32,7 +32,7 @@ zoom_out.title=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ zoom_out_label=Õ“Õ¸Ö„Ö€Õ¡ÖÕ¶Õ¥Õ¬ zoom_in.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ zoom_in_label=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¶Õ¥Õ¬ -zoom.title=Ô½Õ¸Õ·Õ¸Ö€Õ¡ÖÕ¸Ö‚Õ´ +zoom.title=Õ‰Õ¡ÖƒÕ¡ÖƒÕ¸ÕÕ¸Ö‚Õ´ presentation_mode.title=Ô±Õ¶ÖÕ¶Õ¥Õ¬ Õ¶Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯Õ«Õ¶ presentation_mode_label=Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ´Õ¡Õ¶ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯ open_file.title=Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ«Õ·Ö„Õ¨ @@ -77,6 +77,7 @@ spread_none_label=Õ‰Õ¯Õ¡Õµ Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿ spread_odd.title=Õ„Õ«Õ¡ÖÕ§Ö„ Õ§Õ»Õ« Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¯Õ¥Õ¶Õ¿ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¸Ö‚Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ spread_odd_label=ÕÕ¡Ö€Õ¡Ö‚Ö€Õ«Õ¶Õ¡Õ¯ Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿ spread_even.title=Õ„Õ«Õ¡ÖÕ§Ö„ Õ§Õ»Õ« Õ¯Õ¸Õ¶Õ¿Õ¥Ö„Õ½Õ¿Õ«Õ¶ Õ½Õ¯Õ½Õ¥Õ¬Õ¸Õ¾Õ Õ¦Õ¸ÕµÕ£ Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¸Ö‚Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¸Õ¾ +spread_even_label=Õ€Õ¡Ö‚Õ¡Õ½Õ¡Ö€ Õ¾Õ¥Ö€Õ¡Õ®Õ¡Õ®Õ¯Õ¥Ö€ # Document properties dialog box document_properties.title=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« հատկութիւնները… @@ -137,16 +138,20 @@ print_progress_close=Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬ # tooltips) toggle_sidebar.title=Õ“Õ¸ÕÕ¡Ö€Õ¯Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ toggle_sidebar_notification.title=Õ“Õ¸ÕÕ¡Ö€Õ¯Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ (ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ®/Õ¯ÖÕ¸Ö€Õ¤) +toggle_sidebar_notification2.title=Õ“Õ¸ÕÕ¡Õ¶Õ»Õ¡Õ¿Õ¥Õ¬ Õ¯Õ¸Õ²Õ´Õ¶Õ¡Õ½Õ«Ö‚Õ¶Õ¨ (ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ¸Ö‚Õ²Õ©Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ®/Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€/Õ·Õ¥Ö€Õ¿Õ¥Ö€) toggle_sidebar_label=Õ“Õ¸ÕÕ¡Ö€Õ¯Õ¥Õ¬ Õ¯Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨ document_outline.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ®Õ¨ (Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Õ½Õ¥Õ²Õ´Õ§Ö„Õ Õ´Õ«Õ¡Ö‚Õ¸Ö€Õ¶Õ¥Ö€Õ¨ Õ¨Õ¶Õ¤Õ¡Ö€Õ±Õ¡Õ¯Õ¥Õ¬Õ¸Ö‚/Õ¯Õ¸Õ®Õ¯Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€) document_outline_label=Õ“Õ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ« Õ¸Ö‚Ö€Õ¸Ö‚Õ¡Õ£Õ«Õ® attachments.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ¨ attachments_label=Ô¿ÖÕ¸Ö€Õ¤Õ¶Õ¥Ö€ +layers.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ·Õ¥Ö€Õ¿Õ¥Ö€Õ¨ (Õ¯Ö€Õ¯Õ¶Õ¡Õ°ÕºÕ¥Õ¬ Õ¾Õ¥Ö€Õ¡Õ¯Õ¡ÕµÕ¥Õ¬Õ¸Ö‚ Õ¢Õ¸Õ¬Õ¸Ö€ Õ·Õ¥Ö€Õ¿Õ¥Ö€Õ¨ Õ½Õ¯Õ¦Õ¢Õ¶Õ¡Õ¤Õ«Ö€ Õ¾Õ«Õ³Õ¡Õ¯Õ«) +layers_label=Õ‡Õ¥Ö€Õ¿Õ¥Ö€ thumbs.title=Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ´Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ thumbs_label=Õ„Õ¡Õ¶Ö€Õ¡ÕºÕ¡Õ¿Õ¯Õ¥Ö€ findbar.title=Ô³Õ¿Õ¶Õ¥Õ¬ ÖƒÕ¡Õ½Õ¿Õ¡Õ©Õ²Õ©Õ¸Ö‚Õ´ findbar_label=ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ +additional_layers=Ô¼Ö€Õ¡ÖÕ¸Ö‚ÖÕ«Õ¹ Õ·Õ¥Ö€Õ¿Õ¥Ö€ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Ô·Õ» {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -212,9 +217,9 @@ error_line=ÕÕ¸Õ²Õ¨. {{line}} rendering_error=ÕÕÕ¡Õ¬ Õ§ Õ¿Õ¥Õ²Õ« Õ¸Ö‚Õ¶Õ¥ÖÕ¥Õ¬ Õ§Õ»Õ« Õ´Õ¥Õ¯Õ¶Õ¡Õ¢Õ¡Õ¶Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ # Predefined zoom values -page_scale_width=Ô·Õ»Õ« Õ¬Õ¡ÕµÕ¶Ö„Õ¨ +page_scale_width=Ô·Õ»Õ« Õ¬Õ¡ÕµÕ¶Õ¸Ö‚Õ©Õ«Ö‚Õ¶ page_scale_fit=Õ€Õ¡Ö€Õ´Õ¡Ö€Õ¥ÖÕ¶Õ¥Õ¬ Õ§Õ»Õ¨ -page_scale_auto=Ô»Õ¶Ö„Õ¶Õ¡Õ·ÕÕ¡Õ¿ ÕÕ¸Õ·Õ¸Ö€Õ¡ÖÕ¸Ö‚Õ´ +page_scale_auto=Ô»Õ¶Ö„Õ¶Õ¡Õ·ÕÕ¡Õ¿ Õ¹Õ¡ÖƒÕ¡ÖƒÕ¸ÕÕ¸Ö‚Õ´ page_scale_actual=Ô»Ö€Õ¡Õ¯Õ¡Õ¶ Õ¹Õ¡ÖƒÕ¨ # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. diff --git a/third-party/pdfjs/web/locale/ia/viewer.properties b/third-party/pdfjs/web/locale/ia/viewer.properties index 167547adc..a1d7f4281 100644 --- a/third-party/pdfjs/web/locale/ia/viewer.properties +++ b/third-party/pdfjs/web/locale/ia/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancellar # tooltips) toggle_sidebar.title=Monstrar/celar le barra lateral toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos) +toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine structura/attachamentos/stratos) toggle_sidebar_label=Monstrar/celar le barra lateral document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos) document_outline_label=Schema del documento attachments.title=Monstrar le annexos attachments_label=Annexos +layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stato predefinite) +layers_label=Stratos thumbs.title=Monstrar le vignettes thumbs_label=Vignettes findbar.title=Cercar in le documento findbar_label=Cercar +additional_layers=Altere stratos # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -213,7 +217,7 @@ error_line=Linea: {{line}} rendering_error=Un error occurreva durante que on processava le pagina. # Predefined zoom values -page_scale_width=Largessa pagina plen +page_scale_width=Plen largor del pagina page_scale_fit=Pagina integre page_scale_auto=Zoom automatic page_scale_actual=Dimension actual diff --git a/third-party/pdfjs/web/locale/id/viewer.properties b/third-party/pdfjs/web/locale/id/viewer.properties index b9b9a730b..3583317f6 100644 --- a/third-party/pdfjs/web/locale/id/viewer.properties +++ b/third-party/pdfjs/web/locale/id/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Batalkan # tooltips) toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran) +toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan) toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item) document_outline_label=Kerangka Dokumen attachments.title=Tampilkan Lampiran attachments_label=Lampiran +layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke keadaan baku) +layers_label=Lapisan thumbs.title=Tampilkan Miniatur thumbs_label=Miniatur findbar.title=Temukan di Dokumen findbar_label=Temukan +additional_layers=Lapisan Tambahan # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Laman {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/it/viewer.properties b/third-party/pdfjs/web/locale/it/viewer.properties index 87c4050d8..95c40036a 100644 --- a/third-party/pdfjs/web/locale/it/viewer.properties +++ b/third-party/pdfjs/web/locale/it/viewer.properties @@ -114,16 +114,22 @@ print_progress_close = Annulla toggle_sidebar.title = Attiva/disattiva barra laterale toggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati) +toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene struttura/allegati/livelli) toggle_sidebar_label = Attiva/disattiva barra laterale document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere tutti gli elementi) document_outline_label = Struttura documento attachments.title = Visualizza allegati attachments_label = Allegati +layers.title = Visualizza livelli (doppio clic per ripristinare tutti i livelli allo stato predefinito) +layers_label = Livelli thumbs.title = Mostra le miniature thumbs_label = Miniature +current_outline_item.title = Trova elemento struttura corrente +current_outline_item_label = Elemento struttura corrente findbar.title = Trova nel documento findbar_label = Trova +additional_layers = Livelli aggiuntivi page_canvas = Pagina {{page}} thumb_page_title = Pagina {{page}} thumb_page_canvas = Miniatura della pagina {{page}} diff --git a/third-party/pdfjs/web/locale/ja/viewer.properties b/third-party/pdfjs/web/locale/ja/viewer.properties index 95732a07f..0ea2acda6 100644 --- a/third-party/pdfjs/web/locale/ja/viewer.properties +++ b/third-party/pdfjs/web/locale/ja/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=ã‚ャンセル # tooltips) toggle_sidebar.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ toggle_sidebar_notification.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ (文書ã«å«ã¾ã‚Œã‚‹ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ / 添付) +toggle_sidebar_notification2.title=サイドãƒãƒ¼è¡¨ç¤ºã‚’切り替ãˆã¾ã™ (文書ã«å«ã¾ã‚Œã‚‹ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ / 添付 / レイヤー) toggle_sidebar_label=サイドãƒãƒ¼ã®åˆ‡ã‚Šæ›¿ãˆ document_outline.title=文書ã®ç›®æ¬¡ã‚’表示ã—ã¾ã™ (ダブルクリックã§é …目を開閉ã—ã¾ã™) document_outline_label=文書ã®ç›®æ¬¡ attachments.title=添付ファイルを表示ã—ã¾ã™ attachments_label=添付ファイル +layers.title=レイヤーを表示ã—ã¾ã™ (ダブルクリックã§ã™ã¹ã¦ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ãŒåˆæœŸçŠ¶æ…‹ã«æˆ»ã‚Šã¾ã™) +layers_label=レイヤー thumbs.title=縮å°ç‰ˆã‚’表示ã—ã¾ã™ thumbs_label=縮å°ç‰ˆ findbar.title=文書内を検索ã—ã¾ã™ findbar_label=検索 +additional_layers=è¿½åŠ ãƒ¬ã‚¤ãƒ¤ãƒ¼ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}} ページ # Thumbnails panel item (tooltip and alt text for images) @@ -245,4 +249,3 @@ password_cancel=ã‚ャンセル printing_not_supported=è¦å‘Š: ã“ã®ãƒ–ラウザーã§ã¯å°åˆ·ãŒå®Œå…¨ã«ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 printing_not_ready=è¦å‘Š: PDF ã‚’å°åˆ·ã™ã‚‹ãŸã‚ã®èªã¿è¾¼ã¿ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“。 web_fonts_disabled=ウェブフォントãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™: 埋ã‚è¾¼ã¾ã‚ŒãŸ PDF ã®ãƒ•ã‚©ãƒ³ãƒˆã‚’使用ã§ãã¾ã›ã‚“。 -document_colors_not_allowed=PDF 文書ã¯ã€ã‚¦ã‚§ãƒ–ページãŒæŒ‡å®šã—ãŸé…色を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: 'ウェブページãŒæŒ‡å®šã—ãŸé…色' ã¯ãƒ–ラウザーã§ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚ diff --git a/third-party/pdfjs/web/locale/ka/viewer.properties b/third-party/pdfjs/web/locale/ka/viewer.properties index 86e91bbd1..0e9e592ad 100644 --- a/third-party/pdfjs/web/locale/ka/viewer.properties +++ b/third-party/pdfjs/web/locale/ka/viewer.properties @@ -91,18 +91,18 @@ document_properties_kb={{size_kb}} კბ ({{size_b}} ბáƒáƒ˜áƒ¢áƒ˜) # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} მბ ({{size_b}} ბáƒáƒ˜áƒ¢áƒ˜) document_properties_title=სáƒáƒ—áƒáƒ£áƒ ი: -document_properties_author=შემდგენი: +document_properties_author=შემქმნელი: document_properties_subject=თემáƒ: document_properties_keywords=სáƒáƒ™áƒ•áƒáƒœáƒ«áƒ სიტყვები: -document_properties_creation_date=შექმნის თáƒáƒ იღი: -document_properties_modification_date=ჩáƒáƒ¡áƒ¬áƒáƒ ების თáƒáƒ იღი: +document_properties_creation_date=შექმნის დრáƒ: +document_properties_modification_date=ჩáƒáƒ¡áƒ¬áƒáƒ ების დრáƒ: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=შემქმნელი: -document_properties_producer=PDF-შემქმნელი: +document_properties_creator=გáƒáƒ›áƒáƒ›áƒ¨áƒ•áƒ”ბი: +document_properties_producer=PDF-გáƒáƒ›áƒáƒ›áƒ¨áƒ•áƒ”ბი: document_properties_version=PDF-ვერსიáƒ: -document_properties_page_count=გვერდების რáƒáƒáƒ“ენáƒáƒ‘áƒ: +document_properties_page_count=გვერდები: document_properties_page_size=გვერდის ზáƒáƒ›áƒ: document_properties_page_size_unit_inches=დუიმი document_properties_page_size_unit_millimeters=მმ @@ -138,16 +138,20 @@ print_progress_close=გáƒáƒ£áƒ¥áƒ›áƒ”ბრ# tooltips) toggle_sidebar.title=გვერდითრზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნáƒ/დáƒáƒ›áƒáƒšáƒ•áƒ toggle_sidebar_notification.title=გვერდითრზáƒáƒšáƒ˜áƒ¡ ჩáƒáƒ თვáƒ/გáƒáƒ›áƒáƒ თვრ(დáƒáƒ™áƒ£áƒ›áƒ”ნტი შეიცáƒáƒ•áƒ¡ სáƒáƒ ჩევს/დáƒáƒœáƒáƒ თს) +toggle_sidebar_notification2.title=გვერდითი ზáƒáƒšáƒ˜áƒ¡ გáƒáƒ“áƒáƒ თვრ(áƒáƒ®áƒšáƒáƒ•áƒ¡ მáƒáƒ®áƒáƒ–ულáƒáƒ‘áƒ/დáƒáƒœáƒáƒ თი/ფენები) toggle_sidebar_label=გვერდითრზáƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ©áƒ”ნáƒ/დáƒáƒ›áƒáƒšáƒ•áƒ -document_outline.title=დáƒáƒ™áƒ£áƒ›áƒ”ნტის სáƒáƒ ჩევის ჩვენებრ(áƒáƒ ჯერდáƒáƒ¬áƒ™áƒáƒžáƒ”ბით ყველრელემენტის ჩáƒáƒ›áƒáƒ¨áƒšáƒ/áƒáƒ™áƒ”ცვáƒ) +document_outline.title=დáƒáƒ™áƒ£áƒ›áƒ”ნტის სáƒáƒ ჩევის ჩვენებრ(áƒáƒ მáƒáƒ’ი წკáƒáƒžáƒ˜áƒ— თითáƒáƒ”ულის ჩáƒáƒ›áƒáƒ¨áƒšáƒ/áƒáƒ™áƒ”ცვáƒ) document_outline_label=დáƒáƒ™áƒ£áƒ›áƒ”ნტის სáƒáƒ ჩევი attachments.title=დáƒáƒœáƒáƒ თების ჩვენებრattachments_label=დáƒáƒœáƒáƒ თები +layers.title=ფენების გáƒáƒ›áƒáƒ©áƒ”ნრ(áƒáƒ მáƒáƒ’ი წკáƒáƒžáƒ˜áƒ— ყველრფენის ნáƒáƒ’ულისხმევზე დáƒáƒ‘რუნებáƒ) +layers_label=ფენები thumbs.title=შეთვáƒáƒšáƒ˜áƒ”რებრthumbs_label=ესკიზები findbar.title=პáƒáƒ•áƒœáƒ დáƒáƒ™áƒ£áƒ›áƒ”ნტში findbar_label=ძიებრ+additional_layers=დáƒáƒ›áƒáƒ¢áƒ”ბითი ფენები # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=გვერდი {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/kab/viewer.properties b/third-party/pdfjs/web/locale/kab/viewer.properties index a6f07f169..f397bc9f4 100644 --- a/third-party/pdfjs/web/locale/kab/viewer.properties +++ b/third-party/pdfjs/web/locale/kab/viewer.properties @@ -39,7 +39,7 @@ open_file.title=Ldi Afaylu open_file_label=Ldi print.title=Siggez print_label=Siggez -download.title=Sider +download.title=Sader download_label=Azdam bookmark.title=Timeẓri tamirant (nÉ£el neÉ£ ldi É£ef usfaylu amaynut) bookmark_label=Askan amiran @@ -102,7 +102,7 @@ document_properties_date_string={{date}}, {{time}} document_properties_creator=Yerna-t: document_properties_producer=Afecku n uselket PDF: document_properties_version=Lqem PDF: -document_properties_page_count=Amá¸an n isebtar: +document_properties_page_count=Amá¸an n yisebtar: document_properties_page_size=Tuγzi n usebter: document_properties_page_size_unit_inches=deg document_properties_page_size_unit_millimeters=mm @@ -138,16 +138,20 @@ print_progress_close=Sefsex # tooltips) toggle_sidebar.title=Sken/Fer agalis adisan toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aÉ£awas/imeddayen) +toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aÉ£awas/ticeqqufin yeddan/tissiwin) toggle_sidebar_label=Sken/Fer agalis adisan document_outline.title=Sken isemli (Senned snat tikal i wesemÉ£er/Afneẓ n iferdisen meṛṛa) document_outline_label=IsÉ£alen n isebtar attachments.title=Sken ticeqqufin yeddan attachments_label=Ticeqqufin yeddan +layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin É£er waddad amezwer) +layers_label=Tissiwin thumbs.title=Sken tanfult. thumbs_label=Tinfulin findbar.title=Nadi deg isemli findbar_label=Nadi +additional_layers=Tissiwin-nniá¸en # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Asebter {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/kk/viewer.properties b/third-party/pdfjs/web/locale/kk/viewer.properties index afd679ac7..a2db99f5f 100644 --- a/third-party/pdfjs/web/locale/kk/viewer.properties +++ b/third-party/pdfjs/web/locale/kk/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Ð‘Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ # tooltips) toggle_sidebar.title=Бүйір панелін көрÑету/жаÑыру toggle_sidebar_notification.title=Бүйір панелін көрÑету/жаÑыру (құжатта құрылымы/Ñалынымдар бар) +toggle_sidebar_notification2.title=Бүйір панелін көрÑету/жаÑыру (құжатта құрылымы/Ñалынымдар/қабаттар бар) toggle_sidebar_label=Бүйір панелін көрÑету/жаÑыру document_outline.title=Құжат құрылымын көрÑету (барлық нәрÑелерді жазық қылу/жинау үшін Ò›Ð¾Ñ ÑˆÐµÑ€Ñ‚Ñƒ керек) document_outline_label=Құжат құрамаÑÑ‹ attachments.title=Салынымдарды көрÑету attachments_label=Салынымдар +layers.title=Қабаттарды көрÑету (барлық қабаттарды баÑтапқы күйге келтіру үшін екі рет шертіңіз) +layers_label=Қабаттар thumbs.title=Кіші көрініÑтерді көрÑету thumbs_label=Кіші көрініÑтер findbar.title=Құжаттан табу findbar_label=Табу +additional_layers=ҚоÑымша қабаттар # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Бет {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/km/viewer.properties b/third-party/pdfjs/web/locale/km/viewer.properties index 8615e8389..109de4b16 100644 --- a/third-party/pdfjs/web/locale/km/viewer.properties +++ b/third-party/pdfjs/web/locale/km/viewer.properties @@ -65,6 +65,8 @@ cursor_text_select_tool_label=ឧបករណáŸâ€‹áž‡áŸ’រើស​អážáŸ’áž cursor_hand_tool.title=បើក​ឧបករណáŸâ€‹ážŠáŸƒ cursor_hand_tool_label=ឧបករណáŸâ€‹ážŠáŸƒ + + # Document properties dialog box document_properties.title=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ document_properties_label=លក្ážážŽâ€‹ážŸáž˜áŸ’áž”ážáŸ’ážáž·â€‹áž¯áž€ážŸáž¶ážšâ€¦ @@ -89,6 +91,25 @@ document_properties_creator=អ្នក​បង្កើážáŸ– document_properties_producer=កម្មវិធី​បង្កើហPDF ៖ document_properties_version=កំណែ PDF ៖ document_properties_page_count=ចំនួន​ទំពáŸážšáŸ– +document_properties_page_size_unit_inches=អ៊ីញ +document_properties_page_size_unit_millimeters=មម +document_properties_page_size_orientation_portrait=បញ្ឈរ +document_properties_page_size_orientation_landscape=ផ្ážáŸáž€ +document_properties_page_size_name_a3=A3 +document_properties_page_size_name_a4=A4 +document_properties_page_size_name_letter=សំបុážáŸ’ážš +# LOCALIZATION NOTE (document_properties_page_size_dimension_string): +# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement and orientation, of the (current) page. +document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}}) +# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string): +# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by +# the size, respectively their unit of measurement, name, and orientation, of the (current) page. +document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) +# LOCALIZATION NOTE (document_properties_linearized): The linearization status of +# the document; usually called "Fast Web View" in English locales of Adobe software. +document_properties_linearized_yes=បាទ/ចាស +document_properties_linearized_no=ទ០document_properties_close=បិទ print_progress_message=កំពុង​រៀបចំ​ឯកសារ​សម្រាប់​បោះពុម្ព… @@ -112,6 +133,7 @@ thumbs_label=រួបភាព​ážáž¼áž…ៗ findbar.title=រក​នៅ​ក្នុង​ឯកសារ findbar_label=រក +# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. @@ -131,6 +153,14 @@ find_highlight=បន្លិច​ទាំងអស់ find_match_case_label=ករណី​ដំណូច find_reached_top=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„​ក្រោម ទៅ​ដល់​ážáž¶áž„​​លើ​នៃ​ឯកសារ find_reached_bottom=បាន​បន្ážâ€‹áž–ី​ážáž¶áž„លើ ទៅដល់​ចុង​​នៃ​ឯកសារ +# LOCALIZATION NOTE (find_match_count): The supported plural forms are +# [one|two|few|many|other], with [other] as the default value. +# "{{current}}" and "{{total}}" will be replaced by a number representing the +# index of the currently active find result, respectively a number representing +# the total number of matches in the document. +# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are +# [zero|one|two|few|many|other], with [other] as the default value. +# "{{limit}}" will be replaced by a numerical value. find_not_found=រក​មិន​ឃើញ​ពាក្យ ឬ​ឃ្លា # Error panel labels @@ -168,6 +198,9 @@ invalid_file_error=ឯកសារ PDF ážáž¼áž… ឬ​មិន​ážáŸ’ážšáž¹á missing_file_error=បាážáŸ‹â€‹áž¯áž€ážŸáž¶ážš PDF unexpected_response_error=ការ​ឆ្លើយ​ážáž˜â€‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“​មáŸâ€‹ážŠáŸ‚ល​មិន​បាន​រំពឹង។ +# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be +# replaced by the modification date, and time, of the annotation. + # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # "{{type}}" will be replaced with an annotation type from a list defined in # the PDF spec (32000-1:2008 Table 169 – Annotation types). diff --git a/third-party/pdfjs/web/locale/ko/viewer.properties b/third-party/pdfjs/web/locale/ko/viewer.properties index 727f8d5c9..c578f9109 100644 --- a/third-party/pdfjs/web/locale/ko/viewer.properties +++ b/third-party/pdfjs/web/locale/ko/viewer.properties @@ -69,14 +69,14 @@ scroll_vertical.title=세로 스í¬ë¡¤ 사용 scroll_vertical_label=세로 스í¬ë¡¤ scroll_horizontal.title=가로 스í¬ë¡¤ 사용 scroll_horizontal_label=가로 스í¬ë¡¤ -scroll_wrapped.title=ê°ì‹¼ 스í¬ë¡¤ 사용 -scroll_wrapped_label=ê°ì‹¼ 스í¬ë¡¤ +scroll_wrapped.title=래핑(ìžë™ 줄 바꿈) 스í¬ë¡¤ 사용 +scroll_wrapped_label=래핑 스í¬ë¡¤ -spread_none.title=펼ì³ì§„ 페ì´ì§€ë¥¼ 합치지 ì•ŠìŒ +spread_none.title=í•œ 페ì´ì§€ 보기 spread_none_label=펼ì³ì§ ì—†ìŒ -spread_odd.title=홀수 페ì´ì§€ë¡œ 시작하게 펼ì³ì§„ 페ì´ì§€ 합침 +spread_odd.title=홀수 페ì´ì§€ë¡œ 시작하는 ë‘ íŽ˜ì´ì§€ 보기 spread_odd_label=홀수 펼ì³ì§ -spread_even.title=ì§ìˆ˜ 페ì´ì§€ë¡œ 시작하게 펼ì³ì§„ 페ì´ì§€ 합침 +spread_even.title=ì§ìˆ˜ 페ì´ì§€ë¡œ 시작하는 ë‘ íŽ˜ì´ì§€ 보기 spread_even_label=ì§ìˆ˜ 펼ì³ì§ # Document properties dialog box @@ -138,16 +138,22 @@ print_progress_close=취소 # tooltips) toggle_sidebar.title=íƒìƒ‰ì°½ 표시/숨기기 toggle_sidebar_notification.title=íƒìƒ‰ì°½ 표시/숨기기 (ë¬¸ì„œì— ì•„ì›ƒë¼ì¸/ì²¨ë¶€íŒŒì¼ í¬í•¨ë¨) +toggle_sidebar_notification2.title=íƒìƒ‰ì°½ 표시/숨기기 (ë¬¸ì„œì— ì•„ì›ƒë¼ì¸/첨부파ì¼/ë ˆì´ì–´ í¬í•¨ë¨) toggle_sidebar_label=íƒìƒ‰ì°½ 표시/숨기기 -document_outline.title=문서 아웃ë¼ì¸ 보기(ë”블 í´ë¦í•´ì„œ ëª¨ë“ í•ëª© 펼치기/ì ‘ê¸°) +document_outline.title=문서 아웃ë¼ì¸ 보기 (ë”블 í´ë¦í•´ì„œ ëª¨ë“ í•ëª© 펼치기/ì ‘ê¸°) document_outline_label=문서 아웃ë¼ì¸ attachments.title=ì²¨ë¶€íŒŒì¼ ë³´ê¸° attachments_label=ì²¨ë¶€íŒŒì¼ +layers.title=ë ˆì´ì–´ 보기 (ë”블 í´ë¦í•´ì„œ ëª¨ë“ ë ˆì´ì–´ë¥¼ 기본 ìƒíƒœë¡œ ìž¬ì„¤ì •) +layers_label=ë ˆì´ì–´ thumbs.title=미리보기 thumbs_label=미리보기 +current_outline_item.title=현재 아웃ë¼ì¸ í•ëª© 찾기 +current_outline_item_label=현재 아웃ë¼ì¸ í•ëª© findbar.title=검색 findbar_label=검색 +additional_layers=추가 ë ˆì´ì–´ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}} 페ì´ì§€ # Thumbnails panel item (tooltip and alt text for images) @@ -213,10 +219,10 @@ error_line=줄 번호: {{line}} rendering_error=페ì´ì§€ë¥¼ ë Œë”ë§í•˜ëŠ” ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. # Predefined zoom values -page_scale_width=페ì´ì§€ ë„ˆë¹„ì— ë§žì¶¤ -page_scale_fit=페ì´ì§€ì— 맞춤 -page_scale_auto=ìžë™ 맞춤 -page_scale_actual=ì‹¤ì œ í¬ê¸°ì— 맞춤 +page_scale_width=페ì´ì§€ ë„ˆë¹„ì— ë§žì¶”ê¸° +page_scale_fit=페ì´ì§€ì— 맞추기 +page_scale_auto=ìžë™ +page_scale_actual=ì‹¤ì œ í¬ê¸° # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # numerical scale value. page_scale_percent={{scale}}% diff --git a/third-party/pdfjs/web/locale/lt/viewer.properties b/third-party/pdfjs/web/locale/lt/viewer.properties index daa76787c..017a36ba2 100644 --- a/third-party/pdfjs/web/locale/lt/viewer.properties +++ b/third-party/pdfjs/web/locale/lt/viewer.properties @@ -72,12 +72,12 @@ scroll_horizontal_label=Horizontalus slinkimas scroll_wrapped.title=Naudoti iÅ¡klotÄ… slinkimÄ… scroll_wrapped_label=IÅ¡klotas slinkimas -spread_none.title=Nesujungti puslapių sklaidų -spread_none_label=Be sklaidų -spread_odd.title=Sujungti puslapių sklaidas pradedant nelyginiais puslapiais -spread_odd_label=NelyginÄ—s sklaidos -spread_even.title=Sujungti puslapių sklaidas pradedant lyginiais puslapiais -spread_even_label=LyginÄ—s sklaidos +spread_none.title=Nejungti puslapių į dvilapius +spread_none_label=Be dvilapių +spread_odd.title=Sujungti į dvilapius pradedant nelyginiais puslapiais +spread_odd_label=Nelyginiai dvilapiai +spread_even.title=Sujungti į dvilapius pradedant lyginiais puslapiais +spread_even_label=Lyginiai dvilapiai # Document properties dialog box document_properties.title=Dokumento savybÄ—s… @@ -138,16 +138,20 @@ print_progress_close=Atsisakyti # tooltips) toggle_sidebar.title=Rodyti / slÄ—pti Å¡oninį polangį toggle_sidebar_notification.title=ParankinÄ— (dokumentas turi struktÅ«rÄ… / priedų) +toggle_sidebar_notification2.title=ParankinÄ— (dokumentas turi struktÅ«rÄ… / priedų / sluoksnių) toggle_sidebar_label=Å oninis polangis document_outline.title=Rodyti dokumento struktÅ«rÄ… (spustelÄ—kite dukart norÄ—dami iÅ¡plÄ—sti/suskleisti visus elementus) document_outline_label=Dokumento struktÅ«ra attachments.title=Rodyti priedus attachments_label=Priedai +layers.title=Rodyti sluoksnius (spustelÄ—kite dukart, norÄ—dami atstatyti visus sluoksnius į numatytÄ…jÄ… bÅ«senÄ…) +layers_label=Sluoksniai thumbs.title=Rodyti puslapių miniatiÅ«ras thumbs_label=MiniatiÅ«ros findbar.title=IeÅ¡koti dokumente findbar_label=Rasti +additional_layers=Papildomi sluoksniai # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}} puslapis # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/nb-NO/viewer.properties b/third-party/pdfjs/web/locale/nb-NO/viewer.properties index 47b209048..1d39aaa86 100644 --- a/third-party/pdfjs/web/locale/nb-NO/viewer.properties +++ b/third-party/pdfjs/web/locale/nb-NO/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Avbryt # tooltips) toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg) +toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag) toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for Ã¥ utvide/skjule alle elementer) document_outline_label=Dokumentdisposisjon attachments.title=Vis vedlegg attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for Ã¥ tilbakestille alle lag til standardtilstand) +layers_label=Lag thumbs.title=Vis miniatyrbilde thumbs_label=Miniatyrbilde +current_outline_item.title=Finn gjeldende disposisjonselement +current_outline_item_label=Gjeldende disposisjonselement findbar.title=Finn i dokumentet findbar_label=Finn +additional_layers=Ytterligere lag # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/nl/viewer.properties b/third-party/pdfjs/web/locale/nl/viewer.properties index b37f1abf5..0491255d8 100644 --- a/third-party/pdfjs/web/locale/nl/viewer.properties +++ b/third-party/pdfjs/web/locale/nl/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=Annuleren # tooltips) toggle_sidebar.title=Zijbalk in-/uitschakelen toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen) +toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen) toggle_sidebar_label=Zijbalk in-/uitschakelen document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen) document_outline_label=Documentoverzicht attachments.title=Bijlagen tonen attachments_label=Bijlagen +layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug te zetten) +layers_label=Lagen thumbs.title=Miniaturen tonen thumbs_label=Miniaturen +current_outline_item.title=Huidige positie in documentoverzicht selecteren +current_outline_item_label=Huidige positie in documentoverzicht findbar.title=Zoeken in document findbar_label=Zoeken +additional_layers=Aanvullende lagen # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/nn-NO/viewer.properties b/third-party/pdfjs/web/locale/nn-NO/viewer.properties index c9bac1010..43dff5a31 100644 --- a/third-party/pdfjs/web/locale/nn-NO/viewer.properties +++ b/third-party/pdfjs/web/locale/nn-NO/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Avbryt # tooltips) toggle_sidebar.title=SlÃ¥ av/pÃ¥ sidestolpe toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg) +toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag) toggle_sidebar_label=SlÃ¥ av/pÃ¥ sidestolpe document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for Ã¥ utvide/gøyme alle elementa) document_outline_label=Dokumentdisposisjon attachments.title=Vis vedlegg attachments_label=Vedlegg +layers.title=Vis lag (dobbeltklikk for Ã¥ tilbakestille alle lag til standardtilstand) +layers_label=Lag thumbs.title=Vis miniatyrbilde thumbs_label=Miniatyrbilde findbar.title=Finn i dokumentet findbar_label=Finn +additional_layers=Ytterlegare lag # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Side {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/oc/viewer.properties b/third-party/pdfjs/web/locale/oc/viewer.properties index b1c6a3a0c..c7d4884be 100644 --- a/third-party/pdfjs/web/locale/oc/viewer.properties +++ b/third-party/pdfjs/web/locale/oc/viewer.properties @@ -106,7 +106,7 @@ document_properties_page_count=Nombre de paginas : document_properties_page_size=Talha de la pagina : document_properties_page_size_unit_inches=in document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=retrait +document_properties_page_size_orientation_portrait=retrach document_properties_page_size_orientation_landscape=païsatge document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 @@ -138,16 +138,20 @@ print_progress_close=Anullar # tooltips) toggle_sidebar.title=Afichar/amagar lo panèl lateral toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas) +toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas/calques) toggle_sidebar_label=Afichar/amagar lo panèl lateral document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los elements) document_outline_label=Marcapaginas del document attachments.title=Visualizar las pèças juntas attachments_label=Pèças juntas +layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calques a l’estat per defaut) +layers_label=Calques thumbs.title=Afichar las vinhetas thumbs_label=Vinhetas findbar.title=Cercar dins lo document findbar_label=Recercar +additional_layers=Calques suplementaris # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -210,7 +214,7 @@ error_stack=Pila : {{stack}} error_file=Fichièr : {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linha : {{line}} -rendering_error=Una error s'es produita pendent l'afichatge de la pagina. +rendering_error=Una error s'es producha pendent l'afichatge de la pagina. # Predefined zoom values page_scale_width=Largor plena @@ -223,7 +227,7 @@ page_scale_percent={{scale}}% # Loading indicator messages loading_error_indicator=Error -loading_error=Una error s'es produita pendent lo cargament del fichièr PDF. +loading_error=Una error s'es producha pendent lo cargament del fichièr PDF. invalid_file_error=Fichièr PDF invalid o corromput. missing_file_error=Fichièr PDF mancant. unexpected_response_error=Responsa de servidor imprevista. diff --git a/third-party/pdfjs/web/locale/pa-IN/viewer.properties b/third-party/pdfjs/web/locale/pa-IN/viewer.properties index 0ab56319e..0bfd2a778 100644 --- a/third-party/pdfjs/web/locale/pa-IN/viewer.properties +++ b/third-party/pdfjs/web/locale/pa-IN/viewer.properties @@ -74,8 +74,8 @@ scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ -spread_odd.title=ਅਜੀਬ-ਨੰਬਰ ਵਾਲੇ ਪੰਨਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਪੰਨੇ ਸਪਰਸ਼ਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ -spread_even.title=ਜਿਸਤ ਨੰਬਰ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ +spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼à©à¨°à©‚ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ # Document properties dialog box document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ @@ -136,16 +136,20 @@ print_progress_close=ਰੱਦ ਕਰੋ # tooltips) toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ) +toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ) toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) document_outline_label=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ attachments_label=ਅਟੈਚਮੈਂਟਾਂ +layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ ਨੂੰ ਮੂਲ ਹਾਲਤ ਉੱਤੇ ਮà©à©œ-ਸੈੱਟ ਕਰਨ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ) +layers_label=ਪਰਤਾਂ thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ thumbs_label=ਥੰਮਨੇਲ findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱà¨à©‹ findbar_label=ਲੱà¨à©‹ +additional_layers=ਵਾਧੂ ਪਰਤਾਂ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=ਸਫ਼ਾ {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/pl/viewer.properties b/third-party/pdfjs/web/locale/pl/viewer.properties index cf170c8d2..e436f1f3f 100644 --- a/third-party/pdfjs/web/locale/pl/viewer.properties +++ b/third-party/pdfjs/web/locale/pl/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Anuluj # tooltips) toggle_sidebar.title=PrzeÅ‚Ä…cz panel boczny toggle_sidebar_notification.title=PrzeÅ‚Ä…cz panel boczny (dokument zawiera konspekt/zaÅ‚Ä…czniki) +toggle_sidebar_notification2.title=PrzeÅ‚Ä…cz panel boczny (dokument zawiera konspekt/zaÅ‚Ä…czniki/warstwy) toggle_sidebar_label=PrzeÅ‚Ä…cz panel boczny document_outline.title=Konspekt dokumentu (podwójne klikniÄ™cie rozwija lub zwija wszystkie pozycje) document_outline_label=Konspekt dokumentu attachments.title=ZaÅ‚Ä…czniki attachments_label=ZaÅ‚Ä…czniki +layers.title=Warstwy (podwójne klikniÄ™cie przywraca wszystkie warstwy do stanu domyÅ›lnego) +layers_label=Warstwy thumbs.title=Miniatury thumbs_label=Miniatury findbar.title=Znajdź w dokumencie findbar_label=Znajdź +additional_layers=Dodatkowe warstwy # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas={{page}}. strona # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/pt-BR/viewer.properties b/third-party/pdfjs/web/locale/pt-BR/viewer.properties index ca592b8f1..a1a5e357b 100644 --- a/third-party/pdfjs/web/locale/pt-BR/viewer.properties +++ b/third-party/pdfjs/web/locale/pt-BR/viewer.properties @@ -39,8 +39,8 @@ open_file.title=Abrir arquivo open_file_label=Abrir print.title=Imprimir print_label=Imprimir -download.title=Download -download_label=Download +download.title=Baixar +download_label=Baixar bookmark.title=Visão atual (copiar ou abrir em nova janela) bookmark_label=Visualização atual @@ -122,7 +122,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) # LOCALIZATION NOTE (document_properties_linearized): The linearization status of # the document; usually called "Fast Web View" in English locales of Adobe software. -document_properties_linearized=Visualização rápida da Web: +document_properties_linearized=Exibição rápida da web: document_properties_linearized_yes=Sim document_properties_linearized_no=Não document_properties_close=Fechar @@ -136,18 +136,24 @@ print_progress_close=Cancelar # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Alternar painel -toggle_sidebar_notification.title=Alternar o painel (documento contém marcadores e anexos) -toggle_sidebar_label=Alternar painel -document_outline.title=Mostrar a estrutura do documento (duplo-clique para expandir/recolher todos os Ãtens) +toggle_sidebar.title=Exibir/ocultar painel +toggle_sidebar_notification.title=Exibir/ocultar o painel (documento contém estrutura/anexos) +toggle_sidebar_notification2.title=Exibir/ocultar o painel (documento contém estrutura/anexos/camadas) +toggle_sidebar_label=Exibir/ocultar painel +document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os itens) document_outline_label=Estrutura do documento attachments.title=Mostrar anexos attachments_label=Anexos +layers.title=Exibir camadas (duplo-clique para redefinir todas as camadas ao estado predefinido) +layers_label=Camadas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas +current_outline_item.title=Encontrar item atual da estrutura +current_outline_item_label=Item atual da estrutura findbar.title=Procurar no documento findbar_label=Procurar +additional_layers=Camadas adicionais # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/pt-PT/viewer.properties b/third-party/pdfjs/web/locale/pt-PT/viewer.properties index 57f481416..de11bb5a2 100644 --- a/third-party/pdfjs/web/locale/pt-PT/viewer.properties +++ b/third-party/pdfjs/web/locale/pt-PT/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Cancelar # tooltips) toggle_sidebar.title=Alternar barra lateral toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos) +toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas) toggle_sidebar_label=Alternar barra lateral document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) document_outline_label=Esquema do documento attachments.title=Mostrar anexos attachments_label=Anexos +layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para o estado predefinido) +layers_label=Camadas thumbs.title=Mostrar miniaturas thumbs_label=Miniaturas findbar.title=Localizar em documento findbar_label=Localizar +additional_layers=Camadas adicionais # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Página {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/rm/viewer.properties b/third-party/pdfjs/web/locale/rm/viewer.properties index 8c8cab892..f63af0f07 100644 --- a/third-party/pdfjs/web/locale/rm/viewer.properties +++ b/third-party/pdfjs/web/locale/rm/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Interrumper # tooltips) toggle_sidebar.title=Activar/deactivar la trav laterala toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas) +toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal document/agiuntas/nivels) toggle_sidebar_label=Activar/deactivar la trav laterala document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils elements) document_outline_label=Structura dal document attachments.title=Mussar agiuntas attachments_label=Agiuntas +layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard da tut ils nivels) +layers_label=Nivels thumbs.title=Mussar las miniaturas thumbs_label=Miniaturas findbar.title=Tschertgar en il document findbar_label=Tschertgar +additional_layers=Nivels supplementars # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Pagina {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/ru/viewer.properties b/third-party/pdfjs/web/locale/ru/viewer.properties index dd4ee4810..25e439013 100644 --- a/third-party/pdfjs/web/locale/ru/viewer.properties +++ b/third-party/pdfjs/web/locale/ru/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Отмена # tooltips) toggle_sidebar.title=Показать/Ñкрыть боковую панель toggle_sidebar_notification.title=Показать/Ñкрыть боковую панель (документ имеет Ñодержание/вложениÑ) +toggle_sidebar_notification2.title=Показать/Ñкрыть боковую панель (документ имеет Ñодержание/вложениÑ/Ñлои) toggle_sidebar_label=Показать/Ñкрыть боковую панель document_outline.title=Показать Ñодержание документа (двойной щелчок, чтобы развернуть/Ñвернуть вÑе Ñлементы) document_outline_label=Содержание документа attachments.title=Показать Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ attachments_label=Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ +layers.title=Показать Ñлои (дважды щёлкните, чтобы ÑброÑить вÑе Ñлои к ÑоÑтоÑнию по умолчанию) +layers_label=Слои thumbs.title=Показать миниатюры thumbs_label=Миниатюры findbar.title=Ðайти в документе findbar_label=Ðайти +additional_layers=Дополнительные Ñлои # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Страница {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -244,4 +248,4 @@ password_cancel=Отмена printing_not_supported=Предупреждение: Ð’ Ñтом браузере не полноÑтью поддерживаетÑÑ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ. printing_not_ready=Предупреждение: PDF не полноÑтью загружен Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸. -web_fonts_disabled=Веб-шрифты отключены: невозможно иÑпользовать вÑтроенные PDF-шрифты. +web_fonts_disabled=Веб-шрифты отключены: не удалоÑÑŒ задейÑтвовать вÑтроенные PDF-шрифты. diff --git a/third-party/pdfjs/web/locale/sk/viewer.properties b/third-party/pdfjs/web/locale/sk/viewer.properties index d86d77cfa..888303ec4 100644 --- a/third-party/pdfjs/web/locale/sk/viewer.properties +++ b/third-party/pdfjs/web/locale/sk/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=ZruÅ¡iÅ¥ # tooltips) toggle_sidebar.title=Prepnúť boÄný panel toggle_sidebar_notification.title=Prepnúť boÄný panel (dokument obsahuje osnovu/prÃlohy) +toggle_sidebar_notification2.title=Prepnúť boÄný panel (dokument obsahuje osnovu/prÃlohy/vrstvy) toggle_sidebar_label=Prepnúť boÄný panel document_outline.title=ZobraziÅ¥ osnovu dokumentu (dvojitým kliknutÃm rozbalÃte/zbalÃte vÅ¡etky položky) document_outline_label=Osnova dokumentu attachments.title=ZobraziÅ¥ prÃlohy attachments_label=PrÃlohy +layers.title=ZobraziÅ¥ vrstvy (dvojitým kliknutÃm uvediete vÅ¡etky vrstvy do pôvodného stavu) +layers_label=Vrstvy thumbs.title=ZobraziÅ¥ miniatúry thumbs_label=Miniatúry findbar.title=HľadaÅ¥ v dokumente findbar_label=HľadaÅ¥ +additional_layers=ÄŽalÅ¡ie vrstvy # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Strana {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/sl/viewer.properties b/third-party/pdfjs/web/locale/sl/viewer.properties index 25a5e9c50..274d96235 100644 --- a/third-party/pdfjs/web/locale/sl/viewer.properties +++ b/third-party/pdfjs/web/locale/sl/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=PrekliÄi # tooltips) toggle_sidebar.title=Preklopi stransko vrstico toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke) +toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti) toggle_sidebar_label=Preklopi stransko vrstico document_outline.title=Prikaži oris dokumenta (dvokliknite za razÅ¡iritev/strnitev vseh predmetov) document_outline_label=Oris dokumenta attachments.title=Prikaži priponke attachments_label=Priponke +layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzeto stanje) +layers_label=Plasti thumbs.title=Prikaži sliÄice thumbs_label=SliÄice findbar.title=Iskanje po dokumentu findbar_label=Najdi +additional_layers=Dodatne plasti # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Stran {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/sq/viewer.properties b/third-party/pdfjs/web/locale/sq/viewer.properties index f0710af5f..516cb96c5 100644 --- a/third-party/pdfjs/web/locale/sq/viewer.properties +++ b/third-party/pdfjs/web/locale/sq/viewer.properties @@ -131,16 +131,20 @@ print_progress_close=Anuloje # tooltips) toggle_sidebar.title=Shfaqni/Fshihni Anështyllën toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje) +toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa) toggle_sidebar_label=Shfaq/Fshih Anështyllën document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët) document_outline_label=Përvijim Dokumenti attachments.title=Shfaqni Bashkëngjitje attachments_label=Bashkëngjitje +layers.title=Shfaq Shtresa (dyklikoni që të rikthehen krejt shtresat në gjendjen e tyre parazgjedhje) +layers_label=Shtresa thumbs.title=Shfaqni Miniatura thumbs_label=Miniatura findbar.title=Gjeni në Dokument findbar_label=Gjej +additional_layers=Shtresa Shtesë # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Faqja {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/sr/viewer.properties b/third-party/pdfjs/web/locale/sr/viewer.properties index 8c4e92411..edcf7ba15 100644 --- a/third-party/pdfjs/web/locale/sr/viewer.properties +++ b/third-party/pdfjs/web/locale/sr/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Откажи # tooltips) toggle_sidebar.title=Прикажи додатну палету toggle_sidebar_notification.title=Прикажи додатну траку (докуменат Ñадржи оквире/прилоге) +toggle_sidebar_notification2.title=Прикажи/Ñакриј бочну траку (документ Ñадржи контуру/прилоге/Ñлојеве) toggle_sidebar_label=Прикажи додатну палету document_outline.title=Прикажи контуру документа (дупли клик за проширење/Ñкупљање елемената) document_outline_label=Контура документа attachments.title=Прикажи прилоге attachments_label=Прилози +layers.title=Прикажи Ñлојеве (дупли клик за враћање Ñвих Ñлојева у подразумевано Ñтање) +layers_label=Слојеви thumbs.title=Прикажи Ñличице thumbs_label=Сличице findbar.title=Пронађи у документу findbar_label=Пронађи +additional_layers=Додатни Ñлојеви # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Страница {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/sv-SE/viewer.properties b/third-party/pdfjs/web/locale/sv-SE/viewer.properties index 7c75281c3..57f2cc2ad 100644 --- a/third-party/pdfjs/web/locale/sv-SE/viewer.properties +++ b/third-party/pdfjs/web/locale/sv-SE/viewer.properties @@ -137,16 +137,19 @@ print_progress_close=Avbryt # (the _label strings are alt text for the buttons, the .title strings are # tooltips) toggle_sidebar.title=Visa/dölj sidofält -toggle_sidebar_notification2.title=Visa/dölj sidofält (dokument innehÃ¥ller översikt/bilagor/lager) +toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehÃ¥ller översikt/bilagor) +toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehÃ¥ller dokumentstruktur/bilagor/lager) toggle_sidebar_label=Visa/dölj sidofält document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt) document_outline_label=Dokumentöversikt attachments.title=Visa Bilagor attachments_label=Bilagor -layers.title=Visa lager (dubbelklicka för att Ã¥terställa alla lager till ursrungligt läge) +layers.title=Visa lager (dubbelklicka för att Ã¥terställa alla lager till standardläge) layers_label=Lager thumbs.title=Visa miniatyrer thumbs_label=Miniatyrer +current_outline_item.title=Hitta aktuellt dispositionsobjekt +current_outline_item_label=Aktuellt dispositionsobjekt findbar.title=Sök i dokument findbar_label=Sök diff --git a/third-party/pdfjs/web/locale/szl/viewer.properties b/third-party/pdfjs/web/locale/szl/viewer.properties index 282c59509..80a5e6bda 100644 --- a/third-party/pdfjs/web/locale/szl/viewer.properties +++ b/third-party/pdfjs/web/locale/szl/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Pociep # tooltips) toggle_sidebar.title=PrzeÅ‚Åncz posek na rancie toggle_sidebar_notification.title=PrzeÅ‚Åncz posek na rancie (dokumynt mo struktura/przidowki) +toggle_sidebar_notification2.title=PrzeÅ‚Åncz posek na rancie (dokumynt mo struktura/przidowki/warstwy) toggle_sidebar_label=PrzeÅ‚Åncz posek na rancie document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynty) document_outline_label=Struktura dokumyntu attachments.title=Pokoż przidowki attachments_label=Przidowki +layers.title=Pokoż warstwy (tuplowane klikniyncie resetuje wszyskie warstwy do bazowego stanu) +layers_label=Warstwy thumbs.title=Pokoż miniatury thumbs_label=Miniatury findbar.title=Znojdź w dokumyncie findbar_label=Znojdź +additional_layers=Nadbytnie warstwy # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=StrÅna {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/te/viewer.properties b/third-party/pdfjs/web/locale/te/viewer.properties index 498b64c8d..6839138b1 100644 --- a/third-party/pdfjs/web/locale/te/viewer.properties +++ b/third-party/pdfjs/web/locale/te/viewer.properties @@ -130,11 +130,15 @@ document_outline.title=పతà±à°°à°®à± రూపమౠచూపించౠdocument_outline_label=పతà±à°°à°®à± à°…à°µà±à°Ÿà±â€Œà°²à±ˆà°¨à± attachments.title=à°…à°¨à±à°¬à°‚ధాలౠచూపౠattachments_label=à°…à°¨à±à°¬à°‚ధాలౠ+layers_label=పొరలౠthumbs.title=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± చూపౠthumbs_label=థంబà±â€Œà°¨à±ˆà°²à±à°¸à± findbar.title=పతà±à°°à°®à±à°²à±‹ à°•à°¨à±à°—ొనà±à°®à± findbar_label=à°•à°¨à±à°—ొనౠ+additional_layers=అదనపౠపొరలౠ+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. +page_canvas=పేజి {{page}} # Thumbnails panel item (tooltip and alt text for images) # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # number. diff --git a/third-party/pdfjs/web/locale/th/viewer.properties b/third-party/pdfjs/web/locale/th/viewer.properties index a4ef7db14..49642836c 100644 --- a/third-party/pdfjs/web/locale/th/viewer.properties +++ b/third-party/pdfjs/web/locale/th/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=ยà¸à¹€à¸¥à¸´à¸ # tooltips) toggle_sidebar.title=เปิด/ปิดà¹à¸–บข้าง toggle_sidebar_notification.title=เปิด/ปิดà¹à¸–บข้าง (เà¸à¸à¸ªà¸²à¸£à¸¡à¸µà¹€à¸„้าร่าง/ไฟล์à¹à¸™à¸š) +toggle_sidebar_notification2.title=เปิด/ปิดà¹à¸–บข้าง (เà¸à¸à¸ªà¸²à¸£à¸¡à¸µà¹€à¸„้าร่าง/ไฟล์à¹à¸™à¸š/เลเยà¸à¸£à¹Œ) toggle_sidebar_label=เปิด/ปิดà¹à¸–บข้าง document_outline.title=à¹à¸ªà¸”งเค้าร่างเà¸à¸à¸ªà¸²à¸£ (คลิà¸à¸ªà¸à¸‡à¸„รั้งเพื่à¸à¸‚ยาย/ยุบรายà¸à¸²à¸£à¸—ั้งหมด) document_outline_label=เค้าร่างเà¸à¸à¸ªà¸²à¸£ attachments.title=à¹à¸ªà¸”งไฟล์à¹à¸™à¸š attachments_label=ไฟล์à¹à¸™à¸š +layers.title=à¹à¸ªà¸”งเลเยà¸à¸£à¹Œ (คลิà¸à¸ªà¸à¸‡à¸„รั้งเพื่à¸à¸£à¸µà¹€à¸‹à¹‡à¸•à¹€à¸¥à¹€à¸¢à¸à¸£à¹Œà¸—ั้งหมดเป็นสถานะเริ่มต้น) +layers_label=เลเยà¸à¸£à¹Œ thumbs.title=à¹à¸ªà¸”งภาพขนาดย่ภthumbs_label=ภาพขนาดย่ภfindbar.title=ค้นหาในเà¸à¸à¸ªà¸²à¸£ findbar_label=ค้นหา +additional_layers=เลเยà¸à¸£à¹Œà¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•à¸´à¸¡ # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=หน้า {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/tl/viewer.properties b/third-party/pdfjs/web/locale/tl/viewer.properties index 0209da154..d3cce44e9 100644 --- a/third-party/pdfjs/web/locale/tl/viewer.properties +++ b/third-party/pdfjs/web/locale/tl/viewer.properties @@ -33,14 +33,14 @@ zoom_out_label=Paliitin zoom_in.title=Palakihin zoom_in_label=Palakihin zoom.title=Mag-zoom -presentation_mode.title=Switch to Presentation Mode +presentation_mode.title=Lumipat sa Presentation Mode presentation_mode_label=Presentation Mode open_file.title=Magbukas ng file open_file_label=Buksan print.title=i-Print print_label=i-Print -download.title=Download -download_label=Download +download.title=i-Download +download_label=i-Download bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window) bookmark_label=Kasalukuyang tingin @@ -53,35 +53,35 @@ first_page_label=Pumunta sa Unang Pahina last_page.title=Pumunta sa Huling Pahina last_page.label=Pumunta sa Huling Pahina last_page_label=Pumunta sa Huling Pahina -page_rotate_cw.title=Paikutin ang Clockwise -page_rotate_cw.label=Paikutin ang Clockwise -page_rotate_cw_label=Paikutin ang Clockwise -page_rotate_ccw.title=Paikutin ang Counterclockwise -page_rotate_ccw.label=Paikutin ang Counterclockwise -page_rotate_ccw_label=Paikutin ang Counterclockwise - -cursor_text_select_tool.title=Enable Text Selection Tool +page_rotate_cw.title=Paikutin Pakanan +page_rotate_cw.label=Paikutin Pakanan +page_rotate_cw_label=Paikutin Pakanan +page_rotate_ccw.title=Paikutin Pakaliwa +page_rotate_ccw.label=Paikutin Pakaliwa +page_rotate_ccw_label=Paikutin Pakaliwa + +cursor_text_select_tool.title=I-enable ang Text Selection Tool cursor_text_select_tool_label=Text Selection Tool -cursor_hand_tool.title=Enable Hand Tool +cursor_hand_tool.title=I-enable ang Hand Tool cursor_hand_tool_label=Hand Tool -scroll_vertical.title=Use Vertical Scrolling +scroll_vertical.title=Gumamit ng Vertical Scrolling scroll_vertical_label=Vertical Scrolling -scroll_horizontal.title=Use Horizontal Scrolling +scroll_horizontal.title=Gumamit ng Horizontal Scrolling scroll_horizontal_label=Horizontal Scrolling -scroll_wrapped.title=Use Wrapped Scrolling +scroll_wrapped.title=Gumamit ng Wrapped Scrolling scroll_wrapped_label=Wrapped Scrolling -spread_none.title=Do not join page spreads +spread_none.title=Huwag pagsamahin ang mga page spread spread_none_label=No Spreads spread_odd.title=Join page spreads starting with odd-numbered pages -spread_odd_label=Odd Spreads -spread_even.title=Join page spreads starting with even-numbered pages -spread_even_label=Even Spreads +spread_odd_label=Mga Odd Spread +spread_even.title=Pagsamahin ang mga page spread na nagsisimula sa mga even-numbered na pahina +spread_even_label=Mga Even Spread # Document properties dialog box -document_properties.title=Document Properties… -document_properties_label=Document Properties… +document_properties.title=Mga Katangian ng Dokumento… +document_properties_label=Mga Katangian ng Dokumento… document_properties_file_name=File name: document_properties_file_size=File size: # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" @@ -91,23 +91,23 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes) # will be replaced by the PDF file size in megabytes, respectively in bytes. document_properties_mb={{size_mb}} MB ({{size_b}} bytes) document_properties_title=Pamagat: -document_properties_author=May Akda: -document_properties_subject=Subject: +document_properties_author=May-akda: +document_properties_subject=Paksa: document_properties_keywords=Mga keyword: -document_properties_creation_date=Creation Date: -document_properties_modification_date=Modification Date: +document_properties_creation_date=Petsa ng Pagkakagawa: +document_properties_modification_date=Petsa ng Pagkakabago: # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # will be replaced by the creation/modification date, and time, of the PDF file. document_properties_date_string={{date}}, {{time}} -document_properties_creator=Creator: +document_properties_creator=Tagalikha: document_properties_producer=PDF Producer: document_properties_version=PDF Version: -document_properties_page_count=Page Count: -document_properties_page_size=Page Size: -document_properties_page_size_unit_inches=in +document_properties_page_count=Bilang ng Pahina: +document_properties_page_size=Laki ng Pahina: +document_properties_page_size_unit_inches=pulgada document_properties_page_size_unit_millimeters=mm -document_properties_page_size_orientation_portrait=portrait -document_properties_page_size_orientation_landscape=landscape +document_properties_page_size_orientation_portrait=patayo +document_properties_page_size_orientation_landscape=pahiga document_properties_page_size_name_a3=A3 document_properties_page_size_name_a4=A4 document_properties_page_size_name_letter=Letter @@ -127,7 +127,7 @@ document_properties_linearized_yes=Oo document_properties_linearized_no=Hindi document_properties_close=Isara -print_progress_message=Preparing document for printing… +print_progress_message=Inihahanda ang dokumento para sa pag-print… # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # a numerical per cent value. print_progress_percent={{progress}}% @@ -136,18 +136,22 @@ print_progress_close=Kanselahin # Tooltips and alt text for side panel toolbar buttons # (the _label strings are alt text for the buttons, the .title strings are # tooltips) -toggle_sidebar.title=Toggle Sidebar -toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments) -toggle_sidebar_label=Toggle Sidebar -document_outline.title=Show Document Outline (double-click to expand/collapse all items) -document_outline_label=Document Outline -attachments.title=Show Attachments -attachments_label=Attachments -thumbs.title=Ipakita ang mga Thumbnails -thumbs_label=Thumbnails -findbar.title=Find in Document +toggle_sidebar.title=Ipakita/Itago ang Sidebar +toggle_sidebar_notification.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment) +toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga attachment/mga layer) +toggle_sidebar_label=Ipakita/Itago ang Sidebar +document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman) +document_outline_label=Balangkas ng Dokumento +attachments.title=Ipakita ang mga Attachment +attachments_label=Mga attachment +layers.title=Ipakita ang mga Layer (mag-double click para mareset ang lahat ng layer sa orihinal na estado) +layers_label=Mga layer +thumbs.title=Ipakita ang mga Thumbnail +thumbs_label=Mga thumbnail +findbar.title=Hanapin sa Dokumento findbar_label=Hanapin +additional_layers=Mga Karagdagang Layer # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Pahina {{page}} # Thumbnails panel item (tooltip and alt text for images) @@ -160,43 +164,43 @@ thumb_page_canvas=Thumbnail ng Pahina {{page}} # Find panel button title and messages find_input.title=Hanapin -find_input.placeholder=Find in document… +find_input.placeholder=Hanapin sa dokumento… find_previous.title=Hanapin ang nakaraang pangyayari ng parirala -find_previous_label=Nakaraang +find_previous_label=Nakaraan find_next.title=Hanapin ang susunod na pangyayari ng parirala find_next_label=Susunod find_highlight=I-highlight lahat -find_match_case_label=Match case -find_entire_word_label=Whole words -find_reached_top=Reached top of document, continued from bottom -find_reached_bottom=Reached end of document, continued from top +find_match_case_label=Itugma ang case +find_entire_word_label=Buong salita +find_reached_top=Naabot na ang tuktok ng dokumento, ipinagpatuloy mula sa ilalim +find_reached_bottom=Naabot na ang dulo ng dokumento, ipinagpatuloy mula sa tuktok # LOCALIZATION NOTE (find_match_count): The supported plural forms are # [one|two|few|many|other], with [other] as the default value. # "{{current}}" and "{{total}}" will be replaced by a number representing the # index of the currently active find result, respectively a number representing # the total number of matches in the document. find_match_count={[ plural(total) ]} -find_match_count[one]={{current}} of {{total}} match -find_match_count[two]={{current}} of {{total}} matches -find_match_count[few]={{current}} of {{total}} matches -find_match_count[many]={{current}} of {{total}} matches -find_match_count[other]={{current}} of {{total}} matches +find_match_count[one]={{current}} ng {{total}} tugma +find_match_count[two]={{current}} ng {{total}} tugma +find_match_count[few]={{current}} ng {{total}} tugma +find_match_count[many]={{current}} ng {{total}} tugma +find_match_count[other]={{current}} ng {{total}} tugma # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # [zero|one|two|few|many|other], with [other] as the default value. # "{{limit}}" will be replaced by a numerical value. find_match_count_limit={[ plural(limit) ]} -find_match_count_limit[zero]=More than {{limit}} matches -find_match_count_limit[one]=More than {{limit}} match -find_match_count_limit[two]=More than {{limit}} matches -find_match_count_limit[few]=More than {{limit}} matches -find_match_count_limit[many]=More than {{limit}} matches -find_match_count_limit[other]=More than {{limit}} matches -find_not_found=Hindi nakita ang prasko +find_match_count_limit[zero]=Higit sa {{limit}} tugma +find_match_count_limit[one]=Higit sa {{limit}} tugma +find_match_count_limit[two]=Higit sa {{limit}} tugma +find_match_count_limit[few]=Higit sa {{limit}} tugma +find_match_count_limit[many]=Higit sa {{limit}} tugma +find_match_count_limit[other]=Higit sa {{limit}} tugma +find_not_found=Hindi natagpuan ang parirala # Error panel labels error_more_info=Karagdagang Impormasyon error_less_info=Mas Kaunting Impormasyon -error_close=Sarado +error_close=Isara # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be # replaced by the PDF.JS version and build ID. error_version_info=PDF.js v{{version}} (build: {{build}}) @@ -210,11 +214,11 @@ error_stack=Stack: {{stack}} error_file=File: {{file}} # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number error_line=Linya: {{line}} -rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina. +rendering_error=Nagkaproblema habang nirerender ang pahina. # Predefined zoom values page_scale_width=Lapad ng Pahina -page_scale_fit=ang pahina ay angkop +page_scale_fit=Pagkasyahin ang Pahina page_scale_auto=Automatic Zoom page_scale_actual=Totoong sukat # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a @@ -223,8 +227,8 @@ page_scale_percent={{scale}}% # Loading indicator messages loading_error_indicator=Error -loading_error=May maling nangyari habang kinakarga ang PDF. -invalid_file_error=Di-wasto o masira ang PDF file. +loading_error=Nagkaproblema habang niloload ang PDF. +invalid_file_error=Di-wasto o sira ang PDF file. missing_file_error=Nawawalang PDF file. unexpected_response_error=Hindi inaasahang tugon ng server. @@ -238,10 +242,10 @@ annotation_date_string={{date}}, {{time}} # Some common types are e.g.: "Check", "Text", "Comment", "Note" text_annotation_type.alt=[{{type}} Annotation] password_label=Ipasok ang password upang buksan ang PDF file na ito. -password_invalid=Invalid password. Please try again. +password_invalid=Maling password. Subukan uli. password_ok=OK password_cancel=Kanselahin -printing_not_supported=Warning: Printing is not fully supported by this browser. -printing_not_ready=Warning: The PDF is not fully loaded for printing. -web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. +printing_not_supported=Babala: Hindi pa ganap na suportado ang pag-print sa browser na ito. +printing_not_ready=Babala: Hindi ganap na nabuksan ang PDF para sa pag-print. +web_fonts_disabled=Naka-disable ang mga Web font: hindi kayang gamitin ang mga naka-embed na PDF font. diff --git a/third-party/pdfjs/web/locale/tr/viewer.properties b/third-party/pdfjs/web/locale/tr/viewer.properties index b189186c2..e898dd51f 100644 --- a/third-party/pdfjs/web/locale/tr/viewer.properties +++ b/third-party/pdfjs/web/locale/tr/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Ä°ptal # tooltips) toggle_sidebar.title=Kenar çubuÄŸunu aç/kapat toggle_sidebar_notification.title=Kenar çubuÄŸunu aç/kapat (Belge ana hat/ekler içeriyor) +toggle_sidebar_notification2.title=Kenar çubuÄŸunu aç/kapat (Belge anahat/ekler/katmanlar içeriyor) toggle_sidebar_label=Kenar çubuÄŸunu aç/kapat document_outline.title=Belge ana hatlarını göster (Tüm öğeleri geniÅŸletmek/daraltmak için çift tıklayın) document_outline_label=Belge ana hatları attachments.title=Ekleri göster attachments_label=Ekler +layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlamak için çift tıklayın) +layers_label=Katmanlar thumbs.title=Küçük resimleri göster thumbs_label=Küçük resimler findbar.title=Belgede bul findbar_label=Bul +additional_layers=Ek katmanlar # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Sayfa {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/uk/viewer.properties b/third-party/pdfjs/web/locale/uk/viewer.properties index 7b3a69c55..eaeb551eb 100644 --- a/third-party/pdfjs/web/locale/uk/viewer.properties +++ b/third-party/pdfjs/web/locale/uk/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=СкаÑувати # tooltips) toggle_sidebar.title=Бічна панель toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміÑÑ‚/вкладеннÑ) +toggle_sidebar_notification2.title=Перемкнути бічну панель (документ міÑтить еÑкіз/вкладеннÑ/шари) toggle_sidebar_label=Перемкнути бічну панель document_outline.title=Показати Ñхему документу (подвійний клік Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ/Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð²) document_outline_label=Схема документа attachments.title=Показати Ð¿Ñ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ attachments_label=ÐŸÑ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð½Ñ +layers.title=Показати шари (двічі клацніть, щоб Ñкинути вÑÑ– шари до типового Ñтану) +layers_label=Шари thumbs.title=Показувати еÑкізи thumbs_label=ЕÑкізи +current_outline_item.title=Знайти поточний елемент зміÑту +current_outline_item_label=Поточний елемент зміÑту findbar.title=Знайти в документі -findbar_label=Пошук +findbar_label=Знайти +additional_layers=Додаткові шари # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Сторінка {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/vi/viewer.properties b/third-party/pdfjs/web/locale/vi/viewer.properties index 64ae6e3a2..00ff02195 100644 --- a/third-party/pdfjs/web/locale/vi/viewer.properties +++ b/third-party/pdfjs/web/locale/vi/viewer.properties @@ -138,16 +138,20 @@ print_progress_close=Hủy bá» # tooltips) toggle_sidebar.title=Báºt/Tắt thanh lá» toggle_sidebar_notification.title=Báºt tắt thanh lá» (tà i liệu bao gồm bản phác thảo/táºp tin Ä‘Ãnh kèm) +toggle_sidebar_notification2.title=Báºt tắt thanh lá» (tà i liệu bao gồm bản phác thảo/táºp tin Ä‘Ãnh kèm/lá»›p) toggle_sidebar_label=Báºt/Tắt thanh lá» document_outline.title=Hiện tà i liệu phác thảo (nhấp đúp và o để mở rá»™ng/thu gá»n tất cả các mục) document_outline_label=Bản phác tà i liệu attachments.title=Hiện ná»™i dung Ä‘Ãnh kèm attachments_label=Ná»™i dung Ä‘Ãnh kèm +layers.title=Hiển thị các lá»›p (nhấp đúp để đặt lại tất cả các lá»›p vá» trạng thái mặc định) +layers_label=Lá»›p thumbs.title=Hiển thị ảnh thu nhá» thumbs_label=Ảnh thu nhá» findbar.title=Tìm trong tà i liệu findbar_label=Tìm +additional_layers=Các lá»›p bổ sung # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=Trang {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/zh-CN/viewer.properties b/third-party/pdfjs/web/locale/zh-CN/viewer.properties index 214c746f1..becd80284 100644 --- a/third-party/pdfjs/web/locale/zh-CN/viewer.properties +++ b/third-party/pdfjs/web/locale/zh-CN/viewer.properties @@ -138,16 +138,22 @@ print_progress_close=å–消 # tooltips) toggle_sidebar.title=切æ¢ä¾§æ toggle_sidebar_notification.title=切æ¢ä¾§æ (文档所å«çš„大纲/附件) +toggle_sidebar_notification2.title=切æ¢ä¾§æ (文档所å«çš„大纲/附件/图层) toggle_sidebar_label=切æ¢ä¾§æ document_outline.title=显示文档大纲(åŒå‡»å±•å¼€/折å 所有项) document_outline_label=文档大纲 attachments.title=显示附件 attachments_label=附件 +layers.title=显示图层(åŒå‡»å³å¯å°†æ‰€æœ‰å›¾å±‚é‡ç½®ä¸ºé»˜è®¤çŠ¶æ€ï¼‰ +layers_label=图层 thumbs.title=显示缩略图 thumbs_label=缩略图 +current_outline_item.title=查找当å‰å¤§çº²é¡¹ç›® +current_outline_item_label=当å‰å¤§çº²é¡¹ç›® findbar.title=在文档ä¸æŸ¥æ‰¾ findbar_label=查找 +additional_layers=其他图层 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=页ç {{page}} # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/locale/zh-TW/viewer.properties b/third-party/pdfjs/web/locale/zh-TW/viewer.properties index 55626cabd..0f095de03 100644 --- a/third-party/pdfjs/web/locale/zh-TW/viewer.properties +++ b/third-party/pdfjs/web/locale/zh-TW/viewer.properties @@ -41,7 +41,7 @@ print.title=åˆ—å° print_label=åˆ—å° download.title=下載 download_label=下載 -bookmark.title=ç›®å‰æª¢è¦–的內容(複製或開啟於新視窗) +bookmark.title=ç›®å‰ç•«é¢ï¼ˆè¤‡è£½æˆ–開啟於新視窗) bookmark_label=ç›®å‰æª¢è¦– # Secondary toolbar and context menu @@ -138,16 +138,22 @@ print_progress_close=å–消 # tooltips) toggle_sidebar.title=切æ›å´é‚Šæ¬„ toggle_sidebar_notification.title=切æ›å´é‚Šæ””(文件包å«å¤§ç¶±æˆ–附件) +toggle_sidebar_notification2.title=切æ›å´é‚Šæ¬„(包å«å¤§ç¶±ã€é™„件ã€åœ–層的文件) toggle_sidebar_label=切æ›å´é‚Šæ¬„ document_outline.title=顯示文件大綱(雙擊展開/æ‘ºç–Šæ‰€æœ‰é …ç›®ï¼‰ document_outline_label=文件大綱 attachments.title=顯示附件 attachments_label=附件 +layers.title=é¡¯ç¤ºåœ–å±¤ï¼ˆæ»‘é¼ é›™æ“Šå³å¯å°‡æ‰€æœ‰åœ–層é‡è¨ç‚ºé è¨ç‹€æ…‹ï¼‰ +layers_label=圖層 thumbs.title=顯示縮圖 thumbs_label=縮圖 +current_outline_item.title=尋找目å‰çš„å¤§ç¶±é …ç›® +current_outline_item_label=ç›®å‰çš„å¤§ç¶±é …ç›® findbar.title=在文件ä¸å°‹æ‰¾ findbar_label=尋找 +additional_layers=其他圖層 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number. page_canvas=第 {{page}} é # Thumbnails panel item (tooltip and alt text for images) diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css index 21af9931d..d7322b41e 100644 --- a/third-party/pdfjs/web/viewer.css +++ b/third-party/pdfjs/web/viewer.css @@ -41,15 +41,15 @@ } .textLayer .highlight.begin { - border-radius: 4px 0px 0px 4px; + border-radius: 4px 0 0 4px; } .textLayer .highlight.end { - border-radius: 0px 4px 4px 0px; + border-radius: 0 4px 4px 0; } .textLayer .highlight.middle { - border-radius: 0px; + border-radius: 0; } .textLayer .highlight.selected { @@ -67,10 +67,10 @@ .textLayer .endOfContent { display: block; position: absolute; - left: 0px; + left: 0; top: 100%; - right: 0px; - bottom: 0px; + right: 0; + bottom: 0; z-index: -1; cursor: default; -webkit-user-select: none; @@ -80,12 +80,13 @@ } .textLayer .endOfContent.active { - top: 0px; + top: 0; } .annotationLayer section { position: absolute; + text-align: initial; } .annotationLayer .linkAnnotation > a, @@ -102,7 +103,7 @@ .annotationLayer .buttonWidgetAnnotation.pushButton > a:hover { opacity: 0.2; background: rgba(255, 255, 0, 1); - box-shadow: 0px 2px 10px rgba(255, 255, 0, 1); + box-shadow: 0 2px 10px rgba(255, 255, 0, 1); } .annotationLayer .textAnnotation img { @@ -231,13 +232,14 @@ z-index: 200; max-width: 20em; background-color: rgba(255, 255, 153, 1); - box-shadow: 0px 2px 5px rgba(136, 136, 136, 1); + box-shadow: 0 2px 5px rgba(136, 136, 136, 1); border-radius: 2px; padding: 6px; margin-left: 5px; cursor: pointer; font: message-box; font-size: 9px; + white-space: normal; word-wrap: break-word; } @@ -285,7 +287,7 @@ direction: ltr; width: 816px; height: 1056px; - margin: 1px auto -8px auto; + margin: 1px auto -8px; position: relative; overflow: visible; border: 9px solid transparent; @@ -296,7 +298,7 @@ } .pdfViewer.removePageBorders .page { - margin: 0px auto 10px auto; + margin: 0 auto 10px; border: none; } @@ -387,10 +389,6 @@ margin-right: auto; } -.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { - margin-bottom: 100% !important; -} - .pdfPresentationMode:-webkit-full-screen .pdfViewer .page { margin-bottom: 100%; border: 0; @@ -401,6 +399,11 @@ border: 0; } +.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { + margin-bottom: 100%; + border: 0; +} + .pdfPresentationMode:fullscreen .pdfViewer .page { margin-bottom: 100%; border: 0; @@ -410,6 +413,7 @@ --sidebar-width: 200px; --sidebar-transition-duration: 200ms; --sidebar-transition-timing-function: ease; + --loadingBar-end-offset: 0; --toolbar-icon-opacity: 0.7; --doorhanger-icon-opacity: 0.9; @@ -422,22 +426,24 @@ --progressBar-indeterminate-blend-color: rgba(116, 177, 239, 1); --scrollbar-color: auto; --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgba(0, 0, 0, 1); --sidebar-bg-color: rgba(245, 246, 247, 1); --toolbar-bg-color: rgba(249, 249, 250, 1); --toolbar-border-color: rgba(204, 204, 204, 1); --button-hover-color: rgba(221, 222, 223, 1); --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); --dropdown-btn-bg-color: rgba(215, 215, 219, 1); --separator-color: rgba(0, 0, 0, 0.3); --field-color: rgba(6, 6, 6, 1); --field-bg-color: rgba(255, 255, 255, 1); --field-border-color: rgba(187, 187, 188, 1); --findbar-nextprevious-btn-bg-color: rgba(227, 228, 230, 1); - --outline-color: rgba(0, 0, 0, 0.8); - --outline-hover-color: rgba(0, 0, 0, 0.9); - --outline-active-color: rgba(0, 0, 0, 0.08); - --outline-active-bg-color: rgba(0, 0, 0, 1); + --treeitem-color: rgba(0, 0, 0, 0.8); + --treeitem-hover-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-color: rgba(0, 0, 0, 0.9); + --treeitem-selected-bg-color: rgba(0, 0, 0, 0.25); --sidebaritem-bg-color: rgba(0, 0, 0, 0.15); --doorhanger-bg-color: rgba(255, 255, 255, 1); --doorhanger-border-color: rgba(12, 12, 13, 0.2); @@ -465,6 +471,7 @@ --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline.svg); --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments.svg); --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(images/toolbarButton-currentOutlineItem.svg); --toolbarButton-search-icon: url(images/toolbarButton-search.svg); --findbarButton-previous-icon: url(images/findbarButton-previous.svg); --findbarButton-next-icon: url(images/findbarButton-next.svg); @@ -493,22 +500,24 @@ --progressBar-indeterminate-blend-color: rgba(20, 68, 133, 1); --scrollbar-color: rgba(121, 121, 123, 1); --scrollbar-bg-color: rgba(35, 35, 39, 1); + --toolbar-icon-bg-color: rgba(255, 255, 255, 1); --sidebar-bg-color: rgba(50, 50, 52, 1); --toolbar-bg-color: rgba(56, 56, 61, 1); --toolbar-border-color: rgba(12, 12, 13, 1); --button-hover-color: rgba(102, 102, 103, 1); --toggled-btn-bg-color: rgba(0, 0, 0, 0.3); + --toggled-hover-active-btn-color: rgba(0, 0, 0, 0.4); --dropdown-btn-bg-color: rgba(74, 74, 79, 1); --separator-color: rgba(0, 0, 0, 0.3); --field-color: rgba(250, 250, 250, 1); --field-bg-color: rgba(64, 64, 68, 1); --field-border-color: rgba(115, 115, 115, 1); --findbar-nextprevious-btn-bg-color: rgba(89, 89, 89, 1); - --outline-color: rgba(255, 255, 255, 0.8); - --outline-hover-color: rgba(255, 255, 255, 0.9); - --outline-active-color: rgba(255, 255, 255, 0.08); - --outline-active-bg-color: rgba(255, 255, 255, 1); + --treeitem-color: rgba(255, 255, 255, 0.8); + --treeitem-hover-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-color: rgba(255, 255, 255, 0.9); + --treeitem-selected-bg-color: rgba(255, 255, 255, 0.25); --sidebaritem-bg-color: rgba(255, 255, 255, 0.15); --doorhanger-bg-color: rgba(74, 74, 79, 1); --doorhanger-border-color: rgba(39, 39, 43, 1); @@ -517,41 +526,10 @@ --overlay-button-bg-color: rgba(92, 92, 97, 1); --overlay-button-hover-color: rgba(115, 115, 115, 1); + /* This image is used in <input> elements, which unfortunately means that + * the `mask-image` approach used with all of the other images doesn't work + * here; hence why we still have two versions of this particular image. */ --loading-icon: url(images/loading-dark.svg); - --treeitem-expanded-icon: url(images/treeitem-expanded-dark.svg); - --treeitem-collapsed-icon: url(images/treeitem-collapsed-dark.svg); - --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow-dark.svg); - --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle-dark.svg); - --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle-dark.svg); - --toolbarButton-pageUp-icon: url(images/toolbarButton-pageUp-dark.svg); - --toolbarButton-pageDown-icon: url(images/toolbarButton-pageDown-dark.svg); - --toolbarButton-zoomOut-icon: url(images/toolbarButton-zoomOut-dark.svg); - --toolbarButton-zoomIn-icon: url(images/toolbarButton-zoomIn-dark.svg); - --toolbarButton-presentationMode-icon: url(images/toolbarButton-presentationMode-dark.svg); - --toolbarButton-print-icon: url(images/toolbarButton-print-dark.svg); - --toolbarButton-openFile-icon: url(images/toolbarButton-openFile-dark.svg); - --toolbarButton-download-icon: url(images/toolbarButton-download-dark.svg); - --toolbarButton-bookmark-icon: url(images/toolbarButton-bookmark-dark.svg); - --toolbarButton-viewThumbnail-icon: url(images/toolbarButton-viewThumbnail-dark.svg); - --toolbarButton-viewOutline-icon: url(images/toolbarButton-viewOutline-dark.svg); - --toolbarButton-viewAttachments-icon: url(images/toolbarButton-viewAttachments-dark.svg); - --toolbarButton-viewLayers-icon: url(images/toolbarButton-viewLayers-dark.svg); - --toolbarButton-search-icon: url(images/toolbarButton-search-dark.svg); - --findbarButton-previous-icon: url(images/findbarButton-previous-dark.svg); - --findbarButton-next-icon: url(images/findbarButton-next-dark.svg); - --secondaryToolbarButton-firstPage-icon: url(images/secondaryToolbarButton-firstPage-dark.svg); - --secondaryToolbarButton-lastPage-icon: url(images/secondaryToolbarButton-lastPage-dark.svg); - --secondaryToolbarButton-rotateCcw-icon: url(images/secondaryToolbarButton-rotateCcw-dark.svg); - --secondaryToolbarButton-rotateCw-icon: url(images/secondaryToolbarButton-rotateCw-dark.svg); - --secondaryToolbarButton-selectTool-icon: url(images/secondaryToolbarButton-selectTool-dark.svg); - --secondaryToolbarButton-handTool-icon: url(images/secondaryToolbarButton-handTool-dark.svg); - --secondaryToolbarButton-scrollVertical-icon: url(images/secondaryToolbarButton-scrollVertical-dark.svg); - --secondaryToolbarButton-scrollHorizontal-icon: url(images/secondaryToolbarButton-scrollHorizontal-dark.svg); - --secondaryToolbarButton-scrollWrapped-icon: url(images/secondaryToolbarButton-scrollWrapped-dark.svg); - --secondaryToolbarButton-spreadNone-icon: url(images/secondaryToolbarButton-spreadNone-dark.svg); - --secondaryToolbarButton-spreadOdd-icon: url(images/secondaryToolbarButton-spreadOdd-dark.svg); - --secondaryToolbarButton-spreadEven-icon: url(images/secondaryToolbarButton-spreadEven-dark.svg); - --secondaryToolbarButton-documentProperties-icon: url(images/secondaryToolbarButton-documentProperties-dark.svg); } } @@ -753,17 +731,8 @@ select { cursor: not-allowed; } -#viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px !important; - overflow: hidden !important; -} - -#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { - background-color: rgba(0, 0, 0, 1); -} - #viewerContainer.pdfPresentationMode:-webkit-full-screen { - top: 0px; + top: 0; border-top: 2px solid rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 1); width: 100%; @@ -775,7 +744,7 @@ select { } #viewerContainer.pdfPresentationMode:-moz-full-screen { - top: 0px; + top: 0; border-top: 2px solid rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 1); width: 100%; @@ -787,7 +756,7 @@ select { } #viewerContainer.pdfPresentationMode:-ms-fullscreen { - top: 0px; + top: 0; border-top: 2px solid rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 1); width: 100%; @@ -799,7 +768,7 @@ select { } #viewerContainer.pdfPresentationMode:fullscreen { - top: 0px; + top: 0; border-top: 2px solid rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 1); width: 100%; @@ -880,10 +849,6 @@ html[dir="rtl"] #sidebarContainer { right: calc(0px - var(--sidebar-width)); } -.loadingInProgress #sidebarContainer { - top: 36px; -} - #outerContainer.sidebarResizing #sidebarContainer { /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ transition-duration: 0s; @@ -899,10 +864,10 @@ html[dir="rtl"] #sidebarContainer { visibility: visible; } html[dir="ltr"] #outerContainer.sidebarOpen #sidebarContainer { - left: 0px; + left: 0; } html[dir="rtl"] #outerContainer.sidebarOpen #sidebarContainer { - right: 0px; + right: 0; } #mainContainer { @@ -1011,6 +976,13 @@ html[dir="rtl"] #toolbarSidebar .toolbarButton { margin-left: 2px !important; } +html[dir="ltr"] #toolbarSidebarRight .toolbarButton { + margin-right: 3px !important; +} +html[dir="rtl"] #toolbarSidebarRight .toolbarButton { + margin-left: 3px !important; +} + #sidebarResizer { position: absolute; top: 0; @@ -1031,109 +1003,73 @@ html[dir="rtl"] #sidebarResizer { height: 32px; background-color: rgba(249, 249, 250, 1); background-color: var(--toolbar-bg-color); + box-shadow: 0 1px 0 rgba(204, 204, 204, 1); + box-shadow: 0 1px 0 var(--toolbar-border-color); } @media (prefers-color-scheme: dark) { #toolbarContainer { - background-color: rgba(56, 56, 61, 1); - background-color: var(--toolbar-bg-color); + box-shadow: 0 1px 0 rgba(12, 12, 13, 1); + box-shadow: 0 1px 0 var(--toolbar-border-color); } } -.findbar { - position: relative; - height: 32px; - background-color: rgba(249, 249, 250, 1); - background-color: var(--toolbar-bg-color); -} - @media (prefers-color-scheme: dark) { - .findbar { + #toolbarContainer { background-color: rgba(56, 56, 61, 1); background-color: var(--toolbar-bg-color); } } -.secondaryToolbar { +.findbar { position: relative; height: 32px; background-color: rgba(249, 249, 250, 1); background-color: var(--toolbar-bg-color); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbar { - background-color: rgba(56, 56, 61, 1); - background-color: var(--toolbar-bg-color); - } -} -html[dir="ltr"] #toolbarContainer { box-shadow: 0 1px 0 rgba(204, 204, 204, 1); box-shadow: 0 1px 0 var(--toolbar-border-color); } + @media (prefers-color-scheme: dark) { - html[dir="ltr"] #toolbarContainer { + .findbar { box-shadow: 0 1px 0 rgba(12, 12, 13, 1); box-shadow: 0 1px 0 var(--toolbar-border-color); } } -.findbar { - box-shadow: 0 1px 0 rgba(204, 204, 204, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); -} + @media (prefers-color-scheme: dark) { .findbar { - box-shadow: 0 1px 0 rgba(12, 12, 13, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); + background-color: rgba(56, 56, 61, 1); + background-color: var(--toolbar-bg-color); } } + .secondaryToolbar { + position: relative; + height: 32px; + background-color: rgba(249, 249, 250, 1); + background-color: var(--toolbar-bg-color); box-shadow: 0 1px 0 rgba(204, 204, 204, 1); box-shadow: 0 1px 0 var(--toolbar-border-color); } -@media (prefers-color-scheme: dark) { - .secondaryToolbar { - box-shadow: 0 1px 0 rgba(12, 12, 13, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); - } -} -html[dir="rtl"] #toolbarContainer { - box-shadow: 0 1px 0 rgba(204, 204, 204, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); -} @media (prefers-color-scheme: dark) { - html[dir="rtl"] #toolbarContainer { + .secondaryToolbar { box-shadow: 0 1px 0 rgba(12, 12, 13, 1); box-shadow: 0 1px 0 var(--toolbar-border-color); } } -.findbar { - box-shadow: 0 1px 0 rgba(204, 204, 204, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); -} -@media (prefers-color-scheme: dark) { - .findbar { - box-shadow: 0 1px 0 rgba(12, 12, 13, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); - } -} -.secondaryToolbar { - box-shadow: 0 1px 0 rgba(204, 204, 204, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); -} @media (prefers-color-scheme: dark) { .secondaryToolbar { - box-shadow: 0 1px 0 rgba(12, 12, 13, 1); - box-shadow: 0 1px 0 var(--toolbar-border-color); + background-color: rgba(56, 56, 61, 1); + background-color: var(--toolbar-bg-color); } } @@ -1142,13 +1078,18 @@ html[dir="rtl"] #toolbarContainer { } #loadingBar { - position: relative; - width: 100%; + position: absolute; height: 4px; background-color: rgba(237, 237, 240, 1); background-color: var(--body-bg-color); border-bottom: 1px solid rgba(204, 204, 204, 1); border-bottom: 1px solid var(--toolbar-border-color); + + transition-duration: 200ms; + + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: ease; + transition-timing-function: var(--sidebar-transition-timing-function); } @media (prefers-color-scheme: dark) { @@ -1166,6 +1107,32 @@ html[dir="rtl"] #toolbarContainer { background-color: var(--body-bg-color); } } +html[dir="ltr"] #loadingBar { + transition-property: left; + left: 0; + right: 0; + right: var(--loadingBar-end-offset); +} +html[dir="rtl"] #loadingBar { + transition-property: right; + left: 0; + left: var(--loadingBar-end-offset); + right: 0; +} + +html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar { + left: 200px; + left: var(--sidebar-width); +} +html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar { + right: 200px; + right: var(--sidebar-width); +} + +#outerContainer.sidebarResizing #loadingBar { + /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ + transition-duration: 0s; +} #loadingBar .progress { position: absolute; @@ -1470,8 +1437,8 @@ html[dir="rtl"] #toolbarContainer { z-index: 10000; height: auto; min-width: 16px; - padding: 0px 4px 0px 4px; - margin: 4px 2px 4px 2px; + padding: 0 4px; + margin: 4px 2px; color: rgba(217, 217, 217, 1); font-size: 12px; line-height: 14px; @@ -1508,50 +1475,22 @@ html[dir="rtl"] .findbar { right: 64px; } -html[dir="ltr"] .findbar .splitToolbarButton { - margin-left: 0px; - margin-top: 3px; -} - -html[dir="rtl"] .findbar .splitToolbarButton { - margin-right: 0px; +.findbar .splitToolbarButton { margin-top: 3px; } - -.findbar .splitToolbarButton .findNext { - width: 29px; -} - -html[dir="ltr"] .findbar .splitToolbarButton .findNext { - border-right: 1px solid rgba(187, 187, 188, 1); - border-right: 1px solid var(--field-border-color); -} - -@media (prefers-color-scheme: dark) { - - html[dir="ltr"] .findbar .splitToolbarButton .findNext { - border-right: 1px solid rgba(115, 115, 115, 1); - border-right: 1px solid var(--field-border-color); - } -} - -html[dir="rtl"] .findbar .splitToolbarButton .findNext { - border-left: 1px solid rgba(187, 187, 188, 1); - border-left: 1px solid var(--field-border-color); +html[dir="ltr"] .findbar .splitToolbarButton { + margin-left: 0; + margin-right: 5px; } - -@media (prefers-color-scheme: dark) { - - html[dir="rtl"] .findbar .splitToolbarButton .findNext { - border-left: 1px solid rgba(115, 115, 115, 1); - border-left: 1px solid var(--field-border-color); - } +html[dir="rtl"] .findbar .splitToolbarButton { + margin-left: 5px; + margin-right: 0; } -.findbar .splitToolbarButton .toolbarButton { +.findbar .splitToolbarButton > .toolbarButton { background-color: rgba(227, 228, 230, 1); background-color: var(--findbar-nextprevious-btn-bg-color); - border-radius: 0px; + border-radius: 0; height: 26px; border-top: 1px solid rgba(187, 187, 188, 1); border-top: 1px solid var(--field-border-color); @@ -1561,7 +1500,7 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext { @media (prefers-color-scheme: dark) { - .findbar .splitToolbarButton .toolbarButton { + .findbar .splitToolbarButton > .toolbarButton { border-bottom: 1px solid rgba(115, 115, 115, 1); border-bottom: 1px solid var(--field-border-color); } @@ -1569,7 +1508,7 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext { @media (prefers-color-scheme: dark) { - .findbar .splitToolbarButton .toolbarButton { + .findbar .splitToolbarButton > .toolbarButton { border-top: 1px solid rgba(115, 115, 115, 1); border-top: 1px solid var(--field-border-color); } @@ -1577,34 +1516,44 @@ html[dir="rtl"] .findbar .splitToolbarButton .findNext { @media (prefers-color-scheme: dark) { - .findbar .splitToolbarButton .toolbarButton { + .findbar .splitToolbarButton > .toolbarButton { background-color: rgba(89, 89, 89, 1); background-color: var(--findbar-nextprevious-btn-bg-color); } } -.findbar .splitToolbarButton .toolbarButton::before { +.findbar .splitToolbarButton > .toolbarButton::before { top: 5px; } -html[dir="ltr"] .findbar .splitToolbarButton > .findPrevious { - border-radius: 0; +.findbar .splitToolbarButton > .findNext { + width: 29px; } html[dir="ltr"] .findbar .splitToolbarButton > .findNext { - border-bottom-left-radius: 0; border-bottom-right-radius: 2px; - border-top-left-radius: 0; border-top-right-radius: 2px; + border-right: 1px solid rgba(187, 187, 188, 1); + border-right: 1px solid var(--field-border-color); } +@media (prefers-color-scheme: dark) { -html[dir="rtl"] .findbar .splitToolbarButton > .findPrevious { - border-radius: 0; + html[dir="ltr"] .findbar .splitToolbarButton > .findNext { + border-right: 1px solid rgba(115, 115, 115, 1); + border-right: 1px solid var(--field-border-color); + } } html[dir="rtl"] .findbar .splitToolbarButton > .findNext { border-bottom-left-radius: 2px; - border-bottom-right-radius: 0; border-top-left-radius: 2px; - border-top-right-radius: 0; + border-left: 1px solid rgba(187, 187, 188, 1); + border-left: 1px solid var(--field-border-color); +} +@media (prefers-color-scheme: dark) { + + html[dir="rtl"] .findbar .splitToolbarButton > .findNext { + border-left: 1px solid rgba(115, 115, 115, 1); + border-left: 1px solid var(--field-border-color); + } } .findbar input[type="checkbox"] { @@ -1648,7 +1597,6 @@ html[dir="ltr"] #findInput { border-top-right-radius: 0; border-bottom-right-radius: 0; } - html[dir="rtl"] #findInput { border-top-left-radius: 0; border-bottom-left-radius: 0; @@ -1679,9 +1627,6 @@ html[dir="rtl"] #findInput { #findInput:-ms-input-placeholder { font-style: normal; } -#findInput::-ms-input-placeholder { - font-style: normal; -} #findInput::placeholder { font-style: normal; } @@ -1701,9 +1646,12 @@ html[dir="rtl"] #findInput { html[dir="rtl"] #findInput[data-status="pending"] { background-position: 3px; } +#findInput[data-status="notFound"] { + background-color: rgba(255, 102, 102, 1); +} .secondaryToolbar { - padding: 6px 0 10px 0; + padding: 6px 0 10px; height: auto; z-index: 30000; background-color: rgba(255, 255, 255, 1); @@ -1874,10 +1822,6 @@ html[dir="ltr"] .doorHangerRight:before { display: none; } -#findInput.notFound { - background-color: rgba(255, 102, 102, 1); -} - #toolbarViewerMiddle { position: absolute; left: 50%; @@ -1885,16 +1829,22 @@ html[dir="ltr"] .doorHangerRight:before { } html[dir="ltr"] #toolbarViewerLeft, -html[dir="rtl"] #toolbarViewerRight { +html[dir="rtl"] #toolbarViewerRight, +html[dir="ltr"] #toolbarSidebarLeft, +html[dir="rtl"] #toolbarSidebarRight { float: left; } html[dir="ltr"] #toolbarViewerRight, -html[dir="rtl"] #toolbarViewerLeft { +html[dir="rtl"] #toolbarViewerLeft, +html[dir="ltr"] #toolbarSidebarRight, +html[dir="rtl"] #toolbarSidebarLeft { float: right; } html[dir="ltr"] #toolbarViewerLeft > *, html[dir="ltr"] #toolbarViewerMiddle > *, html[dir="ltr"] #toolbarViewerRight > *, +html[dir="ltr"] #toolbarSidebarLeft *, +html[dir="ltr"] #toolbarSidebarRight *, html[dir="ltr"] .findbar * { position: relative; float: left; @@ -1902,25 +1852,21 @@ html[dir="ltr"] .findbar * { html[dir="rtl"] #toolbarViewerLeft > *, html[dir="rtl"] #toolbarViewerMiddle > *, html[dir="rtl"] #toolbarViewerRight > *, +html[dir="rtl"] #toolbarSidebarLeft *, +html[dir="rtl"] #toolbarSidebarRight *, html[dir="rtl"] .findbar * { position: relative; float: right; } -html[dir="ltr"] .splitToolbarButton { - margin: 2px 2px 0; - display: inline-block; -} -html[dir="rtl"] .splitToolbarButton { +.splitToolbarButton { margin: 2px 2px 0; display: inline-block; } html[dir="ltr"] .splitToolbarButton > .toolbarButton { - border-radius: 2px; float: left; } html[dir="rtl"] .splitToolbarButton > .toolbarButton { - border-radius: 2px; float: right; } @@ -2061,12 +2007,10 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton { } html[dir="ltr"] .splitToolbarButton > .toolbarButton:first-child, html[dir="rtl"] .splitToolbarButton > .toolbarButton:last-child { - position: relative; margin: 0; } html[dir="ltr"] .splitToolbarButton > .toolbarButton:last-child, html[dir="rtl"] .splitToolbarButton > .toolbarButton:first-child { - position: relative; margin: 0; } .splitToolbarButtonSeparator { @@ -2110,6 +2054,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator { .toolbarButton { min-width: 16px; + margin: 2px 1px; padding: 2px 6px 0; border: none; border-radius: 2px; @@ -2121,7 +2066,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator { -moz-user-select: none; -ms-user-select: none; user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; box-sizing: border-box; } @@ -2136,6 +2080,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator { .dropdownToolbarButton { min-width: 16px; + margin: 2px 1px; padding: 2px 6px 0; border: none; border-radius: 2px; @@ -2147,7 +2092,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator { -moz-user-select: none; -ms-user-select: none; user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; box-sizing: border-box; } @@ -2162,6 +2106,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator { .secondaryToolbarButton { min-width: 16px; + margin: 2px 1px; padding: 2px 6px 0; border: none; border-radius: 2px; @@ -2173,7 +2118,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator { -moz-user-select: none; -ms-user-select: none; user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; box-sizing: border-box; } @@ -2188,6 +2132,7 @@ html[dir="rtl"] .splitToolbarButtonSeparator { .overlayButton { min-width: 16px; + margin: 2px 1px; padding: 2px 6px 0; border: none; border-radius: 2px; @@ -2199,7 +2144,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator { -moz-user-select: none; -ms-user-select: none; user-select: none; - /* Opera does not support user-select, use <... unselectable="on"> instead */ cursor: default; box-sizing: border-box; } @@ -2212,17 +2156,6 @@ html[dir="rtl"] .splitToolbarButtonSeparator { } } -html[dir="ltr"] .toolbarButton, -html[dir="ltr"] .overlayButton, -html[dir="ltr"] .dropdownToolbarButton { - margin: 2px 1px; -} -html[dir="rtl"] .toolbarButton, -html[dir="rtl"] .overlayButton, -html[dir="rtl"] .dropdownToolbarButton { - margin: 2px 1px; -} - html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child, html[dir="rtl"] #toolbarViewerRight > .toolbarButton:last-child { margin-left: 2px; @@ -2316,10 +2249,43 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child { } } -.toolbarButton.toggled:hover:active, -.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, +.toolbarButton.toggled:hover:active { + background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); +} + +@media (prefers-color-scheme: dark) { + + .toolbarButton.toggled:hover:active { + background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); + } +} + +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active { + background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); +} + +@media (prefers-color-scheme: dark) { + + .splitToolbarButton.toggled > .toolbarButton.toggled:hover:active { + background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); + } +} + .secondaryToolbarButton.toggled:hover:active { background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); +} + +@media (prefers-color-scheme: dark) { + + .secondaryToolbarButton.toggled:hover:active { + background-color: rgba(0, 0, 0, 0.4); + background-color: var(--toggled-hover-active-btn-color); + } } .dropdownToolbarButton { @@ -2339,20 +2305,14 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child { } } .dropdownToolbarButton::after { - position: absolute; - display: inline-block; top: 6px; - content: url(images/toolbarButton-menuArrow.svg); - content: var(--toolbarButton-menuArrow-icon); pointer-events: none; - max-width: 16px; -} -@media (prefers-color-scheme: dark) { - .dropdownToolbarButton::after { - content: url(images/toolbarButton-menuArrow-dark.svg); - content: var(--toolbarButton-menuArrow-icon); - } + -webkit-mask-image: url(images/toolbarButton-menuArrow.svg); + + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: url(images/toolbarButton-menuArrow.svg); + mask-image: var(--toolbarButton-menuArrow-icon); } html[dir="ltr"] .dropdownToolbarButton::after { right: 7px; @@ -2448,273 +2408,233 @@ html[dir="rtl"] .dropdownToolbarButton > select { height: 1px; } -html[dir="ltr"] #findPrevious { - margin-left: 0; -} -html[dir="ltr"] #findNext { - margin-right: 3px; -} +.toolbarButton::before { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; -html[dir="rtl"] #findPrevious { - margin-right: 0; -} -html[dir="rtl"] #findNext { - margin-left: 3px; + content: ""; + background-color: rgba(0, 0, 0, 1); + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; } -.toolbarButton::before { - opacity: 0.7; - opacity: var(--toolbar-icon-opacity); - top: 6px; -} +@media (prefers-color-scheme: dark) { -.secondaryToolbarButton::before { - opacity: 0.9; - opacity: var(--doorhanger-icon-opacity); - top: 5px; + .toolbarButton::before { + background-color: rgba(255, 255, 255, 1); + background-color: var(--toolbar-icon-bg-color); + } } -.toolbarButton::before, .secondaryToolbarButton::before { /* All matching images have a size of 16x16 * All relevant containers have a size of 28x28 */ position: absolute; display: inline-block; - left: 6px; - max-width: 16px; -} + width: 16px; + height: 16px; -html[dir="ltr"] .secondaryToolbarButton::before { - left: 12px; -} -html[dir="rtl"] .secondaryToolbarButton::before { - right: 12px; -} - -.toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle.svg); - content: var(--toolbarButton-sidebarToggle-icon); + content: ""; + background-color: rgba(0, 0, 0, 1); + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; } @media (prefers-color-scheme: dark) { - .toolbarButton#sidebarToggle::before { - content: url(images/toolbarButton-sidebarToggle-dark.svg); - content: var(--toolbarButton-sidebarToggle-icon); + .secondaryToolbarButton::before { + background-color: rgba(255, 255, 255, 1); + background-color: var(--toolbar-icon-bg-color); } } -html[dir="rtl"] .toolbarButton#sidebarToggle::before { - transform: scaleX(-1); -} -.toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle.svg); - content: var(--toolbarButton-secondaryToolbarToggle-icon); +.dropdownToolbarButton::after { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: rgba(0, 0, 0, 1); + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; } @media (prefers-color-scheme: dark) { - .toolbarButton#secondaryToolbarToggle::before { - content: url(images/toolbarButton-secondaryToolbarToggle-dark.svg); - content: var(--toolbarButton-secondaryToolbarToggle-icon); + .dropdownToolbarButton::after { + background-color: rgba(255, 255, 255, 1); + background-color: var(--toolbar-icon-bg-color); } } -html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before { - transform: scaleX(-1); -} -.toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous.svg); - content: var(--findbarButton-previous-icon); +.treeItemToggler::before { + /* All matching images have a size of 16x16 + * All relevant containers have a size of 28x28 */ + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: rgba(0, 0, 0, 1); + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; } @media (prefers-color-scheme: dark) { - .toolbarButton.findPrevious::before { - content: url(images/findbarButton-previous-dark.svg); - content: var(--findbarButton-previous-icon); + .treeItemToggler::before { + background-color: rgba(255, 255, 255, 1); + background-color: var(--toolbar-icon-bg-color); } } -html[dir="rtl"] .toolbarButton.findPrevious::before { - transform: scaleX(-1); -} -.toolbarButton.findNext::before { - content: url(images/findbarButton-next.svg); - content: var(--findbarButton-next-icon); +.toolbarButton::before { + opacity: 0.7; + opacity: var(--toolbar-icon-opacity); + top: 6px; + left: 6px; } -@media (prefers-color-scheme: dark) { - - .toolbarButton.findNext::before { - content: url(images/findbarButton-next-dark.svg); - content: var(--findbarButton-next-icon); - } +.secondaryToolbarButton::before { + opacity: 0.9; + opacity: var(--doorhanger-icon-opacity); + top: 5px; } -html[dir="rtl"] .toolbarButton.findNext::before { - transform: scaleX(-1); +html[dir="ltr"] .secondaryToolbarButton::before { + left: 12px; } - -.toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp.svg); - content: var(--toolbarButton-pageUp-icon); +html[dir="rtl"] .secondaryToolbarButton::before { + right: 12px; } -@media (prefers-color-scheme: dark) { - - .toolbarButton.pageUp::before { - content: url(images/toolbarButton-pageUp-dark.svg); - content: var(--toolbarButton-pageUp-icon); - } +.toolbarButton#sidebarToggle::before { + -webkit-mask-image: url(images/toolbarButton-sidebarToggle.svg); + -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon); + mask-image: url(images/toolbarButton-sidebarToggle.svg); + mask-image: var(--toolbarButton-sidebarToggle-icon); } -html[dir="rtl"] .toolbarButton.pageUp::before { +html[dir="rtl"] .toolbarButton#sidebarToggle::before { transform: scaleX(-1); } -.toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown.svg); - content: var(--toolbarButton-pageDown-icon); -} - -@media (prefers-color-scheme: dark) { - - .toolbarButton.pageDown::before { - content: url(images/toolbarButton-pageDown-dark.svg); - content: var(--toolbarButton-pageDown-icon); - } +.toolbarButton#secondaryToolbarToggle::before { + -webkit-mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg); + -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg); + mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); } -html[dir="rtl"] .toolbarButton.pageDown::before { +html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before { transform: scaleX(-1); } -.toolbarButton.zoomOut::before { - content: url(images/toolbarButton-zoomOut.svg); - content: var(--toolbarButton-zoomOut-icon); +.toolbarButton.findPrevious::before { + -webkit-mask-image: url(images/findbarButton-previous.svg); + -webkit-mask-image: var(--findbarButton-previous-icon); + mask-image: url(images/findbarButton-previous.svg); + mask-image: var(--findbarButton-previous-icon); } -@media (prefers-color-scheme: dark) { - - .toolbarButton.zoomOut::before { - content: url(images/toolbarButton-zoomOut-dark.svg); - content: var(--toolbarButton-zoomOut-icon); - } +.toolbarButton.findNext::before { + -webkit-mask-image: url(images/findbarButton-next.svg); + -webkit-mask-image: var(--findbarButton-next-icon); + mask-image: url(images/findbarButton-next.svg); + mask-image: var(--findbarButton-next-icon); } -.toolbarButton.zoomIn::before { - content: url(images/toolbarButton-zoomIn.svg); - content: var(--toolbarButton-zoomIn-icon); +.toolbarButton.pageUp::before { + -webkit-mask-image: url(images/toolbarButton-pageUp.svg); + -webkit-mask-image: var(--toolbarButton-pageUp-icon); + mask-image: url(images/toolbarButton-pageUp.svg); + mask-image: var(--toolbarButton-pageUp-icon); } -@media (prefers-color-scheme: dark) { - - .toolbarButton.zoomIn::before { - content: url(images/toolbarButton-zoomIn-dark.svg); - content: var(--toolbarButton-zoomIn-icon); - } +.toolbarButton.pageDown::before { + -webkit-mask-image: url(images/toolbarButton-pageDown.svg); + -webkit-mask-image: var(--toolbarButton-pageDown-icon); + mask-image: url(images/toolbarButton-pageDown.svg); + mask-image: var(--toolbarButton-pageDown-icon); } -.toolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode.svg); - content: var(--toolbarButton-presentationMode-icon); +.toolbarButton.zoomOut::before { + -webkit-mask-image: url(images/toolbarButton-zoomOut.svg); + -webkit-mask-image: var(--toolbarButton-zoomOut-icon); + mask-image: url(images/toolbarButton-zoomOut.svg); + mask-image: var(--toolbarButton-zoomOut-icon); } -@media (prefers-color-scheme: dark) { - - .toolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode-dark.svg); - content: var(--toolbarButton-presentationMode-icon); - } +.toolbarButton.zoomIn::before { + -webkit-mask-image: url(images/toolbarButton-zoomIn.svg); + -webkit-mask-image: var(--toolbarButton-zoomIn-icon); + mask-image: url(images/toolbarButton-zoomIn.svg); + mask-image: var(--toolbarButton-zoomIn-icon); } -.secondaryToolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode.svg); - content: var(--toolbarButton-presentationMode-icon); +.toolbarButton.presentationMode::before { + -webkit-mask-image: url(images/toolbarButton-presentationMode.svg); + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: url(images/toolbarButton-presentationMode.svg); + mask-image: var(--toolbarButton-presentationMode-icon); } -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.presentationMode::before { - content: url(images/toolbarButton-presentationMode-dark.svg); - content: var(--toolbarButton-presentationMode-icon); - } +.secondaryToolbarButton.presentationMode::before { + -webkit-mask-image: url(images/toolbarButton-presentationMode.svg); + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: url(images/toolbarButton-presentationMode.svg); + mask-image: var(--toolbarButton-presentationMode-icon); } .toolbarButton.print::before { - content: url(images/toolbarButton-print.svg); - content: var(--toolbarButton-print-icon); -} - -@media (prefers-color-scheme: dark) { - - .toolbarButton.print::before { - content: url(images/toolbarButton-print-dark.svg); - content: var(--toolbarButton-print-icon); - } + -webkit-mask-image: url(images/toolbarButton-print.svg); + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: url(images/toolbarButton-print.svg); + mask-image: var(--toolbarButton-print-icon); } .secondaryToolbarButton.print::before { - content: url(images/toolbarButton-print.svg); - content: var(--toolbarButton-print-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.print::before { - content: url(images/toolbarButton-print-dark.svg); - content: var(--toolbarButton-print-icon); - } + -webkit-mask-image: url(images/toolbarButton-print.svg); + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: url(images/toolbarButton-print.svg); + mask-image: var(--toolbarButton-print-icon); } .toolbarButton.openFile::before { - content: url(images/toolbarButton-openFile.svg); - content: var(--toolbarButton-openFile-icon); -} - -@media (prefers-color-scheme: dark) { - - .toolbarButton.openFile::before { - content: url(images/toolbarButton-openFile-dark.svg); - content: var(--toolbarButton-openFile-icon); - } + -webkit-mask-image: url(images/toolbarButton-openFile.svg); + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: url(images/toolbarButton-openFile.svg); + mask-image: var(--toolbarButton-openFile-icon); } .secondaryToolbarButton.openFile::before { - content: url(images/toolbarButton-openFile.svg); - content: var(--toolbarButton-openFile-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.openFile::before { - content: url(images/toolbarButton-openFile-dark.svg); - content: var(--toolbarButton-openFile-icon); - } + -webkit-mask-image: url(images/toolbarButton-openFile.svg); + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: url(images/toolbarButton-openFile.svg); + mask-image: var(--toolbarButton-openFile-icon); } .toolbarButton.download::before { - content: url(images/toolbarButton-download.svg); - content: var(--toolbarButton-download-icon); -} - -@media (prefers-color-scheme: dark) { - - .toolbarButton.download::before { - content: url(images/toolbarButton-download-dark.svg); - content: var(--toolbarButton-download-icon); - } + -webkit-mask-image: url(images/toolbarButton-download.svg); + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: url(images/toolbarButton-download.svg); + mask-image: var(--toolbarButton-download-icon); } .secondaryToolbarButton.download::before { - content: url(images/toolbarButton-download.svg); - content: var(--toolbarButton-download-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.download::before { - content: url(images/toolbarButton-download-dark.svg); - content: var(--toolbarButton-download-icon); - } + -webkit-mask-image: url(images/toolbarButton-download.svg); + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: url(images/toolbarButton-download.svg); + mask-image: var(--toolbarButton-download-icon); } .secondaryToolbarButton.bookmark { @@ -2728,97 +2648,65 @@ html[dir="rtl"] .toolbarButton.pageDown::before { } .toolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark.svg); - content: var(--toolbarButton-bookmark-icon); -} - -@media (prefers-color-scheme: dark) { - - .toolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark-dark.svg); - content: var(--toolbarButton-bookmark-icon); - } + -webkit-mask-image: url(images/toolbarButton-bookmark.svg); + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: url(images/toolbarButton-bookmark.svg); + mask-image: var(--toolbarButton-bookmark-icon); } .secondaryToolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark.svg); - content: var(--toolbarButton-bookmark-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.bookmark::before { - content: url(images/toolbarButton-bookmark-dark.svg); - content: var(--toolbarButton-bookmark-icon); - } + -webkit-mask-image: url(images/toolbarButton-bookmark.svg); + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: url(images/toolbarButton-bookmark.svg); + mask-image: var(--toolbarButton-bookmark-icon); } #viewThumbnail.toolbarButton::before { - content: url(images/toolbarButton-viewThumbnail.svg); - content: var(--toolbarButton-viewThumbnail-icon); -} - -@media (prefers-color-scheme: dark) { - - #viewThumbnail.toolbarButton::before { - content: url(images/toolbarButton-viewThumbnail-dark.svg); - content: var(--toolbarButton-viewThumbnail-icon); - } + -webkit-mask-image: url(images/toolbarButton-viewThumbnail.svg); + -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon); + mask-image: url(images/toolbarButton-viewThumbnail.svg); + mask-image: var(--toolbarButton-viewThumbnail-icon); } #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline.svg); - content: var(--toolbarButton-viewOutline-icon); -} - -@media (prefers-color-scheme: dark) { - - #viewOutline.toolbarButton::before { - content: url(images/toolbarButton-viewOutline-dark.svg); - content: var(--toolbarButton-viewOutline-icon); - } + -webkit-mask-image: url(images/toolbarButton-viewOutline.svg); + -webkit-mask-image: var(--toolbarButton-viewOutline-icon); + mask-image: url(images/toolbarButton-viewOutline.svg); + mask-image: var(--toolbarButton-viewOutline-icon); } html[dir="rtl"] #viewOutline.toolbarButton::before { transform: scaleX(-1); } #viewAttachments.toolbarButton::before { - content: url(images/toolbarButton-viewAttachments.svg); - content: var(--toolbarButton-viewAttachments-icon); -} - -@media (prefers-color-scheme: dark) { - - #viewAttachments.toolbarButton::before { - content: url(images/toolbarButton-viewAttachments-dark.svg); - content: var(--toolbarButton-viewAttachments-icon); - } + -webkit-mask-image: url(images/toolbarButton-viewAttachments.svg); + -webkit-mask-image: var(--toolbarButton-viewAttachments-icon); + mask-image: url(images/toolbarButton-viewAttachments.svg); + mask-image: var(--toolbarButton-viewAttachments-icon); } #viewLayers.toolbarButton::before { - content: url(images/toolbarButton-viewLayers.svg); - content: var(--toolbarButton-viewLayers-icon); + -webkit-mask-image: url(images/toolbarButton-viewLayers.svg); + -webkit-mask-image: var(--toolbarButton-viewLayers-icon); + mask-image: url(images/toolbarButton-viewLayers.svg); + mask-image: var(--toolbarButton-viewLayers-icon); } -@media (prefers-color-scheme: dark) { - - #viewLayers.toolbarButton::before { - content: url(images/toolbarButton-viewLayers-dark.svg); - content: var(--toolbarButton-viewLayers-icon); - } +#currentOutlineItem.toolbarButton::before { + -webkit-mask-image: url(images/toolbarButton-currentOutlineItem.svg); + -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon); + mask-image: url(images/toolbarButton-currentOutlineItem.svg); + mask-image: var(--toolbarButton-currentOutlineItem-icon); } - -#viewFind.toolbarButton::before { - content: url(images/toolbarButton-search.svg); - content: var(--toolbarButton-search-icon); +html[dir="rtl"] #currentOutlineItem.toolbarButton::before { + transform: scaleX(-1); } -@media (prefers-color-scheme: dark) { - - #viewFind.toolbarButton::before { - content: url(images/toolbarButton-search-dark.svg); - content: var(--toolbarButton-search-icon); - } +#viewFind.toolbarButton::before { + -webkit-mask-image: url(images/toolbarButton-search.svg); + -webkit-mask-image: var(--toolbarButton-search-icon); + mask-image: url(images/toolbarButton-search.svg); + mask-image: var(--toolbarButton-search-icon); } .toolbarButton.pdfSidebarNotification::after { @@ -2842,7 +2730,7 @@ html[dir="rtl"] .toolbarButton.pdfSidebarNotification::after { .secondaryToolbarButton { position: relative; margin: 0; - padding: 0 0 1px 0; + padding: 0 0 1px; height: auto; min-height: 26px; width: auto; @@ -2868,172 +2756,94 @@ html[dir="rtl"] .secondaryToolbarButton > span { } .secondaryToolbarButton.firstPage::before { - content: url(images/secondaryToolbarButton-firstPage.svg); - content: var(--secondaryToolbarButton-firstPage-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.firstPage::before { - content: url(images/secondaryToolbarButton-firstPage-dark.svg); - content: var(--secondaryToolbarButton-firstPage-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-firstPage.svg); + -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); + mask-image: url(images/secondaryToolbarButton-firstPage.svg); + mask-image: var(--secondaryToolbarButton-firstPage-icon); } .secondaryToolbarButton.lastPage::before { - content: url(images/secondaryToolbarButton-lastPage.svg); - content: var(--secondaryToolbarButton-lastPage-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.lastPage::before { - content: url(images/secondaryToolbarButton-lastPage-dark.svg); - content: var(--secondaryToolbarButton-lastPage-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-lastPage.svg); + -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); + mask-image: url(images/secondaryToolbarButton-lastPage.svg); + mask-image: var(--secondaryToolbarButton-lastPage-icon); } .secondaryToolbarButton.rotateCcw::before { - content: url(images/secondaryToolbarButton-rotateCcw.svg); - content: var(--secondaryToolbarButton-rotateCcw-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.rotateCcw::before { - content: url(images/secondaryToolbarButton-rotateCcw-dark.svg); - content: var(--secondaryToolbarButton-rotateCcw-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-rotateCcw.svg); + -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); + mask-image: url(images/secondaryToolbarButton-rotateCcw.svg); + mask-image: var(--secondaryToolbarButton-rotateCcw-icon); } .secondaryToolbarButton.rotateCw::before { - content: url(images/secondaryToolbarButton-rotateCw.svg); - content: var(--secondaryToolbarButton-rotateCw-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.rotateCw::before { - content: url(images/secondaryToolbarButton-rotateCw-dark.svg); - content: var(--secondaryToolbarButton-rotateCw-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-rotateCw.svg); + -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); + mask-image: url(images/secondaryToolbarButton-rotateCw.svg); + mask-image: var(--secondaryToolbarButton-rotateCw-icon); } .secondaryToolbarButton.selectTool::before { - content: url(images/secondaryToolbarButton-selectTool.svg); - content: var(--secondaryToolbarButton-selectTool-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.selectTool::before { - content: url(images/secondaryToolbarButton-selectTool-dark.svg); - content: var(--secondaryToolbarButton-selectTool-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-selectTool.svg); + -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); + mask-image: url(images/secondaryToolbarButton-selectTool.svg); + mask-image: var(--secondaryToolbarButton-selectTool-icon); } .secondaryToolbarButton.handTool::before { - content: url(images/secondaryToolbarButton-handTool.svg); - content: var(--secondaryToolbarButton-handTool-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.handTool::before { - content: url(images/secondaryToolbarButton-handTool-dark.svg); - content: var(--secondaryToolbarButton-handTool-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-handTool.svg); + -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); + mask-image: url(images/secondaryToolbarButton-handTool.svg); + mask-image: var(--secondaryToolbarButton-handTool-icon); } .secondaryToolbarButton.scrollVertical::before { - content: url(images/secondaryToolbarButton-scrollVertical.svg); - content: var(--secondaryToolbarButton-scrollVertical-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.scrollVertical::before { - content: url(images/secondaryToolbarButton-scrollVertical-dark.svg); - content: var(--secondaryToolbarButton-scrollVertical-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-scrollVertical.svg); + -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); + mask-image: url(images/secondaryToolbarButton-scrollVertical.svg); + mask-image: var(--secondaryToolbarButton-scrollVertical-icon); } .secondaryToolbarButton.scrollHorizontal::before { - content: url(images/secondaryToolbarButton-scrollHorizontal.svg); - content: var(--secondaryToolbarButton-scrollHorizontal-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.scrollHorizontal::before { - content: url(images/secondaryToolbarButton-scrollHorizontal-dark.svg); - content: var(--secondaryToolbarButton-scrollHorizontal-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg); + -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg); + mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); } .secondaryToolbarButton.scrollWrapped::before { - content: url(images/secondaryToolbarButton-scrollWrapped.svg); - content: var(--secondaryToolbarButton-scrollWrapped-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.scrollWrapped::before { - content: url(images/secondaryToolbarButton-scrollWrapped-dark.svg); - content: var(--secondaryToolbarButton-scrollWrapped-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg); + -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg); + mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); } .secondaryToolbarButton.spreadNone::before { - content: url(images/secondaryToolbarButton-spreadNone.svg); - content: var(--secondaryToolbarButton-spreadNone-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.spreadNone::before { - content: url(images/secondaryToolbarButton-spreadNone-dark.svg); - content: var(--secondaryToolbarButton-spreadNone-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-spreadNone.svg); + -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); + mask-image: url(images/secondaryToolbarButton-spreadNone.svg); + mask-image: var(--secondaryToolbarButton-spreadNone-icon); } .secondaryToolbarButton.spreadOdd::before { - content: url(images/secondaryToolbarButton-spreadOdd.svg); - content: var(--secondaryToolbarButton-spreadOdd-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.spreadOdd::before { - content: url(images/secondaryToolbarButton-spreadOdd-dark.svg); - content: var(--secondaryToolbarButton-spreadOdd-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-spreadOdd.svg); + -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); + mask-image: url(images/secondaryToolbarButton-spreadOdd.svg); + mask-image: var(--secondaryToolbarButton-spreadOdd-icon); } .secondaryToolbarButton.spreadEven::before { - content: url(images/secondaryToolbarButton-spreadEven.svg); - content: var(--secondaryToolbarButton-spreadEven-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.spreadEven::before { - content: url(images/secondaryToolbarButton-spreadEven-dark.svg); - content: var(--secondaryToolbarButton-spreadEven-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-spreadEven.svg); + -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); + mask-image: url(images/secondaryToolbarButton-spreadEven.svg); + mask-image: var(--secondaryToolbarButton-spreadEven-icon); } .secondaryToolbarButton.documentProperties::before { - content: url(images/secondaryToolbarButton-documentProperties.svg); - content: var(--secondaryToolbarButton-documentProperties-icon); -} - -@media (prefers-color-scheme: dark) { - - .secondaryToolbarButton.documentProperties::before { - content: url(images/secondaryToolbarButton-documentProperties-dark.svg); - content: var(--secondaryToolbarButton-documentProperties-icon); - } + -webkit-mask-image: url(images/secondaryToolbarButton-documentProperties.svg); + -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); + mask-image: url(images/secondaryToolbarButton-documentProperties.svg); + mask-image: var(--secondaryToolbarButton-documentProperties-icon); } .verticalToolbarSeparator { @@ -3061,7 +2871,7 @@ html[dir="rtl"] .verticalToolbarSeparator { .horizontalToolbarSeparator { display: block; - margin: 6px 0 5px 0; + margin: 6px 0 5px; height: 1px; width: 100%; border-top: 1px solid rgba(222, 222, 222, 1); @@ -3078,7 +2888,7 @@ html[dir="rtl"] .verticalToolbarSeparator { .toolbarField { padding: 4px 7px; - margin: 3px 0 3px 0; + margin: 3px 0; border-radius: 2px; background-color: rgba(255, 255, 255, 1); background-color: var(--field-bg-color); @@ -3215,7 +3025,7 @@ html[dir="rtl"] #numPages.toolbarLabel { } .thumbnail { - margin: 0 10px 5px 10px; + margin: 0 10px 5px; } html[dir="ltr"] .thumbnail { float: left; @@ -3234,7 +3044,7 @@ html[dir="rtl"] .thumbnail { .thumbnail:not([data-loaded]) { border: 1px dashed rgba(132, 132, 132, 1); - margin: -1px 9px 4px 9px; + margin: -1px 9px 4px; } .thumbnailImage { @@ -3341,7 +3151,7 @@ html[dir="rtl"] .treeItem > .treeItems { margin-bottom: 1px; border-radius: 2px; color: rgba(0, 0, 0, 0.8); - color: var(--outline-color); + color: var(--treeitem-color); font-size: 13px; line-height: 15px; -webkit-user-select: none; @@ -3356,7 +3166,7 @@ html[dir="rtl"] .treeItem > .treeItems { .treeItem > a { color: rgba(255, 255, 255, 0.8); - color: var(--outline-color); + color: var(--treeitem-color); } } html[dir="ltr"] .treeItem > a { @@ -3383,30 +3193,16 @@ html[dir="rtl"] #layersView .treesItem > a > label { color: rgba(255, 255, 255, 0.5); } .treeItemToggler::before { - content: url(images/treeitem-expanded.svg); - content: var(--treeitem-expanded-icon); - display: inline-block; - position: absolute; - max-width: 16px; -} -@media (prefers-color-scheme: dark) { - - .treeItemToggler::before { - content: url(images/treeitem-expanded-dark.svg); - content: var(--treeitem-expanded-icon); - } + -webkit-mask-image: url(images/treeitem-expanded.svg); + -webkit-mask-image: var(--treeitem-expanded-icon); + mask-image: url(images/treeitem-expanded.svg); + mask-image: var(--treeitem-expanded-icon); } .treeItemToggler.treeItemsHidden::before { - content: url(images/treeitem-collapsed.svg); - content: var(--treeitem-collapsed-icon); - max-width: 16px; -} -@media (prefers-color-scheme: dark) { - - .treeItemToggler.treeItemsHidden::before { - content: url(images/treeitem-collapsed-dark.svg); - content: var(--treeitem-collapsed-icon); - } + -webkit-mask-image: url(images/treeitem-collapsed.svg); + -webkit-mask-image: var(--treeitem-collapsed-icon); + mask-image: url(images/treeitem-collapsed.svg); + mask-image: var(--treeitem-collapsed-icon); } html[dir="rtl"] .treeItemToggler.treeItemsHidden::before { transform: scaleX(-1); @@ -3427,20 +3223,43 @@ html[dir="rtl"] .treeItemToggler::before { left: 4px; } +.treeItem.selected > a { + background-color: rgba(0, 0, 0, 0.25); + background-color: var(--treeitem-selected-bg-color); + color: rgba(0, 0, 0, 0.9); + color: var(--treeitem-selected-color); +} + +@media (prefers-color-scheme: dark) { + + .treeItem.selected > a { + color: rgba(255, 255, 255, 0.9); + color: var(--treeitem-selected-color); + } +} + +@media (prefers-color-scheme: dark) { + + .treeItem.selected > a { + background-color: rgba(255, 255, 255, 0.25); + background-color: var(--treeitem-selected-bg-color); + } +} + .treeItemToggler:hover { background-color: rgba(0, 0, 0, 0.15); background-color: var(--sidebaritem-bg-color); background-clip: padding-box; border-radius: 2px; color: rgba(0, 0, 0, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } @media (prefers-color-scheme: dark) { .treeItemToggler:hover { color: rgba(255, 255, 255, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } } @@ -3458,14 +3277,14 @@ html[dir="rtl"] .treeItemToggler::before { background-clip: padding-box; border-radius: 2px; color: rgba(0, 0, 0, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } @media (prefers-color-scheme: dark) { .treeItemToggler:hover + a { color: rgba(255, 255, 255, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } } @@ -3483,14 +3302,14 @@ html[dir="rtl"] .treeItemToggler::before { background-clip: padding-box; border-radius: 2px; color: rgba(0, 0, 0, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } @media (prefers-color-scheme: dark) { .treeItemToggler:hover ~ .treeItems { color: rgba(255, 255, 255, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } } @@ -3508,14 +3327,14 @@ html[dir="rtl"] .treeItemToggler::before { background-clip: padding-box; border-radius: 2px; color: rgba(0, 0, 0, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } @media (prefers-color-scheme: dark) { .treeItem > a:hover { color: rgba(255, 255, 255, 0.9); - color: var(--outline-hover-color); + color: var(--treeitem-hover-color); } } @@ -3527,37 +3346,6 @@ html[dir="rtl"] .treeItemToggler::before { } } -.treeItem.selected { - background-color: rgba(0, 0, 0, 1); - background-color: var(--outline-active-bg-color); - background-clip: padding-box; - color: rgba(0, 0, 0, 0.08); - color: var(--outline-active-color); -} - -@media (prefers-color-scheme: dark) { - - .treeItem.selected { - color: rgba(255, 255, 255, 0.08); - color: var(--outline-active-color); - } -} - -@media (prefers-color-scheme: dark) { - - .treeItem.selected { - background-color: rgba(255, 255, 255, 1); - background-color: var(--outline-active-bg-color); - } -} - -.noResults { - font-size: 12px; - color: rgba(255, 255, 255, 0.8); - font-style: italic; - cursor: default; -} - /* TODO: file FF bug to support ::-moz-selection:window-inactive so we can override the opaque grey background when the window is inactive; see https://bugzilla.mozilla.org/show_bug.cgi?id=706209 */ @@ -3595,9 +3383,6 @@ html[dir="rtl"] .treeItemToggler::before { background: none repeat scroll 0 0 var(--errorWrapper-bg-color); } } -.loadingInProgress #errorWrapper { - top: 37px; -} #errorMessageLeft { float: left; @@ -3645,8 +3430,8 @@ html[dir="rtl"] .treeItemToggler::before { .overlayButton { width: auto; - margin: 3px 4px 2px 4px !important; - padding: 2px 11px 2px 11px; + margin: 3px 4px 2px !important; + padding: 2px 11px; } #overlayContainer { @@ -3713,7 +3498,7 @@ html[dir="rtl"] .treeItemToggler::before { .dialog .separator { display: block; - margin: 4px 0 4px 0; + margin: 4px 0; height: 1px; width: 100%; background-color: rgba(0, 0, 0, 0.3); @@ -3989,10 +3774,10 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * { } html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer { - left: 0px !important; + left: 0 !important; } html[dir="rtl"] #outerContainer.sidebarOpen #viewerContainer { - right: 0px !important; + right: 0 !important; } #outerContainer .hiddenLargeView, diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html index ed57f3f1c..7b8dd7663 100644 --- a/third-party/pdfjs/web/viewer.html +++ b/third-party/pdfjs/web/viewer.html @@ -42,24 +42,36 @@ See https://github.com/adobe-type-tools/cmap-resources </head> - <body tabindex="1" class="loadingInProgress"> + <body tabindex="1"> <div id="outerContainer"> <div id="sidebarContainer"> <div id="toolbarSidebar"> - <div class="splitToolbarButton toggled"> - <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs"> - <span data-l10n-id="thumbs_label">Thumbnails</span> - </button> - <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3" data-l10n-id="document_outline"> - <span data-l10n-id="document_outline_label">Document Outline</span> - </button> - <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" data-l10n-id="attachments"> - <span data-l10n-id="attachments_label">Attachments</span> - </button> - <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all layers to the default state)" tabindex="5" data-l10n-id="layers"> - <span data-l10n-id="layers_label">Layers</span> - </button> + <div id="toolbarSidebarLeft"> + <div class="splitToolbarButton toggled"> + <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs"> + <span data-l10n-id="thumbs_label">Thumbnails</span> + </button> + <button id="viewOutline" class="toolbarButton" title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3" data-l10n-id="document_outline"> + <span data-l10n-id="document_outline_label">Document Outline</span> + </button> + <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" data-l10n-id="attachments"> + <span data-l10n-id="attachments_label">Attachments</span> + </button> + <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all layers to the default state)" tabindex="5" data-l10n-id="layers"> + <span data-l10n-id="layers_label">Layers</span> + </button> + </div> + </div> + + <div id="toolbarSidebarRight"> + <div id="outlineOptionsContainer" class="hidden"> + <div class="verticalToolbarSeparator"></div> + + <button id="currentOutlineItem" class="toolbarButton" disabled="disabled" title="Find Current Outline Item" tabindex="6" data-l10n-id="current_outline_item"> + <span data-l10n-id="current_outline_item_label">Current Outline Item</span> + </button> + </div> </div> </div> <div id="sidebarContent"> @@ -72,7 +84,7 @@ See https://github.com/adobe-type-tools/cmap-resources <div id="layersView" class="hidden"> </div> </div> - <div id="sidebarResizer" class="hidden"></div> + <div id="sidebarResizer"></div> </div> <!-- sidebarContainer --> <div id="mainContainer"> diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js index 1d54e92c7..ed36e7f02 100644 --- a/third-party/pdfjs/web/viewer.js +++ b/third-party/pdfjs/web/viewer.js @@ -21,112 +21,46 @@ * Javascript code in this page */ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ([ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ /* 0 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); + +var _app_options = __webpack_require__(1); + +var _app = __webpack_require__(3); + +const pdfjsVersion = '2.7.570'; +const pdfjsBuild = 'f2c7338b0'; +window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationOptions = _app_options.AppOptions; ; -let pdfjsWebApp, pdfjsWebAppOptions; -{ - pdfjsWebApp = __webpack_require__(1); - pdfjsWebAppOptions = __webpack_require__(3); -} ; { __webpack_require__(35); } ; { - __webpack_require__(40); + __webpack_require__(41); } function getViewerConfiguration() { @@ -193,7 +127,9 @@ function getViewerConfiguration() { thumbnailView: document.getElementById("thumbnailView"), outlineView: document.getElementById("outlineView"), attachmentsView: document.getElementById("attachmentsView"), - layersView: document.getElementById("layersView") + layersView: document.getElementById("layersView"), + outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), + currentOutlineItemButton: document.getElementById("currentOutlineItem") }, sidebarResizer: { outerContainer: document.getElementById("outerContainer"), @@ -256,8 +192,6 @@ function getViewerConfiguration() { function webViewerLoad() { const config = getViewerConfiguration(); - window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication; - window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions; const event = document.createEvent("CustomEvent"); event.initCustomEvent("webviewerloaded", true, true, { source: window @@ -270,7 +204,7 @@ function webViewerLoad() { document.dispatchEvent(event); } - pdfjsWebApp.PDFViewerApplication.run(config); + _app.PDFViewerApplication.run(config); } if (document.readyState === "interactive" || document.readyState === "complete") { @@ -281,19 +215,321 @@ if (document.readyState === "interactive" || document.readyState === "complete") /***/ }), /* 1 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = void 0; +})); +exports.OptionKind = exports.AppOptions = void 0; -var _ui_utils = __webpack_require__(2); +var _viewer_compatibility = __webpack_require__(2); -var _app_options = __webpack_require__(3); +const OptionKind = { + VIEWER: 0x02, + API: 0x04, + WORKER: 0x08, + PREFERENCE: 0x80 +}; +exports.OptionKind = OptionKind; +const defaultOptions = { + cursorToolOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultUrl: { + value: "compressed.tracemonkey-pldi-09.pdf", + kind: OptionKind.VIEWER + }, + defaultZoomValue: { + value: "", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + disableHistory: { + value: false, + kind: OptionKind.VIEWER + }, + disablePageLabels: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePermissions: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePrintAutoRotate: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableScripting: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableWebGL: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + externalLinkRel: { + value: "noopener noreferrer nofollow", + kind: OptionKind.VIEWER + }, + externalLinkTarget: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + historyUpdateUrl: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + ignoreDestinationZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + imageResourcesPath: { + value: "./images/", + kind: OptionKind.VIEWER + }, + maxCanvasPixels: { + value: 16777216, + compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels, + kind: OptionKind.VIEWER + }, + pdfBugEnabled: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + printResolution: { + value: 150, + kind: OptionKind.VIEWER + }, + renderer: { + value: "canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + renderInteractiveForms: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + sidebarViewOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + scrollModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + spreadModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + textLayerMode: { + value: 1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + useOnlyCssZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewerCssTheme: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cMapPacked: { + value: true, + kind: OptionKind.API + }, + cMapUrl: { + value: "../web/cmaps/", + kind: OptionKind.API + }, + disableAutoFetch: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableFontFace: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableRange: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableStream: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + docBaseUrl: { + value: "", + kind: OptionKind.API + }, + fontExtraProperties: { + value: false, + kind: OptionKind.API + }, + isEvalSupported: { + value: true, + kind: OptionKind.API + }, + maxImageSize: { + value: -1, + kind: OptionKind.API + }, + pdfBug: { + value: false, + kind: OptionKind.API + }, + verbosity: { + value: 1, + kind: OptionKind.API + }, + workerPort: { + value: null, + kind: OptionKind.WORKER + }, + workerSrc: { + value: "../build/pdf.worker.js", + kind: OptionKind.WORKER + } +}; +{ + defaultOptions.disablePreferences = { + value: false, + kind: OptionKind.VIEWER + }; + defaultOptions.locale = { + value: typeof navigator !== "undefined" ? navigator.language : "en-US", + kind: OptionKind.VIEWER + }; + defaultOptions.sandboxBundleSrc = { + value: "../build/pdf.sandbox.js", + kind: OptionKind.VIEWER + }; +} +const userOptions = Object.create(null); + +class AppOptions { + constructor() { + throw new Error("Cannot initialize AppOptions."); + } + + static get(name) { + const userOption = userOptions[name]; + + if (userOption !== undefined) { + return userOption; + } + + const defaultOption = defaultOptions[name]; + + if (defaultOption !== undefined) { + return defaultOption.compatibility || defaultOption.value; + } + + return undefined; + } + + static getAll(kind = null) { + const options = Object.create(null); + + for (const name in defaultOptions) { + const defaultOption = defaultOptions[name]; + + if (kind) { + if ((kind & defaultOption.kind) === 0) { + continue; + } + + if (kind === OptionKind.PREFERENCE) { + const value = defaultOption.value, + valueType = typeof value; + + if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { + options[name] = value; + continue; + } + + throw new Error(`Invalid type for preference: ${name}`); + } + } + + const userOption = userOptions[name]; + options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || defaultOption.value; + } + + return options; + } + + static set(name, value) { + userOptions[name] = value; + } + + static setAll(options) { + for (const name in options) { + userOptions[name] = options[name]; + } + } + + static remove(name) { + delete userOptions[name]; + } + +} + +exports.AppOptions = AppOptions; + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.viewerCompatibilityParams = void 0; +const compatibilityParams = Object.create(null); +{ + const userAgent = typeof navigator !== "undefined" && navigator.userAgent || ""; + const platform = typeof navigator !== "undefined" && navigator.platform || ""; + const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + const isIOSChrome = /CriOS/.test(userAgent); + + (function checkOnBlobSupport() { + if (isIOSChrome) { + compatibilityParams.disableCreateObjectURL = true; + } + })(); + + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const viewerCompatibilityParams = Object.freeze(compatibilityParams); +exports.viewerCompatibilityParams = viewerCompatibilityParams; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; + +var _ui_utils = __webpack_require__(4); + +var _app_options = __webpack_require__(1); var _pdfjsLib = __webpack_require__(5); @@ -301,29 +537,29 @@ var _pdf_cursor_tools = __webpack_require__(6); var _pdf_rendering_queue = __webpack_require__(8); -var _pdf_sidebar = __webpack_require__(9); +var _overlay_manager = __webpack_require__(9); -var _overlay_manager = __webpack_require__(10); +var _password_prompt = __webpack_require__(10); -var _password_prompt = __webpack_require__(11); +var _pdf_attachment_viewer = __webpack_require__(11); -var _pdf_attachment_viewer = __webpack_require__(12); +var _pdf_document_properties = __webpack_require__(13); -var _pdf_document_properties = __webpack_require__(14); +var _pdf_find_bar = __webpack_require__(14); -var _pdf_find_bar = __webpack_require__(15); +var _pdf_find_controller = __webpack_require__(15); -var _pdf_find_controller = __webpack_require__(16); +var _pdf_history = __webpack_require__(17); -var _pdf_history = __webpack_require__(18); +var _pdf_layer_viewer = __webpack_require__(18); -var _pdf_layer_viewer = __webpack_require__(19); +var _pdf_link_service = __webpack_require__(19); -var _pdf_link_service = __webpack_require__(20); +var _pdf_outline_viewer = __webpack_require__(20); -var _pdf_outline_viewer = __webpack_require__(21); +var _pdf_presentation_mode = __webpack_require__(21); -var _pdf_presentation_mode = __webpack_require__(22); +var _pdf_sidebar = __webpack_require__(22); var _pdf_sidebar_resizer = __webpack_require__(23); @@ -335,7 +571,7 @@ var _secondary_toolbar = __webpack_require__(31); var _toolbar = __webpack_require__(33); -var _viewer_compatibility = __webpack_require__(4); +var _viewer_compatibility = __webpack_require__(2); var _view_history = __webpack_require__(34); @@ -349,6 +585,11 @@ const ViewOnLoad = { PREVIOUS: 0, INITIAL: 1 }; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"]; const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"]; @@ -363,7 +604,7 @@ class DefaultExternalServices { static initPassiveLoading(callbacks) {} - static fallback(data, callback) {} + static async fallback(data) {} static reportTelemetry(data) {} @@ -379,6 +620,10 @@ class DefaultExternalServices { throw new Error("Not implemented: createL10n"); } + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + static get supportsIntegratedFind() { return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); } @@ -436,17 +681,26 @@ const PDFViewerApplication = { url: "", baseUrl: "", externalServices: DefaultExternalServices, - _boundEvents: {}, - contentDispositionFilename: null, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, triggerDelayedFallback: null, _saveInProgress: false, _wheelUnusedTicks: 0, + _idleCallbacks: new Set(), + _scriptingInstance: null, + _mouseState: Object.create(null), async initialize(appConfig) { this.preferences = this.externalServices.createPreferences(); this.appConfig = appConfig; await this._readPreferences(); await this._parseHashParameters(); + + this._forceCssTheme(); + await this._initializeL10n(); if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdfjsLib.LinkTarget.NONE) { @@ -472,13 +726,9 @@ const PDFViewerApplication = { } try { - const prefs = await this.preferences.getAll(); - - for (const name in prefs) { - _app_options.AppOptions.set(name, prefs[name]); - } + _app_options.AppOptions.setAll(await this.preferences.getAll()); } catch (reason) { - console.error(`_readPreferences: "${reason.message}".`); + console.error(`_readPreferences: "${reason?.message}".`); } }, @@ -557,6 +807,10 @@ const PDFViewerApplication = { _app_options.AppOptions.set("locale", hashParams.locale); } + if (waitOn.length === 0) { + return undefined; + } + return Promise.all(waitOn).catch(reason => { console.error(`_parseHashParameters: "${reason.message}".`); }); @@ -570,6 +824,41 @@ const PDFViewerApplication = { document.getElementsByTagName("html")[0].dir = dir; }, + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + + if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + + const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); + + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + async _initializeViewerComponents() { const appConfig = this.appConfig; const eventBus = appConfig.eventBus || new _ui_utils.EventBus({ @@ -612,7 +901,9 @@ const PDFViewerApplication = { renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"), enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), - maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels") + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enableScripting: _app_options.AppOptions.get("enableScripting"), + mouseState: this._mouseState }); pdfRenderingQueue.setViewer(this.pdfViewer); pdfLinkService.setViewer(this.pdfViewer); @@ -743,10 +1034,6 @@ const PDFViewerApplication = { this.pdfViewer.currentPageNumber = val; }, - get printing() { - return !!this.printService; - }, - get supportsPrinting() { return PDFPrintServiceFactory.instance.supportsPrinting; }, @@ -754,9 +1041,9 @@ const PDFViewerApplication = { get supportsFullscreen() { let support; const doc = document.documentElement; - support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen); + support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen); - if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) { + if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false) { support = false; } @@ -808,6 +1095,52 @@ const PDFViewerApplication = { document.title = title; }, + get _docFilename() { + return this._contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url); + }, + + _cancelIdleCallbacks() { + if (!this._idleCallbacks.size) { + return; + } + + for (const callback of this._idleCallbacks) { + window.cancelIdleCallback(callback); + } + + this._idleCallbacks.clear(); + }, + + async _destroyScriptingInstance() { + if (!this._scriptingInstance) { + return; + } + + const { + scripting, + internalEvents, + domEvents + } = this._scriptingInstance; + + try { + await scripting.destroySandbox(); + } catch (ex) {} + + for (const [name, listener] of internalEvents) { + this.eventBus._off(name, listener); + } + + internalEvents.clear(); + + for (const [name, listener] of domEvents) { + window.removeEventListener(name, listener); + } + + domEvents.clear(); + delete this._mouseState.isDown; + this._scriptingInstance = null; + }, + async close() { const errorWrapper = this.appConfig.errorWrapper.container; errorWrapper.setAttribute("hidden", "true"); @@ -816,7 +1149,8 @@ const PDFViewerApplication = { return undefined; } - const promise = this.pdfLoadingTask.destroy(); + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); this.pdfLoadingTask = null; if (this.pdfDocument) { @@ -833,9 +1167,16 @@ const PDFViewerApplication = { this.downloadComplete = false; this.url = ""; this.baseUrl = ""; - this.contentDispositionFilename = null; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; this.triggerDelayedFallback = null; this._saveInProgress = false; + + this._cancelIdleCallbacks(); + + promises.push(this._destroyScriptingInstance()); this.pdfSidebar.reset(); this.pdfOutlineViewer.reset(); this.pdfAttachmentViewer.reset(); @@ -856,7 +1197,8 @@ const PDFViewerApplication = { PDFBug.cleanup(); } - return promise; + await Promise.all(promises); + return undefined; }, async open(file, args) { @@ -894,13 +1236,7 @@ const PDFViewerApplication = { if (args) { for (const key in args) { - const value = args[key]; - - if (key === "length") { - this.pdfDocumentProperties.setFileSize(value); - } - - parameters[key] = value; + parameters[key] = args[key]; } } @@ -928,7 +1264,7 @@ const PDFViewerApplication = { return undefined; } - const message = exception && exception.message; + const message = exception?.message; let loadingErrorMessage; if (exception instanceof _pdfjsLib.InvalidPDFException) { @@ -957,13 +1293,9 @@ const PDFViewerApplication = { downloadManager.downloadUrl(url, filename); } - const url = this.baseUrl; - const filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url); - const downloadManager = this.downloadManager; - - downloadManager.onerror = err => { - this.error(`PDF failed to download: ${err}`); - }; + const downloadManager = this.downloadManager, + url = this.baseUrl, + filename = this._docFilename; if (!this.pdfDocument || !this.downloadComplete) { downloadByUrl(); @@ -978,20 +1310,16 @@ const PDFViewerApplication = { }).catch(downloadByUrl); }, - save({ + async save({ sourceEventType = "download" } = {}) { if (this._saveInProgress) { return; } - const url = this.baseUrl; - const filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url); - const downloadManager = this.downloadManager; - - downloadManager.onerror = err => { - this.error(`PDF failed to be saved: ${err}`); - }; + const downloadManager = this.downloadManager, + url = this.baseUrl, + filename = this._docFilename; if (!this.pdfDocument || !this.downloadComplete) { this.download({ @@ -1001,6 +1329,10 @@ const PDFViewerApplication = { } this._saveInProgress = true; + await this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); this.pdfDocument.saveDocument(this.pdfDocument.annotationStorage).then(data => { const blob = new Blob([data], { type: "application/pdf" @@ -1010,11 +1342,23 @@ const PDFViewerApplication = { this.download({ sourceEventType }); - }).finally(() => { + }).finally(async () => { + await this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); this._saveInProgress = false; }); }, + downloadOrSave(options) { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(options); + } else { + this.download(options); + } + }, + _delayedFallback(featureId) { this.externalServices.reportTelemetry({ type: "unsupportedFeature", @@ -1043,12 +1387,12 @@ const PDFViewerApplication = { this.externalServices.fallback({ featureId, url: this.baseUrl - }, function response(download) { + }).then(download => { if (!download) { return; } - PDFViewerApplication.download({ + this.download({ sourceEventType: "download" }); }); @@ -1150,7 +1494,10 @@ const PDFViewerApplication = { load(pdfDocument) { this.pdfDocument = pdfDocument; - pdfDocument.getDownloadInfo().then(() => { + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; this.downloadComplete = true; this.loadingBar.hide(); firstPagePromise.then(() => { @@ -1168,16 +1515,6 @@ const PDFViewerApplication = { baseDocumentUrl = null; this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); this.pdfDocumentProperties.setDocument(pdfDocument, this.url); - const annotationStorage = pdfDocument.annotationStorage; - - annotationStorage.onSetModified = function () { - window.addEventListener("beforeunload", beforeUnload); - }; - - annotationStorage.onResetModified = function () { - window.removeEventListener("beforeunload", beforeUnload); - }; - const pdfViewer = this.pdfViewer; pdfViewer.setDocument(pdfDocument); const { @@ -1193,7 +1530,7 @@ const PDFViewerApplication = { scrollLeft: "0", scrollTop: "0", rotation: null, - sidebarView: _pdf_sidebar.SidebarView.UNKNOWN, + sidebarView: _ui_utils.SidebarView.UNKNOWN, scrollMode: _ui_utils.ScrollMode.UNKNOWN, spreadMode: _ui_utils.SpreadMode.UNKNOWN }).catch(() => { @@ -1201,6 +1538,9 @@ const PDFViewerApplication = { }); firstPagePromise.then(pdfPage => { this.loadingBar.setWidth(this.appConfig.viewerContainer); + + this._initializeAnnotationStorageCallbacks(pdfDocument); + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); @@ -1227,7 +1567,7 @@ const PDFViewerApplication = { hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; rotation = parseInt(stored.rotation, 10); - if (sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) { + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { sidebarView = stored.sidebarView | 0; } @@ -1240,7 +1580,7 @@ const PDFViewerApplication = { } } - if (pageMode && sidebarView === _pdf_sidebar.SidebarView.UNKNOWN) { + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { sidebarView = apiPageModeToSidebarView(pageMode); } @@ -1291,7 +1631,8 @@ const PDFViewerApplication = { onePageRendered.then(() => { pdfDocument.getOutline().then(outline => { this.pdfOutlineViewer.render({ - outline + outline, + pdfDocument }); }); pdfDocument.getAttachments().then(attachments => { @@ -1305,6 +1646,20 @@ const PDFViewerApplication = { pdfDocument }); }); + + if ("requestIdleCallback" in window) { + const callback = window.requestIdleCallback(() => { + this._collectTelemetry(pdfDocument); + + this._idleCallbacks.delete(callback); + }, { + timeout: 1000 + }); + + this._idleCallbacks.add(callback); + } + + this._initializeJavaScript(pdfDocument); }); this._initializePageLabels(pdfDocument); @@ -1312,8 +1667,261 @@ const PDFViewerApplication = { this._initializeMetadata(pdfDocument); }, + async _initializeJavaScript(pdfDocument) { + if (!_app_options.AppOptions.get("enableScripting")) { + return; + } + + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + + if (!objects && !docActions) { + return; + } + + if (pdfDocument !== this.pdfDocument) { + return; + } + + const scripting = this.externalServices.createScripting({ + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc") + }); + const internalEvents = new Map(), + domEvents = new Map(); + this._scriptingInstance = { + scripting, + ready: false, + internalEvents, + domEvents + }; + + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", evt => { + resolve(); + }, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return; + } + } + + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", evt => { + resolve(); + }, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return; + } + } + + const updateFromSandbox = ({ + detail + }) => { + const { + id, + command, + value + } = detail; + + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + + case "error": + console.error(value); + break; + + case "layout": + this.pdfViewer.spreadMode = apiPageLayoutToSpreadMode(value); + break; + + case "page-num": + this.pdfViewer.currentPageNumber = value + 1; + break; + + case "print": + this.pdfViewer.pagesPromise.then(() => { + this.triggerPrinting(); + }); + break; + + case "println": + console.log(value); + break; + + case "zoom": + this.pdfViewer.currentScaleValue = value; + break; + } + + return; + } + + const element = document.getElementById(id); + + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + if (value !== undefined && value !== null) { + pdfDocument.annotationStorage.setValue(id, value); + } + } + }; + + internalEvents.set("updatefromsandbox", updateFromSandbox); + const visitedPages = new Map(); + + const pageOpen = ({ + pageNumber, + actionsPromise + }) => { + visitedPages.set(pageNumber, (async () => { + let actions = null; + + if (!visitedPages.has(pageNumber)) { + actions = await actionsPromise; + + if (pdfDocument !== this.pdfDocument) { + return; + } + } + + await this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })()); + }; + + const pageClose = async ({ + pageNumber + }) => { + const actionsPromise = visitedPages.get(pageNumber); + + if (!actionsPromise) { + return; + } + + visitedPages.set(pageNumber, null); + await actionsPromise; + + if (pdfDocument !== this.pdfDocument) { + return; + } + + await this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + }; + + internalEvents.set("pageopen", pageOpen); + internalEvents.set("pageclose", pageClose); + + const dispatchEventInSandbox = ({ + detail + }) => { + scripting.dispatchEventInSandbox(detail); + }; + + internalEvents.set("dispatcheventinsandbox", dispatchEventInSandbox); + + const mouseDown = event => { + this._mouseState.isDown = true; + }; + + domEvents.set("mousedown", mouseDown); + + const mouseUp = event => { + this._mouseState.isDown = false; + }; + + domEvents.set("mouseup", mouseUp); + + for (const [name, listener] of internalEvents) { + this.eventBus._on(name, listener); + } + + for (const [name, listener] of domEvents) { + window.addEventListener(name, listener); + } + + try { + await scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: pdfDocument.numPages, + URL: this.url, + actions: docActions + } + }); + + if (this.externalServices.isInAutomation) { + this.eventBus.dispatch("sandboxcreated", { + source: this + }); + } + } catch (error) { + console.error(`_initializeJavaScript: "${error?.message}".`); + + this._destroyScriptingInstance(); + + return; + } + + await scripting.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this.pdfViewer.initializeScriptingEvents(); + Promise.resolve().then(() => { + if (this._scriptingInstance) { + this._scriptingInstance.ready = true; + } + }); + }, + + async _collectTelemetry(pdfDocument) { + const markInfo = await this.pdfDocument.getMarkInfo(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + const tagged = markInfo?.Marked || false; + this.externalServices.reportTelemetry({ + type: "tagged", + tagged + }); + }, + async _initializeAutoPrint(pdfDocument, openActionPromise) { - const [openAction, javaScript] = await Promise.all([openActionPromise, pdfDocument.getJavaScript()]); + const [openAction, javaScript] = await Promise.all([openActionPromise, !_app_options.AppOptions.get("enableScripting") ? pdfDocument.getJavaScript() : null]); if (pdfDocument !== this.pdfDocument) { return; @@ -1321,7 +1929,7 @@ const PDFViewerApplication = { let triggerAutoPrint = false; - if (openAction && openAction.action === "Print") { + if (openAction?.action === "Print") { triggerAutoPrint = true; } @@ -1348,14 +1956,8 @@ const PDFViewerApplication = { } } - if (!this.supportsPrinting) { - return; - } - if (triggerAutoPrint) { - setTimeout(function () { - window.print(); - }); + this.triggerPrinting(); } }, @@ -1363,7 +1965,8 @@ const PDFViewerApplication = { const { info, metadata, - contentDispositionFilename + contentDispositionFilename, + contentLength } = await pdfDocument.getMetadata(); if (pdfDocument !== this.pdfDocument) { @@ -1372,7 +1975,8 @@ const PDFViewerApplication = { this.documentInfo = info; this.metadata = metadata; - this.contentDispositionFilename = contentDispositionFilename; + this._contentDispositionFilename = contentDispositionFilename; + this._contentLength ?? (this._contentLength = contentLength); console.log(`PDF ${pdfDocument.fingerprint} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"}` + `${this.pdfViewer.enableWebGL ? " [WebGL]" : ""})`); let pdfTitle; const infoTitle = info && info.Title; @@ -1420,7 +2024,7 @@ const PDFViewerApplication = { return false; } - generatorId = generator.replace(/[ .\-]/g, "_"); + generatorId = generator.replace(/[ .-]/g, "_"); return true; }); } @@ -1439,6 +2043,9 @@ const PDFViewerApplication = { generator: generatorId, formType }); + this.eventBus.dispatch("metadataloaded", { + source: this + }); }, async _initializePageLabels(pdfDocument) { @@ -1525,6 +2132,24 @@ const PDFViewerApplication = { } }, + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + + const { + annotationStorage + } = pdfDocument; + + annotationStorage.onSetModified = function () { + window.addEventListener("beforeunload", beforeUnload); + }; + + annotationStorage.onResetModified = function () { + window.removeEventListener("beforeunload", beforeUnload); + }; + }, + setInitialView(storedHash, { rotation, sidebarView, @@ -1583,12 +2208,17 @@ const PDFViewerApplication = { }, forceRendering() { - this.pdfRenderingQueue.printing = this.printing; + this.pdfRenderingQueue.printing = !!this.printService; this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; this.pdfRenderingQueue.renderHighestPriority(); }, beforePrint() { + this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + if (this.printService) { return; } @@ -1623,6 +2253,11 @@ const PDFViewerApplication = { }, afterPrint() { + this._scriptingInstance?.scripting.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + if (this.printService) { this.printService.destroy(); this.printService = null; @@ -1652,6 +2287,14 @@ const PDFViewerApplication = { this.pdfPresentationMode.request(); }, + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + + window.print(); + }, + bindEvents() { const { eventBus, @@ -1736,6 +2379,14 @@ const PDFViewerApplication = { eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + eventBus._on("fileinputchange", webViewerFileInputChange); eventBus._on("openfile", webViewerOpenFile); @@ -1772,6 +2423,13 @@ const PDFViewerApplication = { }); }; + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + window.addEventListener("visibilitychange", webViewerVisibilityChange); window.addEventListener("wheel", webViewerWheel, { passive: false @@ -1786,6 +2444,7 @@ const PDFViewerApplication = { window.addEventListener("hashchange", _boundEvents.windowHashChange); window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); }, unbindEvents() { @@ -1870,6 +2529,14 @@ const PDFViewerApplication = { eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + + _boundEvents.reportPageStatsPDFBug = null; + } + eventBus._off("fileinputchange", webViewerFileInputChange); eventBus._off("openfile", webViewerOpenFile); @@ -1896,10 +2563,12 @@ const PDFViewerApplication = { window.removeEventListener("hashchange", _boundEvents.windowHashChange); window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); _boundEvents.windowResize = null; _boundEvents.windowHashChange = null; _boundEvents.windowBeforePrint = null; _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; }, accumulateWheelTicks(ticks) { @@ -1911,6 +2580,10 @@ const PDFViewerApplication = { const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks)); this._wheelUnusedTicks -= wholeTicks; return wholeTicks; + }, + + get scriptingReady() { + return this._scriptingInstance?.ready || false; } }; @@ -1969,6 +2642,23 @@ function loadAndEnablePDFBug(enabledTabs) { }); } +function reportPageStatsPDFBug({ + pageNumber +}) { + if (typeof Stats === "undefined" || !Stats.enabled) { + return; + } + + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const pageStats = pageView && pageView.pdfPage && pageView.pdfPage.stats; + + if (!pageStats) { + return; + } + + Stats.add(pageNumber, pageStats); +} + function webViewerInitialized() { const appConfig = PDFViewerApplication.appConfig; let file; @@ -2099,37 +2789,33 @@ function webViewerResetPermissions() { appConfig.viewerContainer.classList.remove(ENABLE_PERMISSIONS_CLASS); } -function webViewerPageRendered(evt) { - const pageNumber = evt.pageNumber; - const pageIndex = pageNumber - 1; - const pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - +function webViewerPageRendered({ + pageNumber, + timestamp, + error +}) { if (pageNumber === PDFViewerApplication.page) { PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); } - if (!pageView) { - return; - } - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1); - if (typeof Stats !== "undefined" && Stats.enabled && pageView.stats) { - Stats.add(pageNumber, pageView.stats); + if (pageView && thumbnailView) { + thumbnailView.setImage(pageView); + } } - if (pageView.error) { + if (error) { PDFViewerApplication.l10n.get("rendering_error", null, "An error occurred while rendering the page.").then(msg => { - PDFViewerApplication.error(msg, pageView.error); + PDFViewerApplication.error(msg, error); }); } PDFViewerApplication.externalServices.reportTelemetry({ type: "pageInfo", - timestamp: evt.timestamp + timestamp }); PDFViewerApplication.pdfDocument.getStats().then(function (stats) { PDFViewerApplication.externalServices.reportTelemetry({ @@ -2146,24 +2832,24 @@ function webViewerPageMode({ switch (mode) { case "thumbs": - view = _pdf_sidebar.SidebarView.THUMBS; + view = _ui_utils.SidebarView.THUMBS; break; case "bookmarks": case "outline": - view = _pdf_sidebar.SidebarView.OUTLINE; + view = _ui_utils.SidebarView.OUTLINE; break; case "attachments": - view = _pdf_sidebar.SidebarView.ATTACHMENTS; + view = _ui_utils.SidebarView.ATTACHMENTS; break; case "layers": - view = _pdf_sidebar.SidebarView.LAYERS; + view = _ui_utils.SidebarView.LAYERS; break; case "none": - view = _pdf_sidebar.SidebarView.NONE; + view = _ui_utils.SidebarView.NONE; break; default: @@ -2188,10 +2874,7 @@ function webViewerNamedAction(evt) { break; case "Print": - if (PDFViewerApplication.supportsPrinting) { - webViewerPrint(); - } - + PDFViewerApplication.triggerPrinting(); break; case "SaveAs": @@ -2200,19 +2883,8 @@ function webViewerNamedAction(evt) { } } -function webViewerPresentationModeChanged({ - active, - switchInProgress -}) { - let state = _ui_utils.PresentationModeState.NORMAL; - - if (switchInProgress) { - state = _ui_utils.PresentationModeState.CHANGING; - } else if (active) { - state = _ui_utils.PresentationModeState.FULLSCREEN; - } - - PDFViewerApplication.pdfViewer.presentationModeState = state; +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; } function webViewerSidebarViewChanged(evt) { @@ -2242,7 +2914,7 @@ function webViewerUpdateViewarea(evt) { PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - const loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED; + const loading = (currentPage && currentPage.renderingState) !== _pdf_rendering_queue.RenderingStates.FINISHED; PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); } @@ -2345,27 +3017,19 @@ function webViewerPresentationMode() { } function webViewerPrint() { - window.print(); -} - -function webViewerDownloadOrSave(sourceEventType) { - if (PDFViewerApplication.pdfDocument && PDFViewerApplication.pdfDocument.annotationStorage.size > 0) { - PDFViewerApplication.save({ - sourceEventType - }); - } else { - PDFViewerApplication.download({ - sourceEventType - }); - } + PDFViewerApplication.triggerPrinting(); } function webViewerDownload() { - webViewerDownloadOrSave("download"); + PDFViewerApplication.downloadOrSave({ + sourceEventType: "download" + }); } function webViewerSave() { - webViewerDownloadOrSave("save"); + PDFViewerApplication.downloadOrSave({ + sourceEventType: "save" + }); } function webViewerFirstPage() { @@ -2381,11 +3045,11 @@ function webViewerLastPage() { } function webViewerNextPage() { - PDFViewerApplication.page++; + PDFViewerApplication.pdfViewer.nextPage(); } function webViewerPreviousPage() { - PDFViewerApplication.page--; + PDFViewerApplication.pdfViewer.previousPage(); } function webViewerZoomIn() { @@ -2404,7 +3068,7 @@ function webViewerPageNumberChanged(evt) { const pdfViewer = PDFViewerApplication.pdfViewer; if (evt.value !== "") { - pdfViewer.currentPageLabel = evt.value; + PDFViewerApplication.pdfLinkService.goToPage(evt.value); } if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { @@ -2501,21 +3165,15 @@ function webViewerRotationChanging(evt) { PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; } -function webViewerPageChanging(evt) { - const page = evt.pageNumber; - PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null); - PDFViewerApplication.secondaryToolbar.setPageNumber(page); +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); - } - - if (typeof Stats !== "undefined" && Stats.enabled) { - const pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1); - - if (pageView && pageView.stats) { - Stats.add(page, pageView.stats); - } + PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); } } @@ -2634,7 +3292,7 @@ function webViewerKeyDown(evt) { if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { switch (evt.keyCode) { case 70: - if (!PDFViewerApplication.supportsIntegratedFind) { + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { PDFViewerApplication.findBar.open(); handled = true; } @@ -2760,7 +3418,7 @@ function webViewerKeyDown(evt) { return; } - const curElement = document.activeElement || document.querySelector(":focus"); + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); const curElementTagName = curElement && curElement.tagName.toUpperCase(); if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement && curElement.isContentEditable) { @@ -2879,13 +3537,9 @@ function webViewerKeyDown(evt) { if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { if (turnPage > 0) { - if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page++; - } + pdfViewer.nextPage(); } else { - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } + pdfViewer.previousPage(); } handled = true; @@ -2955,22 +3609,22 @@ function apiPageLayoutToSpreadMode(layout) { function apiPageModeToSidebarView(mode) { switch (mode) { case "UseNone": - return _pdf_sidebar.SidebarView.NONE; + return _ui_utils.SidebarView.NONE; case "UseThumbs": - return _pdf_sidebar.SidebarView.THUMBS; + return _ui_utils.SidebarView.THUMBS; case "UseOutlines": - return _pdf_sidebar.SidebarView.OUTLINE; + return _ui_utils.SidebarView.OUTLINE; case "UseAttachments": - return _pdf_sidebar.SidebarView.ATTACHMENTS; + return _ui_utils.SidebarView.ATTACHMENTS; case "UseOC": - return _pdf_sidebar.SidebarView.LAYERS; + return _ui_utils.SidebarView.LAYERS; } - return _pdf_sidebar.SidebarView.NONE; + return _ui_utils.SidebarView.NONE; } const PDFPrintServiceFactory = { @@ -2986,37 +3640,36 @@ const PDFPrintServiceFactory = { exports.PDFPrintServiceFactory = PDFPrintServiceFactory; /***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { +/* 4 */ +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getOutputScale = getOutputScale; +exports.getPageSizeInches = getPageSizeInches; +exports.getPDFFileNameFromURL = getPDFFileNameFromURL; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; exports.isValidRotation = isValidRotation; exports.isValidScrollMode = isValidScrollMode; exports.isValidSpreadMode = isValidSpreadMode; -exports.isPortraitOrientation = isPortraitOrientation; -exports.clamp = clamp; -exports.getPDFFileNameFromURL = getPDFFileNameFromURL; +exports.moveToEndOfArray = moveToEndOfArray; exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; exports.parseQueryString = parseQueryString; -exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; -exports.getVisibleElements = getVisibleElements; exports.roundToDivide = roundToDivide; -exports.getPageSizeInches = getPageSizeInches; -exports.approximateFraction = approximateFraction; -exports.getOutputScale = getOutputScale; exports.scrollIntoView = scrollIntoView; -exports.watchScroll = watchScroll; -exports.binarySearchFirstItem = binarySearchFirstItem; -exports.normalizeWheelEventDirection = normalizeWheelEventDirection; -exports.normalizeWheelEventDelta = normalizeWheelEventDelta; exports.waitOnEventOrTimeout = waitOnEventOrTimeout; -exports.moveToEndOfArray = moveToEndOfArray; -exports.WaitOnType = exports.animationStarted = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.SpreadMode = exports.ScrollMode = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = exports.AutoPrintRegExp = void 0; +exports.watchScroll = watchScroll; +exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.NullL10n = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0; const CSS_UNITS = 96.0 / 72.0; exports.CSS_UNITS = CSS_UNITS; const DEFAULT_SCALE_VALUE = "auto"; @@ -3035,6 +3688,7 @@ const SCROLLBAR_PADDING = 40; exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; const VERTICAL_PADDING = 5; exports.VERTICAL_PADDING = VERTICAL_PADDING; +const LOADINGBAR_END_OFFSET_VAR = "--loadingBar-end-offset"; const PresentationModeState = { UNKNOWN: 0, NORMAL: 1, @@ -3042,6 +3696,15 @@ const PresentationModeState = { FULLSCREEN: 3 }; exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; const RendererType = { CANVAS: "canvas", SVG: "svg" @@ -3100,7 +3763,7 @@ exports.NullL10n = NullL10n; function getOutputScale(ctx) { const devicePixelRatio = window.devicePixelRatio || 1; - const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; + const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; const pixelRatio = devicePixelRatio / backingStoreRatio; return { sx: pixelRatio, @@ -3323,7 +3986,13 @@ function backtrackBeforeAllVisibleElements(index, views, top) { return index; } -function getVisibleElements(scrollEl, views, sortByVisibility = false, horizontal = false) { +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { const top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight; const left = scrollEl.scrollLeft, @@ -3335,15 +4004,16 @@ function getVisibleElements(scrollEl, views, sortByVisibility = false, horizonta return elementBottom > top; } - function isElementRightAfterViewLeft(view) { + function isElementNextAfterViewHorizontally(view) { const element = view.div; - const elementRight = element.offsetLeft + element.clientLeft + element.clientWidth; - return elementRight > left; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; } const visible = [], numViews = views.length; - let firstVisibleElementInd = numViews === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop); + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); @@ -3375,13 +4045,16 @@ function getVisibleElements(scrollEl, views, sortByVisibility = false, horizonta const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); - const percent = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0; + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; visible.push({ id: view.id, x: currentWidth, y: currentHeight, view, - percent + percent, + widthPercent: fractionWidth * 100 | 0 }); } @@ -3432,8 +4105,8 @@ function getPDFFileNameFromURL(url, defaultFilename = "document.pdf") { return defaultFilename; } - const reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; - const reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; const splitURI = reURI.exec(url); let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); @@ -3550,15 +4223,17 @@ class EventBus { this._listeners = Object.create(null); } - on(eventName, listener) { + on(eventName, listener, options = null) { this._on(eventName, listener, { - external: true + external: true, + once: options?.once }); } - off(eventName, listener) { + off(eventName, listener, options = null) { this._off(eventName, listener, { - external: true + external: true, + once: options?.once }); } @@ -3571,16 +4246,17 @@ class EventBus { const args = Array.prototype.slice.call(arguments, 1); let externalListeners; - eventListeners.slice(0).forEach(function ({ + eventListeners.slice(0).forEach(({ listener, - external - }) { - if (external) { - if (!externalListeners) { - externalListeners = []; - } + external, + once + }) => { + if (once) { + this._off(eventName, listener); + } - externalListeners.push(listener); + if (external) { + (externalListeners || (externalListeners = [])).push(listener); return; } @@ -3588,7 +4264,7 @@ class EventBus { }); if (externalListeners) { - externalListeners.forEach(function (listener) { + externalListeners.forEach(listener => { listener.apply(null, args); }); externalListeners = null; @@ -3596,15 +4272,13 @@ class EventBus { } _on(eventName, listener, options = null) { - let eventListeners = this._listeners[eventName]; - - if (!eventListeners) { - this._listeners[eventName] = eventListeners = []; - } + var _this$_listeners; + const eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = []); eventListeners.push({ listener, - external: (options && options.external) === true + external: options?.external === true, + once: options?.once === true }); } @@ -3679,7 +4353,8 @@ class ProgressBar { const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; if (scrollbarWidth > 0) { - this.bar.style.width = `calc(100% - ${scrollbarWidth}px)`; + const doc = document.documentElement; + doc.style.setProperty(LOADINGBAR_END_OFFSET_VAR, `${scrollbarWidth}px`); } } @@ -3690,7 +4365,6 @@ class ProgressBar { this.visible = false; this.bar.classList.add("hidden"); - document.body.classList.remove("loadingInProgress"); } show() { @@ -3699,7 +4373,6 @@ class ProgressBar { } this.visible = true; - document.body.classList.add("loadingInProgress"); this.bar.classList.remove("hidden"); } @@ -3726,299 +4399,22 @@ function moveToEndOfArray(arr, condition) { } } -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.OptionKind = exports.AppOptions = void 0; +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); -var _viewer_compatibility = __webpack_require__(4); - -const OptionKind = { - VIEWER: 0x02, - API: 0x04, - WORKER: 0x08, - PREFERENCE: 0x80 -}; -exports.OptionKind = OptionKind; -const defaultOptions = { - cursorToolOnLoad: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - defaultUrl: { - value: "compressed.tracemonkey-pldi-09.pdf", - kind: OptionKind.VIEWER - }, - defaultZoomValue: { - value: "", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - disableHistory: { - value: false, - kind: OptionKind.VIEWER - }, - disablePageLabels: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enablePermissions: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enablePrintAutoRotate: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - enableWebGL: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - externalLinkRel: { - value: "noopener noreferrer nofollow", - kind: OptionKind.VIEWER - }, - externalLinkTarget: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - historyUpdateUrl: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - ignoreDestinationZoom: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - imageResourcesPath: { - value: "./images/", - kind: OptionKind.VIEWER - }, - maxCanvasPixels: { - value: 16777216, - compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels, - kind: OptionKind.VIEWER - }, - pdfBugEnabled: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - printResolution: { - value: 150, - kind: OptionKind.VIEWER - }, - renderer: { - value: "canvas", - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - renderInteractiveForms: { - value: true, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - sidebarViewOnLoad: { - value: -1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - scrollModeOnLoad: { - value: -1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - spreadModeOnLoad: { - value: -1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - textLayerMode: { - value: 1, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - useOnlyCssZoom: { - value: false, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - viewOnLoad: { - value: 0, - kind: OptionKind.VIEWER + OptionKind.PREFERENCE - }, - cMapPacked: { - value: true, - kind: OptionKind.API - }, - cMapUrl: { - value: "../web/cmaps/", - kind: OptionKind.API - }, - disableAutoFetch: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableFontFace: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableRange: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - disableStream: { - value: false, - kind: OptionKind.API + OptionKind.PREFERENCE - }, - docBaseUrl: { - value: "", - kind: OptionKind.API - }, - fontExtraProperties: { - value: false, - kind: OptionKind.API - }, - isEvalSupported: { - value: true, - kind: OptionKind.API - }, - maxImageSize: { - value: -1, - kind: OptionKind.API - }, - pdfBug: { - value: false, - kind: OptionKind.API - }, - verbosity: { - value: 1, - kind: OptionKind.API - }, - workerPort: { - value: null, - kind: OptionKind.WORKER - }, - workerSrc: { - value: "../build/pdf.worker.js", - kind: OptionKind.WORKER - } -}; -{ - defaultOptions.disablePreferences = { - value: false, - kind: OptionKind.VIEWER - }; - defaultOptions.locale = { - value: typeof navigator !== "undefined" ? navigator.language : "en-US", - kind: OptionKind.VIEWER - }; -} -const userOptions = Object.create(null); - -class AppOptions { - constructor() { - throw new Error("Cannot initialize AppOptions."); - } - - static get(name) { - const userOption = userOptions[name]; - - if (userOption !== undefined) { - return userOption; - } - - const defaultOption = defaultOptions[name]; - - if (defaultOption !== undefined) { - return defaultOption.compatibility || defaultOption.value; - } - - return undefined; - } - - static getAll(kind = null) { - const options = Object.create(null); - - for (const name in defaultOptions) { - const defaultOption = defaultOptions[name]; - - if (kind) { - if ((kind & defaultOption.kind) === 0) { - continue; - } - - if (kind === OptionKind.PREFERENCE) { - const value = defaultOption.value, - valueType = typeof value; - - if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { - options[name] = value; - continue; - } - - throw new Error(`Invalid type for preference: ${name}`); - } - } - - const userOption = userOptions[name]; - options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || defaultOption.value; - } - - return options; - } - - static set(name, value) { - userOptions[name] = value; - } - - static remove(name) { - delete userOptions[name]; + while (curActiveOrFocused && curActiveOrFocused.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); } + return curActiveOrFocused; } -exports.AppOptions = AppOptions; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.viewerCompatibilityParams = void 0; -const compatibilityParams = Object.create(null); -{ - const userAgent = typeof navigator !== "undefined" && navigator.userAgent || ""; - const platform = typeof navigator !== "undefined" && navigator.platform || ""; - const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1; - const isAndroid = /Android/.test(userAgent); - const isIE = /Trident/.test(userAgent); - const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; - const isIOSChrome = /CriOS/.test(userAgent); - - (function checkOnBlobSupport() { - if (isIE || isIOSChrome) { - compatibilityParams.disableCreateObjectURL = true; - } - })(); - - (function checkCanvasSizeLimitation() { - if (isIOS || isAndroid) { - compatibilityParams.maxCanvasPixels = 5242880; - } - })(); -} -const viewerCompatibilityParams = Object.freeze(compatibilityParams); -exports.viewerCompatibilityParams = viewerCompatibilityParams; - /***/ }), /* 5 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((module) => { -"use strict"; let pdfjsLib; @@ -4033,18 +4429,19 @@ module.exports = pdfjsLib; /***/ }), /* 6 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFCursorTools = exports.CursorTool = void 0; var _grab_to_pan = __webpack_require__(7); +var _ui_utils = __webpack_require__(4); + const CursorTool = { SELECT: 0, HAND: 1, @@ -4133,20 +4530,25 @@ class PDFCursorTools { }); this.eventBus._on("presentationmodechanged", evt => { - if (evt.switchInProgress) { - return; - } + switch (evt.state) { + case _ui_utils.PresentationModeState.CHANGING: + break; - let previouslyActive; + case _ui_utils.PresentationModeState.FULLSCREEN: + { + const previouslyActive = this.active; + this.switchTool(CursorTool.SELECT); + this.activeBeforePresentationMode = previouslyActive; + break; + } - if (evt.active) { - previouslyActive = this.active; - this.switchTool(CursorTool.SELECT); - this.activeBeforePresentationMode = previouslyActive; - } else { - previouslyActive = this.activeBeforePresentationMode; - this.activeBeforePresentationMode = null; - this.switchTool(previouslyActive); + case _ui_utils.PresentationModeState.NORMAL: + { + const previouslyActive = this.activeBeforePresentationMode; + this.activeBeforePresentationMode = null; + this.switchTool(previouslyActive); + break; + } } }); } @@ -4157,14 +4559,13 @@ exports.PDFCursorTools = PDFCursorTools; /***/ }), /* 7 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.GrabToPan = GrabToPan; function GrabToPan(options) { @@ -4288,7 +4689,7 @@ GrabToPan.prototype = { } }; let matchesSelector; -["webkitM", "mozM", "msM", "oM", "m"].some(function (prefix) { +["webkitM", "mozM", "m"].some(function (prefix) { let name = prefix + "atches"; if (name in document.documentElement) { @@ -4322,15 +4723,17 @@ function isLeftMouseReleased(event) { /***/ }), /* 8 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFRenderingQueue = exports.RenderingStates = void 0; +})); +exports.RenderingStates = exports.PDFRenderingQueue = void 0; + +var _pdfjsLib = __webpack_require__(5); + const CLEANUP_TIMEOUT = 30000; const RenderingStates = { INITIAL: 0, @@ -4444,6 +4847,10 @@ class PDFRenderingQueue { view.draw().finally(() => { this.renderHighestPriority(); }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + console.error(`renderView: "${reason}"`); }); break; @@ -4458,417 +4865,13 @@ exports.PDFRenderingQueue = PDFRenderingQueue; /***/ }), /* 9 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFSidebar = exports.SidebarView = void 0; - -var _ui_utils = __webpack_require__(2); - -var _pdf_rendering_queue = __webpack_require__(8); - -const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; -const SidebarView = { - UNKNOWN: -1, - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3, - LAYERS: 4 -}; -exports.SidebarView = SidebarView; - -class PDFSidebar { - constructor({ - elements, - pdfViewer, - pdfThumbnailViewer, - eventBus, - l10n = _ui_utils.NullL10n, - disableNotification = false - }) { - this.isOpen = false; - this.active = SidebarView.THUMBS; - this.isInitialViewSet = false; - this.onToggled = null; - this.pdfViewer = pdfViewer; - this.pdfThumbnailViewer = pdfThumbnailViewer; - this.outerContainer = elements.outerContainer; - this.viewerContainer = elements.viewerContainer; - this.toggleButton = elements.toggleButton; - this.thumbnailButton = elements.thumbnailButton; - this.outlineButton = elements.outlineButton; - this.attachmentsButton = elements.attachmentsButton; - this.layersButton = elements.layersButton; - this.thumbnailView = elements.thumbnailView; - this.outlineView = elements.outlineView; - this.attachmentsView = elements.attachmentsView; - this.layersView = elements.layersView; - this.eventBus = eventBus; - this.l10n = l10n; - this._disableNotification = disableNotification; - - this._addEventListeners(); - } - - reset() { - this.isInitialViewSet = false; - - this._hideUINotification(null); - - this.switchView(SidebarView.THUMBS); - this.outlineButton.disabled = false; - this.attachmentsButton.disabled = false; - this.layersButton.disabled = false; - } - - get visibleView() { - return this.isOpen ? this.active : SidebarView.NONE; - } - - get isThumbnailViewVisible() { - return this.isOpen && this.active === SidebarView.THUMBS; - } - - get isOutlineViewVisible() { - return this.isOpen && this.active === SidebarView.OUTLINE; - } - - get isAttachmentsViewVisible() { - return this.isOpen && this.active === SidebarView.ATTACHMENTS; - } - - get isLayersViewVisible() { - return this.isOpen && this.active === SidebarView.LAYERS; - } - - setInitialView(view = SidebarView.NONE) { - if (this.isInitialViewSet) { - return; - } - - this.isInitialViewSet = true; - - if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) { - this._dispatchEvent(); - - return; - } - - if (!this._switchView(view, true)) { - this._dispatchEvent(); - } - } - - switchView(view, forceOpen = false) { - this._switchView(view, forceOpen); - } - - _switchView(view, forceOpen = false) { - const isViewChanged = view !== this.active; - let shouldForceRendering = false; - - switch (view) { - case SidebarView.NONE: - if (this.isOpen) { - this.close(); - return true; - } - - return false; - - case SidebarView.THUMBS: - if (this.isOpen && isViewChanged) { - shouldForceRendering = true; - } - - break; - - case SidebarView.OUTLINE: - if (this.outlineButton.disabled) { - return false; - } - - break; - - case SidebarView.ATTACHMENTS: - if (this.attachmentsButton.disabled) { - return false; - } - - break; - - case SidebarView.LAYERS: - if (this.layersButton.disabled) { - return false; - } - - break; - - default: - console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`); - return false; - } - - this.active = view; - this.thumbnailButton.classList.toggle("toggled", view === SidebarView.THUMBS); - this.outlineButton.classList.toggle("toggled", view === SidebarView.OUTLINE); - this.attachmentsButton.classList.toggle("toggled", view === SidebarView.ATTACHMENTS); - this.layersButton.classList.toggle("toggled", view === SidebarView.LAYERS); - this.thumbnailView.classList.toggle("hidden", view !== SidebarView.THUMBS); - this.outlineView.classList.toggle("hidden", view !== SidebarView.OUTLINE); - this.attachmentsView.classList.toggle("hidden", view !== SidebarView.ATTACHMENTS); - this.layersView.classList.toggle("hidden", view !== SidebarView.LAYERS); - - if (forceOpen && !this.isOpen) { - this.open(); - return true; - } - - if (shouldForceRendering) { - this._updateThumbnailViewer(); - - this._forceRendering(); - } - - if (isViewChanged) { - this._dispatchEvent(); - } - - this._hideUINotification(this.active); - - return isViewChanged; - } - - open() { - if (this.isOpen) { - return; - } - - this.isOpen = true; - this.toggleButton.classList.add("toggled"); - this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); - - if (this.active === SidebarView.THUMBS) { - this._updateThumbnailViewer(); - } - - this._forceRendering(); - - this._dispatchEvent(); - - this._hideUINotification(this.active); - } - - close() { - if (!this.isOpen) { - return; - } - - this.isOpen = false; - this.toggleButton.classList.remove("toggled"); - this.outerContainer.classList.add("sidebarMoving"); - this.outerContainer.classList.remove("sidebarOpen"); - - this._forceRendering(); - - this._dispatchEvent(); - } - - toggle() { - if (this.isOpen) { - this.close(); - } else { - this.open(); - } - } - - _dispatchEvent() { - this.eventBus.dispatch("sidebarviewchanged", { - source: this, - view: this.visibleView - }); - } - - _forceRendering() { - if (this.onToggled) { - this.onToggled(); - } else { - this.pdfViewer.forceRendering(); - this.pdfThumbnailViewer.forceRendering(); - } - } - - _updateThumbnailViewer() { - const { - pdfViewer, - pdfThumbnailViewer - } = this; - const pagesCount = pdfViewer.pagesCount; - - for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - const pageView = pdfViewer.getPageView(pageIndex); - - if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { - const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - - pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); - } - - _showUINotification(view) { - if (this._disableNotification) { - return; - } - - this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains outline/attachments/layers)").then(msg => { - this.toggleButton.title = msg; - }); - - if (!this.isOpen) { - this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); - } else if (view === this.active) { - return; - } - - switch (view) { - case SidebarView.OUTLINE: - this.outlineButton.classList.add(UI_NOTIFICATION_CLASS); - break; - - case SidebarView.ATTACHMENTS: - this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS); - break; - - case SidebarView.LAYERS: - this.layersButton.classList.add(UI_NOTIFICATION_CLASS); - break; - } - } - - _hideUINotification(view) { - if (this._disableNotification) { - return; - } - - const removeNotification = sidebarView => { - switch (sidebarView) { - case SidebarView.OUTLINE: - this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - - case SidebarView.ATTACHMENTS: - this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - - case SidebarView.LAYERS: - this.layersButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - } - }; - - if (!this.isOpen && view !== null) { - return; - } - - this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); - - if (view !== null) { - removeNotification(view); - return; - } - - for (view in SidebarView) { - removeNotification(SidebarView[view]); - } - - this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => { - this.toggleButton.title = msg; - }); - } - - _addEventListeners() { - this.viewerContainer.addEventListener("transitionend", evt => { - if (evt.target === this.viewerContainer) { - this.outerContainer.classList.remove("sidebarMoving"); - } - }); - this.toggleButton.addEventListener("click", () => { - this.toggle(); - }); - this.thumbnailButton.addEventListener("click", () => { - this.switchView(SidebarView.THUMBS); - }); - this.outlineButton.addEventListener("click", () => { - this.switchView(SidebarView.OUTLINE); - }); - this.outlineButton.addEventListener("dblclick", () => { - this.eventBus.dispatch("toggleoutlinetree", { - source: this - }); - }); - this.attachmentsButton.addEventListener("click", () => { - this.switchView(SidebarView.ATTACHMENTS); - }); - this.layersButton.addEventListener("click", () => { - this.switchView(SidebarView.LAYERS); - }); - this.layersButton.addEventListener("dblclick", () => { - this.eventBus.dispatch("resetlayers", { - source: this - }); - }); - - const onTreeLoaded = (count, button, view) => { - button.disabled = !count; - - if (count) { - this._showUINotification(view); - } else if (this.active === view) { - this.switchView(SidebarView.THUMBS); - } - }; - - this.eventBus._on("outlineloaded", evt => { - onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE); - }); - - this.eventBus._on("attachmentsloaded", evt => { - onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, SidebarView.ATTACHMENTS); - }); - - this.eventBus._on("layersloaded", evt => { - onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS); - }); - - this.eventBus._on("presentationmodechanged", evt => { - if (!evt.active && !evt.switchInProgress && this.isThumbnailViewVisible) { - this._updateThumbnailViewer(); - } - }); - } - -} - -exports.PDFSidebar = PDFSidebar; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); +})); exports.OverlayManager = void 0; class OverlayManager { @@ -4971,18 +4974,17 @@ class OverlayManager { exports.OverlayManager = OverlayManager; /***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PasswordPrompt = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); var _pdfjsLib = __webpack_require__(5); @@ -5050,22 +5052,21 @@ class PasswordPrompt { exports.PasswordPrompt = PasswordPrompt; /***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFAttachmentViewer = void 0; var _pdfjsLib = __webpack_require__(5); -var _base_tree_viewer = __webpack_require__(13); +var _base_tree_viewer = __webpack_require__(12); -var _viewer_compatibility = __webpack_require__(4); +var _viewer_compatibility = __webpack_require__(2); const PdfFileRegExp = /\.pdf$/i; @@ -5204,9 +5205,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { attachmentsCount++; } - this.container.appendChild(fragment); - - this._dispatchEvent(attachmentsCount); + this._finishRendering(fragment, attachmentsCount); } _appendAttachment({ @@ -5248,19 +5247,21 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { exports.PDFAttachmentViewer = PDFAttachmentViewer; /***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.BaseTreeViewer = void 0; var _pdfjsLib = __webpack_require__(5); +const TREEITEM_OFFSET_TOP = -100; +const TREEITEM_SELECTED_CLASS = "selected"; + class BaseTreeViewer { constructor(options) { if (this.constructor === BaseTreeViewer) { @@ -5273,7 +5274,9 @@ class BaseTreeViewer { } reset() { + this._pdfDocument = null; this._lastToggleIsShow = true; + this._currentTreeItem = null; this.container.textContent = ""; this.container.classList.remove("treeWithDeepNesting"); } @@ -5324,29 +5327,73 @@ class BaseTreeViewer { this._toggleTreeItem(this.container, !this._lastToggleIsShow); } + _finishRendering(fragment, count, hasAnyNesting = false) { + if (hasAnyNesting) { + this.container.classList.add("treeWithDeepNesting"); + this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); + } + + this.container.appendChild(fragment); + + this._dispatchEvent(count); + } + render(params) { throw new Error("Not implemented: render"); } + _updateCurrentTreeItem(treeItem = null) { + if (this._currentTreeItem) { + this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); + + this._currentTreeItem = null; + } + + if (treeItem) { + treeItem.classList.add(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = treeItem; + } + } + + _scrollToCurrentTreeItem(treeItem) { + if (!treeItem) { + return; + } + + let currentNode = treeItem.parentNode; + + while (currentNode && currentNode !== this.container) { + if (currentNode.classList.contains("treeItem")) { + const toggler = currentNode.firstElementChild; + toggler?.classList.remove("treeItemsHidden"); + } + + currentNode = currentNode.parentNode; + } + + this._updateCurrentTreeItem(treeItem); + + this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); + } + } exports.BaseTreeViewer = BaseTreeViewer; /***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFDocumentProperties = void 0; var _pdfjsLib = __webpack_require__(5); -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const DEFAULT_FIELD_CONTENT = "-"; const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; @@ -5397,7 +5444,7 @@ class PDFDocumentProperties { }); } - open() { + async open() { const freezeFieldData = data => { Object.defineProperty(this, "fieldData", { value: Object.freeze(data), @@ -5407,64 +5454,58 @@ class PDFDocumentProperties { }); }; - Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(() => { - const currentPageNumber = this._currentPageNumber; - const pagesRotation = this._pagesRotation; + await Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]); + const currentPageNumber = this._currentPageNumber; + const pagesRotation = this._pagesRotation; - if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) { - this._updateUI(); + if (this.fieldData && currentPageNumber === this.fieldData._currentPageNumber && pagesRotation === this.fieldData._pagesRotation) { + this._updateUI(); - return; - } + return; + } - this.pdfDocument.getMetadata().then(({ - info, - metadata, - contentDispositionFilename - }) => { - return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(this.maybeFileSize), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { - return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); - }), this._parseLinearization(info.IsLinearized)]); - }).then(([info, metadata, fileName, fileSize, creationDate, modDate, pageSize, isLinearized]) => { - freezeFieldData({ - fileName, - fileSize, - title: info.Title, - author: info.Author, - subject: info.Subject, - keywords: info.Keywords, - creationDate, - modificationDate: modDate, - creator: info.Creator, - producer: info.Producer, - version: info.PDFFormatVersion, - pageCount: this.pdfDocument.numPages, - pageSize, - linearized: isLinearized, - _currentPageNumber: currentPageNumber, - _pagesRotation: pagesRotation - }); + const { + info, + contentDispositionFilename, + contentLength + } = await this.pdfDocument.getMetadata(); + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this._parseLinearization(info.IsLinearized)]); + freezeFieldData({ + fileName, + fileSize, + title: info.Title, + author: info.Author, + subject: info.Subject, + keywords: info.Keywords, + creationDate, + modificationDate, + creator: info.Creator, + producer: info.Producer, + version: info.PDFFormatVersion, + pageCount: this.pdfDocument.numPages, + pageSize, + linearized: isLinearized, + _currentPageNumber: currentPageNumber, + _pagesRotation: pagesRotation + }); + + this._updateUI(); - this._updateUI(); + const { + length + } = await this.pdfDocument.getDownloadInfo(); - return this.pdfDocument.getDownloadInfo(); - }).then(({ - length - }) => { - this.maybeFileSize = length; - return this._parseFileSize(length); - }).then(fileSize => { - if (fileSize === this.fieldData.fileSize) { - return; - } + if (contentLength === length) { + return; + } - const data = Object.assign(Object.create(null), this.fieldData); - data.fileSize = fileSize; - freezeFieldData(data); + const data = Object.assign(Object.create(null), this.fieldData); + data.fileSize = await this._parseFileSize(length); + freezeFieldData(data); - this._updateUI(); - }); - }); + this._updateUI(); } close() { @@ -5488,16 +5529,9 @@ class PDFDocumentProperties { this._dataAvailableCapability.resolve(); } - setFileSize(fileSize) { - if (Number.isInteger(fileSize) && fileSize > 0) { - this.maybeFileSize = fileSize; - } - } - _reset() { this.pdfDocument = null; this.url = null; - this.maybeFileSize = 0; delete this.fieldData; this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); this._currentPageNumber = 1; @@ -5628,20 +5662,19 @@ class PDFDocumentProperties { exports.PDFDocumentProperties = PDFDocumentProperties; /***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { +/* 14 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFFindBar = void 0; -var _pdf_find_controller = __webpack_require__(16); +var _pdf_find_controller = __webpack_require__(15); -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const MATCHES_COUNT_LIMIT = 1000; @@ -5717,7 +5750,6 @@ class PDFFindBar { } updateUIState(state, previous, matchesCount) { - let notFound = false; let findMsg = ""; let status = ""; @@ -5731,7 +5763,7 @@ class PDFFindBar { case _pdf_find_controller.FindState.NOT_FOUND: findMsg = this.l10n.get("find_not_found", null, "Phrase not found"); - notFound = true; + status = "notFound"; break; case _pdf_find_controller.FindState.WRAPPED: @@ -5744,7 +5776,6 @@ class PDFFindBar { break; } - this.findField.classList.toggle("notFound", notFound); this.findField.setAttribute("data-status", status); Promise.resolve(findMsg).then(msg => { this.findMsg.textContent = msg; @@ -5839,22 +5870,21 @@ class PDFFindBar { exports.PDFFindBar = PDFFindBar; /***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFFindController = exports.FindState = void 0; var _pdfjsLib = __webpack_require__(5); -var _pdf_find_utils = __webpack_require__(17); +var _pdf_find_utils = __webpack_require__(16); -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const FindState = { FOUND: 0, @@ -5887,9 +5917,43 @@ function normalize(text) { normalizationRegex = new RegExp(`[${replace}]`, "g"); } - return text.replace(normalizationRegex, function (ch) { - return CHARACTERS_TO_NORMALIZE[ch]; + let diffs = null; + const normalizedText = text.replace(normalizationRegex, function (ch, index) { + const normalizedCh = CHARACTERS_TO_NORMALIZE[ch], + diff = normalizedCh.length - ch.length; + + if (diff !== 0) { + (diffs || (diffs = [])).push([index, diff]); + } + + return normalizedCh; }); + return [normalizedText, diffs]; +} + +function getOriginalIndex(matchIndex, diffs = null) { + if (!diffs) { + return matchIndex; + } + + let totalDiff = 0; + + for (const [index, diff] of diffs) { + const currentIndex = index + totalDiff; + + if (currentIndex >= matchIndex) { + break; + } + + if (currentIndex + diff > matchIndex) { + totalDiff += matchIndex - currentIndex; + break; + } + + totalDiff += diff; + } + + return matchIndex - totalDiff; } class PDFFindController { @@ -6038,6 +6102,7 @@ class PDFFindController { }; this._extractTextPromises = []; this._pageContents = []; + this._pageDiffs = []; this._matchesCountTotal = 0; this._pagesToSearch = null; this._pendingFindMatches = Object.create(null); @@ -6051,7 +6116,7 @@ class PDFFindController { get _query() { if (this._state.query !== this._rawQuery) { this._rawQuery = this._state.query; - this._normalizedQuery = normalize(this._state.query); + [this._normalizedQuery] = normalize(this._state.query); } return this._normalizedQuery; @@ -6148,8 +6213,9 @@ class PDFFindController { return true; } - _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) { - const matches = []; + _calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { + const matches = [], + matchesLength = []; const queryLen = query.length; let matchIdx = -queryLen; @@ -6164,13 +6230,18 @@ class PDFFindController { continue; } - matches.push(matchIdx); + const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), + matchEnd = matchIdx + queryLen - 1, + originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; + matches.push(originalMatchIdx); + matchesLength.push(originalQueryLen); } this._pageMatches[pageIndex] = matches; + this._pageMatchesLength[pageIndex] = matchesLength; } - _calculateWordMatch(query, pageIndex, pageContent, entireWord) { + _calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord) { const matchesWithLength = []; const queryArray = query.match(/\S+/g); @@ -6190,9 +6261,12 @@ class PDFFindController { continue; } + const originalMatchIdx = getOriginalIndex(matchIdx, pageDiffs), + matchEnd = matchIdx + subqueryLen - 1, + originalQueryLen = getOriginalIndex(matchEnd, pageDiffs) - originalMatchIdx + 1; matchesWithLength.push({ - match: matchIdx, - matchLength: subqueryLen, + match: originalMatchIdx, + matchLength: originalQueryLen, skipped: false }); } @@ -6206,6 +6280,7 @@ class PDFFindController { _calculateMatch(pageIndex) { let pageContent = this._pageContents[pageIndex]; + const pageDiffs = this._pageDiffs[pageIndex]; let query = this._query; const { caseSensitive, @@ -6223,9 +6298,9 @@ class PDFFindController { } if (phraseSearch) { - this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord); + this._calculatePhraseMatch(query, pageIndex, pageContent, pageDiffs, entireWord); } else { - this._calculateWordMatch(query, pageIndex, pageContent, entireWord); + this._calculateWordMatch(query, pageIndex, pageContent, pageDiffs, entireWord); } if (this._state.highlightAll) { @@ -6270,11 +6345,12 @@ class PDFFindController { strBuf.push(textItems[j].str); } - this._pageContents[i] = normalize(strBuf.join("")); + [this._pageContents[i], this._pageDiffs[i]] = normalize(strBuf.join("")); extractTextCapability.resolve(i); }, reason => { console.error(`Unable to get text content for page ${i + 1}`, reason); this._pageContents[i] = ""; + this._pageDiffs[i] = null; extractTextCapability.resolve(i); }); }); @@ -6521,15 +6597,14 @@ class PDFFindController { exports.PDFFindController = PDFFindController; /***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { +/* 16 */ +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.getCharacterType = getCharacterType; exports.CharacterType = void 0; const CharacterType = { @@ -6617,20 +6692,19 @@ function getCharacterType(charCode) { } /***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { +/* 17 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.isDestHashesEqual = isDestHashesEqual; +})); exports.isDestArraysEqual = isDestArraysEqual; +exports.isDestHashesEqual = isDestHashesEqual; exports.PDFHistory = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const HASH_CHANGE_TIMEOUT = 1000; const POSITION_UPDATED_THRESHOLD = 50; @@ -6654,19 +6728,17 @@ class PDFHistory { this._isViewerInPresentationMode = false; this.eventBus._on("presentationmodechanged", evt => { - this._isViewerInPresentationMode = evt.active || evt.switchInProgress; + this._isViewerInPresentationMode = evt.state !== _ui_utils.PresentationModeState.NORMAL; }); this.eventBus._on("pagesinit", () => { this._isPagesLoaded = false; - const onPagesLoaded = evt => { - this.eventBus._off("pagesloaded", onPagesLoaded); - + this.eventBus._on("pagesloaded", evt => { this._isPagesLoaded = !!evt.pagesCount; - }; - - this.eventBus._on("pagesloaded", onPagesLoaded); + }, { + once: true + }); }); } @@ -6726,10 +6798,6 @@ class PDFHistory { this._updateInternalState(destination, state.uid, true); - if (this._uid > this._maxUid) { - this._maxUid = this._uid; - } - if (destination.rotation !== undefined) { this._initialRotation = destination.rotation; } @@ -6819,6 +6887,38 @@ class PDFHistory { } } + pushPage(pageNumber) { + if (!this._initialized) { + return; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) { + console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); + return; + } + + if (this._destination?.page === pageNumber) { + return; + } + + if (this._popStateInProgress) { + return; + } + + this._pushOrReplaceState({ + hash: `page=${pageNumber}`, + page: pageNumber, + rotation: this.linkService.rotation + }); + + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + pushCurrentPosition() { if (!this._initialized || this._popStateInProgress) { return; @@ -6875,7 +6975,7 @@ class PDFHistory { let newUrl; - if (this._updateUrl && destination && destination.hash) { + if (this._updateUrl && destination?.hash) { const baseUrl = document.location.href.split("#")[0]; if (!baseUrl.startsWith("file://")) { @@ -6883,12 +6983,11 @@ class PDFHistory { } } - // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl - return; +// FIXME: This currently breaks Epiphany due to rewriting history with baseUrl +return; if (shouldReplace) { window.history.replaceState(newState, "", newUrl); } else { - this._maxUid = this._uid; window.history.pushState(newState, "", newUrl); } } @@ -6951,7 +7050,7 @@ class PDFHistory { const [perfEntry] = performance.getEntriesByType("navigation"); - if (!perfEntry || perfEntry.type !== "reload") { + if (perfEntry?.type !== "reload") { return false; } } else { @@ -6976,12 +7075,13 @@ class PDFHistory { this._updateViewareaTimeout = null; } - if (removeTemporary && destination && destination.temporary) { + if (removeTemporary && destination?.temporary) { delete destination.temporary; } this._destination = destination; this._uid = uid; + this._maxUid = Math.max(this._maxUid, uid); this._numPositionUpdates = 0; } @@ -7082,16 +7182,12 @@ class PDFHistory { this._updateInternalState(destination, state.uid, true); - if (this._uid > this._maxUid) { - this._maxUid = this._uid; - } - if ((0, _ui_utils.isValidRotation)(destination.rotation)) { this.linkService.rotation = destination.rotation; } if (destination.dest) { - this.linkService.navigateTo(destination.dest); + this.linkService.goToDestination(destination.dest); } else if (destination.hash) { this.linkService.setHash(destination.hash); } else if (destination.page) { @@ -7207,18 +7303,17 @@ function isDestArraysEqual(firstDest, secondDest) { } /***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { +/* 18 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFLayerViewer = void 0; -var _base_tree_viewer = __webpack_require__(13); +var _base_tree_viewer = __webpack_require__(12); class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { constructor(options) { @@ -7233,7 +7328,6 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { reset() { super.reset(); this._optionalContentConfig = null; - this._pdfDocument = null; } _dispatchEvent(layersCount) { @@ -7369,14 +7463,7 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { } } - if (hasAnyNesting) { - this.container.classList.add("treeWithDeepNesting"); - this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0; - } - - this.container.appendChild(fragment); - - this._dispatchEvent(layersCount); + this._finishRendering(fragment, layersCount, hasAnyNesting); } async _resetLayers() { @@ -7400,18 +7487,17 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { exports.PDFLayerViewer = PDFLayerViewer; /***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.SimpleLinkService = exports.PDFLinkService = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); class PDFLinkService { constructor({ @@ -7468,89 +7554,111 @@ class PDFLinkService { } navigateTo(dest) { - const goToDestination = ({ - namedDest, - explicitDest - }) => { - const destRef = explicitDest[0]; - let pageNumber; - - if (destRef instanceof Object) { - pageNumber = this._cachedPageNumber(destRef); - - if (pageNumber === null) { - this.pdfDocument.getPageIndex(destRef).then(pageIndex => { - this.cachePageRef(pageIndex + 1, destRef); - goToDestination({ - namedDest, - explicitDest - }); - }).catch(() => { - console.error(`PDFLinkService.navigateTo: "${destRef}" is not ` + `a valid page reference, for dest="${dest}".`); - }); - return; - } - } else if (Number.isInteger(destRef)) { - pageNumber = destRef + 1; - } else { - console.error(`PDFLinkService.navigateTo: "${destRef}" is not ` + `a valid destination reference, for dest="${dest}".`); - return; - } + console.error("Deprecated method: `navigateTo`, use `goToDestination` instead."); + this.goToDestination(dest); + } - if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { - console.error(`PDFLinkService.navigateTo: "${pageNumber}" is not ` + `a valid page number, for dest="${dest}".`); - return; - } + _goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; - if (this.pdfHistory) { - this.pdfHistory.pushCurrentPosition(); - this.pdfHistory.push({ - namedDest, - explicitDest, - pageNumber - }); - } + if (destRef instanceof Object) { + pageNumber = this._cachedPageNumber(destRef); - this.pdfViewer.scrollPageIntoView({ - pageNumber, - destArray: explicitDest, - ignoreDestinationZoom: this._ignoreDestinationZoom - }); - }; + if (pageNumber === null) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); - new Promise((resolve, reject) => { - if (typeof dest === "string") { - this.pdfDocument.getDestination(dest).then(destArray => { - resolve({ - namedDest: dest, - explicitDest: destArray - }); + this._goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); }); return; } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } else { + console.error(`PDFLinkService._goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); + return; + } + + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService._goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); + return; + } - resolve({ - namedDest: "", - explicitDest: dest + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber }); - }).then(data => { - if (!Array.isArray(data.explicitDest)) { - console.error(`PDFLinkService.navigateTo: "${data.explicitDest}" is` + ` not a valid destination array, for dest="${dest}".`); - return; - } + } - goToDestination(data); + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom }); } - getDestinationHash(dest) { + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + + let namedDest, explicitDest; + if (typeof dest === "string") { - return this.getAnchorUrl("#" + escape(dest)); + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); + } else { + namedDest = null; + explicitDest = await dest; + } + + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; } - if (Array.isArray(dest)) { + this._goToDestinationHelper(dest, namedDest, explicitDest); + } + + goToPage(val) { + if (!this.pdfDocument) { + return; + } + + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); + } + + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { const str = JSON.stringify(dest); - return this.getAnchorUrl("#" + escape(str)); + + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } } return this.getAnchorUrl(""); @@ -7561,6 +7669,10 @@ class PDFLinkService { } setHash(hash) { + if (!this.pdfDocument) { + return; + } + let pageNumber, dest; if (hash.includes("=")) { @@ -7628,7 +7740,7 @@ class PDFLinkService { } if ("nameddest" in params) { - this.navigateTo(params.nameddest); + this.goToDestination(params.nameddest); } } else { dest = unescape(hash); @@ -7642,7 +7754,7 @@ class PDFLinkService { } catch (ex) {} if (typeof dest === "string" || isValidExplicitDestination(dest)) { - this.navigateTo(dest); + this.goToDestination(dest); return; } @@ -7667,17 +7779,11 @@ class PDFLinkService { break; case "NextPage": - if (this.page < this.pagesCount) { - this.page++; - } - + this.pdfViewer.nextPage(); break; case "PrevPage": - if (this.page > 1) { - this.page--; - } - + this.pdfViewer.previousPage(); break; case "LastPage": @@ -7716,6 +7822,10 @@ class PDFLinkService { return this.pdfViewer.isPageVisible(pageNumber); } + isPageCached(pageNumber) { + return this.pdfViewer.isPageCached(pageNumber); + } + } exports.PDFLinkService = PDFLinkService; @@ -7814,7 +7924,9 @@ class SimpleLinkService { set rotation(value) {} - navigateTo(dest) {} + async goToDestination(dest) {} + + goToPage(val) {} getDestinationHash(dest) { return "#"; @@ -7834,25 +7946,30 @@ class SimpleLinkService { return true; } + isPageCached(pageNumber) { + return true; + } + } exports.SimpleLinkService = SimpleLinkService; /***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFOutlineViewer = void 0; var _pdfjsLib = __webpack_require__(5); -var _base_tree_viewer = __webpack_require__(13); +var _base_tree_viewer = __webpack_require__(12); + +var _ui_utils = __webpack_require__(4); class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { constructor(options) { @@ -7860,17 +7977,35 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { this.linkService = options.linkService; this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + }); + + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); } reset() { super.reset(); this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = false; } _dispatchEvent(outlineCount) { this.eventBus.dispatch("outlineloaded", { source: this, - outlineCount + outlineCount, + enableCurrentOutlineItemButton: outlineCount > 0 && !this._pdfDocument?.loadingParams.disableAutoFetch }); } @@ -7895,9 +8030,11 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { element.href = linkService.getDestinationHash(dest); - element.onclick = () => { + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + if (dest) { - linkService.navigateTo(dest); + linkService.goToDestination(dest); } return false; @@ -7921,7 +8058,31 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { count, items }) { - const hidden = count < 0 && Math.abs(count) === items.length; + let hidden = false; + + if (count < 0) { + let totalCount = items.length; + + if (totalCount > 0) { + const queue = [...items]; + + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + + if (Math.abs(count) === totalCount) { + hidden = true; + } + } super._addToggleButton(div, hidden); } @@ -7935,13 +8096,15 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { } render({ - outline + outline, + pdfDocument }) { if (this._outline) { this.reset(); } this._outline = outline || null; + this._pdfDocument = pdfDocument || null; if (!outline) { this._dispatchEvent(0); @@ -7991,14 +8154,122 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { } } - if (hasAnyNesting) { - this.container.classList.add("treeWithDeepNesting"); - this._lastToggleIsShow = fragment.querySelectorAll(".treeItemsHidden").length === 0; + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); } - this.container.appendChild(fragment); + if (!this._outline || !this._pdfDocument) { + return; + } + + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + + if (!pageNumberToDestHash) { + return; + } + + this._updateCurrentTreeItem(null); + + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + + if (!destHash) { + continue; + } + + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + + if (!linkElement) { + continue; + } + + this._scrollToCurrentTreeItem(linkElement.parentNode); + + break; + } + } + + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } - this._dispatchEvent(outlineCount); + this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + + if (typeof destRef === "object") { + pageNumber = this.linkService._cachedPageNumber(destRef); + + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + + if (pdfDocument !== this._pdfDocument) { + return null; + } + + this.linkService.cachePageRef(pageNumber, destRef); + } catch (ex) {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + + return this._pageNumberToDestHashCapability.promise; } } @@ -8006,18 +8277,17 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { exports.PDFOutlineViewer = PDFOutlineViewer; /***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFPresentationMode = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; const DELAY_BEFORE_HIDING_CONTROLS = 3000; @@ -8090,8 +8360,6 @@ class PDFPresentationMode { this.container.mozRequestFullScreen(); } else if (this.container.webkitRequestFullscreen) { this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (this.container.msRequestFullscreen) { - this.container.msRequestFullscreen(); } else { return false; } @@ -8128,7 +8396,7 @@ class PDFPresentationMode { this._resetMouseScrollState(); - const success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage(); + const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); if (success) { this.mouseScrollTimeStamp = currentTime; @@ -8137,36 +8405,30 @@ class PDFPresentationMode { } get isFullscreen() { - return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement); + return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen); } - _goToPreviousPage() { - const page = this.pdfViewer.currentPageNumber; + _notifyStateChange() { + let state = _ui_utils.PresentationModeState.NORMAL; - if (page <= 1) { - return false; + if (this.switchInProgress) { + state = _ui_utils.PresentationModeState.CHANGING; + } else if (this.active) { + state = _ui_utils.PresentationModeState.FULLSCREEN; } - this.pdfViewer.currentPageNumber = page - 1; - return true; - } - - _goToNextPage() { - const page = this.pdfViewer.currentPageNumber; + this.eventBus.dispatch("presentationmodechanged", { + source: this, + state, - if (page >= this.pdfViewer.pagesCount) { - return false; - } + get active() { + throw new Error("Deprecated parameter: `active`, please use `state` instead."); + }, - this.pdfViewer.currentPageNumber = page + 1; - return true; - } + get switchInProgress() { + throw new Error("Deprecated parameter: `switchInProgress`, please use `state` instead."); + } - _notifyStateChange() { - this.eventBus.dispatch("presentationmodechanged", { - source: this, - active: this.active, - switchInProgress: !!this.switchInProgress }); } @@ -8252,9 +8514,9 @@ class PDFPresentationMode { evt.preventDefault(); if (evt.shiftKey) { - this._goToPreviousPage(); + this.pdfViewer.previousPage(); } else { - this._goToNextPage(); + this.pdfViewer.nextPage(); } } } @@ -8339,9 +8601,9 @@ class PDFPresentationMode { } if (delta > 0) { - this._goToPreviousPage(); + this.pdfViewer.previousPage(); } else if (delta < 0) { - this._goToNextPage(); + this.pdfViewer.nextPage(); } break; @@ -8399,14 +8661,12 @@ class PDFPresentationMode { window.addEventListener("fullscreenchange", this.fullscreenChangeBind); window.addEventListener("mozfullscreenchange", this.fullscreenChangeBind); window.addEventListener("webkitfullscreenchange", this.fullscreenChangeBind); - window.addEventListener("MSFullscreenChange", this.fullscreenChangeBind); } _removeFullscreenChangeListeners() { window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); window.removeEventListener("mozfullscreenchange", this.fullscreenChangeBind); window.removeEventListener("webkitfullscreenchange", this.fullscreenChangeBind); - window.removeEventListener("MSFullscreenChange", this.fullscreenChangeBind); delete this.fullscreenChangeBind; } @@ -8415,18 +8675,374 @@ class PDFPresentationMode { exports.PDFPresentationMode = PDFPresentationMode; /***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; + +var _ui_utils = __webpack_require__(4); + +var _pdf_rendering_queue = __webpack_require__(8); + +const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; + +class PDFSidebar { + constructor({ + elements, + pdfViewer, + pdfThumbnailViewer, + eventBus, + l10n = _ui_utils.NullL10n + }) { + this.isOpen = false; + this.active = _ui_utils.SidebarView.THUMBS; + this.isInitialViewSet = false; + this.onToggled = null; + this.pdfViewer = pdfViewer; + this.pdfThumbnailViewer = pdfThumbnailViewer; + this.outerContainer = elements.outerContainer; + this.viewerContainer = elements.viewerContainer; + this.toggleButton = elements.toggleButton; + this.thumbnailButton = elements.thumbnailButton; + this.outlineButton = elements.outlineButton; + this.attachmentsButton = elements.attachmentsButton; + this.layersButton = elements.layersButton; + this.thumbnailView = elements.thumbnailView; + this.outlineView = elements.outlineView; + this.attachmentsView = elements.attachmentsView; + this.layersView = elements.layersView; + this._outlineOptionsContainer = elements.outlineOptionsContainer; + this._currentOutlineItemButton = elements.currentOutlineItemButton; + this.eventBus = eventBus; + this.l10n = l10n; + + this._addEventListeners(); + } + + reset() { + this.isInitialViewSet = false; + + this._hideUINotification(true); + + this.switchView(_ui_utils.SidebarView.THUMBS); + this.outlineButton.disabled = false; + this.attachmentsButton.disabled = false; + this.layersButton.disabled = false; + this._currentOutlineItemButton.disabled = true; + } + + get visibleView() { + return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; + } + + get isThumbnailViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.THUMBS; + } + + get isOutlineViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.OUTLINE; + } + + get isAttachmentsViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.ATTACHMENTS; + } + + get isLayersViewVisible() { + return this.isOpen && this.active === _ui_utils.SidebarView.LAYERS; + } + + setInitialView(view = _ui_utils.SidebarView.NONE) { + if (this.isInitialViewSet) { + return; + } + + this.isInitialViewSet = true; + + if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { + this._dispatchEvent(); + + return; + } + + if (!this._switchView(view, true)) { + this._dispatchEvent(); + } + } + + switchView(view, forceOpen = false) { + this._switchView(view, forceOpen); + } + + _switchView(view, forceOpen = false) { + const isViewChanged = view !== this.active; + let shouldForceRendering = false; + + switch (view) { + case _ui_utils.SidebarView.NONE: + if (this.isOpen) { + this.close(); + return true; + } + + return false; + + case _ui_utils.SidebarView.THUMBS: + if (this.isOpen && isViewChanged) { + shouldForceRendering = true; + } + + break; + + case _ui_utils.SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return false; + } + + break; + + case _ui_utils.SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return false; + } + + break; + + case _ui_utils.SidebarView.LAYERS: + if (this.layersButton.disabled) { + return false; + } + + break; + + default: + console.error(`PDFSidebar._switchView: "${view}" is not a valid view.`); + return false; + } + + this.active = view; + this.thumbnailButton.classList.toggle("toggled", view === _ui_utils.SidebarView.THUMBS); + this.outlineButton.classList.toggle("toggled", view === _ui_utils.SidebarView.OUTLINE); + this.attachmentsButton.classList.toggle("toggled", view === _ui_utils.SidebarView.ATTACHMENTS); + this.layersButton.classList.toggle("toggled", view === _ui_utils.SidebarView.LAYERS); + this.thumbnailView.classList.toggle("hidden", view !== _ui_utils.SidebarView.THUMBS); + this.outlineView.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); + this.attachmentsView.classList.toggle("hidden", view !== _ui_utils.SidebarView.ATTACHMENTS); + this.layersView.classList.toggle("hidden", view !== _ui_utils.SidebarView.LAYERS); + + this._outlineOptionsContainer.classList.toggle("hidden", view !== _ui_utils.SidebarView.OUTLINE); + + if (forceOpen && !this.isOpen) { + this.open(); + return true; + } + + if (shouldForceRendering) { + this._updateThumbnailViewer(); + + this._forceRendering(); + } + + if (isViewChanged) { + this._dispatchEvent(); + } + + return isViewChanged; + } + + open() { + if (this.isOpen) { + return; + } + + this.isOpen = true; + this.toggleButton.classList.add("toggled"); + this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); + + if (this.active === _ui_utils.SidebarView.THUMBS) { + this._updateThumbnailViewer(); + } + + this._forceRendering(); + + this._dispatchEvent(); + + this._hideUINotification(); + } + + close() { + if (!this.isOpen) { + return; + } + + this.isOpen = false; + this.toggleButton.classList.remove("toggled"); + this.outerContainer.classList.add("sidebarMoving"); + this.outerContainer.classList.remove("sidebarOpen"); + + this._forceRendering(); + + this._dispatchEvent(); + } + + toggle() { + if (this.isOpen) { + this.close(); + } else { + this.open(); + } + } + + _dispatchEvent() { + this.eventBus.dispatch("sidebarviewchanged", { + source: this, + view: this.visibleView + }); + } + + _forceRendering() { + if (this.onToggled) { + this.onToggled(); + } else { + this.pdfViewer.forceRendering(); + this.pdfThumbnailViewer.forceRendering(); + } + } + + _updateThumbnailViewer() { + const { + pdfViewer, + pdfThumbnailViewer + } = this; + const pagesCount = pdfViewer.pagesCount; + + for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + const pageView = pdfViewer.getPageView(pageIndex); + + if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { + const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); + thumbnailView.setImage(pageView); + } + } + + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + } + + _showUINotification() { + this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains outline/attachments/layers)").then(msg => { + this.toggleButton.title = msg; + }); + + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); + } + } + + _hideUINotification(reset = false) { + if (this.isOpen || reset) { + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); + } + + if (reset) { + this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => { + this.toggleButton.title = msg; + }); + } + } + + _addEventListeners() { + this.viewerContainer.addEventListener("transitionend", evt => { + if (evt.target === this.viewerContainer) { + this.outerContainer.classList.remove("sidebarMoving"); + } + }); + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.thumbnailButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.THUMBS); + }); + this.outlineButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.OUTLINE); + }); + this.outlineButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("toggleoutlinetree", { + source: this + }); + }); + this.attachmentsButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.ATTACHMENTS); + }); + this.layersButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.LAYERS); + }); + this.layersButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("resetlayers", { + source: this + }); + }); + + this._currentOutlineItemButton.addEventListener("click", () => { + this.eventBus.dispatch("currentoutlineitem", { + source: this + }); + }); + + const onTreeLoaded = (count, button, view) => { + button.disabled = !count; + + if (count) { + this._showUINotification(); + } else if (this.active === view) { + this.switchView(_ui_utils.SidebarView.THUMBS); + } + }; + + this.eventBus._on("outlineloaded", evt => { + onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); + + if (evt.enableCurrentOutlineItemButton) { + this.pdfViewer.pagesPromise.then(() => { + this._currentOutlineItemButton.disabled = !this.isInitialViewSet; + }); + } + }); + + this.eventBus._on("attachmentsloaded", evt => { + onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); + }); + + this.eventBus._on("layersloaded", evt => { + onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); + }); + + this.eventBus._on("presentationmodechanged", evt => { + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.isThumbnailViewVisible) { + this._updateThumbnailViewer(); + } + }); + } + +} + +exports.PDFSidebar = PDFSidebar; + +/***/ }), /* 23 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFSidebarResizer = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const SIDEBAR_WIDTH_VAR = "--sidebar-width"; const SIDEBAR_MIN_WIDTH = 200; @@ -8434,7 +9050,6 @@ const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; class PDFSidebarResizer { constructor(options, eventBus, l10n = _ui_utils.NullL10n) { - this.enabled = false; this.isRTL = false; this.sidebarOpen = false; this.doc = document.documentElement; @@ -8444,16 +9059,7 @@ class PDFSidebarResizer { this.outerContainer = options.outerContainer; this.resizer = options.resizer; this.eventBus = eventBus; - this.l10n = l10n; - - if (typeof CSS === "undefined" || typeof CSS.supports !== "function" || !CSS.supports(SIDEBAR_WIDTH_VAR, `calc(-1 * ${SIDEBAR_MIN_WIDTH}px)`)) { - console.warn("PDFSidebarResizer: " + "The browser does not support resizing of the sidebar."); - return; - } - - this.enabled = true; - this.resizer.classList.remove("hidden"); - this.l10n.getDirection().then(dir => { + l10n.getDirection().then(dir => { this.isRTL = dir === "rtl"; }); @@ -8469,18 +9075,22 @@ class PDFSidebarResizer { } _updateWidth(width = 0) { - if (!this.enabled) { - return false; + const maxWidth = Math.floor(this.outerContainerWidth / 2); + + if (width > maxWidth) { + width = maxWidth; } - const newWidth = (0, _ui_utils.clamp)(width, SIDEBAR_MIN_WIDTH, Math.floor(this.outerContainerWidth / 2)); + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } - if (newWidth === this._width) { + if (width === this._width) { return false; } - this._width = newWidth; - this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${newWidth}px`); + this._width = width; + this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); return true; } @@ -8505,10 +9115,6 @@ class PDFSidebarResizer { } _addEventListeners() { - if (!this.enabled) { - return; - } - const _boundEvents = this._boundEvents; _boundEvents.mouseMove = this._mouseMove.bind(this); _boundEvents.mouseUp = this._mouseUp.bind(this); @@ -8565,20 +9171,21 @@ exports.PDFSidebarResizer = PDFSidebarResizer; /***/ }), /* 24 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFThumbnailViewer = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); var _pdf_thumbnail_view = __webpack_require__(25); +var _pdf_rendering_queue = __webpack_require__(8); + const THUMBNAIL_SCROLL_MARGIN = -19; const THUMBNAIL_SELECTED_CLASS = "selected"; @@ -8612,7 +9219,10 @@ class PDFThumbnailViewer { } _getVisibleThumbs() { - return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails); + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails + }); } scrollThumbnailIntoView(pageNumber) { @@ -8690,7 +9300,13 @@ class PDFThumbnailViewer { } cleanup() { - _pdf_thumbnail_view.PDFThumbnailView.cleanup(); + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + if (this._thumbnails[i] && this._thumbnails[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._thumbnails[i].reset(); + } + } + + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); } _resetView() { @@ -8838,19 +9454,18 @@ exports.PDFThumbnailViewer = PDFThumbnailViewer; /***/ }), /* 25 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.PDFThumbnailView = void 0; +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; -var _pdfjsLib = __webpack_require__(5); +var _ui_utils = __webpack_require__(4); -var _ui_utils = __webpack_require__(2); +var _pdfjsLib = __webpack_require__(5); var _pdf_rendering_queue = __webpack_require__(8); @@ -8896,6 +9511,8 @@ const TempImageFactory = function TempImageFactoryClosure() { }; }(); +exports.TempImageFactory = TempImageFactory; + class PDFThumbnailView { constructor({ container, @@ -8942,7 +9559,7 @@ class PDFThumbnailView { }); anchor.onclick = function () { - linkService.page = id; + linkService.goToPage(id); return false; }; @@ -9027,7 +9644,7 @@ class PDFThumbnailView { this.resume = null; } - _getPageDrawContext(noCtxScale = false) { + _getPageDrawContext() { const canvas = document.createElement("canvas"); this.canvas = canvas; canvas.mozOpaque = true; @@ -9039,12 +9656,8 @@ class PDFThumbnailView { canvas.height = this.canvasHeight * outputScale.sy | 0; canvas.style.width = this.canvasWidth + "px"; canvas.style.height = this.canvasHeight + "px"; - - if (!noCtxScale && outputScale.scaled) { - ctx.scale(outputScale.sx, outputScale.sy); - } - - return ctx; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return [ctx, transform]; } _convertCanvasToImage() { @@ -9104,15 +9717,13 @@ class PDFThumbnailView { } this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); - const finishRenderTask = error => { + const finishRenderTask = async (error = null) => { if (renderTask === this.renderTask) { this.renderTask = null; } if (error instanceof _pdfjsLib.RenderingCancelledException) { - renderCapability.resolve(undefined); return; } @@ -9120,14 +9731,12 @@ class PDFThumbnailView { this._convertCanvasToImage(); - if (!error) { - renderCapability.resolve(undefined); - } else { - renderCapability.reject(error); + if (error) { + throw error; } }; - const ctx = this._getPageDrawContext(); + const [ctx, transform] = this._getPageDrawContext(); const drawViewport = this.viewport.clone({ scale: this.scale @@ -9150,17 +9759,27 @@ class PDFThumbnailView { const renderContext = { canvasContext: ctx, + transform, viewport: drawViewport, optionalContentConfigPromise: this._optionalContentConfigPromise }; const renderTask = this.renderTask = pdfPage.render(renderContext); renderTask.onContinue = renderContinueCallback; - renderTask.promise.then(function () { + const resultPromise = renderTask.promise.then(function () { finishRenderTask(null); }, function (error) { finishRenderTask(error); }); - return renderCapability.promise; + resultPromise.finally(() => { + const pageCached = this.linkService.isPageCached(this.id); + + if (pageCached) { + return; + } + + this.pdfPage?.cleanup(); + }); + return resultPromise; } setImage(pageView) { @@ -9184,7 +9803,7 @@ class PDFThumbnailView { this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - const ctx = this._getPageDrawContext(true); + const [ctx] = this._getPageDrawContext(); const canvas = ctx.canvas; @@ -9220,18 +9839,14 @@ class PDFThumbnailView { } get _thumbPageTitle() { - var _this$pageLabel; - return this.l10n.get("thumb_page_title", { - page: (_this$pageLabel = this.pageLabel) != null ? _this$pageLabel : this.id + page: this.pageLabel ?? this.id }, "Page {{page}}"); } get _thumbPageCanvas() { - var _this$pageLabel2; - return this.l10n.get("thumb_page_canvas", { - page: (_this$pageLabel2 = this.pageLabel) != null ? _this$pageLabel2 : this.id + page: this.pageLabel ?? this.id }, "Thumbnail of Page {{page}}"); } @@ -9255,26 +9870,23 @@ class PDFThumbnailView { }); } - static cleanup() { - TempImageFactory.destroyCanvas(); - } - } exports.PDFThumbnailView = PDFThumbnailView; /***/ }), /* 26 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFViewer = void 0; +var _ui_utils = __webpack_require__(4); + var _base_viewer = __webpack_require__(27); var _pdfjsLib = __webpack_require__(5); @@ -9333,7 +9945,7 @@ class PDFViewer extends _base_viewer.BaseViewer { break; } - if (page.id === currentId) { + if (page.id === currentId && this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode === _ui_utils.SpreadMode.NONE) { stillFullyVisible = true; break; } @@ -9352,27 +9964,26 @@ exports.PDFViewer = PDFViewer; /***/ }), /* 27 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.BaseViewer = void 0; -var _ui_utils = __webpack_require__(2); +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(4); var _pdf_rendering_queue = __webpack_require__(8); var _annotation_layer_builder = __webpack_require__(28); -var _pdfjsLib = __webpack_require__(5); - var _pdf_page_view = __webpack_require__(29); -var _pdf_link_service = __webpack_require__(20); +var _pdf_link_service = __webpack_require__(19); var _text_layer_builder = __webpack_require__(30); @@ -9414,6 +10025,10 @@ function PDFPageViewBuffer(size) { data.shift().destroy(); } }; + + this.has = function (view) { + return data.includes(view); + }; } function isSameScale(oldScale, newScale) { @@ -9434,14 +10049,24 @@ class BaseViewer { throw new Error("Cannot initialize BaseViewer."); } + const viewerVersion = '2.7.570'; + + if (_pdfjsLib.version !== viewerVersion) { + throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); + } + this._name = this.constructor.name; this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; - if (!(this.container instanceof HTMLDivElement && this.viewer instanceof HTMLDivElement)) { + if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) { throw new Error("Invalid `container` and/or `viewer` option."); } + if (getComputedStyle(this.container).position !== "absolute") { + throw new Error("The `container` must be absolutely positioned."); + } + this.eventBus = options.eventBus; this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); this.downloadManager = options.downloadManager || null; @@ -9456,6 +10081,8 @@ class BaseViewer { this.useOnlyCssZoom = options.useOnlyCssZoom || false; this.maxCanvasPixels = options.maxCanvasPixels; this.l10n = options.l10n || _ui_utils.NullL10n; + this.enableScripting = options.enableScripting || false; + this._mouseState = options.mouseState || null; this.defaultRenderingQueue = !options.renderingQueue; if (this.defaultRenderingQueue) { @@ -9531,11 +10158,13 @@ class BaseViewer { return false; } + const previous = this._currentPageNumber; this._currentPageNumber = val; this.eventBus.dispatch("pagechanging", { source: this, pageNumber: val, - pageLabel: this._pageLabels && this._pageLabels[val - 1] + pageLabel: this._pageLabels && this._pageLabels[val - 1], + previous }); if (resetCurrentPageView) { @@ -9663,6 +10292,10 @@ class BaseViewer { setDocument(pdfDocument) { if (this.pdfDocument) { + this.eventBus.dispatch("pagesdestroy", { + source: this + }); + this._cancelRendering(); this._resetView(); @@ -9680,7 +10313,6 @@ class BaseViewer { const pagesCount = pdfDocument.numPages; const firstPagePromise = pdfDocument.getPage(1); - const annotationStorage = pdfDocument.annotationStorage; const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); this._pagesCapability.promise.then(() => { @@ -9733,7 +10365,6 @@ class BaseViewer { id: pageNum, scale, defaultViewport: viewport.clone(), - annotationStorage, optionalContentConfigPromise, renderingQueue: this.renderingQueue, textLayerFactory, @@ -9745,7 +10376,8 @@ class BaseViewer { enableWebGL: this.enableWebGL, useOnlyCssZoom: this.useOnlyCssZoom, maxCanvasPixels: this.maxCanvasPixels, - l10n: this.l10n + l10n: this.l10n, + enableScripting: this.enableScripting }); this._pages.push(pageView); @@ -9866,6 +10498,8 @@ class BaseViewer { this._onAfterDraw = null; } + this._resetScriptingEvents(); + this.viewer.textContent = ""; this._updateScrollMode(); @@ -9937,6 +10571,14 @@ class BaseViewer { } } + get _pageWidthScaleFactor() { + if (this.spreadMode !== _ui_utils.SpreadMode.NONE && this.scrollMode !== _ui_utils.ScrollMode.HORIZONTAL && !this.isInPresentationMode) { + return 2; + } + + return 1; + } + _setScale(value, noScroll = false) { let scale = parseFloat(value); @@ -9957,7 +10599,7 @@ class BaseViewer { [hPadding, vPadding] = [vPadding, hPadding]; } - const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale; + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; switch (value) { @@ -10003,6 +10645,20 @@ class BaseViewer { }); } + pageLabelToPageNumber(label) { + if (!this._pageLabels) { + return null; + } + + const i = this._pageLabels.indexOf(label); + + if (i < 0) { + return null; + } + + return i + 1; + } + scrollPageIntoView({ pageNumber, destArray = null, @@ -10059,6 +10715,8 @@ class BaseViewer { if (y === null && this._location) { x = this._location.left; y = this._location.top; + } else if (typeof y !== "number") { + y = pageHeight; } break; @@ -10189,6 +10847,10 @@ class BaseViewer { return this.isInPresentationMode ? false : this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL; } + get _isContainerRtl() { + return getComputedStyle(this.container).direction === "rtl"; + } + get isInPresentationMode() { return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; } @@ -10228,7 +10890,13 @@ class BaseViewer { } _getVisiblePages() { - return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._isScrollModeHorizontal); + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._pages, + sortByVisibility: true, + horizontal: this._isScrollModeHorizontal, + rtl: this._isScrollModeHorizontal && this._isContainerRtl + }); } isPageVisible(pageNumber) { @@ -10236,8 +10904,8 @@ class BaseViewer { return false; } - if (pageNumber < 1 || pageNumber > this.pagesCount) { - console.error(`${this._name}.isPageVisible: "${pageNumber}" is out of bounds.`); + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`); return false; } @@ -10246,6 +10914,25 @@ class BaseViewer { }); } + isPageCached(pageNumber) { + if (!this.pdfDocument || !this._buffer) { + return false; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`); + return false; + } + + const pageView = this._pages[pageNumber - 1]; + + if (!pageView) { + return false; + } + + return this._buffer.has(pageView); + } + cleanup() { for (let i = 0, ii = this._pages.length; i < ii; i++) { if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { @@ -10318,16 +11005,19 @@ class BaseViewer { }); } - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = false, l10n = _ui_utils.NullL10n) { + createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = false, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, mouseState = null) { return new _annotation_layer_builder.AnnotationLayerBuilder({ pageDiv, pdfPage, - annotationStorage, + annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage, imageResourcesPath, renderInteractiveForms, linkService: this.linkService, downloadManager: this.downloadManager, - l10n + l10n, + enableScripting, + hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(), + mouseState: mouseState || this._mouseState }); } @@ -10510,32 +11200,288 @@ class BaseViewer { return; } + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, true); + } + this._setCurrentPageNumber(pageNumber, true); this.update(); } + _getPageAdvance(currentPageNumber, previous = false) { + if (this.isInPresentationMode) { + return 1; + } + + switch (this._scrollMode) { + case _ui_utils.ScrollMode.WRAPPED: + { + const { + views + } = this._getVisiblePages(), + pageLayout = new Map(); + + for (const { + id, + y, + percent, + widthPercent + } of views) { + if (percent === 0 || widthPercent < 100) { + continue; + } + + let yArray = pageLayout.get(y); + + if (!yArray) { + pageLayout.set(y, yArray || (yArray = [])); + } + + yArray.push(id); + } + + for (const yArray of pageLayout.values()) { + const currentIndex = yArray.indexOf(currentPageNumber); + + if (currentIndex === -1) { + continue; + } + + const numPages = yArray.length; + + if (numPages === 1) { + break; + } + + if (previous) { + for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { + const currentId = yArray[i], + expectedId = yArray[i + 1] - 1; + + if (currentId < expectedId) { + return currentPageNumber - expectedId; + } + } + } else { + for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { + const currentId = yArray[i], + expectedId = yArray[i - 1] + 1; + + if (currentId > expectedId) { + return expectedId - currentPageNumber; + } + } + } + + if (previous) { + const firstId = yArray[0]; + + if (firstId < currentPageNumber) { + return currentPageNumber - firstId + 1; + } + } else { + const lastId = yArray[numPages - 1]; + + if (lastId > currentPageNumber) { + return lastId - currentPageNumber + 1; + } + } + + break; + } + + break; + } + + case _ui_utils.ScrollMode.HORIZONTAL: + { + break; + } + + case _ui_utils.ScrollMode.VERTICAL: + { + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + break; + } + + const parity = this._spreadMode - 1; + + if (previous && currentPageNumber % 2 !== parity) { + break; + } else if (!previous && currentPageNumber % 2 === parity) { + break; + } + + const { + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; + + for (const { + id, + percent, + widthPercent + } of views) { + if (id !== expectedId) { + continue; + } + + if (percent > 0 && widthPercent === 100) { + return 2; + } + + break; + } + + break; + } + } + + return 1; + } + + nextPage() { + const currentPageNumber = this._currentPageNumber, + pagesCount = this.pagesCount; + + if (currentPageNumber >= pagesCount) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, false) || 1; + this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); + return true; + } + + previousPage() { + const currentPageNumber = this._currentPageNumber; + + if (currentPageNumber <= 1) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, true) || 1; + this.currentPageNumber = Math.max(currentPageNumber - advance, 1); + return true; + } + + initializeScriptingEvents() { + if (!this.enableScripting || this._pageOpenPendingSet) { + return; + } + + const eventBus = this.eventBus, + pageOpenPendingSet = this._pageOpenPendingSet = new Set(), + scriptingEvents = this._scriptingEvents || (this._scriptingEvents = Object.create(null)); + + const dispatchPageClose = pageNumber => { + if (pageOpenPendingSet.has(pageNumber)) { + return; + } + + eventBus.dispatch("pageclose", { + source: this, + pageNumber + }); + }; + + const dispatchPageOpen = pageNumber => { + const pageView = this._pages[pageNumber - 1]; + + if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { + pageOpenPendingSet.delete(pageNumber); + eventBus.dispatch("pageopen", { + source: this, + pageNumber, + actionsPromise: pageView.pdfPage?.getJSActions() + }); + } else { + pageOpenPendingSet.add(pageNumber); + } + }; + + scriptingEvents.onPageChanging = ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + + dispatchPageClose(previous); + dispatchPageOpen(pageNumber); + }; + + eventBus._on("pagechanging", scriptingEvents.onPageChanging); + + scriptingEvents.onPageRendered = ({ + pageNumber + }) => { + if (!pageOpenPendingSet.has(pageNumber)) { + return; + } + + if (pageNumber !== this._currentPageNumber) { + return; + } + + dispatchPageOpen(pageNumber); + }; + + eventBus._on("pagerendered", scriptingEvents.onPageRendered); + + scriptingEvents.onPagesDestroy = () => { + dispatchPageClose(this._currentPageNumber); + }; + + eventBus._on("pagesdestroy", scriptingEvents.onPagesDestroy); + + dispatchPageOpen(this._currentPageNumber); + } + + _resetScriptingEvents() { + if (!this.enableScripting || !this._pageOpenPendingSet) { + return; + } + + const eventBus = this.eventBus, + scriptingEvents = this._scriptingEvents; + + eventBus._off("pagechanging", scriptingEvents.onPageChanging); + + scriptingEvents.onPageChanging = null; + + eventBus._off("pagerendered", scriptingEvents.onPageRendered); + + scriptingEvents.onPageRendered = null; + + eventBus._off("pagesdestroy", scriptingEvents.onPagesDestroy); + + scriptingEvents.onPagesDestroy = null; + this._pageOpenPendingSet = null; + } + } exports.BaseViewer = BaseViewer; /***/ }), /* 28 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0; var _pdfjsLib = __webpack_require__(5); -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); -var _pdf_link_service = __webpack_require__(20); +var _pdf_link_service = __webpack_require__(19); class AnnotationLayerBuilder { constructor({ @@ -10546,7 +11492,10 @@ class AnnotationLayerBuilder { annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, - l10n = _ui_utils.NullL10n + l10n = _ui_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + mouseState = null }) { this.pageDiv = pageDiv; this.pdfPage = pdfPage; @@ -10556,14 +11505,17 @@ class AnnotationLayerBuilder { this.renderInteractiveForms = renderInteractiveForms; this.l10n = l10n; this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise; + this._mouseState = mouseState; this.div = null; this._cancelled = false; } render(viewport, intent = "display") { - return this.pdfPage.getAnnotations({ + return Promise.all([this.pdfPage.getAnnotations({ intent - }).then(annotations => { + }), this._hasJSActionsPromise]).then(([annotations, hasJSActions = false]) => { if (this._cancelled) { return; } @@ -10583,7 +11535,10 @@ class AnnotationLayerBuilder { renderInteractiveForms: this.renderInteractiveForms, linkService: this.linkService, downloadManager: this.downloadManager, - annotationStorage: this.annotationStorage + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + mouseState: this._mouseState }; if (this.div) { @@ -10618,7 +11573,7 @@ class AnnotationLayerBuilder { exports.AnnotationLayerBuilder = AnnotationLayerBuilder; class DefaultAnnotationLayerFactory { - createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = _ui_utils.NullL10n) { + createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", renderInteractiveForms = true, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, mouseState = null) { return new AnnotationLayerBuilder({ pageDiv, pdfPage, @@ -10626,7 +11581,10 @@ class DefaultAnnotationLayerFactory { renderInteractiveForms, linkService: new _pdf_link_service.SimpleLinkService(), l10n, - annotationStorage + annotationStorage, + enableScripting, + hasJSActionsPromise, + mouseState }); } @@ -10636,23 +11594,22 @@ exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; /***/ }), /* 29 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFPageView = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); var _pdfjsLib = __webpack_require__(5); var _pdf_rendering_queue = __webpack_require__(8); -var _viewer_compatibility = __webpack_require__(4); +var _viewer_compatibility = __webpack_require__(2); const MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216; @@ -10668,7 +11625,6 @@ class PDFPageView { this.scale = options.scale || _ui_utils.DEFAULT_SCALE; this.viewport = defaultViewport; this.pdfPageRotate = defaultViewport.rotation; - this._annotationStorage = options.annotationStorage || null; this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; this.hasRestrictedScaling = false; this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE; @@ -10683,11 +11639,12 @@ class PDFPageView { this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; this.enableWebGL = options.enableWebGL || false; this.l10n = options.l10n || _ui_utils.NullL10n; + this.enableScripting = options.enableScripting || false; this.paintTask = null; this.paintedViewportMap = new WeakMap(); this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; this.resume = null; - this.error = null; + this._renderError = null; this.annotationLayer = null; this.textLayer = null; this.zoomLayer = null; @@ -10708,7 +11665,6 @@ class PDFPageView { scale: this.scale * _ui_utils.CSS_UNITS, rotation: totalRotation }); - this.stats = pdfPage.stats; this.reset(); } @@ -10826,7 +11782,8 @@ class PDFPageView { source: this, pageNumber: this.id, cssTransform: true, - timestamp: performance.now() + timestamp: performance.now(), + error: this._renderError }); return; } @@ -10848,7 +11805,8 @@ class PDFPageView { source: this, pageNumber: this.id, cssTransform: true, - timestamp: performance.now() + timestamp: performance.now(), + error: this._renderError }); return; } @@ -10901,8 +11859,7 @@ class PDFPageView { scaleY = width / height; } - const cssTransform = "rotate(" + relativeRotation + "deg) " + "scale(" + scaleX + "," + scaleY + ")"; - target.style.transform = cssTransform; + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; if (this.textLayer) { const textLayerViewport = this.textLayer.viewport; @@ -10942,7 +11899,7 @@ class PDFPageView { break; } - textLayerDiv.style.transform = "rotate(" + textAbsRotation + "deg) " + "scale(" + scale + ", " + scale + ") " + "translate(" + transX + ", " + transY + ")"; + textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`; textLayerDiv.style.transformOrigin = "0% 0%"; } @@ -11034,16 +11991,17 @@ class PDFPageView { }; } - const finishPaintTask = async error => { + const finishPaintTask = async (error = null) => { if (paintTask === this.paintTask) { this.paintTask = null; } if (error instanceof _pdfjsLib.RenderingCancelledException) { - this.error = null; + this._renderError = null; return; } + this._renderError = error; this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; if (this.loadingIconDiv) { @@ -11053,13 +12011,12 @@ class PDFPageView { this._resetZoomLayer(true); - this.error = error; - this.stats = pdfPage.stats; this.eventBus.dispatch("pagerendered", { source: this, pageNumber: this.id, cssTransform: false, - timestamp: performance.now() + timestamp: performance.now(), + error: this._renderError }); if (error) { @@ -11086,7 +12043,7 @@ class PDFPageView { if (this.annotationLayerFactory) { if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this._annotationStorage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n); + this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, this.imageResourcesPath, this.renderInteractiveForms, this.l10n, this.enableScripting, null, null); } this._renderAnnotationLayer(); @@ -11257,15 +12214,14 @@ exports.PDFPageView = PDFPageView; /***/ }), /* 30 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); -exports.DefaultTextLayerFactory = exports.TextLayerBuilder = void 0; +})); +exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0; var _pdfjsLib = __webpack_require__(5); @@ -11381,13 +12337,11 @@ class TextLayerBuilder { } const { - findController, textContentItemsStr } = this; let i = 0, iIndex = 0; const end = textContentItemsStr.length - 1; - const queryLen = findController.state.query.length; const result = []; for (let m = 0, mm = matches.length; m < mm; m++) { @@ -11408,12 +12362,7 @@ class TextLayerBuilder { offset: matchIdx - iIndex } }; - - if (matchesLength) { - matchIdx += matchesLength[m]; - } else { - matchIdx += queryLen; - } + matchIdx += matchesLength[m]; while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { iIndex += textContentItemsStr[i].length; @@ -11641,17 +12590,16 @@ exports.DefaultTextLayerFactory = DefaultTextLayerFactory; /***/ }), /* 31 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.SecondaryToolbar = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); var _pdf_cursor_tools = __webpack_require__(6); @@ -11959,14 +12907,13 @@ exports.SecondaryToolbar = SecondaryToolbar; /***/ }), /* 32 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.PDFSinglePageViewer = void 0; var _base_viewer = __webpack_require__(27); @@ -11986,6 +12933,10 @@ class PDFSinglePageViewer extends _base_viewer.BaseViewer { return (0, _pdfjsLib.shadow)(this, "_viewerElement", this._shadowViewer); } + get _pageWidthScaleFactor() { + return 1; + } + _resetView() { super._resetView(); @@ -12075,23 +13026,26 @@ class PDFSinglePageViewer extends _base_viewer.BaseViewer { _updateSpreadMode() {} + _getPageAdvance() { + return 1; + } + } exports.PDFSinglePageViewer = PDFSinglePageViewer; /***/ }), /* 33 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.Toolbar = void 0; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; const SCALE_SELECT_CONTAINER_WIDTH = 140; @@ -12351,14 +13305,13 @@ exports.Toolbar = Toolbar; /***/ }), /* 34 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.ViewHistory = void 0; const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; @@ -12447,17 +13400,16 @@ exports.ViewHistory = ViewHistory; /***/ }), /* 35 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.GenericCom = void 0; -var _app = __webpack_require__(1); +var _app = __webpack_require__(3); var _preferences = __webpack_require__(36); @@ -12465,6 +13417,8 @@ var _download_manager = __webpack_require__(37); var _genericl10n = __webpack_require__(38); +var _generic_scripting = __webpack_require__(40); + ; const GenericCom = {}; exports.GenericCom = GenericCom; @@ -12482,7 +13436,7 @@ class GenericPreferences extends _preferences.BasePreferences { class GenericExternalServices extends _app.DefaultExternalServices { static createDownloadManager(options) { - return new _download_manager.DownloadManager(options); + return new _download_manager.DownloadManager(); } static createPreferences() { @@ -12495,56 +13449,28 @@ class GenericExternalServices extends _app.DefaultExternalServices { return new _genericl10n.GenericL10n(locale); } + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } + } _app.PDFViewerApplication.externalServices = GenericExternalServices; /***/ }), /* 36 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.BasePreferences = void 0; -var _app_options = __webpack_require__(3); - -let defaultPreferences = null; - -function getDefaultPreferences() { - if (!defaultPreferences) { - defaultPreferences = Promise.resolve({ - "cursorToolOnLoad": 0, - "defaultZoomValue": "", - "disablePageLabels": false, - "enablePermissions": false, - "enablePrintAutoRotate": false, - "enableWebGL": false, - "externalLinkTarget": 0, - "historyUpdateUrl": false, - "ignoreDestinationZoom": false, - "pdfBugEnabled": false, - "renderer": "canvas", - "renderInteractiveForms": true, - "sidebarViewOnLoad": -1, - "scrollModeOnLoad": -1, - "spreadModeOnLoad": -1, - "textLayerMode": 1, - "useOnlyCssZoom": false, - "viewOnLoad": 0, - "disableAutoFetch": false, - "disableFontFace": false, - "disableRange": false, - "disableStream": false - }); - } - - return defaultPreferences; -} +var _app_options = __webpack_require__(1); class BasePreferences { constructor() { @@ -12552,17 +13478,39 @@ class BasePreferences { throw new Error("Cannot initialize BasePreferences."); } - this.prefs = null; - this._initializedPromise = getDefaultPreferences().then(defaults => { - Object.defineProperty(this, "defaults", { - value: Object.freeze(defaults), - writable: false, - enumerable: true, - configurable: false - }); - this.prefs = Object.assign(Object.create(null), defaults); - return this._readFromStorage(defaults); - }).then(prefs => { + Object.defineProperty(this, "defaults", { + value: Object.freeze({ + "cursorToolOnLoad": 0, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": false, + "enableScripting": false, + "enableWebGL": false, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "pdfBugEnabled": false, + "renderer": "canvas", + "renderInteractiveForms": true, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false + }), + writable: false, + enumerable: true, + configurable: false + }); + this.prefs = Object.assign(Object.create(null), this.defaults); + this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => { if (!prefs) { return; } @@ -12651,19 +13599,18 @@ exports.BasePreferences = BasePreferences; /***/ }), /* 37 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.DownloadManager = void 0; var _pdfjsLib = __webpack_require__(5); -var _viewer_compatibility = __webpack_require__(4); +var _viewer_compatibility = __webpack_require__(2); ; @@ -12696,26 +13643,11 @@ class DownloadManager { } downloadData(data, filename, contentType) { - if (navigator.msSaveBlob) { - navigator.msSaveBlob(new Blob([data], { - type: contentType - }), filename); - return; - } - const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL); download(blobUrl, filename); } download(blob, url, filename, sourceEventType = "download") { - if (navigator.msSaveBlob) { - if (!navigator.msSaveBlob(blob, filename)) { - this.downloadUrl(url, filename); - } - - return; - } - if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) { this.downloadUrl(url, filename); return; @@ -12731,14 +13663,13 @@ exports.DownloadManager = DownloadManager; /***/ }), /* 38 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); exports.GenericL10n = void 0; __webpack_require__(39); @@ -12781,9 +13712,8 @@ exports.GenericL10n = GenericL10n; /***/ }), /* 39 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (() => { -"use strict"; document.webL10n = function (window, document, undefined) { @@ -13604,21 +14534,59 @@ document.webL10n = function (window, document, undefined) { /***/ }), /* 40 */ -/***/ (function(module, exports, __webpack_require__) { +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { -"use strict"; -Object.defineProperty(exports, "__esModule", { +Object.defineProperty(exports, "__esModule", ({ value: true -}); +})); +exports.GenericScripting = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class GenericScripting { + constructor(sandboxBundleSrc) { + this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { + return window.pdfjsSandbox.QuickJSSandbox(); + }); + } + + async createSandbox(data) { + const sandbox = await this._ready; + sandbox.create(data); + } + + async dispatchEventInSandbox(event) { + const sandbox = await this._ready; + sandbox.dispatchEvent(event); + } + + async destroySandbox() { + const sandbox = await this._ready; + sandbox.nukeSandbox(); + } + +} + +exports.GenericScripting = GenericScripting; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); exports.PDFPrintService = PDFPrintService; -var _ui_utils = __webpack_require__(2); +var _ui_utils = __webpack_require__(4); -var _app = __webpack_require__(1); +var _app = __webpack_require__(3); -var _viewer_compatibility = __webpack_require__(4); +var _viewer_compatibility = __webpack_require__(2); let activeService = null; let overlayManager = null; @@ -13904,5 +14872,36 @@ _app.PDFPrintServiceFactory.instance = { }; /***/ }) -/******/ ]); +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ // startup +/******/ // Load entry module +/******/ __webpack_require__(0); +/******/ // This entry module used 'exports' so it can't be inlined +/******/ })() +; //# sourceMappingURL=viewer.js.map |