/**
 * @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(e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define("pdfjs-dist/build/pdf", [], t) : "object" == typeof exports ? exports["pdfjs-dist/build/pdf"] = t() : e["pdfjs-dist/build/pdf"] = e.pdfjsLib = t()
}(this, (function() {
    return function(e) {
        var t = {};
        function __w_pdfjs_require__(r) {
            if (t[r])
                return t[r].exports;
            var n = t[r] = {
                i: r,
                l: !1,
                exports: {}
            };
            e[r].call(n.exports, n, n.exports, __w_pdfjs_require__);
            n.l = !0;
            return n.exports
        }
        __w_pdfjs_require__.m = e;
        __w_pdfjs_require__.c = t;
        __w_pdfjs_require__.d = function(e, t, r) {
            __w_pdfjs_require__.o(e, t) || Object.defineProperty(e, t, {
                enumerable: !0,
                get: r
            })
        }
        ;
        __w_pdfjs_require__.r = function(e) {
            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
                value: "Module"
            });
            Object.defineProperty(e, "__esModule", {
                value: !0
            })
        }
        ;
        __w_pdfjs_require__.t = function(e, t) {
            1 & t && (e = __w_pdfjs_require__(e));
            if (8 & t)
                return e;
            if (4 & t && "object" == typeof e && e && e.__esModule)
                return e;
            var r = Object.create(null);
            __w_pdfjs_require__.r(r);
            Object.defineProperty(r, "default", {
                enumerable: !0,
                value: e
            });
            if (2 & t && "string" != typeof e)
                for (var n in e)
                    __w_pdfjs_require__.d(r, n, function(t) {
                        return e[t]
                    }
                    .bind(null, n));
            return r
        }
        ;
        __w_pdfjs_require__.n = function(e) {
            var t = e && e.__esModule ? function getDefault() {
                return e.default
            }
            : function getModuleExports() {
                return e
            }
            ;
            __w_pdfjs_require__.d(t, "a", t);
            return t
        }
        ;
        __w_pdfjs_require__.o = function(e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }
        ;
        __w_pdfjs_require__.p = "";
        return __w_pdfjs_require__(__w_pdfjs_require__.s = 0)
    }([function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        Object.defineProperty(t, "addLinkAttributes", {
            enumerable: !0,
            get: function() {
                return n.addLinkAttributes
            }
        });
        Object.defineProperty(t, "getFilenameFromUrl", {
            enumerable: !0,
            get: function() {
                return n.getFilenameFromUrl
            }
        });
        Object.defineProperty(t, "LinkTarget", {
            enumerable: !0,
            get: function() {
                return n.LinkTarget
            }
        });
        Object.defineProperty(t, "loadScript", {
            enumerable: !0,
            get: function() {
                return n.loadScript
            }
        });
        Object.defineProperty(t, "PDFDateString", {
            enumerable: !0,
            get: function() {
                return n.PDFDateString
            }
        });
        Object.defineProperty(t, "RenderingCancelledException", {
            enumerable: !0,
            get: function() {
                return n.RenderingCancelledException
            }
        });
        Object.defineProperty(t, "build", {
            enumerable: !0,
            get: function() {
                return s.build
            }
        });
        Object.defineProperty(t, "getDocument", {
            enumerable: !0,
            get: function() {
                return s.getDocument
            }
        });
        Object.defineProperty(t, "LoopbackPort", {
            enumerable: !0,
            get: function() {
                return s.LoopbackPort
            }
        });
        Object.defineProperty(t, "PDFDataRangeTransport", {
            enumerable: !0,
            get: function() {
                return s.PDFDataRangeTransport
            }
        });
        Object.defineProperty(t, "PDFWorker", {
            enumerable: !0,
            get: function() {
                return s.PDFWorker
            }
        });
        Object.defineProperty(t, "version", {
            enumerable: !0,
            get: function() {
                return s.version
            }
        });
        Object.defineProperty(t, "CMapCompressionType", {
            enumerable: !0,
            get: function() {
                return a.CMapCompressionType
            }
        });
        Object.defineProperty(t, "createObjectURL", {
            enumerable: !0,
            get: function() {
                return a.createObjectURL
            }
        });
        Object.defineProperty(t, "createPromiseCapability", {
            enumerable: !0,
            get: function() {
                return a.createPromiseCapability
            }
        });
        Object.defineProperty(t, "createValidAbsoluteUrl", {
            enumerable: !0,
            get: function() {
                return a.createValidAbsoluteUrl
            }
        });
        Object.defineProperty(t, "InvalidPDFException", {
            enumerable: !0,
            get: function() {
                return a.InvalidPDFException
            }
        });
        Object.defineProperty(t, "MissingPDFException", {
            enumerable: !0,
            get: function() {
                return a.MissingPDFException
            }
        });
        Object.defineProperty(t, "OPS", {
            enumerable: !0,
            get: function() {
                return a.OPS
            }
        });
        Object.defineProperty(t, "PasswordResponses", {
            enumerable: !0,
            get: function() {
                return a.PasswordResponses
            }
        });
        Object.defineProperty(t, "PermissionFlag", {
            enumerable: !0,
            get: function() {
                return a.PermissionFlag
            }
        });
        Object.defineProperty(t, "removeNullCharacters", {
            enumerable: !0,
            get: function() {
                return a.removeNullCharacters
            }
        });
        Object.defineProperty(t, "shadow", {
            enumerable: !0,
            get: function() {
                return a.shadow
            }
        });
        Object.defineProperty(t, "UnexpectedResponseException", {
            enumerable: !0,
            get: function() {
                return a.UnexpectedResponseException
            }
        });
        Object.defineProperty(t, "UNSUPPORTED_FEATURES", {
            enumerable: !0,
            get: function() {
                return a.UNSUPPORTED_FEATURES
            }
        });
        Object.defineProperty(t, "Util", {
            enumerable: !0,
            get: function() {
                return a.Util
            }
        });
        Object.defineProperty(t, "VerbosityLevel", {
            enumerable: !0,
            get: function() {
                return a.VerbosityLevel
            }
        });
        Object.defineProperty(t, "AnnotationLayer", {
            enumerable: !0,
            get: function() {
                return i.AnnotationLayer
            }
        });
        Object.defineProperty(t, "apiCompatibilityParams", {
            enumerable: !0,
            get: function() {
                return o.apiCompatibilityParams
            }
        });
        Object.defineProperty(t, "GlobalWorkerOptions", {
            enumerable: !0,
            get: function() {
                return l.GlobalWorkerOptions
            }
        });
        Object.defineProperty(t, "renderTextLayer", {
            enumerable: !0,
            get: function() {
                return c.renderTextLayer
            }
        });
        Object.defineProperty(t, "SVGGraphics", {
            enumerable: !0,
            get: function() {
                return h.SVGGraphics
            }
        });
        var n = r(1)
          , s = r(5)
          , a = r(2)
          , i = r(19)
          , o = r(9)
          , l = r(12)
          , c = r(20)
          , h = r(21);
        {
            const {isNodeJS: e} = r(4);
            if (e) {
                const e = r(22).PDFNodeStream;
                (0,
                s.setPDFNetworkStreamFactory)(t=>new e(t))
            } else {
                const e = r(25).PDFNetworkStream;
                let t;
                (0,
                n.isFetchSupported)() && (t = r(26).PDFFetchStream);
                (0,
                s.setPDFNetworkStreamFactory)(r=>t && (0,
                n.isValidFetchUrl)(r.url) ? new t(r) : new e(r))
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.addLinkAttributes = function addLinkAttributes(e, {url: t, target: r, rel: s, enabled: i=!0}={}) {
            (0,
            n.assert)(t && "string" == typeof t, 'addLinkAttributes: A valid "url" parameter must provided.');
            const o = (0,
            n.removeNullCharacters)(t);
            if (i)
                e.href = e.title = o;
            else {
                e.href = "";
                e.title = "Disabled: " + o;
                e.onclick = ()=>!1
            }
            let l = "";
            switch (r) {
            case a.NONE:
                break;
            case a.SELF:
                l = "_self";
                break;
            case a.BLANK:
                l = "_blank";
                break;
            case a.PARENT:
                l = "_parent";
                break;
            case a.TOP:
                l = "_top"
            }
            e.target = l;
            e.rel = "string" == typeof s ? s : "noopener noreferrer nofollow"
        }
        ;
        t.getFilenameFromUrl = function getFilenameFromUrl(e) {
            const t = e.indexOf("#")
              , r = e.indexOf("?")
              , n = Math.min(t > 0 ? t : e.length, r > 0 ? r : e.length);
            return e.substring(e.lastIndexOf("/", n) + 1, n)
        }
        ;
        t.isFetchSupported = isFetchSupported;
        t.isValidFetchUrl = isValidFetchUrl;
        t.loadScript = function loadScript(e) {
            return new Promise((t,r)=>{
                const n = document.createElement("script");
                n.src = e;
                n.onload = t;
                n.onerror = function() {
                    r(new Error("Cannot load script at: " + n.src))
                }
                ;
                (document.head || document.documentElement).appendChild(n)
            }
            )
        }
        ;
        t.deprecated = function deprecated(e) {
            console.log("Deprecated API usage: " + e)
        }
        ;
        t.PDFDateString = t.StatTimer = t.DOMSVGFactory = t.DOMCMapReaderFactory = t.BaseCMapReaderFactory = t.DOMCanvasFactory = t.BaseCanvasFactory = t.DEFAULT_LINK_REL = t.LinkTarget = t.RenderingCancelledException = t.PageViewport = void 0;
        var n = r(2);
        t.DEFAULT_LINK_REL = "noopener noreferrer nofollow";
        const s = "http://www.w3.org/2000/svg";
        class BaseCanvasFactory {
            constructor() {
                this.constructor === BaseCanvasFactory && (0,
                n.unreachable)("Cannot initialize BaseCanvasFactory.")
            }
            create(e, t) {
                (0,
                n.unreachable)("Abstract method `create` called.")
            }
            reset(e, t, r) {
                if (!e.canvas)
                    throw new Error("Canvas is not specified");
                if (t <= 0 || r <= 0)
                    throw new Error("Invalid canvas size");
                e.canvas.width = t;
                e.canvas.height = r
            }
            destroy(e) {
                if (!e.canvas)
                    throw new Error("Canvas is not specified");
                e.canvas.width = 0;
                e.canvas.height = 0;
                e.canvas = null;
                e.context = null
            }
        }
        t.BaseCanvasFactory = BaseCanvasFactory;
        t.DOMCanvasFactory = class DOMCanvasFactory extends BaseCanvasFactory {
            constructor({ownerDocument: e=globalThis.document}={}) {
                super();
                this._document = e
            }
            create(e, t) {
                if (e <= 0 || t <= 0)
                    throw new Error("Invalid canvas size");
                const r = this._document.createElement("canvas")
                  , n = r.getContext("2d");
                r.width = e;
                r.height = t;
                return {
                    canvas: r,
                    context: n
                }
            }
        }
        ;
        class BaseCMapReaderFactory {
            constructor({baseUrl: e=null, isCompressed: t=!1}) {
                this.constructor === BaseCMapReaderFactory && (0,
                n.unreachable)("Cannot initialize BaseCMapReaderFactory.");
                this.baseUrl = e;
                this.isCompressed = t
            }
            async fetch({name: e}) {
                if (!this.baseUrl)
                    throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');
                if (!e)
                    throw new Error("CMap name must be specified.");
                const t = this.baseUrl + e + (this.isCompressed ? ".bcmap" : "")
                  , r = this.isCompressed ? n.CMapCompressionType.BINARY : n.CMapCompressionType.NONE;
                return this._fetchData(t, r).catch(e=>{
                    throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${t}`)
                }
                )
            }
            _fetchData(e, t) {
                (0,
                n.unreachable)("Abstract method `_fetchData` called.")
            }
        }
        t.BaseCMapReaderFactory = BaseCMapReaderFactory;
        t.DOMCMapReaderFactory = class DOMCMapReaderFactory extends BaseCMapReaderFactory {
            _fetchData(e, t) {
                return isFetchSupported() && isValidFetchUrl(e, document.baseURI) ? fetch(e).then(async e=>{
                    if (!e.ok)
                        throw new Error(e.statusText);
                    let r;
                    r = this.isCompressed ? new Uint8Array(await e.arrayBuffer()) : (0,
                    n.stringToBytes)(await e.text());
                    return {
                        cMapData: r,
                        compressionType: t
                    }
                }
                ) : new Promise((r,s)=>{
                    const a = new XMLHttpRequest;
                    a.open("GET", e, !0);
                    this.isCompressed && (a.responseType = "arraybuffer");
                    a.onreadystatechange = ()=>{
                        if (a.readyState === XMLHttpRequest.DONE) {
                            if (200 === a.status || 0 === a.status) {
                                let e;
                                this.isCompressed && a.response ? e = new Uint8Array(a.response) : !this.isCompressed && a.responseText && (e = (0,
                                n.stringToBytes)(a.responseText));
                                if (e) {
                                    r({
                                        cMapData: e,
                                        compressionType: t
                                    });
                                    return
                                }
                            }
                            s(new Error(a.statusText))
                        }
                    }
                    ;
                    a.send(null)
                }
                )
            }
        }
        ;
        t.DOMSVGFactory = class DOMSVGFactory {
            create(e, t) {
                (0,
                n.assert)(e > 0 && t > 0, "Invalid SVG dimensions");
                const r = document.createElementNS(s, "svg:svg");
                r.setAttribute("version", "1.1");
                r.setAttribute("width", e + "px");
                r.setAttribute("height", t + "px");
                r.setAttribute("preserveAspectRatio", "none");
                r.setAttribute("viewBox", "0 0 " + e + " " + t);
                return r
            }
            createElement(e) {
                (0,
                n.assert)("string" == typeof e, "Invalid SVG element type");
                return document.createElementNS(s, e)
            }
        }
        ;
        class PageViewport {
            constructor({viewBox: e, scale: t, rotation: r, offsetX: n=0, offsetY: s=0, dontFlip: a=!1}) {
                this.viewBox = e;
                this.scale = t;
                this.rotation = r;
                this.offsetX = n;
                this.offsetY = s;
                const i = (e[2] + e[0]) / 2
                  , o = (e[3] + e[1]) / 2;
                let l, c, h, d, u, p, f, g;
                switch (r = (r %= 360) < 0 ? r + 360 : r) {
                case 180:
                    l = -1;
                    c = 0;
                    h = 0;
                    d = 1;
                    break;
                case 90:
                    l = 0;
                    c = 1;
                    h = 1;
                    d = 0;
                    break;
                case 270:
                    l = 0;
                    c = -1;
                    h = -1;
                    d = 0;
                    break;
                case 0:
                    l = 1;
                    c = 0;
                    h = 0;
                    d = -1;
                    break;
                default:
                    throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")
                }
                if (a) {
                    h = -h;
                    d = -d
                }
                if (0 === l) {
                    u = Math.abs(o - e[1]) * t + n;
                    p = Math.abs(i - e[0]) * t + s;
                    f = Math.abs(e[3] - e[1]) * t;
                    g = Math.abs(e[2] - e[0]) * t
                } else {
                    u = Math.abs(i - e[0]) * t + n;
                    p = Math.abs(o - e[1]) * t + s;
                    f = Math.abs(e[2] - e[0]) * t;
                    g = Math.abs(e[3] - e[1]) * t
                }
                this.transform = [l * t, c * t, h * t, d * t, u - l * t * i - h * t * o, p - c * t * i - d * t * o];
                this.width = f;
                this.height = g
            }
            clone({scale: e=this.scale, rotation: t=this.rotation, offsetX: r=this.offsetX, offsetY: n=this.offsetY, dontFlip: s=!1}={}) {
                return new PageViewport({
                    viewBox: this.viewBox.slice(),
                    scale: e,
                    rotation: t,
                    offsetX: r,
                    offsetY: n,
                    dontFlip: s
                })
            }
            convertToViewportPoint(e, t) {
                return n.Util.applyTransform([e, t], this.transform)
            }
            convertToViewportRectangle(e) {
                const t = n.Util.applyTransform([e[0], e[1]], this.transform)
                  , r = n.Util.applyTransform([e[2], e[3]], this.transform);
                return [t[0], t[1], r[0], r[1]]
            }
            convertToPdfPoint(e, t) {
                return n.Util.applyInverseTransform([e, t], this.transform)
            }
        }
        t.PageViewport = PageViewport;
        class RenderingCancelledException extends n.BaseException {
            constructor(e, t) {
                super(e);
                this.type = t
            }
        }
        t.RenderingCancelledException = RenderingCancelledException;
        const a = {
            NONE: 0,
            SELF: 1,
            BLANK: 2,
            PARENT: 3,
            TOP: 4
        };
        t.LinkTarget = a;
        t.StatTimer = class StatTimer {
            constructor() {
                this.started = Object.create(null);
                this.times = []
            }
            time(e) {
                e in this.started && (0,
                n.warn)("Timer is already running for " + e);
                this.started[e] = Date.now()
            }
            timeEnd(e) {
                e in this.started || (0,
                n.warn)("Timer has not been started for " + e);
                this.times.push({
                    name: e,
                    start: this.started[e],
                    end: Date.now()
                });
                delete this.started[e]
            }
            toString() {
                const e = [];
                let t = 0;
                for (const e of this.times) {
                    const r = e.name;
                    r.length > t && (t = r.length)
                }
                for (const r of this.times) {
                    const n = r.end - r.start;
                    e.push(`${r.name.padEnd(t)} ${n}ms\n`)
                }
                return e.join("")
            }
        }
        ;
        function isFetchSupported() {
            return "undefined" != typeof fetch && "undefined" != typeof Response && "body"in Response.prototype && "undefined" != typeof ReadableStream
        }
        function isValidFetchUrl(e, t) {
            try {
                const {protocol: r} = t ? new URL(e,t) : new URL(e);
                return "http:" === r || "https:" === r
            } catch (e) {
                return !1
            }
        }
        let i;
        t.PDFDateString = class PDFDateString {
            static toDateObject(e) {
                if (!e || !(0,
                n.isString)(e))
                    return null;
                i || (i = new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));
                const t = i.exec(e);
                if (!t)
                    return null;
                const r = parseInt(t[1], 10);
                let s = parseInt(t[2], 10);
                s = s >= 1 && s <= 12 ? s - 1 : 0;
                let a = parseInt(t[3], 10);
                a = a >= 1 && a <= 31 ? a : 1;
                let o = parseInt(t[4], 10);
                o = o >= 0 && o <= 23 ? o : 0;
                let l = parseInt(t[5], 10);
                l = l >= 0 && l <= 59 ? l : 0;
                let c = parseInt(t[6], 10);
                c = c >= 0 && c <= 59 ? c : 0;
                const h = t[7] || "Z";
                let d = parseInt(t[8], 10);
                d = d >= 0 && d <= 23 ? d : 0;
                let u = parseInt(t[9], 10) || 0;
                u = u >= 0 && u <= 59 ? u : 0;
                if ("-" === h) {
                    o += d;
                    l += u
                } else if ("+" === h) {
                    o -= d;
                    l -= u
                }
                return new Date(Date.UTC(r, s, a, o, l, c))
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.arrayByteLength = arrayByteLength;
        t.arraysToBytes = function arraysToBytes(e) {
            const t = e.length;
            if (1 === t && e[0]instanceof Uint8Array)
                return e[0];
            let r = 0;
            for (let n = 0; n < t; n++)
                r += arrayByteLength(e[n]);
            let n = 0;
            const s = new Uint8Array(r);
            for (let r = 0; r < t; r++) {
                let t = e[r];
                t instanceof Uint8Array || (t = "string" == typeof t ? stringToBytes(t) : new Uint8Array(t));
                const a = t.byteLength;
                s.set(t, n);
                n += a
            }
            return s
        }
        ;
        t.assert = assert;
        t.bytesToString = function bytesToString(e) {
            assert(null !== e && "object" == typeof e && void 0 !== e.length, "Invalid argument for bytesToString");
            const t = e.length;
            if (t < 8192)
                return String.fromCharCode.apply(null, e);
            const r = [];
            for (let n = 0; n < t; n += 8192) {
                const s = Math.min(n + 8192, t)
                  , a = e.subarray(n, s);
                r.push(String.fromCharCode.apply(null, a))
            }
            return r.join("")
        }
        ;
        t.createPromiseCapability = function createPromiseCapability() {
            const e = Object.create(null);
            let t = !1;
            Object.defineProperty(e, "settled", {
                get: ()=>t
            });
            e.promise = new Promise((function(r, n) {
                e.resolve = function(e) {
                    t = !0;
                    r(e)
                }
                ;
                e.reject = function(e) {
                    t = !0;
                    n(e)
                }
            }
            ));
            return e
        }
        ;
        t.escapeString = function escapeString(e) {
            return e.replace(/([\(\)\\])/g, "\\$1")
        }
        ;
        t.getModificationDate = function getModificationDate(e=new Date(Date.now())) {
            return [e.getUTCFullYear().toString(), (e.getUTCMonth() + 1).toString().padStart(2, "0"), (e.getUTCDate() + 1).toString().padStart(2, "0"), e.getUTCHours().toString().padStart(2, "0"), e.getUTCMinutes().toString().padStart(2, "0"), e.getUTCSeconds().toString().padStart(2, "0")].join("")
        }
        ;
        t.getVerbosityLevel = function getVerbosityLevel() {
            return s
        }
        ;
        t.info = function info(e) {
            s >= n.INFOS && console.log("Info: " + e)
        }
        ;
        t.isArrayBuffer = function isArrayBuffer(e) {
            return "object" == typeof e && null !== e && void 0 !== e.byteLength
        }
        ;
        t.isArrayEqual = function isArrayEqual(e, t) {
            if (e.length !== t.length)
                return !1;
            return e.every((function(e, r) {
                return e === t[r]
            }
            ))
        }
        ;
        t.isBool = function isBool(e) {
            return "boolean" == typeof e
        }
        ;
        t.isNum = function isNum(e) {
            return "number" == typeof e
        }
        ;
        t.isString = function isString(e) {
            return "string" == typeof e
        }
        ;
        t.isSameOrigin = function isSameOrigin(e, t) {
            let r;
            try {
                r = new URL(e);
                if (!r.origin || "null" === r.origin)
                    return !1
            } catch (e) {
                return !1
            }
            const n = new URL(t,r);
            return r.origin === n.origin
        }
        ;
        t.createValidAbsoluteUrl = function createValidAbsoluteUrl(e, t) {
            if (!e)
                return null;
            try {
                const r = t ? new URL(e,t) : new URL(e);
                if (function _isValidProtocol(e) {
                    if (!e)
                        return !1;
                    switch (e.protocol) {
                    case "http:":
                    case "https:":
                    case "ftp:":
                    case "mailto:":
                    case "tel:":
                        return !0;
                    default:
                        return !1
                    }
                }(r))
                    return r
            } catch (e) {}
            return null
        }
        ;
        t.removeNullCharacters = function removeNullCharacters(e) {
            if ("string" != typeof e) {
                warn("The argument for removeNullCharacters must be a string.");
                return e
            }
            return e.replace(i, "")
        }
        ;
        t.setVerbosityLevel = function setVerbosityLevel(e) {
            Number.isInteger(e) && (s = e)
        }
        ;
        t.shadow = shadow;
        t.string32 = function string32(e) {
            return String.fromCharCode(e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e)
        }
        ;
        t.stringToBytes = stringToBytes;
        t.stringToPDFString = function stringToPDFString(e) {
            const t = e.length
              , r = [];
            if ("þ" === e[0] && "ÿ" === e[1])
                for (let n = 2; n < t; n += 2)
                    r.push(String.fromCharCode(e.charCodeAt(n) << 8 | e.charCodeAt(n + 1)));
            else if ("ÿ" === e[0] && "þ" === e[1])
                for (let n = 2; n < t; n += 2)
                    r.push(String.fromCharCode(e.charCodeAt(n + 1) << 8 | e.charCodeAt(n)));
            else
                for (let n = 0; n < t; ++n) {
                    const t = h[e.charCodeAt(n)];
                    r.push(t ? String.fromCharCode(t) : e.charAt(n))
                }
            return r.join("")
        }
        ;
        t.stringToUTF8String = function stringToUTF8String(e) {
            return decodeURIComponent(escape(e))
        }
        ;
        t.utf8StringToString = function utf8StringToString(e) {
            return unescape(encodeURIComponent(e))
        }
        ;
        t.warn = warn;
        t.unreachable = unreachable;
        t.IsEvalSupportedCached = t.IsLittleEndianCached = t.createObjectURL = t.FormatError = t.Util = t.UnknownErrorException = t.UnexpectedResponseException = t.TextRenderingMode = t.StreamType = t.PermissionFlag = t.PasswordResponses = t.PasswordException = t.MissingPDFException = t.InvalidPDFException = t.AbortException = t.CMapCompressionType = t.ImageKind = t.FontType = t.AnnotationType = t.AnnotationStateModelType = t.AnnotationReviewState = t.AnnotationReplyType = t.AnnotationMarkedState = t.AnnotationFlag = t.AnnotationFieldFlag = t.AnnotationBorderStyleType = t.UNSUPPORTED_FEATURES = t.VerbosityLevel = t.OPS = t.IDENTITY_MATRIX = t.FONT_IDENTITY_MATRIX = t.BaseException = void 0;
        r(3);
        t.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
        t.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];
        t.PermissionFlag = {
            PRINT: 4,
            MODIFY_CONTENTS: 8,
            COPY: 16,
            MODIFY_ANNOTATIONS: 32,
            FILL_INTERACTIVE_FORMS: 256,
            COPY_FOR_ACCESSIBILITY: 512,
            ASSEMBLE: 1024,
            PRINT_HIGH_QUALITY: 2048
        };
        t.TextRenderingMode = {
            FILL: 0,
            STROKE: 1,
            FILL_STROKE: 2,
            INVISIBLE: 3,
            FILL_ADD_TO_PATH: 4,
            STROKE_ADD_TO_PATH: 5,
            FILL_STROKE_ADD_TO_PATH: 6,
            ADD_TO_PATH: 7,
            FILL_STROKE_MASK: 3,
            ADD_TO_PATH_FLAG: 4
        };
        t.ImageKind = {
            GRAYSCALE_1BPP: 1,
            RGB_24BPP: 2,
            RGBA_32BPP: 3
        };
        t.AnnotationType = {
            TEXT: 1,
            LINK: 2,
            FREETEXT: 3,
            LINE: 4,
            SQUARE: 5,
            CIRCLE: 6,
            POLYGON: 7,
            POLYLINE: 8,
            HIGHLIGHT: 9,
            UNDERLINE: 10,
            SQUIGGLY: 11,
            STRIKEOUT: 12,
            STAMP: 13,
            CARET: 14,
            INK: 15,
            POPUP: 16,
            FILEATTACHMENT: 17,
            SOUND: 18,
            MOVIE: 19,
            WIDGET: 20,
            SCREEN: 21,
            PRINTERMARK: 22,
            TRAPNET: 23,
            WATERMARK: 24,
            THREED: 25,
            REDACT: 26
        };
        t.AnnotationStateModelType = {
            MARKED: "Marked",
            REVIEW: "Review"
        };
        t.AnnotationMarkedState = {
            MARKED: "Marked",
            UNMARKED: "Unmarked"
        };
        t.AnnotationReviewState = {
            ACCEPTED: "Accepted",
            REJECTED: "Rejected",
            CANCELLED: "Cancelled",
            COMPLETED: "Completed",
            NONE: "None"
        };
        t.AnnotationReplyType = {
            GROUP: "Group",
            REPLY: "R"
        };
        t.AnnotationFlag = {
            INVISIBLE: 1,
            HIDDEN: 2,
            PRINT: 4,
            NOZOOM: 8,
            NOROTATE: 16,
            NOVIEW: 32,
            READONLY: 64,
            LOCKED: 128,
            TOGGLENOVIEW: 256,
            LOCKEDCONTENTS: 512
        };
        t.AnnotationFieldFlag = {
            READONLY: 1,
            REQUIRED: 2,
            NOEXPORT: 4,
            MULTILINE: 4096,
            PASSWORD: 8192,
            NOTOGGLETOOFF: 16384,
            RADIO: 32768,
            PUSHBUTTON: 65536,
            COMBO: 131072,
            EDIT: 262144,
            SORT: 524288,
            FILESELECT: 1048576,
            MULTISELECT: 2097152,
            DONOTSPELLCHECK: 4194304,
            DONOTSCROLL: 8388608,
            COMB: 16777216,
            RICHTEXT: 33554432,
            RADIOSINUNISON: 33554432,
            COMMITONSELCHANGE: 67108864
        };
        t.AnnotationBorderStyleType = {
            SOLID: 1,
            DASHED: 2,
            BEVELED: 3,
            INSET: 4,
            UNDERLINE: 5
        };
        t.StreamType = {
            UNKNOWN: "UNKNOWN",
            FLATE: "FLATE",
            LZW: "LZW",
            DCT: "DCT",
            JPX: "JPX",
            JBIG: "JBIG",
            A85: "A85",
            AHX: "AHX",
            CCF: "CCF",
            RLX: "RLX"
        };
        t.FontType = {
            UNKNOWN: "UNKNOWN",
            TYPE1: "TYPE1",
            TYPE1C: "TYPE1C",
            CIDFONTTYPE0: "CIDFONTTYPE0",
            CIDFONTTYPE0C: "CIDFONTTYPE0C",
            TRUETYPE: "TRUETYPE",
            CIDFONTTYPE2: "CIDFONTTYPE2",
            TYPE3: "TYPE3",
            OPENTYPE: "OPENTYPE",
            TYPE0: "TYPE0",
            MMTYPE1: "MMTYPE1"
        };
        const n = {
            ERRORS: 0,
            WARNINGS: 1,
            INFOS: 5
        };
        t.VerbosityLevel = n;
        t.CMapCompressionType = {
            NONE: 0,
            BINARY: 1,
            STREAM: 2
        };
        t.OPS = {
            dependency: 1,
            setLineWidth: 2,
            setLineCap: 3,
            setLineJoin: 4,
            setMiterLimit: 5,
            setDash: 6,
            setRenderingIntent: 7,
            setFlatness: 8,
            setGState: 9,
            save: 10,
            restore: 11,
            transform: 12,
            moveTo: 13,
            lineTo: 14,
            curveTo: 15,
            curveTo2: 16,
            curveTo3: 17,
            closePath: 18,
            rectangle: 19,
            stroke: 20,
            closeStroke: 21,
            fill: 22,
            eoFill: 23,
            fillStroke: 24,
            eoFillStroke: 25,
            closeFillStroke: 26,
            closeEOFillStroke: 27,
            endPath: 28,
            clip: 29,
            eoClip: 30,
            beginText: 31,
            endText: 32,
            setCharSpacing: 33,
            setWordSpacing: 34,
            setHScale: 35,
            setLeading: 36,
            setFont: 37,
            setTextRenderingMode: 38,
            setTextRise: 39,
            moveText: 40,
            setLeadingMoveText: 41,
            setTextMatrix: 42,
            nextLine: 43,
            showText: 44,
            showSpacedText: 45,
            nextLineShowText: 46,
            nextLineSetSpacingShowText: 47,
            setCharWidth: 48,
            setCharWidthAndBounds: 49,
            setStrokeColorSpace: 50,
            setFillColorSpace: 51,
            setStrokeColor: 52,
            setStrokeColorN: 53,
            setFillColor: 54,
            setFillColorN: 55,
            setStrokeGray: 56,
            setFillGray: 57,
            setStrokeRGBColor: 58,
            setFillRGBColor: 59,
            setStrokeCMYKColor: 60,
            setFillCMYKColor: 61,
            shadingFill: 62,
            beginInlineImage: 63,
            beginImageData: 64,
            endInlineImage: 65,
            paintXObject: 66,
            markPoint: 67,
            markPointProps: 68,
            beginMarkedContent: 69,
            beginMarkedContentProps: 70,
            endMarkedContent: 71,
            beginCompat: 72,
            endCompat: 73,
            paintFormXObjectBegin: 74,
            paintFormXObjectEnd: 75,
            beginGroup: 76,
            endGroup: 77,
            beginAnnotations: 78,
            endAnnotations: 79,
            beginAnnotation: 80,
            endAnnotation: 81,
            paintJpegXObject: 82,
            paintImageMaskXObject: 83,
            paintImageMaskXObjectGroup: 84,
            paintImageXObject: 85,
            paintInlineImageXObject: 86,
            paintInlineImageXObjectGroup: 87,
            paintImageXObjectRepeat: 88,
            paintImageMaskXObjectRepeat: 89,
            paintSolidColorImageMask: 90,
            constructPath: 91
        };
        t.UNSUPPORTED_FEATURES = {
            unknown: "unknown",
            forms: "forms",
            javaScript: "javaScript",
            smask: "smask",
            shadingPattern: "shadingPattern",
            font: "font",
            errorTilingPattern: "errorTilingPattern",
            errorExtGState: "errorExtGState",
            errorXObject: "errorXObject",
            errorFontLoadType3: "errorFontLoadType3",
            errorFontState: "errorFontState",
            errorFontMissing: "errorFontMissing",
            errorFontTranslate: "errorFontTranslate",
            errorColorSpace: "errorColorSpace",
            errorOperatorList: "errorOperatorList",
            errorFontToUnicode: "errorFontToUnicode",
            errorFontLoadNative: "errorFontLoadNative",
            errorFontGetPath: "errorFontGetPath",
            errorMarkedContent: "errorMarkedContent"
        };
        t.PasswordResponses = {
            NEED_PASSWORD: 1,
            INCORRECT_PASSWORD: 2
        };
        let s = n.WARNINGS;
        function warn(e) {
            s >= n.WARNINGS && console.log("Warning: " + e)
        }
        function unreachable(e) {
            throw new Error(e)
        }
        function assert(e, t) {
            e || unreachable(t)
        }
        function shadow(e, t, r) {
            Object.defineProperty(e, t, {
                value: r,
                enumerable: !0,
                configurable: !0,
                writable: !1
            });
            return r
        }
        const a = function BaseExceptionClosure() {
            function BaseException(e) {
                this.constructor === BaseException && unreachable("Cannot initialize BaseException.");
                this.message = e;
                this.name = this.constructor.name
            }
            BaseException.prototype = new Error;
            BaseException.constructor = BaseException;
            return BaseException
        }();
        t.BaseException = a;
        t.PasswordException = class PasswordException extends a {
            constructor(e, t) {
                super(e);
                this.code = t
            }
        }
        ;
        t.UnknownErrorException = class UnknownErrorException extends a {
            constructor(e, t) {
                super(e);
                this.details = t
            }
        }
        ;
        t.InvalidPDFException = class InvalidPDFException extends a {
        }
        ;
        t.MissingPDFException = class MissingPDFException extends a {
        }
        ;
        t.UnexpectedResponseException = class UnexpectedResponseException extends a {
            constructor(e, t) {
                super(e);
                this.status = t
            }
        }
        ;
        t.FormatError = class FormatError extends a {
        }
        ;
        t.AbortException = class AbortException extends a {
        }
        ;
        const i = /\x00/g;
        function stringToBytes(e) {
            assert("string" == typeof e, "Invalid argument for stringToBytes");
            const t = e.length
              , r = new Uint8Array(t);
            for (let n = 0; n < t; ++n)
                r[n] = 255 & e.charCodeAt(n);
            return r
        }
        function arrayByteLength(e) {
            if (void 0 !== e.length)
                return e.length;
            assert(void 0 !== e.byteLength, "arrayByteLength - invalid argument.");
            return e.byteLength
        }
        const o = {
            get value() {
                return shadow(this, "value", function isLittleEndian() {
                    const e = new Uint8Array(4);
                    e[0] = 1;
                    return 1 === new Uint32Array(e.buffer,0,1)[0]
                }())
            }
        };
        t.IsLittleEndianCached = o;
        const l = {
            get value() {
                return shadow(this, "value", function isEvalSupported() {
                    try {
                        new Function("");
                        return !0
                    } catch (e) {
                        return !1
                    }
                }())
            }
        };
        t.IsEvalSupportedCached = l;
        const c = ["rgb(", 0, ",", 0, ",", 0, ")"];
        class Util {
            static makeCssRgb(e, t, r) {
                c[1] = e;
                c[3] = t;
                c[5] = r;
                return c.join("")
            }
            static transform(e, t) {
                return [e[0] * t[0] + e[2] * t[1], e[1] * t[0] + e[3] * t[1], e[0] * t[2] + e[2] * t[3], e[1] * t[2] + e[3] * t[3], e[0] * t[4] + e[2] * t[5] + e[4], e[1] * t[4] + e[3] * t[5] + e[5]]
            }
            static applyTransform(e, t) {
                return [e[0] * t[0] + e[1] * t[2] + t[4], e[0] * t[1] + e[1] * t[3] + t[5]]
            }
            static applyInverseTransform(e, t) {
                const r = t[0] * t[3] - t[1] * t[2];
                return [(e[0] * t[3] - e[1] * t[2] + t[2] * t[5] - t[4] * t[3]) / r, (-e[0] * t[1] + e[1] * t[0] + t[4] * t[1] - t[5] * t[0]) / r]
            }
            static getAxialAlignedBoundingBox(e, t) {
                const r = Util.applyTransform(e, t)
                  , n = Util.applyTransform(e.slice(2, 4), t)
                  , s = Util.applyTransform([e[0], e[3]], t)
                  , a = Util.applyTransform([e[2], e[1]], t);
                return [Math.min(r[0], n[0], s[0], a[0]), Math.min(r[1], n[1], s[1], a[1]), Math.max(r[0], n[0], s[0], a[0]), Math.max(r[1], n[1], s[1], a[1])]
            }
            static inverseTransform(e) {
                const t = e[0] * e[3] - e[1] * e[2];
                return [e[3] / t, -e[1] / t, -e[2] / t, e[0] / t, (e[2] * e[5] - e[4] * e[3]) / t, (e[4] * e[1] - e[5] * e[0]) / t]
            }
            static apply3dTransform(e, t) {
                return [e[0] * t[0] + e[1] * t[1] + e[2] * t[2], e[3] * t[0] + e[4] * t[1] + e[5] * t[2], e[6] * t[0] + e[7] * t[1] + e[8] * t[2]]
            }
            static singularValueDecompose2dScale(e) {
                const t = [e[0], e[2], e[1], e[3]]
                  , r = e[0] * t[0] + e[1] * t[2]
                  , n = e[0] * t[1] + e[1] * t[3]
                  , s = e[2] * t[0] + e[3] * t[2]
                  , a = e[2] * t[1] + e[3] * t[3]
                  , i = (r + a) / 2
                  , o = Math.sqrt((r + a) * (r + a) - 4 * (r * a - s * n)) / 2
                  , l = i + o || 1
                  , c = i - o || 1;
                return [Math.sqrt(l), Math.sqrt(c)]
            }
            static normalizeRect(e) {
                const t = e.slice(0);
                if (e[0] > e[2]) {
                    t[0] = e[2];
                    t[2] = e[0]
                }
                if (e[1] > e[3]) {
                    t[1] = e[3];
                    t[3] = e[1]
                }
                return t
            }
            static intersect(e, t) {
                function compare(e, t) {
                    return e - t
                }
                const r = [e[0], e[2], t[0], t[2]].sort(compare)
                  , n = [e[1], e[3], t[1], t[3]].sort(compare)
                  , s = [];
                e = Util.normalizeRect(e);
                t = Util.normalizeRect(t);
                if (!(r[0] === e[0] && r[1] === t[0] || r[0] === t[0] && r[1] === e[0]))
                    return null;
                s[0] = r[1];
                s[2] = r[2];
                if (!(n[0] === e[1] && n[1] === t[1] || n[0] === t[1] && n[1] === e[1]))
                    return null;
                s[1] = n[1];
                s[3] = n[2];
                return s
            }
        }
        t.Util = Util;
        const h = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364];
        const d = function createObjectURLClosure() {
            const e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
            return function createObjectURL(t, r, n=!1) {
                if (!n && URL.createObjectURL) {
                    const e = new Blob([t],{
                        type: r
                    });
                    return URL.createObjectURL(e)
                }
                let s = `data:${r};base64,`;
                for (let r = 0, n = t.length; r < n; r += 3) {
                    const a = 255 & t[r]
                      , i = 255 & t[r + 1]
                      , o = 255 & t[r + 2];
                    s += e[a >> 2] + e[(3 & a) << 4 | i >> 4] + e[r + 1 < n ? (15 & i) << 2 | o >> 6 : 64] + e[r + 2 < n ? 63 & o : 64]
                }
                return s
            }
        }();
        t.createObjectURL = d
    }
    , function(e, t, r) {
        "use strict";
        r(4)
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.isNodeJS = void 0;
        const n = !("object" != typeof process || process + "" != "[object process]" || process.versions.nw || process.versions.electron && process.type && "browser" !== process.type);
        t.isNodeJS = n
    }
    , function(module, exports, __w_pdfjs_require__) {
        "use strict";
        Object.defineProperty(exports, "__esModule", {
            value: !0
        });
        exports.getDocument = getDocument;
        exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
        exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
        var _util = __w_pdfjs_require__(2)
          , _display_utils = __w_pdfjs_require__(1)
          , _font_loader = __w_pdfjs_require__(6)
          , _node_utils = __w_pdfjs_require__(7)
          , _annotation_storage = __w_pdfjs_require__(8)
          , _api_compatibility = __w_pdfjs_require__(9)
          , _canvas = __w_pdfjs_require__(10)
          , _worker_options = __w_pdfjs_require__(12)
          , _is_node = __w_pdfjs_require__(4)
          , _message_handler = __w_pdfjs_require__(13)
          , _metadata = __w_pdfjs_require__(14)
          , _optional_content_config = __w_pdfjs_require__(16)
          , _transport_stream = __w_pdfjs_require__(17)
          , _webgl = __w_pdfjs_require__(18);
        const DEFAULT_RANGE_CHUNK_SIZE = 65536
          , RENDERING_CANCELLED_TIMEOUT = 100
          , DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory
          , DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
        let createPDFNetworkStream;
        function setPDFNetworkStreamFactory(e) {
            createPDFNetworkStream = e
        }
        function getDocument(e) {
            const t = new PDFDocumentLoadingTask;
            let r;
            if ("string" == typeof e)
                r = {
                    url: e
                };
            else if ((0,
            _util.isArrayBuffer)(e))
                r = {
                    data: e
                };
            else if (e instanceof PDFDataRangeTransport)
                r = {
                    range: e
                };
            else {
                if ("object" != typeof e)
                    throw new Error("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object");
                if (!e.url && !e.data && !e.range)
                    throw new Error("Invalid parameter object: need either .data, .range or .url");
                r = e
            }
            const n = Object.create(null);
            let s = null
              , a = null;
            for (const e in r)
                if ("url" !== e || "undefined" == typeof window)
                    if ("range" !== e)
                        if ("worker" !== e)
                            if ("data" !== e || r[e]instanceof Uint8Array)
                                n[e] = r[e];
                            else {
                                const t = r[e];
                                if ("string" == typeof t)
                                    n[e] = (0,
                                    _util.stringToBytes)(t);
                                else if ("object" != typeof t || null === t || isNaN(t.length)) {
                                    if (!(0,
                                    _util.isArrayBuffer)(t))
                                        throw new Error("Invalid PDF binary data: either typed array, string or array-like object is expected in the data property.");
                                    n[e] = new Uint8Array(t)
                                } else
                                    n[e] = new Uint8Array(t)
                            }
                        else
                            a = r[e];
                    else
                        s = r[e];
                else
                    n[e] = new URL(r[e],window.location).href;
            n.rangeChunkSize = n.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
            n.CMapReaderFactory = n.CMapReaderFactory || DefaultCMapReaderFactory;
            n.ignoreErrors = !0 !== n.stopAtErrors;
            n.fontExtraProperties = !0 === n.fontExtraProperties;
            n.pdfBug = !0 === n.pdfBug;
            Number.isInteger(n.maxImageSize) || (n.maxImageSize = -1);
            "boolean" != typeof n.isEvalSupported && (n.isEvalSupported = !0);
            "boolean" != typeof n.disableFontFace && (n.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || !1);
            void 0 === n.ownerDocument && (n.ownerDocument = globalThis.document);
            "boolean" != typeof n.disableRange && (n.disableRange = !1);
            "boolean" != typeof n.disableStream && (n.disableStream = !1);
            "boolean" != typeof n.disableAutoFetch && (n.disableAutoFetch = !1);
            (0,
            _util.setVerbosityLevel)(n.verbosity);
            if (!a) {
                const e = {
                    verbosity: n.verbosity,
                    port: _worker_options.GlobalWorkerOptions.workerPort
                };
                a = e.port ? PDFWorker.fromPort(e) : new PDFWorker(e);
                t._worker = a
            }
            const i = t.docId;
            a.promise.then((function() {
                if (t.destroyed)
                    throw new Error("Loading aborted");
                const e = _fetchDocument(a, n, s, i)
                  , r = new Promise((function(e) {
                    let t;
                    s ? t = new _transport_stream.PDFDataTransportStream({
                        length: n.length,
                        initialData: n.initialData,
                        progressiveDone: n.progressiveDone,
                        disableRange: n.disableRange,
                        disableStream: n.disableStream
                    },s) : n.data || (t = createPDFNetworkStream({
                        url: n.url,
                        length: n.length,
                        httpHeaders: n.httpHeaders,
                        withCredentials: n.withCredentials,
                        rangeChunkSize: n.rangeChunkSize,
                        disableRange: n.disableRange,
                        disableStream: n.disableStream
                    }));
                    e(t)
                }
                ));
                return Promise.all([e, r]).then((function([e,r]) {
                    if (t.destroyed)
                        throw new Error("Loading aborted");
                    const s = new _message_handler.MessageHandler(i,e,a.port);
                    s.postMessageTransfers = a.postMessageTransfers;
                    const o = new WorkerTransport(s,t,r,n);
                    t._transport = o;
                    s.send("Ready", null)
                }
                ))
            }
            )).catch(t._capability.reject);
            return t
        }
        function _fetchDocument(e, t, r, n) {
            if (e.destroyed)
                return Promise.reject(new Error("Worker was destroyed"));
            if (r) {
                t.length = r.length;
                t.initialData = r.initialData;
                t.progressiveDone = r.progressiveDone
            }
            return e.messageHandler.sendWithPromise("GetDocRequest", {
                docId: n,
                apiVersion: "2.6.347",
                source: {
                    data: t.data,
                    url: t.url,
                    password: t.password,
                    disableAutoFetch: t.disableAutoFetch,
                    rangeChunkSize: t.rangeChunkSize,
                    length: t.length
                },
                maxImageSize: t.maxImageSize,
                disableFontFace: t.disableFontFace,
                postMessageTransfers: e.postMessageTransfers,
                docBaseUrl: t.docBaseUrl,
                ignoreErrors: t.ignoreErrors,
                isEvalSupported: t.isEvalSupported,
                fontExtraProperties: t.fontExtraProperties
            }).then((function(t) {
                if (e.destroyed)
                    throw new Error("Worker was destroyed");
                return t
            }
            ))
        }
        const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
            let e = 0;
            return class PDFDocumentLoadingTask {
                constructor() {
                    this._capability = (0,
                    _util.createPromiseCapability)();
                    this._transport = null;
                    this._worker = null;
                    this.docId = "d" + e++;
                    this.destroyed = !1;
                    this.onPassword = null;
                    this.onProgress = null;
                    this.onUnsupportedFeature = null
                }
                get promise() {
                    return this._capability.promise
                }
                destroy() {
                    this.destroyed = !0;
                    return (this._transport ? this._transport.destroy() : Promise.resolve()).then(()=>{
                        this._transport = null;
                        if (this._worker) {
                            this._worker.destroy();
                            this._worker = null
                        }
                    }
                    )
                }
            }
        }();
        class PDFDataRangeTransport {
            constructor(e, t, r=!1) {
                this.length = e;
                this.initialData = t;
                this.progressiveDone = r;
                this._rangeListeners = [];
                this._progressListeners = [];
                this._progressiveReadListeners = [];
                this._progressiveDoneListeners = [];
                this._readyCapability = (0,
                _util.createPromiseCapability)()
            }
            addRangeListener(e) {
                this._rangeListeners.push(e)
            }
            addProgressListener(e) {
                this._progressListeners.push(e)
            }
            addProgressiveReadListener(e) {
                this._progressiveReadListeners.push(e)
            }
            addProgressiveDoneListener(e) {
                this._progressiveDoneListeners.push(e)
            }
            onDataRange(e, t) {
                for (const r of this._rangeListeners)
                    r(e, t)
            }
            onDataProgress(e, t) {
                this._readyCapability.promise.then(()=>{
                    for (const r of this._progressListeners)
                        r(e, t)
                }
                )
            }
            onDataProgressiveRead(e) {
                this._readyCapability.promise.then(()=>{
                    for (const t of this._progressiveReadListeners)
                        t(e)
                }
                )
            }
            onDataProgressiveDone() {
                this._readyCapability.promise.then(()=>{
                    for (const e of this._progressiveDoneListeners)
                        e()
                }
                )
            }
            transportReady() {
                this._readyCapability.resolve()
            }
            requestDataRange(e, t) {
                (0,
                _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")
            }
            abort() {}
        }
        exports.PDFDataRangeTransport = PDFDataRangeTransport;
        class PDFDocumentProxy {
            constructor(e, t) {
                this._pdfInfo = e;
                this._transport = t
            }
            get annotationStorage() {
                return (0,
                _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage)
            }
            get numPages() {
                return this._pdfInfo.numPages
            }
            get fingerprint() {
                return this._pdfInfo.fingerprint
            }
            getPage(e) {
                return this._transport.getPage(e)
            }
            getPageIndex(e) {
                return this._transport.getPageIndex(e)
            }
            getDestinations() {
                return this._transport.getDestinations()
            }
            getDestination(e) {
                return this._transport.getDestination(e)
            }
            getPageLabels() {
                return this._transport.getPageLabels()
            }
            getPageLayout() {
                return this._transport.getPageLayout()
            }
            getPageMode() {
                return this._transport.getPageMode()
            }
            getViewerPreferences() {
                return this._transport.getViewerPreferences()
            }
            getOpenAction() {
                return this._transport.getOpenAction()
            }
            getAttachments() {
                return this._transport.getAttachments()
            }
            getJavaScript() {
                return this._transport.getJavaScript()
            }
            getOutline() {
                return this._transport.getOutline()
            }
            getOptionalContentConfig() {
                return this._transport.getOptionalContentConfig()
            }
            getPermissions() {
                return this._transport.getPermissions()
            }
            getMetadata() {
                return this._transport.getMetadata()
            }
            getData() {
                return this._transport.getData()
            }
            getDownloadInfo() {
                return this._transport.downloadInfoCapability.promise
            }
            getStats() {
                return this._transport.getStats()
            }
            cleanup() {
                return this._transport.startCleanup()
            }
            destroy() {
                return this.loadingTask.destroy()
            }
            get loadingParams() {
                return this._transport.loadingParams
            }
            get loadingTask() {
                return this._transport.loadingTask
            }
            saveDocument(e) {
                return this._transport.saveDocument(e)
            }
        }
        exports.PDFDocumentProxy = PDFDocumentProxy;
        class PDFPageProxy {
            constructor(e, t, r, n, s=!1) {
                this._pageIndex = e;
                this._pageInfo = t;
                this._ownerDocument = n;
                this._transport = r;
                this._stats = s ? new _display_utils.StatTimer : null;
                this._pdfBug = s;
                this.commonObjs = r.commonObjs;
                this.objs = new PDFObjects;
                this.cleanupAfterRender = !1;
                this.pendingCleanup = !1;
                this._intentStates = new Map;
                this.destroyed = !1
            }
            get pageNumber() {
                return this._pageIndex + 1
            }
            get rotate() {
                return this._pageInfo.rotate
            }
            get ref() {
                return this._pageInfo.ref
            }
            get userUnit() {
                return this._pageInfo.userUnit
            }
            get view() {
                return this._pageInfo.view
            }
            getViewport({scale: e, rotation: t=this.rotate, offsetX: r=0, offsetY: n=0, dontFlip: s=!1}={}) {
                return new _display_utils.PageViewport({
                    viewBox: this.view,
                    scale: e,
                    rotation: t,
                    offsetX: r,
                    offsetY: n,
                    dontFlip: s
                })
            }
            getAnnotations({intent: e=null}={}) {
                if (!this.annotationsPromise || this.annotationsIntent !== e) {
                    this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, e);
                    this.annotationsIntent = e
                }
                return this.annotationsPromise
            }
            render({canvasContext: e, viewport: t, intent: r="display", enableWebGL: n=!1, renderInteractiveForms: s=!1, transform: a=null, imageLayer: i=null, canvasFactory: o=null, background: l=null, annotationStorage: c=null, optionalContentConfigPromise: h=null}) {
                this._stats && this._stats.time("Overall");
                const d = "print" === r ? "print" : "display";
                this.pendingCleanup = !1;
                h || (h = this._transport.getOptionalContentConfig());
                let u = this._intentStates.get(d);
                if (!u) {
                    u = Object.create(null);
                    this._intentStates.set(d, u)
                }
                if (u.streamReaderCancelTimeout) {
                    clearTimeout(u.streamReaderCancelTimeout);
                    u.streamReaderCancelTimeout = null
                }
                const p = o || new DefaultCanvasFactory({
                    ownerDocument: this._ownerDocument
                })
                  , f = new _webgl.WebGLContext({
                    enable: n
                });
                if (!u.displayReadyCapability) {
                    u.displayReadyCapability = (0,
                    _util.createPromiseCapability)();
                    u.operatorList = {
                        fnArray: [],
                        argsArray: [],
                        lastChunk: !1
                    };
                    this._stats && this._stats.time("Page Request");
                    this._pumpOperatorList({
                        pageIndex: this._pageIndex,
                        intent: d,
                        renderInteractiveForms: !0 === s,
                        annotationStorage: c && c.getAll() || null
                    })
                }
                const complete = e=>{
                    const t = u.renderTasks.indexOf(g);
                    t >= 0 && u.renderTasks.splice(t, 1);
                    (this.cleanupAfterRender || "print" === d) && (this.pendingCleanup = !0);
                    this._tryCleanup();
                    if (e) {
                        g.capability.reject(e);
                        this._abortOperatorList({
                            intentState: u,
                            reason: e
                        })
                    } else
                        g.capability.resolve();
                    if (this._stats) {
                        this._stats.timeEnd("Rendering");
                        this._stats.timeEnd("Overall")
                    }
                }
                  , g = new InternalRenderTask({
                    callback: complete,
                    params: {
                        canvasContext: e,
                        viewport: t,
                        transform: a,
                        imageLayer: i,
                        background: l
                    },
                    objs: this.objs,
                    commonObjs: this.commonObjs,
                    operatorList: u.operatorList,
                    pageIndex: this._pageIndex,
                    canvasFactory: p,
                    webGLContext: f,
                    useRequestAnimationFrame: "print" !== d,
                    pdfBug: this._pdfBug
                });
                u.renderTasks || (u.renderTasks = []);
                u.renderTasks.push(g);
                const m = g.task;
                Promise.all([u.displayReadyCapability.promise, h]).then(([e,t])=>{
                    if (this.pendingCleanup)
                        complete();
                    else {
                        this._stats && this._stats.time("Rendering");
                        g.initializeGraphics({
                            transparency: e,
                            optionalContentConfig: t
                        });
                        g.operatorListChanged()
                    }
                }
                ).catch(complete);
                return m
            }
            getOperatorList() {
                let e, t = this._intentStates.get("oplist");
                if (!t) {
                    t = Object.create(null);
                    this._intentStates.set("oplist", t)
                }
                if (!t.opListReadCapability) {
                    e = Object.create(null);
                    e.operatorListChanged = function operatorListChanged() {
                        if (t.operatorList.lastChunk) {
                            t.opListReadCapability.resolve(t.operatorList);
                            const r = t.renderTasks.indexOf(e);
                            r >= 0 && t.renderTasks.splice(r, 1)
                        }
                    }
                    ;
                    t.opListReadCapability = (0,
                    _util.createPromiseCapability)();
                    t.renderTasks = [];
                    t.renderTasks.push(e);
                    t.operatorList = {
                        fnArray: [],
                        argsArray: [],
                        lastChunk: !1
                    };
                    this._stats && this._stats.time("Page Request");
                    this._pumpOperatorList({
                        pageIndex: this._pageIndex,
                        intent: "oplist"
                    })
                }
                return t.opListReadCapability.promise
            }
            streamTextContent({normalizeWhitespace: e=!1, disableCombineTextItems: t=!1}={}) {
                return this._transport.messageHandler.sendWithStream("GetTextContent", {
                    pageIndex: this._pageIndex,
                    normalizeWhitespace: !0 === e,
                    combineTextItems: !0 !== t
                }, {
                    highWaterMark: 100,
                    size: e=>e.items.length
                })
            }
            getTextContent(e={}) {
                const t = this.streamTextContent(e);
                return new Promise((function(e, r) {
                    const n = t.getReader()
                      , s = {
                        items: [],
                        styles: Object.create(null)
                    };
                    !function pump() {
                        n.read().then((function({value: t, done: r}) {
                            if (r)
                                e(s);
                            else {
                                Object.assign(s.styles, t.styles);
                                s.items.push(...t.items);
                                pump()
                            }
                        }
                        ), r)
                    }()
                }
                ))
            }
            _destroy() {
                this.destroyed = !0;
                this._transport.pageCache[this._pageIndex] = null;
                const e = [];
                for (const [t,r] of this._intentStates) {
                    this._abortOperatorList({
                        intentState: r,
                        reason: new Error("Page was destroyed."),
                        force: !0
                    });
                    if ("oplist" !== t)
                        for (const t of r.renderTasks) {
                            e.push(t.completed);
                            t.cancel()
                        }
                }
                this.objs.clear();
                this.annotationsPromise = null;
                this.pendingCleanup = !1;
                return Promise.all(e)
            }
            cleanup(e=!1) {
                this.pendingCleanup = !0;
                return this._tryCleanup(e)
            }
            _tryCleanup(e=!1) {
                if (!this.pendingCleanup)
                    return !1;
                for (const {renderTasks: e, operatorList: t} of this._intentStates.values())
                    if (0 !== e.length || !t.lastChunk)
                        return !1;
                this._intentStates.clear();
                this.objs.clear();
                this.annotationsPromise = null;
                e && this._stats && (this._stats = new _display_utils.StatTimer);
                this.pendingCleanup = !1;
                return !0
            }
            _startRenderPage(e, t) {
                const r = this._intentStates.get(t);
                if (r) {
                    this._stats && this._stats.timeEnd("Page Request");
                    r.displayReadyCapability && r.displayReadyCapability.resolve(e)
                }
            }
            _renderPageChunk(e, t) {
                for (let r = 0, n = e.length; r < n; r++) {
                    t.operatorList.fnArray.push(e.fnArray[r]);
                    t.operatorList.argsArray.push(e.argsArray[r])
                }
                t.operatorList.lastChunk = e.lastChunk;
                for (let e = 0; e < t.renderTasks.length; e++)
                    t.renderTasks[e].operatorListChanged();
                e.lastChunk && this._tryCleanup()
            }
            _pumpOperatorList(e) {
                (0,
                _util.assert)(e.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
                const t = this._transport.messageHandler.sendWithStream("GetOperatorList", e).getReader()
                  , r = this._intentStates.get(e.intent);
                r.streamReader = t;
                const pump = ()=>{
                    t.read().then(({value: e, done: t})=>{
                        if (t)
                            r.streamReader = null;
                        else if (!this._transport.destroyed) {
                            this._renderPageChunk(e, r);
                            pump()
                        }
                    }
                    , e=>{
                        r.streamReader = null;
                        if (!this._transport.destroyed) {
                            if (r.operatorList) {
                                r.operatorList.lastChunk = !0;
                                for (let e = 0; e < r.renderTasks.length; e++)
                                    r.renderTasks[e].operatorListChanged();
                                this._tryCleanup()
                            }
                            if (r.displayReadyCapability)
                                r.displayReadyCapability.reject(e);
                            else {
                                if (!r.opListReadCapability)
                                    throw e;
                                r.opListReadCapability.reject(e)
                            }
                        }
                    }
                    )
                }
                ;
                pump()
            }
            _abortOperatorList({intentState: e, reason: t, force: r=!1}) {
                (0,
                _util.assert)(t instanceof Error || "object" == typeof t && null !== t, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
                if (e.streamReader) {
                    if (!r) {
                        if (0 !== e.renderTasks.length)
                            return;
                        if (t instanceof _display_utils.RenderingCancelledException) {
                            e.streamReaderCancelTimeout = setTimeout(()=>{
                                this._abortOperatorList({
                                    intentState: e,
                                    reason: t,
                                    force: !0
                                });
                                e.streamReaderCancelTimeout = null
                            }
                            , RENDERING_CANCELLED_TIMEOUT);
                            return
                        }
                    }
                    e.streamReader.cancel(new _util.AbortException(t && t.message));
                    e.streamReader = null;
                    if (!this._transport.destroyed) {
                        for (const [t,r] of this._intentStates)
                            if (r === e) {
                                this._intentStates.delete(t);
                                break
                            }
                        this.cleanup()
                    }
                }
            }
            get stats() {
                return this._stats
            }
        }
        exports.PDFPageProxy = PDFPageProxy;
        class LoopbackPort {
            constructor(e=!0) {
                this._listeners = [];
                this._defer = e;
                this._deferred = Promise.resolve(void 0)
            }
            postMessage(e, t) {
                if (!this._defer) {
                    this._listeners.forEach(t=>{
                        t.call(this, {
                            data: e
                        })
                    }
                    );
                    return
                }
                const r = new WeakMap
                  , n = {
                    data: function cloneValue(e) {
                        if ("object" != typeof e || null === e)
                            return e;
                        if (r.has(e))
                            return r.get(e);
                        let n, s;
                        if ((n = e.buffer) && (0,
                        _util.isArrayBuffer)(n)) {
                            s = t && t.includes(n) ? new e.constructor(n,e.byteOffset,e.byteLength) : new e.constructor(e);
                            r.set(e, s);
                            return s
                        }
                        s = Array.isArray(e) ? [] : {};
                        r.set(e, s);
                        for (const t in e) {
                            let r, n = e;
                            for (; !(r = Object.getOwnPropertyDescriptor(n, t)); )
                                n = Object.getPrototypeOf(n);
                            if (void 0 !== r.value)
                                if ("function" != typeof r.value)
                                    s[t] = cloneValue(r.value);
                                else if (e.hasOwnProperty && e.hasOwnProperty(t))
                                    throw new Error("LoopbackPort.postMessage - cannot clone: " + e[t])
                        }
                        return s
                    }(e)
                };
                this._deferred.then(()=>{
                    this._listeners.forEach(e=>{
                        e.call(this, n)
                    }
                    )
                }
                )
            }
            addEventListener(e, t) {
                this._listeners.push(t)
            }
            removeEventListener(e, t) {
                const r = this._listeners.indexOf(t);
                this._listeners.splice(r, 1)
            }
            terminate() {
                this._listeners.length = 0
            }
        }
        exports.LoopbackPort = LoopbackPort;
        const PDFWorker = function PDFWorkerClosure() {
            const pdfWorkerPorts = new WeakMap;
            let isWorkerDisabled = !1, fallbackWorkerSrc, nextFakeWorkerId = 0, fakeWorkerCapability;
            if (_is_node.isNodeJS && "function" == typeof require) {
                isWorkerDisabled = !0;
                fallbackWorkerSrc = "./pdf.worker.js"
            } else if ("object" == typeof document && "currentScript"in document) {
                const e = document.currentScript && document.currentScript.src;
                e && (fallbackWorkerSrc = e.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"))
            }
            function getWorkerSrc() {
                if (_worker_options.GlobalWorkerOptions.workerSrc)
                    return _worker_options.GlobalWorkerOptions.workerSrc;
                if (void 0 !== fallbackWorkerSrc) {
                    _is_node.isNodeJS || (0,
                    _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
                    return fallbackWorkerSrc
                }
                throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')
            }
            function getMainThreadWorkerMessageHandler() {
                let e;
                try {
                    e = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler
                } catch (e) {}
                return e || null
            }
            function setupFakeWorkerGlobal() {
                if (fakeWorkerCapability)
                    return fakeWorkerCapability.promise;
                fakeWorkerCapability = (0,
                _util.createPromiseCapability)();
                const loader = async function() {
                    const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
                    if (mainWorkerMessageHandler)
                        return mainWorkerMessageHandler;
                    if (_is_node.isNodeJS && "function" == typeof require) {
                        const worker = eval("require")(getWorkerSrc());
                        return worker.WorkerMessageHandler
                    }
                    await (0,
                    _display_utils.loadScript)(getWorkerSrc());
                    return window.pdfjsWorker.WorkerMessageHandler
                };
                loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
                return fakeWorkerCapability.promise
            }
            function createCDNWrapper(e) {
                const t = "importScripts('" + e + "');";
                return URL.createObjectURL(new Blob([t]))
            }
            class PDFWorker {
                constructor({name: e=null, port: t=null, verbosity: r=(0,
                _util.getVerbosityLevel)()}={}) {
                    if (t && pdfWorkerPorts.has(t))
                        throw new Error("Cannot use more than one PDFWorker per port");
                    this.name = e;
                    this.destroyed = !1;
                    this.postMessageTransfers = !0;
                    this.verbosity = r;
                    this._readyCapability = (0,
                    _util.createPromiseCapability)();
                    this._port = null;
                    this._webWorker = null;
                    this._messageHandler = null;
                    if (t) {
                        pdfWorkerPorts.set(t, this);
                        this._initializeFromPort(t)
                    } else
                        this._initialize()
                }
                get promise() {
                    return this._readyCapability.promise
                }
                get port() {
                    return this._port
                }
                get messageHandler() {
                    return this._messageHandler
                }
                _initializeFromPort(e) {
                    this._port = e;
                    this._messageHandler = new _message_handler.MessageHandler("main","worker",e);
                    this._messageHandler.on("ready", (function() {}
                    ));
                    this._readyCapability.resolve()
                }
                _initialize() {
                    if ("undefined" != typeof Worker && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
                        let e = getWorkerSrc();
                        try {
                            (0,
                            _util.isSameOrigin)(window.location.href, e) || (e = createCDNWrapper(new URL(e,window.location).href));
                            const t = new Worker(e)
                              , r = new _message_handler.MessageHandler("main","worker",t)
                              , terminateEarly = ()=>{
                                t.removeEventListener("error", onWorkerError);
                                r.destroy();
                                t.terminate();
                                this.destroyed ? this._readyCapability.reject(new Error("Worker was destroyed")) : this._setupFakeWorker()
                            }
                              , onWorkerError = ()=>{
                                this._webWorker || terminateEarly()
                            }
                            ;
                            t.addEventListener("error", onWorkerError);
                            r.on("test", e=>{
                                t.removeEventListener("error", onWorkerError);
                                if (this.destroyed)
                                    terminateEarly();
                                else if (e) {
                                    this._messageHandler = r;
                                    this._port = t;
                                    this._webWorker = t;
                                    e.supportTransfers || (this.postMessageTransfers = !1);
                                    this._readyCapability.resolve();
                                    r.send("configure", {
                                        verbosity: this.verbosity
                                    })
                                } else {
                                    this._setupFakeWorker();
                                    r.destroy();
                                    t.terminate()
                                }
                            }
                            );
                            r.on("ready", e=>{
                                t.removeEventListener("error", onWorkerError);
                                if (this.destroyed)
                                    terminateEarly();
                                else
                                    try {
                                        sendTest()
                                    } catch (e) {
                                        this._setupFakeWorker()
                                    }
                            }
                            );
                            const sendTest = ()=>{
                                const e = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
                                try {
                                    r.send("test", e, [e.buffer])
                                } catch (t) {
                                    (0,
                                    _util.warn)("Cannot use postMessage transfers.");
                                    e[0] = 0;
                                    r.send("test", e)
                                }
                            }
                            ;
                            sendTest();
                            return
                        } catch (e) {
                            (0,
                            _util.info)("The worker has been disabled.")
                        }
                    }
                    this._setupFakeWorker()
                }
                _setupFakeWorker() {
                    if (!isWorkerDisabled) {
                        (0,
                        _util.warn)("Setting up fake worker.");
                        isWorkerDisabled = !0
                    }
                    setupFakeWorkerGlobal().then(e=>{
                        if (this.destroyed) {
                            this._readyCapability.reject(new Error("Worker was destroyed"));
                            return
                        }
                        const t = new LoopbackPort;
                        this._port = t;
                        const r = "fake" + nextFakeWorkerId++
                          , n = new _message_handler.MessageHandler(r + "_worker",r,t);
                        e.setup(n, t);
                        const s = new _message_handler.MessageHandler(r,r + "_worker",t);
                        this._messageHandler = s;
                        this._readyCapability.resolve();
                        s.send("configure", {
                            verbosity: this.verbosity
                        })
                    }
                    ).catch(e=>{
                        this._readyCapability.reject(new Error(`Setting up fake worker failed: "${e.message}".`))
                    }
                    )
                }
                destroy() {
                    this.destroyed = !0;
                    if (this._webWorker) {
                        this._webWorker.terminate();
                        this._webWorker = null
                    }
                    pdfWorkerPorts.delete(this._port);
                    this._port = null;
                    if (this._messageHandler) {
                        this._messageHandler.destroy();
                        this._messageHandler = null
                    }
                }
                static fromPort(e) {
                    if (!e || !e.port)
                        throw new Error("PDFWorker.fromPort - invalid method signature.");
                    return pdfWorkerPorts.has(e.port) ? pdfWorkerPorts.get(e.port) : new PDFWorker(e)
                }
                static getWorkerSrc() {
                    return getWorkerSrc()
                }
            }
            return PDFWorker
        }();
        exports.PDFWorker = PDFWorker;
        class WorkerTransport {
            constructor(e, t, r, n) {
                this.messageHandler = e;
                this.loadingTask = t;
                this.commonObjs = new PDFObjects;
                this.fontLoader = new _font_loader.FontLoader({
                    docId: t.docId,
                    onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
                    ownerDocument: n.ownerDocument
                });
                this._params = n;
                this.CMapReaderFactory = new n.CMapReaderFactory({
                    baseUrl: n.cMapUrl,
                    isCompressed: n.cMapPacked
                });
                this.destroyed = !1;
                this.destroyCapability = null;
                this._passwordCapability = null;
                this._networkStream = r;
                this._fullReader = null;
                this._lastProgress = null;
                this.pageCache = [];
                this.pagePromises = [];
                this.downloadInfoCapability = (0,
                _util.createPromiseCapability)();
                this.setupMessageHandler()
            }
            destroy() {
                if (this.destroyCapability)
                    return this.destroyCapability.promise;
                this.destroyed = !0;
                this.destroyCapability = (0,
                _util.createPromiseCapability)();
                this._passwordCapability && this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
                const e = [];
                this.pageCache.forEach((function(t) {
                    t && e.push(t._destroy())
                }
                ));
                this.pageCache.length = 0;
                this.pagePromises.length = 0;
                const t = this.messageHandler.sendWithPromise("Terminate", null);
                e.push(t);
                Promise.all(e).then(()=>{
                    this.fontLoader.clear();
                    this._networkStream && this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
                    if (this.messageHandler) {
                        this.messageHandler.destroy();
                        this.messageHandler = null
                    }
                    this.destroyCapability.resolve()
                }
                , this.destroyCapability.reject);
                return this.destroyCapability.promise
            }
            setupMessageHandler() {
                const {messageHandler: e, loadingTask: t} = this;
                e.on("GetReader", (e,t)=>{
                    (0,
                    _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
                    this._fullReader = this._networkStream.getFullReader();
                    this._fullReader.onProgress = e=>{
                        this._lastProgress = {
                            loaded: e.loaded,
                            total: e.total
                        }
                    }
                    ;
                    t.onPull = ()=>{
                        this._fullReader.read().then((function({value: e, done: r}) {
                            if (r)
                                t.close();
                            else {
                                (0,
                                _util.assert)((0,
                                _util.isArrayBuffer)(e), "GetReader - expected an ArrayBuffer.");
                                t.enqueue(new Uint8Array(e), 1, [e])
                            }
                        }
                        )).catch(e=>{
                            t.error(e)
                        }
                        )
                    }
                    ;
                    t.onCancel = e=>{
                        this._fullReader.cancel(e);
                        t.ready.catch(e=>{
                            if (!this.destroyed)
                                throw e
                        }
                        )
                    }
                }
                );
                e.on("ReaderHeadersReady", e=>{
                    const r = (0,
                    _util.createPromiseCapability)()
                      , n = this._fullReader;
                    n.headersReady.then(()=>{
                        if (!n.isStreamingSupported || !n.isRangeSupported) {
                            this._lastProgress && t.onProgress && t.onProgress(this._lastProgress);
                            n.onProgress = e=>{
                                t.onProgress && t.onProgress({
                                    loaded: e.loaded,
                                    total: e.total
                                })
                            }
                        }
                        r.resolve({
                            isStreamingSupported: n.isStreamingSupported,
                            isRangeSupported: n.isRangeSupported,
                            contentLength: n.contentLength
                        })
                    }
                    , r.reject);
                    return r.promise
                }
                );
                e.on("GetRangeReader", (e,t)=>{
                    (0,
                    _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
                    const r = this._networkStream.getRangeReader(e.begin, e.end);
                    if (r) {
                        t.onPull = ()=>{
                            r.read().then((function({value: e, done: r}) {
                                if (r)
                                    t.close();
                                else {
                                    (0,
                                    _util.assert)((0,
                                    _util.isArrayBuffer)(e), "GetRangeReader - expected an ArrayBuffer.");
                                    t.enqueue(new Uint8Array(e), 1, [e])
                                }
                            }
                            )).catch(e=>{
                                t.error(e)
                            }
                            )
                        }
                        ;
                        t.onCancel = e=>{
                            r.cancel(e);
                            t.ready.catch(e=>{
                                if (!this.destroyed)
                                    throw e
                            }
                            )
                        }
                    } else
                        t.close()
                }
                );
                e.on("GetDoc", ({pdfInfo: e})=>{
                    this._numPages = e.numPages;
                    t._capability.resolve(new PDFDocumentProxy(e,this))
                }
                );
                e.on("DocException", (function(e) {
                    let r;
                    switch (e.name) {
                    case "PasswordException":
                        r = new _util.PasswordException(e.message,e.code);
                        break;
                    case "InvalidPDFException":
                        r = new _util.InvalidPDFException(e.message);
                        break;
                    case "MissingPDFException":
                        r = new _util.MissingPDFException(e.message);
                        break;
                    case "UnexpectedResponseException":
                        r = new _util.UnexpectedResponseException(e.message,e.status);
                        break;
                    case "UnknownErrorException":
                        r = new _util.UnknownErrorException(e.message,e.details)
                    }
                    if (!(r instanceof Error)) {
                        const e = "DocException - expected a valid Error.";
                        (0,
                        _util.warn)(e)
                    }
                    t._capability.reject(r)
                }
                ));
                e.on("PasswordRequest", e=>{
                    this._passwordCapability = (0,
                    _util.createPromiseCapability)();
                    if (t.onPassword) {
                        const updatePassword = e=>{
                            this._passwordCapability.resolve({
                                password: e
                            })
                        }
                        ;
                        try {
                            t.onPassword(updatePassword, e.code)
                        } catch (e) {
                            this._passwordCapability.reject(e)
                        }
                    } else
                        this._passwordCapability.reject(new _util.PasswordException(e.message,e.code));
                    return this._passwordCapability.promise
                }
                );
                e.on("DataLoaded", e=>{
                    t.onProgress && t.onProgress({
                        loaded: e.length,
                        total: e.length
                    });
                    this.downloadInfoCapability.resolve(e)
                }
                );
                e.on("StartRenderPage", e=>{
                    if (this.destroyed)
                        return;
                    this.pageCache[e.pageIndex]._startRenderPage(e.transparency, e.intent)
                }
                );
                e.on("commonobj", t=>{
                    if (this.destroyed)
                        return;
                    const [r,n,s] = t;
                    if (!this.commonObjs.has(r))
                        switch (n) {
                        case "Font":
                            const t = this._params;
                            if ("error"in s) {
                                const e = s.error;
                                (0,
                                _util.warn)("Error during font loading: " + e);
                                this.commonObjs.resolve(r, e);
                                break
                            }
                            let a = null;
                            t.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled && (a = {
                                registerFont(e, t) {
                                    globalThis.FontInspector.fontAdded(e, t)
                                }
                            });
                            const i = new _font_loader.FontFaceObject(s,{
                                isEvalSupported: t.isEvalSupported,
                                disableFontFace: t.disableFontFace,
                                ignoreErrors: t.ignoreErrors,
                                onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
                                fontRegistry: a
                            });
                            this.fontLoader.bind(i).catch(t=>e.sendWithPromise("FontFallback", {
                                id: r
                            })).finally(()=>{
                                !t.fontExtraProperties && i.data && (i.data = null);
                                this.commonObjs.resolve(r, i)
                            }
                            );
                            break;
                        case "FontPath":
                        case "Image":
                            this.commonObjs.resolve(r, s);
                            break;
                        default:
                            throw new Error("Got unknown common object type " + n)
                        }
                }
                );
                e.on("obj", e=>{
                    if (this.destroyed)
                        return;
                    const [t,r,n,s] = e
                      , a = this.pageCache[r];
                    if (!a.objs.has(t))
                        switch (n) {
                        case "Image":
                            a.objs.resolve(t, s);
                            const e = 8e6;
                            s && "data"in s && s.data.length > e && (a.cleanupAfterRender = !0);
                            break;
                        default:
                            throw new Error("Got unknown object type " + n)
                        }
                }
                );
                e.on("DocProgress", e=>{
                    this.destroyed || t.onProgress && t.onProgress({
                        loaded: e.loaded,
                        total: e.total
                    })
                }
                );
                e.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
                e.on("FetchBuiltInCMap", (e,t)=>{
                    if (this.destroyed) {
                        t.error(new Error("Worker was destroyed"));
                        return
                    }
                    let r = !1;
                    t.onPull = ()=>{
                        if (r)
                            t.close();
                        else {
                            r = !0;
                            this.CMapReaderFactory.fetch(e).then((function(e) {
                                t.enqueue(e, 1, [e.cMapData.buffer])
                            }
                            )).catch((function(e) {
                                t.error(e)
                            }
                            ))
                        }
                    }
                }
                )
            }
            _onUnsupportedFeature({featureId: e}) {
                this.destroyed || this.loadingTask.onUnsupportedFeature && this.loadingTask.onUnsupportedFeature(e)
            }
            getData() {
                return this.messageHandler.sendWithPromise("GetData", null)
            }
            getPage(e) {
                if (!Number.isInteger(e) || e <= 0 || e > this._numPages)
                    return Promise.reject(new Error("Invalid page request"));
                const t = e - 1;
                if (t in this.pagePromises)
                    return this.pagePromises[t];
                const r = this.messageHandler.sendWithPromise("GetPage", {
                    pageIndex: t
                }).then(e=>{
                    if (this.destroyed)
                        throw new Error("Transport destroyed");
                    const r = new PDFPageProxy(t,e,this,this._params.ownerDocument,this._params.pdfBug);
                    this.pageCache[t] = r;
                    return r
                }
                );
                this.pagePromises[t] = r;
                return r
            }
            getPageIndex(e) {
                return this.messageHandler.sendWithPromise("GetPageIndex", {
                    ref: e
                }).catch((function(e) {
                    return Promise.reject(new Error(e))
                }
                ))
            }
            getAnnotations(e, t) {
                return this.messageHandler.sendWithPromise("GetAnnotations", {
                    pageIndex: e,
                    intent: t
                })
            }
            saveDocument(e) {
                return this.messageHandler.sendWithPromise("SaveDocument", {
                    numPages: this._numPages,
                    annotationStorage: e && e.getAll() || null,
                    filename: this._fullReader ? this._fullReader.filename : null
                }).finally(()=>{
                    e && e.resetModified()
                }
                )
            }
            getDestinations() {
                return this.messageHandler.sendWithPromise("GetDestinations", null)
            }
            getDestination(e) {
                return "string" != typeof e ? Promise.reject(new Error("Invalid destination request.")) : this.messageHandler.sendWithPromise("GetDestination", {
                    id: e
                })
            }
            getPageLabels() {
                return this.messageHandler.sendWithPromise("GetPageLabels", null)
            }
            getPageLayout() {
                return this.messageHandler.sendWithPromise("GetPageLayout", null)
            }
            getPageMode() {
                return this.messageHandler.sendWithPromise("GetPageMode", null)
            }
            getViewerPreferences() {
                return this.messageHandler.sendWithPromise("GetViewerPreferences", null)
            }
            getOpenAction() {
                return this.messageHandler.sendWithPromise("GetOpenAction", null)
            }
            getAttachments() {
                return this.messageHandler.sendWithPromise("GetAttachments", null)
            }
            getJavaScript() {
                return this.messageHandler.sendWithPromise("GetJavaScript", null)
            }
            getOutline() {
                return this.messageHandler.sendWithPromise("GetOutline", null)
            }
            getOptionalContentConfig() {
                return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(e=>new _optional_content_config.OptionalContentConfig(e))
            }
            getPermissions() {
                return this.messageHandler.sendWithPromise("GetPermissions", null)
            }
            getMetadata() {
                return this.messageHandler.sendWithPromise("GetMetadata", null).then(e=>({
                    info: e[0],
                    metadata: e[1] ? new _metadata.Metadata(e[1]) : null,
                    contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
                }))
            }
            getStats() {
                return this.messageHandler.sendWithPromise("GetStats", null)
            }
            startCleanup() {
                return this.messageHandler.sendWithPromise("Cleanup", null).then(()=>{
                    for (let e = 0, t = this.pageCache.length; e < t; e++) {
                        const t = this.pageCache[e];
                        if (t) {
                            if (!t.cleanup())
                                throw new Error(`startCleanup: Page ${e + 1} is currently rendering.`)
                        }
                    }
                    this.commonObjs.clear();
                    this.fontLoader.clear()
                }
                )
            }
            get loadingParams() {
                const e = this._params;
                return (0,
                _util.shadow)(this, "loadingParams", {
                    disableAutoFetch: e.disableAutoFetch,
                    disableFontFace: e.disableFontFace
                })
            }
        }
        class PDFObjects {
            constructor() {
                this._objs = Object.create(null)
            }
            _ensureObj(e) {
                return this._objs[e] ? this._objs[e] : this._objs[e] = {
                    capability: (0,
                    _util.createPromiseCapability)(),
                    data: null,
                    resolved: !1
                }
            }
            get(e, t=null) {
                if (t) {
                    this._ensureObj(e).capability.promise.then(t);
                    return null
                }
                const r = this._objs[e];
                if (!r || !r.resolved)
                    throw new Error(`Requesting object that isn't resolved yet ${e}.`);
                return r.data
            }
            has(e) {
                const t = this._objs[e];
                return !!t && t.resolved
            }
            resolve(e, t) {
                const r = this._ensureObj(e);
                r.resolved = !0;
                r.data = t;
                r.capability.resolve(t)
            }
            clear() {
                this._objs = Object.create(null)
            }
        }
        class RenderTask {
            constructor(e) {
                this._internalRenderTask = e;
                this.onContinue = null
            }
            get promise() {
                return this._internalRenderTask.capability.promise
            }
            cancel() {
                this._internalRenderTask.cancel()
            }
        }
        const InternalRenderTask = function InternalRenderTaskClosure() {
            const e = new WeakSet;
            return class InternalRenderTask {
                constructor({callback: e, params: t, objs: r, commonObjs: n, operatorList: s, pageIndex: a, canvasFactory: i, webGLContext: o, useRequestAnimationFrame: l=!1, pdfBug: c=!1}) {
                    this.callback = e;
                    this.params = t;
                    this.objs = r;
                    this.commonObjs = n;
                    this.operatorListIdx = null;
                    this.operatorList = s;
                    this._pageIndex = a;
                    this.canvasFactory = i;
                    this.webGLContext = o;
                    this._pdfBug = c;
                    this.running = !1;
                    this.graphicsReadyCallback = null;
                    this.graphicsReady = !1;
                    this._useRequestAnimationFrame = !0 === l && "undefined" != typeof window;
                    this.cancelled = !1;
                    this.capability = (0,
                    _util.createPromiseCapability)();
                    this.task = new RenderTask(this);
                    this._continueBound = this._continue.bind(this);
                    this._scheduleNextBound = this._scheduleNext.bind(this);
                    this._nextBound = this._next.bind(this);
                    this._canvas = t.canvasContext.canvas
                }
                get completed() {
                    return this.capability.promise.catch((function() {}
                    ))
                }
                initializeGraphics({transparency: t=!1, optionalContentConfig: r}) {
                    if (this.cancelled)
                        return;
                    if (this._canvas) {
                        if (e.has(this._canvas))
                            throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");
                        e.add(this._canvas)
                    }
                    if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
                        this.stepper = globalThis.StepperManager.create(this._pageIndex);
                        this.stepper.init(this.operatorList);
                        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint()
                    }
                    const {canvasContext: n, viewport: s, transform: a, imageLayer: i, background: o} = this.params;
                    this.gfx = new _canvas.CanvasGraphics(n,this.commonObjs,this.objs,this.canvasFactory,this.webGLContext,i,r);
                    this.gfx.beginDrawing({
                        transform: a,
                        viewport: s,
                        transparency: t,
                        background: o
                    });
                    this.operatorListIdx = 0;
                    this.graphicsReady = !0;
                    this.graphicsReadyCallback && this.graphicsReadyCallback()
                }
                cancel(t=null) {
                    this.running = !1;
                    this.cancelled = !0;
                    this.gfx && this.gfx.endDrawing();
                    this._canvas && e.delete(this._canvas);
                    this.callback(t || new _display_utils.RenderingCancelledException("Rendering cancelled, page " + (this._pageIndex + 1),"canvas"))
                }
                operatorListChanged() {
                    if (this.graphicsReady) {
                        this.stepper && this.stepper.updateOperatorList(this.operatorList);
                        this.running || this._continue()
                    } else
                        this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound)
                }
                _continue() {
                    this.running = !0;
                    this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext())
                }
                _scheduleNext() {
                    this._useRequestAnimationFrame ? window.requestAnimationFrame(()=>{
                        this._nextBound().catch(this.cancel.bind(this))
                    }
                    ) : Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this))
                }
                async _next() {
                    if (!this.cancelled) {
                        this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
                        if (this.operatorListIdx === this.operatorList.argsArray.length) {
                            this.running = !1;
                            if (this.operatorList.lastChunk) {
                                this.gfx.endDrawing();
                                this._canvas && e.delete(this._canvas);
                                this.callback()
                            }
                        }
                    }
                }
            }
        }()
          , version = "2.6.347";
        exports.version = version;
        const build = "3be9c65f";
        exports.build = build
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.FontLoader = t.FontFaceObject = void 0;
        var n = r(2);
        class BaseFontLoader {
            constructor({docId: e, onUnsupportedFeature: t, ownerDocument: r=globalThis.document}) {
                this.constructor === BaseFontLoader && (0,
                n.unreachable)("Cannot initialize BaseFontLoader.");
                this.docId = e;
                this._onUnsupportedFeature = t;
                this._document = r;
                this.nativeFontFaces = [];
                this.styleElement = null
            }
            addNativeFontFace(e) {
                this.nativeFontFaces.push(e);
                this._document.fonts.add(e)
            }
            insertRule(e) {
                let t = this.styleElement;
                if (!t) {
                    t = this.styleElement = this._document.createElement("style");
                    t.id = "PDFJS_FONT_STYLE_TAG_" + this.docId;
                    this._document.documentElement.getElementsByTagName("head")[0].appendChild(t)
                }
                const r = t.sheet;
                r.insertRule(e, r.cssRules.length)
            }
            clear() {
                this.nativeFontFaces.forEach(e=>{
                    this._document.fonts.delete(e)
                }
                );
                this.nativeFontFaces.length = 0;
                if (this.styleElement) {
                    this.styleElement.remove();
                    this.styleElement = null
                }
            }
            async bind(e) {
                if (e.attached || e.missingFile)
                    return;
                e.attached = !0;
                if (this.isFontLoadingAPISupported) {
                    const t = e.createNativeFontFace();
                    if (t) {
                        this.addNativeFontFace(t);
                        try {
                            await t.loaded
                        } catch (r) {
                            this._onUnsupportedFeature({
                                featureId: n.UNSUPPORTED_FEATURES.errorFontLoadNative
                            });
                            (0,
                            n.warn)(`Failed to load font '${t.family}': '${r}'.`);
                            e.disableFontFace = !0;
                            throw r
                        }
                    }
                    return
                }
                const t = e.createFontFaceRule();
                if (t) {
                    this.insertRule(t);
                    if (this.isSyncFontLoadingSupported)
                        return;
                    await new Promise(r=>{
                        const n = this._queueLoadingCallback(r);
                        this._prepareFontLoadEvent([t], [e], n)
                    }
                    )
                }
            }
            _queueLoadingCallback(e) {
                (0,
                n.unreachable)("Abstract method `_queueLoadingCallback`.")
            }
            get isFontLoadingAPISupported() {
                const e = void 0 !== this._document && !!this._document.fonts;
                return (0,
                n.shadow)(this, "isFontLoadingAPISupported", e)
            }
            get isSyncFontLoadingSupported() {
                (0,
                n.unreachable)("Abstract method `isSyncFontLoadingSupported`.")
            }
            get _loadTestFont() {
                (0,
                n.unreachable)("Abstract method `_loadTestFont`.")
            }
            _prepareFontLoadEvent(e, t, r) {
                (0,
                n.unreachable)("Abstract method `_prepareFontLoadEvent`.")
            }
        }
        let s;
        t.FontLoader = s;
        t.FontLoader = s = class GenericFontLoader extends BaseFontLoader {
            constructor(e) {
                super(e);
                this.loadingContext = {
                    requests: [],
                    nextRequestId: 0
                };
                this.loadTestFontId = 0
            }
            get isSyncFontLoadingSupported() {
                let e = !1;
                if ("undefined" == typeof navigator)
                    e = !0;
                else {
                    const t = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
                    t && t[1] >= 14 && (e = !0)
                }
                return (0,
                n.shadow)(this, "isSyncFontLoadingSupported", e)
            }
            _queueLoadingCallback(e) {
                const t = this.loadingContext
                  , r = {
                    id: "pdfjs-font-loading-" + t.nextRequestId++,
                    done: !1,
                    complete: function completeRequest() {
                        (0,
                        n.assert)(!r.done, "completeRequest() cannot be called twice.");
                        r.done = !0;
                        for (; t.requests.length > 0 && t.requests[0].done; ) {
                            const e = t.requests.shift();
                            setTimeout(e.callback, 0)
                        }
                    },
                    callback: e
                };
                t.requests.push(r);
                return r
            }
            get _loadTestFont() {
                return (0,
                n.shadow)(this, "_loadTestFont", atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="))
            }
            _prepareFontLoadEvent(e, t, r) {
                function int32(e, t) {
                    return e.charCodeAt(t) << 24 | e.charCodeAt(t + 1) << 16 | e.charCodeAt(t + 2) << 8 | 255 & e.charCodeAt(t + 3)
                }
                function spliceString(e, t, r, n) {
                    return e.substring(0, t) + n + e.substring(t + r)
                }
                let s, a;
                const i = this._document.createElement("canvas");
                i.width = 1;
                i.height = 1;
                const o = i.getContext("2d");
                let l = 0;
                const c = `lt ${Date.now()}${this.loadTestFontId++}`;
                let h = this._loadTestFont;
                h = spliceString(h, 976, c.length, c);
                let d = int32(h, 16);
                for (s = 0,
                a = c.length - 3; s < a; s += 4)
                    d = d - 1482184792 + int32(c, s) | 0;
                s < c.length && (d = d - 1482184792 + int32(c + "XXX", s) | 0);
                h = spliceString(h, 16, 4, (0,
                n.string32)(d));
                const u = `@font-face {font-family:"${c}";src:${`url(data:font/opentype;base64,${btoa(h)});`}}`;
                this.insertRule(u);
                const p = [];
                for (s = 0,
                a = t.length; s < a; s++)
                    p.push(t[s].loadedName);
                p.push(c);
                const f = this._document.createElement("div");
                f.style.visibility = "hidden";
                f.style.width = f.style.height = "10px";
                f.style.position = "absolute";
                f.style.top = f.style.left = "0px";
                for (s = 0,
                a = p.length; s < a; ++s) {
                    const e = this._document.createElement("span");
                    e.textContent = "Hi";
                    e.style.fontFamily = p[s];
                    f.appendChild(e)
                }
                this._document.body.appendChild(f);
                !function isFontReady(e, t) {
                    l++;
                    if (l > 30) {
                        (0,
                        n.warn)("Load test font never loaded.");
                        t();
                        return
                    }
                    o.font = "30px " + e;
                    o.fillText(".", 0, 20);
                    o.getImageData(0, 0, 1, 1).data[3] > 0 ? t() : setTimeout(isFontReady.bind(null, e, t))
                }(c, ()=>{
                    this._document.body.removeChild(f);
                    r.complete()
                }
                )
            }
        }
        ;
        t.FontFaceObject = class FontFaceObject {
            constructor(e, {isEvalSupported: t=!0, disableFontFace: r=!1, ignoreErrors: n=!1, onUnsupportedFeature: s=null, fontRegistry: a=null}) {
                this.compiledGlyphs = Object.create(null);
                for (const t in e)
                    this[t] = e[t];
                this.isEvalSupported = !1 !== t;
                this.disableFontFace = !0 === r;
                this.ignoreErrors = !0 === n;
                this._onUnsupportedFeature = s;
                this.fontRegistry = a
            }
            createNativeFontFace() {
                if (!this.data || this.disableFontFace)
                    return null;
                const e = new FontFace(this.loadedName,this.data,{});
                this.fontRegistry && this.fontRegistry.registerFont(this);
                return e
            }
            createFontFaceRule() {
                if (!this.data || this.disableFontFace)
                    return null;
                const e = (0,
                n.bytesToString)(new Uint8Array(this.data))
                  , t = `url(data:${this.mimetype};base64,${btoa(e)});`
                  , r = `@font-face {font-family:"${this.loadedName}";src:${t}}`;
                this.fontRegistry && this.fontRegistry.registerFont(this, t);
                return r
            }
            getPathGenerator(e, t) {
                if (void 0 !== this.compiledGlyphs[t])
                    return this.compiledGlyphs[t];
                let r, s;
                try {
                    r = e.get(this.loadedName + "_path_" + t)
                } catch (e) {
                    if (!this.ignoreErrors)
                        throw e;
                    this._onUnsupportedFeature && this._onUnsupportedFeature({
                        featureId: n.UNSUPPORTED_FEATURES.errorFontGetPath
                    });
                    (0,
                    n.warn)(`getPathGenerator - ignoring character: "${e}".`);
                    return this.compiledGlyphs[t] = function(e, t) {}
                }
                if (this.isEvalSupported && n.IsEvalSupportedCached.value) {
                    let e, n = "";
                    for (let t = 0, a = r.length; t < a; t++) {
                        s = r[t];
                        e = void 0 !== s.args ? s.args.join(",") : "";
                        n += "c." + s.cmd + "(" + e + ");\n"
                    }
                    return this.compiledGlyphs[t] = new Function("c","size",n)
                }
                return this.compiledGlyphs[t] = function(e, t) {
                    for (let n = 0, a = r.length; n < a; n++) {
                        s = r[n];
                        "scale" === s.cmd && (s.args = [t, -t]);
                        e[s.cmd].apply(e, s.args)
                    }
                }
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.NodeCMapReaderFactory = t.NodeCanvasFactory = void 0;
        var n = r(1)
          , s = r(4)
          , a = r(2);
        let i = class {
            constructor() {
                (0,
                a.unreachable)("Not implemented: NodeCanvasFactory")
            }
        }
        ;
        t.NodeCanvasFactory = i;
        let o = class {
            constructor() {
                (0,
                a.unreachable)("Not implemented: NodeCMapReaderFactory")
            }
        }
        ;
        t.NodeCMapReaderFactory = o;
        if (s.isNodeJS) {
            t.NodeCanvasFactory = i = class extends n.BaseCanvasFactory {
                create(e, t) {
                    if (e <= 0 || t <= 0)
                        throw new Error("Invalid canvas size");
                    const r = require("canvas").createCanvas(e, t);
                    return {
                        canvas: r,
                        context: r.getContext("2d")
                    }
                }
            }
            ;
            t.NodeCMapReaderFactory = o = class extends n.BaseCMapReaderFactory {
                _fetchData(e, t) {
                    return new Promise((r,n)=>{
                        require("fs").readFile(e, (e,s)=>{
                            !e && s ? r({
                                cMapData: new Uint8Array(s),
                                compressionType: t
                            }) : n(new Error(e))
                        }
                        )
                    }
                    )
                }
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.AnnotationStorage = void 0;
        t.AnnotationStorage = class AnnotationStorage {
            constructor() {
                this._storage = new Map;
                this._modified = !1;
                this.onSetModified = null;
                this.onResetModified = null
            }
            getOrCreateValue(e, t) {
                if (this._storage.has(e))
                    return this._storage.get(e);
                this._storage.set(e, t);
                return t
            }
            setValue(e, t) {
                this._storage.get(e) !== t && this._setModified();
                this._storage.set(e, t)
            }
            getAll() {
                return 0 === this._storage.size ? null : Object.fromEntries(this._storage)
            }
            get size() {
                return this._storage.size
            }
            _setModified() {
                if (!this._modified) {
                    this._modified = !0;
                    "function" == typeof this.onSetModified && this.onSetModified()
                }
            }
            resetModified() {
                if (this._modified) {
                    this._modified = !1;
                    "function" == typeof this.onResetModified && this.onResetModified()
                }
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.apiCompatibilityParams = void 0;
        var n = r(4);
        const s = Object.create(null);
        !function checkFontFace() {
            n.isNodeJS && (s.disableFontFace = !0)
        }();
        const a = Object.freeze(s);
        t.apiCompatibilityParams = a
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.CanvasGraphics = void 0;
        var n = r(2)
          , s = r(11);
        function addContextCurrentTransform(e) {
            if (!e.mozCurrentTransform) {
                e._originalSave = e.save;
                e._originalRestore = e.restore;
                e._originalRotate = e.rotate;
                e._originalScale = e.scale;
                e._originalTranslate = e.translate;
                e._originalTransform = e.transform;
                e._originalSetTransform = e.setTransform;
                e._transformMatrix = e._transformMatrix || [1, 0, 0, 1, 0, 0];
                e._transformStack = [];
                Object.defineProperty(e, "mozCurrentTransform", {
                    get: function getCurrentTransform() {
                        return this._transformMatrix
                    }
                });
                Object.defineProperty(e, "mozCurrentTransformInverse", {
                    get: function getCurrentTransformInverse() {
                        var e = this._transformMatrix
                          , t = e[0]
                          , r = e[1]
                          , n = e[2]
                          , s = e[3]
                          , a = e[4]
                          , i = e[5]
                          , o = t * s - r * n
                          , l = r * n - t * s;
                        return [s / o, r / l, n / l, t / o, (s * a - n * i) / l, (r * a - t * i) / o]
                    }
                });
                e.save = function ctxSave() {
                    var e = this._transformMatrix;
                    this._transformStack.push(e);
                    this._transformMatrix = e.slice(0, 6);
                    this._originalSave()
                }
                ;
                e.restore = function ctxRestore() {
                    var e = this._transformStack.pop();
                    if (e) {
                        this._transformMatrix = e;
                        this._originalRestore()
                    }
                }
                ;
                e.translate = function ctxTranslate(e, t) {
                    var r = this._transformMatrix;
                    r[4] = r[0] * e + r[2] * t + r[4];
                    r[5] = r[1] * e + r[3] * t + r[5];
                    this._originalTranslate(e, t)
                }
                ;
                e.scale = function ctxScale(e, t) {
                    var r = this._transformMatrix;
                    r[0] = r[0] * e;
                    r[1] = r[1] * e;
                    r[2] = r[2] * t;
                    r[3] = r[3] * t;
                    this._originalScale(e, t)
                }
                ;
                e.transform = function ctxTransform(t, r, n, s, a, i) {
                    var o = this._transformMatrix;
                    this._transformMatrix = [o[0] * t + o[2] * r, o[1] * t + o[3] * r, o[0] * n + o[2] * s, o[1] * n + o[3] * s, o[0] * a + o[2] * i + o[4], o[1] * a + o[3] * i + o[5]];
                    e._originalTransform(t, r, n, s, a, i)
                }
                ;
                e.setTransform = function ctxSetTransform(t, r, n, s, a, i) {
                    this._transformMatrix = [t, r, n, s, a, i];
                    e._originalSetTransform(t, r, n, s, a, i)
                }
                ;
                e.rotate = function ctxRotate(e) {
                    var t = Math.cos(e)
                      , r = Math.sin(e)
                      , n = this._transformMatrix;
                    this._transformMatrix = [n[0] * t + n[2] * r, n[1] * t + n[3] * r, n[0] * -r + n[2] * t, n[1] * -r + n[3] * t, n[4], n[5]];
                    this._originalRotate(e)
                }
            }
        }
        var a = function CachedCanvasesClosure() {
            function CachedCanvases(e) {
                this.canvasFactory = e;
                this.cache = Object.create(null)
            }
            CachedCanvases.prototype = {
                getCanvas: function CachedCanvases_getCanvas(e, t, r, n) {
                    var s;
                    if (void 0 !== this.cache[e]) {
                        s = this.cache[e];
                        this.canvasFactory.reset(s, t, r);
                        s.context.setTransform(1, 0, 0, 1, 0, 0)
                    } else {
                        s = this.canvasFactory.create(t, r);
                        this.cache[e] = s
                    }
                    n && addContextCurrentTransform(s.context);
                    return s
                },
                clear() {
                    for (var e in this.cache) {
                        var t = this.cache[e];
                        this.canvasFactory.destroy(t);
                        delete this.cache[e]
                    }
                }
            };
            return CachedCanvases
        }();
        var i = function CanvasExtraStateClosure() {
            function CanvasExtraState() {
                this.alphaIsShape = !1;
                this.fontSize = 0;
                this.fontSizeScale = 1;
                this.textMatrix = n.IDENTITY_MATRIX;
                this.textMatrixScale = 1;
                this.fontMatrix = n.FONT_IDENTITY_MATRIX;
                this.leading = 0;
                this.x = 0;
                this.y = 0;
                this.lineX = 0;
                this.lineY = 0;
                this.charSpacing = 0;
                this.wordSpacing = 0;
                this.textHScale = 1;
                this.textRenderingMode = n.TextRenderingMode.FILL;
                this.textRise = 0;
                this.fillColor = "#000000";
                this.strokeColor = "#000000";
                this.patternFill = !1;
                this.fillAlpha = 1;
                this.strokeAlpha = 1;
                this.lineWidth = 1;
                this.activeSMask = null;
                this.resumeSMaskCtx = null;
                this.transferMaps = null
            }
            CanvasExtraState.prototype = {
                clone: function CanvasExtraState_clone() {
                    return Object.create(this)
                },
                setCurrentPoint: function CanvasExtraState_setCurrentPoint(e, t) {
                    this.x = e;
                    this.y = t
                }
            };
            return CanvasExtraState
        }()
          , o = function CanvasGraphicsClosure() {
            function CanvasGraphics(e, t, r, n, s, o, l) {
                this.ctx = e;
                this.current = new i;
                this.stateStack = [];
                this.pendingClip = null;
                this.pendingEOFill = !1;
                this.res = null;
                this.xobjs = null;
                this.commonObjs = t;
                this.objs = r;
                this.canvasFactory = n;
                this.webGLContext = s;
                this.imageLayer = o;
                this.groupStack = [];
                this.processingType3 = null;
                this.baseTransform = null;
                this.baseTransformStack = [];
                this.groupLevel = 0;
                this.smaskStack = [];
                this.smaskCounter = 0;
                this.tempSMask = null;
                this.contentVisible = !0;
                this.markedContentStack = [];
                this.optionalContentConfig = l;
                this.cachedCanvases = new a(this.canvasFactory);
                e && addContextCurrentTransform(e);
                this._cachedGetSinglePixelWidth = null
            }
            function putBinaryImageData(e, t, r=null) {
                if ("undefined" != typeof ImageData && t instanceof ImageData) {
                    e.putImageData(t, 0, 0);
                    return
                }
                var s, a, i, o, l, c = t.height, h = t.width, d = c % 16, u = (c - d) / 16, p = 0 === d ? u : u + 1, f = e.createImageData(h, 16), g = 0, m = t.data, _ = f.data;
                let A, b, y, v;
                if (r)
                    switch (r.length) {
                    case 1:
                        A = r[0];
                        b = r[0];
                        y = r[0];
                        v = r[0];
                        break;
                    case 4:
                        A = r[0];
                        b = r[1];
                        y = r[2];
                        v = r[3]
                    }
                if (t.kind === n.ImageKind.GRAYSCALE_1BPP) {
                    var C = m.byteLength
                      , S = new Uint32Array(_.buffer,0,_.byteLength >> 2)
                      , x = S.length
                      , P = h + 7 >> 3
                      , k = 4294967295
                      , R = n.IsLittleEndianCached.value ? 4278190080 : 255;
                    v && 255 === v[0] && 0 === v[255] && ([k,R] = [R, k]);
                    for (a = 0; a < p; a++) {
                        o = a < u ? 16 : d;
                        s = 0;
                        for (i = 0; i < o; i++) {
                            var w = C - g;
                            let e = 0;
                            for (var T = w > P ? h : 8 * w - 7, E = -8 & T, F = 0, L = 0; e < E; e += 8) {
                                L = m[g++];
                                S[s++] = 128 & L ? k : R;
                                S[s++] = 64 & L ? k : R;
                                S[s++] = 32 & L ? k : R;
                                S[s++] = 16 & L ? k : R;
                                S[s++] = 8 & L ? k : R;
                                S[s++] = 4 & L ? k : R;
                                S[s++] = 2 & L ? k : R;
                                S[s++] = 1 & L ? k : R
                            }
                            for (; e < T; e++) {
                                if (0 === F) {
                                    L = m[g++];
                                    F = 128
                                }
                                S[s++] = L & F ? k : R;
                                F >>= 1
                            }
                        }
                        for (; s < x; )
                            S[s++] = 0;
                        e.putImageData(f, 0, 16 * a)
                    }
                } else if (t.kind === n.ImageKind.RGBA_32BPP) {
                    const t = !!(A || b || y);
                    i = 0;
                    l = 16 * h * 4;
                    for (a = 0; a < u; a++) {
                        _.set(m.subarray(g, g + l));
                        g += l;
                        if (t)
                            for (let e = 0; e < l; e += 4) {
                                A && (_[e + 0] = A[_[e + 0]]);
                                b && (_[e + 1] = b[_[e + 1]]);
                                y && (_[e + 2] = y[_[e + 2]])
                            }
                        e.putImageData(f, 0, i);
                        i += 16
                    }
                    if (a < p) {
                        l = h * d * 4;
                        _.set(m.subarray(g, g + l));
                        if (t)
                            for (let e = 0; e < l; e += 4) {
                                A && (_[e + 0] = A[_[e + 0]]);
                                b && (_[e + 1] = b[_[e + 1]]);
                                y && (_[e + 2] = y[_[e + 2]])
                            }
                        e.putImageData(f, 0, i)
                    }
                } else {
                    if (t.kind !== n.ImageKind.RGB_24BPP)
                        throw new Error("bad image kind: " + t.kind);
                    {
                        const t = !!(A || b || y);
                        l = h * (o = 16);
                        for (a = 0; a < p; a++) {
                            a >= u && (l = h * (o = d));
                            s = 0;
                            for (i = l; i--; ) {
                                _[s++] = m[g++];
                                _[s++] = m[g++];
                                _[s++] = m[g++];
                                _[s++] = 255
                            }
                            if (t)
                                for (let e = 0; e < s; e += 4) {
                                    A && (_[e + 0] = A[_[e + 0]]);
                                    b && (_[e + 1] = b[_[e + 1]]);
                                    y && (_[e + 2] = y[_[e + 2]])
                                }
                            e.putImageData(f, 0, 16 * a)
                        }
                    }
                }
            }
            function putBinaryImageMask(e, t) {
                for (var r = t.height, n = t.width, s = r % 16, a = (r - s) / 16, i = 0 === s ? a : a + 1, o = e.createImageData(n, 16), l = 0, c = t.data, h = o.data, d = 0; d < i; d++) {
                    for (var u = d < a ? 16 : s, p = 3, f = 0; f < u; f++)
                        for (var g = 0, m = 0; m < n; m++) {
                            if (!g) {
                                var _ = c[l++];
                                g = 128
                            }
                            h[p] = _ & g ? 0 : 255;
                            p += 4;
                            g >>= 1
                        }
                    e.putImageData(o, 0, 16 * d)
                }
            }
            function copyCtxState(e, t) {
                for (var r = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"], n = 0, s = r.length; n < s; n++) {
                    var a = r[n];
                    void 0 !== e[a] && (t[a] = e[a])
                }
                if (void 0 !== e.setLineDash) {
                    t.setLineDash(e.getLineDash());
                    t.lineDashOffset = e.lineDashOffset
                }
            }
            function resetCtxToDefault(e) {
                e.strokeStyle = "#000000";
                e.fillStyle = "#000000";
                e.fillRule = "nonzero";
                e.globalAlpha = 1;
                e.lineWidth = 1;
                e.lineCap = "butt";
                e.lineJoin = "miter";
                e.miterLimit = 10;
                e.globalCompositeOperation = "source-over";
                e.font = "10px sans-serif";
                if (void 0 !== e.setLineDash) {
                    e.setLineDash([]);
                    e.lineDashOffset = 0
                }
            }
            function composeSMaskBackdrop(e, t, r, n) {
                for (var s = e.length, a = 3; a < s; a += 4) {
                    var i = e[a];
                    if (0 === i) {
                        e[a - 3] = t;
                        e[a - 2] = r;
                        e[a - 1] = n
                    } else if (i < 255) {
                        var o = 255 - i;
                        e[a - 3] = e[a - 3] * i + t * o >> 8;
                        e[a - 2] = e[a - 2] * i + r * o >> 8;
                        e[a - 1] = e[a - 1] * i + n * o >> 8
                    }
                }
            }
            function composeSMaskAlpha(e, t, r) {
                for (var n = e.length, s = 3; s < n; s += 4) {
                    var a = r ? r[e[s]] : e[s];
                    t[s] = t[s] * a * (1 / 255) | 0
                }
            }
            function composeSMaskLuminosity(e, t, r) {
                for (var n = e.length, s = 3; s < n; s += 4) {
                    var a = 77 * e[s - 3] + 152 * e[s - 2] + 28 * e[s - 1];
                    t[s] = r ? t[s] * r[a >> 8] >> 8 : t[s] * a >> 16
                }
            }
            function composeSMask(e, t, r, n) {
                var s = t.canvas
                  , a = t.context;
                e.setTransform(t.scaleX, 0, 0, t.scaleY, t.offsetX, t.offsetY);
                var i = t.backdrop || null;
                if (t.transferMap || !n.isEnabled) {
                    !function genericComposeSMask(e, t, r, n, s, a, i) {
                        var o, l = !!a, c = l ? a[0] : 0, h = l ? a[1] : 0, d = l ? a[2] : 0;
                        o = "Luminosity" === s ? composeSMaskLuminosity : composeSMaskAlpha;
                        for (var u = Math.min(n, Math.ceil(1048576 / r)), p = 0; p < n; p += u) {
                            var f = Math.min(u, n - p)
                              , g = e.getImageData(0, p, r, f)
                              , m = t.getImageData(0, p, r, f);
                            l && composeSMaskBackdrop(g.data, c, h, d);
                            o(g.data, m.data, i);
                            e.putImageData(m, 0, p)
                        }
                    }(a, r, s.width, s.height, t.subtype, i, t.transferMap);
                    e.drawImage(s, 0, 0)
                } else {
                    const a = n.composeSMask({
                        layer: r.canvas,
                        mask: s,
                        properties: {
                            subtype: t.subtype,
                            backdrop: i
                        }
                    });
                    e.setTransform(1, 0, 0, 1, 0, 0);
                    e.drawImage(a, t.offsetX, t.offsetY)
                }
            }
            var e = ["butt", "round", "square"]
              , t = ["miter", "round", "bevel"]
              , r = {}
              , o = {};
            CanvasGraphics.prototype = {
                beginDrawing({transform: e, viewport: t, transparency: r=!1, background: n=null}) {
                    var s = this.ctx.canvas.width
                      , a = this.ctx.canvas.height;
                    this.ctx.save();
                    this.ctx.fillStyle = n || "rgb(255, 255, 255)";
                    this.ctx.fillRect(0, 0, s, a);
                    this.ctx.restore();
                    if (r) {
                        var i = this.cachedCanvases.getCanvas("transparent", s, a, !0);
                        this.compositeCtx = this.ctx;
                        this.transparentCanvas = i.canvas;
                        this.ctx = i.context;
                        this.ctx.save();
                        this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform)
                    }
                    this.ctx.save();
                    resetCtxToDefault(this.ctx);
                    e && this.ctx.transform.apply(this.ctx, e);
                    this.ctx.transform.apply(this.ctx, t.transform);
                    this.baseTransform = this.ctx.mozCurrentTransform.slice();
                    this.imageLayer && this.imageLayer.beginLayout()
                },
                executeOperatorList: function CanvasGraphics_executeOperatorList(e, t, r, s) {
                    var a = e.argsArray
                      , i = e.fnArray
                      , o = t || 0
                      , l = a.length;
                    if (l === o)
                        return o;
                    for (var c, h = l - o > 10 && "function" == typeof r, d = h ? Date.now() + 15 : 0, u = 0, p = this.commonObjs, f = this.objs; ; ) {
                        if (void 0 !== s && o === s.nextBreakPoint) {
                            s.breakIt(o, r);
                            return o
                        }
                        if ((c = i[o]) !== n.OPS.dependency)
                            this[c].apply(this, a[o]);
                        else
                            for (const e of a[o]) {
                                const t = e.startsWith("g_") ? p : f;
                                if (!t.has(e)) {
                                    t.get(e, r);
                                    return o
                                }
                            }
                        if (++o === l)
                            return o;
                        if (h && ++u > 10) {
                            if (Date.now() > d) {
                                r();
                                return o
                            }
                            u = 0
                        }
                    }
                },
                endDrawing: function CanvasGraphics_endDrawing() {
                    null !== this.current.activeSMask && this.endSMaskGroup();
                    this.ctx.restore();
                    if (this.transparentCanvas) {
                        this.ctx = this.compositeCtx;
                        this.ctx.save();
                        this.ctx.setTransform(1, 0, 0, 1, 0, 0);
                        this.ctx.drawImage(this.transparentCanvas, 0, 0);
                        this.ctx.restore();
                        this.transparentCanvas = null
                    }
                    this.cachedCanvases.clear();
                    this.webGLContext.clear();
                    this.imageLayer && this.imageLayer.endLayout()
                },
                setLineWidth: function CanvasGraphics_setLineWidth(e) {
                    this.current.lineWidth = e;
                    this.ctx.lineWidth = e
                },
                setLineCap: function CanvasGraphics_setLineCap(t) {
                    this.ctx.lineCap = e[t]
                },
                setLineJoin: function CanvasGraphics_setLineJoin(e) {
                    this.ctx.lineJoin = t[e]
                },
                setMiterLimit: function CanvasGraphics_setMiterLimit(e) {
                    this.ctx.miterLimit = e
                },
                setDash: function CanvasGraphics_setDash(e, t) {
                    var r = this.ctx;
                    if (void 0 !== r.setLineDash) {
                        r.setLineDash(e);
                        r.lineDashOffset = t
                    }
                },
                setRenderingIntent(e) {},
                setFlatness(e) {},
                setGState: function CanvasGraphics_setGState(e) {
                    for (var t = 0, r = e.length; t < r; t++) {
                        var n = e[t]
                          , s = n[0]
                          , a = n[1];
                        switch (s) {
                        case "LW":
                            this.setLineWidth(a);
                            break;
                        case "LC":
                            this.setLineCap(a);
                            break;
                        case "LJ":
                            this.setLineJoin(a);
                            break;
                        case "ML":
                            this.setMiterLimit(a);
                            break;
                        case "D":
                            this.setDash(a[0], a[1]);
                            break;
                        case "RI":
                            this.setRenderingIntent(a);
                            break;
                        case "FL":
                            this.setFlatness(a);
                            break;
                        case "Font":
                            this.setFont(a[0], a[1]);
                            break;
                        case "CA":
                            this.current.strokeAlpha = n[1];
                            break;
                        case "ca":
                            this.current.fillAlpha = n[1];
                            this.ctx.globalAlpha = n[1];
                            break;
                        case "BM":
                            this.ctx.globalCompositeOperation = a;
                            break;
                        case "SMask":
                            this.current.activeSMask && (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask ? this.suspendSMaskGroup() : this.endSMaskGroup());
                            this.current.activeSMask = a ? this.tempSMask : null;
                            this.current.activeSMask && this.beginSMaskGroup();
                            this.tempSMask = null;
                            break;
                        case "TR":
                            this.current.transferMaps = a
                        }
                    }
                },
                beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
                    var e = this.current.activeSMask
                      , t = e.canvas.width
                      , r = e.canvas.height
                      , n = "smaskGroupAt" + this.groupLevel
                      , s = this.cachedCanvases.getCanvas(n, t, r, !0)
                      , a = this.ctx
                      , i = a.mozCurrentTransform;
                    this.ctx.save();
                    var o = s.context;
                    o.scale(1 / e.scaleX, 1 / e.scaleY);
                    o.translate(-e.offsetX, -e.offsetY);
                    o.transform.apply(o, i);
                    e.startTransformInverse = o.mozCurrentTransformInverse;
                    copyCtxState(a, o);
                    this.ctx = o;
                    this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
                    this.groupStack.push(a);
                    this.groupLevel++
                },
                suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
                    var e = this.ctx;
                    this.groupLevel--;
                    this.ctx = this.groupStack.pop();
                    composeSMask(this.ctx, this.current.activeSMask, e, this.webGLContext);
                    this.ctx.restore();
                    this.ctx.save();
                    copyCtxState(e, this.ctx);
                    this.current.resumeSMaskCtx = e;
                    var t = n.Util.transform(this.current.activeSMask.startTransformInverse, e.mozCurrentTransform);
                    this.ctx.transform.apply(this.ctx, t);
                    e.save();
                    e.setTransform(1, 0, 0, 1, 0, 0);
                    e.clearRect(0, 0, e.canvas.width, e.canvas.height);
                    e.restore()
                },
                resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
                    var e = this.current.resumeSMaskCtx
                      , t = this.ctx;
                    this.ctx = e;
                    this.groupStack.push(t);
                    this.groupLevel++
                },
                endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
                    var e = this.ctx;
                    this.groupLevel--;
                    this.ctx = this.groupStack.pop();
                    composeSMask(this.ctx, this.current.activeSMask, e, this.webGLContext);
                    this.ctx.restore();
                    copyCtxState(e, this.ctx);
                    var t = n.Util.transform(this.current.activeSMask.startTransformInverse, e.mozCurrentTransform);
                    this.ctx.transform.apply(this.ctx, t)
                },
                save: function CanvasGraphics_save() {
                    this.ctx.save();
                    var e = this.current;
                    this.stateStack.push(e);
                    this.current = e.clone();
                    this.current.resumeSMaskCtx = null
                },
                restore: function CanvasGraphics_restore() {
                    this.current.resumeSMaskCtx && this.resumeSMaskGroup();
                    null === this.current.activeSMask || 0 !== this.stateStack.length && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask || this.endSMaskGroup();
                    if (0 !== this.stateStack.length) {
                        this.current = this.stateStack.pop();
                        this.ctx.restore();
                        this.pendingClip = null;
                        this._cachedGetSinglePixelWidth = null
                    }
                },
                transform: function CanvasGraphics_transform(e, t, r, n, s, a) {
                    this.ctx.transform(e, t, r, n, s, a);
                    this._cachedGetSinglePixelWidth = null
                },
                constructPath: function CanvasGraphics_constructPath(e, t) {
                    for (var r = this.ctx, s = this.current, a = s.x, i = s.y, o = 0, l = 0, c = e.length; o < c; o++)
                        switch (0 | e[o]) {
                        case n.OPS.rectangle:
                            a = t[l++];
                            i = t[l++];
                            var h = t[l++]
                              , d = t[l++];
                            0 === h && r.lineWidth < this.getSinglePixelWidth() && (h = this.getSinglePixelWidth());
                            0 === d && r.lineWidth < this.getSinglePixelWidth() && (d = this.getSinglePixelWidth());
                            var u = a + h
                              , p = i + d;
                            r.moveTo(a, i);
                            r.lineTo(u, i);
                            r.lineTo(u, p);
                            r.lineTo(a, p);
                            r.lineTo(a, i);
                            r.closePath();
                            break;
                        case n.OPS.moveTo:
                            a = t[l++];
                            i = t[l++];
                            r.moveTo(a, i);
                            break;
                        case n.OPS.lineTo:
                            a = t[l++];
                            i = t[l++];
                            r.lineTo(a, i);
                            break;
                        case n.OPS.curveTo:
                            a = t[l + 4];
                            i = t[l + 5];
                            r.bezierCurveTo(t[l], t[l + 1], t[l + 2], t[l + 3], a, i);
                            l += 6;
                            break;
                        case n.OPS.curveTo2:
                            r.bezierCurveTo(a, i, t[l], t[l + 1], t[l + 2], t[l + 3]);
                            a = t[l + 2];
                            i = t[l + 3];
                            l += 4;
                            break;
                        case n.OPS.curveTo3:
                            a = t[l + 2];
                            i = t[l + 3];
                            r.bezierCurveTo(t[l], t[l + 1], a, i, a, i);
                            l += 4;
                            break;
                        case n.OPS.closePath:
                            r.closePath()
                        }
                    s.setCurrentPoint(a, i)
                },
                closePath: function CanvasGraphics_closePath() {
                    this.ctx.closePath()
                },
                stroke: function CanvasGraphics_stroke(e) {
                    e = void 0 === e || e;
                    var t = this.ctx
                      , r = this.current.strokeColor;
                    t.globalAlpha = this.current.strokeAlpha;
                    if (this.contentVisible)
                        if (r && r.hasOwnProperty("type") && "Pattern" === r.type) {
                            t.save();
                            const e = t.mozCurrentTransform
                              , s = n.Util.singularValueDecompose2dScale(e)[0];
                            t.strokeStyle = r.getPattern(t, this);
                            t.lineWidth = Math.max(.65 * this.getSinglePixelWidth(), this.current.lineWidth * s);
                            t.stroke();
                            t.restore()
                        } else {
                            t.lineWidth = Math.max(.65 * this.getSinglePixelWidth(), this.current.lineWidth);
                            t.stroke()
                        }
                    e && this.consumePath();
                    t.globalAlpha = this.current.fillAlpha
                },
                closeStroke: function CanvasGraphics_closeStroke() {
                    this.closePath();
                    this.stroke()
                },
                fill: function CanvasGraphics_fill(e) {
                    e = void 0 === e || e;
                    var t = this.ctx
                      , r = this.current.fillColor
                      , n = !1;
                    if (this.current.patternFill) {
                        t.save();
                        this.baseTransform && t.setTransform.apply(t, this.baseTransform);
                        t.fillStyle = r.getPattern(t, this);
                        n = !0
                    }
                    if (this.contentVisible)
                        if (this.pendingEOFill) {
                            t.fill("evenodd");
                            this.pendingEOFill = !1
                        } else
                            t.fill();
                    n && t.restore();
                    e && this.consumePath()
                },
                eoFill: function CanvasGraphics_eoFill() {
                    this.pendingEOFill = !0;
                    this.fill()
                },
                fillStroke: function CanvasGraphics_fillStroke() {
                    this.fill(!1);
                    this.stroke(!1);
                    this.consumePath()
                },
                eoFillStroke: function CanvasGraphics_eoFillStroke() {
                    this.pendingEOFill = !0;
                    this.fillStroke()
                },
                closeFillStroke: function CanvasGraphics_closeFillStroke() {
                    this.closePath();
                    this.fillStroke()
                },
                closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
                    this.pendingEOFill = !0;
                    this.closePath();
                    this.fillStroke()
                },
                endPath: function CanvasGraphics_endPath() {
                    this.consumePath()
                },
                clip: function CanvasGraphics_clip() {
                    this.pendingClip = r
                },
                eoClip: function CanvasGraphics_eoClip() {
                    this.pendingClip = o
                },
                beginText: function CanvasGraphics_beginText() {
                    this.current.textMatrix = n.IDENTITY_MATRIX;
                    this.current.textMatrixScale = 1;
                    this.current.x = this.current.lineX = 0;
                    this.current.y = this.current.lineY = 0
                },
                endText: function CanvasGraphics_endText() {
                    var e = this.pendingTextPaths
                      , t = this.ctx;
                    if (void 0 !== e) {
                        t.save();
                        t.beginPath();
                        for (var r = 0; r < e.length; r++) {
                            var n = e[r];
                            t.setTransform.apply(t, n.transform);
                            t.translate(n.x, n.y);
                            n.addToPath(t, n.fontSize)
                        }
                        t.restore();
                        t.clip();
                        t.beginPath();
                        delete this.pendingTextPaths
                    } else
                        t.beginPath()
                },
                setCharSpacing: function CanvasGraphics_setCharSpacing(e) {
                    this.current.charSpacing = e
                },
                setWordSpacing: function CanvasGraphics_setWordSpacing(e) {
                    this.current.wordSpacing = e
                },
                setHScale: function CanvasGraphics_setHScale(e) {
                    this.current.textHScale = e / 100
                },
                setLeading: function CanvasGraphics_setLeading(e) {
                    this.current.leading = -e
                },
                setFont: function CanvasGraphics_setFont(e, t) {
                    var r = this.commonObjs.get(e)
                      , s = this.current;
                    if (!r)
                        throw new Error("Can't find font for " + e);
                    s.fontMatrix = r.fontMatrix ? r.fontMatrix : n.FONT_IDENTITY_MATRIX;
                    0 !== s.fontMatrix[0] && 0 !== s.fontMatrix[3] || (0,
                    n.warn)("Invalid font matrix for font " + e);
                    if (t < 0) {
                        t = -t;
                        s.fontDirection = -1
                    } else
                        s.fontDirection = 1;
                    this.current.font = r;
                    this.current.fontSize = t;
                    if (r.isType3Font)
                        return;
                    var a = r.loadedName || "sans-serif";
                    let i = "normal";
                    r.black ? i = "900" : r.bold && (i = "bold");
                    var o = r.italic ? "italic" : "normal"
                      , l = `"${a}", ${r.fallbackName}`;
                    let c = t;
                    t < 16 ? c = 16 : t > 100 && (c = 100);
                    this.current.fontSizeScale = t / c;
                    this.ctx.font = `${o} ${i} ${c}px ${l}`
                },
                setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(e) {
                    this.current.textRenderingMode = e
                },
                setTextRise: function CanvasGraphics_setTextRise(e) {
                    this.current.textRise = e
                },
                moveText: function CanvasGraphics_moveText(e, t) {
                    this.current.x = this.current.lineX += e;
                    this.current.y = this.current.lineY += t
                },
                setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(e, t) {
                    this.setLeading(-t);
                    this.moveText(e, t)
                },
                setTextMatrix: function CanvasGraphics_setTextMatrix(e, t, r, n, s, a) {
                    this.current.textMatrix = [e, t, r, n, s, a];
                    this.current.textMatrixScale = Math.sqrt(e * e + t * t);
                    this.current.x = this.current.lineX = 0;
                    this.current.y = this.current.lineY = 0
                },
                nextLine: function CanvasGraphics_nextLine() {
                    this.moveText(0, this.current.leading)
                },
                paintChar(e, t, r, s) {
                    var a = this.ctx
                      , i = this.current
                      , o = i.font
                      , l = i.textRenderingMode
                      , c = i.fontSize / i.fontSizeScale
                      , h = l & n.TextRenderingMode.FILL_STROKE_MASK
                      , d = !!(l & n.TextRenderingMode.ADD_TO_PATH_FLAG);
                    const u = i.patternFill && !o.missingFile;
                    var p;
                    (o.disableFontFace || d || u) && (p = o.getPathGenerator(this.commonObjs, e));
                    if (o.disableFontFace || u) {
                        a.save();
                        a.translate(t, r);
                        a.beginPath();
                        p(a, c);
                        s && a.setTransform.apply(a, s);
                        h !== n.TextRenderingMode.FILL && h !== n.TextRenderingMode.FILL_STROKE || a.fill();
                        h !== n.TextRenderingMode.STROKE && h !== n.TextRenderingMode.FILL_STROKE || a.stroke();
                        a.restore()
                    } else {
                        h !== n.TextRenderingMode.FILL && h !== n.TextRenderingMode.FILL_STROKE || a.fillText(e, t, r);
                        h !== n.TextRenderingMode.STROKE && h !== n.TextRenderingMode.FILL_STROKE || a.strokeText(e, t, r)
                    }
                    if (d) {
                        (this.pendingTextPaths || (this.pendingTextPaths = [])).push({
                            transform: a.mozCurrentTransform,
                            x: t,
                            y: r,
                            fontSize: c,
                            addToPath: p
                        })
                    }
                },
                get isFontSubpixelAAEnabled() {
                    const {context: e} = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
                    e.scale(1.5, 1);
                    e.fillText("I", 0, 10);
                    for (var t = e.getImageData(0, 0, 10, 10).data, r = !1, s = 3; s < t.length; s += 4)
                        if (t[s] > 0 && t[s] < 255) {
                            r = !0;
                            break
                        }
                    return (0,
                    n.shadow)(this, "isFontSubpixelAAEnabled", r)
                },
                showText: function CanvasGraphics_showText(e) {
                    var t = this.current
                      , r = t.font;
                    if (r.isType3Font)
                        return this.showType3Text(e);
                    var s = t.fontSize;
                    if (0 === s)
                        return;
                    var a = this.ctx
                      , i = t.fontSizeScale
                      , o = t.charSpacing
                      , l = t.wordSpacing
                      , c = t.fontDirection
                      , h = t.textHScale * c
                      , d = e.length
                      , u = r.vertical
                      , p = u ? 1 : -1
                      , f = r.defaultVMetrics
                      , g = s * t.fontMatrix[0]
                      , m = t.textRenderingMode === n.TextRenderingMode.FILL && !r.disableFontFace && !t.patternFill;
                    a.save();
                    let _;
                    if (t.patternFill) {
                        a.save();
                        const e = t.fillColor.getPattern(a, this);
                        _ = a.mozCurrentTransform;
                        a.restore();
                        a.fillStyle = e
                    }
                    a.transform.apply(a, t.textMatrix);
                    a.translate(t.x, t.y + t.textRise);
                    c > 0 ? a.scale(h, -1) : a.scale(h, 1);
                    var A = t.lineWidth
                      , b = t.textMatrixScale;
                    if (0 === b || 0 === A) {
                        var y = t.textRenderingMode & n.TextRenderingMode.FILL_STROKE_MASK;
                        if (y === n.TextRenderingMode.STROKE || y === n.TextRenderingMode.FILL_STROKE) {
                            this._cachedGetSinglePixelWidth = null;
                            A = .65 * this.getSinglePixelWidth()
                        }
                    } else
                        A /= b;
                    if (1 !== i) {
                        a.scale(i, i);
                        A /= i
                    }
                    a.lineWidth = A;
                    var v, C = 0;
                    for (v = 0; v < d; ++v) {
                        var S = e[v];
                        if ((0,
                        n.isNum)(S))
                            C += p * S * s / 1e3;
                        else {
                            var x, P, k, R, w = !1, T = (S.isSpace ? l : 0) + o, E = S.fontChar, F = S.accent, L = S.width;
                            if (u) {
                                var M, D, O;
                                M = S.vmetric || f;
                                D = -(D = S.vmetric ? M[1] : .5 * L) * g;
                                O = M[2] * g;
                                L = M ? -M[0] : L;
                                x = D / i;
                                P = (C + O) / i
                            } else {
                                x = C / i;
                                P = 0
                            }
                            if (r.remeasure && L > 0) {
                                var I = 1e3 * a.measureText(E).width / s * i;
                                if (L < I && this.isFontSubpixelAAEnabled) {
                                    var N = L / I;
                                    w = !0;
                                    a.save();
                                    a.scale(N, 1);
                                    x /= N
                                } else
                                    L !== I && (x += (L - I) / 2e3 * s / i)
                            }
                            if (this.contentVisible && (S.isInFont || r.missingFile))
                                if (m && !F)
                                    a.fillText(E, x, P);
                                else {
                                    this.paintChar(E, x, P, _);
                                    if (F) {
                                        k = x + s * F.offset.x / i;
                                        R = P - s * F.offset.y / i;
                                        this.paintChar(F.fontChar, k, R, _)
                                    }
                                }
                            C += u ? L * g - T * c : L * g + T * c;
                            w && a.restore()
                        }
                    }
                    u ? t.y -= C : t.x += C * h;
                    a.restore()
                },
                showType3Text: function CanvasGraphics_showType3Text(e) {
                    var t, r, s, a, i = this.ctx, o = this.current, l = o.font, c = o.fontSize, h = o.fontDirection, d = l.vertical ? 1 : -1, u = o.charSpacing, p = o.wordSpacing, f = o.textHScale * h, g = o.fontMatrix || n.FONT_IDENTITY_MATRIX, m = e.length;
                    if (!(o.textRenderingMode === n.TextRenderingMode.INVISIBLE) && 0 !== c) {
                        this._cachedGetSinglePixelWidth = null;
                        i.save();
                        i.transform.apply(i, o.textMatrix);
                        i.translate(o.x, o.y);
                        i.scale(f, h);
                        for (t = 0; t < m; ++t) {
                            r = e[t];
                            if ((0,
                            n.isNum)(r)) {
                                a = d * r * c / 1e3;
                                this.ctx.translate(a, 0);
                                o.x += a * f
                            } else {
                                var _ = (r.isSpace ? p : 0) + u
                                  , A = l.charProcOperatorList[r.operatorListId];
                                if (A) {
                                    if (this.contentVisible) {
                                        this.processingType3 = r;
                                        this.save();
                                        i.scale(c, c);
                                        i.transform.apply(i, g);
                                        this.executeOperatorList(A);
                                        this.restore()
                                    }
                                    s = n.Util.applyTransform([r.width, 0], g)[0] * c + _;
                                    i.translate(s, 0);
                                    o.x += s * f
                                } else
                                    (0,
                                    n.warn)(`Type3 character "${r.operatorListId}" is not available.`)
                            }
                        }
                        i.restore();
                        this.processingType3 = null
                    }
                },
                setCharWidth: function CanvasGraphics_setCharWidth(e, t) {},
                setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(e, t, r, n, s, a) {
                    this.ctx.rect(r, n, s - r, a - n);
                    this.clip();
                    this.endPath()
                },
                getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(e) {
                    var t;
                    if ("TilingPattern" === e[0]) {
                        var r = e[1]
                          , n = this.baseTransform || this.ctx.mozCurrentTransform.slice()
                          , a = {
                            createCanvasGraphics: e=>new CanvasGraphics(e,this.commonObjs,this.objs,this.canvasFactory,this.webGLContext)
                        };
                        t = new s.TilingPattern(e,r,this.ctx,a,n)
                    } else
                        t = (0,
                        s.getShadingPatternFromIR)(e);
                    return t
                },
                setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
                    this.current.strokeColor = this.getColorN_Pattern(arguments)
                },
                setFillColorN: function CanvasGraphics_setFillColorN() {
                    this.current.fillColor = this.getColorN_Pattern(arguments);
                    this.current.patternFill = !0
                },
                setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(e, t, r) {
                    var s = n.Util.makeCssRgb(e, t, r);
                    this.ctx.strokeStyle = s;
                    this.current.strokeColor = s
                },
                setFillRGBColor: function CanvasGraphics_setFillRGBColor(e, t, r) {
                    var s = n.Util.makeCssRgb(e, t, r);
                    this.ctx.fillStyle = s;
                    this.current.fillColor = s;
                    this.current.patternFill = !1
                },
                shadingFill: function CanvasGraphics_shadingFill(e) {
                    if (this.contentVisible) {
                        var t = this.ctx;
                        this.save();
                        var r = (0,
                        s.getShadingPatternFromIR)(e);
                        t.fillStyle = r.getPattern(t, this, !0);
                        var a = t.mozCurrentTransformInverse;
                        if (a) {
                            var i = t.canvas
                              , o = i.width
                              , l = i.height
                              , c = n.Util.applyTransform([0, 0], a)
                              , h = n.Util.applyTransform([0, l], a)
                              , d = n.Util.applyTransform([o, 0], a)
                              , u = n.Util.applyTransform([o, l], a)
                              , p = Math.min(c[0], h[0], d[0], u[0])
                              , f = Math.min(c[1], h[1], d[1], u[1])
                              , g = Math.max(c[0], h[0], d[0], u[0])
                              , m = Math.max(c[1], h[1], d[1], u[1]);
                            this.ctx.fillRect(p, f, g - p, m - f)
                        } else
                            this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
                        this.restore()
                    }
                },
                beginInlineImage: function CanvasGraphics_beginInlineImage() {
                    (0,
                    n.unreachable)("Should not call beginInlineImage")
                },
                beginImageData: function CanvasGraphics_beginImageData() {
                    (0,
                    n.unreachable)("Should not call beginImageData")
                },
                paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(e, t) {
                    if (this.contentVisible) {
                        this.save();
                        this.baseTransformStack.push(this.baseTransform);
                        Array.isArray(e) && 6 === e.length && this.transform.apply(this, e);
                        this.baseTransform = this.ctx.mozCurrentTransform;
                        if (t) {
                            var r = t[2] - t[0]
                              , n = t[3] - t[1];
                            this.ctx.rect(t[0], t[1], r, n);
                            this.clip();
                            this.endPath()
                        }
                    }
                },
                paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
                    if (this.contentVisible) {
                        this.restore();
                        this.baseTransform = this.baseTransformStack.pop()
                    }
                },
                beginGroup: function CanvasGraphics_beginGroup(e) {
                    if (this.contentVisible) {
                        this.save();
                        var t = this.ctx;
                        e.isolated || (0,
                        n.info)("TODO: Support non-isolated groups.");
                        e.knockout && (0,
                        n.warn)("Knockout groups not supported.");
                        var r = t.mozCurrentTransform;
                        e.matrix && t.transform.apply(t, e.matrix);
                        if (!e.bbox)
                            throw new Error("Bounding box is required.");
                        var s = n.Util.getAxialAlignedBoundingBox(e.bbox, t.mozCurrentTransform)
                          , a = [0, 0, t.canvas.width, t.canvas.height];
                        s = n.Util.intersect(s, a) || [0, 0, 0, 0];
                        var i = Math.floor(s[0])
                          , o = Math.floor(s[1])
                          , l = Math.max(Math.ceil(s[2]) - i, 1)
                          , c = Math.max(Math.ceil(s[3]) - o, 1)
                          , h = 1
                          , d = 1;
                        if (l > 4096) {
                            h = l / 4096;
                            l = 4096
                        }
                        if (c > 4096) {
                            d = c / 4096;
                            c = 4096
                        }
                        var u = "groupAt" + this.groupLevel;
                        e.smask && (u += "_smask_" + this.smaskCounter++ % 2);
                        var p = this.cachedCanvases.getCanvas(u, l, c, !0)
                          , f = p.context;
                        f.scale(1 / h, 1 / d);
                        f.translate(-i, -o);
                        f.transform.apply(f, r);
                        if (e.smask)
                            this.smaskStack.push({
                                canvas: p.canvas,
                                context: f,
                                offsetX: i,
                                offsetY: o,
                                scaleX: h,
                                scaleY: d,
                                subtype: e.smask.subtype,
                                backdrop: e.smask.backdrop,
                                transferMap: e.smask.transferMap || null,
                                startTransformInverse: null
                            });
                        else {
                            t.setTransform(1, 0, 0, 1, 0, 0);
                            t.translate(i, o);
                            t.scale(h, d)
                        }
                        copyCtxState(t, f);
                        this.ctx = f;
                        this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
                        this.groupStack.push(t);
                        this.groupLevel++;
                        this.current.activeSMask = null
                    }
                },
                endGroup: function CanvasGraphics_endGroup(e) {
                    if (this.contentVisible) {
                        this.groupLevel--;
                        var t = this.ctx;
                        this.ctx = this.groupStack.pop();
                        void 0 !== this.ctx.imageSmoothingEnabled ? this.ctx.imageSmoothingEnabled = !1 : this.ctx.mozImageSmoothingEnabled = !1;
                        e.smask ? this.tempSMask = this.smaskStack.pop() : this.ctx.drawImage(t.canvas, 0, 0);
                        this.restore()
                    }
                },
                beginAnnotations: function CanvasGraphics_beginAnnotations() {
                    this.save();
                    this.baseTransform && this.ctx.setTransform.apply(this.ctx, this.baseTransform)
                },
                endAnnotations: function CanvasGraphics_endAnnotations() {
                    this.restore()
                },
                beginAnnotation: function CanvasGraphics_beginAnnotation(e, t, r) {
                    this.save();
                    resetCtxToDefault(this.ctx);
                    this.current = new i;
                    if (Array.isArray(e) && 4 === e.length) {
                        var n = e[2] - e[0]
                          , s = e[3] - e[1];
                        this.ctx.rect(e[0], e[1], n, s);
                        this.clip();
                        this.endPath()
                    }
                    this.transform.apply(this, t);
                    this.transform.apply(this, r)
                },
                endAnnotation: function CanvasGraphics_endAnnotation() {
                    this.restore()
                },
                paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(e) {
                    if (this.contentVisible) {
                        var t = this.ctx
                          , r = e.width
                          , n = e.height
                          , s = this.current.fillColor
                          , a = this.current.patternFill
                          , i = this.processingType3;
                        i && void 0 === i.compiled && (i.compiled = r <= 1e3 && n <= 1e3 ? function compileType3Glyph(e) {
                            var t, r, n, s, a = e.width, i = e.height, o = a + 1, l = new Uint8Array(o * (i + 1)), c = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]), h = a + 7 & -8, d = e.data, u = new Uint8Array(h * i), p = 0;
                            for (t = 0,
                            s = d.length; t < s; t++)
                                for (var f = 128, g = d[t]; f > 0; ) {
                                    u[p++] = g & f ? 0 : 255;
                                    f >>= 1
                                }
                            var m = 0;
                            if (0 !== u[p = 0]) {
                                l[0] = 1;
                                ++m
                            }
                            for (r = 1; r < a; r++) {
                                if (u[p] !== u[p + 1]) {
                                    l[r] = u[p] ? 2 : 1;
                                    ++m
                                }
                                p++
                            }
                            if (0 !== u[p]) {
                                l[r] = 2;
                                ++m
                            }
                            for (t = 1; t < i; t++) {
                                n = t * o;
                                if (u[(p = t * h) - h] !== u[p]) {
                                    l[n] = u[p] ? 1 : 8;
                                    ++m
                                }
                                var _ = (u[p] ? 4 : 0) + (u[p - h] ? 8 : 0);
                                for (r = 1; r < a; r++) {
                                    if (c[_ = (_ >> 2) + (u[p + 1] ? 4 : 0) + (u[p - h + 1] ? 8 : 0)]) {
                                        l[n + r] = c[_];
                                        ++m
                                    }
                                    p++
                                }
                                if (u[p - h] !== u[p]) {
                                    l[n + r] = u[p] ? 2 : 4;
                                    ++m
                                }
                                if (m > 1e3)
                                    return null
                            }
                            n = t * o;
                            if (0 !== u[p = h * (i - 1)]) {
                                l[n] = 8;
                                ++m
                            }
                            for (r = 1; r < a; r++) {
                                if (u[p] !== u[p + 1]) {
                                    l[n + r] = u[p] ? 4 : 8;
                                    ++m
                                }
                                p++
                            }
                            if (0 !== u[p]) {
                                l[n + r] = 4;
                                ++m
                            }
                            if (m > 1e3)
                                return null;
                            var A = new Int32Array([0, o, -1, 0, -o, 0, 0, 0, 1])
                              , b = [];
                            for (t = 0; m && t <= i; t++) {
                                for (var y = t * o, v = y + a; y < v && !l[y]; )
                                    y++;
                                if (y !== v) {
                                    var C, S = [y % o, t], x = l[y], P = y;
                                    do {
                                        var k = A[x];
                                        do {
                                            y += k
                                        } while (!l[y]);
                                        if (5 !== (C = l[y]) && 10 !== C) {
                                            x = C;
                                            l[y] = 0
                                        } else {
                                            x = C & 51 * x >> 4;
                                            l[y] &= x >> 2 | x << 2
                                        }
                                        S.push(y % o);
                                        S.push(y / o | 0);
                                        l[y] || --m
                                    } while (P !== y);
                                    b.push(S);
                                    --t
                                }
                            }
                            return function(e) {
                                e.save();
                                e.scale(1 / a, -1 / i);
                                e.translate(0, -i);
                                e.beginPath();
                                for (let r = 0, n = b.length; r < n; r++) {
                                    var t = b[r];
                                    e.moveTo(t[0], t[1]);
                                    for (let r = 2, n = t.length; r < n; r += 2)
                                        e.lineTo(t[r], t[r + 1])
                                }
                                e.fill();
                                e.beginPath();
                                e.restore()
                            }
                        }({
                            data: e.data,
                            width: r,
                            height: n
                        }) : null);
                        if (i && i.compiled)
                            i.compiled(t);
                        else {
                            var o = this.cachedCanvases.getCanvas("maskCanvas", r, n)
                              , l = o.context;
                            l.save();
                            putBinaryImageMask(l, e);
                            l.globalCompositeOperation = "source-in";
                            l.fillStyle = a ? s.getPattern(l, this) : s;
                            l.fillRect(0, 0, r, n);
                            l.restore();
                            this.paintInlineImageXObject(o.canvas)
                        }
                    }
                },
                paintImageMaskXObjectRepeat(e, t, r=0, n=0, s, a) {
                    if (this.contentVisible) {
                        var i = e.width
                          , o = e.height
                          , l = this.current.fillColor
                          , c = this.current.patternFill
                          , h = this.cachedCanvases.getCanvas("maskCanvas", i, o)
                          , d = h.context;
                        d.save();
                        putBinaryImageMask(d, e);
                        d.globalCompositeOperation = "source-in";
                        d.fillStyle = c ? l.getPattern(d, this) : l;
                        d.fillRect(0, 0, i, o);
                        d.restore();
                        for (var u = this.ctx, p = 0, f = a.length; p < f; p += 2) {
                            u.save();
                            u.transform(t, r, n, s, a[p], a[p + 1]);
                            u.scale(1, -1);
                            u.drawImage(h.canvas, 0, 0, i, o, 0, -1, 1, 1);
                            u.restore()
                        }
                    }
                },
                paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(e) {
                    if (this.contentVisible)
                        for (var t = this.ctx, r = this.current.fillColor, n = this.current.patternFill, s = 0, a = e.length; s < a; s++) {
                            var i = e[s]
                              , o = i.width
                              , l = i.height
                              , c = this.cachedCanvases.getCanvas("maskCanvas", o, l)
                              , h = c.context;
                            h.save();
                            putBinaryImageMask(h, i);
                            h.globalCompositeOperation = "source-in";
                            h.fillStyle = n ? r.getPattern(h, this) : r;
                            h.fillRect(0, 0, o, l);
                            h.restore();
                            t.save();
                            t.transform.apply(t, i.transform);
                            t.scale(1, -1);
                            t.drawImage(c.canvas, 0, 0, o, l, 0, -1, 1, 1);
                            t.restore()
                        }
                },
                paintImageXObject: function CanvasGraphics_paintImageXObject(e) {
                    if (!this.contentVisible)
                        return;
                    const t = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
                    t ? this.paintInlineImageXObject(t) : (0,
                    n.warn)("Dependent image isn't ready yet")
                },
                paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(e, t, r, s) {
                    if (!this.contentVisible)
                        return;
                    const a = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
                    if (a) {
                        for (var i = a.width, o = a.height, l = [], c = 0, h = s.length; c < h; c += 2)
                            l.push({
                                transform: [t, 0, 0, r, s[c], s[c + 1]],
                                x: 0,
                                y: 0,
                                w: i,
                                h: o
                            });
                        this.paintInlineImageXObjectGroup(a, l)
                    } else
                        (0,
                        n.warn)("Dependent image isn't ready yet")
                },
                paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(e) {
                    if (this.contentVisible) {
                        var t = e.width
                          , r = e.height
                          , n = this.ctx;
                        this.save();
                        n.scale(1 / t, -1 / r);
                        var s, a, i = n.mozCurrentTransformInverse, o = i[0], l = i[1], c = Math.max(Math.sqrt(o * o + l * l), 1), h = i[2], d = i[3], u = Math.max(Math.sqrt(h * h + d * d), 1);
                        if ("function" == typeof HTMLElement && e instanceof HTMLElement || !e.data)
                            s = e;
                        else {
                            var p = (a = this.cachedCanvases.getCanvas("inlineImage", t, r)).context;
                            putBinaryImageData(p, e, this.current.transferMaps);
                            s = a.canvas
                        }
                        for (var f = t, g = r, m = "prescale1"; c > 2 && f > 1 || u > 2 && g > 1; ) {
                            var _ = f
                              , A = g;
                            c > 2 && f > 1 && (c /= f / (_ = Math.ceil(f / 2)));
                            u > 2 && g > 1 && (u /= g / (A = Math.ceil(g / 2)));
                            (p = (a = this.cachedCanvases.getCanvas(m, _, A)).context).clearRect(0, 0, _, A);
                            p.drawImage(s, 0, 0, f, g, 0, 0, _, A);
                            s = a.canvas;
                            f = _;
                            g = A;
                            m = "prescale1" === m ? "prescale2" : "prescale1"
                        }
                        n.drawImage(s, 0, 0, f, g, 0, -r, t, r);
                        if (this.imageLayer) {
                            var b = this.getCanvasPosition(0, -r);
                            this.imageLayer.appendImage({
                                imgData: e,
                                left: b[0],
                                top: b[1],
                                width: t / i[0],
                                height: r / i[3]
                            })
                        }
                        this.restore()
                    }
                },
                paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(e, t) {
                    if (this.contentVisible) {
                        var r = this.ctx
                          , n = e.width
                          , s = e.height
                          , a = this.cachedCanvases.getCanvas("inlineImage", n, s);
                        putBinaryImageData(a.context, e, this.current.transferMaps);
                        for (var i = 0, o = t.length; i < o; i++) {
                            var l = t[i];
                            r.save();
                            r.transform.apply(r, l.transform);
                            r.scale(1, -1);
                            r.drawImage(a.canvas, l.x, l.y, l.w, l.h, 0, -1, 1, 1);
                            if (this.imageLayer) {
                                var c = this.getCanvasPosition(l.x, l.y);
                                this.imageLayer.appendImage({
                                    imgData: e,
                                    left: c[0],
                                    top: c[1],
                                    width: n,
                                    height: s
                                })
                            }
                            r.restore()
                        }
                    }
                },
                paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
                    this.contentVisible && this.ctx.fillRect(0, 0, 1, 1)
                },
                markPoint: function CanvasGraphics_markPoint(e) {},
                markPointProps: function CanvasGraphics_markPointProps(e, t) {},
                beginMarkedContent: function CanvasGraphics_beginMarkedContent(e) {
                    this.markedContentStack.push({
                        visible: !0
                    })
                },
                beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(e, t) {
                    "OC" === e ? this.markedContentStack.push({
                        visible: this.optionalContentConfig.isVisible(t)
                    }) : this.markedContentStack.push({
                        visible: !0
                    });
                    this.contentVisible = this.isContentVisible()
                },
                endMarkedContent: function CanvasGraphics_endMarkedContent() {
                    this.markedContentStack.pop();
                    this.contentVisible = this.isContentVisible()
                },
                beginCompat: function CanvasGraphics_beginCompat() {},
                endCompat: function CanvasGraphics_endCompat() {},
                consumePath: function CanvasGraphics_consumePath() {
                    var e = this.ctx;
                    if (this.pendingClip) {
                        this.pendingClip === o ? e.clip("evenodd") : e.clip();
                        this.pendingClip = null
                    }
                    e.beginPath()
                },
                getSinglePixelWidth(e) {
                    if (null === this._cachedGetSinglePixelWidth) {
                        const e = this.ctx.mozCurrentTransformInverse;
                        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(e[0] * e[0] + e[1] * e[1], e[2] * e[2] + e[3] * e[3]))
                    }
                    return this._cachedGetSinglePixelWidth
                },
                getCanvasPosition: function CanvasGraphics_getCanvasPosition(e, t) {
                    var r = this.ctx.mozCurrentTransform;
                    return [r[0] * e + r[2] * t + r[4], r[1] * e + r[3] * t + r[5]]
                },
                isContentVisible: function CanvasGraphics_isContentVisible() {
                    for (let e = this.markedContentStack.length - 1; e >= 0; e--)
                        if (!this.markedContentStack[e].visible)
                            return !1;
                    return !0
                }
            };
            for (var l in n.OPS)
                CanvasGraphics.prototype[n.OPS[l]] = CanvasGraphics.prototype[l];
            return CanvasGraphics
        }();
        t.CanvasGraphics = o
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.getShadingPatternFromIR = function getShadingPatternFromIR(e) {
            var t = s[e[0]];
            if (!t)
                throw new Error("Unknown IR type: " + e[0]);
            return t.fromIR(e)
        }
        ;
        t.TilingPattern = void 0;
        var n = r(2)
          , s = {};
        function applyBoundingBox(e, t) {
            if (!t || "undefined" == typeof Path2D)
                return;
            const r = t[2] - t[0]
              , n = t[3] - t[1]
              , s = new Path2D;
            s.rect(t[0], t[1], r, n);
            e.clip(s)
        }
        s.RadialAxial = {
            fromIR: function RadialAxial_fromIR(e) {
                var t = e[1]
                  , r = e[2]
                  , n = e[3]
                  , s = e[4]
                  , a = e[5]
                  , i = e[6]
                  , o = e[7];
                return {
                    type: "Pattern",
                    getPattern: function RadialAxial_getPattern(e) {
                        applyBoundingBox(e, r);
                        var l;
                        "axial" === t ? l = e.createLinearGradient(s[0], s[1], a[0], a[1]) : "radial" === t && (l = e.createRadialGradient(s[0], s[1], i, a[0], a[1], o));
                        for (var c = 0, h = n.length; c < h; ++c) {
                            var d = n[c];
                            l.addColorStop(d[0], d[1])
                        }
                        return l
                    }
                }
            }
        };
        var a = function createMeshCanvasClosure() {
            function drawTriangle(e, t, r, n, s, a, i, o) {
                var l, c = t.coords, h = t.colors, d = e.data, u = 4 * e.width;
                if (c[r + 1] > c[n + 1]) {
                    l = r;
                    r = n;
                    n = l;
                    l = a;
                    a = i;
                    i = l
                }
                if (c[n + 1] > c[s + 1]) {
                    l = n;
                    n = s;
                    s = l;
                    l = i;
                    i = o;
                    o = l
                }
                if (c[r + 1] > c[n + 1]) {
                    l = r;
                    r = n;
                    n = l;
                    l = a;
                    a = i;
                    i = l
                }
                var p = (c[r] + t.offsetX) * t.scaleX
                  , f = (c[r + 1] + t.offsetY) * t.scaleY
                  , g = (c[n] + t.offsetX) * t.scaleX
                  , m = (c[n + 1] + t.offsetY) * t.scaleY
                  , _ = (c[s] + t.offsetX) * t.scaleX
                  , A = (c[s + 1] + t.offsetY) * t.scaleY;
                if (!(f >= A))
                    for (var b, y, v, C, S, x, P, k, R = h[a], w = h[a + 1], T = h[a + 2], E = h[i], F = h[i + 1], L = h[i + 2], M = h[o], D = h[o + 1], O = h[o + 2], I = Math.round(f), N = Math.round(A), j = I; j <= N; j++) {
                        if (j < m) {
                            let e;
                            e = j < f ? 0 : f === m ? 1 : (f - j) / (f - m);
                            b = p - (p - g) * e;
                            y = R - (R - E) * e;
                            v = w - (w - F) * e;
                            C = T - (T - L) * e
                        } else {
                            let e;
                            e = j > A ? 1 : m === A ? 0 : (m - j) / (m - A);
                            b = g - (g - _) * e;
                            y = E - (E - M) * e;
                            v = F - (F - D) * e;
                            C = L - (L - O) * e
                        }
                        let e;
                        e = j < f ? 0 : j > A ? 1 : (f - j) / (f - A);
                        S = p - (p - _) * e;
                        x = R - (R - M) * e;
                        P = w - (w - D) * e;
                        k = T - (T - O) * e;
                        for (var G = Math.round(Math.min(b, S)), U = Math.round(Math.max(b, S)), W = u * j + 4 * G, q = G; q <= U; q++) {
                            e = (b - q) / (b - S);
                            e < 0 ? e = 0 : e > 1 && (e = 1);
                            d[W++] = y - (y - x) * e | 0;
                            d[W++] = v - (v - P) * e | 0;
                            d[W++] = C - (C - k) * e | 0;
                            d[W++] = 255
                        }
                    }
            }
            function drawFigure(e, t, r) {
                var n, s, a = t.coords, i = t.colors;
                switch (t.type) {
                case "lattice":
                    var o = t.verticesPerRow
                      , l = Math.floor(a.length / o) - 1
                      , c = o - 1;
                    for (n = 0; n < l; n++)
                        for (var h = n * o, d = 0; d < c; d++,
                        h++) {
                            drawTriangle(e, r, a[h], a[h + 1], a[h + o], i[h], i[h + 1], i[h + o]);
                            drawTriangle(e, r, a[h + o + 1], a[h + 1], a[h + o], i[h + o + 1], i[h + 1], i[h + o])
                        }
                    break;
                case "triangles":
                    for (n = 0,
                    s = a.length; n < s; n += 3)
                        drawTriangle(e, r, a[n], a[n + 1], a[n + 2], i[n], i[n + 1], i[n + 2]);
                    break;
                default:
                    throw new Error("illegal figure")
                }
            }
            return function createMeshCanvas(e, t, r, n, s, a, i, o) {
                var l, c, h, d, u = Math.floor(e[0]), p = Math.floor(e[1]), f = Math.ceil(e[2]) - u, g = Math.ceil(e[3]) - p, m = Math.min(Math.ceil(Math.abs(f * t[0] * 1.1)), 3e3), _ = Math.min(Math.ceil(Math.abs(g * t[1] * 1.1)), 3e3), A = f / m, b = g / _, y = {
                    coords: r,
                    colors: n,
                    offsetX: -u,
                    offsetY: -p,
                    scaleX: 1 / A,
                    scaleY: 1 / b
                }, v = m + 4, C = _ + 4;
                if (o.isEnabled) {
                    l = o.drawFigures({
                        width: m,
                        height: _,
                        backgroundColor: a,
                        figures: s,
                        context: y
                    });
                    (c = i.getCanvas("mesh", v, C, !1)).context.drawImage(l, 2, 2);
                    l = c.canvas
                } else {
                    var S = (c = i.getCanvas("mesh", v, C, !1)).context
                      , x = S.createImageData(m, _);
                    if (a) {
                        var P = x.data;
                        for (h = 0,
                        d = P.length; h < d; h += 4) {
                            P[h] = a[0];
                            P[h + 1] = a[1];
                            P[h + 2] = a[2];
                            P[h + 3] = 255
                        }
                    }
                    for (h = 0; h < s.length; h++)
                        drawFigure(x, s[h], y);
                    S.putImageData(x, 2, 2);
                    l = c.canvas
                }
                return {
                    canvas: l,
                    offsetX: u - 2 * A,
                    offsetY: p - 2 * b,
                    scaleX: A,
                    scaleY: b
                }
            }
        }();
        s.Mesh = {
            fromIR: function Mesh_fromIR(e) {
                var t = e[2]
                  , r = e[3]
                  , s = e[4]
                  , i = e[5]
                  , o = e[6]
                  , l = e[7]
                  , c = e[8];
                return {
                    type: "Pattern",
                    getPattern: function Mesh_getPattern(e, h, d) {
                        applyBoundingBox(e, l);
                        var u;
                        if (d)
                            u = n.Util.singularValueDecompose2dScale(e.mozCurrentTransform);
                        else {
                            u = n.Util.singularValueDecompose2dScale(h.baseTransform);
                            if (o) {
                                var p = n.Util.singularValueDecompose2dScale(o);
                                u = [u[0] * p[0], u[1] * p[1]]
                            }
                        }
                        var f = a(i, u, t, r, s, d ? null : c, h.cachedCanvases, h.webGLContext);
                        if (!d) {
                            e.setTransform.apply(e, h.baseTransform);
                            o && e.transform.apply(e, o)
                        }
                        e.translate(f.offsetX, f.offsetY);
                        e.scale(f.scaleX, f.scaleY);
                        return e.createPattern(f.canvas, "no-repeat")
                    }
                }
            }
        };
        s.Dummy = {
            fromIR: function Dummy_fromIR() {
                return {
                    type: "Pattern",
                    getPattern: function Dummy_fromIR_getPattern() {
                        return "hotpink"
                    }
                }
            }
        };
        var i = function TilingPatternClosure() {
            var e = 1
              , t = 2;
            function TilingPattern(e, t, r, n, s) {
                this.operatorList = e[2];
                this.matrix = e[3] || [1, 0, 0, 1, 0, 0];
                this.bbox = e[4];
                this.xstep = e[5];
                this.ystep = e[6];
                this.paintType = e[7];
                this.tilingType = e[8];
                this.color = t;
                this.canvasGraphicsFactory = n;
                this.baseTransform = s;
                this.type = "Pattern";
                this.ctx = r
            }
            TilingPattern.prototype = {
                createPatternCanvas: function TilinPattern_createPatternCanvas(e) {
                    var t = this.operatorList
                      , r = this.bbox
                      , s = this.xstep
                      , a = this.ystep
                      , i = this.paintType
                      , o = this.tilingType
                      , l = this.color
                      , c = this.canvasGraphicsFactory;
                    (0,
                    n.info)("TilingType: " + o);
                    var h = r[0]
                      , d = r[1]
                      , u = r[2]
                      , p = r[3]
                      , f = n.Util.singularValueDecompose2dScale(this.matrix)
                      , g = n.Util.singularValueDecompose2dScale(this.baseTransform)
                      , m = [f[0] * g[0], f[1] * g[1]]
                      , _ = this.getSizeAndScale(s, this.ctx.canvas.width, m[0])
                      , A = this.getSizeAndScale(a, this.ctx.canvas.height, m[1])
                      , b = e.cachedCanvases.getCanvas("pattern", _.size, A.size, !0)
                      , y = b.context
                      , v = c.createCanvasGraphics(y);
                    v.groupLevel = e.groupLevel;
                    this.setFillAndStrokeStyleToContext(v, i, l);
                    v.transform(_.scale, 0, 0, A.scale, 0, 0);
                    v.transform(1, 0, 0, 1, -h, -d);
                    this.clipBbox(v, r, h, d, u, p);
                    v.executeOperatorList(t);
                    this.ctx.transform(1, 0, 0, 1, h, d);
                    this.ctx.scale(1 / _.scale, 1 / A.scale);
                    return b.canvas
                },
                getSizeAndScale: function TilingPattern_getSizeAndScale(e, t, r) {
                    e = Math.abs(e);
                    var n = Math.max(3e3, t)
                      , s = Math.ceil(e * r);
                    s >= n ? s = n : r = s / e;
                    return {
                        scale: r,
                        size: s
                    }
                },
                clipBbox: function clipBbox(e, t, r, n, s, a) {
                    if (Array.isArray(t) && 4 === t.length) {
                        var i = s - r
                          , o = a - n;
                        e.ctx.rect(r, n, i, o);
                        e.clip();
                        e.endPath()
                    }
                },
                setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(r, s, a) {
                    const i = r.ctx
                      , o = r.current;
                    switch (s) {
                    case e:
                        var l = this.ctx;
                        i.fillStyle = l.fillStyle;
                        i.strokeStyle = l.strokeStyle;
                        o.fillColor = l.fillStyle;
                        o.strokeColor = l.strokeStyle;
                        break;
                    case t:
                        var c = n.Util.makeCssRgb(a[0], a[1], a[2]);
                        i.fillStyle = c;
                        i.strokeStyle = c;
                        o.fillColor = c;
                        o.strokeColor = c;
                        break;
                    default:
                        throw new n.FormatError("Unsupported paint type: " + s)
                    }
                },
                getPattern: function TilingPattern_getPattern(e, t) {
                    (e = this.ctx).setTransform.apply(e, this.baseTransform);
                    e.transform.apply(e, this.matrix);
                    var r = this.createPatternCanvas(t);
                    return e.createPattern(r, "repeat")
                }
            };
            return TilingPattern
        }();
        t.TilingPattern = i
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.GlobalWorkerOptions = void 0;
        const n = Object.create(null);
        t.GlobalWorkerOptions = n;
        n.workerPort = void 0 === n.workerPort ? null : n.workerPort;
        n.workerSrc = void 0 === n.workerSrc ? "" : n.workerSrc
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.MessageHandler = void 0;
        var n = r(2);
        const s = 1
          , a = 2
          , i = 1
          , o = 2
          , l = 3
          , c = 4
          , h = 5
          , d = 6
          , u = 7
          , p = 8;
        function wrapReason(e) {
            if ("object" != typeof e || null === e)
                return e;
            switch (e.name) {
            case "AbortException":
                return new n.AbortException(e.message);
            case "MissingPDFException":
                return new n.MissingPDFException(e.message);
            case "UnexpectedResponseException":
                return new n.UnexpectedResponseException(e.message,e.status);
            case "UnknownErrorException":
                return new n.UnknownErrorException(e.message,e.details);
            default:
                return new n.UnknownErrorException(e.message,e.toString())
            }
        }
        t.MessageHandler = class MessageHandler {
            constructor(e, t, r) {
                this.sourceName = e;
                this.targetName = t;
                this.comObj = r;
                this.callbackId = 1;
                this.streamId = 1;
                this.postMessageTransfers = !0;
                this.streamSinks = Object.create(null);
                this.streamControllers = Object.create(null);
                this.callbackCapabilities = Object.create(null);
                this.actionHandler = Object.create(null);
                this._onComObjOnMessage = e=>{
                    const t = e.data;
                    if (t.targetName !== this.sourceName)
                        return;
                    if (t.stream) {
                        this._processStreamMessage(t);
                        return
                    }
                    if (t.callback) {
                        const e = t.callbackId
                          , r = this.callbackCapabilities[e];
                        if (!r)
                            throw new Error("Cannot resolve callback " + e);
                        delete this.callbackCapabilities[e];
                        if (t.callback === s)
                            r.resolve(t.data);
                        else {
                            if (t.callback !== a)
                                throw new Error("Unexpected callback case");
                            r.reject(wrapReason(t.reason))
                        }
                        return
                    }
                    const n = this.actionHandler[t.action];
                    if (!n)
                        throw new Error("Unknown action from worker: " + t.action);
                    if (t.callbackId) {
                        const e = this.sourceName
                          , i = t.sourceName;
                        new Promise((function(e) {
                            e(n(t.data))
                        }
                        )).then((function(n) {
                            r.postMessage({
                                sourceName: e,
                                targetName: i,
                                callback: s,
                                callbackId: t.callbackId,
                                data: n
                            })
                        }
                        ), (function(n) {
                            r.postMessage({
                                sourceName: e,
                                targetName: i,
                                callback: a,
                                callbackId: t.callbackId,
                                reason: wrapReason(n)
                            })
                        }
                        ))
                    } else
                        t.streamId ? this._createStreamSink(t) : n(t.data)
                }
                ;
                r.addEventListener("message", this._onComObjOnMessage)
            }
            on(e, t) {
                const r = this.actionHandler;
                if (r[e])
                    throw new Error(`There is already an actionName called "${e}"`);
                r[e] = t
            }
            send(e, t, r) {
                this._postMessage({
                    sourceName: this.sourceName,
                    targetName: this.targetName,
                    action: e,
                    data: t
                }, r)
            }
            sendWithPromise(e, t, r) {
                const s = this.callbackId++
                  , a = (0,
                n.createPromiseCapability)();
                this.callbackCapabilities[s] = a;
                try {
                    this._postMessage({
                        sourceName: this.sourceName,
                        targetName: this.targetName,
                        action: e,
                        callbackId: s,
                        data: t
                    }, r)
                } catch (e) {
                    a.reject(e)
                }
                return a.promise
            }
            sendWithStream(e, t, r, s) {
                const a = this.streamId++
                  , o = this.sourceName
                  , l = this.targetName
                  , c = this.comObj;
                return new ReadableStream({
                    start: r=>{
                        const i = (0,
                        n.createPromiseCapability)();
                        this.streamControllers[a] = {
                            controller: r,
                            startCall: i,
                            pullCall: null,
                            cancelCall: null,
                            isClosed: !1
                        };
                        this._postMessage({
                            sourceName: o,
                            targetName: l,
                            action: e,
                            streamId: a,
                            data: t,
                            desiredSize: r.desiredSize
                        }, s);
                        return i.promise
                    }
                    ,
                    pull: e=>{
                        const t = (0,
                        n.createPromiseCapability)();
                        this.streamControllers[a].pullCall = t;
                        c.postMessage({
                            sourceName: o,
                            targetName: l,
                            stream: d,
                            streamId: a,
                            desiredSize: e.desiredSize
                        });
                        return t.promise
                    }
                    ,
                    cancel: e=>{
                        (0,
                        n.assert)(e instanceof Error, "cancel must have a valid reason");
                        const t = (0,
                        n.createPromiseCapability)();
                        this.streamControllers[a].cancelCall = t;
                        this.streamControllers[a].isClosed = !0;
                        c.postMessage({
                            sourceName: o,
                            targetName: l,
                            stream: i,
                            streamId: a,
                            reason: wrapReason(e)
                        });
                        return t.promise
                    }
                },r)
            }
            _createStreamSink(e) {
                const t = this
                  , r = this.actionHandler[e.action]
                  , s = e.streamId
                  , a = this.sourceName
                  , i = e.sourceName
                  , o = this.comObj
                  , d = {
                    enqueue(e, r=1, o) {
                        if (this.isCancelled)
                            return;
                        const l = this.desiredSize;
                        this.desiredSize -= r;
                        if (l > 0 && this.desiredSize <= 0) {
                            this.sinkCapability = (0,
                            n.createPromiseCapability)();
                            this.ready = this.sinkCapability.promise
                        }
                        t._postMessage({
                            sourceName: a,
                            targetName: i,
                            stream: c,
                            streamId: s,
                            chunk: e
                        }, o)
                    },
                    close() {
                        if (!this.isCancelled) {
                            this.isCancelled = !0;
                            o.postMessage({
                                sourceName: a,
                                targetName: i,
                                stream: l,
                                streamId: s
                            });
                            delete t.streamSinks[s]
                        }
                    },
                    error(e) {
                        (0,
                        n.assert)(e instanceof Error, "error must have a valid reason");
                        if (!this.isCancelled) {
                            this.isCancelled = !0;
                            o.postMessage({
                                sourceName: a,
                                targetName: i,
                                stream: h,
                                streamId: s,
                                reason: wrapReason(e)
                            })
                        }
                    },
                    sinkCapability: (0,
                    n.createPromiseCapability)(),
                    onPull: null,
                    onCancel: null,
                    isCancelled: !1,
                    desiredSize: e.desiredSize,
                    ready: null
                };
                d.sinkCapability.resolve();
                d.ready = d.sinkCapability.promise;
                this.streamSinks[s] = d;
                new Promise((function(t) {
                    t(r(e.data, d))
                }
                )).then((function() {
                    o.postMessage({
                        sourceName: a,
                        targetName: i,
                        stream: p,
                        streamId: s,
                        success: !0
                    })
                }
                ), (function(e) {
                    o.postMessage({
                        sourceName: a,
                        targetName: i,
                        stream: p,
                        streamId: s,
                        reason: wrapReason(e)
                    })
                }
                ))
            }
            _processStreamMessage(e) {
                const t = e.streamId
                  , r = this.sourceName
                  , s = e.sourceName
                  , a = this.comObj;
                switch (e.stream) {
                case p:
                    e.success ? this.streamControllers[t].startCall.resolve() : this.streamControllers[t].startCall.reject(wrapReason(e.reason));
                    break;
                case u:
                    e.success ? this.streamControllers[t].pullCall.resolve() : this.streamControllers[t].pullCall.reject(wrapReason(e.reason));
                    break;
                case d:
                    if (!this.streamSinks[t]) {
                        a.postMessage({
                            sourceName: r,
                            targetName: s,
                            stream: u,
                            streamId: t,
                            success: !0
                        });
                        break
                    }
                    this.streamSinks[t].desiredSize <= 0 && e.desiredSize > 0 && this.streamSinks[t].sinkCapability.resolve();
                    this.streamSinks[t].desiredSize = e.desiredSize;
                    const {onPull: f} = this.streamSinks[e.streamId];
                    new Promise((function(e) {
                        e(f && f())
                    }
                    )).then((function() {
                        a.postMessage({
                            sourceName: r,
                            targetName: s,
                            stream: u,
                            streamId: t,
                            success: !0
                        })
                    }
                    ), (function(e) {
                        a.postMessage({
                            sourceName: r,
                            targetName: s,
                            stream: u,
                            streamId: t,
                            reason: wrapReason(e)
                        })
                    }
                    ));
                    break;
                case c:
                    (0,
                    n.assert)(this.streamControllers[t], "enqueue should have stream controller");
                    if (this.streamControllers[t].isClosed)
                        break;
                    this.streamControllers[t].controller.enqueue(e.chunk);
                    break;
                case l:
                    (0,
                    n.assert)(this.streamControllers[t], "close should have stream controller");
                    if (this.streamControllers[t].isClosed)
                        break;
                    this.streamControllers[t].isClosed = !0;
                    this.streamControllers[t].controller.close();
                    this._deleteStreamController(t);
                    break;
                case h:
                    (0,
                    n.assert)(this.streamControllers[t], "error should have stream controller");
                    this.streamControllers[t].controller.error(wrapReason(e.reason));
                    this._deleteStreamController(t);
                    break;
                case o:
                    e.success ? this.streamControllers[t].cancelCall.resolve() : this.streamControllers[t].cancelCall.reject(wrapReason(e.reason));
                    this._deleteStreamController(t);
                    break;
                case i:
                    if (!this.streamSinks[t])
                        break;
                    const {onCancel: g} = this.streamSinks[e.streamId];
                    new Promise((function(t) {
                        t(g && g(wrapReason(e.reason)))
                    }
                    )).then((function() {
                        a.postMessage({
                            sourceName: r,
                            targetName: s,
                            stream: o,
                            streamId: t,
                            success: !0
                        })
                    }
                    ), (function(e) {
                        a.postMessage({
                            sourceName: r,
                            targetName: s,
                            stream: o,
                            streamId: t,
                            reason: wrapReason(e)
                        })
                    }
                    ));
                    this.streamSinks[t].sinkCapability.reject(wrapReason(e.reason));
                    this.streamSinks[t].isCancelled = !0;
                    delete this.streamSinks[t];
                    break;
                default:
                    throw new Error("Unexpected stream case")
                }
            }
            async _deleteStreamController(e) {
                await Promise.allSettled([this.streamControllers[e].startCall, this.streamControllers[e].pullCall, this.streamControllers[e].cancelCall].map((function(e) {
                    return e && e.promise
                }
                )));
                delete this.streamControllers[e]
            }
            _postMessage(e, t) {
                t && this.postMessageTransfers ? this.comObj.postMessage(e, t) : this.comObj.postMessage(e)
            }
            destroy() {
                this.comObj.removeEventListener("message", this._onComObjOnMessage)
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.Metadata = void 0;
        var n = r(2)
          , s = r(15);
        t.Metadata = class Metadata {
            constructor(e) {
                (0,
                n.assert)("string" == typeof e, "Metadata: input is not a string");
                e = this._repair(e);
                const t = (new s.SimpleXMLParser).parseFromString(e);
                this._metadataMap = new Map;
                t && this._parse(t)
            }
            _repair(e) {
                return e.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, (function(e, t) {
                    const r = t.replace(/\\([0-3])([0-7])([0-7])/g, (function(e, t, r, n) {
                        return String.fromCharCode(64 * t + 8 * r + 1 * n)
                    }
                    )).replace(/&(amp|apos|gt|lt|quot);/g, (function(e, t) {
                        switch (t) {
                        case "amp":
                            return "&";
                        case "apos":
                            return "'";
                        case "gt":
                            return ">";
                        case "lt":
                            return "<";
                        case "quot":
                            return '"'
                        }
                        throw new Error(`_repair: ${t} isn't defined.`)
                    }
                    ));
                    let n = "";
                    for (let e = 0, t = r.length; e < t; e += 2) {
                        const t = 256 * r.charCodeAt(e) + r.charCodeAt(e + 1);
                        n += t >= 32 && t < 127 && 60 !== t && 62 !== t && 38 !== t ? String.fromCharCode(t) : "&#x" + (65536 + t).toString(16).substring(1) + ";"
                    }
                    return ">" + n
                }
                ))
            }
            _parse(e) {
                let t = e.documentElement;
                if ("rdf:rdf" !== t.nodeName.toLowerCase()) {
                    t = t.firstChild;
                    for (; t && "rdf:rdf" !== t.nodeName.toLowerCase(); )
                        t = t.nextSibling
                }
                const r = t ? t.nodeName.toLowerCase() : null;
                if (!t || "rdf:rdf" !== r || !t.hasChildNodes())
                    return;
                const n = t.childNodes;
                for (let e = 0, t = n.length; e < t; e++) {
                    const t = n[e];
                    if ("rdf:description" === t.nodeName.toLowerCase())
                        for (let e = 0, r = t.childNodes.length; e < r; e++)
                            if ("#text" !== t.childNodes[e].nodeName.toLowerCase()) {
                                const r = t.childNodes[e]
                                  , n = r.nodeName.toLowerCase();
                                this._metadataMap.set(n, r.textContent.trim())
                            }
                }
            }
            get(e) {
                return this._metadataMap.has(e) ? this._metadataMap.get(e) : null
            }
            getAll() {
                return Object.fromEntries(this._metadataMap)
            }
            has(e) {
                return this._metadataMap.has(e)
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.SimpleXMLParser = void 0;
        const n = 0
          , s = -2
          , a = -3
          , i = -4
          , o = -5
          , l = -6
          , c = -9;
        function isWhitespace(e, t) {
            const r = e[t];
            return " " === r || "\n" === r || "\r" === r || "\t" === r
        }
        class SimpleDOMNode {
            constructor(e, t) {
                this.nodeName = e;
                this.nodeValue = t;
                Object.defineProperty(this, "parentNode", {
                    value: null,
                    writable: !0
                })
            }
            get firstChild() {
                return this.childNodes && this.childNodes[0]
            }
            get nextSibling() {
                const e = this.parentNode.childNodes;
                if (!e)
                    return;
                const t = e.indexOf(this);
                return -1 !== t ? e[t + 1] : void 0
            }
            get textContent() {
                return this.childNodes ? this.childNodes.map((function(e) {
                    return e.textContent
                }
                )).join("") : this.nodeValue || ""
            }
            hasChildNodes() {
                return this.childNodes && this.childNodes.length > 0
            }
        }
        t.SimpleXMLParser = class SimpleXMLParser extends class XMLParserBase {
            _resolveEntities(e) {
                return e.replace(/&([^;]+);/g, (e,t)=>{
                    if ("#x" === t.substring(0, 2))
                        return String.fromCharCode(parseInt(t.substring(2), 16));
                    if ("#" === t.substring(0, 1))
                        return String.fromCharCode(parseInt(t.substring(1), 10));
                    switch (t) {
                    case "lt":
                        return "<";
                    case "gt":
                        return ">";
                    case "amp":
                        return "&";
                    case "quot":
                        return '"'
                    }
                    return this.onResolveEntity(t)
                }
                )
            }
            _parseContent(e, t) {
                const r = [];
                let n = t;
                function skipWs() {
                    for (; n < e.length && isWhitespace(e, n); )
                        ++n
                }
                for (; n < e.length && !isWhitespace(e, n) && ">" !== e[n] && "/" !== e[n]; )
                    ++n;
                const s = e.substring(t, n);
                skipWs();
                for (; n < e.length && ">" !== e[n] && "/" !== e[n] && "?" !== e[n]; ) {
                    skipWs();
                    let t = ""
                      , s = "";
                    for (; n < e.length && !isWhitespace(e, n) && "=" !== e[n]; ) {
                        t += e[n];
                        ++n
                    }
                    skipWs();
                    if ("=" !== e[n])
                        return null;
                    ++n;
                    skipWs();
                    const a = e[n];
                    if ('"' !== a && "'" !== a)
                        return null;
                    const i = e.indexOf(a, ++n);
                    if (i < 0)
                        return null;
                    s = e.substring(n, i);
                    r.push({
                        name: t,
                        value: this._resolveEntities(s)
                    });
                    n = i + 1;
                    skipWs()
                }
                return {
                    name: s,
                    attributes: r,
                    parsed: n - t
                }
            }
            _parseProcessingInstruction(e, t) {
                let r = t;
                for (; r < e.length && !isWhitespace(e, r) && ">" !== e[r] && "/" !== e[r]; )
                    ++r;
                const n = e.substring(t, r);
                !function skipWs() {
                    for (; r < e.length && isWhitespace(e, r); )
                        ++r
                }();
                const s = r;
                for (; r < e.length && ("?" !== e[r] || ">" !== e[r + 1]); )
                    ++r;
                return {
                    name: n,
                    value: e.substring(s, r),
                    parsed: r - t
                }
            }
            parseXml(e) {
                let t = 0;
                for (; t < e.length; ) {
                    let r = t;
                    if ("<" === e[t]) {
                        ++r;
                        let t;
                        switch (e[r]) {
                        case "/":
                            ++r;
                            t = e.indexOf(">", r);
                            if (t < 0) {
                                this.onError(c);
                                return
                            }
                            this.onEndElement(e.substring(r, t));
                            r = t + 1;
                            break;
                        case "?":
                            ++r;
                            const n = this._parseProcessingInstruction(e, r);
                            if ("?>" !== e.substring(r + n.parsed, r + n.parsed + 2)) {
                                this.onError(a);
                                return
                            }
                            this.onPi(n.name, n.value);
                            r += n.parsed + 2;
                            break;
                        case "!":
                            if ("--" === e.substring(r + 1, r + 3)) {
                                t = e.indexOf("--\x3e", r + 3);
                                if (t < 0) {
                                    this.onError(o);
                                    return
                                }
                                this.onComment(e.substring(r + 3, t));
                                r = t + 3
                            } else if ("[CDATA[" === e.substring(r + 1, r + 8)) {
                                t = e.indexOf("]]>", r + 8);
                                if (t < 0) {
                                    this.onError(s);
                                    return
                                }
                                this.onCdata(e.substring(r + 8, t));
                                r = t + 3
                            } else {
                                if ("DOCTYPE" !== e.substring(r + 1, r + 8)) {
                                    this.onError(l);
                                    return
                                }
                                {
                                    const n = e.indexOf("[", r + 8);
                                    let s = !1;
                                    t = e.indexOf(">", r + 8);
                                    if (t < 0) {
                                        this.onError(i);
                                        return
                                    }
                                    if (n > 0 && t > n) {
                                        t = e.indexOf("]>", r + 8);
                                        if (t < 0) {
                                            this.onError(i);
                                            return
                                        }
                                        s = !0
                                    }
                                    const a = e.substring(r + 8, t + (s ? 1 : 0));
                                    this.onDoctype(a);
                                    r = t + (s ? 2 : 1)
                                }
                            }
                            break;
                        default:
                            const h = this._parseContent(e, r);
                            if (null === h) {
                                this.onError(l);
                                return
                            }
                            let d = !1;
                            if ("/>" === e.substring(r + h.parsed, r + h.parsed + 2))
                                d = !0;
                            else if (">" !== e.substring(r + h.parsed, r + h.parsed + 1)) {
                                this.onError(c);
                                return
                            }
                            this.onBeginElement(h.name, h.attributes, d);
                            r += h.parsed + (d ? 2 : 1)
                        }
                    } else {
                        for (; r < e.length && "<" !== e[r]; )
                            r++;
                        const n = e.substring(t, r);
                        this.onText(this._resolveEntities(n))
                    }
                    t = r
                }
            }
            onResolveEntity(e) {
                return `&${e};`
            }
            onPi(e, t) {}
            onComment(e) {}
            onCdata(e) {}
            onDoctype(e) {}
            onText(e) {}
            onBeginElement(e, t, r) {}
            onEndElement(e) {}
            onError(e) {}
        }
        {
            constructor() {
                super();
                this._currentFragment = null;
                this._stack = null;
                this._errorCode = n
            }
            parseFromString(e) {
                this._currentFragment = [];
                this._stack = [];
                this._errorCode = n;
                this.parseXml(e);
                if (this._errorCode !== n)
                    return;
                const [t] = this._currentFragment;
                return t ? {
                    documentElement: t
                } : void 0
            }
            onResolveEntity(e) {
                switch (e) {
                case "apos":
                    return "'"
                }
                return super.onResolveEntity(e)
            }
            onText(e) {
                if (function isWhitespaceString(e) {
                    for (let t = 0, r = e.length; t < r; t++)
                        if (!isWhitespace(e, t))
                            return !1;
                    return !0
                }(e))
                    return;
                const t = new SimpleDOMNode("#text",e);
                this._currentFragment.push(t)
            }
            onCdata(e) {
                const t = new SimpleDOMNode("#text",e);
                this._currentFragment.push(t)
            }
            onBeginElement(e, t, r) {
                const n = new SimpleDOMNode(e);
                n.childNodes = [];
                this._currentFragment.push(n);
                if (!r) {
                    this._stack.push(this._currentFragment);
                    this._currentFragment = n.childNodes
                }
            }
            onEndElement(e) {
                this._currentFragment = this._stack.pop() || [];
                const t = this._currentFragment[this._currentFragment.length - 1];
                if (t)
                    for (let e = 0, r = t.childNodes.length; e < r; e++)
                        t.childNodes[e].parentNode = t
            }
            onError(e) {
                this._errorCode = e
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.OptionalContentConfig = void 0;
        var n = r(2);
        class OptionalContentGroup {
            constructor(e, t) {
                this.visible = !0;
                this.name = e;
                this.intent = t
            }
        }
        t.OptionalContentConfig = class OptionalContentConfig {
            constructor(e) {
                this.name = null;
                this.creator = null;
                this._order = null;
                this._groups = new Map;
                if (null !== e) {
                    this.name = e.name;
                    this.creator = e.creator;
                    this._order = e.order;
                    for (const t of e.groups)
                        this._groups.set(t.id, new OptionalContentGroup(t.name,t.intent));
                    if ("OFF" === e.baseState)
                        for (const e of this._groups)
                            e.visible = !1;
                    for (const t of e.on)
                        this._groups.get(t).visible = !0;
                    for (const t of e.off)
                        this._groups.get(t).visible = !1
                }
            }
            isVisible(e) {
                if ("OCG" === e.type) {
                    if (!this._groups.has(e.id)) {
                        (0,
                        n.warn)("Optional content group not found: " + e.id);
                        return !0
                    }
                    return this._groups.get(e.id).visible
                }
                if ("OCMD" === e.type) {
                    e.expression && (0,
                    n.warn)("Visibility expression not supported yet.");
                    if (!e.policy || "AnyOn" === e.policy) {
                        for (const t of e.ids) {
                            if (!this._groups.has(t)) {
                                (0,
                                n.warn)("Optional content group not found: " + t);
                                return !0
                            }
                            if (this._groups.get(t).visible)
                                return !0
                        }
                        return !1
                    }
                    if ("AllOn" === e.policy) {
                        for (const t of e.ids) {
                            if (!this._groups.has(t)) {
                                (0,
                                n.warn)("Optional content group not found: " + t);
                                return !0
                            }
                            if (!this._groups.get(t).visible)
                                return !1
                        }
                        return !0
                    }
                    if ("AnyOff" === e.policy) {
                        for (const t of e.ids) {
                            if (!this._groups.has(t)) {
                                (0,
                                n.warn)("Optional content group not found: " + t);
                                return !0
                            }
                            if (!this._groups.get(t).visible)
                                return !0
                        }
                        return !1
                    }
                    if ("AllOff" === e.policy) {
                        for (const t of e.ids) {
                            if (!this._groups.has(t)) {
                                (0,
                                n.warn)("Optional content group not found: " + t);
                                return !0
                            }
                            if (this._groups.get(t).visible)
                                return !1
                        }
                        return !0
                    }
                    (0,
                    n.warn)(`Unknown optional content policy ${e.policy}.`);
                    return !0
                }
                (0,
                n.warn)(`Unknown group type ${e.type}.`);
                return !0
            }
            setVisibility(e, t=!0) {
                this._groups.has(e) ? this._groups.get(e).visible = !!t : (0,
                n.warn)("Optional content group not found: " + e)
            }
            getOrder() {
                return this._groups.size ? this._order ? this._order.slice() : Array.from(this._groups.keys()) : null
            }
            getGroups() {
                return this._groups.size ? Object.fromEntries(this._groups) : null
            }
            getGroup(e) {
                return this._groups.get(e) || null
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.PDFDataTransportStream = void 0;
        var n = r(2);
        t.PDFDataTransportStream = class PDFDataTransportStream {
            constructor(e, t) {
                (0,
                n.assert)(t, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
                this._queuedChunks = [];
                this._progressiveDone = e.progressiveDone || !1;
                const r = e.initialData;
                if (r && r.length > 0) {
                    const e = new Uint8Array(r).buffer;
                    this._queuedChunks.push(e)
                }
                this._pdfDataRangeTransport = t;
                this._isStreamingSupported = !e.disableStream;
                this._isRangeSupported = !e.disableRange;
                this._contentLength = e.length;
                this._fullRequestReader = null;
                this._rangeReaders = [];
                this._pdfDataRangeTransport.addRangeListener((e,t)=>{
                    this._onReceiveData({
                        begin: e,
                        chunk: t
                    })
                }
                );
                this._pdfDataRangeTransport.addProgressListener((e,t)=>{
                    this._onProgress({
                        loaded: e,
                        total: t
                    })
                }
                );
                this._pdfDataRangeTransport.addProgressiveReadListener(e=>{
                    this._onReceiveData({
                        chunk: e
                    })
                }
                );
                this._pdfDataRangeTransport.addProgressiveDoneListener(()=>{
                    this._onProgressiveDone()
                }
                );
                this._pdfDataRangeTransport.transportReady()
            }
            _onReceiveData(e) {
                const t = new Uint8Array(e.chunk).buffer;
                if (void 0 === e.begin)
                    this._fullRequestReader ? this._fullRequestReader._enqueue(t) : this._queuedChunks.push(t);
                else {
                    const r = this._rangeReaders.some((function(r) {
                        if (r._begin !== e.begin)
                            return !1;
                        r._enqueue(t);
                        return !0
                    }
                    ));
                    (0,
                    n.assert)(r, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")
                }
            }
            get _progressiveDataLength() {
                return this._fullRequestReader ? this._fullRequestReader._loaded : 0
            }
            _onProgress(e) {
                if (void 0 === e.total) {
                    const t = this._rangeReaders[0];
                    t && t.onProgress && t.onProgress({
                        loaded: e.loaded
                    })
                } else {
                    const t = this._fullRequestReader;
                    t && t.onProgress && t.onProgress({
                        loaded: e.loaded,
                        total: e.total
                    })
                }
            }
            _onProgressiveDone() {
                this._fullRequestReader && this._fullRequestReader.progressiveDone();
                this._progressiveDone = !0
            }
            _removeRangeReader(e) {
                const t = this._rangeReaders.indexOf(e);
                t >= 0 && this._rangeReaders.splice(t, 1)
            }
            getFullReader() {
                (0,
                n.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
                const e = this._queuedChunks;
                this._queuedChunks = null;
                return new PDFDataTransportStreamReader(this,e,this._progressiveDone)
            }
            getRangeReader(e, t) {
                if (t <= this._progressiveDataLength)
                    return null;
                const r = new PDFDataTransportStreamRangeReader(this,e,t);
                this._pdfDataRangeTransport.requestDataRange(e, t);
                this._rangeReaders.push(r);
                return r
            }
            cancelAllRequests(e) {
                this._fullRequestReader && this._fullRequestReader.cancel(e);
                this._rangeReaders.slice(0).forEach((function(t) {
                    t.cancel(e)
                }
                ));
                this._pdfDataRangeTransport.abort()
            }
        }
        ;
        class PDFDataTransportStreamReader {
            constructor(e, t, r=!1) {
                this._stream = e;
                this._done = r || !1;
                this._filename = null;
                this._queuedChunks = t || [];
                this._loaded = 0;
                for (const e of this._queuedChunks)
                    this._loaded += e.byteLength;
                this._requests = [];
                this._headersReady = Promise.resolve();
                e._fullRequestReader = this;
                this.onProgress = null
            }
            _enqueue(e) {
                if (!this._done) {
                    if (this._requests.length > 0) {
                        this._requests.shift().resolve({
                            value: e,
                            done: !1
                        })
                    } else
                        this._queuedChunks.push(e);
                    this._loaded += e.byteLength
                }
            }
            get headersReady() {
                return this._headersReady
            }
            get filename() {
                return this._filename
            }
            get isRangeSupported() {
                return this._stream._isRangeSupported
            }
            get isStreamingSupported() {
                return this._stream._isStreamingSupported
            }
            get contentLength() {
                return this._stream._contentLength
            }
            async read() {
                if (this._queuedChunks.length > 0) {
                    return {
                        value: this._queuedChunks.shift(),
                        done: !1
                    }
                }
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                const e = (0,
                n.createPromiseCapability)();
                this._requests.push(e);
                return e.promise
            }
            cancel(e) {
                this._done = !0;
                this._requests.forEach((function(e) {
                    e.resolve({
                        value: void 0,
                        done: !0
                    })
                }
                ));
                this._requests = []
            }
            progressiveDone() {
                this._done || (this._done = !0)
            }
        }
        class PDFDataTransportStreamRangeReader {
            constructor(e, t, r) {
                this._stream = e;
                this._begin = t;
                this._end = r;
                this._queuedChunk = null;
                this._requests = [];
                this._done = !1;
                this.onProgress = null
            }
            _enqueue(e) {
                if (!this._done) {
                    if (0 === this._requests.length)
                        this._queuedChunk = e;
                    else {
                        this._requests.shift().resolve({
                            value: e,
                            done: !1
                        });
                        this._requests.forEach((function(e) {
                            e.resolve({
                                value: void 0,
                                done: !0
                            })
                        }
                        ));
                        this._requests = []
                    }
                    this._done = !0;
                    this._stream._removeRangeReader(this)
                }
            }
            get isStreamingSupported() {
                return !1
            }
            async read() {
                if (this._queuedChunk) {
                    const e = this._queuedChunk;
                    this._queuedChunk = null;
                    return {
                        value: e,
                        done: !1
                    }
                }
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                const e = (0,
                n.createPromiseCapability)();
                this._requests.push(e);
                return e.promise
            }
            cancel(e) {
                this._done = !0;
                this._requests.forEach((function(e) {
                    e.resolve({
                        value: void 0,
                        done: !0
                    })
                }
                ));
                this._requests = [];
                this._stream._removeRangeReader(this)
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.WebGLContext = void 0;
        var n = r(2);
        t.WebGLContext = class WebGLContext {
            constructor({enable: e=!1}) {
                this._enabled = !0 === e
            }
            get isEnabled() {
                let e = this._enabled;
                e && (e = s.tryInitGL());
                return (0,
                n.shadow)(this, "isEnabled", e)
            }
            composeSMask({layer: e, mask: t, properties: r}) {
                return s.composeSMask(e, t, r)
            }
            drawFigures({width: e, height: t, backgroundColor: r, figures: n, context: a}) {
                return s.drawFigures(e, t, r, n, a)
            }
            clear() {
                s.cleanup()
            }
        }
        ;
        var s = function WebGLUtilsClosure() {
            function loadShader(e, t, r) {
                var n = e.createShader(r);
                e.shaderSource(n, t);
                e.compileShader(n);
                if (!e.getShaderParameter(n, e.COMPILE_STATUS)) {
                    var s = e.getShaderInfoLog(n);
                    throw new Error("Error during shader compilation: " + s)
                }
                return n
            }
            function createVertexShader(e, t) {
                return loadShader(e, t, e.VERTEX_SHADER)
            }
            function createFragmentShader(e, t) {
                return loadShader(e, t, e.FRAGMENT_SHADER)
            }
            function createProgram(e, t) {
                for (var r = e.createProgram(), n = 0, s = t.length; n < s; ++n)
                    e.attachShader(r, t[n]);
                e.linkProgram(r);
                if (!e.getProgramParameter(r, e.LINK_STATUS)) {
                    var a = e.getProgramInfoLog(r);
                    throw new Error("Error during program linking: " + a)
                }
                return r
            }
            function createTexture(e, t, r) {
                e.activeTexture(r);
                var n = e.createTexture();
                e.bindTexture(e.TEXTURE_2D, n);
                e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE);
                e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE);
                e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.NEAREST);
                e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.NEAREST);
                e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t);
                return n
            }
            var e, t;
            function generateGL() {
                if (!e) {
                    t = document.createElement("canvas");
                    e = t.getContext("webgl", {
                        premultipliedalpha: !1
                    })
                }
            }
            var r = null;
            var n = null;
            return {
                tryInitGL() {
                    try {
                        generateGL();
                        return !!e
                    } catch (e) {}
                    return !1
                },
                composeSMask: function composeSMask(n, s, a) {
                    var i = n.width
                      , o = n.height;
                    r || function initSmaskGL() {
                        var n, s;
                        generateGL();
                        n = t;
                        t = null;
                        s = e;
                        e = null;
                        var a = createProgram(s, [createVertexShader(s, "  attribute vec2 a_position;                                      attribute vec2 a_texCoord;                                                                                                      uniform vec2 u_resolution;                                                                                                      varying vec2 v_texCoord;                                                                                                        void main() {                                                     vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;       gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);                                                                              v_texCoord = a_texCoord;                                      }                                                             "), createFragmentShader(s, "  precision mediump float;                                                                                                        uniform vec4 u_backdrop;                                        uniform int u_subtype;                                          uniform sampler2D u_image;                                      uniform sampler2D u_mask;                                                                                                       varying vec2 v_texCoord;                                                                                                        void main() {                                                     vec4 imageColor = texture2D(u_image, v_texCoord);               vec4 maskColor = texture2D(u_mask, v_texCoord);                 if (u_backdrop.a > 0.0) {                                         maskColor.rgb = maskColor.rgb * maskColor.a +                                   u_backdrop.rgb * (1.0 - maskColor.a);         }                                                               float lum;                                                      if (u_subtype == 0) {                                             lum = maskColor.a;                                            } else {                                                          lum = maskColor.r * 0.3 + maskColor.g * 0.59 +                        maskColor.b * 0.11;                                     }                                                               imageColor.a *= lum;                                            imageColor.rgb *= imageColor.a;                                 gl_FragColor = imageColor;                                    }                                                             ")]);
                        s.useProgram(a);
                        var i = {};
                        i.gl = s;
                        i.canvas = n;
                        i.resolutionLocation = s.getUniformLocation(a, "u_resolution");
                        i.positionLocation = s.getAttribLocation(a, "a_position");
                        i.backdropLocation = s.getUniformLocation(a, "u_backdrop");
                        i.subtypeLocation = s.getUniformLocation(a, "u_subtype");
                        var o = s.getAttribLocation(a, "a_texCoord")
                          , l = s.getUniformLocation(a, "u_image")
                          , c = s.getUniformLocation(a, "u_mask")
                          , h = s.createBuffer();
                        s.bindBuffer(s.ARRAY_BUFFER, h);
                        s.bufferData(s.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]), s.STATIC_DRAW);
                        s.enableVertexAttribArray(o);
                        s.vertexAttribPointer(o, 2, s.FLOAT, !1, 0, 0);
                        s.uniform1i(l, 0);
                        s.uniform1i(c, 1);
                        r = i
                    }();
                    var l = r
                      , c = l.canvas
                      , h = l.gl;
                    c.width = i;
                    c.height = o;
                    h.viewport(0, 0, h.drawingBufferWidth, h.drawingBufferHeight);
                    h.uniform2f(l.resolutionLocation, i, o);
                    a.backdrop ? h.uniform4f(l.resolutionLocation, a.backdrop[0], a.backdrop[1], a.backdrop[2], 1) : h.uniform4f(l.resolutionLocation, 0, 0, 0, 0);
                    h.uniform1i(l.subtypeLocation, "Luminosity" === a.subtype ? 1 : 0);
                    var d = createTexture(h, n, h.TEXTURE0)
                      , u = createTexture(h, s, h.TEXTURE1)
                      , p = h.createBuffer();
                    h.bindBuffer(h.ARRAY_BUFFER, p);
                    h.bufferData(h.ARRAY_BUFFER, new Float32Array([0, 0, i, 0, 0, o, 0, o, i, 0, i, o]), h.STATIC_DRAW);
                    h.enableVertexAttribArray(l.positionLocation);
                    h.vertexAttribPointer(l.positionLocation, 2, h.FLOAT, !1, 0, 0);
                    h.clearColor(0, 0, 0, 0);
                    h.enable(h.BLEND);
                    h.blendFunc(h.ONE, h.ONE_MINUS_SRC_ALPHA);
                    h.clear(h.COLOR_BUFFER_BIT);
                    h.drawArrays(h.TRIANGLES, 0, 6);
                    h.flush();
                    h.deleteTexture(d);
                    h.deleteTexture(u);
                    h.deleteBuffer(p);
                    return c
                },
                drawFigures: function drawFigures(r, s, a, i, o) {
                    n || function initFiguresGL() {
                        var r, s;
                        generateGL();
                        r = t;
                        t = null;
                        s = e;
                        e = null;
                        var a = createProgram(s, [createVertexShader(s, "  attribute vec2 a_position;                                      attribute vec3 a_color;                                                                                                         uniform vec2 u_resolution;                                      uniform vec2 u_scale;                                           uniform vec2 u_offset;                                                                                                          varying vec4 v_color;                                                                                                           void main() {                                                     vec2 position = (a_position + u_offset) * u_scale;              vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;         gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);                                                                              v_color = vec4(a_color / 255.0, 1.0);                         }                                                             "), createFragmentShader(s, "  precision mediump float;                                                                                                        varying vec4 v_color;                                                                                                           void main() {                                                     gl_FragColor = v_color;                                       }                                                             ")]);
                        s.useProgram(a);
                        var i = {};
                        i.gl = s;
                        i.canvas = r;
                        i.resolutionLocation = s.getUniformLocation(a, "u_resolution");
                        i.scaleLocation = s.getUniformLocation(a, "u_scale");
                        i.offsetLocation = s.getUniformLocation(a, "u_offset");
                        i.positionLocation = s.getAttribLocation(a, "a_position");
                        i.colorLocation = s.getAttribLocation(a, "a_color");
                        n = i
                    }();
                    var l = n
                      , c = l.canvas
                      , h = l.gl;
                    c.width = r;
                    c.height = s;
                    h.viewport(0, 0, h.drawingBufferWidth, h.drawingBufferHeight);
                    h.uniform2f(l.resolutionLocation, r, s);
                    var d, u, p, f = 0;
                    for (d = 0,
                    u = i.length; d < u; d++)
                        switch (i[d].type) {
                        case "lattice":
                            f += ((p = i[d].coords.length / i[d].verticesPerRow | 0) - 1) * (i[d].verticesPerRow - 1) * 6;
                            break;
                        case "triangles":
                            f += i[d].coords.length
                        }
                    var g = new Float32Array(2 * f)
                      , m = new Uint8Array(3 * f)
                      , _ = o.coords
                      , A = o.colors
                      , b = 0
                      , y = 0;
                    for (d = 0,
                    u = i.length; d < u; d++) {
                        var v = i[d]
                          , C = v.coords
                          , S = v.colors;
                        switch (v.type) {
                        case "lattice":
                            var x = v.verticesPerRow;
                            p = C.length / x | 0;
                            for (var P = 1; P < p; P++)
                                for (var k = P * x + 1, R = 1; R < x; R++,
                                k++) {
                                    g[b] = _[C[k - x - 1]];
                                    g[b + 1] = _[C[k - x - 1] + 1];
                                    g[b + 2] = _[C[k - x]];
                                    g[b + 3] = _[C[k - x] + 1];
                                    g[b + 4] = _[C[k - 1]];
                                    g[b + 5] = _[C[k - 1] + 1];
                                    m[y] = A[S[k - x - 1]];
                                    m[y + 1] = A[S[k - x - 1] + 1];
                                    m[y + 2] = A[S[k - x - 1] + 2];
                                    m[y + 3] = A[S[k - x]];
                                    m[y + 4] = A[S[k - x] + 1];
                                    m[y + 5] = A[S[k - x] + 2];
                                    m[y + 6] = A[S[k - 1]];
                                    m[y + 7] = A[S[k - 1] + 1];
                                    m[y + 8] = A[S[k - 1] + 2];
                                    g[b + 6] = g[b + 2];
                                    g[b + 7] = g[b + 3];
                                    g[b + 8] = g[b + 4];
                                    g[b + 9] = g[b + 5];
                                    g[b + 10] = _[C[k]];
                                    g[b + 11] = _[C[k] + 1];
                                    m[y + 9] = m[y + 3];
                                    m[y + 10] = m[y + 4];
                                    m[y + 11] = m[y + 5];
                                    m[y + 12] = m[y + 6];
                                    m[y + 13] = m[y + 7];
                                    m[y + 14] = m[y + 8];
                                    m[y + 15] = A[S[k]];
                                    m[y + 16] = A[S[k] + 1];
                                    m[y + 17] = A[S[k] + 2];
                                    b += 12;
                                    y += 18
                                }
                            break;
                        case "triangles":
                            for (var w = 0, T = C.length; w < T; w++) {
                                g[b] = _[C[w]];
                                g[b + 1] = _[C[w] + 1];
                                m[y] = A[S[w]];
                                m[y + 1] = A[S[w] + 1];
                                m[y + 2] = A[S[w] + 2];
                                b += 2;
                                y += 3
                            }
                        }
                    }
                    a ? h.clearColor(a[0] / 255, a[1] / 255, a[2] / 255, 1) : h.clearColor(0, 0, 0, 0);
                    h.clear(h.COLOR_BUFFER_BIT);
                    var E = h.createBuffer();
                    h.bindBuffer(h.ARRAY_BUFFER, E);
                    h.bufferData(h.ARRAY_BUFFER, g, h.STATIC_DRAW);
                    h.enableVertexAttribArray(l.positionLocation);
                    h.vertexAttribPointer(l.positionLocation, 2, h.FLOAT, !1, 0, 0);
                    var F = h.createBuffer();
                    h.bindBuffer(h.ARRAY_BUFFER, F);
                    h.bufferData(h.ARRAY_BUFFER, m, h.STATIC_DRAW);
                    h.enableVertexAttribArray(l.colorLocation);
                    h.vertexAttribPointer(l.colorLocation, 3, h.UNSIGNED_BYTE, !1, 0, 0);
                    h.uniform2f(l.scaleLocation, o.scaleX, o.scaleY);
                    h.uniform2f(l.offsetLocation, o.offsetX, o.offsetY);
                    h.drawArrays(h.TRIANGLES, 0, f);
                    h.flush();
                    h.deleteBuffer(E);
                    h.deleteBuffer(F);
                    return c
                },
                cleanup() {
                    if (r && r.canvas) {
                        r.canvas.width = 0;
                        r.canvas.height = 0
                    }
                    if (n && n.canvas) {
                        n.canvas.width = 0;
                        n.canvas.height = 0
                    }
                    r = null;
                    n = null
                }
            }
        }()
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.AnnotationLayer = void 0;
        var n = r(1)
          , s = r(2)
          , a = r(8);
        class AnnotationElementFactory {
            static create(e) {
                switch (e.data.annotationType) {
                case s.AnnotationType.LINK:
                    return new LinkAnnotationElement(e);
                case s.AnnotationType.TEXT:
                    return new TextAnnotationElement(e);
                case s.AnnotationType.WIDGET:
                    switch (e.data.fieldType) {
                    case "Tx":
                        return new TextWidgetAnnotationElement(e);
                    case "Btn":
                        return e.data.radioButton ? new RadioButtonWidgetAnnotationElement(e) : e.data.checkBox ? new CheckboxWidgetAnnotationElement(e) : new PushButtonWidgetAnnotationElement(e);
                    case "Ch":
                        return new ChoiceWidgetAnnotationElement(e)
                    }
                    return new WidgetAnnotationElement(e);
                case s.AnnotationType.POPUP:
                    return new PopupAnnotationElement(e);
                case s.AnnotationType.FREETEXT:
                    return new FreeTextAnnotationElement(e);
                case s.AnnotationType.LINE:
                    return new LineAnnotationElement(e);
                case s.AnnotationType.SQUARE:
                    return new SquareAnnotationElement(e);
                case s.AnnotationType.CIRCLE:
                    return new CircleAnnotationElement(e);
                case s.AnnotationType.POLYLINE:
                    return new PolylineAnnotationElement(e);
                case s.AnnotationType.CARET:
                    return new CaretAnnotationElement(e);
                case s.AnnotationType.INK:
                    return new InkAnnotationElement(e);
                case s.AnnotationType.POLYGON:
                    return new PolygonAnnotationElement(e);
                case s.AnnotationType.HIGHLIGHT:
                    return new HighlightAnnotationElement(e);
                case s.AnnotationType.UNDERLINE:
                    return new UnderlineAnnotationElement(e);
                case s.AnnotationType.SQUIGGLY:
                    return new SquigglyAnnotationElement(e);
                case s.AnnotationType.STRIKEOUT:
                    return new StrikeOutAnnotationElement(e);
                case s.AnnotationType.STAMP:
                    return new StampAnnotationElement(e);
                case s.AnnotationType.FILEATTACHMENT:
                    return new FileAttachmentAnnotationElement(e);
                default:
                    return new AnnotationElement(e)
                }
            }
        }
        class AnnotationElement {
            constructor(e, t=!1, r=!1) {
                this.isRenderable = t;
                this.data = e.data;
                this.layer = e.layer;
                this.page = e.page;
                this.viewport = e.viewport;
                this.linkService = e.linkService;
                this.downloadManager = e.downloadManager;
                this.imageResourcesPath = e.imageResourcesPath;
                this.renderInteractiveForms = e.renderInteractiveForms;
                this.svgFactory = e.svgFactory;
                this.annotationStorage = e.annotationStorage;
                t && (this.container = this._createContainer(r))
            }
            _createContainer(e=!1) {
                const t = this.data
                  , r = this.page
                  , n = this.viewport
                  , a = document.createElement("section");
                let i = t.rect[2] - t.rect[0]
                  , o = t.rect[3] - t.rect[1];
                a.setAttribute("data-annotation-id", t.id);
                const l = s.Util.normalizeRect([t.rect[0], r.view[3] - t.rect[1] + r.view[1], t.rect[2], r.view[3] - t.rect[3] + r.view[1]]);
                a.style.transform = `matrix(${n.transform.join(",")})`;
                a.style.transformOrigin = `-${l[0]}px -${l[1]}px`;
                if (!e && t.borderStyle.width > 0) {
                    a.style.borderWidth = t.borderStyle.width + "px";
                    if (t.borderStyle.style !== s.AnnotationBorderStyleType.UNDERLINE) {
                        i -= 2 * t.borderStyle.width;
                        o -= 2 * t.borderStyle.width
                    }
                    const e = t.borderStyle.horizontalCornerRadius
                      , r = t.borderStyle.verticalCornerRadius;
                    if (e > 0 || r > 0) {
                        const t = `${e}px / ${r}px`;
                        a.style.borderRadius = t
                    }
                    switch (t.borderStyle.style) {
                    case s.AnnotationBorderStyleType.SOLID:
                        a.style.borderStyle = "solid";
                        break;
                    case s.AnnotationBorderStyleType.DASHED:
                        a.style.borderStyle = "dashed";
                        break;
                    case s.AnnotationBorderStyleType.BEVELED:
                        (0,
                        s.warn)("Unimplemented border style: beveled");
                        break;
                    case s.AnnotationBorderStyleType.INSET:
                        (0,
                        s.warn)("Unimplemented border style: inset");
                        break;
                    case s.AnnotationBorderStyleType.UNDERLINE:
                        a.style.borderBottomStyle = "solid"
                    }
                    t.color ? a.style.borderColor = s.Util.makeCssRgb(0 | t.color[0], 0 | t.color[1], 0 | t.color[2]) : a.style.borderWidth = 0
                }
                a.style.left = l[0] + "px";
                a.style.top = l[1] + "px";
                a.style.width = i + "px";
                a.style.height = o + "px";
                return a
            }
            _createPopup(e, t, r) {
                if (!t) {
                    (t = document.createElement("div")).style.height = e.style.height;
                    t.style.width = e.style.width;
                    e.appendChild(t)
                }
                const n = new PopupElement({
                    container: e,
                    trigger: t,
                    color: r.color,
                    title: r.title,
                    modificationDate: r.modificationDate,
                    contents: r.contents,
                    hideWrapper: !0
                }).render();
                n.style.left = e.style.width;
                e.appendChild(n)
            }
            render() {
                (0,
                s.unreachable)("Abstract method `AnnotationElement.render` called")
            }
        }
        class LinkAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.url || e.data.dest || e.data.action))
            }
            render() {
                this.container.className = "linkAnnotation";
                const {data: e, linkService: t} = this
                  , r = document.createElement("a");
                e.url ? (0,
                n.addLinkAttributes)(r, {
                    url: e.url,
                    target: e.newWindow ? n.LinkTarget.BLANK : t.externalLinkTarget,
                    rel: t.externalLinkRel,
                    enabled: t.externalLinkEnabled
                }) : e.action ? this._bindNamedAction(r, e.action) : this._bindLink(r, e.dest);
                this.container.appendChild(r);
                return this.container
            }
            _bindLink(e, t) {
                e.href = this.linkService.getDestinationHash(t);
                e.onclick = ()=>{
                    t && this.linkService.navigateTo(t);
                    return !1
                }
                ;
                t && (e.className = "internalLink")
            }
            _bindNamedAction(e, t) {
                e.href = this.linkService.getAnchorUrl("");
                e.onclick = ()=>{
                    this.linkService.executeNamedAction(t);
                    return !1
                }
                ;
                e.className = "internalLink"
            }
        }
        class TextAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents))
            }
            render() {
                this.container.className = "textAnnotation";
                const e = document.createElement("img");
                e.style.height = this.container.style.height;
                e.style.width = this.container.style.width;
                e.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg";
                e.alt = "[{{type}} Annotation]";
                e.dataset.l10nId = "text_annotation_type";
                e.dataset.l10nArgs = JSON.stringify({
                    type: this.data.name
                });
                this.data.hasPopup || this._createPopup(this.container, e, this.data);
                this.container.appendChild(e);
                return this.container
            }
        }
        class WidgetAnnotationElement extends AnnotationElement {
            render() {
                return this.container
            }
        }
        class TextWidgetAnnotationElement extends WidgetAnnotationElement {
            constructor(e) {
                super(e, e.renderInteractiveForms || !e.data.hasAppearance && !!e.data.fieldValue)
            }
            render() {
                const e = ["left", "center", "right"]
                  , t = this.annotationStorage
                  , r = this.data.id;
                this.container.className = "textWidgetAnnotation";
                let n = null;
                if (this.renderInteractiveForms) {
                    const e = t.getOrCreateValue(r, this.data.fieldValue);
                    if (this.data.multiLine) {
                        n = document.createElement("textarea");
                        n.textContent = e
                    } else {
                        n = document.createElement("input");
                        n.type = "text";
                        n.setAttribute("value", e)
                    }
                    n.addEventListener("input", (function(e) {
                        t.setValue(r, e.target.value)
                    }
                    ));
                    n.disabled = this.data.readOnly;
                    n.name = this.data.fieldName;
                    null !== this.data.maxLen && (n.maxLength = this.data.maxLen);
                    if (this.data.comb) {
                        const e = (this.data.rect[2] - this.data.rect[0]) / this.data.maxLen;
                        n.classList.add("comb");
                        n.style.letterSpacing = `calc(${e}px - 1ch)`
                    }
                } else {
                    n = document.createElement("div");
                    n.textContent = this.data.fieldValue;
                    n.style.verticalAlign = "middle";
                    n.style.display = "table-cell";
                    let e = null;
                    this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName) && (e = this.page.commonObjs.get(this.data.fontRefName));
                    this._setTextStyle(n, e)
                }
                null !== this.data.textAlignment && (n.style.textAlign = e[this.data.textAlignment]);
                this.container.appendChild(n);
                return this.container
            }
            _setTextStyle(e, t) {
                const r = e.style;
                r.fontSize = this.data.fontSize + "px";
                r.direction = this.data.fontDirection < 0 ? "rtl" : "ltr";
                if (!t)
                    return;
                let n = "normal";
                t.black ? n = "900" : t.bold && (n = "bold");
                r.fontWeight = n;
                r.fontStyle = t.italic ? "italic" : "normal";
                const s = t.loadedName ? `"${t.loadedName}", ` : ""
                  , a = t.fallbackName || "Helvetica, sans-serif";
                r.fontFamily = s + a
            }
        }
        class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
            constructor(e) {
                super(e, e.renderInteractiveForms)
            }
            render() {
                const e = this.annotationStorage
                  , t = this.data
                  , r = t.id
                  , n = e.getOrCreateValue(r, t.fieldValue && "Off" !== t.fieldValue);
                this.container.className = "buttonWidgetAnnotation checkBox";
                const s = document.createElement("input");
                s.disabled = t.readOnly;
                s.type = "checkbox";
                s.name = this.data.fieldName;
                n && s.setAttribute("checked", !0);
                s.addEventListener("change", (function(t) {
                    e.setValue(r, t.target.checked)
                }
                ));
                this.container.appendChild(s);
                return this.container
            }
        }
        class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
            constructor(e) {
                super(e, e.renderInteractiveForms)
            }
            render() {
                this.container.className = "buttonWidgetAnnotation radioButton";
                const e = this.annotationStorage
                  , t = this.data
                  , r = t.id
                  , n = e.getOrCreateValue(r, t.fieldValue === t.buttonValue)
                  , s = document.createElement("input");
                s.disabled = t.readOnly;
                s.type = "radio";
                s.name = t.fieldName;
                n && s.setAttribute("checked", !0);
                s.addEventListener("change", (function(t) {
                    const n = t.target.name;
                    for (const r of document.getElementsByName(n))
                        r !== t.target && e.setValue(r.parentNode.getAttribute("data-annotation-id"), !1);
                    e.setValue(r, t.target.checked)
                }
                ));
                this.container.appendChild(s);
                return this.container
            }
        }
        class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
            render() {
                const e = super.render();
                e.className = "buttonWidgetAnnotation pushButton";
                return e
            }
        }
        class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
            constructor(e) {
                super(e, e.renderInteractiveForms)
            }
            render() {
                this.container.className = "choiceWidgetAnnotation";
                const e = this.annotationStorage
                  , t = this.data.id;
                e.getOrCreateValue(t, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);
                const r = document.createElement("select");
                r.disabled = this.data.readOnly;
                r.name = this.data.fieldName;
                if (!this.data.combo) {
                    r.size = this.data.options.length;
                    this.data.multiSelect && (r.multiple = !0)
                }
                for (const e of this.data.options) {
                    const t = document.createElement("option");
                    t.textContent = e.displayValue;
                    t.value = e.exportValue;
                    this.data.fieldValue.includes(e.exportValue) && t.setAttribute("selected", !0);
                    r.appendChild(t)
                }
                r.addEventListener("input", (function(r) {
                    const n = r.target.options
                      , s = n[n.selectedIndex].value;
                    e.setValue(t, s)
                }
                ));
                this.container.appendChild(r);
                return this.container
            }
        }
        class PopupAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !(!e.data.title && !e.data.contents))
            }
            render() {
                this.container.className = "popupAnnotation";
                if (["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"].includes(this.data.parentType))
                    return this.container;
                const e = `[data-annotation-id="${this.data.parentId}"]`
                  , t = this.layer.querySelector(e);
                if (!t)
                    return this.container;
                const r = new PopupElement({
                    container: this.container,
                    trigger: t,
                    color: this.data.color,
                    title: this.data.title,
                    modificationDate: this.data.modificationDate,
                    contents: this.data.contents
                })
                  , n = parseFloat(t.style.left)
                  , s = parseFloat(t.style.width);
                this.container.style.transformOrigin = `-${n + s}px -${t.style.top}`;
                this.container.style.left = n + s + "px";
                this.container.appendChild(r.render());
                return this.container
            }
        }
        class PopupElement {
            constructor(e) {
                this.container = e.container;
                this.trigger = e.trigger;
                this.color = e.color;
                this.title = e.title;
                this.modificationDate = e.modificationDate;
                this.contents = e.contents;
                this.hideWrapper = e.hideWrapper || !1;
                this.pinned = !1
            }
            render() {
                const e = document.createElement("div");
                e.className = "popupWrapper";
                this.hideElement = this.hideWrapper ? e : this.container;
                this.hideElement.setAttribute("hidden", !0);
                const t = document.createElement("div");
                t.className = "popup";
                const r = this.color;
                if (r) {
                    const e = .7 * (255 - r[0]) + r[0]
                      , n = .7 * (255 - r[1]) + r[1]
                      , a = .7 * (255 - r[2]) + r[2];
                    t.style.backgroundColor = s.Util.makeCssRgb(0 | e, 0 | n, 0 | a)
                }
                const a = document.createElement("h1");
                a.textContent = this.title;
                t.appendChild(a);
                const i = n.PDFDateString.toDateObject(this.modificationDate);
                if (i) {
                    const e = document.createElement("span");
                    e.textContent = "{{date}}, {{time}}";
                    e.dataset.l10nId = "annotation_date_string";
                    e.dataset.l10nArgs = JSON.stringify({
                        date: i.toLocaleDateString(),
                        time: i.toLocaleTimeString()
                    });
                    t.appendChild(e)
                }
                const o = this._formatContents(this.contents);
                t.appendChild(o);
                this.trigger.addEventListener("click", this._toggle.bind(this));
                this.trigger.addEventListener("mouseover", this._show.bind(this, !1));
                this.trigger.addEventListener("mouseout", this._hide.bind(this, !1));
                t.addEventListener("click", this._hide.bind(this, !0));
                e.appendChild(t);
                return e
            }
            _formatContents(e) {
                const t = document.createElement("p")
                  , r = e.split(/(?:\r\n?|\n)/);
                for (let e = 0, n = r.length; e < n; ++e) {
                    const s = r[e];
                    t.appendChild(document.createTextNode(s));
                    e < n - 1 && t.appendChild(document.createElement("br"))
                }
                return t
            }
            _toggle() {
                this.pinned ? this._hide(!0) : this._show(!0)
            }
            _show(e=!1) {
                e && (this.pinned = !0);
                if (this.hideElement.hasAttribute("hidden")) {
                    this.hideElement.removeAttribute("hidden");
                    this.container.style.zIndex += 1
                }
            }
            _hide(e=!0) {
                e && (this.pinned = !1);
                if (!this.hideElement.hasAttribute("hidden") && !this.pinned) {
                    this.hideElement.setAttribute("hidden", !0);
                    this.container.style.zIndex -= 1
                }
            }
        }
        class FreeTextAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "freeTextAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class LineAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "lineAnnotation";
                const e = this.data
                  , t = e.rect[2] - e.rect[0]
                  , r = e.rect[3] - e.rect[1]
                  , n = this.svgFactory.create(t, r)
                  , s = this.svgFactory.createElement("svg:line");
                s.setAttribute("x1", e.rect[2] - e.lineCoordinates[0]);
                s.setAttribute("y1", e.rect[3] - e.lineCoordinates[1]);
                s.setAttribute("x2", e.rect[2] - e.lineCoordinates[2]);
                s.setAttribute("y2", e.rect[3] - e.lineCoordinates[3]);
                s.setAttribute("stroke-width", e.borderStyle.width || 1);
                s.setAttribute("stroke", "transparent");
                n.appendChild(s);
                this.container.append(n);
                this._createPopup(this.container, s, e);
                return this.container
            }
        }
        class SquareAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "squareAnnotation";
                const e = this.data
                  , t = e.rect[2] - e.rect[0]
                  , r = e.rect[3] - e.rect[1]
                  , n = this.svgFactory.create(t, r)
                  , s = e.borderStyle.width
                  , a = this.svgFactory.createElement("svg:rect");
                a.setAttribute("x", s / 2);
                a.setAttribute("y", s / 2);
                a.setAttribute("width", t - s);
                a.setAttribute("height", r - s);
                a.setAttribute("stroke-width", s || 1);
                a.setAttribute("stroke", "transparent");
                a.setAttribute("fill", "none");
                n.appendChild(a);
                this.container.append(n);
                this._createPopup(this.container, a, e);
                return this.container
            }
        }
        class CircleAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "circleAnnotation";
                const e = this.data
                  , t = e.rect[2] - e.rect[0]
                  , r = e.rect[3] - e.rect[1]
                  , n = this.svgFactory.create(t, r)
                  , s = e.borderStyle.width
                  , a = this.svgFactory.createElement("svg:ellipse");
                a.setAttribute("cx", t / 2);
                a.setAttribute("cy", r / 2);
                a.setAttribute("rx", t / 2 - s / 2);
                a.setAttribute("ry", r / 2 - s / 2);
                a.setAttribute("stroke-width", s || 1);
                a.setAttribute("stroke", "transparent");
                a.setAttribute("fill", "none");
                n.appendChild(a);
                this.container.append(n);
                this._createPopup(this.container, a, e);
                return this.container
            }
        }
        class PolylineAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0);
                this.containerClassName = "polylineAnnotation";
                this.svgElementName = "svg:polyline"
            }
            render() {
                this.container.className = this.containerClassName;
                const e = this.data
                  , t = e.rect[2] - e.rect[0]
                  , r = e.rect[3] - e.rect[1]
                  , n = this.svgFactory.create(t, r);
                let s = [];
                for (const t of e.vertices) {
                    const r = t.x - e.rect[0]
                      , n = e.rect[3] - t.y;
                    s.push(r + "," + n)
                }
                s = s.join(" ");
                const a = this.svgFactory.createElement(this.svgElementName);
                a.setAttribute("points", s);
                a.setAttribute("stroke-width", e.borderStyle.width || 1);
                a.setAttribute("stroke", "transparent");
                a.setAttribute("fill", "none");
                n.appendChild(a);
                this.container.append(n);
                this._createPopup(this.container, a, e);
                return this.container
            }
        }
        class PolygonAnnotationElement extends PolylineAnnotationElement {
            constructor(e) {
                super(e);
                this.containerClassName = "polygonAnnotation";
                this.svgElementName = "svg:polygon"
            }
        }
        class CaretAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "caretAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class InkAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0);
                this.containerClassName = "inkAnnotation";
                this.svgElementName = "svg:polyline"
            }
            render() {
                this.container.className = this.containerClassName;
                const e = this.data
                  , t = e.rect[2] - e.rect[0]
                  , r = e.rect[3] - e.rect[1]
                  , n = this.svgFactory.create(t, r);
                for (const t of e.inkLists) {
                    let r = [];
                    for (const n of t) {
                        const t = n.x - e.rect[0]
                          , s = e.rect[3] - n.y;
                        r.push(`${t},${s}`)
                    }
                    r = r.join(" ");
                    const s = this.svgFactory.createElement(this.svgElementName);
                    s.setAttribute("points", r);
                    s.setAttribute("stroke-width", e.borderStyle.width || 1);
                    s.setAttribute("stroke", "transparent");
                    s.setAttribute("fill", "none");
                    this._createPopup(this.container, s, e);
                    n.appendChild(s)
                }
                this.container.append(n);
                return this.container
            }
        }
        class HighlightAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "highlightAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class UnderlineAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "underlineAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class SquigglyAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "squigglyAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class StrikeOutAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "strikeoutAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class StampAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !!(e.data.hasPopup || e.data.title || e.data.contents), !0)
            }
            render() {
                this.container.className = "stampAnnotation";
                this.data.hasPopup || this._createPopup(this.container, null, this.data);
                return this.container
            }
        }
        class FileAttachmentAnnotationElement extends AnnotationElement {
            constructor(e) {
                super(e, !0);
                const {filename: t, content: r} = this.data.file;
                this.filename = (0,
                n.getFilenameFromUrl)(t);
                this.content = r;
                this.linkService.eventBus && this.linkService.eventBus.dispatch("fileattachmentannotation", {
                    source: this,
                    id: (0,
                    s.stringToPDFString)(t),
                    filename: t,
                    content: r
                })
            }
            render() {
                this.container.className = "fileAttachmentAnnotation";
                const e = document.createElement("div");
                e.style.height = this.container.style.height;
                e.style.width = this.container.style.width;
                e.addEventListener("dblclick", this._download.bind(this));
                this.data.hasPopup || !this.data.title && !this.data.contents || this._createPopup(this.container, e, this.data);
                this.container.appendChild(e);
                return this.container
            }
            _download() {
                this.downloadManager ? this.downloadManager.downloadData(this.content, this.filename, "") : (0,
                s.warn)("Download cannot be started due to unavailable download manager")
            }
        }
        t.AnnotationLayer = class AnnotationLayer {
            static render(e) {
                const t = []
                  , r = [];
                for (const n of e.annotations)
                    n && (n.annotationType !== s.AnnotationType.POPUP ? t.push(n) : r.push(n));
                r.length && t.push(...r);
                for (const r of t) {
                    const t = AnnotationElementFactory.create({
                        data: r,
                        layer: e.div,
                        page: e.page,
                        viewport: e.viewport,
                        linkService: e.linkService,
                        downloadManager: e.downloadManager,
                        imageResourcesPath: e.imageResourcesPath || "",
                        renderInteractiveForms: "boolean" != typeof e.renderInteractiveForms || e.renderInteractiveForms,
                        svgFactory: new n.DOMSVGFactory,
                        annotationStorage: e.annotationStorage || new a.AnnotationStorage
                    });
                    t.isRenderable && e.div.appendChild(t.render())
                }
            }
            static update(e) {
                for (const t of e.annotations) {
                    const r = e.div.querySelector(`[data-annotation-id="${t.id}"]`);
                    r && (r.style.transform = `matrix(${e.viewport.transform.join(",")})`)
                }
                e.div.removeAttribute("hidden")
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.renderTextLayer = void 0;
        var n = r(2)
          , s = function renderTextLayerClosure() {
            var e = /\S/;
            function appendText(t, r, s) {
                var a = document.createElement("span")
                  , i = {
                    angle: 0,
                    canvasWidth: 0,
                    isWhitespace: !1,
                    originalTransform: null,
                    paddingBottom: 0,
                    paddingLeft: 0,
                    paddingRight: 0,
                    paddingTop: 0,
                    scale: 1
                };
                t._textDivs.push(a);
                if (function isAllWhitespace(t) {
                    return !e.test(t)
                }(r.str)) {
                    i.isWhitespace = !0;
                    t._textDivProperties.set(a, i);
                    return
                }
                var o = n.Util.transform(t._viewport.transform, r.transform)
                  , l = Math.atan2(o[1], o[0])
                  , c = s[r.fontName];
                c.vertical && (l += Math.PI / 2);
                var h = Math.sqrt(o[2] * o[2] + o[3] * o[3])
                  , d = h;
                c.ascent ? d = c.ascent * d : c.descent && (d = (1 + c.descent) * d);
                let u, p;
                if (0 === l) {
                    u = o[4];
                    p = o[5] - d
                } else {
                    u = o[4] + d * Math.sin(l);
                    p = o[5] - d * Math.cos(l)
                }
                a.style.left = u + "px";
                a.style.top = p + "px";
                a.style.fontSize = h + "px";
                a.style.fontFamily = c.fontFamily;
                a.textContent = r.str;
                t._fontInspectorEnabled && (a.dataset.fontName = r.fontName);
                0 !== l && (i.angle = l * (180 / Math.PI));
                let f = !1;
                if (r.str.length > 1)
                    f = !0;
                else if (r.transform[0] !== r.transform[3]) {
                    const e = Math.abs(r.transform[0])
                      , t = Math.abs(r.transform[3]);
                    e !== t && Math.max(e, t) / Math.min(e, t) > 1.5 && (f = !0)
                }
                f && (c.vertical ? i.canvasWidth = r.height * t._viewport.scale : i.canvasWidth = r.width * t._viewport.scale);
                t._textDivProperties.set(a, i);
                t._textContentStream && t._layoutText(a);
                if (t._enhanceTextSelection) {
                    var g = 1
                      , m = 0;
                    if (0 !== l) {
                        g = Math.cos(l);
                        m = Math.sin(l)
                    }
                    var _, A, b = (c.vertical ? r.height : r.width) * t._viewport.scale, y = h;
                    if (0 !== l) {
                        _ = [g, m, -m, g, u, p];
                        A = n.Util.getAxialAlignedBoundingBox([0, 0, b, y], _)
                    } else
                        A = [u, p, u + b, p + y];
                    t._bounds.push({
                        left: A[0],
                        top: A[1],
                        right: A[2],
                        bottom: A[3],
                        div: a,
                        size: [b, y],
                        m: _
                    })
                }
            }
            function render(e) {
                if (!e._canceled) {
                    var t = e._textDivs
                      , r = e._capability
                      , n = t.length;
                    if (n > 1e5) {
                        e._renderingDone = !0;
                        r.resolve()
                    } else {
                        if (!e._textContentStream)
                            for (var s = 0; s < n; s++)
                                e._layoutText(t[s]);
                        e._renderingDone = !0;
                        r.resolve()
                    }
                }
            }
            function findPositiveMin(e, t, r) {
                let n = 0;
                for (let s = 0; s < r; s++) {
                    const r = e[t++];
                    r > 0 && (n = n ? Math.min(r, n) : r)
                }
                return n
            }
            function expand(e) {
                for (var t = e._bounds, r = e._viewport, s = function expandBounds(e, t, r) {
                    var n = r.map((function(e, t) {
                        return {
                            x1: e.left,
                            y1: e.top,
                            x2: e.right,
                            y2: e.bottom,
                            index: t,
                            x1New: void 0,
                            x2New: void 0
                        }
                    }
                    ));
                    expandBoundsLTR(e, n);
                    var s = new Array(r.length);
                    n.forEach((function(e) {
                        var t = e.index;
                        s[t] = {
                            left: e.x1New,
                            top: 0,
                            right: e.x2New,
                            bottom: 0
                        }
                    }
                    ));
                    r.map((function(t, r) {
                        var a = s[r]
                          , i = n[r];
                        i.x1 = t.top;
                        i.y1 = e - a.right;
                        i.x2 = t.bottom;
                        i.y2 = e - a.left;
                        i.index = r;
                        i.x1New = void 0;
                        i.x2New = void 0
                    }
                    ));
                    expandBoundsLTR(t, n);
                    n.forEach((function(e) {
                        var t = e.index;
                        s[t].top = e.x1New;
                        s[t].bottom = e.x2New
                    }
                    ));
                    return s
                }(r.width, r.height, t), a = 0; a < s.length; a++) {
                    var i = t[a].div
                      , o = e._textDivProperties.get(i);
                    if (0 !== o.angle) {
                        var l = s[a]
                          , c = t[a]
                          , h = c.m
                          , d = h[0]
                          , u = h[1]
                          , p = [[0, 0], [0, c.size[1]], [c.size[0], 0], c.size]
                          , f = new Float64Array(64);
                        p.forEach((function(e, t) {
                            var r = n.Util.applyTransform(e, h);
                            f[t + 0] = d && (l.left - r[0]) / d;
                            f[t + 4] = u && (l.top - r[1]) / u;
                            f[t + 8] = d && (l.right - r[0]) / d;
                            f[t + 12] = u && (l.bottom - r[1]) / u;
                            f[t + 16] = u && (l.left - r[0]) / -u;
                            f[t + 20] = d && (l.top - r[1]) / d;
                            f[t + 24] = u && (l.right - r[0]) / -u;
                            f[t + 28] = d && (l.bottom - r[1]) / d;
                            f[t + 32] = d && (l.left - r[0]) / -d;
                            f[t + 36] = u && (l.top - r[1]) / -u;
                            f[t + 40] = d && (l.right - r[0]) / -d;
                            f[t + 44] = u && (l.bottom - r[1]) / -u;
                            f[t + 48] = u && (l.left - r[0]) / u;
                            f[t + 52] = d && (l.top - r[1]) / -d;
                            f[t + 56] = u && (l.right - r[0]) / u;
                            f[t + 60] = d && (l.bottom - r[1]) / -d
                        }
                        ));
                        var g = 1 + Math.min(Math.abs(d), Math.abs(u));
                        o.paddingLeft = findPositiveMin(f, 32, 16) / g;
                        o.paddingTop = findPositiveMin(f, 48, 16) / g;
                        o.paddingRight = findPositiveMin(f, 0, 16) / g;
                        o.paddingBottom = findPositiveMin(f, 16, 16) / g;
                        e._textDivProperties.set(i, o)
                    } else {
                        o.paddingLeft = t[a].left - s[a].left;
                        o.paddingTop = t[a].top - s[a].top;
                        o.paddingRight = s[a].right - t[a].right;
                        o.paddingBottom = s[a].bottom - t[a].bottom;
                        e._textDivProperties.set(i, o)
                    }
                }
            }
            function expandBoundsLTR(e, t) {
                t.sort((function(e, t) {
                    return e.x1 - t.x1 || e.index - t.index
                }
                ));
                var r = [{
                    start: -1 / 0,
                    end: 1 / 0,
                    boundary: {
                        x1: -1 / 0,
                        y1: -1 / 0,
                        x2: 0,
                        y2: 1 / 0,
                        index: -1,
                        x1New: 0,
                        x2New: 0
                    }
                }];
                t.forEach((function(e) {
                    for (var t = 0; t < r.length && r[t].end <= e.y1; )
                        t++;
                    for (var n, s, a = r.length - 1; a >= 0 && r[a].start >= e.y2; )
                        a--;
                    var i, o, l = -1 / 0;
                    for (i = t; i <= a; i++) {
                        var c;
                        (c = (s = (n = r[i]).boundary).x2 > e.x1 ? s.index > e.index ? s.x1New : e.x1 : void 0 === s.x2New ? (s.x2 + e.x1) / 2 : s.x2New) > l && (l = c)
                    }
                    e.x1New = l;
                    for (i = t; i <= a; i++)
                        void 0 === (s = (n = r[i]).boundary).x2New ? s.x2 > e.x1 ? s.index > e.index && (s.x2New = s.x2) : s.x2New = l : s.x2New > l && (s.x2New = Math.max(l, s.x2));
                    var h = []
                      , d = null;
                    for (i = t; i <= a; i++) {
                        var u = (s = (n = r[i]).boundary).x2 > e.x2 ? s : e;
                        if (d === u)
                            h[h.length - 1].end = n.end;
                        else {
                            h.push({
                                start: n.start,
                                end: n.end,
                                boundary: u
                            });
                            d = u
                        }
                    }
                    if (r[t].start < e.y1) {
                        h[0].start = e.y1;
                        h.unshift({
                            start: r[t].start,
                            end: e.y1,
                            boundary: r[t].boundary
                        })
                    }
                    if (e.y2 < r[a].end) {
                        h[h.length - 1].end = e.y2;
                        h.push({
                            start: e.y2,
                            end: r[a].end,
                            boundary: r[a].boundary
                        })
                    }
                    for (i = t; i <= a; i++)
                        if (void 0 === (s = (n = r[i]).boundary).x2New) {
                            var p = !1;
                            for (o = t - 1; !p && o >= 0 && r[o].start >= s.y1; o--)
                                p = r[o].boundary === s;
                            for (o = a + 1; !p && o < r.length && r[o].end <= s.y2; o++)
                                p = r[o].boundary === s;
                            for (o = 0; !p && o < h.length; o++)
                                p = h[o].boundary === s;
                            p || (s.x2New = l)
                        }
                    Array.prototype.splice.apply(r, [t, a - t + 1].concat(h))
                }
                ));
                r.forEach((function(t) {
                    var r = t.boundary;
                    void 0 === r.x2New && (r.x2New = Math.max(e, r.x2))
                }
                ))
            }
            function TextLayerRenderTask({textContent: e, textContentStream: t, container: r, viewport: s, textDivs: a, textContentItemsStr: i, enhanceTextSelection: o}) {
                this._textContent = e;
                this._textContentStream = t;
                this._container = r;
                this._document = r.ownerDocument;
                this._viewport = s;
                this._textDivs = a || [];
                this._textContentItemsStr = i || [];
                this._enhanceTextSelection = !!o;
                this._fontInspectorEnabled = !(!globalThis.FontInspector || !globalThis.FontInspector.enabled);
                this._reader = null;
                this._layoutTextLastFontSize = null;
                this._layoutTextLastFontFamily = null;
                this._layoutTextCtx = null;
                this._textDivProperties = new WeakMap;
                this._renderingDone = !1;
                this._canceled = !1;
                this._capability = (0,
                n.createPromiseCapability)();
                this._renderTimer = null;
                this._bounds = [];
                this._capability.promise.finally(()=>{
                    if (this._layoutTextCtx) {
                        this._layoutTextCtx.canvas.width = 0;
                        this._layoutTextCtx.canvas.height = 0;
                        this._layoutTextCtx = null
                    }
                }
                ).catch(()=>{}
                )
            }
            TextLayerRenderTask.prototype = {
                get promise() {
                    return this._capability.promise
                },
                cancel: function TextLayer_cancel() {
                    this._canceled = !0;
                    if (this._reader) {
                        this._reader.cancel(new n.AbortException("TextLayer task cancelled."));
                        this._reader = null
                    }
                    if (null !== this._renderTimer) {
                        clearTimeout(this._renderTimer);
                        this._renderTimer = null
                    }
                    this._capability.reject(new Error("TextLayer task cancelled."))
                },
                _processItems(e, t) {
                    for (let r = 0, n = e.length; r < n; r++) {
                        this._textContentItemsStr.push(e[r].str);
                        appendText(this, e[r], t)
                    }
                },
                _layoutText(e) {
                    const t = this._textDivProperties.get(e);
                    if (t.isWhitespace)
                        return;
                    let r = "";
                    if (0 !== t.canvasWidth) {
                        const {fontSize: n, fontFamily: s} = e.style;
                        if (n !== this._layoutTextLastFontSize || s !== this._layoutTextLastFontFamily) {
                            this._layoutTextCtx.font = `${n} ${s}`;
                            this._layoutTextLastFontSize = n;
                            this._layoutTextLastFontFamily = s
                        }
                        const {width: a} = this._layoutTextCtx.measureText(e.textContent);
                        if (a > 0) {
                            t.scale = t.canvasWidth / a;
                            r = `scaleX(${t.scale})`
                        }
                    }
                    0 !== t.angle && (r = `rotate(${t.angle}deg) ${r}`);
                    if (r.length > 0) {
                        this._enhanceTextSelection && (t.originalTransform = r);
                        e.style.transform = r
                    }
                    this._textDivProperties.set(e, t);
                    this._container.appendChild(e)
                },
                _render: function TextLayer_render(e) {
                    const t = (0,
                    n.createPromiseCapability)();
                    let r = Object.create(null);
                    const s = this._document.createElement("canvas");
                    s.mozOpaque = !0;
                    this._layoutTextCtx = s.getContext("2d", {
                        alpha: !1
                    });
                    if (this._textContent) {
                        const e = this._textContent.items
                          , r = this._textContent.styles;
                        this._processItems(e, r);
                        t.resolve()
                    } else {
                        if (!this._textContentStream)
                            throw new Error('Neither "textContent" nor "textContentStream" parameters specified.');
                        {
                            const pump = ()=>{
                                this._reader.read().then(({value: e, done: n})=>{
                                    if (n)
                                        t.resolve();
                                    else {
                                        Object.assign(r, e.styles);
                                        this._processItems(e.items, r);
                                        pump()
                                    }
                                }
                                , t.reject)
                            }
                            ;
                            this._reader = this._textContentStream.getReader();
                            pump()
                        }
                    }
                    t.promise.then(()=>{
                        r = null;
                        e ? this._renderTimer = setTimeout(()=>{
                            render(this);
                            this._renderTimer = null
                        }
                        , e) : render(this)
                    }
                    , this._capability.reject)
                },
                expandTextDivs: function TextLayer_expandTextDivs(e) {
                    if (!this._enhanceTextSelection || !this._renderingDone)
                        return;
                    if (null !== this._bounds) {
                        expand(this);
                        this._bounds = null
                    }
                    const t = []
                      , r = [];
                    for (var n = 0, s = this._textDivs.length; n < s; n++) {
                        const s = this._textDivs[n]
                          , a = this._textDivProperties.get(s);
                        if (!a.isWhitespace)
                            if (e) {
                                t.length = 0;
                                r.length = 0;
                                a.originalTransform && t.push(a.originalTransform);
                                if (a.paddingTop > 0) {
                                    r.push(a.paddingTop + "px");
                                    t.push(`translateY(${-a.paddingTop}px)`)
                                } else
                                    r.push(0);
                                a.paddingRight > 0 ? r.push(a.paddingRight / a.scale + "px") : r.push(0);
                                a.paddingBottom > 0 ? r.push(a.paddingBottom + "px") : r.push(0);
                                if (a.paddingLeft > 0) {
                                    r.push(a.paddingLeft / a.scale + "px");
                                    t.push(`translateX(${-a.paddingLeft / a.scale}px)`)
                                } else
                                    r.push(0);
                                s.style.padding = r.join(" ");
                                t.length && (s.style.transform = t.join(" "))
                            } else {
                                s.style.padding = null;
                                s.style.transform = a.originalTransform
                            }
                    }
                }
            };
            return function renderTextLayer(e) {
                var t = new TextLayerRenderTask({
                    textContent: e.textContent,
                    textContentStream: e.textContentStream,
                    container: e.container,
                    viewport: e.viewport,
                    textDivs: e.textDivs,
                    textContentItemsStr: e.textContentItemsStr,
                    enhanceTextSelection: e.enhanceTextSelection
                });
                t._render(e.timeout);
                return t
            }
        }();
        t.renderTextLayer = s
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.SVGGraphics = void 0;
        var n = r(2)
          , s = r(1)
          , a = r(4);
        let SVGGraphics = function() {
            throw new Error("Not implemented: SVGGraphics")
        };
        t.SVGGraphics = SVGGraphics;
        {
            const e = {
                fontStyle: "normal",
                fontWeight: "normal",
                fillColor: "#000000"
            }
              , r = "http://www.w3.org/XML/1998/namespace"
              , i = "http://www.w3.org/1999/xlink"
              , o = ["butt", "round", "square"]
              , l = ["miter", "round", "bevel"]
              , c = function() {
                const e = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])
                  , t = new Int32Array(256);
                for (let e = 0; e < 256; e++) {
                    let r = e;
                    for (let e = 0; e < 8; e++)
                        r = 1 & r ? 3988292384 ^ r >> 1 & 2147483647 : r >> 1 & 2147483647;
                    t[e] = r
                }
                function writePngChunk(e, r, n, s) {
                    let a = s;
                    const i = r.length;
                    n[a] = i >> 24 & 255;
                    n[a + 1] = i >> 16 & 255;
                    n[a + 2] = i >> 8 & 255;
                    n[a + 3] = 255 & i;
                    a += 4;
                    n[a] = 255 & e.charCodeAt(0);
                    n[a + 1] = 255 & e.charCodeAt(1);
                    n[a + 2] = 255 & e.charCodeAt(2);
                    n[a + 3] = 255 & e.charCodeAt(3);
                    a += 4;
                    n.set(r, a);
                    a += r.length;
                    const o = function crc32(e, r, n) {
                        let s = -1;
                        for (let a = r; a < n; a++) {
                            const r = 255 & (s ^ e[a]);
                            s = s >>> 8 ^ t[r]
                        }
                        return -1 ^ s
                    }(n, s + 4, a);
                    n[a] = o >> 24 & 255;
                    n[a + 1] = o >> 16 & 255;
                    n[a + 2] = o >> 8 & 255;
                    n[a + 3] = 255 & o
                }
                function deflateSyncUncompressed(e) {
                    let t = e.length;
                    const r = Math.ceil(t / 65535)
                      , n = new Uint8Array(2 + t + 5 * r + 4);
                    let s = 0;
                    n[s++] = 120;
                    n[s++] = 156;
                    let a = 0;
                    for (; t > 65535; ) {
                        n[s++] = 0;
                        n[s++] = 255;
                        n[s++] = 255;
                        n[s++] = 0;
                        n[s++] = 0;
                        n.set(e.subarray(a, a + 65535), s);
                        s += 65535;
                        a += 65535;
                        t -= 65535
                    }
                    n[s++] = 1;
                    n[s++] = 255 & t;
                    n[s++] = t >> 8 & 255;
                    n[s++] = 255 & ~t;
                    n[s++] = (65535 & ~t) >> 8 & 255;
                    n.set(e.subarray(a), s);
                    s += e.length - a;
                    const i = function adler32(e, t, r) {
                        let n = 1
                          , s = 0;
                        for (let a = t; a < r; ++a) {
                            n = (n + (255 & e[a])) % 65521;
                            s = (s + n) % 65521
                        }
                        return s << 16 | n
                    }(e, 0, e.length);
                    n[s++] = i >> 24 & 255;
                    n[s++] = i >> 16 & 255;
                    n[s++] = i >> 8 & 255;
                    n[s++] = 255 & i;
                    return n
                }
                function encode(t, r, s, i) {
                    const o = t.width
                      , l = t.height;
                    let c, h, d;
                    const u = t.data;
                    switch (r) {
                    case n.ImageKind.GRAYSCALE_1BPP:
                        h = 0;
                        c = 1;
                        d = o + 7 >> 3;
                        break;
                    case n.ImageKind.RGB_24BPP:
                        h = 2;
                        c = 8;
                        d = 3 * o;
                        break;
                    case n.ImageKind.RGBA_32BPP:
                        h = 6;
                        c = 8;
                        d = 4 * o;
                        break;
                    default:
                        throw new Error("invalid format")
                    }
                    const p = new Uint8Array((1 + d) * l);
                    let f = 0
                      , g = 0;
                    for (let e = 0; e < l; ++e) {
                        p[f++] = 0;
                        p.set(u.subarray(g, g + d), f);
                        g += d;
                        f += d
                    }
                    if (r === n.ImageKind.GRAYSCALE_1BPP && i) {
                        f = 0;
                        for (let e = 0; e < l; e++) {
                            f++;
                            for (let e = 0; e < d; e++)
                                p[f++] ^= 255
                        }
                    }
                    const m = new Uint8Array([o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l >> 24 & 255, l >> 16 & 255, l >> 8 & 255, 255 & l, c, h, 0, 0, 0])
                      , _ = function deflateSync(e) {
                        if (!a.isNodeJS)
                            return deflateSyncUncompressed(e);
                        try {
                            let t;
                            t = parseInt(process.versions.node) >= 8 ? e : Buffer.from(e);
                            const r = require("zlib").deflateSync(t, {
                                level: 9
                            });
                            return r instanceof Uint8Array ? r : new Uint8Array(r)
                        } catch (e) {
                            (0,
                            n.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e)
                        }
                        return deflateSyncUncompressed(e)
                    }(p)
                      , A = e.length + 36 + m.length + _.length
                      , b = new Uint8Array(A);
                    let y = 0;
                    b.set(e, y);
                    y += e.length;
                    writePngChunk("IHDR", m, b, y);
                    y += 12 + m.length;
                    writePngChunk("IDATA", _, b, y);
                    y += 12 + _.length;
                    writePngChunk("IEND", new Uint8Array(0), b, y);
                    return (0,
                    n.createObjectURL)(b, "image/png", s)
                }
                return function convertImgDataToPng(e, t, r) {
                    return encode(e, void 0 === e.kind ? n.ImageKind.GRAYSCALE_1BPP : e.kind, t, r)
                }
            }();
            class SVGExtraState {
                constructor() {
                    this.fontSizeScale = 1;
                    this.fontWeight = e.fontWeight;
                    this.fontSize = 0;
                    this.textMatrix = n.IDENTITY_MATRIX;
                    this.fontMatrix = n.FONT_IDENTITY_MATRIX;
                    this.leading = 0;
                    this.textRenderingMode = n.TextRenderingMode.FILL;
                    this.textMatrixScale = 1;
                    this.x = 0;
                    this.y = 0;
                    this.lineX = 0;
                    this.lineY = 0;
                    this.charSpacing = 0;
                    this.wordSpacing = 0;
                    this.textHScale = 1;
                    this.textRise = 0;
                    this.fillColor = e.fillColor;
                    this.strokeColor = "#000000";
                    this.fillAlpha = 1;
                    this.strokeAlpha = 1;
                    this.lineWidth = 1;
                    this.lineJoin = "";
                    this.lineCap = "";
                    this.miterLimit = 0;
                    this.dashArray = [];
                    this.dashPhase = 0;
                    this.dependencies = [];
                    this.activeClipUrl = null;
                    this.clipGroup = null;
                    this.maskId = ""
                }
                clone() {
                    return Object.create(this)
                }
                setCurrentPoint(e, t) {
                    this.x = e;
                    this.y = t
                }
            }
            function pf(e) {
                if (Number.isInteger(e))
                    return e.toString();
                const t = e.toFixed(10);
                let r = t.length - 1;
                if ("0" !== t[r])
                    return t;
                do {
                    r--
                } while ("0" === t[r]);
                return t.substring(0, "." === t[r] ? r : r + 1)
            }
            function pm(e) {
                if (0 === e[4] && 0 === e[5]) {
                    if (0 === e[1] && 0 === e[2])
                        return 1 === e[0] && 1 === e[3] ? "" : `scale(${pf(e[0])} ${pf(e[3])})`;
                    if (e[0] === e[3] && e[1] === -e[2]) {
                        return `rotate(${pf(180 * Math.acos(e[0]) / Math.PI)})`
                    }
                } else if (1 === e[0] && 0 === e[1] && 0 === e[2] && 1 === e[3])
                    return `translate(${pf(e[4])} ${pf(e[5])})`;
                return `matrix(${pf(e[0])} ${pf(e[1])} ${pf(e[2])} ${pf(e[3])} ${pf(e[4])} ` + pf(e[5]) + ")"
            }
            let h = 0
              , d = 0
              , u = 0;
            t.SVGGraphics = SVGGraphics = class SVGGraphics {
                constructor(e, t, r=!1) {
                    this.svgFactory = new s.DOMSVGFactory;
                    this.current = new SVGExtraState;
                    this.transformMatrix = n.IDENTITY_MATRIX;
                    this.transformStack = [];
                    this.extraStack = [];
                    this.commonObjs = e;
                    this.objs = t;
                    this.pendingClip = null;
                    this.pendingEOFill = !1;
                    this.embedFonts = !1;
                    this.embeddedFonts = Object.create(null);
                    this.cssStyle = null;
                    this.forceDataSchema = !!r;
                    this._operatorIdMapping = [];
                    for (const e in n.OPS)
                        this._operatorIdMapping[n.OPS[e]] = e
                }
                save() {
                    this.transformStack.push(this.transformMatrix);
                    const e = this.current;
                    this.extraStack.push(e);
                    this.current = e.clone()
                }
                restore() {
                    this.transformMatrix = this.transformStack.pop();
                    this.current = this.extraStack.pop();
                    this.pendingClip = null;
                    this.tgrp = null
                }
                group(e) {
                    this.save();
                    this.executeOpTree(e);
                    this.restore()
                }
                loadDependencies(e) {
                    const t = e.fnArray
                      , r = e.argsArray;
                    for (let e = 0, s = t.length; e < s; e++)
                        if (t[e] === n.OPS.dependency)
                            for (const t of r[e]) {
                                const e = t.startsWith("g_") ? this.commonObjs : this.objs
                                  , r = new Promise(r=>{
                                    e.get(t, r)
                                }
                                );
                                this.current.dependencies.push(r)
                            }
                    return Promise.all(this.current.dependencies)
                }
                transform(e, t, r, s, a, i) {
                    const o = [e, t, r, s, a, i];
                    this.transformMatrix = n.Util.transform(this.transformMatrix, o);
                    this.tgrp = null
                }
                getSVG(e, t) {
                    this.viewport = t;
                    const r = this._initialize(t);
                    return this.loadDependencies(e).then(()=>{
                        this.transformMatrix = n.IDENTITY_MATRIX;
                        this.executeOpTree(this.convertOpList(e));
                        return r
                    }
                    )
                }
                convertOpList(e) {
                    const t = this._operatorIdMapping
                      , r = e.argsArray
                      , n = e.fnArray
                      , s = [];
                    for (let e = 0, a = n.length; e < a; e++) {
                        const a = n[e];
                        s.push({
                            fnId: a,
                            fn: t[a],
                            args: r[e]
                        })
                    }
                    return function opListToTree(e) {
                        let t = [];
                        const r = [];
                        for (const n of e)
                            if ("save" !== n.fn)
                                "restore" === n.fn ? t = r.pop() : t.push(n);
                            else {
                                t.push({
                                    fnId: 92,
                                    fn: "group",
                                    items: []
                                });
                                r.push(t);
                                t = t[t.length - 1].items
                            }
                        return t
                    }(s)
                }
                executeOpTree(e) {
                    for (const t of e) {
                        const e = t.fn
                          , r = t.fnId
                          , s = t.args;
                        switch (0 | r) {
                        case n.OPS.beginText:
                            this.beginText();
                            break;
                        case n.OPS.dependency:
                            break;
                        case n.OPS.setLeading:
                            this.setLeading(s);
                            break;
                        case n.OPS.setLeadingMoveText:
                            this.setLeadingMoveText(s[0], s[1]);
                            break;
                        case n.OPS.setFont:
                            this.setFont(s);
                            break;
                        case n.OPS.showText:
                        case n.OPS.showSpacedText:
                            this.showText(s[0]);
                            break;
                        case n.OPS.endText:
                            this.endText();
                            break;
                        case n.OPS.moveText:
                            this.moveText(s[0], s[1]);
                            break;
                        case n.OPS.setCharSpacing:
                            this.setCharSpacing(s[0]);
                            break;
                        case n.OPS.setWordSpacing:
                            this.setWordSpacing(s[0]);
                            break;
                        case n.OPS.setHScale:
                            this.setHScale(s[0]);
                            break;
                        case n.OPS.setTextMatrix:
                            this.setTextMatrix(s[0], s[1], s[2], s[3], s[4], s[5]);
                            break;
                        case n.OPS.setTextRise:
                            this.setTextRise(s[0]);
                            break;
                        case n.OPS.setTextRenderingMode:
                            this.setTextRenderingMode(s[0]);
                            break;
                        case n.OPS.setLineWidth:
                            this.setLineWidth(s[0]);
                            break;
                        case n.OPS.setLineJoin:
                            this.setLineJoin(s[0]);
                            break;
                        case n.OPS.setLineCap:
                            this.setLineCap(s[0]);
                            break;
                        case n.OPS.setMiterLimit:
                            this.setMiterLimit(s[0]);
                            break;
                        case n.OPS.setFillRGBColor:
                            this.setFillRGBColor(s[0], s[1], s[2]);
                            break;
                        case n.OPS.setStrokeRGBColor:
                            this.setStrokeRGBColor(s[0], s[1], s[2]);
                            break;
                        case n.OPS.setStrokeColorN:
                            this.setStrokeColorN(s);
                            break;
                        case n.OPS.setFillColorN:
                            this.setFillColorN(s);
                            break;
                        case n.OPS.shadingFill:
                            this.shadingFill(s[0]);
                            break;
                        case n.OPS.setDash:
                            this.setDash(s[0], s[1]);
                            break;
                        case n.OPS.setRenderingIntent:
                            this.setRenderingIntent(s[0]);
                            break;
                        case n.OPS.setFlatness:
                            this.setFlatness(s[0]);
                            break;
                        case n.OPS.setGState:
                            this.setGState(s[0]);
                            break;
                        case n.OPS.fill:
                            this.fill();
                            break;
                        case n.OPS.eoFill:
                            this.eoFill();
                            break;
                        case n.OPS.stroke:
                            this.stroke();
                            break;
                        case n.OPS.fillStroke:
                            this.fillStroke();
                            break;
                        case n.OPS.eoFillStroke:
                            this.eoFillStroke();
                            break;
                        case n.OPS.clip:
                            this.clip("nonzero");
                            break;
                        case n.OPS.eoClip:
                            this.clip("evenodd");
                            break;
                        case n.OPS.paintSolidColorImageMask:
                            this.paintSolidColorImageMask();
                            break;
                        case n.OPS.paintImageXObject:
                            this.paintImageXObject(s[0]);
                            break;
                        case n.OPS.paintInlineImageXObject:
                            this.paintInlineImageXObject(s[0]);
                            break;
                        case n.OPS.paintImageMaskXObject:
                            this.paintImageMaskXObject(s[0]);
                            break;
                        case n.OPS.paintFormXObjectBegin:
                            this.paintFormXObjectBegin(s[0], s[1]);
                            break;
                        case n.OPS.paintFormXObjectEnd:
                            this.paintFormXObjectEnd();
                            break;
                        case n.OPS.closePath:
                            this.closePath();
                            break;
                        case n.OPS.closeStroke:
                            this.closeStroke();
                            break;
                        case n.OPS.closeFillStroke:
                            this.closeFillStroke();
                            break;
                        case n.OPS.closeEOFillStroke:
                            this.closeEOFillStroke();
                            break;
                        case n.OPS.nextLine:
                            this.nextLine();
                            break;
                        case n.OPS.transform:
                            this.transform(s[0], s[1], s[2], s[3], s[4], s[5]);
                            break;
                        case n.OPS.constructPath:
                            this.constructPath(s[0], s[1]);
                            break;
                        case n.OPS.endPath:
                            this.endPath();
                            break;
                        case 92:
                            this.group(t.items);
                            break;
                        default:
                            (0,
                            n.warn)("Unimplemented operator " + e)
                        }
                    }
                }
                setWordSpacing(e) {
                    this.current.wordSpacing = e
                }
                setCharSpacing(e) {
                    this.current.charSpacing = e
                }
                nextLine() {
                    this.moveText(0, this.current.leading)
                }
                setTextMatrix(e, t, r, n, s, a) {
                    const i = this.current;
                    i.textMatrix = i.lineMatrix = [e, t, r, n, s, a];
                    i.textMatrixScale = Math.sqrt(e * e + t * t);
                    i.x = i.lineX = 0;
                    i.y = i.lineY = 0;
                    i.xcoords = [];
                    i.ycoords = [];
                    i.tspan = this.svgFactory.createElement("svg:tspan");
                    i.tspan.setAttributeNS(null, "font-family", i.fontFamily);
                    i.tspan.setAttributeNS(null, "font-size", pf(i.fontSize) + "px");
                    i.tspan.setAttributeNS(null, "y", pf(-i.y));
                    i.txtElement = this.svgFactory.createElement("svg:text");
                    i.txtElement.appendChild(i.tspan)
                }
                beginText() {
                    const e = this.current;
                    e.x = e.lineX = 0;
                    e.y = e.lineY = 0;
                    e.textMatrix = n.IDENTITY_MATRIX;
                    e.lineMatrix = n.IDENTITY_MATRIX;
                    e.textMatrixScale = 1;
                    e.tspan = this.svgFactory.createElement("svg:tspan");
                    e.txtElement = this.svgFactory.createElement("svg:text");
                    e.txtgrp = this.svgFactory.createElement("svg:g");
                    e.xcoords = [];
                    e.ycoords = []
                }
                moveText(e, t) {
                    const r = this.current;
                    r.x = r.lineX += e;
                    r.y = r.lineY += t;
                    r.xcoords = [];
                    r.ycoords = [];
                    r.tspan = this.svgFactory.createElement("svg:tspan");
                    r.tspan.setAttributeNS(null, "font-family", r.fontFamily);
                    r.tspan.setAttributeNS(null, "font-size", pf(r.fontSize) + "px");
                    r.tspan.setAttributeNS(null, "y", pf(-r.y))
                }
                showText(t) {
                    const s = this.current
                      , a = s.font
                      , i = s.fontSize;
                    if (0 === i)
                        return;
                    const o = s.fontSizeScale
                      , l = s.charSpacing
                      , c = s.wordSpacing
                      , h = s.fontDirection
                      , d = s.textHScale * h
                      , u = a.vertical
                      , p = u ? 1 : -1
                      , f = a.defaultVMetrics
                      , g = i * s.fontMatrix[0];
                    let m = 0;
                    for (const e of t) {
                        if (null === e) {
                            m += h * c;
                            continue
                        }
                        if ((0,
                        n.isNum)(e)) {
                            m += p * e * i / 1e3;
                            continue
                        }
                        const t = (e.isSpace ? c : 0) + l
                          , r = e.fontChar;
                        let d, _, A, b = e.width;
                        if (u) {
                            let t;
                            const r = e.vmetric || f;
                            t = e.vmetric ? r[1] : .5 * b;
                            t = -t * g;
                            const n = r[2] * g;
                            b = r ? -r[0] : b;
                            d = t / o;
                            _ = (m + n) / o
                        } else {
                            d = m / o;
                            _ = 0
                        }
                        if (e.isInFont || a.missingFile) {
                            s.xcoords.push(s.x + d);
                            u && s.ycoords.push(-s.y + _);
                            s.tspan.textContent += r
                        }
                        A = u ? b * g - t * h : b * g + t * h;
                        m += A
                    }
                    s.tspan.setAttributeNS(null, "x", s.xcoords.map(pf).join(" "));
                    u ? s.tspan.setAttributeNS(null, "y", s.ycoords.map(pf).join(" ")) : s.tspan.setAttributeNS(null, "y", pf(-s.y));
                    u ? s.y -= m : s.x += m * d;
                    s.tspan.setAttributeNS(null, "font-family", s.fontFamily);
                    s.tspan.setAttributeNS(null, "font-size", pf(s.fontSize) + "px");
                    s.fontStyle !== e.fontStyle && s.tspan.setAttributeNS(null, "font-style", s.fontStyle);
                    s.fontWeight !== e.fontWeight && s.tspan.setAttributeNS(null, "font-weight", s.fontWeight);
                    const _ = s.textRenderingMode & n.TextRenderingMode.FILL_STROKE_MASK;
                    if (_ === n.TextRenderingMode.FILL || _ === n.TextRenderingMode.FILL_STROKE) {
                        s.fillColor !== e.fillColor && s.tspan.setAttributeNS(null, "fill", s.fillColor);
                        s.fillAlpha < 1 && s.tspan.setAttributeNS(null, "fill-opacity", s.fillAlpha)
                    } else
                        s.textRenderingMode === n.TextRenderingMode.ADD_TO_PATH ? s.tspan.setAttributeNS(null, "fill", "transparent") : s.tspan.setAttributeNS(null, "fill", "none");
                    if (_ === n.TextRenderingMode.STROKE || _ === n.TextRenderingMode.FILL_STROKE) {
                        const e = 1 / (s.textMatrixScale || 1);
                        this._setStrokeAttributes(s.tspan, e)
                    }
                    let A = s.textMatrix;
                    if (0 !== s.textRise) {
                        A = A.slice();
                        A[5] += s.textRise
                    }
                    s.txtElement.setAttributeNS(null, "transform", `${pm(A)} scale(${pf(d)}, -1)`);
                    s.txtElement.setAttributeNS(r, "xml:space", "preserve");
                    s.txtElement.appendChild(s.tspan);
                    s.txtgrp.appendChild(s.txtElement);
                    this._ensureTransformGroup().appendChild(s.txtElement)
                }
                setLeadingMoveText(e, t) {
                    this.setLeading(-t);
                    this.moveText(e, t)
                }
                addFontStyle(e) {
                    if (!e.data)
                        throw new Error('addFontStyle: No font data available, ensure that the "fontExtraProperties" API parameter is set.');
                    if (!this.cssStyle) {
                        this.cssStyle = this.svgFactory.createElement("svg:style");
                        this.cssStyle.setAttributeNS(null, "type", "text/css");
                        this.defs.appendChild(this.cssStyle)
                    }
                    const t = (0,
                    n.createObjectURL)(e.data, e.mimetype, this.forceDataSchema);
                    this.cssStyle.textContent += `@font-face { font-family: "${e.loadedName}"; src: url(${t}); }\n`
                }
                setFont(e) {
                    const t = this.current
                      , r = this.commonObjs.get(e[0]);
                    let s = e[1];
                    t.font = r;
                    if (this.embedFonts && !r.missingFile && !this.embeddedFonts[r.loadedName]) {
                        this.addFontStyle(r);
                        this.embeddedFonts[r.loadedName] = r
                    }
                    t.fontMatrix = r.fontMatrix ? r.fontMatrix : n.FONT_IDENTITY_MATRIX;
                    let a = "normal";
                    r.black ? a = "900" : r.bold && (a = "bold");
                    const i = r.italic ? "italic" : "normal";
                    if (s < 0) {
                        s = -s;
                        t.fontDirection = -1
                    } else
                        t.fontDirection = 1;
                    t.fontSize = s;
                    t.fontFamily = r.loadedName;
                    t.fontWeight = a;
                    t.fontStyle = i;
                    t.tspan = this.svgFactory.createElement("svg:tspan");
                    t.tspan.setAttributeNS(null, "y", pf(-t.y));
                    t.xcoords = [];
                    t.ycoords = []
                }
                endText() {
                    const e = this.current;
                    if (e.textRenderingMode & n.TextRenderingMode.ADD_TO_PATH_FLAG && e.txtElement && e.txtElement.hasChildNodes()) {
                        e.element = e.txtElement;
                        this.clip("nonzero");
                        this.endPath()
                    }
                }
                setLineWidth(e) {
                    e > 0 && (this.current.lineWidth = e)
                }
                setLineCap(e) {
                    this.current.lineCap = o[e]
                }
                setLineJoin(e) {
                    this.current.lineJoin = l[e]
                }
                setMiterLimit(e) {
                    this.current.miterLimit = e
                }
                setStrokeAlpha(e) {
                    this.current.strokeAlpha = e
                }
                setStrokeRGBColor(e, t, r) {
                    this.current.strokeColor = n.Util.makeCssRgb(e, t, r)
                }
                setFillAlpha(e) {
                    this.current.fillAlpha = e
                }
                setFillRGBColor(e, t, r) {
                    this.current.fillColor = n.Util.makeCssRgb(e, t, r);
                    this.current.tspan = this.svgFactory.createElement("svg:tspan");
                    this.current.xcoords = [];
                    this.current.ycoords = []
                }
                setStrokeColorN(e) {
                    this.current.strokeColor = this._makeColorN_Pattern(e)
                }
                setFillColorN(e) {
                    this.current.fillColor = this._makeColorN_Pattern(e)
                }
                shadingFill(e) {
                    const t = this.viewport.width
                      , r = this.viewport.height
                      , s = n.Util.inverseTransform(this.transformMatrix)
                      , a = n.Util.applyTransform([0, 0], s)
                      , i = n.Util.applyTransform([0, r], s)
                      , o = n.Util.applyTransform([t, 0], s)
                      , l = n.Util.applyTransform([t, r], s)
                      , c = Math.min(a[0], i[0], o[0], l[0])
                      , h = Math.min(a[1], i[1], o[1], l[1])
                      , d = Math.max(a[0], i[0], o[0], l[0])
                      , u = Math.max(a[1], i[1], o[1], l[1])
                      , p = this.svgFactory.createElement("svg:rect");
                    p.setAttributeNS(null, "x", c);
                    p.setAttributeNS(null, "y", h);
                    p.setAttributeNS(null, "width", d - c);
                    p.setAttributeNS(null, "height", u - h);
                    p.setAttributeNS(null, "fill", this._makeShadingPattern(e));
                    this.current.fillAlpha < 1 && p.setAttributeNS(null, "fill-opacity", this.current.fillAlpha);
                    this._ensureTransformGroup().appendChild(p)
                }
                _makeColorN_Pattern(e) {
                    return "TilingPattern" === e[0] ? this._makeTilingPattern(e) : this._makeShadingPattern(e)
                }
                _makeTilingPattern(e) {
                    const t = e[1]
                      , r = e[2]
                      , s = e[3] || n.IDENTITY_MATRIX
                      , [a,i,o,l] = e[4]
                      , c = e[5]
                      , h = e[6]
                      , d = e[7]
                      , p = "shading" + u++
                      , [f,g] = n.Util.applyTransform([a, i], s)
                      , [m,_] = n.Util.applyTransform([o, l], s)
                      , [A,b] = n.Util.singularValueDecompose2dScale(s)
                      , y = c * A
                      , v = h * b
                      , C = this.svgFactory.createElement("svg:pattern");
                    C.setAttributeNS(null, "id", p);
                    C.setAttributeNS(null, "patternUnits", "userSpaceOnUse");
                    C.setAttributeNS(null, "width", y);
                    C.setAttributeNS(null, "height", v);
                    C.setAttributeNS(null, "x", "" + f);
                    C.setAttributeNS(null, "y", "" + g);
                    const S = this.svg
                      , x = this.transformMatrix
                      , P = this.current.fillColor
                      , k = this.current.strokeColor
                      , R = this.svgFactory.create(m - f, _ - g);
                    this.svg = R;
                    this.transformMatrix = s;
                    if (2 === d) {
                        const e = n.Util.makeCssRgb(...t);
                        this.current.fillColor = e;
                        this.current.strokeColor = e
                    }
                    this.executeOpTree(this.convertOpList(r));
                    this.svg = S;
                    this.transformMatrix = x;
                    this.current.fillColor = P;
                    this.current.strokeColor = k;
                    C.appendChild(R.childNodes[0]);
                    this.defs.appendChild(C);
                    return `url(#${p})`
                }
                _makeShadingPattern(e) {
                    switch (e[0]) {
                    case "RadialAxial":
                        const t = "shading" + u++
                          , r = e[3];
                        let s;
                        switch (e[1]) {
                        case "axial":
                            const r = e[4]
                              , n = e[5];
                            s = this.svgFactory.createElement("svg:linearGradient");
                            s.setAttributeNS(null, "id", t);
                            s.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
                            s.setAttributeNS(null, "x1", r[0]);
                            s.setAttributeNS(null, "y1", r[1]);
                            s.setAttributeNS(null, "x2", n[0]);
                            s.setAttributeNS(null, "y2", n[1]);
                            break;
                        case "radial":
                            const a = e[4]
                              , i = e[5]
                              , o = e[6]
                              , l = e[7];
                            s = this.svgFactory.createElement("svg:radialGradient");
                            s.setAttributeNS(null, "id", t);
                            s.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
                            s.setAttributeNS(null, "cx", i[0]);
                            s.setAttributeNS(null, "cy", i[1]);
                            s.setAttributeNS(null, "r", l);
                            s.setAttributeNS(null, "fx", a[0]);
                            s.setAttributeNS(null, "fy", a[1]);
                            s.setAttributeNS(null, "fr", o);
                            break;
                        default:
                            throw new Error("Unknown RadialAxial type: " + e[1])
                        }
                        for (const e of r) {
                            const t = this.svgFactory.createElement("svg:stop");
                            t.setAttributeNS(null, "offset", e[0]);
                            t.setAttributeNS(null, "stop-color", e[1]);
                            s.appendChild(t)
                        }
                        this.defs.appendChild(s);
                        return `url(#${t})`;
                    case "Mesh":
                        (0,
                        n.warn)("Unimplemented pattern Mesh");
                        return null;
                    case "Dummy":
                        return "hotpink";
                    default:
                        throw new Error("Unknown IR type: " + e[0])
                    }
                }
                setDash(e, t) {
                    this.current.dashArray = e;
                    this.current.dashPhase = t
                }
                constructPath(e, t) {
                    const r = this.current;
                    let s = r.x
                      , a = r.y
                      , i = []
                      , o = 0;
                    for (const r of e)
                        switch (0 | r) {
                        case n.OPS.rectangle:
                            s = t[o++];
                            a = t[o++];
                            const e = s + t[o++]
                              , r = a + t[o++];
                            i.push("M", pf(s), pf(a), "L", pf(e), pf(a), "L", pf(e), pf(r), "L", pf(s), pf(r), "Z");
                            break;
                        case n.OPS.moveTo:
                            s = t[o++];
                            a = t[o++];
                            i.push("M", pf(s), pf(a));
                            break;
                        case n.OPS.lineTo:
                            s = t[o++];
                            a = t[o++];
                            i.push("L", pf(s), pf(a));
                            break;
                        case n.OPS.curveTo:
                            s = t[o + 4];
                            a = t[o + 5];
                            i.push("C", pf(t[o]), pf(t[o + 1]), pf(t[o + 2]), pf(t[o + 3]), pf(s), pf(a));
                            o += 6;
                            break;
                        case n.OPS.curveTo2:
                            i.push("C", pf(s), pf(a), pf(t[o]), pf(t[o + 1]), pf(t[o + 2]), pf(t[o + 3]));
                            s = t[o + 2];
                            a = t[o + 3];
                            o += 4;
                            break;
                        case n.OPS.curveTo3:
                            s = t[o + 2];
                            a = t[o + 3];
                            i.push("C", pf(t[o]), pf(t[o + 1]), pf(s), pf(a), pf(s), pf(a));
                            o += 4;
                            break;
                        case n.OPS.closePath:
                            i.push("Z")
                        }
                    i = i.join(" ");
                    if (r.path && e.length > 0 && e[0] !== n.OPS.rectangle && e[0] !== n.OPS.moveTo)
                        i = r.path.getAttributeNS(null, "d") + i;
                    else {
                        r.path = this.svgFactory.createElement("svg:path");
                        this._ensureTransformGroup().appendChild(r.path)
                    }
                    r.path.setAttributeNS(null, "d", i);
                    r.path.setAttributeNS(null, "fill", "none");
                    r.element = r.path;
                    r.setCurrentPoint(s, a)
                }
                endPath() {
                    const e = this.current;
                    e.path = null;
                    if (!this.pendingClip)
                        return;
                    if (!e.element) {
                        this.pendingClip = null;
                        return
                    }
                    const t = "clippath" + h++
                      , r = this.svgFactory.createElement("svg:clipPath");
                    r.setAttributeNS(null, "id", t);
                    r.setAttributeNS(null, "transform", pm(this.transformMatrix));
                    const n = e.element.cloneNode(!0);
                    "evenodd" === this.pendingClip ? n.setAttributeNS(null, "clip-rule", "evenodd") : n.setAttributeNS(null, "clip-rule", "nonzero");
                    this.pendingClip = null;
                    r.appendChild(n);
                    this.defs.appendChild(r);
                    if (e.activeClipUrl) {
                        e.clipGroup = null;
                        this.extraStack.forEach((function(e) {
                            e.clipGroup = null
                        }
                        ));
                        r.setAttributeNS(null, "clip-path", e.activeClipUrl)
                    }
                    e.activeClipUrl = `url(#${t})`;
                    this.tgrp = null
                }
                clip(e) {
                    this.pendingClip = e
                }
                closePath() {
                    const e = this.current;
                    if (e.path) {
                        const t = e.path.getAttributeNS(null, "d") + "Z";
                        e.path.setAttributeNS(null, "d", t)
                    }
                }
                setLeading(e) {
                    this.current.leading = -e
                }
                setTextRise(e) {
                    this.current.textRise = e
                }
                setTextRenderingMode(e) {
                    this.current.textRenderingMode = e
                }
                setHScale(e) {
                    this.current.textHScale = e / 100
                }
                setRenderingIntent(e) {}
                setFlatness(e) {}
                setGState(e) {
                    for (const [t,r] of e)
                        switch (t) {
                        case "LW":
                            this.setLineWidth(r);
                            break;
                        case "LC":
                            this.setLineCap(r);
                            break;
                        case "LJ":
                            this.setLineJoin(r);
                            break;
                        case "ML":
                            this.setMiterLimit(r);
                            break;
                        case "D":
                            this.setDash(r[0], r[1]);
                            break;
                        case "RI":
                            this.setRenderingIntent(r);
                            break;
                        case "FL":
                            this.setFlatness(r);
                            break;
                        case "Font":
                            this.setFont(r);
                            break;
                        case "CA":
                            this.setStrokeAlpha(r);
                            break;
                        case "ca":
                            this.setFillAlpha(r);
                            break;
                        default:
                            (0,
                            n.warn)("Unimplemented graphic state operator " + t)
                        }
                }
                fill() {
                    const e = this.current;
                    if (e.element) {
                        e.element.setAttributeNS(null, "fill", e.fillColor);
                        e.element.setAttributeNS(null, "fill-opacity", e.fillAlpha);
                        this.endPath()
                    }
                }
                stroke() {
                    const e = this.current;
                    if (e.element) {
                        this._setStrokeAttributes(e.element);
                        e.element.setAttributeNS(null, "fill", "none");
                        this.endPath()
                    }
                }
                _setStrokeAttributes(e, t=1) {
                    const r = this.current;
                    let n = r.dashArray;
                    1 !== t && n.length > 0 && (n = n.map((function(e) {
                        return t * e
                    }
                    )));
                    e.setAttributeNS(null, "stroke", r.strokeColor);
                    e.setAttributeNS(null, "stroke-opacity", r.strokeAlpha);
                    e.setAttributeNS(null, "stroke-miterlimit", pf(r.miterLimit));
                    e.setAttributeNS(null, "stroke-linecap", r.lineCap);
                    e.setAttributeNS(null, "stroke-linejoin", r.lineJoin);
                    e.setAttributeNS(null, "stroke-width", pf(t * r.lineWidth) + "px");
                    e.setAttributeNS(null, "stroke-dasharray", n.map(pf).join(" "));
                    e.setAttributeNS(null, "stroke-dashoffset", pf(t * r.dashPhase) + "px")
                }
                eoFill() {
                    this.current.element && this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
                    this.fill()
                }
                fillStroke() {
                    this.stroke();
                    this.fill()
                }
                eoFillStroke() {
                    this.current.element && this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
                    this.fillStroke()
                }
                closeStroke() {
                    this.closePath();
                    this.stroke()
                }
                closeFillStroke() {
                    this.closePath();
                    this.fillStroke()
                }
                closeEOFillStroke() {
                    this.closePath();
                    this.eoFillStroke()
                }
                paintSolidColorImageMask() {
                    const e = this.svgFactory.createElement("svg:rect");
                    e.setAttributeNS(null, "x", "0");
                    e.setAttributeNS(null, "y", "0");
                    e.setAttributeNS(null, "width", "1px");
                    e.setAttributeNS(null, "height", "1px");
                    e.setAttributeNS(null, "fill", this.current.fillColor);
                    this._ensureTransformGroup().appendChild(e)
                }
                paintImageXObject(e) {
                    const t = e.startsWith("g_") ? this.commonObjs.get(e) : this.objs.get(e);
                    t ? this.paintInlineImageXObject(t) : (0,
                    n.warn)(`Dependent image with object ID ${e} is not ready yet`)
                }
                paintInlineImageXObject(e, t) {
                    const r = e.width
                      , n = e.height
                      , s = c(e, this.forceDataSchema, !!t)
                      , a = this.svgFactory.createElement("svg:rect");
                    a.setAttributeNS(null, "x", "0");
                    a.setAttributeNS(null, "y", "0");
                    a.setAttributeNS(null, "width", pf(r));
                    a.setAttributeNS(null, "height", pf(n));
                    this.current.element = a;
                    this.clip("nonzero");
                    const o = this.svgFactory.createElement("svg:image");
                    o.setAttributeNS(i, "xlink:href", s);
                    o.setAttributeNS(null, "x", "0");
                    o.setAttributeNS(null, "y", pf(-n));
                    o.setAttributeNS(null, "width", pf(r) + "px");
                    o.setAttributeNS(null, "height", pf(n) + "px");
                    o.setAttributeNS(null, "transform", `scale(${pf(1 / r)} ${pf(-1 / n)})`);
                    t ? t.appendChild(o) : this._ensureTransformGroup().appendChild(o)
                }
                paintImageMaskXObject(e) {
                    const t = this.current
                      , r = e.width
                      , n = e.height
                      , s = t.fillColor;
                    t.maskId = "mask" + d++;
                    const a = this.svgFactory.createElement("svg:mask");
                    a.setAttributeNS(null, "id", t.maskId);
                    const i = this.svgFactory.createElement("svg:rect");
                    i.setAttributeNS(null, "x", "0");
                    i.setAttributeNS(null, "y", "0");
                    i.setAttributeNS(null, "width", pf(r));
                    i.setAttributeNS(null, "height", pf(n));
                    i.setAttributeNS(null, "fill", s);
                    i.setAttributeNS(null, "mask", `url(#${t.maskId})`);
                    this.defs.appendChild(a);
                    this._ensureTransformGroup().appendChild(i);
                    this.paintInlineImageXObject(e, a)
                }
                paintFormXObjectBegin(e, t) {
                    Array.isArray(e) && 6 === e.length && this.transform(e[0], e[1], e[2], e[3], e[4], e[5]);
                    if (t) {
                        const e = t[2] - t[0]
                          , r = t[3] - t[1]
                          , n = this.svgFactory.createElement("svg:rect");
                        n.setAttributeNS(null, "x", t[0]);
                        n.setAttributeNS(null, "y", t[1]);
                        n.setAttributeNS(null, "width", pf(e));
                        n.setAttributeNS(null, "height", pf(r));
                        this.current.element = n;
                        this.clip("nonzero");
                        this.endPath()
                    }
                }
                paintFormXObjectEnd() {}
                _initialize(e) {
                    const t = this.svgFactory.create(e.width, e.height)
                      , r = this.svgFactory.createElement("svg:defs");
                    t.appendChild(r);
                    this.defs = r;
                    const n = this.svgFactory.createElement("svg:g");
                    n.setAttributeNS(null, "transform", pm(e.transform));
                    t.appendChild(n);
                    this.svg = n;
                    return t
                }
                _ensureClipGroup() {
                    if (!this.current.clipGroup) {
                        const e = this.svgFactory.createElement("svg:g");
                        e.setAttributeNS(null, "clip-path", this.current.activeClipUrl);
                        this.svg.appendChild(e);
                        this.current.clipGroup = e
                    }
                    return this.current.clipGroup
                }
                _ensureTransformGroup() {
                    if (!this.tgrp) {
                        this.tgrp = this.svgFactory.createElement("svg:g");
                        this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix));
                        this.current.activeClipUrl ? this._ensureClipGroup().appendChild(this.tgrp) : this.svg.appendChild(this.tgrp)
                    }
                    return this.tgrp
                }
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.PDFNodeStream = void 0;
        var n = r(2)
          , s = r(23);
        const a = require("fs")
          , i = require("http")
          , o = require("https")
          , l = require("url")
          , c = /^file:\/\/\/[a-zA-Z]:\//;
        t.PDFNodeStream = class PDFNodeStream {
            constructor(e) {
                this.source = e;
                this.url = function parseUrl(e) {
                    const t = l.parse(e);
                    if ("file:" === t.protocol || t.host)
                        return t;
                    if (/^[a-z]:[/\\]/i.test(e))
                        return l.parse("file:///" + e);
                    t.host || (t.protocol = "file:");
                    return t
                }(e.url);
                this.isHttp = "http:" === this.url.protocol || "https:" === this.url.protocol;
                this.isFsUrl = "file:" === this.url.protocol;
                this.httpHeaders = this.isHttp && e.httpHeaders || {};
                this._fullRequestReader = null;
                this._rangeRequestReaders = []
            }
            get _progressiveDataLength() {
                return this._fullRequestReader ? this._fullRequestReader._loaded : 0
            }
            getFullReader() {
                (0,
                n.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once.");
                this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
                return this._fullRequestReader
            }
            getRangeReader(e, t) {
                if (t <= this._progressiveDataLength)
                    return null;
                const r = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this,e,t) : new PDFNodeStreamRangeReader(this,e,t);
                this._rangeRequestReaders.push(r);
                return r
            }
            cancelAllRequests(e) {
                this._fullRequestReader && this._fullRequestReader.cancel(e);
                this._rangeRequestReaders.slice(0).forEach((function(t) {
                    t.cancel(e)
                }
                ))
            }
        }
        ;
        class BaseFullReader {
            constructor(e) {
                this._url = e.url;
                this._done = !1;
                this._storedError = null;
                this.onProgress = null;
                const t = e.source;
                this._contentLength = t.length;
                this._loaded = 0;
                this._filename = null;
                this._disableRange = t.disableRange || !1;
                this._rangeChunkSize = t.rangeChunkSize;
                this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
                this._isStreamingSupported = !t.disableStream;
                this._isRangeSupported = !t.disableRange;
                this._readableStream = null;
                this._readCapability = (0,
                n.createPromiseCapability)();
                this._headersCapability = (0,
                n.createPromiseCapability)()
            }
            get headersReady() {
                return this._headersCapability.promise
            }
            get filename() {
                return this._filename
            }
            get contentLength() {
                return this._contentLength
            }
            get isRangeSupported() {
                return this._isRangeSupported
            }
            get isStreamingSupported() {
                return this._isStreamingSupported
            }
            async read() {
                await this._readCapability.promise;
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                if (this._storedError)
                    throw this._storedError;
                const e = this._readableStream.read();
                if (null === e) {
                    this._readCapability = (0,
                    n.createPromiseCapability)();
                    return this.read()
                }
                this._loaded += e.length;
                this.onProgress && this.onProgress({
                    loaded: this._loaded,
                    total: this._contentLength
                });
                return {
                    value: new Uint8Array(e).buffer,
                    done: !1
                }
            }
            cancel(e) {
                this._readableStream ? this._readableStream.destroy(e) : this._error(e)
            }
            _error(e) {
                this._storedError = e;
                this._readCapability.resolve()
            }
            _setReadableStream(e) {
                this._readableStream = e;
                e.on("readable", ()=>{
                    this._readCapability.resolve()
                }
                );
                e.on("end", ()=>{
                    e.destroy();
                    this._done = !0;
                    this._readCapability.resolve()
                }
                );
                e.on("error", e=>{
                    this._error(e)
                }
                );
                !this._isStreamingSupported && this._isRangeSupported && this._error(new n.AbortException("streaming is disabled"));
                this._storedError && this._readableStream.destroy(this._storedError)
            }
        }
        class BaseRangeReader {
            constructor(e) {
                this._url = e.url;
                this._done = !1;
                this._storedError = null;
                this.onProgress = null;
                this._loaded = 0;
                this._readableStream = null;
                this._readCapability = (0,
                n.createPromiseCapability)();
                const t = e.source;
                this._isStreamingSupported = !t.disableStream
            }
            get isStreamingSupported() {
                return this._isStreamingSupported
            }
            async read() {
                await this._readCapability.promise;
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                if (this._storedError)
                    throw this._storedError;
                const e = this._readableStream.read();
                if (null === e) {
                    this._readCapability = (0,
                    n.createPromiseCapability)();
                    return this.read()
                }
                this._loaded += e.length;
                this.onProgress && this.onProgress({
                    loaded: this._loaded
                });
                return {
                    value: new Uint8Array(e).buffer,
                    done: !1
                }
            }
            cancel(e) {
                this._readableStream ? this._readableStream.destroy(e) : this._error(e)
            }
            _error(e) {
                this._storedError = e;
                this._readCapability.resolve()
            }
            _setReadableStream(e) {
                this._readableStream = e;
                e.on("readable", ()=>{
                    this._readCapability.resolve()
                }
                );
                e.on("end", ()=>{
                    e.destroy();
                    this._done = !0;
                    this._readCapability.resolve()
                }
                );
                e.on("error", e=>{
                    this._error(e)
                }
                );
                this._storedError && this._readableStream.destroy(this._storedError)
            }
        }
        function createRequestOptions(e, t) {
            return {
                protocol: e.protocol,
                auth: e.auth,
                host: e.hostname,
                port: e.port,
                path: e.path,
                method: "GET",
                headers: t
            }
        }
        class PDFNodeStreamFullReader extends BaseFullReader {
            constructor(e) {
                super(e);
                const handleResponse = t=>{
                    if (404 === t.statusCode) {
                        const e = new n.MissingPDFException(`Missing PDF "${this._url}".`);
                        this._storedError = e;
                        this._headersCapability.reject(e);
                        return
                    }
                    this._headersCapability.resolve();
                    this._setReadableStream(t);
                    const getResponseHeader = e=>this._readableStream.headers[e.toLowerCase()]
                      , {allowRangeRequests: r, suggestedLength: a} = (0,
                    s.validateRangeRequestCapabilities)({
                        getResponseHeader: getResponseHeader,
                        isHttp: e.isHttp,
                        rangeChunkSize: this._rangeChunkSize,
                        disableRange: this._disableRange
                    });
                    this._isRangeSupported = r;
                    this._contentLength = a || this._contentLength;
                    this._filename = (0,
                    s.extractFilenameFromHeader)(getResponseHeader)
                }
                ;
                this._request = null;
                "http:" === this._url.protocol ? this._request = i.request(createRequestOptions(this._url, e.httpHeaders), handleResponse) : this._request = o.request(createRequestOptions(this._url, e.httpHeaders), handleResponse);
                this._request.on("error", e=>{
                    this._storedError = e;
                    this._headersCapability.reject(e)
                }
                );
                this._request.end()
            }
        }
        class PDFNodeStreamRangeReader extends BaseRangeReader {
            constructor(e, t, r) {
                super(e);
                this._httpHeaders = {};
                for (const t in e.httpHeaders) {
                    const r = e.httpHeaders[t];
                    void 0 !== r && (this._httpHeaders[t] = r)
                }
                this._httpHeaders.Range = `bytes=${t}-${r - 1}`;
                const handleResponse = e=>{
                    if (404 !== e.statusCode)
                        this._setReadableStream(e);
                    else {
                        const e = new n.MissingPDFException(`Missing PDF "${this._url}".`);
                        this._storedError = e
                    }
                }
                ;
                this._request = null;
                "http:" === this._url.protocol ? this._request = i.request(createRequestOptions(this._url, this._httpHeaders), handleResponse) : this._request = o.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
                this._request.on("error", e=>{
                    this._storedError = e
                }
                );
                this._request.end()
            }
        }
        class PDFNodeStreamFsFullReader extends BaseFullReader {
            constructor(e) {
                super(e);
                let t = decodeURIComponent(this._url.path);
                c.test(this._url.href) && (t = t.replace(/^\//, ""));
                a.lstat(t, (e,r)=>{
                    if (e) {
                        "ENOENT" === e.code && (e = new n.MissingPDFException(`Missing PDF "${t}".`));
                        this._storedError = e;
                        this._headersCapability.reject(e)
                    } else {
                        this._contentLength = r.size;
                        this._setReadableStream(a.createReadStream(t));
                        this._headersCapability.resolve()
                    }
                }
                )
            }
        }
        class PDFNodeStreamFsRangeReader extends BaseRangeReader {
            constructor(e, t, r) {
                super(e);
                let n = decodeURIComponent(this._url.path);
                c.test(this._url.href) && (n = n.replace(/^\//, ""));
                this._setReadableStream(a.createReadStream(n, {
                    start: t,
                    end: r - 1
                }))
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.createResponseStatusError = function createResponseStatusError(e, t) {
            if (404 === e || 0 === e && t.startsWith("file:"))
                return new n.MissingPDFException('Missing PDF "' + t + '".');
            return new n.UnexpectedResponseException("Unexpected server response (" + e + ') while retrieving PDF "' + t + '".',e)
        }
        ;
        t.extractFilenameFromHeader = function extractFilenameFromHeader(e) {
            const t = e("Content-Disposition");
            if (t) {
                let e = (0,
                s.getFilenameFromContentDispositionHeader)(t);
                if (e.includes("%"))
                    try {
                        e = decodeURIComponent(e)
                    } catch (e) {}
                if (/\.pdf$/i.test(e))
                    return e
            }
            return null
        }
        ;
        t.validateRangeRequestCapabilities = function validateRangeRequestCapabilities({getResponseHeader: e, isHttp: t, rangeChunkSize: r, disableRange: s}) {
            (0,
            n.assert)(r > 0, "Range chunk size must be larger than zero");
            const a = {
                allowRangeRequests: !1,
                suggestedLength: void 0
            }
              , i = parseInt(e("Content-Length"), 10);
            if (!Number.isInteger(i))
                return a;
            a.suggestedLength = i;
            if (i <= 2 * r)
                return a;
            if (s || !t)
                return a;
            if ("bytes" !== e("Accept-Ranges"))
                return a;
            if ("identity" !== (e("Content-Encoding") || "identity"))
                return a;
            a.allowRangeRequests = !0;
            return a
        }
        ;
        t.validateResponseStatus = function validateResponseStatus(e) {
            return 200 === e || 206 === e
        }
        ;
        var n = r(2)
          , s = r(24)
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(e) {
            let t = !0
              , r = toParamRegExp("filename\\*", "i").exec(e);
            if (r) {
                r = r[1];
                let e = rfc2616unquote(r);
                e = unescape(e);
                e = rfc5987decode(e);
                e = rfc2047decode(e);
                return fixupEncoding(e)
            }
            r = function rfc2231getparam(e) {
                const t = [];
                let r;
                const n = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
                for (; null !== (r = n.exec(e)); ) {
                    let[,e,n,s] = r;
                    e = parseInt(e, 10);
                    if (e in t) {
                        if (0 === e)
                            break
                    } else
                        t[e] = [n, s]
                }
                const s = [];
                for (let e = 0; e < t.length && e in t; ++e) {
                    let[r,n] = t[e];
                    n = rfc2616unquote(n);
                    if (r) {
                        n = unescape(n);
                        0 === e && (n = rfc5987decode(n))
                    }
                    s.push(n)
                }
                return s.join("")
            }(e);
            if (r) {
                return fixupEncoding(rfc2047decode(r))
            }
            r = toParamRegExp("filename", "i").exec(e);
            if (r) {
                r = r[1];
                let e = rfc2616unquote(r);
                e = rfc2047decode(e);
                return fixupEncoding(e)
            }
            function toParamRegExp(e, t) {
                return new RegExp("(?:^|;)\\s*" + e + '\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',t)
            }
            function textdecode(e, r) {
                if (e) {
                    if (!/^[\x00-\xFF]+$/.test(r))
                        return r;
                    try {
                        const n = new TextDecoder(e,{
                            fatal: !0
                        })
                          , s = Array.from(r, (function(e) {
                            return 255 & e.charCodeAt(0)
                        }
                        ));
                        r = n.decode(new Uint8Array(s));
                        t = !1
                    } catch (n) {
                        if (/^utf-?8$/i.test(e))
                            try {
                                r = decodeURIComponent(escape(r));
                                t = !1
                            } catch (e) {}
                    }
                }
                return r
            }
            function fixupEncoding(e) {
                if (t && /[\x80-\xff]/.test(e)) {
                    e = textdecode("utf-8", e);
                    t && (e = textdecode("iso-8859-1", e))
                }
                return e
            }
            function rfc2616unquote(e) {
                if (e.startsWith('"')) {
                    const t = e.slice(1).split('\\"');
                    for (let e = 0; e < t.length; ++e) {
                        const r = t[e].indexOf('"');
                        if (-1 !== r) {
                            t[e] = t[e].slice(0, r);
                            t.length = e + 1
                        }
                        t[e] = t[e].replace(/\\(.)/g, "$1")
                    }
                    e = t.join('"')
                }
                return e
            }
            function rfc5987decode(e) {
                const t = e.indexOf("'");
                if (-1 === t)
                    return e;
                return textdecode(e.slice(0, t), e.slice(t + 1).replace(/^[^']*'/, ""))
            }
            function rfc2047decode(e) {
                return !e.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(e) ? e : e.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, (function(e, t, r, n) {
                    if ("q" === r || "Q" === r)
                        return textdecode(t, n = (n = n.replace(/_/g, " ")).replace(/=([0-9a-fA-F]{2})/g, (function(e, t) {
                            return String.fromCharCode(parseInt(t, 16))
                        }
                        )));
                    try {
                        n = atob(n)
                    } catch (e) {}
                    return textdecode(t, n)
                }
                ))
            }
            return ""
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.PDFNetworkStream = void 0;
        var n = r(2)
          , s = r(23);
        class NetworkManager {
            constructor(e, t) {
                this.url = e;
                t = t || {};
                this.isHttp = /^https?:/i.test(e);
                this.httpHeaders = this.isHttp && t.httpHeaders || {};
                this.withCredentials = t.withCredentials || !1;
                this.getXhr = t.getXhr || function NetworkManager_getXhr() {
                    return new XMLHttpRequest
                }
                ;
                this.currXhrId = 0;
                this.pendingRequests = Object.create(null)
            }
            requestRange(e, t, r) {
                const n = {
                    begin: e,
                    end: t
                };
                for (const e in r)
                    n[e] = r[e];
                return this.request(n)
            }
            requestFull(e) {
                return this.request(e)
            }
            request(e) {
                const t = this.getXhr()
                  , r = this.currXhrId++
                  , n = this.pendingRequests[r] = {
                    xhr: t
                };
                t.open("GET", this.url);
                t.withCredentials = this.withCredentials;
                for (const e in this.httpHeaders) {
                    const r = this.httpHeaders[e];
                    void 0 !== r && t.setRequestHeader(e, r)
                }
                if (this.isHttp && "begin"in e && "end"in e) {
                    t.setRequestHeader("Range", `bytes=${e.begin}-${e.end - 1}`);
                    n.expectedStatus = 206
                } else
                    n.expectedStatus = 200;
                t.responseType = "arraybuffer";
                e.onError && (t.onerror = function(r) {
                    e.onError(t.status)
                }
                );
                t.onreadystatechange = this.onStateChange.bind(this, r);
                t.onprogress = this.onProgress.bind(this, r);
                n.onHeadersReceived = e.onHeadersReceived;
                n.onDone = e.onDone;
                n.onError = e.onError;
                n.onProgress = e.onProgress;
                t.send(null);
                return r
            }
            onProgress(e, t) {
                const r = this.pendingRequests[e];
                r && r.onProgress && r.onProgress(t)
            }
            onStateChange(e, t) {
                const r = this.pendingRequests[e];
                if (!r)
                    return;
                const s = r.xhr;
                if (s.readyState >= 2 && r.onHeadersReceived) {
                    r.onHeadersReceived();
                    delete r.onHeadersReceived
                }
                if (4 !== s.readyState)
                    return;
                if (!(e in this.pendingRequests))
                    return;
                delete this.pendingRequests[e];
                if (0 === s.status && this.isHttp) {
                    r.onError && r.onError(s.status);
                    return
                }
                const a = s.status || 200;
                if (!(200 === a && 206 === r.expectedStatus) && a !== r.expectedStatus) {
                    r.onError && r.onError(s.status);
                    return
                }
                const i = function getArrayBuffer(e) {
                    const t = e.response;
                    return "string" != typeof t ? t : (0,
                    n.stringToBytes)(t).buffer
                }(s);
                if (206 === a) {
                    const e = s.getResponseHeader("Content-Range")
                      , t = /bytes (\d+)-(\d+)\/(\d+)/.exec(e);
                    r.onDone({
                        begin: parseInt(t[1], 10),
                        chunk: i
                    })
                } else
                    i ? r.onDone({
                        begin: 0,
                        chunk: i
                    }) : r.onError && r.onError(s.status)
            }
            getRequestXhr(e) {
                return this.pendingRequests[e].xhr
            }
            isPendingRequest(e) {
                return e in this.pendingRequests
            }
            abortRequest(e) {
                const t = this.pendingRequests[e].xhr;
                delete this.pendingRequests[e];
                t.abort()
            }
        }
        t.PDFNetworkStream = class PDFNetworkStream {
            constructor(e) {
                this._source = e;
                this._manager = new NetworkManager(e.url,{
                    httpHeaders: e.httpHeaders,
                    withCredentials: e.withCredentials
                });
                this._rangeChunkSize = e.rangeChunkSize;
                this._fullRequestReader = null;
                this._rangeRequestReaders = []
            }
            _onRangeRequestReaderClosed(e) {
                const t = this._rangeRequestReaders.indexOf(e);
                t >= 0 && this._rangeRequestReaders.splice(t, 1)
            }
            getFullReader() {
                (0,
                n.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once.");
                this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager,this._source);
                return this._fullRequestReader
            }
            getRangeReader(e, t) {
                const r = new PDFNetworkStreamRangeRequestReader(this._manager,e,t);
                r.onClosed = this._onRangeRequestReaderClosed.bind(this);
                this._rangeRequestReaders.push(r);
                return r
            }
            cancelAllRequests(e) {
                this._fullRequestReader && this._fullRequestReader.cancel(e);
                this._rangeRequestReaders.slice(0).forEach((function(t) {
                    t.cancel(e)
                }
                ))
            }
        }
        ;
        class PDFNetworkStreamFullRequestReader {
            constructor(e, t) {
                this._manager = e;
                const r = {
                    onHeadersReceived: this._onHeadersReceived.bind(this),
                    onDone: this._onDone.bind(this),
                    onError: this._onError.bind(this),
                    onProgress: this._onProgress.bind(this)
                };
                this._url = t.url;
                this._fullRequestId = e.requestFull(r);
                this._headersReceivedCapability = (0,
                n.createPromiseCapability)();
                this._disableRange = t.disableRange || !1;
                this._contentLength = t.length;
                this._rangeChunkSize = t.rangeChunkSize;
                this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
                this._isStreamingSupported = !1;
                this._isRangeSupported = !1;
                this._cachedChunks = [];
                this._requests = [];
                this._done = !1;
                this._storedError = void 0;
                this._filename = null;
                this.onProgress = null
            }
            _onHeadersReceived() {
                const e = this._fullRequestId
                  , t = this._manager.getRequestXhr(e)
                  , getResponseHeader = e=>t.getResponseHeader(e)
                  , {allowRangeRequests: r, suggestedLength: n} = (0,
                s.validateRangeRequestCapabilities)({
                    getResponseHeader: getResponseHeader,
                    isHttp: this._manager.isHttp,
                    rangeChunkSize: this._rangeChunkSize,
                    disableRange: this._disableRange
                });
                r && (this._isRangeSupported = !0);
                this._contentLength = n || this._contentLength;
                this._filename = (0,
                s.extractFilenameFromHeader)(getResponseHeader);
                this._isRangeSupported && this._manager.abortRequest(e);
                this._headersReceivedCapability.resolve()
            }
            _onDone(e) {
                if (e)
                    if (this._requests.length > 0) {
                        this._requests.shift().resolve({
                            value: e.chunk,
                            done: !1
                        })
                    } else
                        this._cachedChunks.push(e.chunk);
                this._done = !0;
                if (!(this._cachedChunks.length > 0)) {
                    this._requests.forEach((function(e) {
                        e.resolve({
                            value: void 0,
                            done: !0
                        })
                    }
                    ));
                    this._requests = []
                }
            }
            _onError(e) {
                const t = this._url
                  , r = (0,
                s.createResponseStatusError)(e, t);
                this._storedError = r;
                this._headersReceivedCapability.reject(r);
                this._requests.forEach((function(e) {
                    e.reject(r)
                }
                ));
                this._requests = [];
                this._cachedChunks = []
            }
            _onProgress(e) {
                this.onProgress && this.onProgress({
                    loaded: e.loaded,
                    total: e.lengthComputable ? e.total : this._contentLength
                })
            }
            get filename() {
                return this._filename
            }
            get isRangeSupported() {
                return this._isRangeSupported
            }
            get isStreamingSupported() {
                return this._isStreamingSupported
            }
            get contentLength() {
                return this._contentLength
            }
            get headersReady() {
                return this._headersReceivedCapability.promise
            }
            async read() {
                if (this._storedError)
                    throw this._storedError;
                if (this._cachedChunks.length > 0) {
                    return {
                        value: this._cachedChunks.shift(),
                        done: !1
                    }
                }
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                const e = (0,
                n.createPromiseCapability)();
                this._requests.push(e);
                return e.promise
            }
            cancel(e) {
                this._done = !0;
                this._headersReceivedCapability.reject(e);
                this._requests.forEach((function(e) {
                    e.resolve({
                        value: void 0,
                        done: !0
                    })
                }
                ));
                this._requests = [];
                this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);
                this._fullRequestReader = null
            }
        }
        class PDFNetworkStreamRangeRequestReader {
            constructor(e, t, r) {
                this._manager = e;
                const n = {
                    onDone: this._onDone.bind(this),
                    onProgress: this._onProgress.bind(this)
                };
                this._requestId = e.requestRange(t, r, n);
                this._requests = [];
                this._queuedChunk = null;
                this._done = !1;
                this.onProgress = null;
                this.onClosed = null
            }
            _close() {
                this.onClosed && this.onClosed(this)
            }
            _onDone(e) {
                const t = e.chunk;
                if (this._requests.length > 0) {
                    this._requests.shift().resolve({
                        value: t,
                        done: !1
                    })
                } else
                    this._queuedChunk = t;
                this._done = !0;
                this._requests.forEach((function(e) {
                    e.resolve({
                        value: void 0,
                        done: !0
                    })
                }
                ));
                this._requests = [];
                this._close()
            }
            _onProgress(e) {
                !this.isStreamingSupported && this.onProgress && this.onProgress({
                    loaded: e.loaded
                })
            }
            get isStreamingSupported() {
                return !1
            }
            async read() {
                if (null !== this._queuedChunk) {
                    const e = this._queuedChunk;
                    this._queuedChunk = null;
                    return {
                        value: e,
                        done: !1
                    }
                }
                if (this._done)
                    return {
                        value: void 0,
                        done: !0
                    };
                const e = (0,
                n.createPromiseCapability)();
                this._requests.push(e);
                return e.promise
            }
            cancel(e) {
                this._done = !0;
                this._requests.forEach((function(e) {
                    e.resolve({
                        value: void 0,
                        done: !0
                    })
                }
                ));
                this._requests = [];
                this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);
                this._close()
            }
        }
    }
    , function(e, t, r) {
        "use strict";
        Object.defineProperty(t, "__esModule", {
            value: !0
        });
        t.PDFFetchStream = void 0;
        var n = r(2)
          , s = r(23);
        function createFetchOptions(e, t, r) {
            return {
                method: "GET",
                headers: e,
                signal: r && r.signal,
                mode: "cors",
                credentials: t ? "include" : "same-origin",
                redirect: "follow"
            }
        }
        function createHeaders(e) {
            const t = new Headers;
            for (const r in e) {
                const n = e[r];
                void 0 !== n && t.append(r, n)
            }
            return t
        }
        t.PDFFetchStream = class PDFFetchStream {
            constructor(e) {
                this.source = e;
                this.isHttp = /^https?:/i.test(e.url);
                this.httpHeaders = this.isHttp && e.httpHeaders || {};
                this._fullRequestReader = null;
                this._rangeRequestReaders = []
            }
            get _progressiveDataLength() {
                return this._fullRequestReader ? this._fullRequestReader._loaded : 0
            }
            getFullReader() {
                (0,
                n.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once.");
                this._fullRequestReader = new PDFFetchStreamReader(this);
                return this._fullRequestReader
            }
            getRangeReader(e, t) {
                if (t <= this._progressiveDataLength)
                    return null;
                const r = new PDFFetchStreamRangeReader(this,e,t);
                this._rangeRequestReaders.push(r);
                return r
            }
            cancelAllRequests(e) {
                this._fullRequestReader && this._fullRequestReader.cancel(e);
                this._rangeRequestReaders.slice(0).forEach((function(t) {
                    t.cancel(e)
                }
                ))
            }
        }
        ;
        class PDFFetchStreamReader {
            constructor(e) {
                this._stream = e;
                this._reader = null;
                this._loaded = 0;
                this._filename = null;
                const t = e.source;
                this._withCredentials = t.withCredentials || !1;
                this._contentLength = t.length;
                this._headersCapability = (0,
                n.createPromiseCapability)();
                this._disableRange = t.disableRange || !1;
                this._rangeChunkSize = t.rangeChunkSize;
                this._rangeChunkSize || this._disableRange || (this._disableRange = !0);
                "undefined" != typeof AbortController && (this._abortController = new AbortController);
                this._isStreamingSupported = !t.disableStream;
                this._isRangeSupported = !t.disableRange;
                this._headers = createHeaders(this._stream.httpHeaders);
                const r = t.url;
                fetch(r, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(e=>{
                    if (!(0,
                    s.validateResponseStatus)(e.status))
                        throw (0,
                        s.createResponseStatusError)(e.status, r);
                    this._reader = e.body.getReader();
                    this._headersCapability.resolve();
                    const getResponseHeader = t=>e.headers.get(t)
                      , {allowRangeRequests: t, suggestedLength: a} = (0,
                    s.validateRangeRequestCapabilities)({
                        getResponseHeader: getResponseHeader,
                        isHttp: this._stream.isHttp,
                        rangeChunkSize: this._rangeChunkSize,
                        disableRange: this._disableRange
                    });
                    this._isRangeSupported = t;
                    this._contentLength = a || this._contentLength;
                    this._filename = (0,
                    s.extractFilenameFromHeader)(getResponseHeader);
                    !this._isStreamingSupported && this._isRangeSupported && this.cancel(new n.AbortException("Streaming is disabled."))
                }
                ).catch(this._headersCapability.reject);
                this.onProgress = null
            }
            get headersReady() {
                return this._headersCapability.promise
            }
            get filename() {
                return this._filename
            }
            get contentLength() {
                return this._contentLength
            }
            get isRangeSupported() {
                return this._isRangeSupported
            }
            get isStreamingSupported() {
                return this._isStreamingSupported
            }
            async read() {
                await this._headersCapability.promise;
                const {value: e, done: t} = await this._reader.read();
                if (t)
                    return {
                        value: e,
                        done: t
                    };
                this._loaded += e.byteLength;
                this.onProgress && this.onProgress({
                    loaded: this._loaded,
                    total: this._contentLength
                });
                return {
                    value: new Uint8Array(e).buffer,
                    done: !1
                }
            }
            cancel(e) {
                this._reader && this._reader.cancel(e);
                this._abortController && this._abortController.abort()
            }
        }
        class PDFFetchStreamRangeReader {
            constructor(e, t, r) {
                this._stream = e;
                this._reader = null;
                this._loaded = 0;
                const a = e.source;
                this._withCredentials = a.withCredentials || !1;
                this._readCapability = (0,
                n.createPromiseCapability)();
                this._isStreamingSupported = !a.disableStream;
                "undefined" != typeof AbortController && (this._abortController = new AbortController);
                this._headers = createHeaders(this._stream.httpHeaders);
                this._headers.append("Range", `bytes=${t}-${r - 1}`);
                const i = a.url;
                fetch(i, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(e=>{
                    if (!(0,
                    s.validateResponseStatus)(e.status))
                        throw (0,
                        s.createResponseStatusError)(e.status, i);
                    this._readCapability.resolve();
                    this._reader = e.body.getReader()
                }
                ).catch(e=>{
                    if (!e || "AbortError" !== e.name)
                        throw e
                }
                );
                this.onProgress = null
            }
            get isStreamingSupported() {
                return this._isStreamingSupported
            }
            async read() {
                await this._readCapability.promise;
                const {value: e, done: t} = await this._reader.read();
                if (t)
                    return {
                        value: e,
                        done: t
                    };
                this._loaded += e.byteLength;
                this.onProgress && this.onProgress({
                    loaded: this._loaded
                });
                return {
                    value: new Uint8Array(e).buffer,
                    done: !1
                }
            }
            cancel(e) {
                this._reader && this._reader.cancel(e);
                this._abortController && this._abortController.abort()
            }
        }
    }
    ])
}
));