UNPKG

732 kBJavaScriptView Raw
1/**
2 * @licstart The following is the entire license notice for the
3 * Javascript code in this page
4 *
5 * Copyright 2019 Mozilla Foundation
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 * @licend The above is the entire license notice for the
20 * Javascript code in this page
21 */
22
23(function webpackUniversalModuleDefinition(root, factory) {
24 if(typeof exports === 'object' && typeof module === 'object')
25 module.exports = factory();
26 else if(typeof define === 'function' && define.amd)
27 define("pdfjs-dist/build/pdf", [], factory);
28 else if(typeof exports === 'object')
29 exports["pdfjs-dist/build/pdf"] = factory();
30 else
31 root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
32})(this, function() {
33return /******/ (function(modules) { // webpackBootstrap
34/******/ // The module cache
35/******/ var installedModules = {};
36/******/
37/******/ // The require function
38/******/ function __w_pdfjs_require__(moduleId) {
39/******/
40/******/ // Check if module is in cache
41/******/ if(installedModules[moduleId]) {
42/******/ return installedModules[moduleId].exports;
43/******/ }
44/******/ // Create a new module (and put it into the cache)
45/******/ var module = installedModules[moduleId] = {
46/******/ i: moduleId,
47/******/ l: false,
48/******/ exports: {}
49/******/ };
50/******/
51/******/ // Execute the module function
52/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
53/******/
54/******/ // Flag the module as loaded
55/******/ module.l = true;
56/******/
57/******/ // Return the exports of the module
58/******/ return module.exports;
59/******/ }
60/******/
61/******/
62/******/ // expose the modules object (__webpack_modules__)
63/******/ __w_pdfjs_require__.m = modules;
64/******/
65/******/ // expose the module cache
66/******/ __w_pdfjs_require__.c = installedModules;
67/******/
68/******/ // define getter function for harmony exports
69/******/ __w_pdfjs_require__.d = function(exports, name, getter) {
70/******/ if(!__w_pdfjs_require__.o(exports, name)) {
71/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
72/******/ }
73/******/ };
74/******/
75/******/ // define __esModule on exports
76/******/ __w_pdfjs_require__.r = function(exports) {
77/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
78/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
79/******/ }
80/******/ Object.defineProperty(exports, '__esModule', { value: true });
81/******/ };
82/******/
83/******/ // create a fake namespace object
84/******/ // mode & 1: value is a module id, require it
85/******/ // mode & 2: merge all properties of value into the ns
86/******/ // mode & 4: return value when already ns object
87/******/ // mode & 8|1: behave like require
88/******/ __w_pdfjs_require__.t = function(value, mode) {
89/******/ if(mode & 1) value = __w_pdfjs_require__(value);
90/******/ if(mode & 8) return value;
91/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
92/******/ var ns = Object.create(null);
93/******/ __w_pdfjs_require__.r(ns);
94/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
95/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
96/******/ return ns;
97/******/ };
98/******/
99/******/ // getDefaultExport function for compatibility with non-harmony modules
100/******/ __w_pdfjs_require__.n = function(module) {
101/******/ var getter = module && module.__esModule ?
102/******/ function getDefault() { return module['default']; } :
103/******/ function getModuleExports() { return module; };
104/******/ __w_pdfjs_require__.d(getter, 'a', getter);
105/******/ return getter;
106/******/ };
107/******/
108/******/ // Object.prototype.hasOwnProperty.call
109/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
110/******/
111/******/ // __webpack_public_path__
112/******/ __w_pdfjs_require__.p = "";
113/******/
114/******/
115/******/ // Load entry module and return exports
116/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 0);
117/******/ })
118/************************************************************************/
119/******/ ([
120/* 0 */
121/***/ (function(module, exports, __w_pdfjs_require__) {
122
123"use strict";
124
125
126var pdfjsVersion = '2.2.228';
127var pdfjsBuild = 'd7afb74a';
128
129var pdfjsSharedUtil = __w_pdfjs_require__(1);
130
131var pdfjsDisplayAPI = __w_pdfjs_require__(147);
132
133var pdfjsDisplayTextLayer = __w_pdfjs_require__(162);
134
135var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(163);
136
137var pdfjsDisplayDisplayUtils = __w_pdfjs_require__(151);
138
139var pdfjsDisplaySVG = __w_pdfjs_require__(164);
140
141var pdfjsDisplayWorkerOptions = __w_pdfjs_require__(156);
142
143var pdfjsDisplayAPICompatibility = __w_pdfjs_require__(153);
144
145{
146 var isNodeJS = __w_pdfjs_require__(4);
147
148 if (isNodeJS()) {
149 var PDFNodeStream = __w_pdfjs_require__(165).PDFNodeStream;
150
151 pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
152 return new PDFNodeStream(params);
153 });
154 } else {
155 var PDFNetworkStream = __w_pdfjs_require__(168).PDFNetworkStream;
156
157 var PDFFetchStream;
158
159 if (pdfjsDisplayDisplayUtils.isFetchSupported()) {
160 PDFFetchStream = __w_pdfjs_require__(169).PDFFetchStream;
161 }
162
163 pdfjsDisplayAPI.setPDFNetworkStreamFactory(function (params) {
164 if (PDFFetchStream && pdfjsDisplayDisplayUtils.isValidFetchUrl(params.url)) {
165 return new PDFFetchStream(params);
166 }
167
168 return new PDFNetworkStream(params);
169 });
170 }
171}
172exports.build = pdfjsDisplayAPI.build;
173exports.version = pdfjsDisplayAPI.version;
174exports.getDocument = pdfjsDisplayAPI.getDocument;
175exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;
176exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
177exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
178exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
179exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
180exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;
181exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;
182exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;
183exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;
184exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;
185exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;
186exports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;
187exports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;
188exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException;
189exports.OPS = pdfjsSharedUtil.OPS;
190exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;
191exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;
192exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;
193exports.createObjectURL = pdfjsSharedUtil.createObjectURL;
194exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;
195exports.shadow = pdfjsSharedUtil.shadow;
196exports.Util = pdfjsSharedUtil.Util;
197exports.ReadableStream = pdfjsSharedUtil.ReadableStream;
198exports.URL = pdfjsSharedUtil.URL;
199exports.RenderingCancelledException = pdfjsDisplayDisplayUtils.RenderingCancelledException;
200exports.getFilenameFromUrl = pdfjsDisplayDisplayUtils.getFilenameFromUrl;
201exports.LinkTarget = pdfjsDisplayDisplayUtils.LinkTarget;
202exports.addLinkAttributes = pdfjsDisplayDisplayUtils.addLinkAttributes;
203exports.loadScript = pdfjsDisplayDisplayUtils.loadScript;
204exports.PDFDateString = pdfjsDisplayDisplayUtils.PDFDateString;
205exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;
206exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;
207
208/***/ }),
209/* 1 */
210/***/ (function(module, exports, __w_pdfjs_require__) {
211
212"use strict";
213
214
215Object.defineProperty(exports, "__esModule", {
216 value: true
217});
218exports.arrayByteLength = arrayByteLength;
219exports.arraysToBytes = arraysToBytes;
220exports.assert = assert;
221exports.bytesToString = bytesToString;
222exports.createPromiseCapability = createPromiseCapability;
223exports.getVerbosityLevel = getVerbosityLevel;
224exports.info = info;
225exports.isArrayBuffer = isArrayBuffer;
226exports.isArrayEqual = isArrayEqual;
227exports.isBool = isBool;
228exports.isEmptyObj = isEmptyObj;
229exports.isNum = isNum;
230exports.isString = isString;
231exports.isSpace = isSpace;
232exports.isSameOrigin = isSameOrigin;
233exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
234exports.isLittleEndian = isLittleEndian;
235exports.isEvalSupported = isEvalSupported;
236exports.log2 = log2;
237exports.readInt8 = readInt8;
238exports.readUint16 = readUint16;
239exports.readUint32 = readUint32;
240exports.removeNullCharacters = removeNullCharacters;
241exports.setVerbosityLevel = setVerbosityLevel;
242exports.shadow = shadow;
243exports.string32 = string32;
244exports.stringToBytes = stringToBytes;
245exports.stringToPDFString = stringToPDFString;
246exports.stringToUTF8String = stringToUTF8String;
247exports.utf8StringToString = utf8StringToString;
248exports.warn = warn;
249exports.unreachable = unreachable;
250Object.defineProperty(exports, "ReadableStream", {
251 enumerable: true,
252 get: function get() {
253 return _streams_polyfill.ReadableStream;
254 }
255});
256Object.defineProperty(exports, "URL", {
257 enumerable: true,
258 get: function get() {
259 return _url_polyfill.URL;
260 }
261});
262exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.NativeImageDecoding = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = void 0;
263
264__w_pdfjs_require__(2);
265
266var _streams_polyfill = __w_pdfjs_require__(143);
267
268var _url_polyfill = __w_pdfjs_require__(145);
269
270function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
271
272var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
273exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
274var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
275exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
276var NativeImageDecoding = {
277 NONE: 'none',
278 DECODE: 'decode',
279 DISPLAY: 'display'
280};
281exports.NativeImageDecoding = NativeImageDecoding;
282var PermissionFlag = {
283 PRINT: 0x04,
284 MODIFY_CONTENTS: 0x08,
285 COPY: 0x10,
286 MODIFY_ANNOTATIONS: 0x20,
287 FILL_INTERACTIVE_FORMS: 0x100,
288 COPY_FOR_ACCESSIBILITY: 0x200,
289 ASSEMBLE: 0x400,
290 PRINT_HIGH_QUALITY: 0x800
291};
292exports.PermissionFlag = PermissionFlag;
293var TextRenderingMode = {
294 FILL: 0,
295 STROKE: 1,
296 FILL_STROKE: 2,
297 INVISIBLE: 3,
298 FILL_ADD_TO_PATH: 4,
299 STROKE_ADD_TO_PATH: 5,
300 FILL_STROKE_ADD_TO_PATH: 6,
301 ADD_TO_PATH: 7,
302 FILL_STROKE_MASK: 3,
303 ADD_TO_PATH_FLAG: 4
304};
305exports.TextRenderingMode = TextRenderingMode;
306var ImageKind = {
307 GRAYSCALE_1BPP: 1,
308 RGB_24BPP: 2,
309 RGBA_32BPP: 3
310};
311exports.ImageKind = ImageKind;
312var AnnotationType = {
313 TEXT: 1,
314 LINK: 2,
315 FREETEXT: 3,
316 LINE: 4,
317 SQUARE: 5,
318 CIRCLE: 6,
319 POLYGON: 7,
320 POLYLINE: 8,
321 HIGHLIGHT: 9,
322 UNDERLINE: 10,
323 SQUIGGLY: 11,
324 STRIKEOUT: 12,
325 STAMP: 13,
326 CARET: 14,
327 INK: 15,
328 POPUP: 16,
329 FILEATTACHMENT: 17,
330 SOUND: 18,
331 MOVIE: 19,
332 WIDGET: 20,
333 SCREEN: 21,
334 PRINTERMARK: 22,
335 TRAPNET: 23,
336 WATERMARK: 24,
337 THREED: 25,
338 REDACT: 26
339};
340exports.AnnotationType = AnnotationType;
341var AnnotationFlag = {
342 INVISIBLE: 0x01,
343 HIDDEN: 0x02,
344 PRINT: 0x04,
345 NOZOOM: 0x08,
346 NOROTATE: 0x10,
347 NOVIEW: 0x20,
348 READONLY: 0x40,
349 LOCKED: 0x80,
350 TOGGLENOVIEW: 0x100,
351 LOCKEDCONTENTS: 0x200
352};
353exports.AnnotationFlag = AnnotationFlag;
354var AnnotationFieldFlag = {
355 READONLY: 0x0000001,
356 REQUIRED: 0x0000002,
357 NOEXPORT: 0x0000004,
358 MULTILINE: 0x0001000,
359 PASSWORD: 0x0002000,
360 NOTOGGLETOOFF: 0x0004000,
361 RADIO: 0x0008000,
362 PUSHBUTTON: 0x0010000,
363 COMBO: 0x0020000,
364 EDIT: 0x0040000,
365 SORT: 0x0080000,
366 FILESELECT: 0x0100000,
367 MULTISELECT: 0x0200000,
368 DONOTSPELLCHECK: 0x0400000,
369 DONOTSCROLL: 0x0800000,
370 COMB: 0x1000000,
371 RICHTEXT: 0x2000000,
372 RADIOSINUNISON: 0x2000000,
373 COMMITONSELCHANGE: 0x4000000
374};
375exports.AnnotationFieldFlag = AnnotationFieldFlag;
376var AnnotationBorderStyleType = {
377 SOLID: 1,
378 DASHED: 2,
379 BEVELED: 3,
380 INSET: 4,
381 UNDERLINE: 5
382};
383exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
384var StreamType = {
385 UNKNOWN: 0,
386 FLATE: 1,
387 LZW: 2,
388 DCT: 3,
389 JPX: 4,
390 JBIG: 5,
391 A85: 6,
392 AHX: 7,
393 CCF: 8,
394 RL: 9
395};
396exports.StreamType = StreamType;
397var FontType = {
398 UNKNOWN: 0,
399 TYPE1: 1,
400 TYPE1C: 2,
401 CIDFONTTYPE0: 3,
402 CIDFONTTYPE0C: 4,
403 TRUETYPE: 5,
404 CIDFONTTYPE2: 6,
405 TYPE3: 7,
406 OPENTYPE: 8,
407 TYPE0: 9,
408 MMTYPE1: 10
409};
410exports.FontType = FontType;
411var VerbosityLevel = {
412 ERRORS: 0,
413 WARNINGS: 1,
414 INFOS: 5
415};
416exports.VerbosityLevel = VerbosityLevel;
417var CMapCompressionType = {
418 NONE: 0,
419 BINARY: 1,
420 STREAM: 2
421};
422exports.CMapCompressionType = CMapCompressionType;
423var OPS = {
424 dependency: 1,
425 setLineWidth: 2,
426 setLineCap: 3,
427 setLineJoin: 4,
428 setMiterLimit: 5,
429 setDash: 6,
430 setRenderingIntent: 7,
431 setFlatness: 8,
432 setGState: 9,
433 save: 10,
434 restore: 11,
435 transform: 12,
436 moveTo: 13,
437 lineTo: 14,
438 curveTo: 15,
439 curveTo2: 16,
440 curveTo3: 17,
441 closePath: 18,
442 rectangle: 19,
443 stroke: 20,
444 closeStroke: 21,
445 fill: 22,
446 eoFill: 23,
447 fillStroke: 24,
448 eoFillStroke: 25,
449 closeFillStroke: 26,
450 closeEOFillStroke: 27,
451 endPath: 28,
452 clip: 29,
453 eoClip: 30,
454 beginText: 31,
455 endText: 32,
456 setCharSpacing: 33,
457 setWordSpacing: 34,
458 setHScale: 35,
459 setLeading: 36,
460 setFont: 37,
461 setTextRenderingMode: 38,
462 setTextRise: 39,
463 moveText: 40,
464 setLeadingMoveText: 41,
465 setTextMatrix: 42,
466 nextLine: 43,
467 showText: 44,
468 showSpacedText: 45,
469 nextLineShowText: 46,
470 nextLineSetSpacingShowText: 47,
471 setCharWidth: 48,
472 setCharWidthAndBounds: 49,
473 setStrokeColorSpace: 50,
474 setFillColorSpace: 51,
475 setStrokeColor: 52,
476 setStrokeColorN: 53,
477 setFillColor: 54,
478 setFillColorN: 55,
479 setStrokeGray: 56,
480 setFillGray: 57,
481 setStrokeRGBColor: 58,
482 setFillRGBColor: 59,
483 setStrokeCMYKColor: 60,
484 setFillCMYKColor: 61,
485 shadingFill: 62,
486 beginInlineImage: 63,
487 beginImageData: 64,
488 endInlineImage: 65,
489 paintXObject: 66,
490 markPoint: 67,
491 markPointProps: 68,
492 beginMarkedContent: 69,
493 beginMarkedContentProps: 70,
494 endMarkedContent: 71,
495 beginCompat: 72,
496 endCompat: 73,
497 paintFormXObjectBegin: 74,
498 paintFormXObjectEnd: 75,
499 beginGroup: 76,
500 endGroup: 77,
501 beginAnnotations: 78,
502 endAnnotations: 79,
503 beginAnnotation: 80,
504 endAnnotation: 81,
505 paintJpegXObject: 82,
506 paintImageMaskXObject: 83,
507 paintImageMaskXObjectGroup: 84,
508 paintImageXObject: 85,
509 paintInlineImageXObject: 86,
510 paintInlineImageXObjectGroup: 87,
511 paintImageXObjectRepeat: 88,
512 paintImageMaskXObjectRepeat: 89,
513 paintSolidColorImageMask: 90,
514 constructPath: 91
515};
516exports.OPS = OPS;
517var UNSUPPORTED_FEATURES = {
518 unknown: 'unknown',
519 forms: 'forms',
520 javaScript: 'javaScript',
521 smask: 'smask',
522 shadingPattern: 'shadingPattern',
523 font: 'font'
524};
525exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
526var PasswordResponses = {
527 NEED_PASSWORD: 1,
528 INCORRECT_PASSWORD: 2
529};
530exports.PasswordResponses = PasswordResponses;
531var verbosity = VerbosityLevel.WARNINGS;
532
533function setVerbosityLevel(level) {
534 if (Number.isInteger(level)) {
535 verbosity = level;
536 }
537}
538
539function getVerbosityLevel() {
540 return verbosity;
541}
542
543function info(msg) {
544 if (verbosity >= VerbosityLevel.INFOS) {
545 console.log('Info: ' + msg);
546 }
547}
548
549function warn(msg) {
550 if (verbosity >= VerbosityLevel.WARNINGS) {
551 console.log('Warning: ' + msg);
552 }
553}
554
555function unreachable(msg) {
556 throw new Error(msg);
557}
558
559function assert(cond, msg) {
560 if (!cond) {
561 unreachable(msg);
562 }
563}
564
565function isSameOrigin(baseUrl, otherUrl) {
566 try {
567 var base = new _url_polyfill.URL(baseUrl);
568
569 if (!base.origin || base.origin === 'null') {
570 return false;
571 }
572 } catch (e) {
573 return false;
574 }
575
576 var other = new _url_polyfill.URL(otherUrl, base);
577 return base.origin === other.origin;
578}
579
580function _isValidProtocol(url) {
581 if (!url) {
582 return false;
583 }
584
585 switch (url.protocol) {
586 case 'http:':
587 case 'https:':
588 case 'ftp:':
589 case 'mailto:':
590 case 'tel:':
591 return true;
592
593 default:
594 return false;
595 }
596}
597
598function createValidAbsoluteUrl(url, baseUrl) {
599 if (!url) {
600 return null;
601 }
602
603 try {
604 var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
605
606 if (_isValidProtocol(absoluteUrl)) {
607 return absoluteUrl;
608 }
609 } catch (ex) {}
610
611 return null;
612}
613
614function shadow(obj, prop, value) {
615 Object.defineProperty(obj, prop, {
616 value: value,
617 enumerable: true,
618 configurable: true,
619 writable: false
620 });
621 return value;
622}
623
624var PasswordException = function PasswordExceptionClosure() {
625 function PasswordException(msg, code) {
626 this.name = 'PasswordException';
627 this.message = msg;
628 this.code = code;
629 }
630
631 PasswordException.prototype = new Error();
632 PasswordException.constructor = PasswordException;
633 return PasswordException;
634}();
635
636exports.PasswordException = PasswordException;
637
638var UnknownErrorException = function UnknownErrorExceptionClosure() {
639 function UnknownErrorException(msg, details) {
640 this.name = 'UnknownErrorException';
641 this.message = msg;
642 this.details = details;
643 }
644
645 UnknownErrorException.prototype = new Error();
646 UnknownErrorException.constructor = UnknownErrorException;
647 return UnknownErrorException;
648}();
649
650exports.UnknownErrorException = UnknownErrorException;
651
652var InvalidPDFException = function InvalidPDFExceptionClosure() {
653 function InvalidPDFException(msg) {
654 this.name = 'InvalidPDFException';
655 this.message = msg;
656 }
657
658 InvalidPDFException.prototype = new Error();
659 InvalidPDFException.constructor = InvalidPDFException;
660 return InvalidPDFException;
661}();
662
663exports.InvalidPDFException = InvalidPDFException;
664
665var MissingPDFException = function MissingPDFExceptionClosure() {
666 function MissingPDFException(msg) {
667 this.name = 'MissingPDFException';
668 this.message = msg;
669 }
670
671 MissingPDFException.prototype = new Error();
672 MissingPDFException.constructor = MissingPDFException;
673 return MissingPDFException;
674}();
675
676exports.MissingPDFException = MissingPDFException;
677
678var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
679 function UnexpectedResponseException(msg, status) {
680 this.name = 'UnexpectedResponseException';
681 this.message = msg;
682 this.status = status;
683 }
684
685 UnexpectedResponseException.prototype = new Error();
686 UnexpectedResponseException.constructor = UnexpectedResponseException;
687 return UnexpectedResponseException;
688}();
689
690exports.UnexpectedResponseException = UnexpectedResponseException;
691
692var FormatError = function FormatErrorClosure() {
693 function FormatError(msg) {
694 this.message = msg;
695 }
696
697 FormatError.prototype = new Error();
698 FormatError.prototype.name = 'FormatError';
699 FormatError.constructor = FormatError;
700 return FormatError;
701}();
702
703exports.FormatError = FormatError;
704
705var AbortException = function AbortExceptionClosure() {
706 function AbortException(msg) {
707 this.name = 'AbortException';
708 this.message = msg;
709 }
710
711 AbortException.prototype = new Error();
712 AbortException.constructor = AbortException;
713 return AbortException;
714}();
715
716exports.AbortException = AbortException;
717var NullCharactersRegExp = /\x00/g;
718
719function removeNullCharacters(str) {
720 if (typeof str !== 'string') {
721 warn('The argument for removeNullCharacters must be a string.');
722 return str;
723 }
724
725 return str.replace(NullCharactersRegExp, '');
726}
727
728function bytesToString(bytes) {
729 assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
730 var length = bytes.length;
731 var MAX_ARGUMENT_COUNT = 8192;
732
733 if (length < MAX_ARGUMENT_COUNT) {
734 return String.fromCharCode.apply(null, bytes);
735 }
736
737 var strBuf = [];
738
739 for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
740 var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
741 var chunk = bytes.subarray(i, chunkEnd);
742 strBuf.push(String.fromCharCode.apply(null, chunk));
743 }
744
745 return strBuf.join('');
746}
747
748function stringToBytes(str) {
749 assert(typeof str === 'string', 'Invalid argument for stringToBytes');
750 var length = str.length;
751 var bytes = new Uint8Array(length);
752
753 for (var i = 0; i < length; ++i) {
754 bytes[i] = str.charCodeAt(i) & 0xFF;
755 }
756
757 return bytes;
758}
759
760function arrayByteLength(arr) {
761 if (arr.length !== undefined) {
762 return arr.length;
763 }
764
765 assert(arr.byteLength !== undefined);
766 return arr.byteLength;
767}
768
769function arraysToBytes(arr) {
770 if (arr.length === 1 && arr[0] instanceof Uint8Array) {
771 return arr[0];
772 }
773
774 var resultLength = 0;
775 var i,
776 ii = arr.length;
777 var item, itemLength;
778
779 for (i = 0; i < ii; i++) {
780 item = arr[i];
781 itemLength = arrayByteLength(item);
782 resultLength += itemLength;
783 }
784
785 var pos = 0;
786 var data = new Uint8Array(resultLength);
787
788 for (i = 0; i < ii; i++) {
789 item = arr[i];
790
791 if (!(item instanceof Uint8Array)) {
792 if (typeof item === 'string') {
793 item = stringToBytes(item);
794 } else {
795 item = new Uint8Array(item);
796 }
797 }
798
799 itemLength = item.byteLength;
800 data.set(item, pos);
801 pos += itemLength;
802 }
803
804 return data;
805}
806
807function string32(value) {
808 return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
809}
810
811function log2(x) {
812 if (x <= 0) {
813 return 0;
814 }
815
816 return Math.ceil(Math.log2(x));
817}
818
819function readInt8(data, start) {
820 return data[start] << 24 >> 24;
821}
822
823function readUint16(data, offset) {
824 return data[offset] << 8 | data[offset + 1];
825}
826
827function readUint32(data, offset) {
828 return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
829}
830
831function isLittleEndian() {
832 var buffer8 = new Uint8Array(4);
833 buffer8[0] = 1;
834 var view32 = new Uint32Array(buffer8.buffer, 0, 1);
835 return view32[0] === 1;
836}
837
838function isEvalSupported() {
839 try {
840 new Function('');
841 return true;
842 } catch (e) {
843 return false;
844 }
845}
846
847var Util = function UtilClosure() {
848 function Util() {}
849
850 var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
851
852 Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
853 rgbBuf[1] = r;
854 rgbBuf[3] = g;
855 rgbBuf[5] = b;
856 return rgbBuf.join('');
857 };
858
859 Util.transform = function Util_transform(m1, m2) {
860 return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
861 };
862
863 Util.applyTransform = function Util_applyTransform(p, m) {
864 var xt = p[0] * m[0] + p[1] * m[2] + m[4];
865 var yt = p[0] * m[1] + p[1] * m[3] + m[5];
866 return [xt, yt];
867 };
868
869 Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
870 var d = m[0] * m[3] - m[1] * m[2];
871 var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
872 var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
873 return [xt, yt];
874 };
875
876 Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
877 var p1 = Util.applyTransform(r, m);
878 var p2 = Util.applyTransform(r.slice(2, 4), m);
879 var p3 = Util.applyTransform([r[0], r[3]], m);
880 var p4 = Util.applyTransform([r[2], r[1]], m);
881 return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
882 };
883
884 Util.inverseTransform = function Util_inverseTransform(m) {
885 var d = m[0] * m[3] - m[1] * m[2];
886 return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
887 };
888
889 Util.apply3dTransform = function Util_apply3dTransform(m, v) {
890 return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
891 };
892
893 Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
894 var transpose = [m[0], m[2], m[1], m[3]];
895 var a = m[0] * transpose[0] + m[1] * transpose[2];
896 var b = m[0] * transpose[1] + m[1] * transpose[3];
897 var c = m[2] * transpose[0] + m[3] * transpose[2];
898 var d = m[2] * transpose[1] + m[3] * transpose[3];
899 var first = (a + d) / 2;
900 var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
901 var sx = first + second || 1;
902 var sy = first - second || 1;
903 return [Math.sqrt(sx), Math.sqrt(sy)];
904 };
905
906 Util.normalizeRect = function Util_normalizeRect(rect) {
907 var r = rect.slice(0);
908
909 if (rect[0] > rect[2]) {
910 r[0] = rect[2];
911 r[2] = rect[0];
912 }
913
914 if (rect[1] > rect[3]) {
915 r[1] = rect[3];
916 r[3] = rect[1];
917 }
918
919 return r;
920 };
921
922 Util.intersect = function Util_intersect(rect1, rect2) {
923 function compare(a, b) {
924 return a - b;
925 }
926
927 var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
928 orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
929 result = [];
930 rect1 = Util.normalizeRect(rect1);
931 rect2 = Util.normalizeRect(rect2);
932
933 if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
934 result[0] = orderedX[1];
935 result[2] = orderedX[2];
936 } else {
937 return false;
938 }
939
940 if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
941 result[1] = orderedY[1];
942 result[3] = orderedY[2];
943 } else {
944 return false;
945 }
946
947 return result;
948 };
949
950 return Util;
951}();
952
953exports.Util = Util;
954var PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 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, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C, 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160, 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC];
955
956function stringToPDFString(str) {
957 var i,
958 n = str.length,
959 strBuf = [];
960
961 if (str[0] === '\xFE' && str[1] === '\xFF') {
962 for (i = 2; i < n; i += 2) {
963 strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
964 }
965 } else {
966 for (i = 0; i < n; ++i) {
967 var code = PDFStringTranslateTable[str.charCodeAt(i)];
968 strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
969 }
970 }
971
972 return strBuf.join('');
973}
974
975function stringToUTF8String(str) {
976 return decodeURIComponent(escape(str));
977}
978
979function utf8StringToString(str) {
980 return unescape(encodeURIComponent(str));
981}
982
983function isEmptyObj(obj) {
984 for (var key in obj) {
985 return false;
986 }
987
988 return true;
989}
990
991function isBool(v) {
992 return typeof v === 'boolean';
993}
994
995function isNum(v) {
996 return typeof v === 'number';
997}
998
999function isString(v) {
1000 return typeof v === 'string';
1001}
1002
1003function isArrayBuffer(v) {
1004 return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined;
1005}
1006
1007function isArrayEqual(arr1, arr2) {
1008 if (arr1.length !== arr2.length) {
1009 return false;
1010 }
1011
1012 return arr1.every(function (element, index) {
1013 return element === arr2[index];
1014 });
1015}
1016
1017function isSpace(ch) {
1018 return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
1019}
1020
1021function createPromiseCapability() {
1022 var capability = Object.create(null);
1023 var isSettled = false;
1024 Object.defineProperty(capability, 'settled', {
1025 get: function get() {
1026 return isSettled;
1027 }
1028 });
1029 capability.promise = new Promise(function (resolve, reject) {
1030 capability.resolve = function (data) {
1031 isSettled = true;
1032 resolve(data);
1033 };
1034
1035 capability.reject = function (reason) {
1036 isSettled = true;
1037 reject(reason);
1038 };
1039 });
1040 return capability;
1041}
1042
1043var createObjectURL = function createObjectURLClosure() {
1044 var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
1045 return function createObjectURL(data, contentType) {
1046 var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1047
1048 if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
1049 var blob = new Blob([data], {
1050 type: contentType
1051 });
1052 return _url_polyfill.URL.createObjectURL(blob);
1053 }
1054
1055 var buffer = 'data:' + contentType + ';base64,';
1056
1057 for (var i = 0, ii = data.length; i < ii; i += 3) {
1058 var b1 = data[i] & 0xFF;
1059 var b2 = data[i + 1] & 0xFF;
1060 var b3 = data[i + 2] & 0xFF;
1061 var d1 = b1 >> 2,
1062 d2 = (b1 & 3) << 4 | b2 >> 4;
1063 var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
1064 var d4 = i + 2 < ii ? b3 & 0x3F : 64;
1065 buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
1066 }
1067
1068 return buffer;
1069 };
1070}();
1071
1072exports.createObjectURL = createObjectURL;
1073
1074/***/ }),
1075/* 2 */
1076/***/ (function(module, exports, __w_pdfjs_require__) {
1077
1078"use strict";
1079
1080
1081function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1082
1083var globalScope = __w_pdfjs_require__(3);
1084
1085if (!globalScope._pdfjsCompatibilityChecked) {
1086 globalScope._pdfjsCompatibilityChecked = true;
1087
1088 var isNodeJS = __w_pdfjs_require__(4);
1089
1090 var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object';
1091
1092 (function checkNodeBtoa() {
1093 if (globalScope.btoa || !isNodeJS()) {
1094 return;
1095 }
1096
1097 globalScope.btoa = function (chars) {
1098 return Buffer.from(chars, 'binary').toString('base64');
1099 };
1100 })();
1101
1102 (function checkNodeAtob() {
1103 if (globalScope.atob || !isNodeJS()) {
1104 return;
1105 }
1106
1107 globalScope.atob = function (input) {
1108 return Buffer.from(input, 'base64').toString('binary');
1109 };
1110 })();
1111
1112 (function checkChildNodeRemove() {
1113 if (!hasDOM) {
1114 return;
1115 }
1116
1117 if (typeof Element.prototype.remove !== 'undefined') {
1118 return;
1119 }
1120
1121 Element.prototype.remove = function () {
1122 if (this.parentNode) {
1123 this.parentNode.removeChild(this);
1124 }
1125 };
1126 })();
1127
1128 (function checkDOMTokenListAddRemove() {
1129 if (!hasDOM || isNodeJS()) {
1130 return;
1131 }
1132
1133 var div = document.createElement('div');
1134 div.classList.add('testOne', 'testTwo');
1135
1136 if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) {
1137 return;
1138 }
1139
1140 var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;
1141 var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;
1142
1143 DOMTokenList.prototype.add = function () {
1144 for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {
1145 tokens[_key] = arguments[_key];
1146 }
1147
1148 for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) {
1149 var token = _tokens[_i];
1150 OriginalDOMTokenListAdd.call(this, token);
1151 }
1152 };
1153
1154 DOMTokenList.prototype.remove = function () {
1155 for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1156 tokens[_key2] = arguments[_key2];
1157 }
1158
1159 for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) {
1160 var token = _tokens2[_i2];
1161 OriginalDOMTokenListRemove.call(this, token);
1162 }
1163 };
1164 })();
1165
1166 (function checkDOMTokenListToggle() {
1167 if (!hasDOM || isNodeJS()) {
1168 return;
1169 }
1170
1171 var div = document.createElement('div');
1172
1173 if (div.classList.toggle('test', 0) === false) {
1174 return;
1175 }
1176
1177 DOMTokenList.prototype.toggle = function (token) {
1178 var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);
1179 return this[force ? 'add' : 'remove'](token), force;
1180 };
1181 })();
1182
1183 (function checkStringStartsWith() {
1184 if (String.prototype.startsWith) {
1185 return;
1186 }
1187
1188 __w_pdfjs_require__(5);
1189 })();
1190
1191 (function checkStringEndsWith() {
1192 if (String.prototype.endsWith) {
1193 return;
1194 }
1195
1196 __w_pdfjs_require__(36);
1197 })();
1198
1199 (function checkStringIncludes() {
1200 if (String.prototype.includes) {
1201 return;
1202 }
1203
1204 __w_pdfjs_require__(38);
1205 })();
1206
1207 (function checkArrayIncludes() {
1208 if (Array.prototype.includes) {
1209 return;
1210 }
1211
1212 __w_pdfjs_require__(40);
1213 })();
1214
1215 (function checkArrayFrom() {
1216 if (Array.from) {
1217 return;
1218 }
1219
1220 __w_pdfjs_require__(47);
1221 })();
1222
1223 (function checkObjectAssign() {
1224 if (Object.assign) {
1225 return;
1226 }
1227
1228 __w_pdfjs_require__(70);
1229 })();
1230
1231 (function checkMathLog2() {
1232 if (Math.log2) {
1233 return;
1234 }
1235
1236 Math.log2 = __w_pdfjs_require__(75);
1237 })();
1238
1239 (function checkNumberIsNaN() {
1240 if (Number.isNaN) {
1241 return;
1242 }
1243
1244 Number.isNaN = __w_pdfjs_require__(77);
1245 })();
1246
1247 (function checkNumberIsInteger() {
1248 if (Number.isInteger) {
1249 return;
1250 }
1251
1252 Number.isInteger = __w_pdfjs_require__(79);
1253 })();
1254
1255 (function checkPromise() {
1256 if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype["finally"]) {
1257 return;
1258 }
1259
1260 globalScope.Promise = __w_pdfjs_require__(82);
1261 })();
1262
1263 (function checkWeakMap() {
1264 if (globalScope.WeakMap) {
1265 return;
1266 }
1267
1268 globalScope.WeakMap = __w_pdfjs_require__(102);
1269 })();
1270
1271 (function checkWeakSet() {
1272 if (globalScope.WeakSet) {
1273 return;
1274 }
1275
1276 globalScope.WeakSet = __w_pdfjs_require__(119);
1277 })();
1278
1279 (function checkStringCodePointAt() {
1280 if (String.codePointAt) {
1281 return;
1282 }
1283
1284 String.codePointAt = __w_pdfjs_require__(123);
1285 })();
1286
1287 (function checkStringFromCodePoint() {
1288 if (String.fromCodePoint) {
1289 return;
1290 }
1291
1292 String.fromCodePoint = __w_pdfjs_require__(125);
1293 })();
1294
1295 (function checkSymbol() {
1296 if (globalScope.Symbol) {
1297 return;
1298 }
1299
1300 __w_pdfjs_require__(127);
1301 })();
1302
1303 (function checkStringPadStart() {
1304 if (String.prototype.padStart) {
1305 return;
1306 }
1307
1308 __w_pdfjs_require__(134);
1309 })();
1310
1311 (function checkStringPadEnd() {
1312 if (String.prototype.padEnd) {
1313 return;
1314 }
1315
1316 __w_pdfjs_require__(138);
1317 })();
1318
1319 (function checkObjectValues() {
1320 if (Object.values) {
1321 return;
1322 }
1323
1324 Object.values = __w_pdfjs_require__(140);
1325 })();
1326}
1327
1328/***/ }),
1329/* 3 */
1330/***/ (function(module, exports, __w_pdfjs_require__) {
1331
1332"use strict";
1333
1334
1335module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
1336
1337/***/ }),
1338/* 4 */
1339/***/ (function(module, exports, __w_pdfjs_require__) {
1340
1341"use strict";
1342
1343
1344function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1345
1346module.exports = function isNodeJS() {
1347 return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'] && !process.versions['electron'];
1348};
1349
1350/***/ }),
1351/* 5 */
1352/***/ (function(module, exports, __w_pdfjs_require__) {
1353
1354"use strict";
1355
1356
1357__w_pdfjs_require__(6);
1358
1359module.exports = __w_pdfjs_require__(9).String.startsWith;
1360
1361/***/ }),
1362/* 6 */
1363/***/ (function(module, exports, __w_pdfjs_require__) {
1364
1365"use strict";
1366
1367
1368var $export = __w_pdfjs_require__(7);
1369
1370var toLength = __w_pdfjs_require__(28);
1371
1372var context = __w_pdfjs_require__(30);
1373
1374var STARTS_WITH = 'startsWith';
1375var $startsWith = ''[STARTS_WITH];
1376$export($export.P + $export.F * __w_pdfjs_require__(35)(STARTS_WITH), 'String', {
1377 startsWith: function startsWith(searchString) {
1378 var that = context(this, searchString, STARTS_WITH);
1379 var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
1380 var search = String(searchString);
1381 return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
1382 }
1383});
1384
1385/***/ }),
1386/* 7 */
1387/***/ (function(module, exports, __w_pdfjs_require__) {
1388
1389"use strict";
1390
1391
1392var global = __w_pdfjs_require__(8);
1393
1394var core = __w_pdfjs_require__(9);
1395
1396var hide = __w_pdfjs_require__(10);
1397
1398var redefine = __w_pdfjs_require__(20);
1399
1400var ctx = __w_pdfjs_require__(26);
1401
1402var PROTOTYPE = 'prototype';
1403
1404var $export = function $export(type, name, source) {
1405 var IS_FORCED = type & $export.F;
1406 var IS_GLOBAL = type & $export.G;
1407 var IS_STATIC = type & $export.S;
1408 var IS_PROTO = type & $export.P;
1409 var IS_BIND = type & $export.B;
1410 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1411 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1412 var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1413 var key, own, out, exp;
1414 if (IS_GLOBAL) source = name;
1415
1416 for (key in source) {
1417 own = !IS_FORCED && target && target[key] !== undefined;
1418 out = (own ? target : source)[key];
1419 exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1420 if (target) redefine(target, key, out, type & $export.U);
1421 if (exports[key] != out) hide(exports, key, exp);
1422 if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1423 }
1424};
1425
1426global.core = core;
1427$export.F = 1;
1428$export.G = 2;
1429$export.S = 4;
1430$export.P = 8;
1431$export.B = 16;
1432$export.W = 32;
1433$export.U = 64;
1434$export.R = 128;
1435module.exports = $export;
1436
1437/***/ }),
1438/* 8 */
1439/***/ (function(module, exports, __w_pdfjs_require__) {
1440
1441"use strict";
1442
1443
1444var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1445if (typeof __g == 'number') __g = global;
1446
1447/***/ }),
1448/* 9 */
1449/***/ (function(module, exports, __w_pdfjs_require__) {
1450
1451"use strict";
1452
1453
1454var core = module.exports = {
1455 version: '2.6.9'
1456};
1457if (typeof __e == 'number') __e = core;
1458
1459/***/ }),
1460/* 10 */
1461/***/ (function(module, exports, __w_pdfjs_require__) {
1462
1463"use strict";
1464
1465
1466var dP = __w_pdfjs_require__(11);
1467
1468var createDesc = __w_pdfjs_require__(19);
1469
1470module.exports = __w_pdfjs_require__(15) ? function (object, key, value) {
1471 return dP.f(object, key, createDesc(1, value));
1472} : function (object, key, value) {
1473 object[key] = value;
1474 return object;
1475};
1476
1477/***/ }),
1478/* 11 */
1479/***/ (function(module, exports, __w_pdfjs_require__) {
1480
1481"use strict";
1482
1483
1484var anObject = __w_pdfjs_require__(12);
1485
1486var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
1487
1488var toPrimitive = __w_pdfjs_require__(18);
1489
1490var dP = Object.defineProperty;
1491exports.f = __w_pdfjs_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
1492 anObject(O);
1493 P = toPrimitive(P, true);
1494 anObject(Attributes);
1495 if (IE8_DOM_DEFINE) try {
1496 return dP(O, P, Attributes);
1497 } catch (e) {}
1498 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
1499 if ('value' in Attributes) O[P] = Attributes.value;
1500 return O;
1501};
1502
1503/***/ }),
1504/* 12 */
1505/***/ (function(module, exports, __w_pdfjs_require__) {
1506
1507"use strict";
1508
1509
1510var isObject = __w_pdfjs_require__(13);
1511
1512module.exports = function (it) {
1513 if (!isObject(it)) throw TypeError(it + ' is not an object!');
1514 return it;
1515};
1516
1517/***/ }),
1518/* 13 */
1519/***/ (function(module, exports, __w_pdfjs_require__) {
1520
1521"use strict";
1522
1523
1524function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1525
1526module.exports = function (it) {
1527 return _typeof(it) === 'object' ? it !== null : typeof it === 'function';
1528};
1529
1530/***/ }),
1531/* 14 */
1532/***/ (function(module, exports, __w_pdfjs_require__) {
1533
1534"use strict";
1535
1536
1537module.exports = !__w_pdfjs_require__(15) && !__w_pdfjs_require__(16)(function () {
1538 return Object.defineProperty(__w_pdfjs_require__(17)('div'), 'a', {
1539 get: function get() {
1540 return 7;
1541 }
1542 }).a != 7;
1543});
1544
1545/***/ }),
1546/* 15 */
1547/***/ (function(module, exports, __w_pdfjs_require__) {
1548
1549"use strict";
1550
1551
1552module.exports = !__w_pdfjs_require__(16)(function () {
1553 return Object.defineProperty({}, 'a', {
1554 get: function get() {
1555 return 7;
1556 }
1557 }).a != 7;
1558});
1559
1560/***/ }),
1561/* 16 */
1562/***/ (function(module, exports, __w_pdfjs_require__) {
1563
1564"use strict";
1565
1566
1567module.exports = function (exec) {
1568 try {
1569 return !!exec();
1570 } catch (e) {
1571 return true;
1572 }
1573};
1574
1575/***/ }),
1576/* 17 */
1577/***/ (function(module, exports, __w_pdfjs_require__) {
1578
1579"use strict";
1580
1581
1582var isObject = __w_pdfjs_require__(13);
1583
1584var document = __w_pdfjs_require__(8).document;
1585
1586var is = isObject(document) && isObject(document.createElement);
1587
1588module.exports = function (it) {
1589 return is ? document.createElement(it) : {};
1590};
1591
1592/***/ }),
1593/* 18 */
1594/***/ (function(module, exports, __w_pdfjs_require__) {
1595
1596"use strict";
1597
1598
1599var isObject = __w_pdfjs_require__(13);
1600
1601module.exports = function (it, S) {
1602 if (!isObject(it)) return it;
1603 var fn, val;
1604 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1605 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1606 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1607 throw TypeError("Can't convert object to primitive value");
1608};
1609
1610/***/ }),
1611/* 19 */
1612/***/ (function(module, exports, __w_pdfjs_require__) {
1613
1614"use strict";
1615
1616
1617module.exports = function (bitmap, value) {
1618 return {
1619 enumerable: !(bitmap & 1),
1620 configurable: !(bitmap & 2),
1621 writable: !(bitmap & 4),
1622 value: value
1623 };
1624};
1625
1626/***/ }),
1627/* 20 */
1628/***/ (function(module, exports, __w_pdfjs_require__) {
1629
1630"use strict";
1631
1632
1633var global = __w_pdfjs_require__(8);
1634
1635var hide = __w_pdfjs_require__(10);
1636
1637var has = __w_pdfjs_require__(21);
1638
1639var SRC = __w_pdfjs_require__(22)('src');
1640
1641var $toString = __w_pdfjs_require__(23);
1642
1643var TO_STRING = 'toString';
1644var TPL = ('' + $toString).split(TO_STRING);
1645
1646__w_pdfjs_require__(9).inspectSource = function (it) {
1647 return $toString.call(it);
1648};
1649
1650(module.exports = function (O, key, val, safe) {
1651 var isFunction = typeof val == 'function';
1652 if (isFunction) has(val, 'name') || hide(val, 'name', key);
1653 if (O[key] === val) return;
1654 if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1655
1656 if (O === global) {
1657 O[key] = val;
1658 } else if (!safe) {
1659 delete O[key];
1660 hide(O, key, val);
1661 } else if (O[key]) {
1662 O[key] = val;
1663 } else {
1664 hide(O, key, val);
1665 }
1666})(Function.prototype, TO_STRING, function toString() {
1667 return typeof this == 'function' && this[SRC] || $toString.call(this);
1668});
1669
1670/***/ }),
1671/* 21 */
1672/***/ (function(module, exports, __w_pdfjs_require__) {
1673
1674"use strict";
1675
1676
1677var hasOwnProperty = {}.hasOwnProperty;
1678
1679module.exports = function (it, key) {
1680 return hasOwnProperty.call(it, key);
1681};
1682
1683/***/ }),
1684/* 22 */
1685/***/ (function(module, exports, __w_pdfjs_require__) {
1686
1687"use strict";
1688
1689
1690var id = 0;
1691var px = Math.random();
1692
1693module.exports = function (key) {
1694 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1695};
1696
1697/***/ }),
1698/* 23 */
1699/***/ (function(module, exports, __w_pdfjs_require__) {
1700
1701"use strict";
1702
1703
1704module.exports = __w_pdfjs_require__(24)('native-function-to-string', Function.toString);
1705
1706/***/ }),
1707/* 24 */
1708/***/ (function(module, exports, __w_pdfjs_require__) {
1709
1710"use strict";
1711
1712
1713var core = __w_pdfjs_require__(9);
1714
1715var global = __w_pdfjs_require__(8);
1716
1717var SHARED = '__core-js_shared__';
1718var store = global[SHARED] || (global[SHARED] = {});
1719(module.exports = function (key, value) {
1720 return store[key] || (store[key] = value !== undefined ? value : {});
1721})('versions', []).push({
1722 version: core.version,
1723 mode: __w_pdfjs_require__(25) ? 'pure' : 'global',
1724 copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1725});
1726
1727/***/ }),
1728/* 25 */
1729/***/ (function(module, exports, __w_pdfjs_require__) {
1730
1731"use strict";
1732
1733
1734module.exports = false;
1735
1736/***/ }),
1737/* 26 */
1738/***/ (function(module, exports, __w_pdfjs_require__) {
1739
1740"use strict";
1741
1742
1743var aFunction = __w_pdfjs_require__(27);
1744
1745module.exports = function (fn, that, length) {
1746 aFunction(fn);
1747 if (that === undefined) return fn;
1748
1749 switch (length) {
1750 case 1:
1751 return function (a) {
1752 return fn.call(that, a);
1753 };
1754
1755 case 2:
1756 return function (a, b) {
1757 return fn.call(that, a, b);
1758 };
1759
1760 case 3:
1761 return function (a, b, c) {
1762 return fn.call(that, a, b, c);
1763 };
1764 }
1765
1766 return function () {
1767 return fn.apply(that, arguments);
1768 };
1769};
1770
1771/***/ }),
1772/* 27 */
1773/***/ (function(module, exports, __w_pdfjs_require__) {
1774
1775"use strict";
1776
1777
1778module.exports = function (it) {
1779 if (typeof it != 'function') throw TypeError(it + ' is not a function!');
1780 return it;
1781};
1782
1783/***/ }),
1784/* 28 */
1785/***/ (function(module, exports, __w_pdfjs_require__) {
1786
1787"use strict";
1788
1789
1790var toInteger = __w_pdfjs_require__(29);
1791
1792var min = Math.min;
1793
1794module.exports = function (it) {
1795 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
1796};
1797
1798/***/ }),
1799/* 29 */
1800/***/ (function(module, exports, __w_pdfjs_require__) {
1801
1802"use strict";
1803
1804
1805var ceil = Math.ceil;
1806var floor = Math.floor;
1807
1808module.exports = function (it) {
1809 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1810};
1811
1812/***/ }),
1813/* 30 */
1814/***/ (function(module, exports, __w_pdfjs_require__) {
1815
1816"use strict";
1817
1818
1819var isRegExp = __w_pdfjs_require__(31);
1820
1821var defined = __w_pdfjs_require__(34);
1822
1823module.exports = function (that, searchString, NAME) {
1824 if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
1825 return String(defined(that));
1826};
1827
1828/***/ }),
1829/* 31 */
1830/***/ (function(module, exports, __w_pdfjs_require__) {
1831
1832"use strict";
1833
1834
1835var isObject = __w_pdfjs_require__(13);
1836
1837var cof = __w_pdfjs_require__(32);
1838
1839var MATCH = __w_pdfjs_require__(33)('match');
1840
1841module.exports = function (it) {
1842 var isRegExp;
1843 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
1844};
1845
1846/***/ }),
1847/* 32 */
1848/***/ (function(module, exports, __w_pdfjs_require__) {
1849
1850"use strict";
1851
1852
1853var toString = {}.toString;
1854
1855module.exports = function (it) {
1856 return toString.call(it).slice(8, -1);
1857};
1858
1859/***/ }),
1860/* 33 */
1861/***/ (function(module, exports, __w_pdfjs_require__) {
1862
1863"use strict";
1864
1865
1866var store = __w_pdfjs_require__(24)('wks');
1867
1868var uid = __w_pdfjs_require__(22);
1869
1870var _Symbol = __w_pdfjs_require__(8).Symbol;
1871
1872var USE_SYMBOL = typeof _Symbol == 'function';
1873
1874var $exports = module.exports = function (name) {
1875 return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
1876};
1877
1878$exports.store = store;
1879
1880/***/ }),
1881/* 34 */
1882/***/ (function(module, exports, __w_pdfjs_require__) {
1883
1884"use strict";
1885
1886
1887module.exports = function (it) {
1888 if (it == undefined) throw TypeError("Can't call method on " + it);
1889 return it;
1890};
1891
1892/***/ }),
1893/* 35 */
1894/***/ (function(module, exports, __w_pdfjs_require__) {
1895
1896"use strict";
1897
1898
1899var MATCH = __w_pdfjs_require__(33)('match');
1900
1901module.exports = function (KEY) {
1902 var re = /./;
1903
1904 try {
1905 '/./'[KEY](re);
1906 } catch (e) {
1907 try {
1908 re[MATCH] = false;
1909 return !'/./'[KEY](re);
1910 } catch (f) {}
1911 }
1912
1913 return true;
1914};
1915
1916/***/ }),
1917/* 36 */
1918/***/ (function(module, exports, __w_pdfjs_require__) {
1919
1920"use strict";
1921
1922
1923__w_pdfjs_require__(37);
1924
1925module.exports = __w_pdfjs_require__(9).String.endsWith;
1926
1927/***/ }),
1928/* 37 */
1929/***/ (function(module, exports, __w_pdfjs_require__) {
1930
1931"use strict";
1932
1933
1934var $export = __w_pdfjs_require__(7);
1935
1936var toLength = __w_pdfjs_require__(28);
1937
1938var context = __w_pdfjs_require__(30);
1939
1940var ENDS_WITH = 'endsWith';
1941var $endsWith = ''[ENDS_WITH];
1942$export($export.P + $export.F * __w_pdfjs_require__(35)(ENDS_WITH), 'String', {
1943 endsWith: function endsWith(searchString) {
1944 var that = context(this, searchString, ENDS_WITH);
1945 var endPosition = arguments.length > 1 ? arguments[1] : undefined;
1946 var len = toLength(that.length);
1947 var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
1948 var search = String(searchString);
1949 return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
1950 }
1951});
1952
1953/***/ }),
1954/* 38 */
1955/***/ (function(module, exports, __w_pdfjs_require__) {
1956
1957"use strict";
1958
1959
1960__w_pdfjs_require__(39);
1961
1962module.exports = __w_pdfjs_require__(9).String.includes;
1963
1964/***/ }),
1965/* 39 */
1966/***/ (function(module, exports, __w_pdfjs_require__) {
1967
1968"use strict";
1969
1970
1971var $export = __w_pdfjs_require__(7);
1972
1973var context = __w_pdfjs_require__(30);
1974
1975var INCLUDES = 'includes';
1976$export($export.P + $export.F * __w_pdfjs_require__(35)(INCLUDES), 'String', {
1977 includes: function includes(searchString) {
1978 return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
1979 }
1980});
1981
1982/***/ }),
1983/* 40 */
1984/***/ (function(module, exports, __w_pdfjs_require__) {
1985
1986"use strict";
1987
1988
1989__w_pdfjs_require__(41);
1990
1991module.exports = __w_pdfjs_require__(9).Array.includes;
1992
1993/***/ }),
1994/* 41 */
1995/***/ (function(module, exports, __w_pdfjs_require__) {
1996
1997"use strict";
1998
1999
2000var $export = __w_pdfjs_require__(7);
2001
2002var $includes = __w_pdfjs_require__(42)(true);
2003
2004$export($export.P, 'Array', {
2005 includes: function includes(el) {
2006 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
2007 }
2008});
2009
2010__w_pdfjs_require__(46)('includes');
2011
2012/***/ }),
2013/* 42 */
2014/***/ (function(module, exports, __w_pdfjs_require__) {
2015
2016"use strict";
2017
2018
2019var toIObject = __w_pdfjs_require__(43);
2020
2021var toLength = __w_pdfjs_require__(28);
2022
2023var toAbsoluteIndex = __w_pdfjs_require__(45);
2024
2025module.exports = function (IS_INCLUDES) {
2026 return function ($this, el, fromIndex) {
2027 var O = toIObject($this);
2028 var length = toLength(O.length);
2029 var index = toAbsoluteIndex(fromIndex, length);
2030 var value;
2031 if (IS_INCLUDES && el != el) while (length > index) {
2032 value = O[index++];
2033 if (value != value) return true;
2034 } else for (; length > index; index++) {
2035 if (IS_INCLUDES || index in O) {
2036 if (O[index] === el) return IS_INCLUDES || index || 0;
2037 }
2038 }
2039 return !IS_INCLUDES && -1;
2040 };
2041};
2042
2043/***/ }),
2044/* 43 */
2045/***/ (function(module, exports, __w_pdfjs_require__) {
2046
2047"use strict";
2048
2049
2050var IObject = __w_pdfjs_require__(44);
2051
2052var defined = __w_pdfjs_require__(34);
2053
2054module.exports = function (it) {
2055 return IObject(defined(it));
2056};
2057
2058/***/ }),
2059/* 44 */
2060/***/ (function(module, exports, __w_pdfjs_require__) {
2061
2062"use strict";
2063
2064
2065var cof = __w_pdfjs_require__(32);
2066
2067module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
2068 return cof(it) == 'String' ? it.split('') : Object(it);
2069};
2070
2071/***/ }),
2072/* 45 */
2073/***/ (function(module, exports, __w_pdfjs_require__) {
2074
2075"use strict";
2076
2077
2078var toInteger = __w_pdfjs_require__(29);
2079
2080var max = Math.max;
2081var min = Math.min;
2082
2083module.exports = function (index, length) {
2084 index = toInteger(index);
2085 return index < 0 ? max(index + length, 0) : min(index, length);
2086};
2087
2088/***/ }),
2089/* 46 */
2090/***/ (function(module, exports, __w_pdfjs_require__) {
2091
2092"use strict";
2093
2094
2095var UNSCOPABLES = __w_pdfjs_require__(33)('unscopables');
2096
2097var ArrayProto = Array.prototype;
2098if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(10)(ArrayProto, UNSCOPABLES, {});
2099
2100module.exports = function (key) {
2101 ArrayProto[UNSCOPABLES][key] = true;
2102};
2103
2104/***/ }),
2105/* 47 */
2106/***/ (function(module, exports, __w_pdfjs_require__) {
2107
2108"use strict";
2109
2110
2111__w_pdfjs_require__(48);
2112
2113__w_pdfjs_require__(63);
2114
2115module.exports = __w_pdfjs_require__(9).Array.from;
2116
2117/***/ }),
2118/* 48 */
2119/***/ (function(module, exports, __w_pdfjs_require__) {
2120
2121"use strict";
2122
2123
2124var $at = __w_pdfjs_require__(49)(true);
2125
2126__w_pdfjs_require__(50)(String, 'String', function (iterated) {
2127 this._t = String(iterated);
2128 this._i = 0;
2129}, function () {
2130 var O = this._t;
2131 var index = this._i;
2132 var point;
2133 if (index >= O.length) return {
2134 value: undefined,
2135 done: true
2136 };
2137 point = $at(O, index);
2138 this._i += point.length;
2139 return {
2140 value: point,
2141 done: false
2142 };
2143});
2144
2145/***/ }),
2146/* 49 */
2147/***/ (function(module, exports, __w_pdfjs_require__) {
2148
2149"use strict";
2150
2151
2152var toInteger = __w_pdfjs_require__(29);
2153
2154var defined = __w_pdfjs_require__(34);
2155
2156module.exports = function (TO_STRING) {
2157 return function (that, pos) {
2158 var s = String(defined(that));
2159 var i = toInteger(pos);
2160 var l = s.length;
2161 var a, b;
2162 if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
2163 a = s.charCodeAt(i);
2164 return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
2165 };
2166};
2167
2168/***/ }),
2169/* 50 */
2170/***/ (function(module, exports, __w_pdfjs_require__) {
2171
2172"use strict";
2173
2174
2175var LIBRARY = __w_pdfjs_require__(25);
2176
2177var $export = __w_pdfjs_require__(7);
2178
2179var redefine = __w_pdfjs_require__(20);
2180
2181var hide = __w_pdfjs_require__(10);
2182
2183var Iterators = __w_pdfjs_require__(51);
2184
2185var $iterCreate = __w_pdfjs_require__(52);
2186
2187var setToStringTag = __w_pdfjs_require__(60);
2188
2189var getPrototypeOf = __w_pdfjs_require__(61);
2190
2191var ITERATOR = __w_pdfjs_require__(33)('iterator');
2192
2193var BUGGY = !([].keys && 'next' in [].keys());
2194var FF_ITERATOR = '@@iterator';
2195var KEYS = 'keys';
2196var VALUES = 'values';
2197
2198var returnThis = function returnThis() {
2199 return this;
2200};
2201
2202module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2203 $iterCreate(Constructor, NAME, next);
2204
2205 var getMethod = function getMethod(kind) {
2206 if (!BUGGY && kind in proto) return proto[kind];
2207
2208 switch (kind) {
2209 case KEYS:
2210 return function keys() {
2211 return new Constructor(this, kind);
2212 };
2213
2214 case VALUES:
2215 return function values() {
2216 return new Constructor(this, kind);
2217 };
2218 }
2219
2220 return function entries() {
2221 return new Constructor(this, kind);
2222 };
2223 };
2224
2225 var TAG = NAME + ' Iterator';
2226 var DEF_VALUES = DEFAULT == VALUES;
2227 var VALUES_BUG = false;
2228 var proto = Base.prototype;
2229 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2230 var $default = $native || getMethod(DEFAULT);
2231 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2232 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2233 var methods, key, IteratorPrototype;
2234
2235 if ($anyNative) {
2236 IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2237
2238 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2239 setToStringTag(IteratorPrototype, TAG, true);
2240 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2241 }
2242 }
2243
2244 if (DEF_VALUES && $native && $native.name !== VALUES) {
2245 VALUES_BUG = true;
2246
2247 $default = function values() {
2248 return $native.call(this);
2249 };
2250 }
2251
2252 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2253 hide(proto, ITERATOR, $default);
2254 }
2255
2256 Iterators[NAME] = $default;
2257 Iterators[TAG] = returnThis;
2258
2259 if (DEFAULT) {
2260 methods = {
2261 values: DEF_VALUES ? $default : getMethod(VALUES),
2262 keys: IS_SET ? $default : getMethod(KEYS),
2263 entries: $entries
2264 };
2265 if (FORCED) for (key in methods) {
2266 if (!(key in proto)) redefine(proto, key, methods[key]);
2267 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2268 }
2269
2270 return methods;
2271};
2272
2273/***/ }),
2274/* 51 */
2275/***/ (function(module, exports, __w_pdfjs_require__) {
2276
2277"use strict";
2278
2279
2280module.exports = {};
2281
2282/***/ }),
2283/* 52 */
2284/***/ (function(module, exports, __w_pdfjs_require__) {
2285
2286"use strict";
2287
2288
2289var create = __w_pdfjs_require__(53);
2290
2291var descriptor = __w_pdfjs_require__(19);
2292
2293var setToStringTag = __w_pdfjs_require__(60);
2294
2295var IteratorPrototype = {};
2296
2297__w_pdfjs_require__(10)(IteratorPrototype, __w_pdfjs_require__(33)('iterator'), function () {
2298 return this;
2299});
2300
2301module.exports = function (Constructor, NAME, next) {
2302 Constructor.prototype = create(IteratorPrototype, {
2303 next: descriptor(1, next)
2304 });
2305 setToStringTag(Constructor, NAME + ' Iterator');
2306};
2307
2308/***/ }),
2309/* 53 */
2310/***/ (function(module, exports, __w_pdfjs_require__) {
2311
2312"use strict";
2313
2314
2315var anObject = __w_pdfjs_require__(12);
2316
2317var dPs = __w_pdfjs_require__(54);
2318
2319var enumBugKeys = __w_pdfjs_require__(58);
2320
2321var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2322
2323var Empty = function Empty() {};
2324
2325var PROTOTYPE = 'prototype';
2326
2327var _createDict = function createDict() {
2328 var iframe = __w_pdfjs_require__(17)('iframe');
2329
2330 var i = enumBugKeys.length;
2331 var lt = '<';
2332 var gt = '>';
2333 var iframeDocument;
2334 iframe.style.display = 'none';
2335
2336 __w_pdfjs_require__(59).appendChild(iframe);
2337
2338 iframe.src = 'javascript:';
2339 iframeDocument = iframe.contentWindow.document;
2340 iframeDocument.open();
2341 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2342 iframeDocument.close();
2343 _createDict = iframeDocument.F;
2344
2345 while (i--) {
2346 delete _createDict[PROTOTYPE][enumBugKeys[i]];
2347 }
2348
2349 return _createDict();
2350};
2351
2352module.exports = Object.create || function create(O, Properties) {
2353 var result;
2354
2355 if (O !== null) {
2356 Empty[PROTOTYPE] = anObject(O);
2357 result = new Empty();
2358 Empty[PROTOTYPE] = null;
2359 result[IE_PROTO] = O;
2360 } else result = _createDict();
2361
2362 return Properties === undefined ? result : dPs(result, Properties);
2363};
2364
2365/***/ }),
2366/* 54 */
2367/***/ (function(module, exports, __w_pdfjs_require__) {
2368
2369"use strict";
2370
2371
2372var dP = __w_pdfjs_require__(11);
2373
2374var anObject = __w_pdfjs_require__(12);
2375
2376var getKeys = __w_pdfjs_require__(55);
2377
2378module.exports = __w_pdfjs_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {
2379 anObject(O);
2380 var keys = getKeys(Properties);
2381 var length = keys.length;
2382 var i = 0;
2383 var P;
2384
2385 while (length > i) {
2386 dP.f(O, P = keys[i++], Properties[P]);
2387 }
2388
2389 return O;
2390};
2391
2392/***/ }),
2393/* 55 */
2394/***/ (function(module, exports, __w_pdfjs_require__) {
2395
2396"use strict";
2397
2398
2399var $keys = __w_pdfjs_require__(56);
2400
2401var enumBugKeys = __w_pdfjs_require__(58);
2402
2403module.exports = Object.keys || function keys(O) {
2404 return $keys(O, enumBugKeys);
2405};
2406
2407/***/ }),
2408/* 56 */
2409/***/ (function(module, exports, __w_pdfjs_require__) {
2410
2411"use strict";
2412
2413
2414var has = __w_pdfjs_require__(21);
2415
2416var toIObject = __w_pdfjs_require__(43);
2417
2418var arrayIndexOf = __w_pdfjs_require__(42)(false);
2419
2420var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2421
2422module.exports = function (object, names) {
2423 var O = toIObject(object);
2424 var i = 0;
2425 var result = [];
2426 var key;
2427
2428 for (key in O) {
2429 if (key != IE_PROTO) has(O, key) && result.push(key);
2430 }
2431
2432 while (names.length > i) {
2433 if (has(O, key = names[i++])) {
2434 ~arrayIndexOf(result, key) || result.push(key);
2435 }
2436 }
2437
2438 return result;
2439};
2440
2441/***/ }),
2442/* 57 */
2443/***/ (function(module, exports, __w_pdfjs_require__) {
2444
2445"use strict";
2446
2447
2448var shared = __w_pdfjs_require__(24)('keys');
2449
2450var uid = __w_pdfjs_require__(22);
2451
2452module.exports = function (key) {
2453 return shared[key] || (shared[key] = uid(key));
2454};
2455
2456/***/ }),
2457/* 58 */
2458/***/ (function(module, exports, __w_pdfjs_require__) {
2459
2460"use strict";
2461
2462
2463module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
2464
2465/***/ }),
2466/* 59 */
2467/***/ (function(module, exports, __w_pdfjs_require__) {
2468
2469"use strict";
2470
2471
2472var document = __w_pdfjs_require__(8).document;
2473
2474module.exports = document && document.documentElement;
2475
2476/***/ }),
2477/* 60 */
2478/***/ (function(module, exports, __w_pdfjs_require__) {
2479
2480"use strict";
2481
2482
2483var def = __w_pdfjs_require__(11).f;
2484
2485var has = __w_pdfjs_require__(21);
2486
2487var TAG = __w_pdfjs_require__(33)('toStringTag');
2488
2489module.exports = function (it, tag, stat) {
2490 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
2491 configurable: true,
2492 value: tag
2493 });
2494};
2495
2496/***/ }),
2497/* 61 */
2498/***/ (function(module, exports, __w_pdfjs_require__) {
2499
2500"use strict";
2501
2502
2503var has = __w_pdfjs_require__(21);
2504
2505var toObject = __w_pdfjs_require__(62);
2506
2507var IE_PROTO = __w_pdfjs_require__(57)('IE_PROTO');
2508
2509var ObjectProto = Object.prototype;
2510
2511module.exports = Object.getPrototypeOf || function (O) {
2512 O = toObject(O);
2513 if (has(O, IE_PROTO)) return O[IE_PROTO];
2514
2515 if (typeof O.constructor == 'function' && O instanceof O.constructor) {
2516 return O.constructor.prototype;
2517 }
2518
2519 return O instanceof Object ? ObjectProto : null;
2520};
2521
2522/***/ }),
2523/* 62 */
2524/***/ (function(module, exports, __w_pdfjs_require__) {
2525
2526"use strict";
2527
2528
2529var defined = __w_pdfjs_require__(34);
2530
2531module.exports = function (it) {
2532 return Object(defined(it));
2533};
2534
2535/***/ }),
2536/* 63 */
2537/***/ (function(module, exports, __w_pdfjs_require__) {
2538
2539"use strict";
2540
2541
2542var ctx = __w_pdfjs_require__(26);
2543
2544var $export = __w_pdfjs_require__(7);
2545
2546var toObject = __w_pdfjs_require__(62);
2547
2548var call = __w_pdfjs_require__(64);
2549
2550var isArrayIter = __w_pdfjs_require__(65);
2551
2552var toLength = __w_pdfjs_require__(28);
2553
2554var createProperty = __w_pdfjs_require__(66);
2555
2556var getIterFn = __w_pdfjs_require__(67);
2557
2558$export($export.S + $export.F * !__w_pdfjs_require__(69)(function (iter) {
2559 Array.from(iter);
2560}), 'Array', {
2561 from: function from(arrayLike) {
2562 var O = toObject(arrayLike);
2563 var C = typeof this == 'function' ? this : Array;
2564 var aLen = arguments.length;
2565 var mapfn = aLen > 1 ? arguments[1] : undefined;
2566 var mapping = mapfn !== undefined;
2567 var index = 0;
2568 var iterFn = getIterFn(O);
2569 var length, result, step, iterator;
2570 if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
2571
2572 if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
2573 for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
2574 createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
2575 }
2576 } else {
2577 length = toLength(O.length);
2578
2579 for (result = new C(length); length > index; index++) {
2580 createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
2581 }
2582 }
2583
2584 result.length = index;
2585 return result;
2586 }
2587});
2588
2589/***/ }),
2590/* 64 */
2591/***/ (function(module, exports, __w_pdfjs_require__) {
2592
2593"use strict";
2594
2595
2596var anObject = __w_pdfjs_require__(12);
2597
2598module.exports = function (iterator, fn, value, entries) {
2599 try {
2600 return entries ? fn(anObject(value)[0], value[1]) : fn(value);
2601 } catch (e) {
2602 var ret = iterator['return'];
2603 if (ret !== undefined) anObject(ret.call(iterator));
2604 throw e;
2605 }
2606};
2607
2608/***/ }),
2609/* 65 */
2610/***/ (function(module, exports, __w_pdfjs_require__) {
2611
2612"use strict";
2613
2614
2615var Iterators = __w_pdfjs_require__(51);
2616
2617var ITERATOR = __w_pdfjs_require__(33)('iterator');
2618
2619var ArrayProto = Array.prototype;
2620
2621module.exports = function (it) {
2622 return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
2623};
2624
2625/***/ }),
2626/* 66 */
2627/***/ (function(module, exports, __w_pdfjs_require__) {
2628
2629"use strict";
2630
2631
2632var $defineProperty = __w_pdfjs_require__(11);
2633
2634var createDesc = __w_pdfjs_require__(19);
2635
2636module.exports = function (object, index, value) {
2637 if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value;
2638};
2639
2640/***/ }),
2641/* 67 */
2642/***/ (function(module, exports, __w_pdfjs_require__) {
2643
2644"use strict";
2645
2646
2647var classof = __w_pdfjs_require__(68);
2648
2649var ITERATOR = __w_pdfjs_require__(33)('iterator');
2650
2651var Iterators = __w_pdfjs_require__(51);
2652
2653module.exports = __w_pdfjs_require__(9).getIteratorMethod = function (it) {
2654 if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
2655};
2656
2657/***/ }),
2658/* 68 */
2659/***/ (function(module, exports, __w_pdfjs_require__) {
2660
2661"use strict";
2662
2663
2664var cof = __w_pdfjs_require__(32);
2665
2666var TAG = __w_pdfjs_require__(33)('toStringTag');
2667
2668var ARG = cof(function () {
2669 return arguments;
2670}()) == 'Arguments';
2671
2672var tryGet = function tryGet(it, key) {
2673 try {
2674 return it[key];
2675 } catch (e) {}
2676};
2677
2678module.exports = function (it) {
2679 var O, T, B;
2680 return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T : ARG ? cof(O) : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
2681};
2682
2683/***/ }),
2684/* 69 */
2685/***/ (function(module, exports, __w_pdfjs_require__) {
2686
2687"use strict";
2688
2689
2690var ITERATOR = __w_pdfjs_require__(33)('iterator');
2691
2692var SAFE_CLOSING = false;
2693
2694try {
2695 var riter = [7][ITERATOR]();
2696
2697 riter['return'] = function () {
2698 SAFE_CLOSING = true;
2699 };
2700
2701 Array.from(riter, function () {
2702 throw 2;
2703 });
2704} catch (e) {}
2705
2706module.exports = function (exec, skipClosing) {
2707 if (!skipClosing && !SAFE_CLOSING) return false;
2708 var safe = false;
2709
2710 try {
2711 var arr = [7];
2712 var iter = arr[ITERATOR]();
2713
2714 iter.next = function () {
2715 return {
2716 done: safe = true
2717 };
2718 };
2719
2720 arr[ITERATOR] = function () {
2721 return iter;
2722 };
2723
2724 exec(arr);
2725 } catch (e) {}
2726
2727 return safe;
2728};
2729
2730/***/ }),
2731/* 70 */
2732/***/ (function(module, exports, __w_pdfjs_require__) {
2733
2734"use strict";
2735
2736
2737__w_pdfjs_require__(71);
2738
2739module.exports = __w_pdfjs_require__(9).Object.assign;
2740
2741/***/ }),
2742/* 71 */
2743/***/ (function(module, exports, __w_pdfjs_require__) {
2744
2745"use strict";
2746
2747
2748var $export = __w_pdfjs_require__(7);
2749
2750$export($export.S + $export.F, 'Object', {
2751 assign: __w_pdfjs_require__(72)
2752});
2753
2754/***/ }),
2755/* 72 */
2756/***/ (function(module, exports, __w_pdfjs_require__) {
2757
2758"use strict";
2759
2760
2761var DESCRIPTORS = __w_pdfjs_require__(15);
2762
2763var getKeys = __w_pdfjs_require__(55);
2764
2765var gOPS = __w_pdfjs_require__(73);
2766
2767var pIE = __w_pdfjs_require__(74);
2768
2769var toObject = __w_pdfjs_require__(62);
2770
2771var IObject = __w_pdfjs_require__(44);
2772
2773var $assign = Object.assign;
2774module.exports = !$assign || __w_pdfjs_require__(16)(function () {
2775 var A = {};
2776 var B = {};
2777 var S = Symbol();
2778 var K = 'abcdefghijklmnopqrst';
2779 A[S] = 7;
2780 K.split('').forEach(function (k) {
2781 B[k] = k;
2782 });
2783 return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
2784}) ? function assign(target, source) {
2785 var T = toObject(target);
2786 var aLen = arguments.length;
2787 var index = 1;
2788 var getSymbols = gOPS.f;
2789 var isEnum = pIE.f;
2790
2791 while (aLen > index) {
2792 var S = IObject(arguments[index++]);
2793 var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
2794 var length = keys.length;
2795 var j = 0;
2796 var key;
2797
2798 while (length > j) {
2799 key = keys[j++];
2800 if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
2801 }
2802 }
2803
2804 return T;
2805} : $assign;
2806
2807/***/ }),
2808/* 73 */
2809/***/ (function(module, exports, __w_pdfjs_require__) {
2810
2811"use strict";
2812
2813
2814exports.f = Object.getOwnPropertySymbols;
2815
2816/***/ }),
2817/* 74 */
2818/***/ (function(module, exports, __w_pdfjs_require__) {
2819
2820"use strict";
2821
2822
2823exports.f = {}.propertyIsEnumerable;
2824
2825/***/ }),
2826/* 75 */
2827/***/ (function(module, exports, __w_pdfjs_require__) {
2828
2829"use strict";
2830
2831
2832__w_pdfjs_require__(76);
2833
2834module.exports = __w_pdfjs_require__(9).Math.log2;
2835
2836/***/ }),
2837/* 76 */
2838/***/ (function(module, exports, __w_pdfjs_require__) {
2839
2840"use strict";
2841
2842
2843var $export = __w_pdfjs_require__(7);
2844
2845$export($export.S, 'Math', {
2846 log2: function log2(x) {
2847 return Math.log(x) / Math.LN2;
2848 }
2849});
2850
2851/***/ }),
2852/* 77 */
2853/***/ (function(module, exports, __w_pdfjs_require__) {
2854
2855"use strict";
2856
2857
2858__w_pdfjs_require__(78);
2859
2860module.exports = __w_pdfjs_require__(9).Number.isNaN;
2861
2862/***/ }),
2863/* 78 */
2864/***/ (function(module, exports, __w_pdfjs_require__) {
2865
2866"use strict";
2867
2868
2869var $export = __w_pdfjs_require__(7);
2870
2871$export($export.S, 'Number', {
2872 isNaN: function isNaN(number) {
2873 return number != number;
2874 }
2875});
2876
2877/***/ }),
2878/* 79 */
2879/***/ (function(module, exports, __w_pdfjs_require__) {
2880
2881"use strict";
2882
2883
2884__w_pdfjs_require__(80);
2885
2886module.exports = __w_pdfjs_require__(9).Number.isInteger;
2887
2888/***/ }),
2889/* 80 */
2890/***/ (function(module, exports, __w_pdfjs_require__) {
2891
2892"use strict";
2893
2894
2895var $export = __w_pdfjs_require__(7);
2896
2897$export($export.S, 'Number', {
2898 isInteger: __w_pdfjs_require__(81)
2899});
2900
2901/***/ }),
2902/* 81 */
2903/***/ (function(module, exports, __w_pdfjs_require__) {
2904
2905"use strict";
2906
2907
2908var isObject = __w_pdfjs_require__(13);
2909
2910var floor = Math.floor;
2911
2912module.exports = function isInteger(it) {
2913 return !isObject(it) && isFinite(it) && floor(it) === it;
2914};
2915
2916/***/ }),
2917/* 82 */
2918/***/ (function(module, exports, __w_pdfjs_require__) {
2919
2920"use strict";
2921
2922
2923__w_pdfjs_require__(83);
2924
2925__w_pdfjs_require__(48);
2926
2927__w_pdfjs_require__(84);
2928
2929__w_pdfjs_require__(87);
2930
2931__w_pdfjs_require__(100);
2932
2933__w_pdfjs_require__(101);
2934
2935module.exports = __w_pdfjs_require__(9).Promise;
2936
2937/***/ }),
2938/* 83 */
2939/***/ (function(module, exports, __w_pdfjs_require__) {
2940
2941"use strict";
2942
2943
2944var classof = __w_pdfjs_require__(68);
2945
2946var test = {};
2947test[__w_pdfjs_require__(33)('toStringTag')] = 'z';
2948
2949if (test + '' != '[object z]') {
2950 __w_pdfjs_require__(20)(Object.prototype, 'toString', function toString() {
2951 return '[object ' + classof(this) + ']';
2952 }, true);
2953}
2954
2955/***/ }),
2956/* 84 */
2957/***/ (function(module, exports, __w_pdfjs_require__) {
2958
2959"use strict";
2960
2961
2962var $iterators = __w_pdfjs_require__(85);
2963
2964var getKeys = __w_pdfjs_require__(55);
2965
2966var redefine = __w_pdfjs_require__(20);
2967
2968var global = __w_pdfjs_require__(8);
2969
2970var hide = __w_pdfjs_require__(10);
2971
2972var Iterators = __w_pdfjs_require__(51);
2973
2974var wks = __w_pdfjs_require__(33);
2975
2976var ITERATOR = wks('iterator');
2977var TO_STRING_TAG = wks('toStringTag');
2978var ArrayValues = Iterators.Array;
2979var DOMIterables = {
2980 CSSRuleList: true,
2981 CSSStyleDeclaration: false,
2982 CSSValueList: false,
2983 ClientRectList: false,
2984 DOMRectList: false,
2985 DOMStringList: false,
2986 DOMTokenList: true,
2987 DataTransferItemList: false,
2988 FileList: false,
2989 HTMLAllCollection: false,
2990 HTMLCollection: false,
2991 HTMLFormElement: false,
2992 HTMLSelectElement: false,
2993 MediaList: true,
2994 MimeTypeArray: false,
2995 NamedNodeMap: false,
2996 NodeList: true,
2997 PaintRequestList: false,
2998 Plugin: false,
2999 PluginArray: false,
3000 SVGLengthList: false,
3001 SVGNumberList: false,
3002 SVGPathSegList: false,
3003 SVGPointList: false,
3004 SVGStringList: false,
3005 SVGTransformList: false,
3006 SourceBufferList: false,
3007 StyleSheetList: true,
3008 TextTrackCueList: false,
3009 TextTrackList: false,
3010 TouchList: false
3011};
3012
3013for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
3014 var NAME = collections[i];
3015 var explicit = DOMIterables[NAME];
3016 var Collection = global[NAME];
3017 var proto = Collection && Collection.prototype;
3018 var key;
3019
3020 if (proto) {
3021 if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
3022 if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
3023 Iterators[NAME] = ArrayValues;
3024 if (explicit) for (key in $iterators) {
3025 if (!proto[key]) redefine(proto, key, $iterators[key], true);
3026 }
3027 }
3028}
3029
3030/***/ }),
3031/* 85 */
3032/***/ (function(module, exports, __w_pdfjs_require__) {
3033
3034"use strict";
3035
3036
3037var addToUnscopables = __w_pdfjs_require__(46);
3038
3039var step = __w_pdfjs_require__(86);
3040
3041var Iterators = __w_pdfjs_require__(51);
3042
3043var toIObject = __w_pdfjs_require__(43);
3044
3045module.exports = __w_pdfjs_require__(50)(Array, 'Array', function (iterated, kind) {
3046 this._t = toIObject(iterated);
3047 this._i = 0;
3048 this._k = kind;
3049}, function () {
3050 var O = this._t;
3051 var kind = this._k;
3052 var index = this._i++;
3053
3054 if (!O || index >= O.length) {
3055 this._t = undefined;
3056 return step(1);
3057 }
3058
3059 if (kind == 'keys') return step(0, index);
3060 if (kind == 'values') return step(0, O[index]);
3061 return step(0, [index, O[index]]);
3062}, 'values');
3063Iterators.Arguments = Iterators.Array;
3064addToUnscopables('keys');
3065addToUnscopables('values');
3066addToUnscopables('entries');
3067
3068/***/ }),
3069/* 86 */
3070/***/ (function(module, exports, __w_pdfjs_require__) {
3071
3072"use strict";
3073
3074
3075module.exports = function (done, value) {
3076 return {
3077 value: value,
3078 done: !!done
3079 };
3080};
3081
3082/***/ }),
3083/* 87 */
3084/***/ (function(module, exports, __w_pdfjs_require__) {
3085
3086"use strict";
3087
3088
3089var LIBRARY = __w_pdfjs_require__(25);
3090
3091var global = __w_pdfjs_require__(8);
3092
3093var ctx = __w_pdfjs_require__(26);
3094
3095var classof = __w_pdfjs_require__(68);
3096
3097var $export = __w_pdfjs_require__(7);
3098
3099var isObject = __w_pdfjs_require__(13);
3100
3101var aFunction = __w_pdfjs_require__(27);
3102
3103var anInstance = __w_pdfjs_require__(88);
3104
3105var forOf = __w_pdfjs_require__(89);
3106
3107var speciesConstructor = __w_pdfjs_require__(90);
3108
3109var task = __w_pdfjs_require__(91).set;
3110
3111var microtask = __w_pdfjs_require__(93)();
3112
3113var newPromiseCapabilityModule = __w_pdfjs_require__(94);
3114
3115var perform = __w_pdfjs_require__(95);
3116
3117var userAgent = __w_pdfjs_require__(96);
3118
3119var promiseResolve = __w_pdfjs_require__(97);
3120
3121var PROMISE = 'Promise';
3122var TypeError = global.TypeError;
3123var process = global.process;
3124var versions = process && process.versions;
3125var v8 = versions && versions.v8 || '';
3126var $Promise = global[PROMISE];
3127var isNode = classof(process) == 'process';
3128
3129var empty = function empty() {};
3130
3131var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
3132var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
3133var USE_NATIVE = !!function () {
3134 try {
3135 var promise = $Promise.resolve(1);
3136
3137 var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(33)('species')] = function (exec) {
3138 exec(empty, empty);
3139 };
3140
3141 return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
3142 } catch (e) {}
3143}();
3144
3145var isThenable = function isThenable(it) {
3146 var then;
3147 return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
3148};
3149
3150var notify = function notify(promise, isReject) {
3151 if (promise._n) return;
3152 promise._n = true;
3153 var chain = promise._c;
3154 microtask(function () {
3155 var value = promise._v;
3156 var ok = promise._s == 1;
3157 var i = 0;
3158
3159 var run = function run(reaction) {
3160 var handler = ok ? reaction.ok : reaction.fail;
3161 var resolve = reaction.resolve;
3162 var reject = reaction.reject;
3163 var domain = reaction.domain;
3164 var result, then, exited;
3165
3166 try {
3167 if (handler) {
3168 if (!ok) {
3169 if (promise._h == 2) onHandleUnhandled(promise);
3170 promise._h = 1;
3171 }
3172
3173 if (handler === true) result = value;else {
3174 if (domain) domain.enter();
3175 result = handler(value);
3176
3177 if (domain) {
3178 domain.exit();
3179 exited = true;
3180 }
3181 }
3182
3183 if (result === reaction.promise) {
3184 reject(TypeError('Promise-chain cycle'));
3185 } else if (then = isThenable(result)) {
3186 then.call(result, resolve, reject);
3187 } else resolve(result);
3188 } else reject(value);
3189 } catch (e) {
3190 if (domain && !exited) domain.exit();
3191 reject(e);
3192 }
3193 };
3194
3195 while (chain.length > i) {
3196 run(chain[i++]);
3197 }
3198
3199 promise._c = [];
3200 promise._n = false;
3201 if (isReject && !promise._h) onUnhandled(promise);
3202 });
3203};
3204
3205var onUnhandled = function onUnhandled(promise) {
3206 task.call(global, function () {
3207 var value = promise._v;
3208 var unhandled = isUnhandled(promise);
3209 var result, handler, console;
3210
3211 if (unhandled) {
3212 result = perform(function () {
3213 if (isNode) {
3214 process.emit('unhandledRejection', value, promise);
3215 } else if (handler = global.onunhandledrejection) {
3216 handler({
3217 promise: promise,
3218 reason: value
3219 });
3220 } else if ((console = global.console) && console.error) {
3221 console.error('Unhandled promise rejection', value);
3222 }
3223 });
3224 promise._h = isNode || isUnhandled(promise) ? 2 : 1;
3225 }
3226
3227 promise._a = undefined;
3228 if (unhandled && result.e) throw result.v;
3229 });
3230};
3231
3232var isUnhandled = function isUnhandled(promise) {
3233 return promise._h !== 1 && (promise._a || promise._c).length === 0;
3234};
3235
3236var onHandleUnhandled = function onHandleUnhandled(promise) {
3237 task.call(global, function () {
3238 var handler;
3239
3240 if (isNode) {
3241 process.emit('rejectionHandled', promise);
3242 } else if (handler = global.onrejectionhandled) {
3243 handler({
3244 promise: promise,
3245 reason: promise._v
3246 });
3247 }
3248 });
3249};
3250
3251var $reject = function $reject(value) {
3252 var promise = this;
3253 if (promise._d) return;
3254 promise._d = true;
3255 promise = promise._w || promise;
3256 promise._v = value;
3257 promise._s = 2;
3258 if (!promise._a) promise._a = promise._c.slice();
3259 notify(promise, true);
3260};
3261
3262var $resolve = function $resolve(value) {
3263 var promise = this;
3264 var then;
3265 if (promise._d) return;
3266 promise._d = true;
3267 promise = promise._w || promise;
3268
3269 try {
3270 if (promise === value) throw TypeError("Promise can't be resolved itself");
3271
3272 if (then = isThenable(value)) {
3273 microtask(function () {
3274 var wrapper = {
3275 _w: promise,
3276 _d: false
3277 };
3278
3279 try {
3280 then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
3281 } catch (e) {
3282 $reject.call(wrapper, e);
3283 }
3284 });
3285 } else {
3286 promise._v = value;
3287 promise._s = 1;
3288 notify(promise, false);
3289 }
3290 } catch (e) {
3291 $reject.call({
3292 _w: promise,
3293 _d: false
3294 }, e);
3295 }
3296};
3297
3298if (!USE_NATIVE) {
3299 $Promise = function Promise(executor) {
3300 anInstance(this, $Promise, PROMISE, '_h');
3301 aFunction(executor);
3302 Internal.call(this);
3303
3304 try {
3305 executor(ctx($resolve, this, 1), ctx($reject, this, 1));
3306 } catch (err) {
3307 $reject.call(this, err);
3308 }
3309 };
3310
3311 Internal = function Promise(executor) {
3312 this._c = [];
3313 this._a = undefined;
3314 this._s = 0;
3315 this._d = false;
3316 this._v = undefined;
3317 this._h = 0;
3318 this._n = false;
3319 };
3320
3321 Internal.prototype = __w_pdfjs_require__(98)($Promise.prototype, {
3322 then: function then(onFulfilled, onRejected) {
3323 var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
3324 reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
3325 reaction.fail = typeof onRejected == 'function' && onRejected;
3326 reaction.domain = isNode ? process.domain : undefined;
3327
3328 this._c.push(reaction);
3329
3330 if (this._a) this._a.push(reaction);
3331 if (this._s) notify(this, false);
3332 return reaction.promise;
3333 },
3334 'catch': function _catch(onRejected) {
3335 return this.then(undefined, onRejected);
3336 }
3337 });
3338
3339 OwnPromiseCapability = function OwnPromiseCapability() {
3340 var promise = new Internal();
3341 this.promise = promise;
3342 this.resolve = ctx($resolve, promise, 1);
3343 this.reject = ctx($reject, promise, 1);
3344 };
3345
3346 newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
3347 return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
3348 };
3349}
3350
3351$export($export.G + $export.W + $export.F * !USE_NATIVE, {
3352 Promise: $Promise
3353});
3354
3355__w_pdfjs_require__(60)($Promise, PROMISE);
3356
3357__w_pdfjs_require__(99)(PROMISE);
3358
3359Wrapper = __w_pdfjs_require__(9)[PROMISE];
3360$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
3361 reject: function reject(r) {
3362 var capability = newPromiseCapability(this);
3363 var $$reject = capability.reject;
3364 $$reject(r);
3365 return capability.promise;
3366 }
3367});
3368$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
3369 resolve: function resolve(x) {
3370 return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
3371 }
3372});
3373$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(69)(function (iter) {
3374 $Promise.all(iter)['catch'](empty);
3375})), PROMISE, {
3376 all: function all(iterable) {
3377 var C = this;
3378 var capability = newPromiseCapability(C);
3379 var resolve = capability.resolve;
3380 var reject = capability.reject;
3381 var result = perform(function () {
3382 var values = [];
3383 var index = 0;
3384 var remaining = 1;
3385 forOf(iterable, false, function (promise) {
3386 var $index = index++;
3387 var alreadyCalled = false;
3388 values.push(undefined);
3389 remaining++;
3390 C.resolve(promise).then(function (value) {
3391 if (alreadyCalled) return;
3392 alreadyCalled = true;
3393 values[$index] = value;
3394 --remaining || resolve(values);
3395 }, reject);
3396 });
3397 --remaining || resolve(values);
3398 });
3399 if (result.e) reject(result.v);
3400 return capability.promise;
3401 },
3402 race: function race(iterable) {
3403 var C = this;
3404 var capability = newPromiseCapability(C);
3405 var reject = capability.reject;
3406 var result = perform(function () {
3407 forOf(iterable, false, function (promise) {
3408 C.resolve(promise).then(capability.resolve, reject);
3409 });
3410 });
3411 if (result.e) reject(result.v);
3412 return capability.promise;
3413 }
3414});
3415
3416/***/ }),
3417/* 88 */
3418/***/ (function(module, exports, __w_pdfjs_require__) {
3419
3420"use strict";
3421
3422
3423module.exports = function (it, Constructor, name, forbiddenField) {
3424 if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
3425 throw TypeError(name + ': incorrect invocation!');
3426 }
3427
3428 return it;
3429};
3430
3431/***/ }),
3432/* 89 */
3433/***/ (function(module, exports, __w_pdfjs_require__) {
3434
3435"use strict";
3436
3437
3438var ctx = __w_pdfjs_require__(26);
3439
3440var call = __w_pdfjs_require__(64);
3441
3442var isArrayIter = __w_pdfjs_require__(65);
3443
3444var anObject = __w_pdfjs_require__(12);
3445
3446var toLength = __w_pdfjs_require__(28);
3447
3448var getIterFn = __w_pdfjs_require__(67);
3449
3450var BREAK = {};
3451var RETURN = {};
3452
3453var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
3454 var iterFn = ITERATOR ? function () {
3455 return iterable;
3456 } : getIterFn(iterable);
3457 var f = ctx(fn, that, entries ? 2 : 1);
3458 var index = 0;
3459 var length, step, iterator, result;
3460 if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
3461 if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
3462 result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
3463 if (result === BREAK || result === RETURN) return result;
3464 } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
3465 result = call(iterator, f, step.value, entries);
3466 if (result === BREAK || result === RETURN) return result;
3467 }
3468};
3469
3470_exports.BREAK = BREAK;
3471_exports.RETURN = RETURN;
3472
3473/***/ }),
3474/* 90 */
3475/***/ (function(module, exports, __w_pdfjs_require__) {
3476
3477"use strict";
3478
3479
3480var anObject = __w_pdfjs_require__(12);
3481
3482var aFunction = __w_pdfjs_require__(27);
3483
3484var SPECIES = __w_pdfjs_require__(33)('species');
3485
3486module.exports = function (O, D) {
3487 var C = anObject(O).constructor;
3488 var S;
3489 return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
3490};
3491
3492/***/ }),
3493/* 91 */
3494/***/ (function(module, exports, __w_pdfjs_require__) {
3495
3496"use strict";
3497
3498
3499var ctx = __w_pdfjs_require__(26);
3500
3501var invoke = __w_pdfjs_require__(92);
3502
3503var html = __w_pdfjs_require__(59);
3504
3505var cel = __w_pdfjs_require__(17);
3506
3507var global = __w_pdfjs_require__(8);
3508
3509var process = global.process;
3510var setTask = global.setImmediate;
3511var clearTask = global.clearImmediate;
3512var MessageChannel = global.MessageChannel;
3513var Dispatch = global.Dispatch;
3514var counter = 0;
3515var queue = {};
3516var ONREADYSTATECHANGE = 'onreadystatechange';
3517var defer, channel, port;
3518
3519var run = function run() {
3520 var id = +this;
3521
3522 if (queue.hasOwnProperty(id)) {
3523 var fn = queue[id];
3524 delete queue[id];
3525 fn();
3526 }
3527};
3528
3529var listener = function listener(event) {
3530 run.call(event.data);
3531};
3532
3533if (!setTask || !clearTask) {
3534 setTask = function setImmediate(fn) {
3535 var args = [];
3536 var i = 1;
3537
3538 while (arguments.length > i) {
3539 args.push(arguments[i++]);
3540 }
3541
3542 queue[++counter] = function () {
3543 invoke(typeof fn == 'function' ? fn : Function(fn), args);
3544 };
3545
3546 defer(counter);
3547 return counter;
3548 };
3549
3550 clearTask = function clearImmediate(id) {
3551 delete queue[id];
3552 };
3553
3554 if (__w_pdfjs_require__(32)(process) == 'process') {
3555 defer = function defer(id) {
3556 process.nextTick(ctx(run, id, 1));
3557 };
3558 } else if (Dispatch && Dispatch.now) {
3559 defer = function defer(id) {
3560 Dispatch.now(ctx(run, id, 1));
3561 };
3562 } else if (MessageChannel) {
3563 channel = new MessageChannel();
3564 port = channel.port2;
3565 channel.port1.onmessage = listener;
3566 defer = ctx(port.postMessage, port, 1);
3567 } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
3568 defer = function defer(id) {
3569 global.postMessage(id + '', '*');
3570 };
3571
3572 global.addEventListener('message', listener, false);
3573 } else if (ONREADYSTATECHANGE in cel('script')) {
3574 defer = function defer(id) {
3575 html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
3576 html.removeChild(this);
3577 run.call(id);
3578 };
3579 };
3580 } else {
3581 defer = function defer(id) {
3582 setTimeout(ctx(run, id, 1), 0);
3583 };
3584 }
3585}
3586
3587module.exports = {
3588 set: setTask,
3589 clear: clearTask
3590};
3591
3592/***/ }),
3593/* 92 */
3594/***/ (function(module, exports, __w_pdfjs_require__) {
3595
3596"use strict";
3597
3598
3599module.exports = function (fn, args, that) {
3600 var un = that === undefined;
3601
3602 switch (args.length) {
3603 case 0:
3604 return un ? fn() : fn.call(that);
3605
3606 case 1:
3607 return un ? fn(args[0]) : fn.call(that, args[0]);
3608
3609 case 2:
3610 return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
3611
3612 case 3:
3613 return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
3614
3615 case 4:
3616 return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
3617 }
3618
3619 return fn.apply(that, args);
3620};
3621
3622/***/ }),
3623/* 93 */
3624/***/ (function(module, exports, __w_pdfjs_require__) {
3625
3626"use strict";
3627
3628
3629var global = __w_pdfjs_require__(8);
3630
3631var macrotask = __w_pdfjs_require__(91).set;
3632
3633var Observer = global.MutationObserver || global.WebKitMutationObserver;
3634var process = global.process;
3635var Promise = global.Promise;
3636var isNode = __w_pdfjs_require__(32)(process) == 'process';
3637
3638module.exports = function () {
3639 var head, last, notify;
3640
3641 var flush = function flush() {
3642 var parent, fn;
3643 if (isNode && (parent = process.domain)) parent.exit();
3644
3645 while (head) {
3646 fn = head.fn;
3647 head = head.next;
3648
3649 try {
3650 fn();
3651 } catch (e) {
3652 if (head) notify();else last = undefined;
3653 throw e;
3654 }
3655 }
3656
3657 last = undefined;
3658 if (parent) parent.enter();
3659 };
3660
3661 if (isNode) {
3662 notify = function notify() {
3663 process.nextTick(flush);
3664 };
3665 } else if (Observer && !(global.navigator && global.navigator.standalone)) {
3666 var toggle = true;
3667 var node = document.createTextNode('');
3668 new Observer(flush).observe(node, {
3669 characterData: true
3670 });
3671
3672 notify = function notify() {
3673 node.data = toggle = !toggle;
3674 };
3675 } else if (Promise && Promise.resolve) {
3676 var promise = Promise.resolve(undefined);
3677
3678 notify = function notify() {
3679 promise.then(flush);
3680 };
3681 } else {
3682 notify = function notify() {
3683 macrotask.call(global, flush);
3684 };
3685 }
3686
3687 return function (fn) {
3688 var task = {
3689 fn: fn,
3690 next: undefined
3691 };
3692 if (last) last.next = task;
3693
3694 if (!head) {
3695 head = task;
3696 notify();
3697 }
3698
3699 last = task;
3700 };
3701};
3702
3703/***/ }),
3704/* 94 */
3705/***/ (function(module, exports, __w_pdfjs_require__) {
3706
3707"use strict";
3708
3709
3710var aFunction = __w_pdfjs_require__(27);
3711
3712function PromiseCapability(C) {
3713 var resolve, reject;
3714 this.promise = new C(function ($$resolve, $$reject) {
3715 if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3716 resolve = $$resolve;
3717 reject = $$reject;
3718 });
3719 this.resolve = aFunction(resolve);
3720 this.reject = aFunction(reject);
3721}
3722
3723module.exports.f = function (C) {
3724 return new PromiseCapability(C);
3725};
3726
3727/***/ }),
3728/* 95 */
3729/***/ (function(module, exports, __w_pdfjs_require__) {
3730
3731"use strict";
3732
3733
3734module.exports = function (exec) {
3735 try {
3736 return {
3737 e: false,
3738 v: exec()
3739 };
3740 } catch (e) {
3741 return {
3742 e: true,
3743 v: e
3744 };
3745 }
3746};
3747
3748/***/ }),
3749/* 96 */
3750/***/ (function(module, exports, __w_pdfjs_require__) {
3751
3752"use strict";
3753
3754
3755var global = __w_pdfjs_require__(8);
3756
3757var navigator = global.navigator;
3758module.exports = navigator && navigator.userAgent || '';
3759
3760/***/ }),
3761/* 97 */
3762/***/ (function(module, exports, __w_pdfjs_require__) {
3763
3764"use strict";
3765
3766
3767var anObject = __w_pdfjs_require__(12);
3768
3769var isObject = __w_pdfjs_require__(13);
3770
3771var newPromiseCapability = __w_pdfjs_require__(94);
3772
3773module.exports = function (C, x) {
3774 anObject(C);
3775 if (isObject(x) && x.constructor === C) return x;
3776 var promiseCapability = newPromiseCapability.f(C);
3777 var resolve = promiseCapability.resolve;
3778 resolve(x);
3779 return promiseCapability.promise;
3780};
3781
3782/***/ }),
3783/* 98 */
3784/***/ (function(module, exports, __w_pdfjs_require__) {
3785
3786"use strict";
3787
3788
3789var redefine = __w_pdfjs_require__(20);
3790
3791module.exports = function (target, src, safe) {
3792 for (var key in src) {
3793 redefine(target, key, src[key], safe);
3794 }
3795
3796 return target;
3797};
3798
3799/***/ }),
3800/* 99 */
3801/***/ (function(module, exports, __w_pdfjs_require__) {
3802
3803"use strict";
3804
3805
3806var global = __w_pdfjs_require__(8);
3807
3808var dP = __w_pdfjs_require__(11);
3809
3810var DESCRIPTORS = __w_pdfjs_require__(15);
3811
3812var SPECIES = __w_pdfjs_require__(33)('species');
3813
3814module.exports = function (KEY) {
3815 var C = global[KEY];
3816 if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
3817 configurable: true,
3818 get: function get() {
3819 return this;
3820 }
3821 });
3822};
3823
3824/***/ }),
3825/* 100 */
3826/***/ (function(module, exports, __w_pdfjs_require__) {
3827
3828"use strict";
3829
3830
3831var $export = __w_pdfjs_require__(7);
3832
3833var core = __w_pdfjs_require__(9);
3834
3835var global = __w_pdfjs_require__(8);
3836
3837var speciesConstructor = __w_pdfjs_require__(90);
3838
3839var promiseResolve = __w_pdfjs_require__(97);
3840
3841$export($export.P + $export.R, 'Promise', {
3842 'finally': function _finally(onFinally) {
3843 var C = speciesConstructor(this, core.Promise || global.Promise);
3844 var isFunction = typeof onFinally == 'function';
3845 return this.then(isFunction ? function (x) {
3846 return promiseResolve(C, onFinally()).then(function () {
3847 return x;
3848 });
3849 } : onFinally, isFunction ? function (e) {
3850 return promiseResolve(C, onFinally()).then(function () {
3851 throw e;
3852 });
3853 } : onFinally);
3854 }
3855});
3856
3857/***/ }),
3858/* 101 */
3859/***/ (function(module, exports, __w_pdfjs_require__) {
3860
3861"use strict";
3862
3863
3864var $export = __w_pdfjs_require__(7);
3865
3866var newPromiseCapability = __w_pdfjs_require__(94);
3867
3868var perform = __w_pdfjs_require__(95);
3869
3870$export($export.S, 'Promise', {
3871 'try': function _try(callbackfn) {
3872 var promiseCapability = newPromiseCapability.f(this);
3873 var result = perform(callbackfn);
3874 (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
3875 return promiseCapability.promise;
3876 }
3877});
3878
3879/***/ }),
3880/* 102 */
3881/***/ (function(module, exports, __w_pdfjs_require__) {
3882
3883"use strict";
3884
3885
3886__w_pdfjs_require__(83);
3887
3888__w_pdfjs_require__(84);
3889
3890__w_pdfjs_require__(103);
3891
3892__w_pdfjs_require__(115);
3893
3894__w_pdfjs_require__(117);
3895
3896module.exports = __w_pdfjs_require__(9).WeakMap;
3897
3898/***/ }),
3899/* 103 */
3900/***/ (function(module, exports, __w_pdfjs_require__) {
3901
3902"use strict";
3903
3904
3905var global = __w_pdfjs_require__(8);
3906
3907var each = __w_pdfjs_require__(104)(0);
3908
3909var redefine = __w_pdfjs_require__(20);
3910
3911var meta = __w_pdfjs_require__(108);
3912
3913var assign = __w_pdfjs_require__(72);
3914
3915var weak = __w_pdfjs_require__(109);
3916
3917var isObject = __w_pdfjs_require__(13);
3918
3919var validate = __w_pdfjs_require__(110);
3920
3921var NATIVE_WEAK_MAP = __w_pdfjs_require__(110);
3922
3923var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
3924var WEAK_MAP = 'WeakMap';
3925var getWeak = meta.getWeak;
3926var isExtensible = Object.isExtensible;
3927var uncaughtFrozenStore = weak.ufstore;
3928var InternalMap;
3929
3930var wrapper = function wrapper(get) {
3931 return function WeakMap() {
3932 return get(this, arguments.length > 0 ? arguments[0] : undefined);
3933 };
3934};
3935
3936var methods = {
3937 get: function get(key) {
3938 if (isObject(key)) {
3939 var data = getWeak(key);
3940 if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
3941 return data ? data[this._i] : undefined;
3942 }
3943 },
3944 set: function set(key, value) {
3945 return weak.def(validate(this, WEAK_MAP), key, value);
3946 }
3947};
3948
3949var $WeakMap = module.exports = __w_pdfjs_require__(111)(WEAK_MAP, wrapper, methods, weak, true, true);
3950
3951if (NATIVE_WEAK_MAP && IS_IE11) {
3952 InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
3953 assign(InternalMap.prototype, methods);
3954 meta.NEED = true;
3955 each(['delete', 'has', 'get', 'set'], function (key) {
3956 var proto = $WeakMap.prototype;
3957 var method = proto[key];
3958 redefine(proto, key, function (a, b) {
3959 if (isObject(a) && !isExtensible(a)) {
3960 if (!this._f) this._f = new InternalMap();
3961
3962 var result = this._f[key](a, b);
3963
3964 return key == 'set' ? this : result;
3965 }
3966
3967 return method.call(this, a, b);
3968 });
3969 });
3970}
3971
3972/***/ }),
3973/* 104 */
3974/***/ (function(module, exports, __w_pdfjs_require__) {
3975
3976"use strict";
3977
3978
3979var ctx = __w_pdfjs_require__(26);
3980
3981var IObject = __w_pdfjs_require__(44);
3982
3983var toObject = __w_pdfjs_require__(62);
3984
3985var toLength = __w_pdfjs_require__(28);
3986
3987var asc = __w_pdfjs_require__(105);
3988
3989module.exports = function (TYPE, $create) {
3990 var IS_MAP = TYPE == 1;
3991 var IS_FILTER = TYPE == 2;
3992 var IS_SOME = TYPE == 3;
3993 var IS_EVERY = TYPE == 4;
3994 var IS_FIND_INDEX = TYPE == 6;
3995 var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
3996 var create = $create || asc;
3997 return function ($this, callbackfn, that) {
3998 var O = toObject($this);
3999 var self = IObject(O);
4000 var f = ctx(callbackfn, that, 3);
4001 var length = toLength(self.length);
4002 var index = 0;
4003 var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
4004 var val, res;
4005
4006 for (; length > index; index++) {
4007 if (NO_HOLES || index in self) {
4008 val = self[index];
4009 res = f(val, index, O);
4010
4011 if (TYPE) {
4012 if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
4013 case 3:
4014 return true;
4015
4016 case 5:
4017 return val;
4018
4019 case 6:
4020 return index;
4021
4022 case 2:
4023 result.push(val);
4024 } else if (IS_EVERY) return false;
4025 }
4026 }
4027 }
4028
4029 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
4030 };
4031};
4032
4033/***/ }),
4034/* 105 */
4035/***/ (function(module, exports, __w_pdfjs_require__) {
4036
4037"use strict";
4038
4039
4040var speciesConstructor = __w_pdfjs_require__(106);
4041
4042module.exports = function (original, length) {
4043 return new (speciesConstructor(original))(length);
4044};
4045
4046/***/ }),
4047/* 106 */
4048/***/ (function(module, exports, __w_pdfjs_require__) {
4049
4050"use strict";
4051
4052
4053var isObject = __w_pdfjs_require__(13);
4054
4055var isArray = __w_pdfjs_require__(107);
4056
4057var SPECIES = __w_pdfjs_require__(33)('species');
4058
4059module.exports = function (original) {
4060 var C;
4061
4062 if (isArray(original)) {
4063 C = original.constructor;
4064 if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
4065
4066 if (isObject(C)) {
4067 C = C[SPECIES];
4068 if (C === null) C = undefined;
4069 }
4070 }
4071
4072 return C === undefined ? Array : C;
4073};
4074
4075/***/ }),
4076/* 107 */
4077/***/ (function(module, exports, __w_pdfjs_require__) {
4078
4079"use strict";
4080
4081
4082var cof = __w_pdfjs_require__(32);
4083
4084module.exports = Array.isArray || function isArray(arg) {
4085 return cof(arg) == 'Array';
4086};
4087
4088/***/ }),
4089/* 108 */
4090/***/ (function(module, exports, __w_pdfjs_require__) {
4091
4092"use strict";
4093
4094
4095function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4096
4097var META = __w_pdfjs_require__(22)('meta');
4098
4099var isObject = __w_pdfjs_require__(13);
4100
4101var has = __w_pdfjs_require__(21);
4102
4103var setDesc = __w_pdfjs_require__(11).f;
4104
4105var id = 0;
4106
4107var isExtensible = Object.isExtensible || function () {
4108 return true;
4109};
4110
4111var FREEZE = !__w_pdfjs_require__(16)(function () {
4112 return isExtensible(Object.preventExtensions({}));
4113});
4114
4115var setMeta = function setMeta(it) {
4116 setDesc(it, META, {
4117 value: {
4118 i: 'O' + ++id,
4119 w: {}
4120 }
4121 });
4122};
4123
4124var fastKey = function fastKey(it, create) {
4125 if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
4126
4127 if (!has(it, META)) {
4128 if (!isExtensible(it)) return 'F';
4129 if (!create) return 'E';
4130 setMeta(it);
4131 }
4132
4133 return it[META].i;
4134};
4135
4136var getWeak = function getWeak(it, create) {
4137 if (!has(it, META)) {
4138 if (!isExtensible(it)) return true;
4139 if (!create) return false;
4140 setMeta(it);
4141 }
4142
4143 return it[META].w;
4144};
4145
4146var onFreeze = function onFreeze(it) {
4147 if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
4148 return it;
4149};
4150
4151var meta = module.exports = {
4152 KEY: META,
4153 NEED: false,
4154 fastKey: fastKey,
4155 getWeak: getWeak,
4156 onFreeze: onFreeze
4157};
4158
4159/***/ }),
4160/* 109 */
4161/***/ (function(module, exports, __w_pdfjs_require__) {
4162
4163"use strict";
4164
4165
4166var redefineAll = __w_pdfjs_require__(98);
4167
4168var getWeak = __w_pdfjs_require__(108).getWeak;
4169
4170var anObject = __w_pdfjs_require__(12);
4171
4172var isObject = __w_pdfjs_require__(13);
4173
4174var anInstance = __w_pdfjs_require__(88);
4175
4176var forOf = __w_pdfjs_require__(89);
4177
4178var createArrayMethod = __w_pdfjs_require__(104);
4179
4180var $has = __w_pdfjs_require__(21);
4181
4182var validate = __w_pdfjs_require__(110);
4183
4184var arrayFind = createArrayMethod(5);
4185var arrayFindIndex = createArrayMethod(6);
4186var id = 0;
4187
4188var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
4189 return that._l || (that._l = new UncaughtFrozenStore());
4190};
4191
4192var UncaughtFrozenStore = function UncaughtFrozenStore() {
4193 this.a = [];
4194};
4195
4196var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
4197 return arrayFind(store.a, function (it) {
4198 return it[0] === key;
4199 });
4200};
4201
4202UncaughtFrozenStore.prototype = {
4203 get: function get(key) {
4204 var entry = findUncaughtFrozen(this, key);
4205 if (entry) return entry[1];
4206 },
4207 has: function has(key) {
4208 return !!findUncaughtFrozen(this, key);
4209 },
4210 set: function set(key, value) {
4211 var entry = findUncaughtFrozen(this, key);
4212 if (entry) entry[1] = value;else this.a.push([key, value]);
4213 },
4214 'delete': function _delete(key) {
4215 var index = arrayFindIndex(this.a, function (it) {
4216 return it[0] === key;
4217 });
4218 if (~index) this.a.splice(index, 1);
4219 return !!~index;
4220 }
4221};
4222module.exports = {
4223 getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
4224 var C = wrapper(function (that, iterable) {
4225 anInstance(that, C, NAME, '_i');
4226 that._t = NAME;
4227 that._i = id++;
4228 that._l = undefined;
4229 if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4230 });
4231 redefineAll(C.prototype, {
4232 'delete': function _delete(key) {
4233 if (!isObject(key)) return false;
4234 var data = getWeak(key);
4235 if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
4236 return data && $has(data, this._i) && delete data[this._i];
4237 },
4238 has: function has(key) {
4239 if (!isObject(key)) return false;
4240 var data = getWeak(key);
4241 if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
4242 return data && $has(data, this._i);
4243 }
4244 });
4245 return C;
4246 },
4247 def: function def(that, key, value) {
4248 var data = getWeak(anObject(key), true);
4249 if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
4250 return that;
4251 },
4252 ufstore: uncaughtFrozenStore
4253};
4254
4255/***/ }),
4256/* 110 */
4257/***/ (function(module, exports, __w_pdfjs_require__) {
4258
4259"use strict";
4260
4261
4262var isObject = __w_pdfjs_require__(13);
4263
4264module.exports = function (it, TYPE) {
4265 if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
4266 return it;
4267};
4268
4269/***/ }),
4270/* 111 */
4271/***/ (function(module, exports, __w_pdfjs_require__) {
4272
4273"use strict";
4274
4275
4276var global = __w_pdfjs_require__(8);
4277
4278var $export = __w_pdfjs_require__(7);
4279
4280var redefine = __w_pdfjs_require__(20);
4281
4282var redefineAll = __w_pdfjs_require__(98);
4283
4284var meta = __w_pdfjs_require__(108);
4285
4286var forOf = __w_pdfjs_require__(89);
4287
4288var anInstance = __w_pdfjs_require__(88);
4289
4290var isObject = __w_pdfjs_require__(13);
4291
4292var fails = __w_pdfjs_require__(16);
4293
4294var $iterDetect = __w_pdfjs_require__(69);
4295
4296var setToStringTag = __w_pdfjs_require__(60);
4297
4298var inheritIfRequired = __w_pdfjs_require__(112);
4299
4300module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
4301 var Base = global[NAME];
4302 var C = Base;
4303 var ADDER = IS_MAP ? 'set' : 'add';
4304 var proto = C && C.prototype;
4305 var O = {};
4306
4307 var fixMethod = function fixMethod(KEY) {
4308 var fn = proto[KEY];
4309 redefine(proto, KEY, KEY == 'delete' ? function (a) {
4310 return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4311 } : KEY == 'has' ? function has(a) {
4312 return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4313 } : KEY == 'get' ? function get(a) {
4314 return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
4315 } : KEY == 'add' ? function add(a) {
4316 fn.call(this, a === 0 ? 0 : a);
4317 return this;
4318 } : function set(a, b) {
4319 fn.call(this, a === 0 ? 0 : a, b);
4320 return this;
4321 });
4322 };
4323
4324 if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
4325 new C().entries().next();
4326 }))) {
4327 C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
4328 redefineAll(C.prototype, methods);
4329 meta.NEED = true;
4330 } else {
4331 var instance = new C();
4332 var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
4333 var THROWS_ON_PRIMITIVES = fails(function () {
4334 instance.has(1);
4335 });
4336 var ACCEPT_ITERABLES = $iterDetect(function (iter) {
4337 new C(iter);
4338 });
4339 var BUGGY_ZERO = !IS_WEAK && fails(function () {
4340 var $instance = new C();
4341 var index = 5;
4342
4343 while (index--) {
4344 $instance[ADDER](index, index);
4345 }
4346
4347 return !$instance.has(-0);
4348 });
4349
4350 if (!ACCEPT_ITERABLES) {
4351 C = wrapper(function (target, iterable) {
4352 anInstance(target, C, NAME);
4353 var that = inheritIfRequired(new Base(), target, C);
4354 if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4355 return that;
4356 });
4357 C.prototype = proto;
4358 proto.constructor = C;
4359 }
4360
4361 if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
4362 fixMethod('delete');
4363 fixMethod('has');
4364 IS_MAP && fixMethod('get');
4365 }
4366
4367 if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
4368 if (IS_WEAK && proto.clear) delete proto.clear;
4369 }
4370
4371 setToStringTag(C, NAME);
4372 O[NAME] = C;
4373 $export($export.G + $export.W + $export.F * (C != Base), O);
4374 if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
4375 return C;
4376};
4377
4378/***/ }),
4379/* 112 */
4380/***/ (function(module, exports, __w_pdfjs_require__) {
4381
4382"use strict";
4383
4384
4385var isObject = __w_pdfjs_require__(13);
4386
4387var setPrototypeOf = __w_pdfjs_require__(113).set;
4388
4389module.exports = function (that, target, C) {
4390 var S = target.constructor;
4391 var P;
4392
4393 if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
4394 setPrototypeOf(that, P);
4395 }
4396
4397 return that;
4398};
4399
4400/***/ }),
4401/* 113 */
4402/***/ (function(module, exports, __w_pdfjs_require__) {
4403
4404"use strict";
4405
4406
4407var isObject = __w_pdfjs_require__(13);
4408
4409var anObject = __w_pdfjs_require__(12);
4410
4411var check = function check(O, proto) {
4412 anObject(O);
4413 if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
4414};
4415
4416module.exports = {
4417 set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
4418 try {
4419 set = __w_pdfjs_require__(26)(Function.call, __w_pdfjs_require__(114).f(Object.prototype, '__proto__').set, 2);
4420 set(test, []);
4421 buggy = !(test instanceof Array);
4422 } catch (e) {
4423 buggy = true;
4424 }
4425
4426 return function setPrototypeOf(O, proto) {
4427 check(O, proto);
4428 if (buggy) O.__proto__ = proto;else set(O, proto);
4429 return O;
4430 };
4431 }({}, false) : undefined),
4432 check: check
4433};
4434
4435/***/ }),
4436/* 114 */
4437/***/ (function(module, exports, __w_pdfjs_require__) {
4438
4439"use strict";
4440
4441
4442var pIE = __w_pdfjs_require__(74);
4443
4444var createDesc = __w_pdfjs_require__(19);
4445
4446var toIObject = __w_pdfjs_require__(43);
4447
4448var toPrimitive = __w_pdfjs_require__(18);
4449
4450var has = __w_pdfjs_require__(21);
4451
4452var IE8_DOM_DEFINE = __w_pdfjs_require__(14);
4453
4454var gOPD = Object.getOwnPropertyDescriptor;
4455exports.f = __w_pdfjs_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {
4456 O = toIObject(O);
4457 P = toPrimitive(P, true);
4458 if (IE8_DOM_DEFINE) try {
4459 return gOPD(O, P);
4460 } catch (e) {}
4461 if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
4462};
4463
4464/***/ }),
4465/* 115 */
4466/***/ (function(module, exports, __w_pdfjs_require__) {
4467
4468"use strict";
4469
4470
4471__w_pdfjs_require__(116)('WeakMap');
4472
4473/***/ }),
4474/* 116 */
4475/***/ (function(module, exports, __w_pdfjs_require__) {
4476
4477"use strict";
4478
4479
4480var $export = __w_pdfjs_require__(7);
4481
4482module.exports = function (COLLECTION) {
4483 $export($export.S, COLLECTION, {
4484 of: function of() {
4485 var length = arguments.length;
4486 var A = new Array(length);
4487
4488 while (length--) {
4489 A[length] = arguments[length];
4490 }
4491
4492 return new this(A);
4493 }
4494 });
4495};
4496
4497/***/ }),
4498/* 117 */
4499/***/ (function(module, exports, __w_pdfjs_require__) {
4500
4501"use strict";
4502
4503
4504__w_pdfjs_require__(118)('WeakMap');
4505
4506/***/ }),
4507/* 118 */
4508/***/ (function(module, exports, __w_pdfjs_require__) {
4509
4510"use strict";
4511
4512
4513var $export = __w_pdfjs_require__(7);
4514
4515var aFunction = __w_pdfjs_require__(27);
4516
4517var ctx = __w_pdfjs_require__(26);
4518
4519var forOf = __w_pdfjs_require__(89);
4520
4521module.exports = function (COLLECTION) {
4522 $export($export.S, COLLECTION, {
4523 from: function from(source) {
4524 var mapFn = arguments[1];
4525 var mapping, A, n, cb;
4526 aFunction(this);
4527 mapping = mapFn !== undefined;
4528 if (mapping) aFunction(mapFn);
4529 if (source == undefined) return new this();
4530 A = [];
4531
4532 if (mapping) {
4533 n = 0;
4534 cb = ctx(mapFn, arguments[2], 2);
4535 forOf(source, false, function (nextItem) {
4536 A.push(cb(nextItem, n++));
4537 });
4538 } else {
4539 forOf(source, false, A.push, A);
4540 }
4541
4542 return new this(A);
4543 }
4544 });
4545};
4546
4547/***/ }),
4548/* 119 */
4549/***/ (function(module, exports, __w_pdfjs_require__) {
4550
4551"use strict";
4552
4553
4554__w_pdfjs_require__(83);
4555
4556__w_pdfjs_require__(84);
4557
4558__w_pdfjs_require__(120);
4559
4560__w_pdfjs_require__(121);
4561
4562__w_pdfjs_require__(122);
4563
4564module.exports = __w_pdfjs_require__(9).WeakSet;
4565
4566/***/ }),
4567/* 120 */
4568/***/ (function(module, exports, __w_pdfjs_require__) {
4569
4570"use strict";
4571
4572
4573var weak = __w_pdfjs_require__(109);
4574
4575var validate = __w_pdfjs_require__(110);
4576
4577var WEAK_SET = 'WeakSet';
4578
4579__w_pdfjs_require__(111)(WEAK_SET, function (get) {
4580 return function WeakSet() {
4581 return get(this, arguments.length > 0 ? arguments[0] : undefined);
4582 };
4583}, {
4584 add: function add(value) {
4585 return weak.def(validate(this, WEAK_SET), value, true);
4586 }
4587}, weak, false, true);
4588
4589/***/ }),
4590/* 121 */
4591/***/ (function(module, exports, __w_pdfjs_require__) {
4592
4593"use strict";
4594
4595
4596__w_pdfjs_require__(116)('WeakSet');
4597
4598/***/ }),
4599/* 122 */
4600/***/ (function(module, exports, __w_pdfjs_require__) {
4601
4602"use strict";
4603
4604
4605__w_pdfjs_require__(118)('WeakSet');
4606
4607/***/ }),
4608/* 123 */
4609/***/ (function(module, exports, __w_pdfjs_require__) {
4610
4611"use strict";
4612
4613
4614__w_pdfjs_require__(124);
4615
4616module.exports = __w_pdfjs_require__(9).String.codePointAt;
4617
4618/***/ }),
4619/* 124 */
4620/***/ (function(module, exports, __w_pdfjs_require__) {
4621
4622"use strict";
4623
4624
4625var $export = __w_pdfjs_require__(7);
4626
4627var $at = __w_pdfjs_require__(49)(false);
4628
4629$export($export.P, 'String', {
4630 codePointAt: function codePointAt(pos) {
4631 return $at(this, pos);
4632 }
4633});
4634
4635/***/ }),
4636/* 125 */
4637/***/ (function(module, exports, __w_pdfjs_require__) {
4638
4639"use strict";
4640
4641
4642__w_pdfjs_require__(126);
4643
4644module.exports = __w_pdfjs_require__(9).String.fromCodePoint;
4645
4646/***/ }),
4647/* 126 */
4648/***/ (function(module, exports, __w_pdfjs_require__) {
4649
4650"use strict";
4651
4652
4653var $export = __w_pdfjs_require__(7);
4654
4655var toAbsoluteIndex = __w_pdfjs_require__(45);
4656
4657var fromCharCode = String.fromCharCode;
4658var $fromCodePoint = String.fromCodePoint;
4659$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
4660 fromCodePoint: function fromCodePoint(x) {
4661 var res = [];
4662 var aLen = arguments.length;
4663 var i = 0;
4664 var code;
4665
4666 while (aLen > i) {
4667 code = +arguments[i++];
4668 if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
4669 res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
4670 }
4671
4672 return res.join('');
4673 }
4674});
4675
4676/***/ }),
4677/* 127 */
4678/***/ (function(module, exports, __w_pdfjs_require__) {
4679
4680"use strict";
4681
4682
4683__w_pdfjs_require__(128);
4684
4685__w_pdfjs_require__(83);
4686
4687module.exports = __w_pdfjs_require__(9).Symbol;
4688
4689/***/ }),
4690/* 128 */
4691/***/ (function(module, exports, __w_pdfjs_require__) {
4692
4693"use strict";
4694
4695
4696function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4697
4698var global = __w_pdfjs_require__(8);
4699
4700var has = __w_pdfjs_require__(21);
4701
4702var DESCRIPTORS = __w_pdfjs_require__(15);
4703
4704var $export = __w_pdfjs_require__(7);
4705
4706var redefine = __w_pdfjs_require__(20);
4707
4708var META = __w_pdfjs_require__(108).KEY;
4709
4710var $fails = __w_pdfjs_require__(16);
4711
4712var shared = __w_pdfjs_require__(24);
4713
4714var setToStringTag = __w_pdfjs_require__(60);
4715
4716var uid = __w_pdfjs_require__(22);
4717
4718var wks = __w_pdfjs_require__(33);
4719
4720var wksExt = __w_pdfjs_require__(129);
4721
4722var wksDefine = __w_pdfjs_require__(130);
4723
4724var enumKeys = __w_pdfjs_require__(131);
4725
4726var isArray = __w_pdfjs_require__(107);
4727
4728var anObject = __w_pdfjs_require__(12);
4729
4730var isObject = __w_pdfjs_require__(13);
4731
4732var toObject = __w_pdfjs_require__(62);
4733
4734var toIObject = __w_pdfjs_require__(43);
4735
4736var toPrimitive = __w_pdfjs_require__(18);
4737
4738var createDesc = __w_pdfjs_require__(19);
4739
4740var _create = __w_pdfjs_require__(53);
4741
4742var gOPNExt = __w_pdfjs_require__(132);
4743
4744var $GOPD = __w_pdfjs_require__(114);
4745
4746var $GOPS = __w_pdfjs_require__(73);
4747
4748var $DP = __w_pdfjs_require__(11);
4749
4750var $keys = __w_pdfjs_require__(55);
4751
4752var gOPD = $GOPD.f;
4753var dP = $DP.f;
4754var gOPN = gOPNExt.f;
4755var $Symbol = global.Symbol;
4756var $JSON = global.JSON;
4757
4758var _stringify = $JSON && $JSON.stringify;
4759
4760var PROTOTYPE = 'prototype';
4761var HIDDEN = wks('_hidden');
4762var TO_PRIMITIVE = wks('toPrimitive');
4763var isEnum = {}.propertyIsEnumerable;
4764var SymbolRegistry = shared('symbol-registry');
4765var AllSymbols = shared('symbols');
4766var OPSymbols = shared('op-symbols');
4767var ObjectProto = Object[PROTOTYPE];
4768var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
4769var QObject = global.QObject;
4770var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
4771var setSymbolDesc = DESCRIPTORS && $fails(function () {
4772 return _create(dP({}, 'a', {
4773 get: function get() {
4774 return dP(this, 'a', {
4775 value: 7
4776 }).a;
4777 }
4778 })).a != 7;
4779}) ? function (it, key, D) {
4780 var protoDesc = gOPD(ObjectProto, key);
4781 if (protoDesc) delete ObjectProto[key];
4782 dP(it, key, D);
4783 if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
4784} : dP;
4785
4786var wrap = function wrap(tag) {
4787 var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
4788
4789 sym._k = tag;
4790 return sym;
4791};
4792
4793var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
4794 return _typeof(it) == 'symbol';
4795} : function (it) {
4796 return it instanceof $Symbol;
4797};
4798
4799var $defineProperty = function defineProperty(it, key, D) {
4800 if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
4801 anObject(it);
4802 key = toPrimitive(key, true);
4803 anObject(D);
4804
4805 if (has(AllSymbols, key)) {
4806 if (!D.enumerable) {
4807 if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
4808 it[HIDDEN][key] = true;
4809 } else {
4810 if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
4811 D = _create(D, {
4812 enumerable: createDesc(0, false)
4813 });
4814 }
4815
4816 return setSymbolDesc(it, key, D);
4817 }
4818
4819 return dP(it, key, D);
4820};
4821
4822var $defineProperties = function defineProperties(it, P) {
4823 anObject(it);
4824 var keys = enumKeys(P = toIObject(P));
4825 var i = 0;
4826 var l = keys.length;
4827 var key;
4828
4829 while (l > i) {
4830 $defineProperty(it, key = keys[i++], P[key]);
4831 }
4832
4833 return it;
4834};
4835
4836var $create = function create(it, P) {
4837 return P === undefined ? _create(it) : $defineProperties(_create(it), P);
4838};
4839
4840var $propertyIsEnumerable = function propertyIsEnumerable(key) {
4841 var E = isEnum.call(this, key = toPrimitive(key, true));
4842 if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
4843 return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
4844};
4845
4846var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
4847 it = toIObject(it);
4848 key = toPrimitive(key, true);
4849 if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
4850 var D = gOPD(it, key);
4851 if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
4852 return D;
4853};
4854
4855var $getOwnPropertyNames = function getOwnPropertyNames(it) {
4856 var names = gOPN(toIObject(it));
4857 var result = [];
4858 var i = 0;
4859 var key;
4860
4861 while (names.length > i) {
4862 if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
4863 }
4864
4865 return result;
4866};
4867
4868var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
4869 var IS_OP = it === ObjectProto;
4870 var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
4871 var result = [];
4872 var i = 0;
4873 var key;
4874
4875 while (names.length > i) {
4876 if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
4877 }
4878
4879 return result;
4880};
4881
4882if (!USE_NATIVE) {
4883 $Symbol = function _Symbol() {
4884 if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
4885 var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
4886
4887 var $set = function $set(value) {
4888 if (this === ObjectProto) $set.call(OPSymbols, value);
4889 if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
4890 setSymbolDesc(this, tag, createDesc(1, value));
4891 };
4892
4893 if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
4894 configurable: true,
4895 set: $set
4896 });
4897 return wrap(tag);
4898 };
4899
4900 redefine($Symbol[PROTOTYPE], 'toString', function toString() {
4901 return this._k;
4902 });
4903 $GOPD.f = $getOwnPropertyDescriptor;
4904 $DP.f = $defineProperty;
4905 __w_pdfjs_require__(133).f = gOPNExt.f = $getOwnPropertyNames;
4906 __w_pdfjs_require__(74).f = $propertyIsEnumerable;
4907 $GOPS.f = $getOwnPropertySymbols;
4908
4909 if (DESCRIPTORS && !__w_pdfjs_require__(25)) {
4910 redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
4911 }
4912
4913 wksExt.f = function (name) {
4914 return wrap(wks(name));
4915 };
4916}
4917
4918$export($export.G + $export.W + $export.F * !USE_NATIVE, {
4919 Symbol: $Symbol
4920});
4921
4922for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
4923 wks(es6Symbols[j++]);
4924}
4925
4926for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
4927 wksDefine(wellKnownSymbols[k++]);
4928}
4929
4930$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
4931 'for': function _for(key) {
4932 return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
4933 },
4934 keyFor: function keyFor(sym) {
4935 if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
4936
4937 for (var key in SymbolRegistry) {
4938 if (SymbolRegistry[key] === sym) return key;
4939 }
4940 },
4941 useSetter: function useSetter() {
4942 setter = true;
4943 },
4944 useSimple: function useSimple() {
4945 setter = false;
4946 }
4947});
4948$export($export.S + $export.F * !USE_NATIVE, 'Object', {
4949 create: $create,
4950 defineProperty: $defineProperty,
4951 defineProperties: $defineProperties,
4952 getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
4953 getOwnPropertyNames: $getOwnPropertyNames,
4954 getOwnPropertySymbols: $getOwnPropertySymbols
4955});
4956var FAILS_ON_PRIMITIVES = $fails(function () {
4957 $GOPS.f(1);
4958});
4959$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
4960 getOwnPropertySymbols: function getOwnPropertySymbols(it) {
4961 return $GOPS.f(toObject(it));
4962 }
4963});
4964$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
4965 var S = $Symbol();
4966 return _stringify([S]) != '[null]' || _stringify({
4967 a: S
4968 }) != '{}' || _stringify(Object(S)) != '{}';
4969})), 'JSON', {
4970 stringify: function stringify(it) {
4971 var args = [it];
4972 var i = 1;
4973 var replacer, $replacer;
4974
4975 while (arguments.length > i) {
4976 args.push(arguments[i++]);
4977 }
4978
4979 $replacer = replacer = args[1];
4980 if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
4981 if (!isArray(replacer)) replacer = function replacer(key, value) {
4982 if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
4983 if (!isSymbol(value)) return value;
4984 };
4985 args[1] = replacer;
4986 return _stringify.apply($JSON, args);
4987 }
4988});
4989$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
4990setToStringTag($Symbol, 'Symbol');
4991setToStringTag(Math, 'Math', true);
4992setToStringTag(global.JSON, 'JSON', true);
4993
4994/***/ }),
4995/* 129 */
4996/***/ (function(module, exports, __w_pdfjs_require__) {
4997
4998"use strict";
4999
5000
5001exports.f = __w_pdfjs_require__(33);
5002
5003/***/ }),
5004/* 130 */
5005/***/ (function(module, exports, __w_pdfjs_require__) {
5006
5007"use strict";
5008
5009
5010var global = __w_pdfjs_require__(8);
5011
5012var core = __w_pdfjs_require__(9);
5013
5014var LIBRARY = __w_pdfjs_require__(25);
5015
5016var wksExt = __w_pdfjs_require__(129);
5017
5018var defineProperty = __w_pdfjs_require__(11).f;
5019
5020module.exports = function (name) {
5021 var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
5022 if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, {
5023 value: wksExt.f(name)
5024 });
5025};
5026
5027/***/ }),
5028/* 131 */
5029/***/ (function(module, exports, __w_pdfjs_require__) {
5030
5031"use strict";
5032
5033
5034var getKeys = __w_pdfjs_require__(55);
5035
5036var gOPS = __w_pdfjs_require__(73);
5037
5038var pIE = __w_pdfjs_require__(74);
5039
5040module.exports = function (it) {
5041 var result = getKeys(it);
5042 var getSymbols = gOPS.f;
5043
5044 if (getSymbols) {
5045 var symbols = getSymbols(it);
5046 var isEnum = pIE.f;
5047 var i = 0;
5048 var key;
5049
5050 while (symbols.length > i) {
5051 if (isEnum.call(it, key = symbols[i++])) result.push(key);
5052 }
5053 }
5054
5055 return result;
5056};
5057
5058/***/ }),
5059/* 132 */
5060/***/ (function(module, exports, __w_pdfjs_require__) {
5061
5062"use strict";
5063
5064
5065function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5066
5067var toIObject = __w_pdfjs_require__(43);
5068
5069var gOPN = __w_pdfjs_require__(133).f;
5070
5071var toString = {}.toString;
5072var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
5073
5074var getWindowNames = function getWindowNames(it) {
5075 try {
5076 return gOPN(it);
5077 } catch (e) {
5078 return windowNames.slice();
5079 }
5080};
5081
5082module.exports.f = function getOwnPropertyNames(it) {
5083 return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
5084};
5085
5086/***/ }),
5087/* 133 */
5088/***/ (function(module, exports, __w_pdfjs_require__) {
5089
5090"use strict";
5091
5092
5093var $keys = __w_pdfjs_require__(56);
5094
5095var hiddenKeys = __w_pdfjs_require__(58).concat('length', 'prototype');
5096
5097exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
5098 return $keys(O, hiddenKeys);
5099};
5100
5101/***/ }),
5102/* 134 */
5103/***/ (function(module, exports, __w_pdfjs_require__) {
5104
5105"use strict";
5106
5107
5108__w_pdfjs_require__(135);
5109
5110module.exports = __w_pdfjs_require__(9).String.padStart;
5111
5112/***/ }),
5113/* 135 */
5114/***/ (function(module, exports, __w_pdfjs_require__) {
5115
5116"use strict";
5117
5118
5119var $export = __w_pdfjs_require__(7);
5120
5121var $pad = __w_pdfjs_require__(136);
5122
5123var userAgent = __w_pdfjs_require__(96);
5124
5125var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
5126$export($export.P + $export.F * WEBKIT_BUG, 'String', {
5127 padStart: function padStart(maxLength) {
5128 return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
5129 }
5130});
5131
5132/***/ }),
5133/* 136 */
5134/***/ (function(module, exports, __w_pdfjs_require__) {
5135
5136"use strict";
5137
5138
5139var toLength = __w_pdfjs_require__(28);
5140
5141var repeat = __w_pdfjs_require__(137);
5142
5143var defined = __w_pdfjs_require__(34);
5144
5145module.exports = function (that, maxLength, fillString, left) {
5146 var S = String(defined(that));
5147 var stringLength = S.length;
5148 var fillStr = fillString === undefined ? ' ' : String(fillString);
5149 var intMaxLength = toLength(maxLength);
5150 if (intMaxLength <= stringLength || fillStr == '') return S;
5151 var fillLen = intMaxLength - stringLength;
5152 var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
5153 if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
5154 return left ? stringFiller + S : S + stringFiller;
5155};
5156
5157/***/ }),
5158/* 137 */
5159/***/ (function(module, exports, __w_pdfjs_require__) {
5160
5161"use strict";
5162
5163
5164var toInteger = __w_pdfjs_require__(29);
5165
5166var defined = __w_pdfjs_require__(34);
5167
5168module.exports = function repeat(count) {
5169 var str = String(defined(this));
5170 var res = '';
5171 var n = toInteger(count);
5172 if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
5173
5174 for (; n > 0; (n >>>= 1) && (str += str)) {
5175 if (n & 1) res += str;
5176 }
5177
5178 return res;
5179};
5180
5181/***/ }),
5182/* 138 */
5183/***/ (function(module, exports, __w_pdfjs_require__) {
5184
5185"use strict";
5186
5187
5188__w_pdfjs_require__(139);
5189
5190module.exports = __w_pdfjs_require__(9).String.padEnd;
5191
5192/***/ }),
5193/* 139 */
5194/***/ (function(module, exports, __w_pdfjs_require__) {
5195
5196"use strict";
5197
5198
5199var $export = __w_pdfjs_require__(7);
5200
5201var $pad = __w_pdfjs_require__(136);
5202
5203var userAgent = __w_pdfjs_require__(96);
5204
5205var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
5206$export($export.P + $export.F * WEBKIT_BUG, 'String', {
5207 padEnd: function padEnd(maxLength) {
5208 return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
5209 }
5210});
5211
5212/***/ }),
5213/* 140 */
5214/***/ (function(module, exports, __w_pdfjs_require__) {
5215
5216"use strict";
5217
5218
5219__w_pdfjs_require__(141);
5220
5221module.exports = __w_pdfjs_require__(9).Object.values;
5222
5223/***/ }),
5224/* 141 */
5225/***/ (function(module, exports, __w_pdfjs_require__) {
5226
5227"use strict";
5228
5229
5230var $export = __w_pdfjs_require__(7);
5231
5232var $values = __w_pdfjs_require__(142)(false);
5233
5234$export($export.S, 'Object', {
5235 values: function values(it) {
5236 return $values(it);
5237 }
5238});
5239
5240/***/ }),
5241/* 142 */
5242/***/ (function(module, exports, __w_pdfjs_require__) {
5243
5244"use strict";
5245
5246
5247var DESCRIPTORS = __w_pdfjs_require__(15);
5248
5249var getKeys = __w_pdfjs_require__(55);
5250
5251var toIObject = __w_pdfjs_require__(43);
5252
5253var isEnum = __w_pdfjs_require__(74).f;
5254
5255module.exports = function (isEntries) {
5256 return function (it) {
5257 var O = toIObject(it);
5258 var keys = getKeys(O);
5259 var length = keys.length;
5260 var i = 0;
5261 var result = [];
5262 var key;
5263
5264 while (length > i) {
5265 key = keys[i++];
5266
5267 if (!DESCRIPTORS || isEnum.call(O, key)) {
5268 result.push(isEntries ? [key, O[key]] : O[key]);
5269 }
5270 }
5271
5272 return result;
5273 };
5274};
5275
5276/***/ }),
5277/* 143 */
5278/***/ (function(module, exports, __w_pdfjs_require__) {
5279
5280"use strict";
5281
5282
5283{
5284 var isReadableStreamSupported = false;
5285
5286 if (typeof ReadableStream !== 'undefined') {
5287 try {
5288 new ReadableStream({
5289 start: function start(controller) {
5290 controller.close();
5291 }
5292 });
5293 isReadableStreamSupported = true;
5294 } catch (e) {}
5295 }
5296
5297 if (isReadableStreamSupported) {
5298 exports.ReadableStream = ReadableStream;
5299 } else {
5300 exports.ReadableStream = __w_pdfjs_require__(144).ReadableStream;
5301 }
5302}
5303
5304/***/ }),
5305/* 144 */
5306/***/ (function(module, exports, __w_pdfjs_require__) {
5307
5308"use strict";
5309
5310
5311function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
5312
5313(function (e, a) {
5314 for (var i in a) {
5315 e[i] = a[i];
5316 }
5317})(exports, function (modules) {
5318 var installedModules = {};
5319
5320 function __w_pdfjs_require__(moduleId) {
5321 if (installedModules[moduleId]) return installedModules[moduleId].exports;
5322 var module = installedModules[moduleId] = {
5323 i: moduleId,
5324 l: false,
5325 exports: {}
5326 };
5327 modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
5328 module.l = true;
5329 return module.exports;
5330 }
5331
5332 __w_pdfjs_require__.m = modules;
5333 __w_pdfjs_require__.c = installedModules;
5334
5335 __w_pdfjs_require__.i = function (value) {
5336 return value;
5337 };
5338
5339 __w_pdfjs_require__.d = function (exports, name, getter) {
5340 if (!__w_pdfjs_require__.o(exports, name)) {
5341 Object.defineProperty(exports, name, {
5342 configurable: false,
5343 enumerable: true,
5344 get: getter
5345 });
5346 }
5347 };
5348
5349 __w_pdfjs_require__.n = function (module) {
5350 var getter = module && module.__esModule ? function getDefault() {
5351 return module['default'];
5352 } : function getModuleExports() {
5353 return module;
5354 };
5355
5356 __w_pdfjs_require__.d(getter, 'a', getter);
5357
5358 return getter;
5359 };
5360
5361 __w_pdfjs_require__.o = function (object, property) {
5362 return Object.prototype.hasOwnProperty.call(object, property);
5363 };
5364
5365 __w_pdfjs_require__.p = "";
5366 return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
5367}([function (module, exports, __w_pdfjs_require__) {
5368 "use strict";
5369
5370 var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
5371 return _typeof2(obj);
5372 } : function (obj) {
5373 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
5374 };
5375
5376 var _require = __w_pdfjs_require__(1),
5377 assert = _require.assert;
5378
5379 function IsPropertyKey(argument) {
5380 return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
5381 }
5382
5383 exports.typeIsObject = function (x) {
5384 return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
5385 };
5386
5387 exports.createDataProperty = function (o, p, v) {
5388 assert(exports.typeIsObject(o));
5389 Object.defineProperty(o, p, {
5390 value: v,
5391 writable: true,
5392 enumerable: true,
5393 configurable: true
5394 });
5395 };
5396
5397 exports.createArrayFromList = function (elements) {
5398 return elements.slice();
5399 };
5400
5401 exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
5402 new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
5403 };
5404
5405 exports.CreateIterResultObject = function (value, done) {
5406 assert(typeof done === 'boolean');
5407 var obj = {};
5408 Object.defineProperty(obj, 'value', {
5409 value: value,
5410 enumerable: true,
5411 writable: true,
5412 configurable: true
5413 });
5414 Object.defineProperty(obj, 'done', {
5415 value: done,
5416 enumerable: true,
5417 writable: true,
5418 configurable: true
5419 });
5420 return obj;
5421 };
5422
5423 exports.IsFiniteNonNegativeNumber = function (v) {
5424 if (Number.isNaN(v)) {
5425 return false;
5426 }
5427
5428 if (v === Infinity) {
5429 return false;
5430 }
5431
5432 if (v < 0) {
5433 return false;
5434 }
5435
5436 return true;
5437 };
5438
5439 function Call(F, V, args) {
5440 if (typeof F !== 'function') {
5441 throw new TypeError('Argument is not a function');
5442 }
5443
5444 return Function.prototype.apply.call(F, V, args);
5445 }
5446
5447 exports.InvokeOrNoop = function (O, P, args) {
5448 assert(O !== undefined);
5449 assert(IsPropertyKey(P));
5450 assert(Array.isArray(args));
5451 var method = O[P];
5452
5453 if (method === undefined) {
5454 return undefined;
5455 }
5456
5457 return Call(method, O, args);
5458 };
5459
5460 exports.PromiseInvokeOrNoop = function (O, P, args) {
5461 assert(O !== undefined);
5462 assert(IsPropertyKey(P));
5463 assert(Array.isArray(args));
5464
5465 try {
5466 return Promise.resolve(exports.InvokeOrNoop(O, P, args));
5467 } catch (returnValueE) {
5468 return Promise.reject(returnValueE);
5469 }
5470 };
5471
5472 exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
5473 assert(O !== undefined);
5474 assert(IsPropertyKey(P));
5475 assert(Array.isArray(args));
5476 assert(Array.isArray(argsF));
5477 var method = void 0;
5478
5479 try {
5480 method = O[P];
5481 } catch (methodE) {
5482 return Promise.reject(methodE);
5483 }
5484
5485 if (method === undefined) {
5486 return F.apply(null, argsF);
5487 }
5488
5489 try {
5490 return Promise.resolve(Call(method, O, args));
5491 } catch (e) {
5492 return Promise.reject(e);
5493 }
5494 };
5495
5496 exports.TransferArrayBuffer = function (O) {
5497 return O.slice();
5498 };
5499
5500 exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
5501 highWaterMark = Number(highWaterMark);
5502
5503 if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
5504 throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
5505 }
5506
5507 return highWaterMark;
5508 };
5509
5510 exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
5511 if (size !== undefined && typeof size !== 'function') {
5512 throw new TypeError('size property of a queuing strategy must be a function');
5513 }
5514
5515 highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
5516 return {
5517 size: size,
5518 highWaterMark: highWaterMark
5519 };
5520 };
5521}, function (module, exports, __w_pdfjs_require__) {
5522 "use strict";
5523
5524 function rethrowAssertionErrorRejection(e) {
5525 if (e && e.constructor === AssertionError) {
5526 setTimeout(function () {
5527 throw e;
5528 }, 0);
5529 }
5530 }
5531
5532 function AssertionError(message) {
5533 this.name = 'AssertionError';
5534 this.message = message || '';
5535 this.stack = new Error().stack;
5536 }
5537
5538 AssertionError.prototype = Object.create(Error.prototype);
5539 AssertionError.prototype.constructor = AssertionError;
5540
5541 function assert(value, message) {
5542 if (!value) {
5543 throw new AssertionError(message);
5544 }
5545 }
5546
5547 module.exports = {
5548 rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
5549 AssertionError: AssertionError,
5550 assert: assert
5551 };
5552}, function (module, exports, __w_pdfjs_require__) {
5553 "use strict";
5554
5555 var _createClass = function () {
5556 function defineProperties(target, props) {
5557 for (var i = 0; i < props.length; i++) {
5558 var descriptor = props[i];
5559 descriptor.enumerable = descriptor.enumerable || false;
5560 descriptor.configurable = true;
5561 if ("value" in descriptor) descriptor.writable = true;
5562 Object.defineProperty(target, descriptor.key, descriptor);
5563 }
5564 }
5565
5566 return function (Constructor, protoProps, staticProps) {
5567 if (protoProps) defineProperties(Constructor.prototype, protoProps);
5568 if (staticProps) defineProperties(Constructor, staticProps);
5569 return Constructor;
5570 };
5571 }();
5572
5573 function _classCallCheck(instance, Constructor) {
5574 if (!(instance instanceof Constructor)) {
5575 throw new TypeError("Cannot call a class as a function");
5576 }
5577 }
5578
5579 var _require = __w_pdfjs_require__(0),
5580 InvokeOrNoop = _require.InvokeOrNoop,
5581 PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
5582 ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
5583 typeIsObject = _require.typeIsObject;
5584
5585 var _require2 = __w_pdfjs_require__(1),
5586 assert = _require2.assert,
5587 rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
5588
5589 var _require3 = __w_pdfjs_require__(3),
5590 DequeueValue = _require3.DequeueValue,
5591 EnqueueValueWithSize = _require3.EnqueueValueWithSize,
5592 PeekQueueValue = _require3.PeekQueueValue,
5593 ResetQueue = _require3.ResetQueue;
5594
5595 var WritableStream = function () {
5596 function WritableStream() {
5597 var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5598
5599 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
5600 size = _ref.size,
5601 _ref$highWaterMark = _ref.highWaterMark,
5602 highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
5603
5604 _classCallCheck(this, WritableStream);
5605
5606 this._state = 'writable';
5607 this._storedError = undefined;
5608 this._writer = undefined;
5609 this._writableStreamController = undefined;
5610 this._writeRequests = [];
5611 this._inFlightWriteRequest = undefined;
5612 this._closeRequest = undefined;
5613 this._inFlightCloseRequest = undefined;
5614 this._pendingAbortRequest = undefined;
5615 this._backpressure = false;
5616 var type = underlyingSink.type;
5617
5618 if (type !== undefined) {
5619 throw new RangeError('Invalid type is specified');
5620 }
5621
5622 this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
5623
5624 this._writableStreamController.__startSteps();
5625 }
5626
5627 _createClass(WritableStream, [{
5628 key: 'abort',
5629 value: function abort(reason) {
5630 if (IsWritableStream(this) === false) {
5631 return Promise.reject(streamBrandCheckException('abort'));
5632 }
5633
5634 if (IsWritableStreamLocked(this) === true) {
5635 return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
5636 }
5637
5638 return WritableStreamAbort(this, reason);
5639 }
5640 }, {
5641 key: 'getWriter',
5642 value: function getWriter() {
5643 if (IsWritableStream(this) === false) {
5644 throw streamBrandCheckException('getWriter');
5645 }
5646
5647 return AcquireWritableStreamDefaultWriter(this);
5648 }
5649 }, {
5650 key: 'locked',
5651 get: function get() {
5652 if (IsWritableStream(this) === false) {
5653 throw streamBrandCheckException('locked');
5654 }
5655
5656 return IsWritableStreamLocked(this);
5657 }
5658 }]);
5659
5660 return WritableStream;
5661 }();
5662
5663 module.exports = {
5664 AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
5665 IsWritableStream: IsWritableStream,
5666 IsWritableStreamLocked: IsWritableStreamLocked,
5667 WritableStream: WritableStream,
5668 WritableStreamAbort: WritableStreamAbort,
5669 WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
5670 WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
5671 WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
5672 WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
5673 WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
5674 };
5675
5676 function AcquireWritableStreamDefaultWriter(stream) {
5677 return new WritableStreamDefaultWriter(stream);
5678 }
5679
5680 function IsWritableStream(x) {
5681 if (!typeIsObject(x)) {
5682 return false;
5683 }
5684
5685 if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
5686 return false;
5687 }
5688
5689 return true;
5690 }
5691
5692 function IsWritableStreamLocked(stream) {
5693 assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
5694
5695 if (stream._writer === undefined) {
5696 return false;
5697 }
5698
5699 return true;
5700 }
5701
5702 function WritableStreamAbort(stream, reason) {
5703 var state = stream._state;
5704
5705 if (state === 'closed') {
5706 return Promise.resolve(undefined);
5707 }
5708
5709 if (state === 'errored') {
5710 return Promise.reject(stream._storedError);
5711 }
5712
5713 var error = new TypeError('Requested to abort');
5714
5715 if (stream._pendingAbortRequest !== undefined) {
5716 return Promise.reject(error);
5717 }
5718
5719 assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
5720 var wasAlreadyErroring = false;
5721
5722 if (state === 'erroring') {
5723 wasAlreadyErroring = true;
5724 reason = undefined;
5725 }
5726
5727 var promise = new Promise(function (resolve, reject) {
5728 stream._pendingAbortRequest = {
5729 _resolve: resolve,
5730 _reject: reject,
5731 _reason: reason,
5732 _wasAlreadyErroring: wasAlreadyErroring
5733 };
5734 });
5735
5736 if (wasAlreadyErroring === false) {
5737 WritableStreamStartErroring(stream, error);
5738 }
5739
5740 return promise;
5741 }
5742
5743 function WritableStreamAddWriteRequest(stream) {
5744 assert(IsWritableStreamLocked(stream) === true);
5745 assert(stream._state === 'writable');
5746 var promise = new Promise(function (resolve, reject) {
5747 var writeRequest = {
5748 _resolve: resolve,
5749 _reject: reject
5750 };
5751
5752 stream._writeRequests.push(writeRequest);
5753 });
5754 return promise;
5755 }
5756
5757 function WritableStreamDealWithRejection(stream, error) {
5758 var state = stream._state;
5759
5760 if (state === 'writable') {
5761 WritableStreamStartErroring(stream, error);
5762 return;
5763 }
5764
5765 assert(state === 'erroring');
5766 WritableStreamFinishErroring(stream);
5767 }
5768
5769 function WritableStreamStartErroring(stream, reason) {
5770 assert(stream._storedError === undefined, 'stream._storedError === undefined');
5771 assert(stream._state === 'writable', 'state must be writable');
5772 var controller = stream._writableStreamController;
5773 assert(controller !== undefined, 'controller must not be undefined');
5774 stream._state = 'erroring';
5775 stream._storedError = reason;
5776 var writer = stream._writer;
5777
5778 if (writer !== undefined) {
5779 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
5780 }
5781
5782 if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
5783 WritableStreamFinishErroring(stream);
5784 }
5785 }
5786
5787 function WritableStreamFinishErroring(stream) {
5788 assert(stream._state === 'erroring', 'stream._state === erroring');
5789 assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
5790 stream._state = 'errored';
5791
5792 stream._writableStreamController.__errorSteps();
5793
5794 var storedError = stream._storedError;
5795
5796 for (var i = 0; i < stream._writeRequests.length; i++) {
5797 var writeRequest = stream._writeRequests[i];
5798
5799 writeRequest._reject(storedError);
5800 }
5801
5802 stream._writeRequests = [];
5803
5804 if (stream._pendingAbortRequest === undefined) {
5805 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5806 return;
5807 }
5808
5809 var abortRequest = stream._pendingAbortRequest;
5810 stream._pendingAbortRequest = undefined;
5811
5812 if (abortRequest._wasAlreadyErroring === true) {
5813 abortRequest._reject(storedError);
5814
5815 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5816 return;
5817 }
5818
5819 var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
5820
5821 promise.then(function () {
5822 abortRequest._resolve();
5823
5824 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5825 }, function (reason) {
5826 abortRequest._reject(reason);
5827
5828 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
5829 });
5830 }
5831
5832 function WritableStreamFinishInFlightWrite(stream) {
5833 assert(stream._inFlightWriteRequest !== undefined);
5834
5835 stream._inFlightWriteRequest._resolve(undefined);
5836
5837 stream._inFlightWriteRequest = undefined;
5838 }
5839
5840 function WritableStreamFinishInFlightWriteWithError(stream, error) {
5841 assert(stream._inFlightWriteRequest !== undefined);
5842
5843 stream._inFlightWriteRequest._reject(error);
5844
5845 stream._inFlightWriteRequest = undefined;
5846 assert(stream._state === 'writable' || stream._state === 'erroring');
5847 WritableStreamDealWithRejection(stream, error);
5848 }
5849
5850 function WritableStreamFinishInFlightClose(stream) {
5851 assert(stream._inFlightCloseRequest !== undefined);
5852
5853 stream._inFlightCloseRequest._resolve(undefined);
5854
5855 stream._inFlightCloseRequest = undefined;
5856 var state = stream._state;
5857 assert(state === 'writable' || state === 'erroring');
5858
5859 if (state === 'erroring') {
5860 stream._storedError = undefined;
5861
5862 if (stream._pendingAbortRequest !== undefined) {
5863 stream._pendingAbortRequest._resolve();
5864
5865 stream._pendingAbortRequest = undefined;
5866 }
5867 }
5868
5869 stream._state = 'closed';
5870 var writer = stream._writer;
5871
5872 if (writer !== undefined) {
5873 defaultWriterClosedPromiseResolve(writer);
5874 }
5875
5876 assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
5877 assert(stream._storedError === undefined, 'stream._storedError === undefined');
5878 }
5879
5880 function WritableStreamFinishInFlightCloseWithError(stream, error) {
5881 assert(stream._inFlightCloseRequest !== undefined);
5882
5883 stream._inFlightCloseRequest._reject(error);
5884
5885 stream._inFlightCloseRequest = undefined;
5886 assert(stream._state === 'writable' || stream._state === 'erroring');
5887
5888 if (stream._pendingAbortRequest !== undefined) {
5889 stream._pendingAbortRequest._reject(error);
5890
5891 stream._pendingAbortRequest = undefined;
5892 }
5893
5894 WritableStreamDealWithRejection(stream, error);
5895 }
5896
5897 function WritableStreamCloseQueuedOrInFlight(stream) {
5898 if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
5899 return false;
5900 }
5901
5902 return true;
5903 }
5904
5905 function WritableStreamHasOperationMarkedInFlight(stream) {
5906 if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
5907 return false;
5908 }
5909
5910 return true;
5911 }
5912
5913 function WritableStreamMarkCloseRequestInFlight(stream) {
5914 assert(stream._inFlightCloseRequest === undefined);
5915 assert(stream._closeRequest !== undefined);
5916 stream._inFlightCloseRequest = stream._closeRequest;
5917 stream._closeRequest = undefined;
5918 }
5919
5920 function WritableStreamMarkFirstWriteRequestInFlight(stream) {
5921 assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
5922 assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
5923 stream._inFlightWriteRequest = stream._writeRequests.shift();
5924 }
5925
5926 function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
5927 assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
5928
5929 if (stream._closeRequest !== undefined) {
5930 assert(stream._inFlightCloseRequest === undefined);
5931
5932 stream._closeRequest._reject(stream._storedError);
5933
5934 stream._closeRequest = undefined;
5935 }
5936
5937 var writer = stream._writer;
5938
5939 if (writer !== undefined) {
5940 defaultWriterClosedPromiseReject(writer, stream._storedError);
5941
5942 writer._closedPromise["catch"](function () {});
5943 }
5944 }
5945
5946 function WritableStreamUpdateBackpressure(stream, backpressure) {
5947 assert(stream._state === 'writable');
5948 assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
5949 var writer = stream._writer;
5950
5951 if (writer !== undefined && backpressure !== stream._backpressure) {
5952 if (backpressure === true) {
5953 defaultWriterReadyPromiseReset(writer);
5954 } else {
5955 assert(backpressure === false);
5956 defaultWriterReadyPromiseResolve(writer);
5957 }
5958 }
5959
5960 stream._backpressure = backpressure;
5961 }
5962
5963 var WritableStreamDefaultWriter = function () {
5964 function WritableStreamDefaultWriter(stream) {
5965 _classCallCheck(this, WritableStreamDefaultWriter);
5966
5967 if (IsWritableStream(stream) === false) {
5968 throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
5969 }
5970
5971 if (IsWritableStreamLocked(stream) === true) {
5972 throw new TypeError('This stream has already been locked for exclusive writing by another writer');
5973 }
5974
5975 this._ownerWritableStream = stream;
5976 stream._writer = this;
5977 var state = stream._state;
5978
5979 if (state === 'writable') {
5980 if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
5981 defaultWriterReadyPromiseInitialize(this);
5982 } else {
5983 defaultWriterReadyPromiseInitializeAsResolved(this);
5984 }
5985
5986 defaultWriterClosedPromiseInitialize(this);
5987 } else if (state === 'erroring') {
5988 defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
5989
5990 this._readyPromise["catch"](function () {});
5991
5992 defaultWriterClosedPromiseInitialize(this);
5993 } else if (state === 'closed') {
5994 defaultWriterReadyPromiseInitializeAsResolved(this);
5995 defaultWriterClosedPromiseInitializeAsResolved(this);
5996 } else {
5997 assert(state === 'errored', 'state must be errored');
5998 var storedError = stream._storedError;
5999 defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
6000
6001 this._readyPromise["catch"](function () {});
6002
6003 defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
6004
6005 this._closedPromise["catch"](function () {});
6006 }
6007 }
6008
6009 _createClass(WritableStreamDefaultWriter, [{
6010 key: 'abort',
6011 value: function abort(reason) {
6012 if (IsWritableStreamDefaultWriter(this) === false) {
6013 return Promise.reject(defaultWriterBrandCheckException('abort'));
6014 }
6015
6016 if (this._ownerWritableStream === undefined) {
6017 return Promise.reject(defaultWriterLockException('abort'));
6018 }
6019
6020 return WritableStreamDefaultWriterAbort(this, reason);
6021 }
6022 }, {
6023 key: 'close',
6024 value: function close() {
6025 if (IsWritableStreamDefaultWriter(this) === false) {
6026 return Promise.reject(defaultWriterBrandCheckException('close'));
6027 }
6028
6029 var stream = this._ownerWritableStream;
6030
6031 if (stream === undefined) {
6032 return Promise.reject(defaultWriterLockException('close'));
6033 }
6034
6035 if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
6036 return Promise.reject(new TypeError('cannot close an already-closing stream'));
6037 }
6038
6039 return WritableStreamDefaultWriterClose(this);
6040 }
6041 }, {
6042 key: 'releaseLock',
6043 value: function releaseLock() {
6044 if (IsWritableStreamDefaultWriter(this) === false) {
6045 throw defaultWriterBrandCheckException('releaseLock');
6046 }
6047
6048 var stream = this._ownerWritableStream;
6049
6050 if (stream === undefined) {
6051 return;
6052 }
6053
6054 assert(stream._writer !== undefined);
6055 WritableStreamDefaultWriterRelease(this);
6056 }
6057 }, {
6058 key: 'write',
6059 value: function write(chunk) {
6060 if (IsWritableStreamDefaultWriter(this) === false) {
6061 return Promise.reject(defaultWriterBrandCheckException('write'));
6062 }
6063
6064 if (this._ownerWritableStream === undefined) {
6065 return Promise.reject(defaultWriterLockException('write to'));
6066 }
6067
6068 return WritableStreamDefaultWriterWrite(this, chunk);
6069 }
6070 }, {
6071 key: 'closed',
6072 get: function get() {
6073 if (IsWritableStreamDefaultWriter(this) === false) {
6074 return Promise.reject(defaultWriterBrandCheckException('closed'));
6075 }
6076
6077 return this._closedPromise;
6078 }
6079 }, {
6080 key: 'desiredSize',
6081 get: function get() {
6082 if (IsWritableStreamDefaultWriter(this) === false) {
6083 throw defaultWriterBrandCheckException('desiredSize');
6084 }
6085
6086 if (this._ownerWritableStream === undefined) {
6087 throw defaultWriterLockException('desiredSize');
6088 }
6089
6090 return WritableStreamDefaultWriterGetDesiredSize(this);
6091 }
6092 }, {
6093 key: 'ready',
6094 get: function get() {
6095 if (IsWritableStreamDefaultWriter(this) === false) {
6096 return Promise.reject(defaultWriterBrandCheckException('ready'));
6097 }
6098
6099 return this._readyPromise;
6100 }
6101 }]);
6102
6103 return WritableStreamDefaultWriter;
6104 }();
6105
6106 function IsWritableStreamDefaultWriter(x) {
6107 if (!typeIsObject(x)) {
6108 return false;
6109 }
6110
6111 if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
6112 return false;
6113 }
6114
6115 return true;
6116 }
6117
6118 function WritableStreamDefaultWriterAbort(writer, reason) {
6119 var stream = writer._ownerWritableStream;
6120 assert(stream !== undefined);
6121 return WritableStreamAbort(stream, reason);
6122 }
6123
6124 function WritableStreamDefaultWriterClose(writer) {
6125 var stream = writer._ownerWritableStream;
6126 assert(stream !== undefined);
6127 var state = stream._state;
6128
6129 if (state === 'closed' || state === 'errored') {
6130 return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
6131 }
6132
6133 assert(state === 'writable' || state === 'erroring');
6134 assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
6135 var promise = new Promise(function (resolve, reject) {
6136 var closeRequest = {
6137 _resolve: resolve,
6138 _reject: reject
6139 };
6140 stream._closeRequest = closeRequest;
6141 });
6142
6143 if (stream._backpressure === true && state === 'writable') {
6144 defaultWriterReadyPromiseResolve(writer);
6145 }
6146
6147 WritableStreamDefaultControllerClose(stream._writableStreamController);
6148 return promise;
6149 }
6150
6151 function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
6152 var stream = writer._ownerWritableStream;
6153 assert(stream !== undefined);
6154 var state = stream._state;
6155
6156 if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
6157 return Promise.resolve();
6158 }
6159
6160 if (state === 'errored') {
6161 return Promise.reject(stream._storedError);
6162 }
6163
6164 assert(state === 'writable' || state === 'erroring');
6165 return WritableStreamDefaultWriterClose(writer);
6166 }
6167
6168 function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
6169 if (writer._closedPromiseState === 'pending') {
6170 defaultWriterClosedPromiseReject(writer, error);
6171 } else {
6172 defaultWriterClosedPromiseResetToRejected(writer, error);
6173 }
6174
6175 writer._closedPromise["catch"](function () {});
6176 }
6177
6178 function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
6179 if (writer._readyPromiseState === 'pending') {
6180 defaultWriterReadyPromiseReject(writer, error);
6181 } else {
6182 defaultWriterReadyPromiseResetToRejected(writer, error);
6183 }
6184
6185 writer._readyPromise["catch"](function () {});
6186 }
6187
6188 function WritableStreamDefaultWriterGetDesiredSize(writer) {
6189 var stream = writer._ownerWritableStream;
6190 var state = stream._state;
6191
6192 if (state === 'errored' || state === 'erroring') {
6193 return null;
6194 }
6195
6196 if (state === 'closed') {
6197 return 0;
6198 }
6199
6200 return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
6201 }
6202
6203 function WritableStreamDefaultWriterRelease(writer) {
6204 var stream = writer._ownerWritableStream;
6205 assert(stream !== undefined);
6206 assert(stream._writer === writer);
6207 var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
6208 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
6209 WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
6210 stream._writer = undefined;
6211 writer._ownerWritableStream = undefined;
6212 }
6213
6214 function WritableStreamDefaultWriterWrite(writer, chunk) {
6215 var stream = writer._ownerWritableStream;
6216 assert(stream !== undefined);
6217 var controller = stream._writableStreamController;
6218 var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
6219
6220 if (stream !== writer._ownerWritableStream) {
6221 return Promise.reject(defaultWriterLockException('write to'));
6222 }
6223
6224 var state = stream._state;
6225
6226 if (state === 'errored') {
6227 return Promise.reject(stream._storedError);
6228 }
6229
6230 if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
6231 return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
6232 }
6233
6234 if (state === 'erroring') {
6235 return Promise.reject(stream._storedError);
6236 }
6237
6238 assert(state === 'writable');
6239 var promise = WritableStreamAddWriteRequest(stream);
6240 WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
6241 return promise;
6242 }
6243
6244 var WritableStreamDefaultController = function () {
6245 function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
6246 _classCallCheck(this, WritableStreamDefaultController);
6247
6248 if (IsWritableStream(stream) === false) {
6249 throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
6250 }
6251
6252 if (stream._writableStreamController !== undefined) {
6253 throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
6254 }
6255
6256 this._controlledWritableStream = stream;
6257 this._underlyingSink = underlyingSink;
6258 this._queue = undefined;
6259 this._queueTotalSize = undefined;
6260 ResetQueue(this);
6261 this._started = false;
6262 var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
6263 this._strategySize = normalizedStrategy.size;
6264 this._strategyHWM = normalizedStrategy.highWaterMark;
6265 var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
6266 WritableStreamUpdateBackpressure(stream, backpressure);
6267 }
6268
6269 _createClass(WritableStreamDefaultController, [{
6270 key: 'error',
6271 value: function error(e) {
6272 if (IsWritableStreamDefaultController(this) === false) {
6273 throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
6274 }
6275
6276 var state = this._controlledWritableStream._state;
6277
6278 if (state !== 'writable') {
6279 return;
6280 }
6281
6282 WritableStreamDefaultControllerError(this, e);
6283 }
6284 }, {
6285 key: '__abortSteps',
6286 value: function __abortSteps(reason) {
6287 return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
6288 }
6289 }, {
6290 key: '__errorSteps',
6291 value: function __errorSteps() {
6292 ResetQueue(this);
6293 }
6294 }, {
6295 key: '__startSteps',
6296 value: function __startSteps() {
6297 var _this = this;
6298
6299 var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
6300 var stream = this._controlledWritableStream;
6301 Promise.resolve(startResult).then(function () {
6302 assert(stream._state === 'writable' || stream._state === 'erroring');
6303 _this._started = true;
6304 WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
6305 }, function (r) {
6306 assert(stream._state === 'writable' || stream._state === 'erroring');
6307 _this._started = true;
6308 WritableStreamDealWithRejection(stream, r);
6309 })["catch"](rethrowAssertionErrorRejection);
6310 }
6311 }]);
6312
6313 return WritableStreamDefaultController;
6314 }();
6315
6316 function WritableStreamDefaultControllerClose(controller) {
6317 EnqueueValueWithSize(controller, 'close', 0);
6318 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6319 }
6320
6321 function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
6322 var strategySize = controller._strategySize;
6323
6324 if (strategySize === undefined) {
6325 return 1;
6326 }
6327
6328 try {
6329 return strategySize(chunk);
6330 } catch (chunkSizeE) {
6331 WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
6332 return 1;
6333 }
6334 }
6335
6336 function WritableStreamDefaultControllerGetDesiredSize(controller) {
6337 return controller._strategyHWM - controller._queueTotalSize;
6338 }
6339
6340 function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
6341 var writeRecord = {
6342 chunk: chunk
6343 };
6344
6345 try {
6346 EnqueueValueWithSize(controller, writeRecord, chunkSize);
6347 } catch (enqueueE) {
6348 WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
6349 return;
6350 }
6351
6352 var stream = controller._controlledWritableStream;
6353
6354 if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
6355 var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
6356 WritableStreamUpdateBackpressure(stream, backpressure);
6357 }
6358
6359 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6360 }
6361
6362 function IsWritableStreamDefaultController(x) {
6363 if (!typeIsObject(x)) {
6364 return false;
6365 }
6366
6367 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
6368 return false;
6369 }
6370
6371 return true;
6372 }
6373
6374 function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
6375 var stream = controller._controlledWritableStream;
6376
6377 if (controller._started === false) {
6378 return;
6379 }
6380
6381 if (stream._inFlightWriteRequest !== undefined) {
6382 return;
6383 }
6384
6385 var state = stream._state;
6386
6387 if (state === 'closed' || state === 'errored') {
6388 return;
6389 }
6390
6391 if (state === 'erroring') {
6392 WritableStreamFinishErroring(stream);
6393 return;
6394 }
6395
6396 if (controller._queue.length === 0) {
6397 return;
6398 }
6399
6400 var writeRecord = PeekQueueValue(controller);
6401
6402 if (writeRecord === 'close') {
6403 WritableStreamDefaultControllerProcessClose(controller);
6404 } else {
6405 WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
6406 }
6407 }
6408
6409 function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
6410 if (controller._controlledWritableStream._state === 'writable') {
6411 WritableStreamDefaultControllerError(controller, error);
6412 }
6413 }
6414
6415 function WritableStreamDefaultControllerProcessClose(controller) {
6416 var stream = controller._controlledWritableStream;
6417 WritableStreamMarkCloseRequestInFlight(stream);
6418 DequeueValue(controller);
6419 assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
6420 var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
6421 sinkClosePromise.then(function () {
6422 WritableStreamFinishInFlightClose(stream);
6423 }, function (reason) {
6424 WritableStreamFinishInFlightCloseWithError(stream, reason);
6425 })["catch"](rethrowAssertionErrorRejection);
6426 }
6427
6428 function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
6429 var stream = controller._controlledWritableStream;
6430 WritableStreamMarkFirstWriteRequestInFlight(stream);
6431 var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
6432 sinkWritePromise.then(function () {
6433 WritableStreamFinishInFlightWrite(stream);
6434 var state = stream._state;
6435 assert(state === 'writable' || state === 'erroring');
6436 DequeueValue(controller);
6437
6438 if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
6439 var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
6440 WritableStreamUpdateBackpressure(stream, backpressure);
6441 }
6442
6443 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
6444 }, function (reason) {
6445 WritableStreamFinishInFlightWriteWithError(stream, reason);
6446 })["catch"](rethrowAssertionErrorRejection);
6447 }
6448
6449 function WritableStreamDefaultControllerGetBackpressure(controller) {
6450 var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
6451 return desiredSize <= 0;
6452 }
6453
6454 function WritableStreamDefaultControllerError(controller, error) {
6455 var stream = controller._controlledWritableStream;
6456 assert(stream._state === 'writable');
6457 WritableStreamStartErroring(stream, error);
6458 }
6459
6460 function streamBrandCheckException(name) {
6461 return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
6462 }
6463
6464 function defaultWriterBrandCheckException(name) {
6465 return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
6466 }
6467
6468 function defaultWriterLockException(name) {
6469 return new TypeError('Cannot ' + name + ' a stream using a released writer');
6470 }
6471
6472 function defaultWriterClosedPromiseInitialize(writer) {
6473 writer._closedPromise = new Promise(function (resolve, reject) {
6474 writer._closedPromise_resolve = resolve;
6475 writer._closedPromise_reject = reject;
6476 writer._closedPromiseState = 'pending';
6477 });
6478 }
6479
6480 function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
6481 writer._closedPromise = Promise.reject(reason);
6482 writer._closedPromise_resolve = undefined;
6483 writer._closedPromise_reject = undefined;
6484 writer._closedPromiseState = 'rejected';
6485 }
6486
6487 function defaultWriterClosedPromiseInitializeAsResolved(writer) {
6488 writer._closedPromise = Promise.resolve(undefined);
6489 writer._closedPromise_resolve = undefined;
6490 writer._closedPromise_reject = undefined;
6491 writer._closedPromiseState = 'resolved';
6492 }
6493
6494 function defaultWriterClosedPromiseReject(writer, reason) {
6495 assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
6496 assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
6497 assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
6498
6499 writer._closedPromise_reject(reason);
6500
6501 writer._closedPromise_resolve = undefined;
6502 writer._closedPromise_reject = undefined;
6503 writer._closedPromiseState = 'rejected';
6504 }
6505
6506 function defaultWriterClosedPromiseResetToRejected(writer, reason) {
6507 assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
6508 assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
6509 assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
6510 writer._closedPromise = Promise.reject(reason);
6511 writer._closedPromiseState = 'rejected';
6512 }
6513
6514 function defaultWriterClosedPromiseResolve(writer) {
6515 assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
6516 assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
6517 assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
6518
6519 writer._closedPromise_resolve(undefined);
6520
6521 writer._closedPromise_resolve = undefined;
6522 writer._closedPromise_reject = undefined;
6523 writer._closedPromiseState = 'resolved';
6524 }
6525
6526 function defaultWriterReadyPromiseInitialize(writer) {
6527 writer._readyPromise = new Promise(function (resolve, reject) {
6528 writer._readyPromise_resolve = resolve;
6529 writer._readyPromise_reject = reject;
6530 });
6531 writer._readyPromiseState = 'pending';
6532 }
6533
6534 function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
6535 writer._readyPromise = Promise.reject(reason);
6536 writer._readyPromise_resolve = undefined;
6537 writer._readyPromise_reject = undefined;
6538 writer._readyPromiseState = 'rejected';
6539 }
6540
6541 function defaultWriterReadyPromiseInitializeAsResolved(writer) {
6542 writer._readyPromise = Promise.resolve(undefined);
6543 writer._readyPromise_resolve = undefined;
6544 writer._readyPromise_reject = undefined;
6545 writer._readyPromiseState = 'fulfilled';
6546 }
6547
6548 function defaultWriterReadyPromiseReject(writer, reason) {
6549 assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
6550 assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
6551
6552 writer._readyPromise_reject(reason);
6553
6554 writer._readyPromise_resolve = undefined;
6555 writer._readyPromise_reject = undefined;
6556 writer._readyPromiseState = 'rejected';
6557 }
6558
6559 function defaultWriterReadyPromiseReset(writer) {
6560 assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
6561 assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
6562 writer._readyPromise = new Promise(function (resolve, reject) {
6563 writer._readyPromise_resolve = resolve;
6564 writer._readyPromise_reject = reject;
6565 });
6566 writer._readyPromiseState = 'pending';
6567 }
6568
6569 function defaultWriterReadyPromiseResetToRejected(writer, reason) {
6570 assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
6571 assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
6572 writer._readyPromise = Promise.reject(reason);
6573 writer._readyPromiseState = 'rejected';
6574 }
6575
6576 function defaultWriterReadyPromiseResolve(writer) {
6577 assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
6578 assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
6579
6580 writer._readyPromise_resolve(undefined);
6581
6582 writer._readyPromise_resolve = undefined;
6583 writer._readyPromise_reject = undefined;
6584 writer._readyPromiseState = 'fulfilled';
6585 }
6586}, function (module, exports, __w_pdfjs_require__) {
6587 "use strict";
6588
6589 var _require = __w_pdfjs_require__(0),
6590 IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
6591
6592 var _require2 = __w_pdfjs_require__(1),
6593 assert = _require2.assert;
6594
6595 exports.DequeueValue = function (container) {
6596 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6597 assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
6598
6599 var pair = container._queue.shift();
6600
6601 container._queueTotalSize -= pair.size;
6602
6603 if (container._queueTotalSize < 0) {
6604 container._queueTotalSize = 0;
6605 }
6606
6607 return pair.value;
6608 };
6609
6610 exports.EnqueueValueWithSize = function (container, value, size) {
6611 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
6612 size = Number(size);
6613
6614 if (!IsFiniteNonNegativeNumber(size)) {
6615 throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
6616 }
6617
6618 container._queue.push({
6619 value: value,
6620 size: size
6621 });
6622
6623 container._queueTotalSize += size;
6624 };
6625
6626 exports.PeekQueueValue = function (container) {
6627 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6628 assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
6629 var pair = container._queue[0];
6630 return pair.value;
6631 };
6632
6633 exports.ResetQueue = function (container) {
6634 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
6635 container._queue = [];
6636 container._queueTotalSize = 0;
6637 };
6638}, function (module, exports, __w_pdfjs_require__) {
6639 "use strict";
6640
6641 var _createClass = function () {
6642 function defineProperties(target, props) {
6643 for (var i = 0; i < props.length; i++) {
6644 var descriptor = props[i];
6645 descriptor.enumerable = descriptor.enumerable || false;
6646 descriptor.configurable = true;
6647 if ("value" in descriptor) descriptor.writable = true;
6648 Object.defineProperty(target, descriptor.key, descriptor);
6649 }
6650 }
6651
6652 return function (Constructor, protoProps, staticProps) {
6653 if (protoProps) defineProperties(Constructor.prototype, protoProps);
6654 if (staticProps) defineProperties(Constructor, staticProps);
6655 return Constructor;
6656 };
6657 }();
6658
6659 function _classCallCheck(instance, Constructor) {
6660 if (!(instance instanceof Constructor)) {
6661 throw new TypeError("Cannot call a class as a function");
6662 }
6663 }
6664
6665 var _require = __w_pdfjs_require__(0),
6666 ArrayBufferCopy = _require.ArrayBufferCopy,
6667 CreateIterResultObject = _require.CreateIterResultObject,
6668 IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
6669 InvokeOrNoop = _require.InvokeOrNoop,
6670 PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
6671 TransferArrayBuffer = _require.TransferArrayBuffer,
6672 ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
6673 ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
6674
6675 var _require2 = __w_pdfjs_require__(0),
6676 createArrayFromList = _require2.createArrayFromList,
6677 createDataProperty = _require2.createDataProperty,
6678 typeIsObject = _require2.typeIsObject;
6679
6680 var _require3 = __w_pdfjs_require__(1),
6681 assert = _require3.assert,
6682 rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
6683
6684 var _require4 = __w_pdfjs_require__(3),
6685 DequeueValue = _require4.DequeueValue,
6686 EnqueueValueWithSize = _require4.EnqueueValueWithSize,
6687 ResetQueue = _require4.ResetQueue;
6688
6689 var _require5 = __w_pdfjs_require__(2),
6690 AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
6691 IsWritableStream = _require5.IsWritableStream,
6692 IsWritableStreamLocked = _require5.IsWritableStreamLocked,
6693 WritableStreamAbort = _require5.WritableStreamAbort,
6694 WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
6695 WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
6696 WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
6697 WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
6698
6699 var ReadableStream = function () {
6700 function ReadableStream() {
6701 var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6702
6703 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6704 size = _ref.size,
6705 highWaterMark = _ref.highWaterMark;
6706
6707 _classCallCheck(this, ReadableStream);
6708
6709 this._state = 'readable';
6710 this._reader = undefined;
6711 this._storedError = undefined;
6712 this._disturbed = false;
6713 this._readableStreamController = undefined;
6714 var type = underlyingSource.type;
6715 var typeString = String(type);
6716
6717 if (typeString === 'bytes') {
6718 if (highWaterMark === undefined) {
6719 highWaterMark = 0;
6720 }
6721
6722 this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
6723 } else if (type === undefined) {
6724 if (highWaterMark === undefined) {
6725 highWaterMark = 1;
6726 }
6727
6728 this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
6729 } else {
6730 throw new RangeError('Invalid type is specified');
6731 }
6732 }
6733
6734 _createClass(ReadableStream, [{
6735 key: 'cancel',
6736 value: function cancel(reason) {
6737 if (IsReadableStream(this) === false) {
6738 return Promise.reject(streamBrandCheckException('cancel'));
6739 }
6740
6741 if (IsReadableStreamLocked(this) === true) {
6742 return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
6743 }
6744
6745 return ReadableStreamCancel(this, reason);
6746 }
6747 }, {
6748 key: 'getReader',
6749 value: function getReader() {
6750 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6751 mode = _ref2.mode;
6752
6753 if (IsReadableStream(this) === false) {
6754 throw streamBrandCheckException('getReader');
6755 }
6756
6757 if (mode === undefined) {
6758 return AcquireReadableStreamDefaultReader(this);
6759 }
6760
6761 mode = String(mode);
6762
6763 if (mode === 'byob') {
6764 return AcquireReadableStreamBYOBReader(this);
6765 }
6766
6767 throw new RangeError('Invalid mode is specified');
6768 }
6769 }, {
6770 key: 'pipeThrough',
6771 value: function pipeThrough(_ref3, options) {
6772 var writable = _ref3.writable,
6773 readable = _ref3.readable;
6774 var promise = this.pipeTo(writable, options);
6775 ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
6776 return readable;
6777 }
6778 }, {
6779 key: 'pipeTo',
6780 value: function pipeTo(dest) {
6781 var _this = this;
6782
6783 var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6784 preventClose = _ref4.preventClose,
6785 preventAbort = _ref4.preventAbort,
6786 preventCancel = _ref4.preventCancel;
6787
6788 if (IsReadableStream(this) === false) {
6789 return Promise.reject(streamBrandCheckException('pipeTo'));
6790 }
6791
6792 if (IsWritableStream(dest) === false) {
6793 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
6794 }
6795
6796 preventClose = Boolean(preventClose);
6797 preventAbort = Boolean(preventAbort);
6798 preventCancel = Boolean(preventCancel);
6799
6800 if (IsReadableStreamLocked(this) === true) {
6801 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
6802 }
6803
6804 if (IsWritableStreamLocked(dest) === true) {
6805 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
6806 }
6807
6808 var reader = AcquireReadableStreamDefaultReader(this);
6809 var writer = AcquireWritableStreamDefaultWriter(dest);
6810 var shuttingDown = false;
6811 var currentWrite = Promise.resolve();
6812 return new Promise(function (resolve, reject) {
6813 function pipeLoop() {
6814 currentWrite = Promise.resolve();
6815
6816 if (shuttingDown === true) {
6817 return Promise.resolve();
6818 }
6819
6820 return writer._readyPromise.then(function () {
6821 return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
6822 var value = _ref5.value,
6823 done = _ref5.done;
6824
6825 if (done === true) {
6826 return;
6827 }
6828
6829 currentWrite = WritableStreamDefaultWriterWrite(writer, value)["catch"](function () {});
6830 });
6831 }).then(pipeLoop);
6832 }
6833
6834 isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
6835 if (preventAbort === false) {
6836 shutdownWithAction(function () {
6837 return WritableStreamAbort(dest, storedError);
6838 }, true, storedError);
6839 } else {
6840 shutdown(true, storedError);
6841 }
6842 });
6843 isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
6844 if (preventCancel === false) {
6845 shutdownWithAction(function () {
6846 return ReadableStreamCancel(_this, storedError);
6847 }, true, storedError);
6848 } else {
6849 shutdown(true, storedError);
6850 }
6851 });
6852 isOrBecomesClosed(_this, reader._closedPromise, function () {
6853 if (preventClose === false) {
6854 shutdownWithAction(function () {
6855 return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
6856 });
6857 } else {
6858 shutdown();
6859 }
6860 });
6861
6862 if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
6863 var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
6864
6865 if (preventCancel === false) {
6866 shutdownWithAction(function () {
6867 return ReadableStreamCancel(_this, destClosed);
6868 }, true, destClosed);
6869 } else {
6870 shutdown(true, destClosed);
6871 }
6872 }
6873
6874 pipeLoop()["catch"](function (err) {
6875 currentWrite = Promise.resolve();
6876 rethrowAssertionErrorRejection(err);
6877 });
6878
6879 function waitForWritesToFinish() {
6880 var oldCurrentWrite = currentWrite;
6881 return currentWrite.then(function () {
6882 return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
6883 });
6884 }
6885
6886 function isOrBecomesErrored(stream, promise, action) {
6887 if (stream._state === 'errored') {
6888 action(stream._storedError);
6889 } else {
6890 promise["catch"](action)["catch"](rethrowAssertionErrorRejection);
6891 }
6892 }
6893
6894 function isOrBecomesClosed(stream, promise, action) {
6895 if (stream._state === 'closed') {
6896 action();
6897 } else {
6898 promise.then(action)["catch"](rethrowAssertionErrorRejection);
6899 }
6900 }
6901
6902 function shutdownWithAction(action, originalIsError, originalError) {
6903 if (shuttingDown === true) {
6904 return;
6905 }
6906
6907 shuttingDown = true;
6908
6909 if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6910 waitForWritesToFinish().then(doTheRest);
6911 } else {
6912 doTheRest();
6913 }
6914
6915 function doTheRest() {
6916 action().then(function () {
6917 return finalize(originalIsError, originalError);
6918 }, function (newError) {
6919 return finalize(true, newError);
6920 })["catch"](rethrowAssertionErrorRejection);
6921 }
6922 }
6923
6924 function shutdown(isError, error) {
6925 if (shuttingDown === true) {
6926 return;
6927 }
6928
6929 shuttingDown = true;
6930
6931 if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
6932 waitForWritesToFinish().then(function () {
6933 return finalize(isError, error);
6934 })["catch"](rethrowAssertionErrorRejection);
6935 } else {
6936 finalize(isError, error);
6937 }
6938 }
6939
6940 function finalize(isError, error) {
6941 WritableStreamDefaultWriterRelease(writer);
6942 ReadableStreamReaderGenericRelease(reader);
6943
6944 if (isError) {
6945 reject(error);
6946 } else {
6947 resolve(undefined);
6948 }
6949 }
6950 });
6951 }
6952 }, {
6953 key: 'tee',
6954 value: function tee() {
6955 if (IsReadableStream(this) === false) {
6956 throw streamBrandCheckException('tee');
6957 }
6958
6959 var branches = ReadableStreamTee(this, false);
6960 return createArrayFromList(branches);
6961 }
6962 }, {
6963 key: 'locked',
6964 get: function get() {
6965 if (IsReadableStream(this) === false) {
6966 throw streamBrandCheckException('locked');
6967 }
6968
6969 return IsReadableStreamLocked(this);
6970 }
6971 }]);
6972
6973 return ReadableStream;
6974 }();
6975
6976 module.exports = {
6977 ReadableStream: ReadableStream,
6978 IsReadableStreamDisturbed: IsReadableStreamDisturbed,
6979 ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
6980 ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
6981 ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
6982 ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
6983 };
6984
6985 function AcquireReadableStreamBYOBReader(stream) {
6986 return new ReadableStreamBYOBReader(stream);
6987 }
6988
6989 function AcquireReadableStreamDefaultReader(stream) {
6990 return new ReadableStreamDefaultReader(stream);
6991 }
6992
6993 function IsReadableStream(x) {
6994 if (!typeIsObject(x)) {
6995 return false;
6996 }
6997
6998 if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
6999 return false;
7000 }
7001
7002 return true;
7003 }
7004
7005 function IsReadableStreamDisturbed(stream) {
7006 assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
7007 return stream._disturbed;
7008 }
7009
7010 function IsReadableStreamLocked(stream) {
7011 assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
7012
7013 if (stream._reader === undefined) {
7014 return false;
7015 }
7016
7017 return true;
7018 }
7019
7020 function ReadableStreamTee(stream, cloneForBranch2) {
7021 assert(IsReadableStream(stream) === true);
7022 assert(typeof cloneForBranch2 === 'boolean');
7023 var reader = AcquireReadableStreamDefaultReader(stream);
7024 var teeState = {
7025 closedOrErrored: false,
7026 canceled1: false,
7027 canceled2: false,
7028 reason1: undefined,
7029 reason2: undefined
7030 };
7031 teeState.promise = new Promise(function (resolve) {
7032 teeState._resolve = resolve;
7033 });
7034 var pull = create_ReadableStreamTeePullFunction();
7035 pull._reader = reader;
7036 pull._teeState = teeState;
7037 pull._cloneForBranch2 = cloneForBranch2;
7038 var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
7039 cancel1._stream = stream;
7040 cancel1._teeState = teeState;
7041 var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
7042 cancel2._stream = stream;
7043 cancel2._teeState = teeState;
7044 var underlyingSource1 = Object.create(Object.prototype);
7045 createDataProperty(underlyingSource1, 'pull', pull);
7046 createDataProperty(underlyingSource1, 'cancel', cancel1);
7047 var branch1Stream = new ReadableStream(underlyingSource1);
7048 var underlyingSource2 = Object.create(Object.prototype);
7049 createDataProperty(underlyingSource2, 'pull', pull);
7050 createDataProperty(underlyingSource2, 'cancel', cancel2);
7051 var branch2Stream = new ReadableStream(underlyingSource2);
7052 pull._branch1 = branch1Stream._readableStreamController;
7053 pull._branch2 = branch2Stream._readableStreamController;
7054
7055 reader._closedPromise["catch"](function (r) {
7056 if (teeState.closedOrErrored === true) {
7057 return;
7058 }
7059
7060 ReadableStreamDefaultControllerError(pull._branch1, r);
7061 ReadableStreamDefaultControllerError(pull._branch2, r);
7062 teeState.closedOrErrored = true;
7063 });
7064
7065 return [branch1Stream, branch2Stream];
7066 }
7067
7068 function create_ReadableStreamTeePullFunction() {
7069 function f() {
7070 var reader = f._reader,
7071 branch1 = f._branch1,
7072 branch2 = f._branch2,
7073 teeState = f._teeState;
7074 return ReadableStreamDefaultReaderRead(reader).then(function (result) {
7075 assert(typeIsObject(result));
7076 var value = result.value;
7077 var done = result.done;
7078 assert(typeof done === 'boolean');
7079
7080 if (done === true && teeState.closedOrErrored === false) {
7081 if (teeState.canceled1 === false) {
7082 ReadableStreamDefaultControllerClose(branch1);
7083 }
7084
7085 if (teeState.canceled2 === false) {
7086 ReadableStreamDefaultControllerClose(branch2);
7087 }
7088
7089 teeState.closedOrErrored = true;
7090 }
7091
7092 if (teeState.closedOrErrored === true) {
7093 return;
7094 }
7095
7096 var value1 = value;
7097 var value2 = value;
7098
7099 if (teeState.canceled1 === false) {
7100 ReadableStreamDefaultControllerEnqueue(branch1, value1);
7101 }
7102
7103 if (teeState.canceled2 === false) {
7104 ReadableStreamDefaultControllerEnqueue(branch2, value2);
7105 }
7106 });
7107 }
7108
7109 return f;
7110 }
7111
7112 function create_ReadableStreamTeeBranch1CancelFunction() {
7113 function f(reason) {
7114 var stream = f._stream,
7115 teeState = f._teeState;
7116 teeState.canceled1 = true;
7117 teeState.reason1 = reason;
7118
7119 if (teeState.canceled2 === true) {
7120 var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
7121 var cancelResult = ReadableStreamCancel(stream, compositeReason);
7122
7123 teeState._resolve(cancelResult);
7124 }
7125
7126 return teeState.promise;
7127 }
7128
7129 return f;
7130 }
7131
7132 function create_ReadableStreamTeeBranch2CancelFunction() {
7133 function f(reason) {
7134 var stream = f._stream,
7135 teeState = f._teeState;
7136 teeState.canceled2 = true;
7137 teeState.reason2 = reason;
7138
7139 if (teeState.canceled1 === true) {
7140 var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
7141 var cancelResult = ReadableStreamCancel(stream, compositeReason);
7142
7143 teeState._resolve(cancelResult);
7144 }
7145
7146 return teeState.promise;
7147 }
7148
7149 return f;
7150 }
7151
7152 function ReadableStreamAddReadIntoRequest(stream) {
7153 assert(IsReadableStreamBYOBReader(stream._reader) === true);
7154 assert(stream._state === 'readable' || stream._state === 'closed');
7155 var promise = new Promise(function (resolve, reject) {
7156 var readIntoRequest = {
7157 _resolve: resolve,
7158 _reject: reject
7159 };
7160
7161 stream._reader._readIntoRequests.push(readIntoRequest);
7162 });
7163 return promise;
7164 }
7165
7166 function ReadableStreamAddReadRequest(stream) {
7167 assert(IsReadableStreamDefaultReader(stream._reader) === true);
7168 assert(stream._state === 'readable');
7169 var promise = new Promise(function (resolve, reject) {
7170 var readRequest = {
7171 _resolve: resolve,
7172 _reject: reject
7173 };
7174
7175 stream._reader._readRequests.push(readRequest);
7176 });
7177 return promise;
7178 }
7179
7180 function ReadableStreamCancel(stream, reason) {
7181 stream._disturbed = true;
7182
7183 if (stream._state === 'closed') {
7184 return Promise.resolve(undefined);
7185 }
7186
7187 if (stream._state === 'errored') {
7188 return Promise.reject(stream._storedError);
7189 }
7190
7191 ReadableStreamClose(stream);
7192
7193 var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
7194
7195 return sourceCancelPromise.then(function () {
7196 return undefined;
7197 });
7198 }
7199
7200 function ReadableStreamClose(stream) {
7201 assert(stream._state === 'readable');
7202 stream._state = 'closed';
7203 var reader = stream._reader;
7204
7205 if (reader === undefined) {
7206 return undefined;
7207 }
7208
7209 if (IsReadableStreamDefaultReader(reader) === true) {
7210 for (var i = 0; i < reader._readRequests.length; i++) {
7211 var _resolve = reader._readRequests[i]._resolve;
7212
7213 _resolve(CreateIterResultObject(undefined, true));
7214 }
7215
7216 reader._readRequests = [];
7217 }
7218
7219 defaultReaderClosedPromiseResolve(reader);
7220 return undefined;
7221 }
7222
7223 function ReadableStreamError(stream, e) {
7224 assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
7225 assert(stream._state === 'readable', 'state must be readable');
7226 stream._state = 'errored';
7227 stream._storedError = e;
7228 var reader = stream._reader;
7229
7230 if (reader === undefined) {
7231 return undefined;
7232 }
7233
7234 if (IsReadableStreamDefaultReader(reader) === true) {
7235 for (var i = 0; i < reader._readRequests.length; i++) {
7236 var readRequest = reader._readRequests[i];
7237
7238 readRequest._reject(e);
7239 }
7240
7241 reader._readRequests = [];
7242 } else {
7243 assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
7244
7245 for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
7246 var readIntoRequest = reader._readIntoRequests[_i];
7247
7248 readIntoRequest._reject(e);
7249 }
7250
7251 reader._readIntoRequests = [];
7252 }
7253
7254 defaultReaderClosedPromiseReject(reader, e);
7255
7256 reader._closedPromise["catch"](function () {});
7257 }
7258
7259 function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
7260 var reader = stream._reader;
7261 assert(reader._readIntoRequests.length > 0);
7262
7263 var readIntoRequest = reader._readIntoRequests.shift();
7264
7265 readIntoRequest._resolve(CreateIterResultObject(chunk, done));
7266 }
7267
7268 function ReadableStreamFulfillReadRequest(stream, chunk, done) {
7269 var reader = stream._reader;
7270 assert(reader._readRequests.length > 0);
7271
7272 var readRequest = reader._readRequests.shift();
7273
7274 readRequest._resolve(CreateIterResultObject(chunk, done));
7275 }
7276
7277 function ReadableStreamGetNumReadIntoRequests(stream) {
7278 return stream._reader._readIntoRequests.length;
7279 }
7280
7281 function ReadableStreamGetNumReadRequests(stream) {
7282 return stream._reader._readRequests.length;
7283 }
7284
7285 function ReadableStreamHasBYOBReader(stream) {
7286 var reader = stream._reader;
7287
7288 if (reader === undefined) {
7289 return false;
7290 }
7291
7292 if (IsReadableStreamBYOBReader(reader) === false) {
7293 return false;
7294 }
7295
7296 return true;
7297 }
7298
7299 function ReadableStreamHasDefaultReader(stream) {
7300 var reader = stream._reader;
7301
7302 if (reader === undefined) {
7303 return false;
7304 }
7305
7306 if (IsReadableStreamDefaultReader(reader) === false) {
7307 return false;
7308 }
7309
7310 return true;
7311 }
7312
7313 var ReadableStreamDefaultReader = function () {
7314 function ReadableStreamDefaultReader(stream) {
7315 _classCallCheck(this, ReadableStreamDefaultReader);
7316
7317 if (IsReadableStream(stream) === false) {
7318 throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
7319 }
7320
7321 if (IsReadableStreamLocked(stream) === true) {
7322 throw new TypeError('This stream has already been locked for exclusive reading by another reader');
7323 }
7324
7325 ReadableStreamReaderGenericInitialize(this, stream);
7326 this._readRequests = [];
7327 }
7328
7329 _createClass(ReadableStreamDefaultReader, [{
7330 key: 'cancel',
7331 value: function cancel(reason) {
7332 if (IsReadableStreamDefaultReader(this) === false) {
7333 return Promise.reject(defaultReaderBrandCheckException('cancel'));
7334 }
7335
7336 if (this._ownerReadableStream === undefined) {
7337 return Promise.reject(readerLockException('cancel'));
7338 }
7339
7340 return ReadableStreamReaderGenericCancel(this, reason);
7341 }
7342 }, {
7343 key: 'read',
7344 value: function read() {
7345 if (IsReadableStreamDefaultReader(this) === false) {
7346 return Promise.reject(defaultReaderBrandCheckException('read'));
7347 }
7348
7349 if (this._ownerReadableStream === undefined) {
7350 return Promise.reject(readerLockException('read from'));
7351 }
7352
7353 return ReadableStreamDefaultReaderRead(this);
7354 }
7355 }, {
7356 key: 'releaseLock',
7357 value: function releaseLock() {
7358 if (IsReadableStreamDefaultReader(this) === false) {
7359 throw defaultReaderBrandCheckException('releaseLock');
7360 }
7361
7362 if (this._ownerReadableStream === undefined) {
7363 return;
7364 }
7365
7366 if (this._readRequests.length > 0) {
7367 throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
7368 }
7369
7370 ReadableStreamReaderGenericRelease(this);
7371 }
7372 }, {
7373 key: 'closed',
7374 get: function get() {
7375 if (IsReadableStreamDefaultReader(this) === false) {
7376 return Promise.reject(defaultReaderBrandCheckException('closed'));
7377 }
7378
7379 return this._closedPromise;
7380 }
7381 }]);
7382
7383 return ReadableStreamDefaultReader;
7384 }();
7385
7386 var ReadableStreamBYOBReader = function () {
7387 function ReadableStreamBYOBReader(stream) {
7388 _classCallCheck(this, ReadableStreamBYOBReader);
7389
7390 if (!IsReadableStream(stream)) {
7391 throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
7392 }
7393
7394 if (IsReadableByteStreamController(stream._readableStreamController) === false) {
7395 throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
7396 }
7397
7398 if (IsReadableStreamLocked(stream)) {
7399 throw new TypeError('This stream has already been locked for exclusive reading by another reader');
7400 }
7401
7402 ReadableStreamReaderGenericInitialize(this, stream);
7403 this._readIntoRequests = [];
7404 }
7405
7406 _createClass(ReadableStreamBYOBReader, [{
7407 key: 'cancel',
7408 value: function cancel(reason) {
7409 if (!IsReadableStreamBYOBReader(this)) {
7410 return Promise.reject(byobReaderBrandCheckException('cancel'));
7411 }
7412
7413 if (this._ownerReadableStream === undefined) {
7414 return Promise.reject(readerLockException('cancel'));
7415 }
7416
7417 return ReadableStreamReaderGenericCancel(this, reason);
7418 }
7419 }, {
7420 key: 'read',
7421 value: function read(view) {
7422 if (!IsReadableStreamBYOBReader(this)) {
7423 return Promise.reject(byobReaderBrandCheckException('read'));
7424 }
7425
7426 if (this._ownerReadableStream === undefined) {
7427 return Promise.reject(readerLockException('read from'));
7428 }
7429
7430 if (!ArrayBuffer.isView(view)) {
7431 return Promise.reject(new TypeError('view must be an array buffer view'));
7432 }
7433
7434 if (view.byteLength === 0) {
7435 return Promise.reject(new TypeError('view must have non-zero byteLength'));
7436 }
7437
7438 return ReadableStreamBYOBReaderRead(this, view);
7439 }
7440 }, {
7441 key: 'releaseLock',
7442 value: function releaseLock() {
7443 if (!IsReadableStreamBYOBReader(this)) {
7444 throw byobReaderBrandCheckException('releaseLock');
7445 }
7446
7447 if (this._ownerReadableStream === undefined) {
7448 return;
7449 }
7450
7451 if (this._readIntoRequests.length > 0) {
7452 throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
7453 }
7454
7455 ReadableStreamReaderGenericRelease(this);
7456 }
7457 }, {
7458 key: 'closed',
7459 get: function get() {
7460 if (!IsReadableStreamBYOBReader(this)) {
7461 return Promise.reject(byobReaderBrandCheckException('closed'));
7462 }
7463
7464 return this._closedPromise;
7465 }
7466 }]);
7467
7468 return ReadableStreamBYOBReader;
7469 }();
7470
7471 function IsReadableStreamBYOBReader(x) {
7472 if (!typeIsObject(x)) {
7473 return false;
7474 }
7475
7476 if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
7477 return false;
7478 }
7479
7480 return true;
7481 }
7482
7483 function IsReadableStreamDefaultReader(x) {
7484 if (!typeIsObject(x)) {
7485 return false;
7486 }
7487
7488 if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
7489 return false;
7490 }
7491
7492 return true;
7493 }
7494
7495 function ReadableStreamReaderGenericInitialize(reader, stream) {
7496 reader._ownerReadableStream = stream;
7497 stream._reader = reader;
7498
7499 if (stream._state === 'readable') {
7500 defaultReaderClosedPromiseInitialize(reader);
7501 } else if (stream._state === 'closed') {
7502 defaultReaderClosedPromiseInitializeAsResolved(reader);
7503 } else {
7504 assert(stream._state === 'errored', 'state must be errored');
7505 defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
7506
7507 reader._closedPromise["catch"](function () {});
7508 }
7509 }
7510
7511 function ReadableStreamReaderGenericCancel(reader, reason) {
7512 var stream = reader._ownerReadableStream;
7513 assert(stream !== undefined);
7514 return ReadableStreamCancel(stream, reason);
7515 }
7516
7517 function ReadableStreamReaderGenericRelease(reader) {
7518 assert(reader._ownerReadableStream !== undefined);
7519 assert(reader._ownerReadableStream._reader === reader);
7520
7521 if (reader._ownerReadableStream._state === 'readable') {
7522 defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
7523 } else {
7524 defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
7525 }
7526
7527 reader._closedPromise["catch"](function () {});
7528
7529 reader._ownerReadableStream._reader = undefined;
7530 reader._ownerReadableStream = undefined;
7531 }
7532
7533 function ReadableStreamBYOBReaderRead(reader, view) {
7534 var stream = reader._ownerReadableStream;
7535 assert(stream !== undefined);
7536 stream._disturbed = true;
7537
7538 if (stream._state === 'errored') {
7539 return Promise.reject(stream._storedError);
7540 }
7541
7542 return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
7543 }
7544
7545 function ReadableStreamDefaultReaderRead(reader) {
7546 var stream = reader._ownerReadableStream;
7547 assert(stream !== undefined);
7548 stream._disturbed = true;
7549
7550 if (stream._state === 'closed') {
7551 return Promise.resolve(CreateIterResultObject(undefined, true));
7552 }
7553
7554 if (stream._state === 'errored') {
7555 return Promise.reject(stream._storedError);
7556 }
7557
7558 assert(stream._state === 'readable');
7559 return stream._readableStreamController.__pullSteps();
7560 }
7561
7562 var ReadableStreamDefaultController = function () {
7563 function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
7564 _classCallCheck(this, ReadableStreamDefaultController);
7565
7566 if (IsReadableStream(stream) === false) {
7567 throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
7568 }
7569
7570 if (stream._readableStreamController !== undefined) {
7571 throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
7572 }
7573
7574 this._controlledReadableStream = stream;
7575 this._underlyingSource = underlyingSource;
7576 this._queue = undefined;
7577 this._queueTotalSize = undefined;
7578 ResetQueue(this);
7579 this._started = false;
7580 this._closeRequested = false;
7581 this._pullAgain = false;
7582 this._pulling = false;
7583 var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
7584 this._strategySize = normalizedStrategy.size;
7585 this._strategyHWM = normalizedStrategy.highWaterMark;
7586 var controller = this;
7587 var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
7588 Promise.resolve(startResult).then(function () {
7589 controller._started = true;
7590 assert(controller._pulling === false);
7591 assert(controller._pullAgain === false);
7592 ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7593 }, function (r) {
7594 ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
7595 })["catch"](rethrowAssertionErrorRejection);
7596 }
7597
7598 _createClass(ReadableStreamDefaultController, [{
7599 key: 'close',
7600 value: function close() {
7601 if (IsReadableStreamDefaultController(this) === false) {
7602 throw defaultControllerBrandCheckException('close');
7603 }
7604
7605 if (this._closeRequested === true) {
7606 throw new TypeError('The stream has already been closed; do not close it again!');
7607 }
7608
7609 var state = this._controlledReadableStream._state;
7610
7611 if (state !== 'readable') {
7612 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
7613 }
7614
7615 ReadableStreamDefaultControllerClose(this);
7616 }
7617 }, {
7618 key: 'enqueue',
7619 value: function enqueue(chunk) {
7620 if (IsReadableStreamDefaultController(this) === false) {
7621 throw defaultControllerBrandCheckException('enqueue');
7622 }
7623
7624 if (this._closeRequested === true) {
7625 throw new TypeError('stream is closed or draining');
7626 }
7627
7628 var state = this._controlledReadableStream._state;
7629
7630 if (state !== 'readable') {
7631 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
7632 }
7633
7634 return ReadableStreamDefaultControllerEnqueue(this, chunk);
7635 }
7636 }, {
7637 key: 'error',
7638 value: function error(e) {
7639 if (IsReadableStreamDefaultController(this) === false) {
7640 throw defaultControllerBrandCheckException('error');
7641 }
7642
7643 var stream = this._controlledReadableStream;
7644
7645 if (stream._state !== 'readable') {
7646 throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
7647 }
7648
7649 ReadableStreamDefaultControllerError(this, e);
7650 }
7651 }, {
7652 key: '__cancelSteps',
7653 value: function __cancelSteps(reason) {
7654 ResetQueue(this);
7655 return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
7656 }
7657 }, {
7658 key: '__pullSteps',
7659 value: function __pullSteps() {
7660 var stream = this._controlledReadableStream;
7661
7662 if (this._queue.length > 0) {
7663 var chunk = DequeueValue(this);
7664
7665 if (this._closeRequested === true && this._queue.length === 0) {
7666 ReadableStreamClose(stream);
7667 } else {
7668 ReadableStreamDefaultControllerCallPullIfNeeded(this);
7669 }
7670
7671 return Promise.resolve(CreateIterResultObject(chunk, false));
7672 }
7673
7674 var pendingPromise = ReadableStreamAddReadRequest(stream);
7675 ReadableStreamDefaultControllerCallPullIfNeeded(this);
7676 return pendingPromise;
7677 }
7678 }, {
7679 key: 'desiredSize',
7680 get: function get() {
7681 if (IsReadableStreamDefaultController(this) === false) {
7682 throw defaultControllerBrandCheckException('desiredSize');
7683 }
7684
7685 return ReadableStreamDefaultControllerGetDesiredSize(this);
7686 }
7687 }]);
7688
7689 return ReadableStreamDefaultController;
7690 }();
7691
7692 function IsReadableStreamDefaultController(x) {
7693 if (!typeIsObject(x)) {
7694 return false;
7695 }
7696
7697 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
7698 return false;
7699 }
7700
7701 return true;
7702 }
7703
7704 function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
7705 var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
7706
7707 if (shouldPull === false) {
7708 return undefined;
7709 }
7710
7711 if (controller._pulling === true) {
7712 controller._pullAgain = true;
7713 return undefined;
7714 }
7715
7716 assert(controller._pullAgain === false);
7717 controller._pulling = true;
7718 var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
7719 pullPromise.then(function () {
7720 controller._pulling = false;
7721
7722 if (controller._pullAgain === true) {
7723 controller._pullAgain = false;
7724 return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7725 }
7726
7727 return undefined;
7728 }, function (e) {
7729 ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
7730 })["catch"](rethrowAssertionErrorRejection);
7731 return undefined;
7732 }
7733
7734 function ReadableStreamDefaultControllerShouldCallPull(controller) {
7735 var stream = controller._controlledReadableStream;
7736
7737 if (stream._state === 'closed' || stream._state === 'errored') {
7738 return false;
7739 }
7740
7741 if (controller._closeRequested === true) {
7742 return false;
7743 }
7744
7745 if (controller._started === false) {
7746 return false;
7747 }
7748
7749 if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
7750 return true;
7751 }
7752
7753 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
7754
7755 if (desiredSize > 0) {
7756 return true;
7757 }
7758
7759 return false;
7760 }
7761
7762 function ReadableStreamDefaultControllerClose(controller) {
7763 var stream = controller._controlledReadableStream;
7764 assert(controller._closeRequested === false);
7765 assert(stream._state === 'readable');
7766 controller._closeRequested = true;
7767
7768 if (controller._queue.length === 0) {
7769 ReadableStreamClose(stream);
7770 }
7771 }
7772
7773 function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
7774 var stream = controller._controlledReadableStream;
7775 assert(controller._closeRequested === false);
7776 assert(stream._state === 'readable');
7777
7778 if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
7779 ReadableStreamFulfillReadRequest(stream, chunk, false);
7780 } else {
7781 var chunkSize = 1;
7782
7783 if (controller._strategySize !== undefined) {
7784 var strategySize = controller._strategySize;
7785
7786 try {
7787 chunkSize = strategySize(chunk);
7788 } catch (chunkSizeE) {
7789 ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
7790 throw chunkSizeE;
7791 }
7792 }
7793
7794 try {
7795 EnqueueValueWithSize(controller, chunk, chunkSize);
7796 } catch (enqueueE) {
7797 ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
7798 throw enqueueE;
7799 }
7800 }
7801
7802 ReadableStreamDefaultControllerCallPullIfNeeded(controller);
7803 return undefined;
7804 }
7805
7806 function ReadableStreamDefaultControllerError(controller, e) {
7807 var stream = controller._controlledReadableStream;
7808 assert(stream._state === 'readable');
7809 ResetQueue(controller);
7810 ReadableStreamError(stream, e);
7811 }
7812
7813 function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
7814 if (controller._controlledReadableStream._state === 'readable') {
7815 ReadableStreamDefaultControllerError(controller, e);
7816 }
7817 }
7818
7819 function ReadableStreamDefaultControllerGetDesiredSize(controller) {
7820 var stream = controller._controlledReadableStream;
7821 var state = stream._state;
7822
7823 if (state === 'errored') {
7824 return null;
7825 }
7826
7827 if (state === 'closed') {
7828 return 0;
7829 }
7830
7831 return controller._strategyHWM - controller._queueTotalSize;
7832 }
7833
7834 var ReadableStreamBYOBRequest = function () {
7835 function ReadableStreamBYOBRequest(controller, view) {
7836 _classCallCheck(this, ReadableStreamBYOBRequest);
7837
7838 this._associatedReadableByteStreamController = controller;
7839 this._view = view;
7840 }
7841
7842 _createClass(ReadableStreamBYOBRequest, [{
7843 key: 'respond',
7844 value: function respond(bytesWritten) {
7845 if (IsReadableStreamBYOBRequest(this) === false) {
7846 throw byobRequestBrandCheckException('respond');
7847 }
7848
7849 if (this._associatedReadableByteStreamController === undefined) {
7850 throw new TypeError('This BYOB request has been invalidated');
7851 }
7852
7853 ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
7854 }
7855 }, {
7856 key: 'respondWithNewView',
7857 value: function respondWithNewView(view) {
7858 if (IsReadableStreamBYOBRequest(this) === false) {
7859 throw byobRequestBrandCheckException('respond');
7860 }
7861
7862 if (this._associatedReadableByteStreamController === undefined) {
7863 throw new TypeError('This BYOB request has been invalidated');
7864 }
7865
7866 if (!ArrayBuffer.isView(view)) {
7867 throw new TypeError('You can only respond with array buffer views');
7868 }
7869
7870 ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
7871 }
7872 }, {
7873 key: 'view',
7874 get: function get() {
7875 return this._view;
7876 }
7877 }]);
7878
7879 return ReadableStreamBYOBRequest;
7880 }();
7881
7882 var ReadableByteStreamController = function () {
7883 function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
7884 _classCallCheck(this, ReadableByteStreamController);
7885
7886 if (IsReadableStream(stream) === false) {
7887 throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
7888 }
7889
7890 if (stream._readableStreamController !== undefined) {
7891 throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
7892 }
7893
7894 this._controlledReadableStream = stream;
7895 this._underlyingByteSource = underlyingByteSource;
7896 this._pullAgain = false;
7897 this._pulling = false;
7898 ReadableByteStreamControllerClearPendingPullIntos(this);
7899 this._queue = this._queueTotalSize = undefined;
7900 ResetQueue(this);
7901 this._closeRequested = false;
7902 this._started = false;
7903 this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
7904 var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
7905
7906 if (autoAllocateChunkSize !== undefined) {
7907 if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
7908 throw new RangeError('autoAllocateChunkSize must be a positive integer');
7909 }
7910 }
7911
7912 this._autoAllocateChunkSize = autoAllocateChunkSize;
7913 this._pendingPullIntos = [];
7914 var controller = this;
7915 var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
7916 Promise.resolve(startResult).then(function () {
7917 controller._started = true;
7918 assert(controller._pulling === false);
7919 assert(controller._pullAgain === false);
7920 ReadableByteStreamControllerCallPullIfNeeded(controller);
7921 }, function (r) {
7922 if (stream._state === 'readable') {
7923 ReadableByteStreamControllerError(controller, r);
7924 }
7925 })["catch"](rethrowAssertionErrorRejection);
7926 }
7927
7928 _createClass(ReadableByteStreamController, [{
7929 key: 'close',
7930 value: function close() {
7931 if (IsReadableByteStreamController(this) === false) {
7932 throw byteStreamControllerBrandCheckException('close');
7933 }
7934
7935 if (this._closeRequested === true) {
7936 throw new TypeError('The stream has already been closed; do not close it again!');
7937 }
7938
7939 var state = this._controlledReadableStream._state;
7940
7941 if (state !== 'readable') {
7942 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
7943 }
7944
7945 ReadableByteStreamControllerClose(this);
7946 }
7947 }, {
7948 key: 'enqueue',
7949 value: function enqueue(chunk) {
7950 if (IsReadableByteStreamController(this) === false) {
7951 throw byteStreamControllerBrandCheckException('enqueue');
7952 }
7953
7954 if (this._closeRequested === true) {
7955 throw new TypeError('stream is closed or draining');
7956 }
7957
7958 var state = this._controlledReadableStream._state;
7959
7960 if (state !== 'readable') {
7961 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
7962 }
7963
7964 if (!ArrayBuffer.isView(chunk)) {
7965 throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
7966 }
7967
7968 ReadableByteStreamControllerEnqueue(this, chunk);
7969 }
7970 }, {
7971 key: 'error',
7972 value: function error(e) {
7973 if (IsReadableByteStreamController(this) === false) {
7974 throw byteStreamControllerBrandCheckException('error');
7975 }
7976
7977 var stream = this._controlledReadableStream;
7978
7979 if (stream._state !== 'readable') {
7980 throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
7981 }
7982
7983 ReadableByteStreamControllerError(this, e);
7984 }
7985 }, {
7986 key: '__cancelSteps',
7987 value: function __cancelSteps(reason) {
7988 if (this._pendingPullIntos.length > 0) {
7989 var firstDescriptor = this._pendingPullIntos[0];
7990 firstDescriptor.bytesFilled = 0;
7991 }
7992
7993 ResetQueue(this);
7994 return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
7995 }
7996 }, {
7997 key: '__pullSteps',
7998 value: function __pullSteps() {
7999 var stream = this._controlledReadableStream;
8000 assert(ReadableStreamHasDefaultReader(stream) === true);
8001
8002 if (this._queueTotalSize > 0) {
8003 assert(ReadableStreamGetNumReadRequests(stream) === 0);
8004
8005 var entry = this._queue.shift();
8006
8007 this._queueTotalSize -= entry.byteLength;
8008 ReadableByteStreamControllerHandleQueueDrain(this);
8009 var view = void 0;
8010
8011 try {
8012 view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
8013 } catch (viewE) {
8014 return Promise.reject(viewE);
8015 }
8016
8017 return Promise.resolve(CreateIterResultObject(view, false));
8018 }
8019
8020 var autoAllocateChunkSize = this._autoAllocateChunkSize;
8021
8022 if (autoAllocateChunkSize !== undefined) {
8023 var buffer = void 0;
8024
8025 try {
8026 buffer = new ArrayBuffer(autoAllocateChunkSize);
8027 } catch (bufferE) {
8028 return Promise.reject(bufferE);
8029 }
8030
8031 var pullIntoDescriptor = {
8032 buffer: buffer,
8033 byteOffset: 0,
8034 byteLength: autoAllocateChunkSize,
8035 bytesFilled: 0,
8036 elementSize: 1,
8037 ctor: Uint8Array,
8038 readerType: 'default'
8039 };
8040
8041 this._pendingPullIntos.push(pullIntoDescriptor);
8042 }
8043
8044 var promise = ReadableStreamAddReadRequest(stream);
8045 ReadableByteStreamControllerCallPullIfNeeded(this);
8046 return promise;
8047 }
8048 }, {
8049 key: 'byobRequest',
8050 get: function get() {
8051 if (IsReadableByteStreamController(this) === false) {
8052 throw byteStreamControllerBrandCheckException('byobRequest');
8053 }
8054
8055 if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
8056 var firstDescriptor = this._pendingPullIntos[0];
8057 var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
8058 this._byobRequest = new ReadableStreamBYOBRequest(this, view);
8059 }
8060
8061 return this._byobRequest;
8062 }
8063 }, {
8064 key: 'desiredSize',
8065 get: function get() {
8066 if (IsReadableByteStreamController(this) === false) {
8067 throw byteStreamControllerBrandCheckException('desiredSize');
8068 }
8069
8070 return ReadableByteStreamControllerGetDesiredSize(this);
8071 }
8072 }]);
8073
8074 return ReadableByteStreamController;
8075 }();
8076
8077 function IsReadableByteStreamController(x) {
8078 if (!typeIsObject(x)) {
8079 return false;
8080 }
8081
8082 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
8083 return false;
8084 }
8085
8086 return true;
8087 }
8088
8089 function IsReadableStreamBYOBRequest(x) {
8090 if (!typeIsObject(x)) {
8091 return false;
8092 }
8093
8094 if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
8095 return false;
8096 }
8097
8098 return true;
8099 }
8100
8101 function ReadableByteStreamControllerCallPullIfNeeded(controller) {
8102 var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
8103
8104 if (shouldPull === false) {
8105 return undefined;
8106 }
8107
8108 if (controller._pulling === true) {
8109 controller._pullAgain = true;
8110 return undefined;
8111 }
8112
8113 assert(controller._pullAgain === false);
8114 controller._pulling = true;
8115 var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
8116 pullPromise.then(function () {
8117 controller._pulling = false;
8118
8119 if (controller._pullAgain === true) {
8120 controller._pullAgain = false;
8121 ReadableByteStreamControllerCallPullIfNeeded(controller);
8122 }
8123 }, function (e) {
8124 if (controller._controlledReadableStream._state === 'readable') {
8125 ReadableByteStreamControllerError(controller, e);
8126 }
8127 })["catch"](rethrowAssertionErrorRejection);
8128 return undefined;
8129 }
8130
8131 function ReadableByteStreamControllerClearPendingPullIntos(controller) {
8132 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8133 controller._pendingPullIntos = [];
8134 }
8135
8136 function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
8137 assert(stream._state !== 'errored', 'state must not be errored');
8138 var done = false;
8139
8140 if (stream._state === 'closed') {
8141 assert(pullIntoDescriptor.bytesFilled === 0);
8142 done = true;
8143 }
8144
8145 var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
8146
8147 if (pullIntoDescriptor.readerType === 'default') {
8148 ReadableStreamFulfillReadRequest(stream, filledView, done);
8149 } else {
8150 assert(pullIntoDescriptor.readerType === 'byob');
8151 ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
8152 }
8153 }
8154
8155 function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
8156 var bytesFilled = pullIntoDescriptor.bytesFilled;
8157 var elementSize = pullIntoDescriptor.elementSize;
8158 assert(bytesFilled <= pullIntoDescriptor.byteLength);
8159 assert(bytesFilled % elementSize === 0);
8160 return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
8161 }
8162
8163 function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
8164 controller._queue.push({
8165 buffer: buffer,
8166 byteOffset: byteOffset,
8167 byteLength: byteLength
8168 });
8169
8170 controller._queueTotalSize += byteLength;
8171 }
8172
8173 function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
8174 var elementSize = pullIntoDescriptor.elementSize;
8175 var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
8176 var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
8177 var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
8178 var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
8179 var totalBytesToCopyRemaining = maxBytesToCopy;
8180 var ready = false;
8181
8182 if (maxAlignedBytes > currentAlignedBytes) {
8183 totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
8184 ready = true;
8185 }
8186
8187 var queue = controller._queue;
8188
8189 while (totalBytesToCopyRemaining > 0) {
8190 var headOfQueue = queue[0];
8191 var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
8192 var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
8193 ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
8194
8195 if (headOfQueue.byteLength === bytesToCopy) {
8196 queue.shift();
8197 } else {
8198 headOfQueue.byteOffset += bytesToCopy;
8199 headOfQueue.byteLength -= bytesToCopy;
8200 }
8201
8202 controller._queueTotalSize -= bytesToCopy;
8203 ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
8204 totalBytesToCopyRemaining -= bytesToCopy;
8205 }
8206
8207 if (ready === false) {
8208 assert(controller._queueTotalSize === 0, 'queue must be empty');
8209 assert(pullIntoDescriptor.bytesFilled > 0);
8210 assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
8211 }
8212
8213 return ready;
8214 }
8215
8216 function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
8217 assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
8218 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8219 pullIntoDescriptor.bytesFilled += size;
8220 }
8221
8222 function ReadableByteStreamControllerHandleQueueDrain(controller) {
8223 assert(controller._controlledReadableStream._state === 'readable');
8224
8225 if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
8226 ReadableStreamClose(controller._controlledReadableStream);
8227 } else {
8228 ReadableByteStreamControllerCallPullIfNeeded(controller);
8229 }
8230 }
8231
8232 function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
8233 if (controller._byobRequest === undefined) {
8234 return;
8235 }
8236
8237 controller._byobRequest._associatedReadableByteStreamController = undefined;
8238 controller._byobRequest._view = undefined;
8239 controller._byobRequest = undefined;
8240 }
8241
8242 function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
8243 assert(controller._closeRequested === false);
8244
8245 while (controller._pendingPullIntos.length > 0) {
8246 if (controller._queueTotalSize === 0) {
8247 return;
8248 }
8249
8250 var pullIntoDescriptor = controller._pendingPullIntos[0];
8251
8252 if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
8253 ReadableByteStreamControllerShiftPendingPullInto(controller);
8254 ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
8255 }
8256 }
8257 }
8258
8259 function ReadableByteStreamControllerPullInto(controller, view) {
8260 var stream = controller._controlledReadableStream;
8261 var elementSize = 1;
8262
8263 if (view.constructor !== DataView) {
8264 elementSize = view.constructor.BYTES_PER_ELEMENT;
8265 }
8266
8267 var ctor = view.constructor;
8268 var pullIntoDescriptor = {
8269 buffer: view.buffer,
8270 byteOffset: view.byteOffset,
8271 byteLength: view.byteLength,
8272 bytesFilled: 0,
8273 elementSize: elementSize,
8274 ctor: ctor,
8275 readerType: 'byob'
8276 };
8277
8278 if (controller._pendingPullIntos.length > 0) {
8279 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8280
8281 controller._pendingPullIntos.push(pullIntoDescriptor);
8282
8283 return ReadableStreamAddReadIntoRequest(stream);
8284 }
8285
8286 if (stream._state === 'closed') {
8287 var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
8288 return Promise.resolve(CreateIterResultObject(emptyView, true));
8289 }
8290
8291 if (controller._queueTotalSize > 0) {
8292 if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
8293 var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
8294 ReadableByteStreamControllerHandleQueueDrain(controller);
8295 return Promise.resolve(CreateIterResultObject(filledView, false));
8296 }
8297
8298 if (controller._closeRequested === true) {
8299 var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
8300 ReadableByteStreamControllerError(controller, e);
8301 return Promise.reject(e);
8302 }
8303 }
8304
8305 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8306
8307 controller._pendingPullIntos.push(pullIntoDescriptor);
8308
8309 var promise = ReadableStreamAddReadIntoRequest(stream);
8310 ReadableByteStreamControllerCallPullIfNeeded(controller);
8311 return promise;
8312 }
8313
8314 function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
8315 firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
8316 assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
8317 var stream = controller._controlledReadableStream;
8318
8319 if (ReadableStreamHasBYOBReader(stream) === true) {
8320 while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
8321 var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
8322 ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
8323 }
8324 }
8325 }
8326
8327 function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
8328 if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
8329 throw new RangeError('bytesWritten out of range');
8330 }
8331
8332 ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
8333
8334 if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
8335 return;
8336 }
8337
8338 ReadableByteStreamControllerShiftPendingPullInto(controller);
8339 var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
8340
8341 if (remainderSize > 0) {
8342 var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
8343 var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
8344 ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
8345 }
8346
8347 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
8348 pullIntoDescriptor.bytesFilled -= remainderSize;
8349 ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
8350 ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
8351 }
8352
8353 function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
8354 var firstDescriptor = controller._pendingPullIntos[0];
8355 var stream = controller._controlledReadableStream;
8356
8357 if (stream._state === 'closed') {
8358 if (bytesWritten !== 0) {
8359 throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
8360 }
8361
8362 ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
8363 } else {
8364 assert(stream._state === 'readable');
8365 ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
8366 }
8367 }
8368
8369 function ReadableByteStreamControllerShiftPendingPullInto(controller) {
8370 var descriptor = controller._pendingPullIntos.shift();
8371
8372 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
8373 return descriptor;
8374 }
8375
8376 function ReadableByteStreamControllerShouldCallPull(controller) {
8377 var stream = controller._controlledReadableStream;
8378
8379 if (stream._state !== 'readable') {
8380 return false;
8381 }
8382
8383 if (controller._closeRequested === true) {
8384 return false;
8385 }
8386
8387 if (controller._started === false) {
8388 return false;
8389 }
8390
8391 if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
8392 return true;
8393 }
8394
8395 if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
8396 return true;
8397 }
8398
8399 if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
8400 return true;
8401 }
8402
8403 return false;
8404 }
8405
8406 function ReadableByteStreamControllerClose(controller) {
8407 var stream = controller._controlledReadableStream;
8408 assert(controller._closeRequested === false);
8409 assert(stream._state === 'readable');
8410
8411 if (controller._queueTotalSize > 0) {
8412 controller._closeRequested = true;
8413 return;
8414 }
8415
8416 if (controller._pendingPullIntos.length > 0) {
8417 var firstPendingPullInto = controller._pendingPullIntos[0];
8418
8419 if (firstPendingPullInto.bytesFilled > 0) {
8420 var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
8421 ReadableByteStreamControllerError(controller, e);
8422 throw e;
8423 }
8424 }
8425
8426 ReadableStreamClose(stream);
8427 }
8428
8429 function ReadableByteStreamControllerEnqueue(controller, chunk) {
8430 var stream = controller._controlledReadableStream;
8431 assert(controller._closeRequested === false);
8432 assert(stream._state === 'readable');
8433 var buffer = chunk.buffer;
8434 var byteOffset = chunk.byteOffset;
8435 var byteLength = chunk.byteLength;
8436 var transferredBuffer = TransferArrayBuffer(buffer);
8437
8438 if (ReadableStreamHasDefaultReader(stream) === true) {
8439 if (ReadableStreamGetNumReadRequests(stream) === 0) {
8440 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8441 } else {
8442 assert(controller._queue.length === 0);
8443 var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
8444 ReadableStreamFulfillReadRequest(stream, transferredView, false);
8445 }
8446 } else if (ReadableStreamHasBYOBReader(stream) === true) {
8447 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8448 ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
8449 } else {
8450 assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
8451 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
8452 }
8453 }
8454
8455 function ReadableByteStreamControllerError(controller, e) {
8456 var stream = controller._controlledReadableStream;
8457 assert(stream._state === 'readable');
8458 ReadableByteStreamControllerClearPendingPullIntos(controller);
8459 ResetQueue(controller);
8460 ReadableStreamError(stream, e);
8461 }
8462
8463 function ReadableByteStreamControllerGetDesiredSize(controller) {
8464 var stream = controller._controlledReadableStream;
8465 var state = stream._state;
8466
8467 if (state === 'errored') {
8468 return null;
8469 }
8470
8471 if (state === 'closed') {
8472 return 0;
8473 }
8474
8475 return controller._strategyHWM - controller._queueTotalSize;
8476 }
8477
8478 function ReadableByteStreamControllerRespond(controller, bytesWritten) {
8479 bytesWritten = Number(bytesWritten);
8480
8481 if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
8482 throw new RangeError('bytesWritten must be a finite');
8483 }
8484
8485 assert(controller._pendingPullIntos.length > 0);
8486 ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
8487 }
8488
8489 function ReadableByteStreamControllerRespondWithNewView(controller, view) {
8490 assert(controller._pendingPullIntos.length > 0);
8491 var firstDescriptor = controller._pendingPullIntos[0];
8492
8493 if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
8494 throw new RangeError('The region specified by view does not match byobRequest');
8495 }
8496
8497 if (firstDescriptor.byteLength !== view.byteLength) {
8498 throw new RangeError('The buffer of view has different capacity than byobRequest');
8499 }
8500
8501 firstDescriptor.buffer = view.buffer;
8502 ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
8503 }
8504
8505 function streamBrandCheckException(name) {
8506 return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
8507 }
8508
8509 function readerLockException(name) {
8510 return new TypeError('Cannot ' + name + ' a stream using a released reader');
8511 }
8512
8513 function defaultReaderBrandCheckException(name) {
8514 return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
8515 }
8516
8517 function defaultReaderClosedPromiseInitialize(reader) {
8518 reader._closedPromise = new Promise(function (resolve, reject) {
8519 reader._closedPromise_resolve = resolve;
8520 reader._closedPromise_reject = reject;
8521 });
8522 }
8523
8524 function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
8525 reader._closedPromise = Promise.reject(reason);
8526 reader._closedPromise_resolve = undefined;
8527 reader._closedPromise_reject = undefined;
8528 }
8529
8530 function defaultReaderClosedPromiseInitializeAsResolved(reader) {
8531 reader._closedPromise = Promise.resolve(undefined);
8532 reader._closedPromise_resolve = undefined;
8533 reader._closedPromise_reject = undefined;
8534 }
8535
8536 function defaultReaderClosedPromiseReject(reader, reason) {
8537 assert(reader._closedPromise_resolve !== undefined);
8538 assert(reader._closedPromise_reject !== undefined);
8539
8540 reader._closedPromise_reject(reason);
8541
8542 reader._closedPromise_resolve = undefined;
8543 reader._closedPromise_reject = undefined;
8544 }
8545
8546 function defaultReaderClosedPromiseResetToRejected(reader, reason) {
8547 assert(reader._closedPromise_resolve === undefined);
8548 assert(reader._closedPromise_reject === undefined);
8549 reader._closedPromise = Promise.reject(reason);
8550 }
8551
8552 function defaultReaderClosedPromiseResolve(reader) {
8553 assert(reader._closedPromise_resolve !== undefined);
8554 assert(reader._closedPromise_reject !== undefined);
8555
8556 reader._closedPromise_resolve(undefined);
8557
8558 reader._closedPromise_resolve = undefined;
8559 reader._closedPromise_reject = undefined;
8560 }
8561
8562 function byobReaderBrandCheckException(name) {
8563 return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
8564 }
8565
8566 function defaultControllerBrandCheckException(name) {
8567 return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
8568 }
8569
8570 function byobRequestBrandCheckException(name) {
8571 return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
8572 }
8573
8574 function byteStreamControllerBrandCheckException(name) {
8575 return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
8576 }
8577
8578 function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
8579 try {
8580 Promise.prototype.then.call(promise, undefined, function () {});
8581 } catch (e) {}
8582 }
8583}, function (module, exports, __w_pdfjs_require__) {
8584 "use strict";
8585
8586 var transformStream = __w_pdfjs_require__(6);
8587
8588 var readableStream = __w_pdfjs_require__(4);
8589
8590 var writableStream = __w_pdfjs_require__(2);
8591
8592 exports.TransformStream = transformStream.TransformStream;
8593 exports.ReadableStream = readableStream.ReadableStream;
8594 exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
8595 exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
8596 exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
8597 exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
8598 exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
8599 exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
8600 exports.IsWritableStream = writableStream.IsWritableStream;
8601 exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
8602 exports.WritableStream = writableStream.WritableStream;
8603 exports.WritableStreamAbort = writableStream.WritableStreamAbort;
8604 exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
8605 exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
8606 exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
8607 exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
8608}, function (module, exports, __w_pdfjs_require__) {
8609 "use strict";
8610
8611 var _createClass = function () {
8612 function defineProperties(target, props) {
8613 for (var i = 0; i < props.length; i++) {
8614 var descriptor = props[i];
8615 descriptor.enumerable = descriptor.enumerable || false;
8616 descriptor.configurable = true;
8617 if ("value" in descriptor) descriptor.writable = true;
8618 Object.defineProperty(target, descriptor.key, descriptor);
8619 }
8620 }
8621
8622 return function (Constructor, protoProps, staticProps) {
8623 if (protoProps) defineProperties(Constructor.prototype, protoProps);
8624 if (staticProps) defineProperties(Constructor, staticProps);
8625 return Constructor;
8626 };
8627 }();
8628
8629 function _classCallCheck(instance, Constructor) {
8630 if (!(instance instanceof Constructor)) {
8631 throw new TypeError("Cannot call a class as a function");
8632 }
8633 }
8634
8635 var _require = __w_pdfjs_require__(1),
8636 assert = _require.assert;
8637
8638 var _require2 = __w_pdfjs_require__(0),
8639 InvokeOrNoop = _require2.InvokeOrNoop,
8640 PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
8641 PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
8642 typeIsObject = _require2.typeIsObject;
8643
8644 var _require3 = __w_pdfjs_require__(4),
8645 ReadableStream = _require3.ReadableStream,
8646 ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
8647 ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
8648 ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
8649 ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
8650
8651 var _require4 = __w_pdfjs_require__(2),
8652 WritableStream = _require4.WritableStream,
8653 WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
8654
8655 function TransformStreamCloseReadable(transformStream) {
8656 if (transformStream._errored === true) {
8657 throw new TypeError('TransformStream is already errored');
8658 }
8659
8660 if (transformStream._readableClosed === true) {
8661 throw new TypeError('Readable side is already closed');
8662 }
8663
8664 TransformStreamCloseReadableInternal(transformStream);
8665 }
8666
8667 function TransformStreamEnqueueToReadable(transformStream, chunk) {
8668 if (transformStream._errored === true) {
8669 throw new TypeError('TransformStream is already errored');
8670 }
8671
8672 if (transformStream._readableClosed === true) {
8673 throw new TypeError('Readable side is already closed');
8674 }
8675
8676 var controller = transformStream._readableController;
8677
8678 try {
8679 ReadableStreamDefaultControllerEnqueue(controller, chunk);
8680 } catch (e) {
8681 transformStream._readableClosed = true;
8682 TransformStreamErrorIfNeeded(transformStream, e);
8683 throw transformStream._storedError;
8684 }
8685
8686 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
8687 var maybeBackpressure = desiredSize <= 0;
8688
8689 if (maybeBackpressure === true && transformStream._backpressure === false) {
8690 TransformStreamSetBackpressure(transformStream, true);
8691 }
8692 }
8693
8694 function TransformStreamError(transformStream, e) {
8695 if (transformStream._errored === true) {
8696 throw new TypeError('TransformStream is already errored');
8697 }
8698
8699 TransformStreamErrorInternal(transformStream, e);
8700 }
8701
8702 function TransformStreamCloseReadableInternal(transformStream) {
8703 assert(transformStream._errored === false);
8704 assert(transformStream._readableClosed === false);
8705
8706 try {
8707 ReadableStreamDefaultControllerClose(transformStream._readableController);
8708 } catch (e) {
8709 assert(false);
8710 }
8711
8712 transformStream._readableClosed = true;
8713 }
8714
8715 function TransformStreamErrorIfNeeded(transformStream, e) {
8716 if (transformStream._errored === false) {
8717 TransformStreamErrorInternal(transformStream, e);
8718 }
8719 }
8720
8721 function TransformStreamErrorInternal(transformStream, e) {
8722 assert(transformStream._errored === false);
8723 transformStream._errored = true;
8724 transformStream._storedError = e;
8725
8726 if (transformStream._writableDone === false) {
8727 WritableStreamDefaultControllerError(transformStream._writableController, e);
8728 }
8729
8730 if (transformStream._readableClosed === false) {
8731 ReadableStreamDefaultControllerError(transformStream._readableController, e);
8732 }
8733 }
8734
8735 function TransformStreamReadableReadyPromise(transformStream) {
8736 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8737
8738 if (transformStream._backpressure === false) {
8739 return Promise.resolve();
8740 }
8741
8742 assert(transformStream._backpressure === true, '_backpressure should have been initialized');
8743 return transformStream._backpressureChangePromise;
8744 }
8745
8746 function TransformStreamSetBackpressure(transformStream, backpressure) {
8747 assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
8748
8749 if (transformStream._backpressureChangePromise !== undefined) {
8750 transformStream._backpressureChangePromise_resolve(backpressure);
8751 }
8752
8753 transformStream._backpressureChangePromise = new Promise(function (resolve) {
8754 transformStream._backpressureChangePromise_resolve = resolve;
8755 });
8756
8757 transformStream._backpressureChangePromise.then(function (resolution) {
8758 assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
8759 });
8760
8761 transformStream._backpressure = backpressure;
8762 }
8763
8764 function TransformStreamDefaultTransform(chunk, transformStreamController) {
8765 var transformStream = transformStreamController._controlledTransformStream;
8766 TransformStreamEnqueueToReadable(transformStream, chunk);
8767 return Promise.resolve();
8768 }
8769
8770 function TransformStreamTransform(transformStream, chunk) {
8771 assert(transformStream._errored === false);
8772 assert(transformStream._transforming === false);
8773 assert(transformStream._backpressure === false);
8774 transformStream._transforming = true;
8775 var transformer = transformStream._transformer;
8776 var controller = transformStream._transformStreamController;
8777 var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
8778 return transformPromise.then(function () {
8779 transformStream._transforming = false;
8780 return TransformStreamReadableReadyPromise(transformStream);
8781 }, function (e) {
8782 TransformStreamErrorIfNeeded(transformStream, e);
8783 return Promise.reject(e);
8784 });
8785 }
8786
8787 function IsTransformStreamDefaultController(x) {
8788 if (!typeIsObject(x)) {
8789 return false;
8790 }
8791
8792 if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
8793 return false;
8794 }
8795
8796 return true;
8797 }
8798
8799 function IsTransformStream(x) {
8800 if (!typeIsObject(x)) {
8801 return false;
8802 }
8803
8804 if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
8805 return false;
8806 }
8807
8808 return true;
8809 }
8810
8811 var TransformStreamSink = function () {
8812 function TransformStreamSink(transformStream, startPromise) {
8813 _classCallCheck(this, TransformStreamSink);
8814
8815 this._transformStream = transformStream;
8816 this._startPromise = startPromise;
8817 }
8818
8819 _createClass(TransformStreamSink, [{
8820 key: 'start',
8821 value: function start(c) {
8822 var transformStream = this._transformStream;
8823 transformStream._writableController = c;
8824 return this._startPromise.then(function () {
8825 return TransformStreamReadableReadyPromise(transformStream);
8826 });
8827 }
8828 }, {
8829 key: 'write',
8830 value: function write(chunk) {
8831 var transformStream = this._transformStream;
8832 return TransformStreamTransform(transformStream, chunk);
8833 }
8834 }, {
8835 key: 'abort',
8836 value: function abort() {
8837 var transformStream = this._transformStream;
8838 transformStream._writableDone = true;
8839 TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
8840 }
8841 }, {
8842 key: 'close',
8843 value: function close() {
8844 var transformStream = this._transformStream;
8845 assert(transformStream._transforming === false);
8846 transformStream._writableDone = true;
8847 var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
8848 return flushPromise.then(function () {
8849 if (transformStream._errored === true) {
8850 return Promise.reject(transformStream._storedError);
8851 }
8852
8853 if (transformStream._readableClosed === false) {
8854 TransformStreamCloseReadableInternal(transformStream);
8855 }
8856
8857 return Promise.resolve();
8858 })["catch"](function (r) {
8859 TransformStreamErrorIfNeeded(transformStream, r);
8860 return Promise.reject(transformStream._storedError);
8861 });
8862 }
8863 }]);
8864
8865 return TransformStreamSink;
8866 }();
8867
8868 var TransformStreamSource = function () {
8869 function TransformStreamSource(transformStream, startPromise) {
8870 _classCallCheck(this, TransformStreamSource);
8871
8872 this._transformStream = transformStream;
8873 this._startPromise = startPromise;
8874 }
8875
8876 _createClass(TransformStreamSource, [{
8877 key: 'start',
8878 value: function start(c) {
8879 var transformStream = this._transformStream;
8880 transformStream._readableController = c;
8881 return this._startPromise.then(function () {
8882 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8883
8884 if (transformStream._backpressure === true) {
8885 return Promise.resolve();
8886 }
8887
8888 assert(transformStream._backpressure === false, '_backpressure should have been initialized');
8889 return transformStream._backpressureChangePromise;
8890 });
8891 }
8892 }, {
8893 key: 'pull',
8894 value: function pull() {
8895 var transformStream = this._transformStream;
8896 assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
8897 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
8898 TransformStreamSetBackpressure(transformStream, false);
8899 return transformStream._backpressureChangePromise;
8900 }
8901 }, {
8902 key: 'cancel',
8903 value: function cancel() {
8904 var transformStream = this._transformStream;
8905 transformStream._readableClosed = true;
8906 TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
8907 }
8908 }]);
8909
8910 return TransformStreamSource;
8911 }();
8912
8913 var TransformStreamDefaultController = function () {
8914 function TransformStreamDefaultController(transformStream) {
8915 _classCallCheck(this, TransformStreamDefaultController);
8916
8917 if (IsTransformStream(transformStream) === false) {
8918 throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
8919 }
8920
8921 if (transformStream._transformStreamController !== undefined) {
8922 throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
8923 }
8924
8925 this._controlledTransformStream = transformStream;
8926 }
8927
8928 _createClass(TransformStreamDefaultController, [{
8929 key: 'enqueue',
8930 value: function enqueue(chunk) {
8931 if (IsTransformStreamDefaultController(this) === false) {
8932 throw defaultControllerBrandCheckException('enqueue');
8933 }
8934
8935 TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
8936 }
8937 }, {
8938 key: 'close',
8939 value: function close() {
8940 if (IsTransformStreamDefaultController(this) === false) {
8941 throw defaultControllerBrandCheckException('close');
8942 }
8943
8944 TransformStreamCloseReadable(this._controlledTransformStream);
8945 }
8946 }, {
8947 key: 'error',
8948 value: function error(reason) {
8949 if (IsTransformStreamDefaultController(this) === false) {
8950 throw defaultControllerBrandCheckException('error');
8951 }
8952
8953 TransformStreamError(this._controlledTransformStream, reason);
8954 }
8955 }, {
8956 key: 'desiredSize',
8957 get: function get() {
8958 if (IsTransformStreamDefaultController(this) === false) {
8959 throw defaultControllerBrandCheckException('desiredSize');
8960 }
8961
8962 var transformStream = this._controlledTransformStream;
8963 var readableController = transformStream._readableController;
8964 return ReadableStreamDefaultControllerGetDesiredSize(readableController);
8965 }
8966 }]);
8967
8968 return TransformStreamDefaultController;
8969 }();
8970
8971 var TransformStream = function () {
8972 function TransformStream() {
8973 var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8974
8975 _classCallCheck(this, TransformStream);
8976
8977 this._transformer = transformer;
8978 var readableStrategy = transformer.readableStrategy,
8979 writableStrategy = transformer.writableStrategy;
8980 this._transforming = false;
8981 this._errored = false;
8982 this._storedError = undefined;
8983 this._writableController = undefined;
8984 this._readableController = undefined;
8985 this._transformStreamController = undefined;
8986 this._writableDone = false;
8987 this._readableClosed = false;
8988 this._backpressure = undefined;
8989 this._backpressureChangePromise = undefined;
8990 this._backpressureChangePromise_resolve = undefined;
8991 this._transformStreamController = new TransformStreamDefaultController(this);
8992 var startPromise_resolve = void 0;
8993 var startPromise = new Promise(function (resolve) {
8994 startPromise_resolve = resolve;
8995 });
8996 var source = new TransformStreamSource(this, startPromise);
8997 this._readable = new ReadableStream(source, readableStrategy);
8998 var sink = new TransformStreamSink(this, startPromise);
8999 this._writable = new WritableStream(sink, writableStrategy);
9000 assert(this._writableController !== undefined);
9001 assert(this._readableController !== undefined);
9002 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
9003 TransformStreamSetBackpressure(this, desiredSize <= 0);
9004 var transformStream = this;
9005 var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
9006 startPromise_resolve(startResult);
9007 startPromise["catch"](function (e) {
9008 if (transformStream._errored === false) {
9009 transformStream._errored = true;
9010 transformStream._storedError = e;
9011 }
9012 });
9013 }
9014
9015 _createClass(TransformStream, [{
9016 key: 'readable',
9017 get: function get() {
9018 if (IsTransformStream(this) === false) {
9019 throw streamBrandCheckException('readable');
9020 }
9021
9022 return this._readable;
9023 }
9024 }, {
9025 key: 'writable',
9026 get: function get() {
9027 if (IsTransformStream(this) === false) {
9028 throw streamBrandCheckException('writable');
9029 }
9030
9031 return this._writable;
9032 }
9033 }]);
9034
9035 return TransformStream;
9036 }();
9037
9038 module.exports = {
9039 TransformStream: TransformStream
9040 };
9041
9042 function defaultControllerBrandCheckException(name) {
9043 return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
9044 }
9045
9046 function streamBrandCheckException(name) {
9047 return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
9048 }
9049}, function (module, exports, __w_pdfjs_require__) {
9050 module.exports = __w_pdfjs_require__(5);
9051}]));
9052
9053/***/ }),
9054/* 145 */
9055/***/ (function(module, exports, __w_pdfjs_require__) {
9056
9057"use strict";
9058
9059
9060function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9061
9062{
9063 var isURLSupported = false;
9064
9065 try {
9066 if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
9067 var u = new URL('b', 'http://a');
9068 u.pathname = 'c%20d';
9069 isURLSupported = u.href === 'http://a/c%20d';
9070 }
9071 } catch (ex) {}
9072
9073 if (isURLSupported) {
9074 exports.URL = URL;
9075 } else {
9076 var PolyfillURL = __w_pdfjs_require__(146).URL;
9077
9078 var OriginalURL = __w_pdfjs_require__(3).URL;
9079
9080 if (OriginalURL) {
9081 PolyfillURL.createObjectURL = function (blob) {
9082 return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
9083 };
9084
9085 PolyfillURL.revokeObjectURL = function (url) {
9086 OriginalURL.revokeObjectURL(url);
9087 };
9088 }
9089
9090 exports.URL = PolyfillURL;
9091 }
9092}
9093
9094/***/ }),
9095/* 146 */
9096/***/ (function(module, exports, __w_pdfjs_require__) {
9097
9098"use strict";
9099
9100
9101(function URLConstructorClosure() {
9102 'use strict';
9103
9104 var relative = Object.create(null);
9105 relative['ftp'] = 21;
9106 relative['file'] = 0;
9107 relative['gopher'] = 70;
9108 relative['http'] = 80;
9109 relative['https'] = 443;
9110 relative['ws'] = 80;
9111 relative['wss'] = 443;
9112 var relativePathDotMapping = Object.create(null);
9113 relativePathDotMapping['%2e'] = '.';
9114 relativePathDotMapping['.%2e'] = '..';
9115 relativePathDotMapping['%2e.'] = '..';
9116 relativePathDotMapping['%2e%2e'] = '..';
9117
9118 function isRelativeScheme(scheme) {
9119 return relative[scheme] !== undefined;
9120 }
9121
9122 function invalid() {
9123 clear.call(this);
9124 this._isInvalid = true;
9125 }
9126
9127 function IDNAToASCII(h) {
9128 if (h === '') {
9129 invalid.call(this);
9130 }
9131
9132 return h.toLowerCase();
9133 }
9134
9135 function percentEscape(c) {
9136 var unicode = c.charCodeAt(0);
9137
9138 if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
9139 return c;
9140 }
9141
9142 return encodeURIComponent(c);
9143 }
9144
9145 function percentEscapeQuery(c) {
9146 var unicode = c.charCodeAt(0);
9147
9148 if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
9149 return c;
9150 }
9151
9152 return encodeURIComponent(c);
9153 }
9154
9155 var EOF,
9156 ALPHA = /[a-zA-Z]/,
9157 ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
9158
9159 function parse(input, stateOverride, base) {
9160 function err(message) {
9161 errors.push(message);
9162 }
9163
9164 var state = stateOverride || 'scheme start',
9165 cursor = 0,
9166 buffer = '',
9167 seenAt = false,
9168 seenBracket = false,
9169 errors = [];
9170
9171 loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
9172 var c = input[cursor];
9173
9174 switch (state) {
9175 case 'scheme start':
9176 if (c && ALPHA.test(c)) {
9177 buffer += c.toLowerCase();
9178 state = 'scheme';
9179 } else if (!stateOverride) {
9180 buffer = '';
9181 state = 'no scheme';
9182 continue;
9183 } else {
9184 err('Invalid scheme.');
9185 break loop;
9186 }
9187
9188 break;
9189
9190 case 'scheme':
9191 if (c && ALPHANUMERIC.test(c)) {
9192 buffer += c.toLowerCase();
9193 } else if (c === ':') {
9194 this._scheme = buffer;
9195 buffer = '';
9196
9197 if (stateOverride) {
9198 break loop;
9199 }
9200
9201 if (isRelativeScheme(this._scheme)) {
9202 this._isRelative = true;
9203 }
9204
9205 if (this._scheme === 'file') {
9206 state = 'relative';
9207 } else if (this._isRelative && base && base._scheme === this._scheme) {
9208 state = 'relative or authority';
9209 } else if (this._isRelative) {
9210 state = 'authority first slash';
9211 } else {
9212 state = 'scheme data';
9213 }
9214 } else if (!stateOverride) {
9215 buffer = '';
9216 cursor = 0;
9217 state = 'no scheme';
9218 continue;
9219 } else if (c === EOF) {
9220 break loop;
9221 } else {
9222 err('Code point not allowed in scheme: ' + c);
9223 break loop;
9224 }
9225
9226 break;
9227
9228 case 'scheme data':
9229 if (c === '?') {
9230 this._query = '?';
9231 state = 'query';
9232 } else if (c === '#') {
9233 this._fragment = '#';
9234 state = 'fragment';
9235 } else {
9236 if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9237 this._schemeData += percentEscape(c);
9238 }
9239 }
9240
9241 break;
9242
9243 case 'no scheme':
9244 if (!base || !isRelativeScheme(base._scheme)) {
9245 err('Missing scheme.');
9246 invalid.call(this);
9247 } else {
9248 state = 'relative';
9249 continue;
9250 }
9251
9252 break;
9253
9254 case 'relative or authority':
9255 if (c === '/' && input[cursor + 1] === '/') {
9256 state = 'authority ignore slashes';
9257 } else {
9258 err('Expected /, got: ' + c);
9259 state = 'relative';
9260 continue;
9261 }
9262
9263 break;
9264
9265 case 'relative':
9266 this._isRelative = true;
9267
9268 if (this._scheme !== 'file') {
9269 this._scheme = base._scheme;
9270 }
9271
9272 if (c === EOF) {
9273 this._host = base._host;
9274 this._port = base._port;
9275 this._path = base._path.slice();
9276 this._query = base._query;
9277 this._username = base._username;
9278 this._password = base._password;
9279 break loop;
9280 } else if (c === '/' || c === '\\') {
9281 if (c === '\\') {
9282 err('\\ is an invalid code point.');
9283 }
9284
9285 state = 'relative slash';
9286 } else if (c === '?') {
9287 this._host = base._host;
9288 this._port = base._port;
9289 this._path = base._path.slice();
9290 this._query = '?';
9291 this._username = base._username;
9292 this._password = base._password;
9293 state = 'query';
9294 } else if (c === '#') {
9295 this._host = base._host;
9296 this._port = base._port;
9297 this._path = base._path.slice();
9298 this._query = base._query;
9299 this._fragment = '#';
9300 this._username = base._username;
9301 this._password = base._password;
9302 state = 'fragment';
9303 } else {
9304 var nextC = input[cursor + 1];
9305 var nextNextC = input[cursor + 2];
9306
9307 if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
9308 this._host = base._host;
9309 this._port = base._port;
9310 this._username = base._username;
9311 this._password = base._password;
9312 this._path = base._path.slice();
9313
9314 this._path.pop();
9315 }
9316
9317 state = 'relative path';
9318 continue;
9319 }
9320
9321 break;
9322
9323 case 'relative slash':
9324 if (c === '/' || c === '\\') {
9325 if (c === '\\') {
9326 err('\\ is an invalid code point.');
9327 }
9328
9329 if (this._scheme === 'file') {
9330 state = 'file host';
9331 } else {
9332 state = 'authority ignore slashes';
9333 }
9334 } else {
9335 if (this._scheme !== 'file') {
9336 this._host = base._host;
9337 this._port = base._port;
9338 this._username = base._username;
9339 this._password = base._password;
9340 }
9341
9342 state = 'relative path';
9343 continue;
9344 }
9345
9346 break;
9347
9348 case 'authority first slash':
9349 if (c === '/') {
9350 state = 'authority second slash';
9351 } else {
9352 err('Expected \'/\', got: ' + c);
9353 state = 'authority ignore slashes';
9354 continue;
9355 }
9356
9357 break;
9358
9359 case 'authority second slash':
9360 state = 'authority ignore slashes';
9361
9362 if (c !== '/') {
9363 err('Expected \'/\', got: ' + c);
9364 continue;
9365 }
9366
9367 break;
9368
9369 case 'authority ignore slashes':
9370 if (c !== '/' && c !== '\\') {
9371 state = 'authority';
9372 continue;
9373 } else {
9374 err('Expected authority, got: ' + c);
9375 }
9376
9377 break;
9378
9379 case 'authority':
9380 if (c === '@') {
9381 if (seenAt) {
9382 err('@ already seen.');
9383 buffer += '%40';
9384 }
9385
9386 seenAt = true;
9387
9388 for (var i = 0; i < buffer.length; i++) {
9389 var cp = buffer[i];
9390
9391 if (cp === '\t' || cp === '\n' || cp === '\r') {
9392 err('Invalid whitespace in authority.');
9393 continue;
9394 }
9395
9396 if (cp === ':' && this._password === null) {
9397 this._password = '';
9398 continue;
9399 }
9400
9401 var tempC = percentEscape(cp);
9402
9403 if (this._password !== null) {
9404 this._password += tempC;
9405 } else {
9406 this._username += tempC;
9407 }
9408 }
9409
9410 buffer = '';
9411 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9412 cursor -= buffer.length;
9413 buffer = '';
9414 state = 'host';
9415 continue;
9416 } else {
9417 buffer += c;
9418 }
9419
9420 break;
9421
9422 case 'file host':
9423 if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9424 if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
9425 state = 'relative path';
9426 } else if (buffer.length === 0) {
9427 state = 'relative path start';
9428 } else {
9429 this._host = IDNAToASCII.call(this, buffer);
9430 buffer = '';
9431 state = 'relative path start';
9432 }
9433
9434 continue;
9435 } else if (c === '\t' || c === '\n' || c === '\r') {
9436 err('Invalid whitespace in file host.');
9437 } else {
9438 buffer += c;
9439 }
9440
9441 break;
9442
9443 case 'host':
9444 case 'hostname':
9445 if (c === ':' && !seenBracket) {
9446 this._host = IDNAToASCII.call(this, buffer);
9447 buffer = '';
9448 state = 'port';
9449
9450 if (stateOverride === 'hostname') {
9451 break loop;
9452 }
9453 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
9454 this._host = IDNAToASCII.call(this, buffer);
9455 buffer = '';
9456 state = 'relative path start';
9457
9458 if (stateOverride) {
9459 break loop;
9460 }
9461
9462 continue;
9463 } else if (c !== '\t' && c !== '\n' && c !== '\r') {
9464 if (c === '[') {
9465 seenBracket = true;
9466 } else if (c === ']') {
9467 seenBracket = false;
9468 }
9469
9470 buffer += c;
9471 } else {
9472 err('Invalid code point in host/hostname: ' + c);
9473 }
9474
9475 break;
9476
9477 case 'port':
9478 if (/[0-9]/.test(c)) {
9479 buffer += c;
9480 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
9481 if (buffer !== '') {
9482 var temp = parseInt(buffer, 10);
9483
9484 if (temp !== relative[this._scheme]) {
9485 this._port = temp + '';
9486 }
9487
9488 buffer = '';
9489 }
9490
9491 if (stateOverride) {
9492 break loop;
9493 }
9494
9495 state = 'relative path start';
9496 continue;
9497 } else if (c === '\t' || c === '\n' || c === '\r') {
9498 err('Invalid code point in port: ' + c);
9499 } else {
9500 invalid.call(this);
9501 }
9502
9503 break;
9504
9505 case 'relative path start':
9506 if (c === '\\') {
9507 err('\'\\\' not allowed in path.');
9508 }
9509
9510 state = 'relative path';
9511
9512 if (c !== '/' && c !== '\\') {
9513 continue;
9514 }
9515
9516 break;
9517
9518 case 'relative path':
9519 if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
9520 if (c === '\\') {
9521 err('\\ not allowed in relative path.');
9522 }
9523
9524 var tmp;
9525
9526 if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
9527 buffer = tmp;
9528 }
9529
9530 if (buffer === '..') {
9531 this._path.pop();
9532
9533 if (c !== '/' && c !== '\\') {
9534 this._path.push('');
9535 }
9536 } else if (buffer === '.' && c !== '/' && c !== '\\') {
9537 this._path.push('');
9538 } else if (buffer !== '.') {
9539 if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
9540 buffer = buffer[0] + ':';
9541 }
9542
9543 this._path.push(buffer);
9544 }
9545
9546 buffer = '';
9547
9548 if (c === '?') {
9549 this._query = '?';
9550 state = 'query';
9551 } else if (c === '#') {
9552 this._fragment = '#';
9553 state = 'fragment';
9554 }
9555 } else if (c !== '\t' && c !== '\n' && c !== '\r') {
9556 buffer += percentEscape(c);
9557 }
9558
9559 break;
9560
9561 case 'query':
9562 if (!stateOverride && c === '#') {
9563 this._fragment = '#';
9564 state = 'fragment';
9565 } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9566 this._query += percentEscapeQuery(c);
9567 }
9568
9569 break;
9570
9571 case 'fragment':
9572 if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
9573 this._fragment += c;
9574 }
9575
9576 break;
9577 }
9578
9579 cursor++;
9580 }
9581 }
9582
9583 function clear() {
9584 this._scheme = '';
9585 this._schemeData = '';
9586 this._username = '';
9587 this._password = null;
9588 this._host = '';
9589 this._port = '';
9590 this._path = [];
9591 this._query = '';
9592 this._fragment = '';
9593 this._isInvalid = false;
9594 this._isRelative = false;
9595 }
9596
9597 function JURL(url, base) {
9598 if (base !== undefined && !(base instanceof JURL)) {
9599 base = new JURL(String(base));
9600 }
9601
9602 this._url = url;
9603 clear.call(this);
9604 var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, '');
9605 parse.call(this, input, null, base);
9606 }
9607
9608 JURL.prototype = {
9609 toString: function toString() {
9610 return this.href;
9611 },
9612
9613 get href() {
9614 if (this._isInvalid) {
9615 return this._url;
9616 }
9617
9618 var authority = '';
9619
9620 if (this._username !== '' || this._password !== null) {
9621 authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
9622 }
9623
9624 return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
9625 },
9626
9627 set href(value) {
9628 clear.call(this);
9629 parse.call(this, value);
9630 },
9631
9632 get protocol() {
9633 return this._scheme + ':';
9634 },
9635
9636 set protocol(value) {
9637 if (this._isInvalid) {
9638 return;
9639 }
9640
9641 parse.call(this, value + ':', 'scheme start');
9642 },
9643
9644 get host() {
9645 return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
9646 },
9647
9648 set host(value) {
9649 if (this._isInvalid || !this._isRelative) {
9650 return;
9651 }
9652
9653 parse.call(this, value, 'host');
9654 },
9655
9656 get hostname() {
9657 return this._host;
9658 },
9659
9660 set hostname(value) {
9661 if (this._isInvalid || !this._isRelative) {
9662 return;
9663 }
9664
9665 parse.call(this, value, 'hostname');
9666 },
9667
9668 get port() {
9669 return this._port;
9670 },
9671
9672 set port(value) {
9673 if (this._isInvalid || !this._isRelative) {
9674 return;
9675 }
9676
9677 parse.call(this, value, 'port');
9678 },
9679
9680 get pathname() {
9681 return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
9682 },
9683
9684 set pathname(value) {
9685 if (this._isInvalid || !this._isRelative) {
9686 return;
9687 }
9688
9689 this._path = [];
9690 parse.call(this, value, 'relative path start');
9691 },
9692
9693 get search() {
9694 return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
9695 },
9696
9697 set search(value) {
9698 if (this._isInvalid || !this._isRelative) {
9699 return;
9700 }
9701
9702 this._query = '?';
9703
9704 if (value[0] === '?') {
9705 value = value.slice(1);
9706 }
9707
9708 parse.call(this, value, 'query');
9709 },
9710
9711 get hash() {
9712 return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
9713 },
9714
9715 set hash(value) {
9716 if (this._isInvalid) {
9717 return;
9718 }
9719
9720 this._fragment = '#';
9721
9722 if (value[0] === '#') {
9723 value = value.slice(1);
9724 }
9725
9726 parse.call(this, value, 'fragment');
9727 },
9728
9729 get origin() {
9730 var host;
9731
9732 if (this._isInvalid || !this._scheme) {
9733 return '';
9734 }
9735
9736 switch (this._scheme) {
9737 case 'data':
9738 case 'file':
9739 case 'javascript':
9740 case 'mailto':
9741 return 'null';
9742
9743 case 'blob':
9744 try {
9745 return new JURL(this._schemeData).origin || 'null';
9746 } catch (_) {}
9747
9748 return 'null';
9749 }
9750
9751 host = this.host;
9752
9753 if (!host) {
9754 return '';
9755 }
9756
9757 return this._scheme + '://' + host;
9758 }
9759
9760 };
9761 exports.URL = JURL;
9762})();
9763
9764/***/ }),
9765/* 147 */
9766/***/ (function(module, exports, __w_pdfjs_require__) {
9767
9768"use strict";
9769
9770
9771Object.defineProperty(exports, "__esModule", {
9772 value: true
9773});
9774exports.getDocument = getDocument;
9775exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
9776exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
9777
9778var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
9779
9780var _util = __w_pdfjs_require__(1);
9781
9782var _display_utils = __w_pdfjs_require__(151);
9783
9784var _font_loader = __w_pdfjs_require__(152);
9785
9786var _api_compatibility = __w_pdfjs_require__(153);
9787
9788var _canvas = __w_pdfjs_require__(154);
9789
9790var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
9791
9792var _worker_options = __w_pdfjs_require__(156);
9793
9794var _message_handler = __w_pdfjs_require__(157);
9795
9796var _metadata = __w_pdfjs_require__(158);
9797
9798var _transport_stream = __w_pdfjs_require__(160);
9799
9800var _webgl = __w_pdfjs_require__(161);
9801
9802function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9803
9804function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9805
9806function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
9807
9808function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
9809
9810function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
9811
9812function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
9813
9814function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9815
9816function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
9817
9818function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
9819
9820function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
9821
9822function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
9823
9824function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9825
9826function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9827
9828function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
9829
9830function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9831
9832var DEFAULT_RANGE_CHUNK_SIZE = 65536;
9833var isWorkerDisabled = false;
9834var fallbackWorkerSrc;
9835var fakeWorkerFilesLoader = null;
9836{
9837 var useRequireEnsure = false;
9838
9839 if (typeof window === 'undefined') {
9840 isWorkerDisabled = true;
9841
9842 if (typeof require.ensure === 'undefined') {
9843 require.ensure = require('node-ensure');
9844 }
9845
9846 useRequireEnsure = true;
9847 } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
9848 useRequireEnsure = true;
9849 }
9850
9851 if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
9852 fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
9853 }
9854
9855 var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
9856 fakeWorkerFilesLoader = useRequireEnsure ? function () {
9857 return new Promise(function (resolve, reject) {
9858 require.ensure([], function () {
9859 try {
9860 var worker;
9861 worker = require('./pdf.worker.js');
9862 resolve(worker.WorkerMessageHandler);
9863 } catch (ex) {
9864 reject(ex);
9865 }
9866 }, reject, 'pdfjsWorker');
9867 });
9868 } : dynamicLoaderSupported ? function () {
9869 return new Promise(function (resolve, reject) {
9870 requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
9871 try {
9872 resolve(worker.WorkerMessageHandler);
9873 } catch (ex) {
9874 reject(ex);
9875 }
9876 }, reject);
9877 });
9878 } : null;
9879
9880 if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
9881 var pdfjsFilePath = document.currentScript && document.currentScript.src;
9882
9883 if (pdfjsFilePath) {
9884 fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
9885 }
9886 }
9887}
9888var createPDFNetworkStream;
9889
9890function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
9891 createPDFNetworkStream = pdfNetworkStreamFactory;
9892}
9893
9894function getDocument(src) {
9895 var task = new PDFDocumentLoadingTask();
9896 var source;
9897
9898 if (typeof src === 'string') {
9899 source = {
9900 url: src
9901 };
9902 } else if ((0, _util.isArrayBuffer)(src)) {
9903 source = {
9904 data: src
9905 };
9906 } else if (src instanceof PDFDataRangeTransport) {
9907 source = {
9908 range: src
9909 };
9910 } else {
9911 if (_typeof(src) !== 'object') {
9912 throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
9913 }
9914
9915 if (!src.url && !src.data && !src.range) {
9916 throw new Error('Invalid parameter object: need either .data, .range or .url');
9917 }
9918
9919 source = src;
9920 }
9921
9922 var params = Object.create(null);
9923 var rangeTransport = null,
9924 worker = null;
9925
9926 for (var key in source) {
9927 if (key === 'url' && typeof window !== 'undefined') {
9928 params[key] = new _util.URL(source[key], window.location).href;
9929 continue;
9930 } else if (key === 'range') {
9931 rangeTransport = source[key];
9932 continue;
9933 } else if (key === 'worker') {
9934 worker = source[key];
9935 continue;
9936 } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
9937 var pdfBytes = source[key];
9938
9939 if (typeof pdfBytes === 'string') {
9940 params[key] = (0, _util.stringToBytes)(pdfBytes);
9941 } else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
9942 params[key] = new Uint8Array(pdfBytes);
9943 } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
9944 params[key] = new Uint8Array(pdfBytes);
9945 } else {
9946 throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
9947 }
9948
9949 continue;
9950 }
9951
9952 params[key] = source[key];
9953 }
9954
9955 params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
9956 params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory;
9957 params.ignoreErrors = params.stopAtErrors !== true;
9958 params.pdfBug = params.pdfBug === true;
9959 var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
9960
9961 if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
9962 params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
9963 }
9964
9965 if (!Number.isInteger(params.maxImageSize)) {
9966 params.maxImageSize = -1;
9967 }
9968
9969 if (typeof params.isEvalSupported !== 'boolean') {
9970 params.isEvalSupported = true;
9971 }
9972
9973 if (typeof params.disableFontFace !== 'boolean') {
9974 params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
9975 }
9976
9977 if (typeof params.disableRange !== 'boolean') {
9978 params.disableRange = false;
9979 }
9980
9981 if (typeof params.disableStream !== 'boolean') {
9982 params.disableStream = false;
9983 }
9984
9985 if (typeof params.disableAutoFetch !== 'boolean') {
9986 params.disableAutoFetch = false;
9987 }
9988
9989 if (typeof params.disableCreateObjectURL !== 'boolean') {
9990 params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
9991 }
9992
9993 (0, _util.setVerbosityLevel)(params.verbosity);
9994
9995 if (!worker) {
9996 var workerParams = {
9997 postMessageTransfers: params.postMessageTransfers,
9998 verbosity: params.verbosity,
9999 port: _worker_options.GlobalWorkerOptions.workerPort
10000 };
10001 worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
10002 task._worker = worker;
10003 }
10004
10005 var docId = task.docId;
10006 worker.promise.then(function () {
10007 if (task.destroyed) {
10008 throw new Error('Loading aborted');
10009 }
10010
10011 return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
10012 if (task.destroyed) {
10013 throw new Error('Loading aborted');
10014 }
10015
10016 var networkStream;
10017
10018 if (rangeTransport) {
10019 networkStream = new _transport_stream.PDFDataTransportStream({
10020 length: params.length,
10021 initialData: params.initialData,
10022 progressiveDone: params.progressiveDone,
10023 disableRange: params.disableRange,
10024 disableStream: params.disableStream
10025 }, rangeTransport);
10026 } else if (!params.data) {
10027 networkStream = createPDFNetworkStream({
10028 url: params.url,
10029 length: params.length,
10030 httpHeaders: params.httpHeaders,
10031 withCredentials: params.withCredentials,
10032 rangeChunkSize: params.rangeChunkSize,
10033 disableRange: params.disableRange,
10034 disableStream: params.disableStream
10035 });
10036 }
10037
10038 var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
10039 messageHandler.postMessageTransfers = worker.postMessageTransfers;
10040 var transport = new WorkerTransport(messageHandler, task, networkStream, params);
10041 task._transport = transport;
10042 messageHandler.send('Ready', null);
10043 });
10044 })["catch"](task._capability.reject);
10045 return task;
10046}
10047
10048function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
10049 if (worker.destroyed) {
10050 return Promise.reject(new Error('Worker was destroyed'));
10051 }
10052
10053 if (pdfDataRangeTransport) {
10054 source.length = pdfDataRangeTransport.length;
10055 source.initialData = pdfDataRangeTransport.initialData;
10056 source.progressiveDone = pdfDataRangeTransport.progressiveDone;
10057 }
10058
10059 return worker.messageHandler.sendWithPromise('GetDocRequest', {
10060 docId: docId,
10061 apiVersion: '2.2.228',
10062 source: {
10063 data: source.data,
10064 url: source.url,
10065 password: source.password,
10066 disableAutoFetch: source.disableAutoFetch,
10067 rangeChunkSize: source.rangeChunkSize,
10068 length: source.length
10069 },
10070 maxImageSize: source.maxImageSize,
10071 disableFontFace: source.disableFontFace,
10072 disableCreateObjectURL: source.disableCreateObjectURL,
10073 postMessageTransfers: worker.postMessageTransfers,
10074 docBaseUrl: source.docBaseUrl,
10075 nativeImageDecoderSupport: source.nativeImageDecoderSupport,
10076 ignoreErrors: source.ignoreErrors,
10077 isEvalSupported: source.isEvalSupported
10078 }).then(function (workerId) {
10079 if (worker.destroyed) {
10080 throw new Error('Worker was destroyed');
10081 }
10082
10083 return workerId;
10084 });
10085}
10086
10087var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
10088 var nextDocumentId = 0;
10089
10090 var PDFDocumentLoadingTask =
10091 /*#__PURE__*/
10092 function () {
10093 function PDFDocumentLoadingTask() {
10094 _classCallCheck(this, PDFDocumentLoadingTask);
10095
10096 this._capability = (0, _util.createPromiseCapability)();
10097 this._transport = null;
10098 this._worker = null;
10099 this.docId = 'd' + nextDocumentId++;
10100 this.destroyed = false;
10101 this.onPassword = null;
10102 this.onProgress = null;
10103 this.onUnsupportedFeature = null;
10104 }
10105
10106 _createClass(PDFDocumentLoadingTask, [{
10107 key: "destroy",
10108 value: function destroy() {
10109 var _this = this;
10110
10111 this.destroyed = true;
10112 var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
10113 return transportDestroyed.then(function () {
10114 _this._transport = null;
10115
10116 if (_this._worker) {
10117 _this._worker.destroy();
10118
10119 _this._worker = null;
10120 }
10121 });
10122 }
10123 }, {
10124 key: "then",
10125 value: function then(onFulfilled, onRejected) {
10126 (0, _display_utils.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
10127 return this.promise.then.apply(this.promise, arguments);
10128 }
10129 }, {
10130 key: "promise",
10131 get: function get() {
10132 return this._capability.promise;
10133 }
10134 }]);
10135
10136 return PDFDocumentLoadingTask;
10137 }();
10138
10139 return PDFDocumentLoadingTask;
10140}();
10141
10142var PDFDataRangeTransport =
10143/*#__PURE__*/
10144function () {
10145 function PDFDataRangeTransport(length, initialData) {
10146 var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
10147
10148 _classCallCheck(this, PDFDataRangeTransport);
10149
10150 this.length = length;
10151 this.initialData = initialData;
10152 this.progressiveDone = progressiveDone;
10153 this._rangeListeners = [];
10154 this._progressListeners = [];
10155 this._progressiveReadListeners = [];
10156 this._progressiveDoneListeners = [];
10157 this._readyCapability = (0, _util.createPromiseCapability)();
10158 }
10159
10160 _createClass(PDFDataRangeTransport, [{
10161 key: "addRangeListener",
10162 value: function addRangeListener(listener) {
10163 this._rangeListeners.push(listener);
10164 }
10165 }, {
10166 key: "addProgressListener",
10167 value: function addProgressListener(listener) {
10168 this._progressListeners.push(listener);
10169 }
10170 }, {
10171 key: "addProgressiveReadListener",
10172 value: function addProgressiveReadListener(listener) {
10173 this._progressiveReadListeners.push(listener);
10174 }
10175 }, {
10176 key: "addProgressiveDoneListener",
10177 value: function addProgressiveDoneListener(listener) {
10178 this._progressiveDoneListeners.push(listener);
10179 }
10180 }, {
10181 key: "onDataRange",
10182 value: function onDataRange(begin, chunk) {
10183 var _iteratorNormalCompletion = true;
10184 var _didIteratorError = false;
10185 var _iteratorError = undefined;
10186
10187 try {
10188 for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
10189 var listener = _step.value;
10190 listener(begin, chunk);
10191 }
10192 } catch (err) {
10193 _didIteratorError = true;
10194 _iteratorError = err;
10195 } finally {
10196 try {
10197 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
10198 _iterator["return"]();
10199 }
10200 } finally {
10201 if (_didIteratorError) {
10202 throw _iteratorError;
10203 }
10204 }
10205 }
10206 }
10207 }, {
10208 key: "onDataProgress",
10209 value: function onDataProgress(loaded, total) {
10210 var _this2 = this;
10211
10212 this._readyCapability.promise.then(function () {
10213 var _iteratorNormalCompletion2 = true;
10214 var _didIteratorError2 = false;
10215 var _iteratorError2 = undefined;
10216
10217 try {
10218 for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
10219 var listener = _step2.value;
10220 listener(loaded, total);
10221 }
10222 } catch (err) {
10223 _didIteratorError2 = true;
10224 _iteratorError2 = err;
10225 } finally {
10226 try {
10227 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
10228 _iterator2["return"]();
10229 }
10230 } finally {
10231 if (_didIteratorError2) {
10232 throw _iteratorError2;
10233 }
10234 }
10235 }
10236 });
10237 }
10238 }, {
10239 key: "onDataProgressiveRead",
10240 value: function onDataProgressiveRead(chunk) {
10241 var _this3 = this;
10242
10243 this._readyCapability.promise.then(function () {
10244 var _iteratorNormalCompletion3 = true;
10245 var _didIteratorError3 = false;
10246 var _iteratorError3 = undefined;
10247
10248 try {
10249 for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
10250 var listener = _step3.value;
10251 listener(chunk);
10252 }
10253 } catch (err) {
10254 _didIteratorError3 = true;
10255 _iteratorError3 = err;
10256 } finally {
10257 try {
10258 if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
10259 _iterator3["return"]();
10260 }
10261 } finally {
10262 if (_didIteratorError3) {
10263 throw _iteratorError3;
10264 }
10265 }
10266 }
10267 });
10268 }
10269 }, {
10270 key: "onDataProgressiveDone",
10271 value: function onDataProgressiveDone() {
10272 var _this4 = this;
10273
10274 this._readyCapability.promise.then(function () {
10275 var _iteratorNormalCompletion4 = true;
10276 var _didIteratorError4 = false;
10277 var _iteratorError4 = undefined;
10278
10279 try {
10280 for (var _iterator4 = _this4._progressiveDoneListeners[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
10281 var listener = _step4.value;
10282 listener();
10283 }
10284 } catch (err) {
10285 _didIteratorError4 = true;
10286 _iteratorError4 = err;
10287 } finally {
10288 try {
10289 if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
10290 _iterator4["return"]();
10291 }
10292 } finally {
10293 if (_didIteratorError4) {
10294 throw _iteratorError4;
10295 }
10296 }
10297 }
10298 });
10299 }
10300 }, {
10301 key: "transportReady",
10302 value: function transportReady() {
10303 this._readyCapability.resolve();
10304 }
10305 }, {
10306 key: "requestDataRange",
10307 value: function requestDataRange(begin, end) {
10308 (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
10309 }
10310 }, {
10311 key: "abort",
10312 value: function abort() {}
10313 }]);
10314
10315 return PDFDataRangeTransport;
10316}();
10317
10318exports.PDFDataRangeTransport = PDFDataRangeTransport;
10319
10320var PDFDocumentProxy =
10321/*#__PURE__*/
10322function () {
10323 function PDFDocumentProxy(pdfInfo, transport) {
10324 _classCallCheck(this, PDFDocumentProxy);
10325
10326 this._pdfInfo = pdfInfo;
10327 this._transport = transport;
10328 }
10329
10330 _createClass(PDFDocumentProxy, [{
10331 key: "getPage",
10332 value: function getPage(pageNumber) {
10333 return this._transport.getPage(pageNumber);
10334 }
10335 }, {
10336 key: "getPageIndex",
10337 value: function getPageIndex(ref) {
10338 return this._transport.getPageIndex(ref);
10339 }
10340 }, {
10341 key: "getDestinations",
10342 value: function getDestinations() {
10343 return this._transport.getDestinations();
10344 }
10345 }, {
10346 key: "getDestination",
10347 value: function getDestination(id) {
10348 return this._transport.getDestination(id);
10349 }
10350 }, {
10351 key: "getPageLabels",
10352 value: function getPageLabels() {
10353 return this._transport.getPageLabels();
10354 }
10355 }, {
10356 key: "getPageLayout",
10357 value: function getPageLayout() {
10358 return this._transport.getPageLayout();
10359 }
10360 }, {
10361 key: "getPageMode",
10362 value: function getPageMode() {
10363 return this._transport.getPageMode();
10364 }
10365 }, {
10366 key: "getViewerPreferences",
10367 value: function getViewerPreferences() {
10368 return this._transport.getViewerPreferences();
10369 }
10370 }, {
10371 key: "getOpenActionDestination",
10372 value: function getOpenActionDestination() {
10373 return this._transport.getOpenActionDestination();
10374 }
10375 }, {
10376 key: "getAttachments",
10377 value: function getAttachments() {
10378 return this._transport.getAttachments();
10379 }
10380 }, {
10381 key: "getJavaScript",
10382 value: function getJavaScript() {
10383 return this._transport.getJavaScript();
10384 }
10385 }, {
10386 key: "getOutline",
10387 value: function getOutline() {
10388 return this._transport.getOutline();
10389 }
10390 }, {
10391 key: "getPermissions",
10392 value: function getPermissions() {
10393 return this._transport.getPermissions();
10394 }
10395 }, {
10396 key: "getMetadata",
10397 value: function getMetadata() {
10398 return this._transport.getMetadata();
10399 }
10400 }, {
10401 key: "getData",
10402 value: function getData() {
10403 return this._transport.getData();
10404 }
10405 }, {
10406 key: "getDownloadInfo",
10407 value: function getDownloadInfo() {
10408 return this._transport.downloadInfoCapability.promise;
10409 }
10410 }, {
10411 key: "getStats",
10412 value: function getStats() {
10413 return this._transport.getStats();
10414 }
10415 }, {
10416 key: "cleanup",
10417 value: function cleanup() {
10418 this._transport.startCleanup();
10419 }
10420 }, {
10421 key: "destroy",
10422 value: function destroy() {
10423 return this.loadingTask.destroy();
10424 }
10425 }, {
10426 key: "numPages",
10427 get: function get() {
10428 return this._pdfInfo.numPages;
10429 }
10430 }, {
10431 key: "fingerprint",
10432 get: function get() {
10433 return this._pdfInfo.fingerprint;
10434 }
10435 }, {
10436 key: "loadingParams",
10437 get: function get() {
10438 return this._transport.loadingParams;
10439 }
10440 }, {
10441 key: "loadingTask",
10442 get: function get() {
10443 return this._transport.loadingTask;
10444 }
10445 }]);
10446
10447 return PDFDocumentProxy;
10448}();
10449
10450exports.PDFDocumentProxy = PDFDocumentProxy;
10451
10452var PDFPageProxy =
10453/*#__PURE__*/
10454function () {
10455 function PDFPageProxy(pageIndex, pageInfo, transport) {
10456 var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
10457
10458 _classCallCheck(this, PDFPageProxy);
10459
10460 this.pageIndex = pageIndex;
10461 this._pageInfo = pageInfo;
10462 this._transport = transport;
10463 this._stats = pdfBug ? new _display_utils.StatTimer() : _display_utils.DummyStatTimer;
10464 this._pdfBug = pdfBug;
10465 this.commonObjs = transport.commonObjs;
10466 this.objs = new PDFObjects();
10467 this.cleanupAfterRender = false;
10468 this.pendingCleanup = false;
10469 this.intentStates = Object.create(null);
10470 this.destroyed = false;
10471 }
10472
10473 _createClass(PDFPageProxy, [{
10474 key: "getViewport",
10475 value: function getViewport() {
10476 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10477 scale = _ref.scale,
10478 _ref$rotation = _ref.rotation,
10479 rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
10480 _ref$dontFlip = _ref.dontFlip,
10481 dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
10482
10483 if (arguments.length > 1 || typeof arguments[0] === 'number') {
10484 (0, _display_utils.deprecated)('getViewport is called with obsolete arguments.');
10485 scale = arguments[0];
10486 rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
10487 dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
10488 }
10489
10490 return new _display_utils.PageViewport({
10491 viewBox: this.view,
10492 scale: scale,
10493 rotation: rotation,
10494 dontFlip: dontFlip
10495 });
10496 }
10497 }, {
10498 key: "getAnnotations",
10499 value: function getAnnotations() {
10500 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10501 _ref2$intent = _ref2.intent,
10502 intent = _ref2$intent === void 0 ? null : _ref2$intent;
10503
10504 if (!this.annotationsPromise || this.annotationsIntent !== intent) {
10505 this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent);
10506 this.annotationsIntent = intent;
10507 }
10508
10509 return this.annotationsPromise;
10510 }
10511 }, {
10512 key: "render",
10513 value: function render(_ref3) {
10514 var _this5 = this;
10515
10516 var canvasContext = _ref3.canvasContext,
10517 viewport = _ref3.viewport,
10518 _ref3$intent = _ref3.intent,
10519 intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
10520 _ref3$enableWebGL = _ref3.enableWebGL,
10521 enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
10522 _ref3$renderInteracti = _ref3.renderInteractiveForms,
10523 renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
10524 _ref3$transform = _ref3.transform,
10525 transform = _ref3$transform === void 0 ? null : _ref3$transform,
10526 _ref3$imageLayer = _ref3.imageLayer,
10527 imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
10528 _ref3$canvasFactory = _ref3.canvasFactory,
10529 canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
10530 _ref3$background = _ref3.background,
10531 background = _ref3$background === void 0 ? null : _ref3$background;
10532 var stats = this._stats;
10533 stats.time('Overall');
10534 this.pendingCleanup = false;
10535 var renderingIntent = intent === 'print' ? 'print' : 'display';
10536 var canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory();
10537 var webGLContext = new _webgl.WebGLContext({
10538 enable: enableWebGL
10539 });
10540
10541 if (!this.intentStates[renderingIntent]) {
10542 this.intentStates[renderingIntent] = Object.create(null);
10543 }
10544
10545 var intentState = this.intentStates[renderingIntent];
10546
10547 if (!intentState.displayReadyCapability) {
10548 intentState.receivingOperatorList = true;
10549 intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
10550 intentState.operatorList = {
10551 fnArray: [],
10552 argsArray: [],
10553 lastChunk: false
10554 };
10555 stats.time('Page Request');
10556
10557 this._transport.messageHandler.send('RenderPageRequest', {
10558 pageIndex: this.pageNumber - 1,
10559 intent: renderingIntent,
10560 renderInteractiveForms: renderInteractiveForms === true
10561 });
10562 }
10563
10564 var complete = function complete(error) {
10565 var i = intentState.renderTasks.indexOf(internalRenderTask);
10566
10567 if (i >= 0) {
10568 intentState.renderTasks.splice(i, 1);
10569 }
10570
10571 if (_this5.cleanupAfterRender || renderingIntent === 'print') {
10572 _this5.pendingCleanup = true;
10573 }
10574
10575 _this5._tryCleanup();
10576
10577 if (error) {
10578 internalRenderTask.capability.reject(error);
10579 } else {
10580 internalRenderTask.capability.resolve();
10581 }
10582
10583 stats.timeEnd('Rendering');
10584 stats.timeEnd('Overall');
10585 };
10586
10587 var internalRenderTask = new InternalRenderTask({
10588 callback: complete,
10589 params: {
10590 canvasContext: canvasContext,
10591 viewport: viewport,
10592 transform: transform,
10593 imageLayer: imageLayer,
10594 background: background
10595 },
10596 objs: this.objs,
10597 commonObjs: this.commonObjs,
10598 operatorList: intentState.operatorList,
10599 pageNumber: this.pageNumber,
10600 canvasFactory: canvasFactoryInstance,
10601 webGLContext: webGLContext,
10602 useRequestAnimationFrame: renderingIntent !== 'print',
10603 pdfBug: this._pdfBug
10604 });
10605
10606 if (!intentState.renderTasks) {
10607 intentState.renderTasks = [];
10608 }
10609
10610 intentState.renderTasks.push(internalRenderTask);
10611 var renderTask = internalRenderTask.task;
10612 intentState.displayReadyCapability.promise.then(function (transparency) {
10613 if (_this5.pendingCleanup) {
10614 complete();
10615 return;
10616 }
10617
10618 stats.time('Rendering');
10619 internalRenderTask.initializeGraphics(transparency);
10620 internalRenderTask.operatorListChanged();
10621 })["catch"](complete);
10622 return renderTask;
10623 }
10624 }, {
10625 key: "getOperatorList",
10626 value: function getOperatorList() {
10627 function operatorListChanged() {
10628 if (intentState.operatorList.lastChunk) {
10629 intentState.opListReadCapability.resolve(intentState.operatorList);
10630 var i = intentState.renderTasks.indexOf(opListTask);
10631
10632 if (i >= 0) {
10633 intentState.renderTasks.splice(i, 1);
10634 }
10635 }
10636 }
10637
10638 var renderingIntent = 'oplist';
10639
10640 if (!this.intentStates[renderingIntent]) {
10641 this.intentStates[renderingIntent] = Object.create(null);
10642 }
10643
10644 var intentState = this.intentStates[renderingIntent];
10645 var opListTask;
10646
10647 if (!intentState.opListReadCapability) {
10648 opListTask = {};
10649 opListTask.operatorListChanged = operatorListChanged;
10650 intentState.receivingOperatorList = true;
10651 intentState.opListReadCapability = (0, _util.createPromiseCapability)();
10652 intentState.renderTasks = [];
10653 intentState.renderTasks.push(opListTask);
10654 intentState.operatorList = {
10655 fnArray: [],
10656 argsArray: [],
10657 lastChunk: false
10658 };
10659
10660 this._stats.time('Page Request');
10661
10662 this._transport.messageHandler.send('RenderPageRequest', {
10663 pageIndex: this.pageIndex,
10664 intent: renderingIntent
10665 });
10666 }
10667
10668 return intentState.opListReadCapability.promise;
10669 }
10670 }, {
10671 key: "streamTextContent",
10672 value: function streamTextContent() {
10673 var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
10674 _ref4$normalizeWhites = _ref4.normalizeWhitespace,
10675 normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
10676 _ref4$disableCombineT = _ref4.disableCombineTextItems,
10677 disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
10678
10679 var TEXT_CONTENT_CHUNK_SIZE = 100;
10680 return this._transport.messageHandler.sendWithStream('GetTextContent', {
10681 pageIndex: this.pageNumber - 1,
10682 normalizeWhitespace: normalizeWhitespace === true,
10683 combineTextItems: disableCombineTextItems !== true
10684 }, {
10685 highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
10686 size: function size(textContent) {
10687 return textContent.items.length;
10688 }
10689 });
10690 }
10691 }, {
10692 key: "getTextContent",
10693 value: function getTextContent() {
10694 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10695 var readableStream = this.streamTextContent(params);
10696 return new Promise(function (resolve, reject) {
10697 function pump() {
10698 reader.read().then(function (_ref5) {
10699 var _textContent$items;
10700
10701 var value = _ref5.value,
10702 done = _ref5.done;
10703
10704 if (done) {
10705 resolve(textContent);
10706 return;
10707 }
10708
10709 Object.assign(textContent.styles, value.styles);
10710
10711 (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
10712
10713 pump();
10714 }, reject);
10715 }
10716
10717 var reader = readableStream.getReader();
10718 var textContent = {
10719 items: [],
10720 styles: Object.create(null)
10721 };
10722 pump();
10723 });
10724 }
10725 }, {
10726 key: "_destroy",
10727 value: function _destroy() {
10728 this.destroyed = true;
10729 this._transport.pageCache[this.pageIndex] = null;
10730 var waitOn = [];
10731 Object.keys(this.intentStates).forEach(function (intent) {
10732 if (intent === 'oplist') {
10733 return;
10734 }
10735
10736 var intentState = this.intentStates[intent];
10737 intentState.renderTasks.forEach(function (renderTask) {
10738 var renderCompleted = renderTask.capability.promise["catch"](function () {});
10739 waitOn.push(renderCompleted);
10740 renderTask.cancel();
10741 });
10742 }, this);
10743 this.objs.clear();
10744 this.annotationsPromise = null;
10745 this.pendingCleanup = false;
10746 return Promise.all(waitOn);
10747 }
10748 }, {
10749 key: "cleanup",
10750 value: function cleanup() {
10751 var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
10752 this.pendingCleanup = true;
10753
10754 this._tryCleanup(resetStats);
10755 }
10756 }, {
10757 key: "_tryCleanup",
10758 value: function _tryCleanup() {
10759 var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
10760
10761 if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
10762 var intentState = this.intentStates[intent];
10763 return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
10764 }, this)) {
10765 return;
10766 }
10767
10768 Object.keys(this.intentStates).forEach(function (intent) {
10769 delete this.intentStates[intent];
10770 }, this);
10771 this.objs.clear();
10772 this.annotationsPromise = null;
10773
10774 if (resetStats && this._stats instanceof _display_utils.StatTimer) {
10775 this._stats = new _display_utils.StatTimer();
10776 }
10777
10778 this.pendingCleanup = false;
10779 }
10780 }, {
10781 key: "_startRenderPage",
10782 value: function _startRenderPage(transparency, intent) {
10783 var intentState = this.intentStates[intent];
10784
10785 if (intentState.displayReadyCapability) {
10786 intentState.displayReadyCapability.resolve(transparency);
10787 }
10788 }
10789 }, {
10790 key: "_renderPageChunk",
10791 value: function _renderPageChunk(operatorListChunk, intent) {
10792 var intentState = this.intentStates[intent];
10793
10794 for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {
10795 intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
10796 intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
10797 }
10798
10799 intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
10800
10801 for (var _i = 0; _i < intentState.renderTasks.length; _i++) {
10802 intentState.renderTasks[_i].operatorListChanged();
10803 }
10804
10805 if (operatorListChunk.lastChunk) {
10806 intentState.receivingOperatorList = false;
10807
10808 this._tryCleanup();
10809 }
10810 }
10811 }, {
10812 key: "pageNumber",
10813 get: function get() {
10814 return this.pageIndex + 1;
10815 }
10816 }, {
10817 key: "rotate",
10818 get: function get() {
10819 return this._pageInfo.rotate;
10820 }
10821 }, {
10822 key: "ref",
10823 get: function get() {
10824 return this._pageInfo.ref;
10825 }
10826 }, {
10827 key: "userUnit",
10828 get: function get() {
10829 return this._pageInfo.userUnit;
10830 }
10831 }, {
10832 key: "view",
10833 get: function get() {
10834 return this._pageInfo.view;
10835 }
10836 }, {
10837 key: "stats",
10838 get: function get() {
10839 return this._stats instanceof _display_utils.StatTimer ? this._stats : null;
10840 }
10841 }]);
10842
10843 return PDFPageProxy;
10844}();
10845
10846exports.PDFPageProxy = PDFPageProxy;
10847
10848var LoopbackPort =
10849/*#__PURE__*/
10850function () {
10851 function LoopbackPort() {
10852 var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
10853
10854 _classCallCheck(this, LoopbackPort);
10855
10856 this._listeners = [];
10857 this._defer = defer;
10858 this._deferred = Promise.resolve(undefined);
10859 }
10860
10861 _createClass(LoopbackPort, [{
10862 key: "postMessage",
10863 value: function postMessage(obj, transfers) {
10864 var _this6 = this;
10865
10866 function cloneValue(value) {
10867 if (_typeof(value) !== 'object' || value === null) {
10868 return value;
10869 }
10870
10871 if (cloned.has(value)) {
10872 return cloned.get(value);
10873 }
10874
10875 var buffer, result;
10876
10877 if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
10878 var transferable = transfers && transfers.includes(buffer);
10879
10880 if (value === buffer) {
10881 result = value;
10882 } else if (transferable) {
10883 result = new value.constructor(buffer, value.byteOffset, value.byteLength);
10884 } else {
10885 result = new value.constructor(value);
10886 }
10887
10888 cloned.set(value, result);
10889 return result;
10890 }
10891
10892 result = Array.isArray(value) ? [] : {};
10893 cloned.set(value, result);
10894
10895 for (var i in value) {
10896 var desc = void 0,
10897 p = value;
10898
10899 while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
10900 p = Object.getPrototypeOf(p);
10901 }
10902
10903 if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
10904 continue;
10905 }
10906
10907 result[i] = cloneValue(desc.value);
10908 }
10909
10910 return result;
10911 }
10912
10913 if (!this._defer) {
10914 this._listeners.forEach(function (listener) {
10915 listener.call(this, {
10916 data: obj
10917 });
10918 }, this);
10919
10920 return;
10921 }
10922
10923 var cloned = new WeakMap();
10924 var e = {
10925 data: cloneValue(obj)
10926 };
10927
10928 this._deferred.then(function () {
10929 _this6._listeners.forEach(function (listener) {
10930 listener.call(this, e);
10931 }, _this6);
10932 });
10933 }
10934 }, {
10935 key: "addEventListener",
10936 value: function addEventListener(name, listener) {
10937 this._listeners.push(listener);
10938 }
10939 }, {
10940 key: "removeEventListener",
10941 value: function removeEventListener(name, listener) {
10942 var i = this._listeners.indexOf(listener);
10943
10944 this._listeners.splice(i, 1);
10945 }
10946 }, {
10947 key: "terminate",
10948 value: function terminate() {
10949 this._listeners.length = 0;
10950 }
10951 }]);
10952
10953 return LoopbackPort;
10954}();
10955
10956exports.LoopbackPort = LoopbackPort;
10957
10958var PDFWorker = function PDFWorkerClosure() {
10959 var pdfWorkerPorts = new WeakMap();
10960 var nextFakeWorkerId = 0;
10961 var fakeWorkerFilesLoadedCapability;
10962
10963 function _getWorkerSrc() {
10964 if (_worker_options.GlobalWorkerOptions.workerSrc) {
10965 return _worker_options.GlobalWorkerOptions.workerSrc;
10966 }
10967
10968 if (typeof fallbackWorkerSrc !== 'undefined') {
10969 return fallbackWorkerSrc;
10970 }
10971
10972 throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
10973 }
10974
10975 function getMainThreadWorkerMessageHandler() {
10976 try {
10977 if (typeof window !== 'undefined') {
10978 return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
10979 }
10980 } catch (ex) {}
10981
10982 return null;
10983 }
10984
10985 function setupFakeWorkerGlobal() {
10986 if (fakeWorkerFilesLoadedCapability) {
10987 return fakeWorkerFilesLoadedCapability.promise;
10988 }
10989
10990 fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
10991 var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
10992
10993 if (mainWorkerMessageHandler) {
10994 fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
10995 return fakeWorkerFilesLoadedCapability.promise;
10996 }
10997
10998 var loader = fakeWorkerFilesLoader || function () {
10999 return (0, _display_utils.loadScript)(_getWorkerSrc()).then(function () {
11000 return window.pdfjsWorker.WorkerMessageHandler;
11001 });
11002 };
11003
11004 loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
11005 return fakeWorkerFilesLoadedCapability.promise;
11006 }
11007
11008 function createCDNWrapper(url) {
11009 var wrapper = 'importScripts(\'' + url + '\');';
11010 return _util.URL.createObjectURL(new Blob([wrapper]));
11011 }
11012
11013 var PDFWorker =
11014 /*#__PURE__*/
11015 function () {
11016 function PDFWorker() {
11017 var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
11018 _ref6$name = _ref6.name,
11019 name = _ref6$name === void 0 ? null : _ref6$name,
11020 _ref6$port = _ref6.port,
11021 port = _ref6$port === void 0 ? null : _ref6$port,
11022 _ref6$postMessageTran = _ref6.postMessageTransfers,
11023 postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
11024 _ref6$verbosity = _ref6.verbosity,
11025 verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
11026
11027 _classCallCheck(this, PDFWorker);
11028
11029 if (port && pdfWorkerPorts.has(port)) {
11030 throw new Error('Cannot use more than one PDFWorker per port');
11031 }
11032
11033 this.name = name;
11034 this.destroyed = false;
11035 this.postMessageTransfers = postMessageTransfers !== false;
11036 this.verbosity = verbosity;
11037 this._readyCapability = (0, _util.createPromiseCapability)();
11038 this._port = null;
11039 this._webWorker = null;
11040 this._messageHandler = null;
11041
11042 if (port) {
11043 pdfWorkerPorts.set(port, this);
11044
11045 this._initializeFromPort(port);
11046
11047 return;
11048 }
11049
11050 this._initialize();
11051 }
11052
11053 _createClass(PDFWorker, [{
11054 key: "_initializeFromPort",
11055 value: function _initializeFromPort(port) {
11056 this._port = port;
11057 this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
11058
11059 this._messageHandler.on('ready', function () {});
11060
11061 this._readyCapability.resolve();
11062 }
11063 }, {
11064 key: "_initialize",
11065 value: function _initialize() {
11066 var _this7 = this;
11067
11068 if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
11069 var workerSrc = _getWorkerSrc();
11070
11071 try {
11072 if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
11073 workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
11074 }
11075
11076 var worker = new Worker(workerSrc);
11077 var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
11078
11079 var terminateEarly = function terminateEarly() {
11080 worker.removeEventListener('error', onWorkerError);
11081 messageHandler.destroy();
11082 worker.terminate();
11083
11084 if (_this7.destroyed) {
11085 _this7._readyCapability.reject(new Error('Worker was destroyed'));
11086 } else {
11087 _this7._setupFakeWorker();
11088 }
11089 };
11090
11091 var onWorkerError = function onWorkerError() {
11092 if (!_this7._webWorker) {
11093 terminateEarly();
11094 }
11095 };
11096
11097 worker.addEventListener('error', onWorkerError);
11098 messageHandler.on('test', function (data) {
11099 worker.removeEventListener('error', onWorkerError);
11100
11101 if (_this7.destroyed) {
11102 terminateEarly();
11103 return;
11104 }
11105
11106 if (data && data.supportTypedArray) {
11107 _this7._messageHandler = messageHandler;
11108 _this7._port = worker;
11109 _this7._webWorker = worker;
11110
11111 if (!data.supportTransfers) {
11112 _this7.postMessageTransfers = false;
11113 }
11114
11115 _this7._readyCapability.resolve();
11116
11117 messageHandler.send('configure', {
11118 verbosity: _this7.verbosity
11119 });
11120 } else {
11121 _this7._setupFakeWorker();
11122
11123 messageHandler.destroy();
11124 worker.terminate();
11125 }
11126 });
11127 messageHandler.on('ready', function (data) {
11128 worker.removeEventListener('error', onWorkerError);
11129
11130 if (_this7.destroyed) {
11131 terminateEarly();
11132 return;
11133 }
11134
11135 try {
11136 sendTest();
11137 } catch (e) {
11138 _this7._setupFakeWorker();
11139 }
11140 });
11141
11142 var sendTest = function sendTest() {
11143 var testObj = new Uint8Array([_this7.postMessageTransfers ? 255 : 0]);
11144
11145 try {
11146 messageHandler.send('test', testObj, [testObj.buffer]);
11147 } catch (ex) {
11148 (0, _util.info)('Cannot use postMessage transfers');
11149 testObj[0] = 0;
11150 messageHandler.send('test', testObj);
11151 }
11152 };
11153
11154 sendTest();
11155 return;
11156 } catch (e) {
11157 (0, _util.info)('The worker has been disabled.');
11158 }
11159 }
11160
11161 this._setupFakeWorker();
11162 }
11163 }, {
11164 key: "_setupFakeWorker",
11165 value: function _setupFakeWorker() {
11166 var _this8 = this;
11167
11168 if (!isWorkerDisabled) {
11169 (0, _util.warn)('Setting up fake worker.');
11170 isWorkerDisabled = true;
11171 }
11172
11173 setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
11174 if (_this8.destroyed) {
11175 _this8._readyCapability.reject(new Error('Worker was destroyed'));
11176
11177 return;
11178 }
11179
11180 var port = new LoopbackPort();
11181 _this8._port = port;
11182 var id = 'fake' + nextFakeWorkerId++;
11183 var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
11184 WorkerMessageHandler.setup(workerHandler, port);
11185 var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
11186 _this8._messageHandler = messageHandler;
11187
11188 _this8._readyCapability.resolve();
11189 })["catch"](function (reason) {
11190 _this8._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
11191 });
11192 }
11193 }, {
11194 key: "destroy",
11195 value: function destroy() {
11196 this.destroyed = true;
11197
11198 if (this._webWorker) {
11199 this._webWorker.terminate();
11200
11201 this._webWorker = null;
11202 }
11203
11204 pdfWorkerPorts["delete"](this._port);
11205 this._port = null;
11206
11207 if (this._messageHandler) {
11208 this._messageHandler.destroy();
11209
11210 this._messageHandler = null;
11211 }
11212 }
11213 }, {
11214 key: "promise",
11215 get: function get() {
11216 return this._readyCapability.promise;
11217 }
11218 }, {
11219 key: "port",
11220 get: function get() {
11221 return this._port;
11222 }
11223 }, {
11224 key: "messageHandler",
11225 get: function get() {
11226 return this._messageHandler;
11227 }
11228 }], [{
11229 key: "fromPort",
11230 value: function fromPort(params) {
11231 if (!params || !params.port) {
11232 throw new Error('PDFWorker.fromPort - invalid method signature.');
11233 }
11234
11235 if (pdfWorkerPorts.has(params.port)) {
11236 return pdfWorkerPorts.get(params.port);
11237 }
11238
11239 return new PDFWorker(params);
11240 }
11241 }, {
11242 key: "getWorkerSrc",
11243 value: function getWorkerSrc() {
11244 return _getWorkerSrc();
11245 }
11246 }]);
11247
11248 return PDFWorker;
11249 }();
11250
11251 return PDFWorker;
11252}();
11253
11254exports.PDFWorker = PDFWorker;
11255
11256var WorkerTransport =
11257/*#__PURE__*/
11258function () {
11259 function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
11260 _classCallCheck(this, WorkerTransport);
11261
11262 this.messageHandler = messageHandler;
11263 this.loadingTask = loadingTask;
11264 this.commonObjs = new PDFObjects();
11265 this.fontLoader = new _font_loader.FontLoader({
11266 docId: loadingTask.docId,
11267 onUnsupportedFeature: this._onUnsupportedFeature.bind(this)
11268 });
11269 this._params = params;
11270 this.CMapReaderFactory = new params.CMapReaderFactory({
11271 baseUrl: params.cMapUrl,
11272 isCompressed: params.cMapPacked
11273 });
11274 this.destroyed = false;
11275 this.destroyCapability = null;
11276 this._passwordCapability = null;
11277 this._networkStream = networkStream;
11278 this._fullReader = null;
11279 this._lastProgress = null;
11280 this.pageCache = [];
11281 this.pagePromises = [];
11282 this.downloadInfoCapability = (0, _util.createPromiseCapability)();
11283 this.setupMessageHandler();
11284 }
11285
11286 _createClass(WorkerTransport, [{
11287 key: "destroy",
11288 value: function destroy() {
11289 var _this9 = this;
11290
11291 if (this.destroyCapability) {
11292 return this.destroyCapability.promise;
11293 }
11294
11295 this.destroyed = true;
11296 this.destroyCapability = (0, _util.createPromiseCapability)();
11297
11298 if (this._passwordCapability) {
11299 this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
11300 }
11301
11302 var waitOn = [];
11303 this.pageCache.forEach(function (page) {
11304 if (page) {
11305 waitOn.push(page._destroy());
11306 }
11307 });
11308 this.pageCache.length = 0;
11309 this.pagePromises.length = 0;
11310 var terminated = this.messageHandler.sendWithPromise('Terminate', null);
11311 waitOn.push(terminated);
11312 Promise.all(waitOn).then(function () {
11313 _this9.fontLoader.clear();
11314
11315 if (_this9._networkStream) {
11316 _this9._networkStream.cancelAllRequests();
11317 }
11318
11319 if (_this9.messageHandler) {
11320 _this9.messageHandler.destroy();
11321
11322 _this9.messageHandler = null;
11323 }
11324
11325 _this9.destroyCapability.resolve();
11326 }, this.destroyCapability.reject);
11327 return this.destroyCapability.promise;
11328 }
11329 }, {
11330 key: "setupMessageHandler",
11331 value: function setupMessageHandler() {
11332 var messageHandler = this.messageHandler,
11333 loadingTask = this.loadingTask;
11334 messageHandler.on('GetReader', function (data, sink) {
11335 var _this10 = this;
11336
11337 (0, _util.assert)(this._networkStream);
11338 this._fullReader = this._networkStream.getFullReader();
11339
11340 this._fullReader.onProgress = function (evt) {
11341 _this10._lastProgress = {
11342 loaded: evt.loaded,
11343 total: evt.total
11344 };
11345 };
11346
11347 sink.onPull = function () {
11348 _this10._fullReader.read().then(function (_ref7) {
11349 var value = _ref7.value,
11350 done = _ref7.done;
11351
11352 if (done) {
11353 sink.close();
11354 return;
11355 }
11356
11357 (0, _util.assert)((0, _util.isArrayBuffer)(value));
11358 sink.enqueue(new Uint8Array(value), 1, [value]);
11359 })["catch"](function (reason) {
11360 sink.error(reason);
11361 });
11362 };
11363
11364 sink.onCancel = function (reason) {
11365 _this10._fullReader.cancel(reason);
11366 };
11367 }, this);
11368 messageHandler.on('ReaderHeadersReady', function (data) {
11369 var _this11 = this;
11370
11371 var headersCapability = (0, _util.createPromiseCapability)();
11372 var fullReader = this._fullReader;
11373 fullReader.headersReady.then(function () {
11374 if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
11375 if (_this11._lastProgress && loadingTask.onProgress) {
11376 loadingTask.onProgress(_this11._lastProgress);
11377 }
11378
11379 fullReader.onProgress = function (evt) {
11380 if (loadingTask.onProgress) {
11381 loadingTask.onProgress({
11382 loaded: evt.loaded,
11383 total: evt.total
11384 });
11385 }
11386 };
11387 }
11388
11389 headersCapability.resolve({
11390 isStreamingSupported: fullReader.isStreamingSupported,
11391 isRangeSupported: fullReader.isRangeSupported,
11392 contentLength: fullReader.contentLength
11393 });
11394 }, headersCapability.reject);
11395 return headersCapability.promise;
11396 }, this);
11397 messageHandler.on('GetRangeReader', function (data, sink) {
11398 (0, _util.assert)(this._networkStream);
11399
11400 var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
11401
11402 if (!rangeReader) {
11403 sink.close();
11404 return;
11405 }
11406
11407 sink.onPull = function () {
11408 rangeReader.read().then(function (_ref8) {
11409 var value = _ref8.value,
11410 done = _ref8.done;
11411
11412 if (done) {
11413 sink.close();
11414 return;
11415 }
11416
11417 (0, _util.assert)((0, _util.isArrayBuffer)(value));
11418 sink.enqueue(new Uint8Array(value), 1, [value]);
11419 })["catch"](function (reason) {
11420 sink.error(reason);
11421 });
11422 };
11423
11424 sink.onCancel = function (reason) {
11425 rangeReader.cancel(reason);
11426 };
11427 }, this);
11428 messageHandler.on('GetDoc', function (_ref9) {
11429 var pdfInfo = _ref9.pdfInfo;
11430 this._numPages = pdfInfo.numPages;
11431
11432 loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
11433 }, this);
11434 messageHandler.on('PasswordRequest', function (exception) {
11435 var _this12 = this;
11436
11437 this._passwordCapability = (0, _util.createPromiseCapability)();
11438
11439 if (loadingTask.onPassword) {
11440 var updatePassword = function updatePassword(password) {
11441 _this12._passwordCapability.resolve({
11442 password: password
11443 });
11444 };
11445
11446 try {
11447 loadingTask.onPassword(updatePassword, exception.code);
11448 } catch (ex) {
11449 this._passwordCapability.reject(ex);
11450 }
11451 } else {
11452 this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
11453 }
11454
11455 return this._passwordCapability.promise;
11456 }, this);
11457 messageHandler.on('PasswordException', function (exception) {
11458 loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
11459 }, this);
11460 messageHandler.on('InvalidPDF', function (exception) {
11461 loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
11462 }, this);
11463 messageHandler.on('MissingPDF', function (exception) {
11464 loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
11465 }, this);
11466 messageHandler.on('UnexpectedResponse', function (exception) {
11467 loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
11468 }, this);
11469 messageHandler.on('UnknownError', function (exception) {
11470 loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
11471 }, this);
11472 messageHandler.on('DataLoaded', function (data) {
11473 if (loadingTask.onProgress) {
11474 loadingTask.onProgress({
11475 loaded: data.length,
11476 total: data.length
11477 });
11478 }
11479
11480 this.downloadInfoCapability.resolve(data);
11481 }, this);
11482 messageHandler.on('StartRenderPage', function (data) {
11483 if (this.destroyed) {
11484 return;
11485 }
11486
11487 var page = this.pageCache[data.pageIndex];
11488
11489 page._stats.timeEnd('Page Request');
11490
11491 page._startRenderPage(data.transparency, data.intent);
11492 }, this);
11493 messageHandler.on('RenderPageChunk', function (data) {
11494 if (this.destroyed) {
11495 return;
11496 }
11497
11498 var page = this.pageCache[data.pageIndex];
11499
11500 page._renderPageChunk(data.operatorList, data.intent);
11501 }, this);
11502 messageHandler.on('commonobj', function (data) {
11503 var _this13 = this;
11504
11505 if (this.destroyed) {
11506 return;
11507 }
11508
11509 var _data = _slicedToArray(data, 3),
11510 id = _data[0],
11511 type = _data[1],
11512 exportedData = _data[2];
11513
11514 if (this.commonObjs.has(id)) {
11515 return;
11516 }
11517
11518 switch (type) {
11519 case 'Font':
11520 var params = this._params;
11521
11522 if ('error' in exportedData) {
11523 var exportedError = exportedData.error;
11524 (0, _util.warn)("Error during font loading: ".concat(exportedError));
11525 this.commonObjs.resolve(id, exportedError);
11526 break;
11527 }
11528
11529 var fontRegistry = null;
11530
11531 if (params.pdfBug && _global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled) {
11532 fontRegistry = {
11533 registerFont: function registerFont(font, url) {
11534 _global_scope["default"]['FontInspector'].fontAdded(font, url);
11535 }
11536 };
11537 }
11538
11539 var font = new _font_loader.FontFaceObject(exportedData, {
11540 isEvalSupported: params.isEvalSupported,
11541 disableFontFace: params.disableFontFace,
11542 ignoreErrors: params.ignoreErrors,
11543 onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
11544 fontRegistry: fontRegistry
11545 });
11546 this.fontLoader.bind(font).then(function () {
11547 _this13.commonObjs.resolve(id, font);
11548 }, function (reason) {
11549 messageHandler.sendWithPromise('FontFallback', {
11550 id: id
11551 })["finally"](function () {
11552 _this13.commonObjs.resolve(id, font);
11553 });
11554 });
11555 break;
11556
11557 case 'FontPath':
11558 case 'FontType3Res':
11559 this.commonObjs.resolve(id, exportedData);
11560 break;
11561
11562 default:
11563 throw new Error("Got unknown common object type ".concat(type));
11564 }
11565 }, this);
11566 messageHandler.on('obj', function (data) {
11567 if (this.destroyed) {
11568 return undefined;
11569 }
11570
11571 var _data2 = _slicedToArray(data, 4),
11572 id = _data2[0],
11573 pageIndex = _data2[1],
11574 type = _data2[2],
11575 imageData = _data2[3];
11576
11577 var pageProxy = this.pageCache[pageIndex];
11578
11579 if (pageProxy.objs.has(id)) {
11580 return undefined;
11581 }
11582
11583 switch (type) {
11584 case 'JpegStream':
11585 return new Promise(function (resolve, reject) {
11586 var img = new Image();
11587
11588 img.onload = function () {
11589 resolve(img);
11590 };
11591
11592 img.onerror = function () {
11593 reject(new Error('Error during JPEG image loading'));
11594 (0, _display_utils.releaseImageResources)(img);
11595 };
11596
11597 img.src = imageData;
11598 }).then(function (img) {
11599 pageProxy.objs.resolve(id, img);
11600 });
11601
11602 case 'Image':
11603 pageProxy.objs.resolve(id, imageData);
11604 var MAX_IMAGE_SIZE_TO_STORE = 8000000;
11605
11606 if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
11607 pageProxy.cleanupAfterRender = true;
11608 }
11609
11610 break;
11611
11612 default:
11613 throw new Error("Got unknown object type ".concat(type));
11614 }
11615
11616 return undefined;
11617 }, this);
11618 messageHandler.on('DocProgress', function (data) {
11619 if (this.destroyed) {
11620 return;
11621 }
11622
11623 if (loadingTask.onProgress) {
11624 loadingTask.onProgress({
11625 loaded: data.loaded,
11626 total: data.total
11627 });
11628 }
11629 }, this);
11630 messageHandler.on('PageError', function (data) {
11631 if (this.destroyed) {
11632 return;
11633 }
11634
11635 var page = this.pageCache[data.pageIndex];
11636 var intentState = page.intentStates[data.intent];
11637
11638 if (intentState.displayReadyCapability) {
11639 intentState.displayReadyCapability.reject(new Error(data.error));
11640 } else {
11641 throw new Error(data.error);
11642 }
11643
11644 if (intentState.operatorList) {
11645 intentState.operatorList.lastChunk = true;
11646
11647 for (var i = 0; i < intentState.renderTasks.length; i++) {
11648 intentState.renderTasks[i].operatorListChanged();
11649 }
11650 }
11651 }, this);
11652 messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
11653 messageHandler.on('JpegDecode', function (data) {
11654 if (this.destroyed) {
11655 return Promise.reject(new Error('Worker was destroyed'));
11656 }
11657
11658 if (typeof document === 'undefined') {
11659 return Promise.reject(new Error('"document" is not defined.'));
11660 }
11661
11662 var _data3 = _slicedToArray(data, 2),
11663 imageUrl = _data3[0],
11664 components = _data3[1];
11665
11666 if (components !== 3 && components !== 1) {
11667 return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
11668 }
11669
11670 return new Promise(function (resolve, reject) {
11671 var img = new Image();
11672
11673 img.onload = function () {
11674 var width = img.width,
11675 height = img.height;
11676 var size = width * height;
11677 var rgbaLength = size * 4;
11678 var buf = new Uint8ClampedArray(size * components);
11679 var tmpCanvas = document.createElement('canvas');
11680 tmpCanvas.width = width;
11681 tmpCanvas.height = height;
11682 var tmpCtx = tmpCanvas.getContext('2d');
11683 tmpCtx.drawImage(img, 0, 0);
11684 var data = tmpCtx.getImageData(0, 0, width, height).data;
11685
11686 if (components === 3) {
11687 for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
11688 buf[j] = data[i];
11689 buf[j + 1] = data[i + 1];
11690 buf[j + 2] = data[i + 2];
11691 }
11692 } else if (components === 1) {
11693 for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
11694 buf[_j] = data[_i2];
11695 }
11696 }
11697
11698 resolve({
11699 data: buf,
11700 width: width,
11701 height: height
11702 });
11703 (0, _display_utils.releaseImageResources)(img);
11704 tmpCanvas.width = 0;
11705 tmpCanvas.height = 0;
11706 tmpCanvas = null;
11707 tmpCtx = null;
11708 };
11709
11710 img.onerror = function () {
11711 reject(new Error('JpegDecode failed to load image'));
11712 (0, _display_utils.releaseImageResources)(img);
11713 };
11714
11715 img.src = imageUrl;
11716 });
11717 }, this);
11718 messageHandler.on('FetchBuiltInCMap', function (data) {
11719 if (this.destroyed) {
11720 return Promise.reject(new Error('Worker was destroyed'));
11721 }
11722
11723 return this.CMapReaderFactory.fetch({
11724 name: data.name
11725 });
11726 }, this);
11727 }
11728 }, {
11729 key: "_onUnsupportedFeature",
11730 value: function _onUnsupportedFeature(_ref10) {
11731 var featureId = _ref10.featureId;
11732
11733 if (this.destroyed) {
11734 return;
11735 }
11736
11737 if (this.loadingTask.onUnsupportedFeature) {
11738 this.loadingTask.onUnsupportedFeature(featureId);
11739 }
11740 }
11741 }, {
11742 key: "getData",
11743 value: function getData() {
11744 return this.messageHandler.sendWithPromise('GetData', null);
11745 }
11746 }, {
11747 key: "getPage",
11748 value: function getPage(pageNumber) {
11749 var _this14 = this;
11750
11751 if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
11752 return Promise.reject(new Error('Invalid page request'));
11753 }
11754
11755 var pageIndex = pageNumber - 1;
11756
11757 if (pageIndex in this.pagePromises) {
11758 return this.pagePromises[pageIndex];
11759 }
11760
11761 var promise = this.messageHandler.sendWithPromise('GetPage', {
11762 pageIndex: pageIndex
11763 }).then(function (pageInfo) {
11764 if (_this14.destroyed) {
11765 throw new Error('Transport destroyed');
11766 }
11767
11768 var page = new PDFPageProxy(pageIndex, pageInfo, _this14, _this14._params.pdfBug);
11769 _this14.pageCache[pageIndex] = page;
11770 return page;
11771 });
11772 this.pagePromises[pageIndex] = promise;
11773 return promise;
11774 }
11775 }, {
11776 key: "getPageIndex",
11777 value: function getPageIndex(ref) {
11778 return this.messageHandler.sendWithPromise('GetPageIndex', {
11779 ref: ref
11780 })["catch"](function (reason) {
11781 return Promise.reject(new Error(reason));
11782 });
11783 }
11784 }, {
11785 key: "getAnnotations",
11786 value: function getAnnotations(pageIndex, intent) {
11787 return this.messageHandler.sendWithPromise('GetAnnotations', {
11788 pageIndex: pageIndex,
11789 intent: intent
11790 });
11791 }
11792 }, {
11793 key: "getDestinations",
11794 value: function getDestinations() {
11795 return this.messageHandler.sendWithPromise('GetDestinations', null);
11796 }
11797 }, {
11798 key: "getDestination",
11799 value: function getDestination(id) {
11800 if (typeof id !== 'string') {
11801 return Promise.reject(new Error('Invalid destination request.'));
11802 }
11803
11804 return this.messageHandler.sendWithPromise('GetDestination', {
11805 id: id
11806 });
11807 }
11808 }, {
11809 key: "getPageLabels",
11810 value: function getPageLabels() {
11811 return this.messageHandler.sendWithPromise('GetPageLabels', null);
11812 }
11813 }, {
11814 key: "getPageLayout",
11815 value: function getPageLayout() {
11816 return this.messageHandler.sendWithPromise('GetPageLayout', null);
11817 }
11818 }, {
11819 key: "getPageMode",
11820 value: function getPageMode() {
11821 return this.messageHandler.sendWithPromise('GetPageMode', null);
11822 }
11823 }, {
11824 key: "getViewerPreferences",
11825 value: function getViewerPreferences() {
11826 return this.messageHandler.sendWithPromise('GetViewerPreferences', null);
11827 }
11828 }, {
11829 key: "getOpenActionDestination",
11830 value: function getOpenActionDestination() {
11831 return this.messageHandler.sendWithPromise('GetOpenActionDestination', null);
11832 }
11833 }, {
11834 key: "getAttachments",
11835 value: function getAttachments() {
11836 return this.messageHandler.sendWithPromise('GetAttachments', null);
11837 }
11838 }, {
11839 key: "getJavaScript",
11840 value: function getJavaScript() {
11841 return this.messageHandler.sendWithPromise('GetJavaScript', null);
11842 }
11843 }, {
11844 key: "getOutline",
11845 value: function getOutline() {
11846 return this.messageHandler.sendWithPromise('GetOutline', null);
11847 }
11848 }, {
11849 key: "getPermissions",
11850 value: function getPermissions() {
11851 return this.messageHandler.sendWithPromise('GetPermissions', null);
11852 }
11853 }, {
11854 key: "getMetadata",
11855 value: function getMetadata() {
11856 var _this15 = this;
11857
11858 return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
11859 return {
11860 info: results[0],
11861 metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
11862 contentDispositionFilename: _this15._fullReader ? _this15._fullReader.filename : null
11863 };
11864 });
11865 }
11866 }, {
11867 key: "getStats",
11868 value: function getStats() {
11869 return this.messageHandler.sendWithPromise('GetStats', null);
11870 }
11871 }, {
11872 key: "startCleanup",
11873 value: function startCleanup() {
11874 var _this16 = this;
11875
11876 this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
11877 for (var i = 0, ii = _this16.pageCache.length; i < ii; i++) {
11878 var page = _this16.pageCache[i];
11879
11880 if (page) {
11881 page.cleanup();
11882 }
11883 }
11884
11885 _this16.commonObjs.clear();
11886
11887 _this16.fontLoader.clear();
11888 });
11889 }
11890 }, {
11891 key: "loadingParams",
11892 get: function get() {
11893 var params = this._params;
11894 return (0, _util.shadow)(this, 'loadingParams', {
11895 disableAutoFetch: params.disableAutoFetch,
11896 disableCreateObjectURL: params.disableCreateObjectURL,
11897 disableFontFace: params.disableFontFace,
11898 nativeImageDecoderSupport: params.nativeImageDecoderSupport
11899 });
11900 }
11901 }]);
11902
11903 return WorkerTransport;
11904}();
11905
11906var PDFObjects =
11907/*#__PURE__*/
11908function () {
11909 function PDFObjects() {
11910 _classCallCheck(this, PDFObjects);
11911
11912 this._objs = Object.create(null);
11913 }
11914
11915 _createClass(PDFObjects, [{
11916 key: "_ensureObj",
11917 value: function _ensureObj(objId) {
11918 if (this._objs[objId]) {
11919 return this._objs[objId];
11920 }
11921
11922 return this._objs[objId] = {
11923 capability: (0, _util.createPromiseCapability)(),
11924 data: null,
11925 resolved: false
11926 };
11927 }
11928 }, {
11929 key: "get",
11930 value: function get(objId) {
11931 var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
11932
11933 if (callback) {
11934 this._ensureObj(objId).capability.promise.then(callback);
11935
11936 return null;
11937 }
11938
11939 var obj = this._objs[objId];
11940
11941 if (!obj || !obj.resolved) {
11942 throw new Error("Requesting object that isn't resolved yet ".concat(objId, "."));
11943 }
11944
11945 return obj.data;
11946 }
11947 }, {
11948 key: "has",
11949 value: function has(objId) {
11950 var obj = this._objs[objId];
11951 return obj ? obj.resolved : false;
11952 }
11953 }, {
11954 key: "resolve",
11955 value: function resolve(objId, data) {
11956 var obj = this._ensureObj(objId);
11957
11958 obj.resolved = true;
11959 obj.data = data;
11960 obj.capability.resolve(data);
11961 }
11962 }, {
11963 key: "clear",
11964 value: function clear() {
11965 for (var objId in this._objs) {
11966 var data = this._objs[objId].data;
11967
11968 if (typeof Image !== 'undefined' && data instanceof Image) {
11969 (0, _display_utils.releaseImageResources)(data);
11970 }
11971 }
11972
11973 this._objs = Object.create(null);
11974 }
11975 }]);
11976
11977 return PDFObjects;
11978}();
11979
11980var RenderTask =
11981/*#__PURE__*/
11982function () {
11983 function RenderTask(internalRenderTask) {
11984 _classCallCheck(this, RenderTask);
11985
11986 this._internalRenderTask = internalRenderTask;
11987 this.onContinue = null;
11988 }
11989
11990 _createClass(RenderTask, [{
11991 key: "cancel",
11992 value: function cancel() {
11993 this._internalRenderTask.cancel();
11994 }
11995 }, {
11996 key: "then",
11997 value: function then(onFulfilled, onRejected) {
11998 (0, _display_utils.deprecated)('RenderTask.then method, use the `promise` getter instead.');
11999 return this.promise.then.apply(this.promise, arguments);
12000 }
12001 }, {
12002 key: "promise",
12003 get: function get() {
12004 return this._internalRenderTask.capability.promise;
12005 }
12006 }]);
12007
12008 return RenderTask;
12009}();
12010
12011var InternalRenderTask = function InternalRenderTaskClosure() {
12012 var canvasInRendering = new WeakSet();
12013
12014 var InternalRenderTask =
12015 /*#__PURE__*/
12016 function () {
12017 function InternalRenderTask(_ref11) {
12018 var callback = _ref11.callback,
12019 params = _ref11.params,
12020 objs = _ref11.objs,
12021 commonObjs = _ref11.commonObjs,
12022 operatorList = _ref11.operatorList,
12023 pageNumber = _ref11.pageNumber,
12024 canvasFactory = _ref11.canvasFactory,
12025 webGLContext = _ref11.webGLContext,
12026 _ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
12027 useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
12028 _ref11$pdfBug = _ref11.pdfBug,
12029 pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
12030
12031 _classCallCheck(this, InternalRenderTask);
12032
12033 this.callback = callback;
12034 this.params = params;
12035 this.objs = objs;
12036 this.commonObjs = commonObjs;
12037 this.operatorListIdx = null;
12038 this.operatorList = operatorList;
12039 this.pageNumber = pageNumber;
12040 this.canvasFactory = canvasFactory;
12041 this.webGLContext = webGLContext;
12042 this._pdfBug = pdfBug;
12043 this.running = false;
12044 this.graphicsReadyCallback = null;
12045 this.graphicsReady = false;
12046 this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined';
12047 this.cancelled = false;
12048 this.capability = (0, _util.createPromiseCapability)();
12049 this.task = new RenderTask(this);
12050 this._continueBound = this._continue.bind(this);
12051 this._scheduleNextBound = this._scheduleNext.bind(this);
12052 this._nextBound = this._next.bind(this);
12053 this._canvas = params.canvasContext.canvas;
12054 }
12055
12056 _createClass(InternalRenderTask, [{
12057 key: "initializeGraphics",
12058 value: function initializeGraphics() {
12059 var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
12060
12061 if (this.cancelled) {
12062 return;
12063 }
12064
12065 if (this._canvas) {
12066 if (canvasInRendering.has(this._canvas)) {
12067 throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
12068 }
12069
12070 canvasInRendering.add(this._canvas);
12071 }
12072
12073 if (this._pdfBug && _global_scope["default"].StepperManager && _global_scope["default"].StepperManager.enabled) {
12074 this.stepper = _global_scope["default"].StepperManager.create(this.pageNumber - 1);
12075 this.stepper.init(this.operatorList);
12076 this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
12077 }
12078
12079 var _this$params = this.params,
12080 canvasContext = _this$params.canvasContext,
12081 viewport = _this$params.viewport,
12082 transform = _this$params.transform,
12083 imageLayer = _this$params.imageLayer,
12084 background = _this$params.background;
12085 this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
12086 this.gfx.beginDrawing({
12087 transform: transform,
12088 viewport: viewport,
12089 transparency: transparency,
12090 background: background
12091 });
12092 this.operatorListIdx = 0;
12093 this.graphicsReady = true;
12094
12095 if (this.graphicsReadyCallback) {
12096 this.graphicsReadyCallback();
12097 }
12098 }
12099 }, {
12100 key: "cancel",
12101 value: function cancel() {
12102 var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
12103 this.running = false;
12104 this.cancelled = true;
12105
12106 if (this.gfx) {
12107 this.gfx.endDrawing();
12108 }
12109
12110 if (this._canvas) {
12111 canvasInRendering["delete"](this._canvas);
12112 }
12113
12114 this.callback(error || new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas'));
12115 }
12116 }, {
12117 key: "operatorListChanged",
12118 value: function operatorListChanged() {
12119 if (!this.graphicsReady) {
12120 if (!this.graphicsReadyCallback) {
12121 this.graphicsReadyCallback = this._continueBound;
12122 }
12123
12124 return;
12125 }
12126
12127 if (this.stepper) {
12128 this.stepper.updateOperatorList(this.operatorList);
12129 }
12130
12131 if (this.running) {
12132 return;
12133 }
12134
12135 this._continue();
12136 }
12137 }, {
12138 key: "_continue",
12139 value: function _continue() {
12140 this.running = true;
12141
12142 if (this.cancelled) {
12143 return;
12144 }
12145
12146 if (this.task.onContinue) {
12147 this.task.onContinue(this._scheduleNextBound);
12148 } else {
12149 this._scheduleNext();
12150 }
12151 }
12152 }, {
12153 key: "_scheduleNext",
12154 value: function _scheduleNext() {
12155 var _this17 = this;
12156
12157 if (this._useRequestAnimationFrame) {
12158 window.requestAnimationFrame(function () {
12159 _this17._nextBound()["catch"](_this17.cancel.bind(_this17));
12160 });
12161 } else {
12162 Promise.resolve().then(this._nextBound)["catch"](this.cancel.bind(this));
12163 }
12164 }
12165 }, {
12166 key: "_next",
12167 value: function () {
12168 var _next2 = _asyncToGenerator(
12169 /*#__PURE__*/
12170 _regenerator["default"].mark(function _callee() {
12171 return _regenerator["default"].wrap(function _callee$(_context) {
12172 while (1) {
12173 switch (_context.prev = _context.next) {
12174 case 0:
12175 if (!this.cancelled) {
12176 _context.next = 2;
12177 break;
12178 }
12179
12180 return _context.abrupt("return");
12181
12182 case 2:
12183 this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
12184
12185 if (this.operatorListIdx === this.operatorList.argsArray.length) {
12186 this.running = false;
12187
12188 if (this.operatorList.lastChunk) {
12189 this.gfx.endDrawing();
12190
12191 if (this._canvas) {
12192 canvasInRendering["delete"](this._canvas);
12193 }
12194
12195 this.callback();
12196 }
12197 }
12198
12199 case 4:
12200 case "end":
12201 return _context.stop();
12202 }
12203 }
12204 }, _callee, this);
12205 }));
12206
12207 function _next() {
12208 return _next2.apply(this, arguments);
12209 }
12210
12211 return _next;
12212 }()
12213 }]);
12214
12215 return InternalRenderTask;
12216 }();
12217
12218 return InternalRenderTask;
12219}();
12220
12221var version = '2.2.228';
12222exports.version = version;
12223var build = 'd7afb74a';
12224exports.build = build;
12225
12226/***/ }),
12227/* 148 */
12228/***/ (function(module, exports, __w_pdfjs_require__) {
12229
12230"use strict";
12231
12232
12233module.exports = __w_pdfjs_require__(149);
12234
12235/***/ }),
12236/* 149 */
12237/***/ (function(module, exports, __w_pdfjs_require__) {
12238
12239"use strict";
12240/* WEBPACK VAR INJECTION */(function(module) {
12241
12242function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12243
12244var runtime = function (exports) {
12245 "use strict";
12246
12247 var Op = Object.prototype;
12248 var hasOwn = Op.hasOwnProperty;
12249 var undefined;
12250 var $Symbol = typeof Symbol === "function" ? Symbol : {};
12251 var iteratorSymbol = $Symbol.iterator || "@@iterator";
12252 var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
12253 var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
12254
12255 function wrap(innerFn, outerFn, self, tryLocsList) {
12256 var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
12257 var generator = Object.create(protoGenerator.prototype);
12258 var context = new Context(tryLocsList || []);
12259 generator._invoke = makeInvokeMethod(innerFn, self, context);
12260 return generator;
12261 }
12262
12263 exports.wrap = wrap;
12264
12265 function tryCatch(fn, obj, arg) {
12266 try {
12267 return {
12268 type: "normal",
12269 arg: fn.call(obj, arg)
12270 };
12271 } catch (err) {
12272 return {
12273 type: "throw",
12274 arg: err
12275 };
12276 }
12277 }
12278
12279 var GenStateSuspendedStart = "suspendedStart";
12280 var GenStateSuspendedYield = "suspendedYield";
12281 var GenStateExecuting = "executing";
12282 var GenStateCompleted = "completed";
12283 var ContinueSentinel = {};
12284
12285 function Generator() {}
12286
12287 function GeneratorFunction() {}
12288
12289 function GeneratorFunctionPrototype() {}
12290
12291 var IteratorPrototype = {};
12292
12293 IteratorPrototype[iteratorSymbol] = function () {
12294 return this;
12295 };
12296
12297 var getProto = Object.getPrototypeOf;
12298 var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
12299
12300 if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
12301 IteratorPrototype = NativeIteratorPrototype;
12302 }
12303
12304 var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
12305 GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
12306 GeneratorFunctionPrototype.constructor = GeneratorFunction;
12307 GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
12308
12309 function defineIteratorMethods(prototype) {
12310 ["next", "throw", "return"].forEach(function (method) {
12311 prototype[method] = function (arg) {
12312 return this._invoke(method, arg);
12313 };
12314 });
12315 }
12316
12317 exports.isGeneratorFunction = function (genFun) {
12318 var ctor = typeof genFun === "function" && genFun.constructor;
12319 return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
12320 };
12321
12322 exports.mark = function (genFun) {
12323 if (Object.setPrototypeOf) {
12324 Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
12325 } else {
12326 genFun.__proto__ = GeneratorFunctionPrototype;
12327
12328 if (!(toStringTagSymbol in genFun)) {
12329 genFun[toStringTagSymbol] = "GeneratorFunction";
12330 }
12331 }
12332
12333 genFun.prototype = Object.create(Gp);
12334 return genFun;
12335 };
12336
12337 exports.awrap = function (arg) {
12338 return {
12339 __await: arg
12340 };
12341 };
12342
12343 function AsyncIterator(generator) {
12344 function invoke(method, arg, resolve, reject) {
12345 var record = tryCatch(generator[method], generator, arg);
12346
12347 if (record.type === "throw") {
12348 reject(record.arg);
12349 } else {
12350 var result = record.arg;
12351 var value = result.value;
12352
12353 if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
12354 return Promise.resolve(value.__await).then(function (value) {
12355 invoke("next", value, resolve, reject);
12356 }, function (err) {
12357 invoke("throw", err, resolve, reject);
12358 });
12359 }
12360
12361 return Promise.resolve(value).then(function (unwrapped) {
12362 result.value = unwrapped;
12363 resolve(result);
12364 }, function (error) {
12365 return invoke("throw", error, resolve, reject);
12366 });
12367 }
12368 }
12369
12370 var previousPromise;
12371
12372 function enqueue(method, arg) {
12373 function callInvokeWithMethodAndArg() {
12374 return new Promise(function (resolve, reject) {
12375 invoke(method, arg, resolve, reject);
12376 });
12377 }
12378
12379 return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
12380 }
12381
12382 this._invoke = enqueue;
12383 }
12384
12385 defineIteratorMethods(AsyncIterator.prototype);
12386
12387 AsyncIterator.prototype[asyncIteratorSymbol] = function () {
12388 return this;
12389 };
12390
12391 exports.AsyncIterator = AsyncIterator;
12392
12393 exports.async = function (innerFn, outerFn, self, tryLocsList) {
12394 var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
12395 return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
12396 return result.done ? result.value : iter.next();
12397 });
12398 };
12399
12400 function makeInvokeMethod(innerFn, self, context) {
12401 var state = GenStateSuspendedStart;
12402 return function invoke(method, arg) {
12403 if (state === GenStateExecuting) {
12404 throw new Error("Generator is already running");
12405 }
12406
12407 if (state === GenStateCompleted) {
12408 if (method === "throw") {
12409 throw arg;
12410 }
12411
12412 return doneResult();
12413 }
12414
12415 context.method = method;
12416 context.arg = arg;
12417
12418 while (true) {
12419 var delegate = context.delegate;
12420
12421 if (delegate) {
12422 var delegateResult = maybeInvokeDelegate(delegate, context);
12423
12424 if (delegateResult) {
12425 if (delegateResult === ContinueSentinel) continue;
12426 return delegateResult;
12427 }
12428 }
12429
12430 if (context.method === "next") {
12431 context.sent = context._sent = context.arg;
12432 } else if (context.method === "throw") {
12433 if (state === GenStateSuspendedStart) {
12434 state = GenStateCompleted;
12435 throw context.arg;
12436 }
12437
12438 context.dispatchException(context.arg);
12439 } else if (context.method === "return") {
12440 context.abrupt("return", context.arg);
12441 }
12442
12443 state = GenStateExecuting;
12444 var record = tryCatch(innerFn, self, context);
12445
12446 if (record.type === "normal") {
12447 state = context.done ? GenStateCompleted : GenStateSuspendedYield;
12448
12449 if (record.arg === ContinueSentinel) {
12450 continue;
12451 }
12452
12453 return {
12454 value: record.arg,
12455 done: context.done
12456 };
12457 } else if (record.type === "throw") {
12458 state = GenStateCompleted;
12459 context.method = "throw";
12460 context.arg = record.arg;
12461 }
12462 }
12463 };
12464 }
12465
12466 function maybeInvokeDelegate(delegate, context) {
12467 var method = delegate.iterator[context.method];
12468
12469 if (method === undefined) {
12470 context.delegate = null;
12471
12472 if (context.method === "throw") {
12473 if (delegate.iterator["return"]) {
12474 context.method = "return";
12475 context.arg = undefined;
12476 maybeInvokeDelegate(delegate, context);
12477
12478 if (context.method === "throw") {
12479 return ContinueSentinel;
12480 }
12481 }
12482
12483 context.method = "throw";
12484 context.arg = new TypeError("The iterator does not provide a 'throw' method");
12485 }
12486
12487 return ContinueSentinel;
12488 }
12489
12490 var record = tryCatch(method, delegate.iterator, context.arg);
12491
12492 if (record.type === "throw") {
12493 context.method = "throw";
12494 context.arg = record.arg;
12495 context.delegate = null;
12496 return ContinueSentinel;
12497 }
12498
12499 var info = record.arg;
12500
12501 if (!info) {
12502 context.method = "throw";
12503 context.arg = new TypeError("iterator result is not an object");
12504 context.delegate = null;
12505 return ContinueSentinel;
12506 }
12507
12508 if (info.done) {
12509 context[delegate.resultName] = info.value;
12510 context.next = delegate.nextLoc;
12511
12512 if (context.method !== "return") {
12513 context.method = "next";
12514 context.arg = undefined;
12515 }
12516 } else {
12517 return info;
12518 }
12519
12520 context.delegate = null;
12521 return ContinueSentinel;
12522 }
12523
12524 defineIteratorMethods(Gp);
12525 Gp[toStringTagSymbol] = "Generator";
12526
12527 Gp[iteratorSymbol] = function () {
12528 return this;
12529 };
12530
12531 Gp.toString = function () {
12532 return "[object Generator]";
12533 };
12534
12535 function pushTryEntry(locs) {
12536 var entry = {
12537 tryLoc: locs[0]
12538 };
12539
12540 if (1 in locs) {
12541 entry.catchLoc = locs[1];
12542 }
12543
12544 if (2 in locs) {
12545 entry.finallyLoc = locs[2];
12546 entry.afterLoc = locs[3];
12547 }
12548
12549 this.tryEntries.push(entry);
12550 }
12551
12552 function resetTryEntry(entry) {
12553 var record = entry.completion || {};
12554 record.type = "normal";
12555 delete record.arg;
12556 entry.completion = record;
12557 }
12558
12559 function Context(tryLocsList) {
12560 this.tryEntries = [{
12561 tryLoc: "root"
12562 }];
12563 tryLocsList.forEach(pushTryEntry, this);
12564 this.reset(true);
12565 }
12566
12567 exports.keys = function (object) {
12568 var keys = [];
12569
12570 for (var key in object) {
12571 keys.push(key);
12572 }
12573
12574 keys.reverse();
12575 return function next() {
12576 while (keys.length) {
12577 var key = keys.pop();
12578
12579 if (key in object) {
12580 next.value = key;
12581 next.done = false;
12582 return next;
12583 }
12584 }
12585
12586 next.done = true;
12587 return next;
12588 };
12589 };
12590
12591 function values(iterable) {
12592 if (iterable) {
12593 var iteratorMethod = iterable[iteratorSymbol];
12594
12595 if (iteratorMethod) {
12596 return iteratorMethod.call(iterable);
12597 }
12598
12599 if (typeof iterable.next === "function") {
12600 return iterable;
12601 }
12602
12603 if (!isNaN(iterable.length)) {
12604 var i = -1,
12605 next = function next() {
12606 while (++i < iterable.length) {
12607 if (hasOwn.call(iterable, i)) {
12608 next.value = iterable[i];
12609 next.done = false;
12610 return next;
12611 }
12612 }
12613
12614 next.value = undefined;
12615 next.done = true;
12616 return next;
12617 };
12618
12619 return next.next = next;
12620 }
12621 }
12622
12623 return {
12624 next: doneResult
12625 };
12626 }
12627
12628 exports.values = values;
12629
12630 function doneResult() {
12631 return {
12632 value: undefined,
12633 done: true
12634 };
12635 }
12636
12637 Context.prototype = {
12638 constructor: Context,
12639 reset: function reset(skipTempReset) {
12640 this.prev = 0;
12641 this.next = 0;
12642 this.sent = this._sent = undefined;
12643 this.done = false;
12644 this.delegate = null;
12645 this.method = "next";
12646 this.arg = undefined;
12647 this.tryEntries.forEach(resetTryEntry);
12648
12649 if (!skipTempReset) {
12650 for (var name in this) {
12651 if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
12652 this[name] = undefined;
12653 }
12654 }
12655 }
12656 },
12657 stop: function stop() {
12658 this.done = true;
12659 var rootEntry = this.tryEntries[0];
12660 var rootRecord = rootEntry.completion;
12661
12662 if (rootRecord.type === "throw") {
12663 throw rootRecord.arg;
12664 }
12665
12666 return this.rval;
12667 },
12668 dispatchException: function dispatchException(exception) {
12669 if (this.done) {
12670 throw exception;
12671 }
12672
12673 var context = this;
12674
12675 function handle(loc, caught) {
12676 record.type = "throw";
12677 record.arg = exception;
12678 context.next = loc;
12679
12680 if (caught) {
12681 context.method = "next";
12682 context.arg = undefined;
12683 }
12684
12685 return !!caught;
12686 }
12687
12688 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12689 var entry = this.tryEntries[i];
12690 var record = entry.completion;
12691
12692 if (entry.tryLoc === "root") {
12693 return handle("end");
12694 }
12695
12696 if (entry.tryLoc <= this.prev) {
12697 var hasCatch = hasOwn.call(entry, "catchLoc");
12698 var hasFinally = hasOwn.call(entry, "finallyLoc");
12699
12700 if (hasCatch && hasFinally) {
12701 if (this.prev < entry.catchLoc) {
12702 return handle(entry.catchLoc, true);
12703 } else if (this.prev < entry.finallyLoc) {
12704 return handle(entry.finallyLoc);
12705 }
12706 } else if (hasCatch) {
12707 if (this.prev < entry.catchLoc) {
12708 return handle(entry.catchLoc, true);
12709 }
12710 } else if (hasFinally) {
12711 if (this.prev < entry.finallyLoc) {
12712 return handle(entry.finallyLoc);
12713 }
12714 } else {
12715 throw new Error("try statement without catch or finally");
12716 }
12717 }
12718 }
12719 },
12720 abrupt: function abrupt(type, arg) {
12721 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12722 var entry = this.tryEntries[i];
12723
12724 if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
12725 var finallyEntry = entry;
12726 break;
12727 }
12728 }
12729
12730 if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
12731 finallyEntry = null;
12732 }
12733
12734 var record = finallyEntry ? finallyEntry.completion : {};
12735 record.type = type;
12736 record.arg = arg;
12737
12738 if (finallyEntry) {
12739 this.method = "next";
12740 this.next = finallyEntry.finallyLoc;
12741 return ContinueSentinel;
12742 }
12743
12744 return this.complete(record);
12745 },
12746 complete: function complete(record, afterLoc) {
12747 if (record.type === "throw") {
12748 throw record.arg;
12749 }
12750
12751 if (record.type === "break" || record.type === "continue") {
12752 this.next = record.arg;
12753 } else if (record.type === "return") {
12754 this.rval = this.arg = record.arg;
12755 this.method = "return";
12756 this.next = "end";
12757 } else if (record.type === "normal" && afterLoc) {
12758 this.next = afterLoc;
12759 }
12760
12761 return ContinueSentinel;
12762 },
12763 finish: function finish(finallyLoc) {
12764 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12765 var entry = this.tryEntries[i];
12766
12767 if (entry.finallyLoc === finallyLoc) {
12768 this.complete(entry.completion, entry.afterLoc);
12769 resetTryEntry(entry);
12770 return ContinueSentinel;
12771 }
12772 }
12773 },
12774 "catch": function _catch(tryLoc) {
12775 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
12776 var entry = this.tryEntries[i];
12777
12778 if (entry.tryLoc === tryLoc) {
12779 var record = entry.completion;
12780
12781 if (record.type === "throw") {
12782 var thrown = record.arg;
12783 resetTryEntry(entry);
12784 }
12785
12786 return thrown;
12787 }
12788 }
12789
12790 throw new Error("illegal catch attempt");
12791 },
12792 delegateYield: function delegateYield(iterable, resultName, nextLoc) {
12793 this.delegate = {
12794 iterator: values(iterable),
12795 resultName: resultName,
12796 nextLoc: nextLoc
12797 };
12798
12799 if (this.method === "next") {
12800 this.arg = undefined;
12801 }
12802
12803 return ContinueSentinel;
12804 }
12805 };
12806 return exports;
12807}(( false ? undefined : _typeof(module)) === "object" ? module.exports : {});
12808
12809try {
12810 regeneratorRuntime = runtime;
12811} catch (accidentalStrictMode) {
12812 Function("r", "regeneratorRuntime = r")(runtime);
12813}
12814/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(150)(module)))
12815
12816/***/ }),
12817/* 150 */
12818/***/ (function(module, exports, __w_pdfjs_require__) {
12819
12820"use strict";
12821
12822
12823module.exports = function (module) {
12824 if (!module.webpackPolyfill) {
12825 module.deprecate = function () {};
12826
12827 module.paths = [];
12828 if (!module.children) module.children = [];
12829 Object.defineProperty(module, "loaded", {
12830 enumerable: true,
12831 get: function get() {
12832 return module.l;
12833 }
12834 });
12835 Object.defineProperty(module, "id", {
12836 enumerable: true,
12837 get: function get() {
12838 return module.i;
12839 }
12840 });
12841 module.webpackPolyfill = 1;
12842 }
12843
12844 return module;
12845};
12846
12847/***/ }),
12848/* 151 */
12849/***/ (function(module, exports, __w_pdfjs_require__) {
12850
12851"use strict";
12852
12853
12854Object.defineProperty(exports, "__esModule", {
12855 value: true
12856});
12857exports.addLinkAttributes = addLinkAttributes;
12858exports.getFilenameFromUrl = getFilenameFromUrl;
12859exports.isFetchSupported = isFetchSupported;
12860exports.isValidFetchUrl = isValidFetchUrl;
12861exports.loadScript = loadScript;
12862exports.deprecated = deprecated;
12863exports.releaseImageResources = releaseImageResources;
12864exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
12865
12866var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
12867
12868var _util = __w_pdfjs_require__(1);
12869
12870function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12871
12872function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
12873
12874function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12875
12876function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12877
12878function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12879
12880function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12881
12882var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
12883exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
12884var SVG_NS = 'http://www.w3.org/2000/svg';
12885
12886var DOMCanvasFactory =
12887/*#__PURE__*/
12888function () {
12889 function DOMCanvasFactory() {
12890 _classCallCheck(this, DOMCanvasFactory);
12891 }
12892
12893 _createClass(DOMCanvasFactory, [{
12894 key: "create",
12895 value: function create(width, height) {
12896 if (width <= 0 || height <= 0) {
12897 throw new Error('Invalid canvas size');
12898 }
12899
12900 var canvas = document.createElement('canvas');
12901 var context = canvas.getContext('2d');
12902 canvas.width = width;
12903 canvas.height = height;
12904 return {
12905 canvas: canvas,
12906 context: context
12907 };
12908 }
12909 }, {
12910 key: "reset",
12911 value: function reset(canvasAndContext, width, height) {
12912 if (!canvasAndContext.canvas) {
12913 throw new Error('Canvas is not specified');
12914 }
12915
12916 if (width <= 0 || height <= 0) {
12917 throw new Error('Invalid canvas size');
12918 }
12919
12920 canvasAndContext.canvas.width = width;
12921 canvasAndContext.canvas.height = height;
12922 }
12923 }, {
12924 key: "destroy",
12925 value: function destroy(canvasAndContext) {
12926 if (!canvasAndContext.canvas) {
12927 throw new Error('Canvas is not specified');
12928 }
12929
12930 canvasAndContext.canvas.width = 0;
12931 canvasAndContext.canvas.height = 0;
12932 canvasAndContext.canvas = null;
12933 canvasAndContext.context = null;
12934 }
12935 }]);
12936
12937 return DOMCanvasFactory;
12938}();
12939
12940exports.DOMCanvasFactory = DOMCanvasFactory;
12941
12942var DOMCMapReaderFactory =
12943/*#__PURE__*/
12944function () {
12945 function DOMCMapReaderFactory(_ref) {
12946 var _ref$baseUrl = _ref.baseUrl,
12947 baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,
12948 _ref$isCompressed = _ref.isCompressed,
12949 isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;
12950
12951 _classCallCheck(this, DOMCMapReaderFactory);
12952
12953 this.baseUrl = baseUrl;
12954 this.isCompressed = isCompressed;
12955 }
12956
12957 _createClass(DOMCMapReaderFactory, [{
12958 key: "fetch",
12959 value: function (_fetch) {
12960 function fetch(_x) {
12961 return _fetch.apply(this, arguments);
12962 }
12963
12964 fetch.toString = function () {
12965 return _fetch.toString();
12966 };
12967
12968 return fetch;
12969 }(
12970 /*#__PURE__*/
12971 function () {
12972 var _ref3 = _asyncToGenerator(
12973 /*#__PURE__*/
12974 _regenerator["default"].mark(function _callee2(_ref2) {
12975 var _this = this;
12976
12977 var name, url, compressionType;
12978 return _regenerator["default"].wrap(function _callee2$(_context2) {
12979 while (1) {
12980 switch (_context2.prev = _context2.next) {
12981 case 0:
12982 name = _ref2.name;
12983
12984 if (this.baseUrl) {
12985 _context2.next = 3;
12986 break;
12987 }
12988
12989 throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
12990
12991 case 3:
12992 if (name) {
12993 _context2.next = 5;
12994 break;
12995 }
12996
12997 throw new Error('CMap name must be specified.');
12998
12999 case 5:
13000 url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
13001 compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
13002
13003 if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {
13004 _context2.next = 9;
13005 break;
13006 }
13007
13008 return _context2.abrupt("return", fetch(url).then(
13009 /*#__PURE__*/
13010 function () {
13011 var _ref4 = _asyncToGenerator(
13012 /*#__PURE__*/
13013 _regenerator["default"].mark(function _callee(response) {
13014 var cMapData;
13015 return _regenerator["default"].wrap(function _callee$(_context) {
13016 while (1) {
13017 switch (_context.prev = _context.next) {
13018 case 0:
13019 if (response.ok) {
13020 _context.next = 2;
13021 break;
13022 }
13023
13024 throw new Error(response.statusText);
13025
13026 case 2:
13027 if (!_this.isCompressed) {
13028 _context.next = 10;
13029 break;
13030 }
13031
13032 _context.t0 = Uint8Array;
13033 _context.next = 6;
13034 return response.arrayBuffer();
13035
13036 case 6:
13037 _context.t1 = _context.sent;
13038 cMapData = new _context.t0(_context.t1);
13039 _context.next = 15;
13040 break;
13041
13042 case 10:
13043 _context.t2 = _util.stringToBytes;
13044 _context.next = 13;
13045 return response.text();
13046
13047 case 13:
13048 _context.t3 = _context.sent;
13049 cMapData = (0, _context.t2)(_context.t3);
13050
13051 case 15:
13052 return _context.abrupt("return", {
13053 cMapData: cMapData,
13054 compressionType: compressionType
13055 });
13056
13057 case 16:
13058 case "end":
13059 return _context.stop();
13060 }
13061 }
13062 }, _callee);
13063 }));
13064
13065 return function (_x3) {
13066 return _ref4.apply(this, arguments);
13067 };
13068 }())["catch"](function (reason) {
13069 throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
13070 }));
13071
13072 case 9:
13073 return _context2.abrupt("return", new Promise(function (resolve, reject) {
13074 var request = new XMLHttpRequest();
13075 request.open('GET', url, true);
13076
13077 if (_this.isCompressed) {
13078 request.responseType = 'arraybuffer';
13079 }
13080
13081 request.onreadystatechange = function () {
13082 if (request.readyState !== XMLHttpRequest.DONE) {
13083 return;
13084 }
13085
13086 if (request.status === 200 || request.status === 0) {
13087 var cMapData;
13088
13089 if (_this.isCompressed && request.response) {
13090 cMapData = new Uint8Array(request.response);
13091 } else if (!_this.isCompressed && request.responseText) {
13092 cMapData = (0, _util.stringToBytes)(request.responseText);
13093 }
13094
13095 if (cMapData) {
13096 resolve({
13097 cMapData: cMapData,
13098 compressionType: compressionType
13099 });
13100 return;
13101 }
13102 }
13103
13104 reject(new Error(request.statusText));
13105 };
13106
13107 request.send(null);
13108 })["catch"](function (reason) {
13109 throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
13110 }));
13111
13112 case 10:
13113 case "end":
13114 return _context2.stop();
13115 }
13116 }
13117 }, _callee2, this);
13118 }));
13119
13120 return function (_x2) {
13121 return _ref3.apply(this, arguments);
13122 };
13123 }())
13124 }]);
13125
13126 return DOMCMapReaderFactory;
13127}();
13128
13129exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
13130
13131var DOMSVGFactory =
13132/*#__PURE__*/
13133function () {
13134 function DOMSVGFactory() {
13135 _classCallCheck(this, DOMSVGFactory);
13136 }
13137
13138 _createClass(DOMSVGFactory, [{
13139 key: "create",
13140 value: function create(width, height) {
13141 (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
13142 var svg = document.createElementNS(SVG_NS, 'svg:svg');
13143 svg.setAttribute('version', '1.1');
13144 svg.setAttribute('width', width + 'px');
13145 svg.setAttribute('height', height + 'px');
13146 svg.setAttribute('preserveAspectRatio', 'none');
13147 svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
13148 return svg;
13149 }
13150 }, {
13151 key: "createElement",
13152 value: function createElement(type) {
13153 (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
13154 return document.createElementNS(SVG_NS, type);
13155 }
13156 }]);
13157
13158 return DOMSVGFactory;
13159}();
13160
13161exports.DOMSVGFactory = DOMSVGFactory;
13162
13163var PageViewport =
13164/*#__PURE__*/
13165function () {
13166 function PageViewport(_ref5) {
13167 var viewBox = _ref5.viewBox,
13168 scale = _ref5.scale,
13169 rotation = _ref5.rotation,
13170 _ref5$offsetX = _ref5.offsetX,
13171 offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX,
13172 _ref5$offsetY = _ref5.offsetY,
13173 offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,
13174 _ref5$dontFlip = _ref5.dontFlip,
13175 dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;
13176
13177 _classCallCheck(this, PageViewport);
13178
13179 this.viewBox = viewBox;
13180 this.scale = scale;
13181 this.rotation = rotation;
13182 this.offsetX = offsetX;
13183 this.offsetY = offsetY;
13184 var centerX = (viewBox[2] + viewBox[0]) / 2;
13185 var centerY = (viewBox[3] + viewBox[1]) / 2;
13186 var rotateA, rotateB, rotateC, rotateD;
13187 rotation = rotation % 360;
13188 rotation = rotation < 0 ? rotation + 360 : rotation;
13189
13190 switch (rotation) {
13191 case 180:
13192 rotateA = -1;
13193 rotateB = 0;
13194 rotateC = 0;
13195 rotateD = 1;
13196 break;
13197
13198 case 90:
13199 rotateA = 0;
13200 rotateB = 1;
13201 rotateC = 1;
13202 rotateD = 0;
13203 break;
13204
13205 case 270:
13206 rotateA = 0;
13207 rotateB = -1;
13208 rotateC = -1;
13209 rotateD = 0;
13210 break;
13211
13212 default:
13213 rotateA = 1;
13214 rotateB = 0;
13215 rotateC = 0;
13216 rotateD = -1;
13217 break;
13218 }
13219
13220 if (dontFlip) {
13221 rotateC = -rotateC;
13222 rotateD = -rotateD;
13223 }
13224
13225 var offsetCanvasX, offsetCanvasY;
13226 var width, height;
13227
13228 if (rotateA === 0) {
13229 offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
13230 offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
13231 width = Math.abs(viewBox[3] - viewBox[1]) * scale;
13232 height = Math.abs(viewBox[2] - viewBox[0]) * scale;
13233 } else {
13234 offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
13235 offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
13236 width = Math.abs(viewBox[2] - viewBox[0]) * scale;
13237 height = Math.abs(viewBox[3] - viewBox[1]) * scale;
13238 }
13239
13240 this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
13241 this.width = width;
13242 this.height = height;
13243 }
13244
13245 _createClass(PageViewport, [{
13246 key: "clone",
13247 value: function clone() {
13248 var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13249 _ref6$scale = _ref6.scale,
13250 scale = _ref6$scale === void 0 ? this.scale : _ref6$scale,
13251 _ref6$rotation = _ref6.rotation,
13252 rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation,
13253 _ref6$dontFlip = _ref6.dontFlip,
13254 dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip;
13255
13256 return new PageViewport({
13257 viewBox: this.viewBox.slice(),
13258 scale: scale,
13259 rotation: rotation,
13260 offsetX: this.offsetX,
13261 offsetY: this.offsetY,
13262 dontFlip: dontFlip
13263 });
13264 }
13265 }, {
13266 key: "convertToViewportPoint",
13267 value: function convertToViewportPoint(x, y) {
13268 return _util.Util.applyTransform([x, y], this.transform);
13269 }
13270 }, {
13271 key: "convertToViewportRectangle",
13272 value: function convertToViewportRectangle(rect) {
13273 var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
13274
13275 var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
13276
13277 return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
13278 }
13279 }, {
13280 key: "convertToPdfPoint",
13281 value: function convertToPdfPoint(x, y) {
13282 return _util.Util.applyInverseTransform([x, y], this.transform);
13283 }
13284 }]);
13285
13286 return PageViewport;
13287}();
13288
13289exports.PageViewport = PageViewport;
13290
13291var RenderingCancelledException = function RenderingCancelledException() {
13292 function RenderingCancelledException(msg, type) {
13293 this.message = msg;
13294 this.type = type;
13295 }
13296
13297 RenderingCancelledException.prototype = new Error();
13298 RenderingCancelledException.prototype.name = 'RenderingCancelledException';
13299 RenderingCancelledException.constructor = RenderingCancelledException;
13300 return RenderingCancelledException;
13301}();
13302
13303exports.RenderingCancelledException = RenderingCancelledException;
13304var LinkTarget = {
13305 NONE: 0,
13306 SELF: 1,
13307 BLANK: 2,
13308 PARENT: 3,
13309 TOP: 4
13310};
13311exports.LinkTarget = LinkTarget;
13312var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
13313
13314function addLinkAttributes(link) {
13315 var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
13316 url = _ref7.url,
13317 target = _ref7.target,
13318 rel = _ref7.rel;
13319
13320 link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
13321
13322 if (url) {
13323 var LinkTargetValues = Object.values(LinkTarget);
13324 var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
13325 link.target = LinkTargetStringMap[targetIndex];
13326 link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
13327 }
13328}
13329
13330function getFilenameFromUrl(url) {
13331 var anchor = url.indexOf('#');
13332 var query = url.indexOf('?');
13333 var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
13334 return url.substring(url.lastIndexOf('/', end) + 1, end);
13335}
13336
13337var StatTimer =
13338/*#__PURE__*/
13339function () {
13340 function StatTimer() {
13341 var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
13342
13343 _classCallCheck(this, StatTimer);
13344
13345 this.enabled = !!enable;
13346 this.started = Object.create(null);
13347 this.times = [];
13348 }
13349
13350 _createClass(StatTimer, [{
13351 key: "time",
13352 value: function time(name) {
13353 if (!this.enabled) {
13354 return;
13355 }
13356
13357 if (name in this.started) {
13358 (0, _util.warn)('Timer is already running for ' + name);
13359 }
13360
13361 this.started[name] = Date.now();
13362 }
13363 }, {
13364 key: "timeEnd",
13365 value: function timeEnd(name) {
13366 if (!this.enabled) {
13367 return;
13368 }
13369
13370 if (!(name in this.started)) {
13371 (0, _util.warn)('Timer has not been started for ' + name);
13372 }
13373
13374 this.times.push({
13375 'name': name,
13376 'start': this.started[name],
13377 'end': Date.now()
13378 });
13379 delete this.started[name];
13380 }
13381 }, {
13382 key: "toString",
13383 value: function toString() {
13384 var out = '',
13385 longest = 0;
13386 var _iteratorNormalCompletion = true;
13387 var _didIteratorError = false;
13388 var _iteratorError = undefined;
13389
13390 try {
13391 for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
13392 var time = _step.value;
13393 var name = time.name;
13394
13395 if (name.length > longest) {
13396 longest = name.length;
13397 }
13398 }
13399 } catch (err) {
13400 _didIteratorError = true;
13401 _iteratorError = err;
13402 } finally {
13403 try {
13404 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
13405 _iterator["return"]();
13406 }
13407 } finally {
13408 if (_didIteratorError) {
13409 throw _iteratorError;
13410 }
13411 }
13412 }
13413
13414 var _iteratorNormalCompletion2 = true;
13415 var _didIteratorError2 = false;
13416 var _iteratorError2 = undefined;
13417
13418 try {
13419 for (var _iterator2 = this.times[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
13420 var _time = _step2.value;
13421 var duration = _time.end - _time.start;
13422 out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n");
13423 }
13424 } catch (err) {
13425 _didIteratorError2 = true;
13426 _iteratorError2 = err;
13427 } finally {
13428 try {
13429 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
13430 _iterator2["return"]();
13431 }
13432 } finally {
13433 if (_didIteratorError2) {
13434 throw _iteratorError2;
13435 }
13436 }
13437 }
13438
13439 return out;
13440 }
13441 }]);
13442
13443 return StatTimer;
13444}();
13445
13446exports.StatTimer = StatTimer;
13447
13448var DummyStatTimer =
13449/*#__PURE__*/
13450function () {
13451 function DummyStatTimer() {
13452 _classCallCheck(this, DummyStatTimer);
13453
13454 (0, _util.unreachable)('Cannot initialize DummyStatTimer.');
13455 }
13456
13457 _createClass(DummyStatTimer, null, [{
13458 key: "time",
13459 value: function time(name) {}
13460 }, {
13461 key: "timeEnd",
13462 value: function timeEnd(name) {}
13463 }, {
13464 key: "toString",
13465 value: function toString() {
13466 return '';
13467 }
13468 }]);
13469
13470 return DummyStatTimer;
13471}();
13472
13473exports.DummyStatTimer = DummyStatTimer;
13474
13475function isFetchSupported() {
13476 return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined';
13477}
13478
13479function isValidFetchUrl(url, baseUrl) {
13480 try {
13481 var _ref8 = baseUrl ? new _util.URL(url, baseUrl) : new _util.URL(url),
13482 protocol = _ref8.protocol;
13483
13484 return protocol === 'http:' || protocol === 'https:';
13485 } catch (ex) {
13486 return false;
13487 }
13488}
13489
13490function loadScript(src) {
13491 return new Promise(function (resolve, reject) {
13492 var script = document.createElement('script');
13493 script.src = src;
13494 script.onload = resolve;
13495
13496 script.onerror = function () {
13497 reject(new Error("Cannot load script at: ".concat(script.src)));
13498 };
13499
13500 (document.head || document.documentElement).appendChild(script);
13501 });
13502}
13503
13504function deprecated(details) {
13505 console.log('Deprecated API usage: ' + details);
13506}
13507
13508function releaseImageResources(img) {
13509 (0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.');
13510 var url = img.src;
13511
13512 if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) {
13513 _util.URL.revokeObjectURL(url);
13514 }
13515
13516 img.removeAttribute('src');
13517}
13518
13519var pdfDateStringRegex;
13520
13521var PDFDateString =
13522/*#__PURE__*/
13523function () {
13524 function PDFDateString() {
13525 _classCallCheck(this, PDFDateString);
13526 }
13527
13528 _createClass(PDFDateString, null, [{
13529 key: "toDateObject",
13530 value: function toDateObject(input) {
13531 if (!input || !(0, _util.isString)(input)) {
13532 return null;
13533 }
13534
13535 if (!pdfDateStringRegex) {
13536 pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?');
13537 }
13538
13539 var matches = pdfDateStringRegex.exec(input);
13540
13541 if (!matches) {
13542 return null;
13543 }
13544
13545 var year = parseInt(matches[1], 10);
13546 var month = parseInt(matches[2], 10);
13547 month = month >= 1 && month <= 12 ? month - 1 : 0;
13548 var day = parseInt(matches[3], 10);
13549 day = day >= 1 && day <= 31 ? day : 1;
13550 var hour = parseInt(matches[4], 10);
13551 hour = hour >= 0 && hour <= 23 ? hour : 0;
13552 var minute = parseInt(matches[5], 10);
13553 minute = minute >= 0 && minute <= 59 ? minute : 0;
13554 var second = parseInt(matches[6], 10);
13555 second = second >= 0 && second <= 59 ? second : 0;
13556 var universalTimeRelation = matches[7] || 'Z';
13557 var offsetHour = parseInt(matches[8], 10);
13558 offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
13559 var offsetMinute = parseInt(matches[9], 10) || 0;
13560 offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
13561
13562 if (universalTimeRelation === '-') {
13563 hour += offsetHour;
13564 minute += offsetMinute;
13565 } else if (universalTimeRelation === '+') {
13566 hour -= offsetHour;
13567 minute -= offsetMinute;
13568 }
13569
13570 return new Date(Date.UTC(year, month, day, hour, minute, second));
13571 }
13572 }]);
13573
13574 return PDFDateString;
13575}();
13576
13577exports.PDFDateString = PDFDateString;
13578
13579/***/ }),
13580/* 152 */
13581/***/ (function(module, exports, __w_pdfjs_require__) {
13582
13583"use strict";
13584
13585
13586Object.defineProperty(exports, "__esModule", {
13587 value: true
13588});
13589exports.FontLoader = exports.FontFaceObject = void 0;
13590
13591var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
13592
13593var _util = __w_pdfjs_require__(1);
13594
13595function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13596
13597function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13598
13599function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
13600
13601function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13602
13603function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
13604
13605function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
13606
13607function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13608
13609function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
13610
13611function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
13612
13613function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13614
13615function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
13616
13617function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13618
13619var BaseFontLoader =
13620/*#__PURE__*/
13621function () {
13622 function BaseFontLoader(_ref) {
13623 var docId = _ref.docId,
13624 onUnsupportedFeature = _ref.onUnsupportedFeature;
13625
13626 _classCallCheck(this, BaseFontLoader);
13627
13628 if (this.constructor === BaseFontLoader) {
13629 (0, _util.unreachable)('Cannot initialize BaseFontLoader.');
13630 }
13631
13632 this.docId = docId;
13633 this._onUnsupportedFeature = onUnsupportedFeature;
13634 this.nativeFontFaces = [];
13635 this.styleElement = null;
13636 }
13637
13638 _createClass(BaseFontLoader, [{
13639 key: "addNativeFontFace",
13640 value: function addNativeFontFace(nativeFontFace) {
13641 this.nativeFontFaces.push(nativeFontFace);
13642 document.fonts.add(nativeFontFace);
13643 }
13644 }, {
13645 key: "insertRule",
13646 value: function insertRule(rule) {
13647 var styleElement = this.styleElement;
13648
13649 if (!styleElement) {
13650 styleElement = this.styleElement = document.createElement('style');
13651 styleElement.id = "PDFJS_FONT_STYLE_TAG_".concat(this.docId);
13652 document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement);
13653 }
13654
13655 var styleSheet = styleElement.sheet;
13656 styleSheet.insertRule(rule, styleSheet.cssRules.length);
13657 }
13658 }, {
13659 key: "clear",
13660 value: function clear() {
13661 this.nativeFontFaces.forEach(function (nativeFontFace) {
13662 document.fonts["delete"](nativeFontFace);
13663 });
13664 this.nativeFontFaces.length = 0;
13665
13666 if (this.styleElement) {
13667 this.styleElement.remove();
13668 this.styleElement = null;
13669 }
13670 }
13671 }, {
13672 key: "bind",
13673 value: function () {
13674 var _bind = _asyncToGenerator(
13675 /*#__PURE__*/
13676 _regenerator["default"].mark(function _callee(font) {
13677 var _this = this;
13678
13679 var nativeFontFace, rule;
13680 return _regenerator["default"].wrap(function _callee$(_context) {
13681 while (1) {
13682 switch (_context.prev = _context.next) {
13683 case 0:
13684 if (!(font.attached || font.missingFile)) {
13685 _context.next = 2;
13686 break;
13687 }
13688
13689 return _context.abrupt("return", undefined);
13690
13691 case 2:
13692 font.attached = true;
13693
13694 if (!this.isFontLoadingAPISupported) {
13695 _context.next = 19;
13696 break;
13697 }
13698
13699 nativeFontFace = font.createNativeFontFace();
13700
13701 if (!nativeFontFace) {
13702 _context.next = 18;
13703 break;
13704 }
13705
13706 this.addNativeFontFace(nativeFontFace);
13707 _context.prev = 7;
13708 _context.next = 10;
13709 return nativeFontFace.loaded;
13710
13711 case 10:
13712 _context.next = 18;
13713 break;
13714
13715 case 12:
13716 _context.prev = 12;
13717 _context.t0 = _context["catch"](7);
13718
13719 this._onUnsupportedFeature({
13720 featureId: _util.UNSUPPORTED_FEATURES.font
13721 });
13722
13723 (0, _util.warn)("Failed to load font '".concat(nativeFontFace.family, "': '").concat(_context.t0, "'."));
13724 font.disableFontFace = true;
13725 throw _context.t0;
13726
13727 case 18:
13728 return _context.abrupt("return", undefined);
13729
13730 case 19:
13731 rule = font.createFontFaceRule();
13732
13733 if (!rule) {
13734 _context.next = 25;
13735 break;
13736 }
13737
13738 this.insertRule(rule);
13739
13740 if (!this.isSyncFontLoadingSupported) {
13741 _context.next = 24;
13742 break;
13743 }
13744
13745 return _context.abrupt("return", undefined);
13746
13747 case 24:
13748 return _context.abrupt("return", new Promise(function (resolve) {
13749 var request = _this._queueLoadingCallback(resolve);
13750
13751 _this._prepareFontLoadEvent([rule], [font], request);
13752 }));
13753
13754 case 25:
13755 return _context.abrupt("return", undefined);
13756
13757 case 26:
13758 case "end":
13759 return _context.stop();
13760 }
13761 }
13762 }, _callee, this, [[7, 12]]);
13763 }));
13764
13765 function bind(_x) {
13766 return _bind.apply(this, arguments);
13767 }
13768
13769 return bind;
13770 }()
13771 }, {
13772 key: "_queueLoadingCallback",
13773 value: function _queueLoadingCallback(callback) {
13774 (0, _util.unreachable)('Abstract method `_queueLoadingCallback`.');
13775 }
13776 }, {
13777 key: "_prepareFontLoadEvent",
13778 value: function _prepareFontLoadEvent(rules, fontsToLoad, request) {
13779 (0, _util.unreachable)('Abstract method `_prepareFontLoadEvent`.');
13780 }
13781 }, {
13782 key: "isFontLoadingAPISupported",
13783 get: function get() {
13784 (0, _util.unreachable)('Abstract method `isFontLoadingAPISupported`.');
13785 }
13786 }, {
13787 key: "isSyncFontLoadingSupported",
13788 get: function get() {
13789 (0, _util.unreachable)('Abstract method `isSyncFontLoadingSupported`.');
13790 }
13791 }, {
13792 key: "_loadTestFont",
13793 get: function get() {
13794 (0, _util.unreachable)('Abstract method `_loadTestFont`.');
13795 }
13796 }]);
13797
13798 return BaseFontLoader;
13799}();
13800
13801var FontLoader;
13802exports.FontLoader = FontLoader;
13803{
13804 exports.FontLoader = FontLoader =
13805 /*#__PURE__*/
13806 function (_BaseFontLoader) {
13807 _inherits(GenericFontLoader, _BaseFontLoader);
13808
13809 function GenericFontLoader(docId) {
13810 var _this2;
13811
13812 _classCallCheck(this, GenericFontLoader);
13813
13814 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(GenericFontLoader).call(this, docId));
13815 _this2.loadingContext = {
13816 requests: [],
13817 nextRequestId: 0
13818 };
13819 _this2.loadTestFontId = 0;
13820 return _this2;
13821 }
13822
13823 _createClass(GenericFontLoader, [{
13824 key: "_queueLoadingCallback",
13825 value: function _queueLoadingCallback(callback) {
13826 function completeRequest() {
13827 (0, _util.assert)(!request.done, 'completeRequest() cannot be called twice.');
13828 request.done = true;
13829
13830 while (context.requests.length > 0 && context.requests[0].done) {
13831 var otherRequest = context.requests.shift();
13832 setTimeout(otherRequest.callback, 0);
13833 }
13834 }
13835
13836 var context = this.loadingContext;
13837 var request = {
13838 id: "pdfjs-font-loading-".concat(context.nextRequestId++),
13839 done: false,
13840 complete: completeRequest,
13841 callback: callback
13842 };
13843 context.requests.push(request);
13844 return request;
13845 }
13846 }, {
13847 key: "_prepareFontLoadEvent",
13848 value: function _prepareFontLoadEvent(rules, fonts, request) {
13849 function int32(data, offset) {
13850 return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
13851 }
13852
13853 function spliceString(s, offset, remove, insert) {
13854 var chunk1 = s.substring(0, offset);
13855 var chunk2 = s.substring(offset + remove);
13856 return chunk1 + insert + chunk2;
13857 }
13858
13859 var i, ii;
13860 var canvas = document.createElement('canvas');
13861 canvas.width = 1;
13862 canvas.height = 1;
13863 var ctx = canvas.getContext('2d');
13864 var called = 0;
13865
13866 function isFontReady(name, callback) {
13867 called++;
13868
13869 if (called > 30) {
13870 (0, _util.warn)('Load test font never loaded.');
13871 callback();
13872 return;
13873 }
13874
13875 ctx.font = '30px ' + name;
13876 ctx.fillText('.', 0, 20);
13877 var imageData = ctx.getImageData(0, 0, 1, 1);
13878
13879 if (imageData.data[3] > 0) {
13880 callback();
13881 return;
13882 }
13883
13884 setTimeout(isFontReady.bind(null, name, callback));
13885 }
13886
13887 var loadTestFontId = "lt".concat(Date.now()).concat(this.loadTestFontId++);
13888 var data = this._loadTestFont;
13889 var COMMENT_OFFSET = 976;
13890 data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
13891 var CFF_CHECKSUM_OFFSET = 16;
13892 var XXXX_VALUE = 0x58585858;
13893 var checksum = int32(data, CFF_CHECKSUM_OFFSET);
13894
13895 for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
13896 checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
13897 }
13898
13899 if (i < loadTestFontId.length) {
13900 checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0;
13901 }
13902
13903 data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
13904 var url = "url(data:font/opentype;base64,".concat(btoa(data), ");");
13905 var rule = "@font-face {font-family:\"".concat(loadTestFontId, "\";src:").concat(url, "}");
13906 this.insertRule(rule);
13907 var names = [];
13908
13909 for (i = 0, ii = fonts.length; i < ii; i++) {
13910 names.push(fonts[i].loadedName);
13911 }
13912
13913 names.push(loadTestFontId);
13914 var div = document.createElement('div');
13915 div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;');
13916
13917 for (i = 0, ii = names.length; i < ii; ++i) {
13918 var span = document.createElement('span');
13919 span.textContent = 'Hi';
13920 span.style.fontFamily = names[i];
13921 div.appendChild(span);
13922 }
13923
13924 document.body.appendChild(div);
13925 isFontReady(loadTestFontId, function () {
13926 document.body.removeChild(div);
13927 request.complete();
13928 });
13929 }
13930 }, {
13931 key: "isFontLoadingAPISupported",
13932 get: function get() {
13933 var supported = typeof document !== 'undefined' && !!document.fonts;
13934
13935 if (supported && typeof navigator !== 'undefined') {
13936 var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
13937
13938 if (m && m[1] < 63) {
13939 supported = false;
13940 }
13941 }
13942
13943 return (0, _util.shadow)(this, 'isFontLoadingAPISupported', supported);
13944 }
13945 }, {
13946 key: "isSyncFontLoadingSupported",
13947 get: function get() {
13948 var supported = false;
13949
13950 if (typeof navigator === 'undefined') {
13951 supported = true;
13952 } else {
13953 var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
13954
13955 if (m && m[1] >= 14) {
13956 supported = true;
13957 }
13958 }
13959
13960 return (0, _util.shadow)(this, 'isSyncFontLoadingSupported', supported);
13961 }
13962 }, {
13963 key: "_loadTestFont",
13964 get: function get() {
13965 var getLoadTestFont = function getLoadTestFont() {
13966 return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' + 'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' + 'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' + 'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' + 'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' + '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' + 'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' + 'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' + 'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' + 'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' + 'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' + 'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' + 'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' + 'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' + 'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' + 'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' + 'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');
13967 };
13968
13969 return (0, _util.shadow)(this, '_loadTestFont', getLoadTestFont());
13970 }
13971 }]);
13972
13973 return GenericFontLoader;
13974 }(BaseFontLoader);
13975}
13976var IsEvalSupportedCached = {
13977 get value() {
13978 return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
13979 }
13980
13981};
13982
13983var FontFaceObject =
13984/*#__PURE__*/
13985function () {
13986 function FontFaceObject(translatedData, _ref2) {
13987 var _ref2$isEvalSupported = _ref2.isEvalSupported,
13988 isEvalSupported = _ref2$isEvalSupported === void 0 ? true : _ref2$isEvalSupported,
13989 _ref2$disableFontFace = _ref2.disableFontFace,
13990 disableFontFace = _ref2$disableFontFace === void 0 ? false : _ref2$disableFontFace,
13991 _ref2$ignoreErrors = _ref2.ignoreErrors,
13992 ignoreErrors = _ref2$ignoreErrors === void 0 ? false : _ref2$ignoreErrors,
13993 _ref2$onUnsupportedFe = _ref2.onUnsupportedFeature,
13994 onUnsupportedFeature = _ref2$onUnsupportedFe === void 0 ? null : _ref2$onUnsupportedFe,
13995 _ref2$fontRegistry = _ref2.fontRegistry,
13996 fontRegistry = _ref2$fontRegistry === void 0 ? null : _ref2$fontRegistry;
13997
13998 _classCallCheck(this, FontFaceObject);
13999
14000 this.compiledGlyphs = Object.create(null);
14001
14002 for (var i in translatedData) {
14003 this[i] = translatedData[i];
14004 }
14005
14006 this.isEvalSupported = isEvalSupported !== false;
14007 this.disableFontFace = disableFontFace === true;
14008 this.ignoreErrors = ignoreErrors === true;
14009 this._onUnsupportedFeature = onUnsupportedFeature;
14010 this.fontRegistry = fontRegistry;
14011 }
14012
14013 _createClass(FontFaceObject, [{
14014 key: "createNativeFontFace",
14015 value: function createNativeFontFace() {
14016 if (!this.data || this.disableFontFace) {
14017 return null;
14018 }
14019
14020 var nativeFontFace = new FontFace(this.loadedName, this.data, {});
14021
14022 if (this.fontRegistry) {
14023 this.fontRegistry.registerFont(this);
14024 }
14025
14026 return nativeFontFace;
14027 }
14028 }, {
14029 key: "createFontFaceRule",
14030 value: function createFontFaceRule() {
14031 if (!this.data || this.disableFontFace) {
14032 return null;
14033 }
14034
14035 var data = (0, _util.bytesToString)(new Uint8Array(this.data));
14036 var url = "url(data:".concat(this.mimetype, ";base64,").concat(btoa(data), ");");
14037 var rule = "@font-face {font-family:\"".concat(this.loadedName, "\";src:").concat(url, "}");
14038
14039 if (this.fontRegistry) {
14040 this.fontRegistry.registerFont(this, url);
14041 }
14042
14043 return rule;
14044 }
14045 }, {
14046 key: "getPathGenerator",
14047 value: function getPathGenerator(objs, character) {
14048 if (this.compiledGlyphs[character] !== undefined) {
14049 return this.compiledGlyphs[character];
14050 }
14051
14052 var cmds, current;
14053
14054 try {
14055 cmds = objs.get(this.loadedName + '_path_' + character);
14056 } catch (ex) {
14057 if (!this.ignoreErrors) {
14058 throw ex;
14059 }
14060
14061 if (this._onUnsupportedFeature) {
14062 this._onUnsupportedFeature({
14063 featureId: _util.UNSUPPORTED_FEATURES.font
14064 });
14065 }
14066
14067 (0, _util.warn)("getPathGenerator - ignoring character: \"".concat(ex, "\"."));
14068 return this.compiledGlyphs[character] = function (c, size) {};
14069 }
14070
14071 if (this.isEvalSupported && IsEvalSupportedCached.value) {
14072 var args,
14073 js = '';
14074
14075 for (var i = 0, ii = cmds.length; i < ii; i++) {
14076 current = cmds[i];
14077
14078 if (current.args !== undefined) {
14079 args = current.args.join(',');
14080 } else {
14081 args = '';
14082 }
14083
14084 js += 'c.' + current.cmd + '(' + args + ');\n';
14085 }
14086
14087 return this.compiledGlyphs[character] = new Function('c', 'size', js);
14088 }
14089
14090 return this.compiledGlyphs[character] = function (c, size) {
14091 for (var _i = 0, _ii = cmds.length; _i < _ii; _i++) {
14092 current = cmds[_i];
14093
14094 if (current.cmd === 'scale') {
14095 current.args = [size, -size];
14096 }
14097
14098 c[current.cmd].apply(c, current.args);
14099 }
14100 };
14101 }
14102 }]);
14103
14104 return FontFaceObject;
14105}();
14106
14107exports.FontFaceObject = FontFaceObject;
14108
14109/***/ }),
14110/* 153 */
14111/***/ (function(module, exports, __w_pdfjs_require__) {
14112
14113"use strict";
14114
14115
14116var compatibilityParams = Object.create(null);
14117{
14118 var isNodeJS = __w_pdfjs_require__(4);
14119
14120 var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
14121 var isIE = /Trident/.test(userAgent);
14122 var isIOSChrome = /CriOS/.test(userAgent);
14123
14124 (function checkOnBlobSupport() {
14125 if (isIE || isIOSChrome) {
14126 compatibilityParams.disableCreateObjectURL = true;
14127 }
14128 })();
14129
14130 (function checkFontFaceAndImage() {
14131 if (isNodeJS()) {
14132 compatibilityParams.disableFontFace = true;
14133 compatibilityParams.nativeImageDecoderSupport = 'none';
14134 }
14135 })();
14136}
14137exports.apiCompatibilityParams = Object.freeze(compatibilityParams);
14138
14139/***/ }),
14140/* 154 */
14141/***/ (function(module, exports, __w_pdfjs_require__) {
14142
14143"use strict";
14144
14145
14146Object.defineProperty(exports, "__esModule", {
14147 value: true
14148});
14149exports.CanvasGraphics = void 0;
14150
14151var _util = __w_pdfjs_require__(1);
14152
14153var _pattern_helper = __w_pdfjs_require__(155);
14154
14155var MIN_FONT_SIZE = 16;
14156var MAX_FONT_SIZE = 100;
14157var MAX_GROUP_SIZE = 4096;
14158var MIN_WIDTH_FACTOR = 0.65;
14159var COMPILE_TYPE3_GLYPHS = true;
14160var MAX_SIZE_TO_COMPILE = 1000;
14161var FULL_CHUNK_HEIGHT = 16;
14162var IsLittleEndianCached = {
14163 get value() {
14164 return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)());
14165 }
14166
14167};
14168
14169function addContextCurrentTransform(ctx) {
14170 if (!ctx.mozCurrentTransform) {
14171 ctx._originalSave = ctx.save;
14172 ctx._originalRestore = ctx.restore;
14173 ctx._originalRotate = ctx.rotate;
14174 ctx._originalScale = ctx.scale;
14175 ctx._originalTranslate = ctx.translate;
14176 ctx._originalTransform = ctx.transform;
14177 ctx._originalSetTransform = ctx.setTransform;
14178 ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
14179 ctx._transformStack = [];
14180 Object.defineProperty(ctx, 'mozCurrentTransform', {
14181 get: function getCurrentTransform() {
14182 return this._transformMatrix;
14183 }
14184 });
14185 Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
14186 get: function getCurrentTransformInverse() {
14187 var m = this._transformMatrix;
14188 var a = m[0],
14189 b = m[1],
14190 c = m[2],
14191 d = m[3],
14192 e = m[4],
14193 f = m[5];
14194 var ad_bc = a * d - b * c;
14195 var bc_ad = b * c - a * d;
14196 return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
14197 }
14198 });
14199
14200 ctx.save = function ctxSave() {
14201 var old = this._transformMatrix;
14202
14203 this._transformStack.push(old);
14204
14205 this._transformMatrix = old.slice(0, 6);
14206
14207 this._originalSave();
14208 };
14209
14210 ctx.restore = function ctxRestore() {
14211 var prev = this._transformStack.pop();
14212
14213 if (prev) {
14214 this._transformMatrix = prev;
14215
14216 this._originalRestore();
14217 }
14218 };
14219
14220 ctx.translate = function ctxTranslate(x, y) {
14221 var m = this._transformMatrix;
14222 m[4] = m[0] * x + m[2] * y + m[4];
14223 m[5] = m[1] * x + m[3] * y + m[5];
14224
14225 this._originalTranslate(x, y);
14226 };
14227
14228 ctx.scale = function ctxScale(x, y) {
14229 var m = this._transformMatrix;
14230 m[0] = m[0] * x;
14231 m[1] = m[1] * x;
14232 m[2] = m[2] * y;
14233 m[3] = m[3] * y;
14234
14235 this._originalScale(x, y);
14236 };
14237
14238 ctx.transform = function ctxTransform(a, b, c, d, e, f) {
14239 var m = this._transformMatrix;
14240 this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
14241
14242 ctx._originalTransform(a, b, c, d, e, f);
14243 };
14244
14245 ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
14246 this._transformMatrix = [a, b, c, d, e, f];
14247
14248 ctx._originalSetTransform(a, b, c, d, e, f);
14249 };
14250
14251 ctx.rotate = function ctxRotate(angle) {
14252 var cosValue = Math.cos(angle);
14253 var sinValue = Math.sin(angle);
14254 var m = this._transformMatrix;
14255 this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
14256
14257 this._originalRotate(angle);
14258 };
14259 }
14260}
14261
14262var CachedCanvases = function CachedCanvasesClosure() {
14263 function CachedCanvases(canvasFactory) {
14264 this.canvasFactory = canvasFactory;
14265 this.cache = Object.create(null);
14266 }
14267
14268 CachedCanvases.prototype = {
14269 getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
14270 var canvasEntry;
14271
14272 if (this.cache[id] !== undefined) {
14273 canvasEntry = this.cache[id];
14274 this.canvasFactory.reset(canvasEntry, width, height);
14275 canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
14276 } else {
14277 canvasEntry = this.canvasFactory.create(width, height);
14278 this.cache[id] = canvasEntry;
14279 }
14280
14281 if (trackTransform) {
14282 addContextCurrentTransform(canvasEntry.context);
14283 }
14284
14285 return canvasEntry;
14286 },
14287 clear: function clear() {
14288 for (var id in this.cache) {
14289 var canvasEntry = this.cache[id];
14290 this.canvasFactory.destroy(canvasEntry);
14291 delete this.cache[id];
14292 }
14293 }
14294 };
14295 return CachedCanvases;
14296}();
14297
14298function compileType3Glyph(imgData) {
14299 var POINT_TO_PROCESS_LIMIT = 1000;
14300 var width = imgData.width,
14301 height = imgData.height;
14302 var i,
14303 j,
14304 j0,
14305 width1 = width + 1;
14306 var points = new Uint8Array(width1 * (height + 1));
14307 var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
14308 var lineSize = width + 7 & ~7,
14309 data0 = imgData.data;
14310 var data = new Uint8Array(lineSize * height),
14311 pos = 0,
14312 ii;
14313
14314 for (i = 0, ii = data0.length; i < ii; i++) {
14315 var mask = 128,
14316 elem = data0[i];
14317
14318 while (mask > 0) {
14319 data[pos++] = elem & mask ? 0 : 255;
14320 mask >>= 1;
14321 }
14322 }
14323
14324 var count = 0;
14325 pos = 0;
14326
14327 if (data[pos] !== 0) {
14328 points[0] = 1;
14329 ++count;
14330 }
14331
14332 for (j = 1; j < width; j++) {
14333 if (data[pos] !== data[pos + 1]) {
14334 points[j] = data[pos] ? 2 : 1;
14335 ++count;
14336 }
14337
14338 pos++;
14339 }
14340
14341 if (data[pos] !== 0) {
14342 points[j] = 2;
14343 ++count;
14344 }
14345
14346 for (i = 1; i < height; i++) {
14347 pos = i * lineSize;
14348 j0 = i * width1;
14349
14350 if (data[pos - lineSize] !== data[pos]) {
14351 points[j0] = data[pos] ? 1 : 8;
14352 ++count;
14353 }
14354
14355 var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
14356
14357 for (j = 1; j < width; j++) {
14358 sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
14359
14360 if (POINT_TYPES[sum]) {
14361 points[j0 + j] = POINT_TYPES[sum];
14362 ++count;
14363 }
14364
14365 pos++;
14366 }
14367
14368 if (data[pos - lineSize] !== data[pos]) {
14369 points[j0 + j] = data[pos] ? 2 : 4;
14370 ++count;
14371 }
14372
14373 if (count > POINT_TO_PROCESS_LIMIT) {
14374 return null;
14375 }
14376 }
14377
14378 pos = lineSize * (height - 1);
14379 j0 = i * width1;
14380
14381 if (data[pos] !== 0) {
14382 points[j0] = 8;
14383 ++count;
14384 }
14385
14386 for (j = 1; j < width; j++) {
14387 if (data[pos] !== data[pos + 1]) {
14388 points[j0 + j] = data[pos] ? 4 : 8;
14389 ++count;
14390 }
14391
14392 pos++;
14393 }
14394
14395 if (data[pos] !== 0) {
14396 points[j0 + j] = 4;
14397 ++count;
14398 }
14399
14400 if (count > POINT_TO_PROCESS_LIMIT) {
14401 return null;
14402 }
14403
14404 var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
14405 var outlines = [];
14406
14407 for (i = 0; count && i <= height; i++) {
14408 var p = i * width1;
14409 var end = p + width;
14410
14411 while (p < end && !points[p]) {
14412 p++;
14413 }
14414
14415 if (p === end) {
14416 continue;
14417 }
14418
14419 var coords = [p % width1, i];
14420 var type = points[p],
14421 p0 = p,
14422 pp;
14423
14424 do {
14425 var step = steps[type];
14426
14427 do {
14428 p += step;
14429 } while (!points[p]);
14430
14431 pp = points[p];
14432
14433 if (pp !== 5 && pp !== 10) {
14434 type = pp;
14435 points[p] = 0;
14436 } else {
14437 type = pp & 0x33 * type >> 4;
14438 points[p] &= type >> 2 | type << 2;
14439 }
14440
14441 coords.push(p % width1);
14442 coords.push(p / width1 | 0);
14443
14444 if (!points[p]) {
14445 --count;
14446 }
14447 } while (p0 !== p);
14448
14449 outlines.push(coords);
14450 --i;
14451 }
14452
14453 var drawOutline = function drawOutline(c) {
14454 c.save();
14455 c.scale(1 / width, -1 / height);
14456 c.translate(0, -height);
14457 c.beginPath();
14458
14459 for (var i = 0, ii = outlines.length; i < ii; i++) {
14460 var o = outlines[i];
14461 c.moveTo(o[0], o[1]);
14462
14463 for (var j = 2, jj = o.length; j < jj; j += 2) {
14464 c.lineTo(o[j], o[j + 1]);
14465 }
14466 }
14467
14468 c.fill();
14469 c.beginPath();
14470 c.restore();
14471 };
14472
14473 return drawOutline;
14474}
14475
14476var CanvasExtraState = function CanvasExtraStateClosure() {
14477 function CanvasExtraState() {
14478 this.alphaIsShape = false;
14479 this.fontSize = 0;
14480 this.fontSizeScale = 1;
14481 this.textMatrix = _util.IDENTITY_MATRIX;
14482 this.textMatrixScale = 1;
14483 this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
14484 this.leading = 0;
14485 this.x = 0;
14486 this.y = 0;
14487 this.lineX = 0;
14488 this.lineY = 0;
14489 this.charSpacing = 0;
14490 this.wordSpacing = 0;
14491 this.textHScale = 1;
14492 this.textRenderingMode = _util.TextRenderingMode.FILL;
14493 this.textRise = 0;
14494 this.fillColor = '#000000';
14495 this.strokeColor = '#000000';
14496 this.patternFill = false;
14497 this.fillAlpha = 1;
14498 this.strokeAlpha = 1;
14499 this.lineWidth = 1;
14500 this.activeSMask = null;
14501 this.resumeSMaskCtx = null;
14502 }
14503
14504 CanvasExtraState.prototype = {
14505 clone: function CanvasExtraState_clone() {
14506 return Object.create(this);
14507 },
14508 setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
14509 this.x = x;
14510 this.y = y;
14511 }
14512 };
14513 return CanvasExtraState;
14514}();
14515
14516var CanvasGraphics = function CanvasGraphicsClosure() {
14517 var EXECUTION_TIME = 15;
14518 var EXECUTION_STEPS = 10;
14519
14520 function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer) {
14521 this.ctx = canvasCtx;
14522 this.current = new CanvasExtraState();
14523 this.stateStack = [];
14524 this.pendingClip = null;
14525 this.pendingEOFill = false;
14526 this.res = null;
14527 this.xobjs = null;
14528 this.commonObjs = commonObjs;
14529 this.objs = objs;
14530 this.canvasFactory = canvasFactory;
14531 this.webGLContext = webGLContext;
14532 this.imageLayer = imageLayer;
14533 this.groupStack = [];
14534 this.processingType3 = null;
14535 this.baseTransform = null;
14536 this.baseTransformStack = [];
14537 this.groupLevel = 0;
14538 this.smaskStack = [];
14539 this.smaskCounter = 0;
14540 this.tempSMask = null;
14541 this.cachedCanvases = new CachedCanvases(this.canvasFactory);
14542
14543 if (canvasCtx) {
14544 addContextCurrentTransform(canvasCtx);
14545 }
14546
14547 this._cachedGetSinglePixelWidth = null;
14548 }
14549
14550 function putBinaryImageData(ctx, imgData) {
14551 if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
14552 ctx.putImageData(imgData, 0, 0);
14553 return;
14554 }
14555
14556 var height = imgData.height,
14557 width = imgData.width;
14558 var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
14559 var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
14560 var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
14561 var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
14562 var srcPos = 0,
14563 destPos;
14564 var src = imgData.data;
14565 var dest = chunkImgData.data;
14566 var i, j, thisChunkHeight, elemsInThisChunk;
14567
14568 if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
14569 var srcLength = src.byteLength;
14570 var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
14571 var dest32DataLength = dest32.length;
14572 var fullSrcDiff = width + 7 >> 3;
14573 var white = 0xFFFFFFFF;
14574 var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;
14575
14576 for (i = 0; i < totalChunks; i++) {
14577 thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
14578 destPos = 0;
14579
14580 for (j = 0; j < thisChunkHeight; j++) {
14581 var srcDiff = srcLength - srcPos;
14582 var k = 0;
14583 var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
14584 var kEndUnrolled = kEnd & ~7;
14585 var mask = 0;
14586 var srcByte = 0;
14587
14588 for (; k < kEndUnrolled; k += 8) {
14589 srcByte = src[srcPos++];
14590 dest32[destPos++] = srcByte & 128 ? white : black;
14591 dest32[destPos++] = srcByte & 64 ? white : black;
14592 dest32[destPos++] = srcByte & 32 ? white : black;
14593 dest32[destPos++] = srcByte & 16 ? white : black;
14594 dest32[destPos++] = srcByte & 8 ? white : black;
14595 dest32[destPos++] = srcByte & 4 ? white : black;
14596 dest32[destPos++] = srcByte & 2 ? white : black;
14597 dest32[destPos++] = srcByte & 1 ? white : black;
14598 }
14599
14600 for (; k < kEnd; k++) {
14601 if (mask === 0) {
14602 srcByte = src[srcPos++];
14603 mask = 128;
14604 }
14605
14606 dest32[destPos++] = srcByte & mask ? white : black;
14607 mask >>= 1;
14608 }
14609 }
14610
14611 while (destPos < dest32DataLength) {
14612 dest32[destPos++] = 0;
14613 }
14614
14615 ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14616 }
14617 } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
14618 j = 0;
14619 elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
14620
14621 for (i = 0; i < fullChunks; i++) {
14622 dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
14623 srcPos += elemsInThisChunk;
14624 ctx.putImageData(chunkImgData, 0, j);
14625 j += FULL_CHUNK_HEIGHT;
14626 }
14627
14628 if (i < totalChunks) {
14629 elemsInThisChunk = width * partialChunkHeight * 4;
14630 dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
14631 ctx.putImageData(chunkImgData, 0, j);
14632 }
14633 } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
14634 thisChunkHeight = FULL_CHUNK_HEIGHT;
14635 elemsInThisChunk = width * thisChunkHeight;
14636
14637 for (i = 0; i < totalChunks; i++) {
14638 if (i >= fullChunks) {
14639 thisChunkHeight = partialChunkHeight;
14640 elemsInThisChunk = width * thisChunkHeight;
14641 }
14642
14643 destPos = 0;
14644
14645 for (j = elemsInThisChunk; j--;) {
14646 dest[destPos++] = src[srcPos++];
14647 dest[destPos++] = src[srcPos++];
14648 dest[destPos++] = src[srcPos++];
14649 dest[destPos++] = 255;
14650 }
14651
14652 ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14653 }
14654 } else {
14655 throw new Error("bad image kind: ".concat(imgData.kind));
14656 }
14657 }
14658
14659 function putBinaryImageMask(ctx, imgData) {
14660 var height = imgData.height,
14661 width = imgData.width;
14662 var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
14663 var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
14664 var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
14665 var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
14666 var srcPos = 0;
14667 var src = imgData.data;
14668 var dest = chunkImgData.data;
14669
14670 for (var i = 0; i < totalChunks; i++) {
14671 var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
14672 var destPos = 3;
14673
14674 for (var j = 0; j < thisChunkHeight; j++) {
14675 var mask = 0;
14676
14677 for (var k = 0; k < width; k++) {
14678 if (!mask) {
14679 var elem = src[srcPos++];
14680 mask = 128;
14681 }
14682
14683 dest[destPos] = elem & mask ? 0 : 255;
14684 destPos += 4;
14685 mask >>= 1;
14686 }
14687 }
14688
14689 ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
14690 }
14691 }
14692
14693 function copyCtxState(sourceCtx, destCtx) {
14694 var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font'];
14695
14696 for (var i = 0, ii = properties.length; i < ii; i++) {
14697 var property = properties[i];
14698
14699 if (sourceCtx[property] !== undefined) {
14700 destCtx[property] = sourceCtx[property];
14701 }
14702 }
14703
14704 if (sourceCtx.setLineDash !== undefined) {
14705 destCtx.setLineDash(sourceCtx.getLineDash());
14706 destCtx.lineDashOffset = sourceCtx.lineDashOffset;
14707 }
14708 }
14709
14710 function resetCtxToDefault(ctx) {
14711 ctx.strokeStyle = '#000000';
14712 ctx.fillStyle = '#000000';
14713 ctx.fillRule = 'nonzero';
14714 ctx.globalAlpha = 1;
14715 ctx.lineWidth = 1;
14716 ctx.lineCap = 'butt';
14717 ctx.lineJoin = 'miter';
14718 ctx.miterLimit = 10;
14719 ctx.globalCompositeOperation = 'source-over';
14720 ctx.font = '10px sans-serif';
14721
14722 if (ctx.setLineDash !== undefined) {
14723 ctx.setLineDash([]);
14724 ctx.lineDashOffset = 0;
14725 }
14726 }
14727
14728 function composeSMaskBackdrop(bytes, r0, g0, b0) {
14729 var length = bytes.length;
14730
14731 for (var i = 3; i < length; i += 4) {
14732 var alpha = bytes[i];
14733
14734 if (alpha === 0) {
14735 bytes[i - 3] = r0;
14736 bytes[i - 2] = g0;
14737 bytes[i - 1] = b0;
14738 } else if (alpha < 255) {
14739 var alpha_ = 255 - alpha;
14740 bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
14741 bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
14742 bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
14743 }
14744 }
14745 }
14746
14747 function composeSMaskAlpha(maskData, layerData, transferMap) {
14748 var length = maskData.length;
14749 var scale = 1 / 255;
14750
14751 for (var i = 3; i < length; i += 4) {
14752 var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
14753 layerData[i] = layerData[i] * alpha * scale | 0;
14754 }
14755 }
14756
14757 function composeSMaskLuminosity(maskData, layerData, transferMap) {
14758 var length = maskData.length;
14759
14760 for (var i = 3; i < length; i += 4) {
14761 var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
14762 layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
14763 }
14764 }
14765
14766 function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
14767 var hasBackdrop = !!backdrop;
14768 var r0 = hasBackdrop ? backdrop[0] : 0;
14769 var g0 = hasBackdrop ? backdrop[1] : 0;
14770 var b0 = hasBackdrop ? backdrop[2] : 0;
14771 var composeFn;
14772
14773 if (subtype === 'Luminosity') {
14774 composeFn = composeSMaskLuminosity;
14775 } else {
14776 composeFn = composeSMaskAlpha;
14777 }
14778
14779 var PIXELS_TO_PROCESS = 1048576;
14780 var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
14781
14782 for (var row = 0; row < height; row += chunkSize) {
14783 var chunkHeight = Math.min(chunkSize, height - row);
14784 var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
14785 var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
14786
14787 if (hasBackdrop) {
14788 composeSMaskBackdrop(maskData.data, r0, g0, b0);
14789 }
14790
14791 composeFn(maskData.data, layerData.data, transferMap);
14792 maskCtx.putImageData(layerData, 0, row);
14793 }
14794 }
14795
14796 function composeSMask(ctx, smask, layerCtx, webGLContext) {
14797 var mask = smask.canvas;
14798 var maskCtx = smask.context;
14799 ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
14800 var backdrop = smask.backdrop || null;
14801
14802 if (!smask.transferMap && webGLContext.isEnabled) {
14803 var composed = webGLContext.composeSMask({
14804 layer: layerCtx.canvas,
14805 mask: mask,
14806 properties: {
14807 subtype: smask.subtype,
14808 backdrop: backdrop
14809 }
14810 });
14811 ctx.setTransform(1, 0, 0, 1, 0, 0);
14812 ctx.drawImage(composed, smask.offsetX, smask.offsetY);
14813 return;
14814 }
14815
14816 genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);
14817 ctx.drawImage(mask, 0, 0);
14818 }
14819
14820 var LINE_CAP_STYLES = ['butt', 'round', 'square'];
14821 var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
14822 var NORMAL_CLIP = {};
14823 var EO_CLIP = {};
14824 CanvasGraphics.prototype = {
14825 beginDrawing: function beginDrawing(_ref) {
14826 var transform = _ref.transform,
14827 viewport = _ref.viewport,
14828 _ref$transparency = _ref.transparency,
14829 transparency = _ref$transparency === void 0 ? false : _ref$transparency,
14830 _ref$background = _ref.background,
14831 background = _ref$background === void 0 ? null : _ref$background;
14832 var width = this.ctx.canvas.width;
14833 var height = this.ctx.canvas.height;
14834 this.ctx.save();
14835 this.ctx.fillStyle = background || 'rgb(255, 255, 255)';
14836 this.ctx.fillRect(0, 0, width, height);
14837 this.ctx.restore();
14838
14839 if (transparency) {
14840 var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);
14841 this.compositeCtx = this.ctx;
14842 this.transparentCanvas = transparentCanvas.canvas;
14843 this.ctx = transparentCanvas.context;
14844 this.ctx.save();
14845 this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
14846 }
14847
14848 this.ctx.save();
14849 resetCtxToDefault(this.ctx);
14850
14851 if (transform) {
14852 this.ctx.transform.apply(this.ctx, transform);
14853 }
14854
14855 this.ctx.transform.apply(this.ctx, viewport.transform);
14856 this.baseTransform = this.ctx.mozCurrentTransform.slice();
14857
14858 if (this.imageLayer) {
14859 this.imageLayer.beginLayout();
14860 }
14861 },
14862 executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
14863 var argsArray = operatorList.argsArray;
14864 var fnArray = operatorList.fnArray;
14865 var i = executionStartIdx || 0;
14866 var argsArrayLen = argsArray.length;
14867
14868 if (argsArrayLen === i) {
14869 return i;
14870 }
14871
14872 var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';
14873 var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
14874 var steps = 0;
14875 var commonObjs = this.commonObjs;
14876 var objs = this.objs;
14877 var fnId;
14878
14879 while (true) {
14880 if (stepper !== undefined && i === stepper.nextBreakPoint) {
14881 stepper.breakIt(i, continueCallback);
14882 return i;
14883 }
14884
14885 fnId = fnArray[i];
14886
14887 if (fnId !== _util.OPS.dependency) {
14888 this[fnId].apply(this, argsArray[i]);
14889 } else {
14890 var _iteratorNormalCompletion = true;
14891 var _didIteratorError = false;
14892 var _iteratorError = undefined;
14893
14894 try {
14895 for (var _iterator = argsArray[i][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
14896 var depObjId = _step.value;
14897 var objsPool = depObjId.startsWith('g_') ? commonObjs : objs;
14898
14899 if (!objsPool.has(depObjId)) {
14900 objsPool.get(depObjId, continueCallback);
14901 return i;
14902 }
14903 }
14904 } catch (err) {
14905 _didIteratorError = true;
14906 _iteratorError = err;
14907 } finally {
14908 try {
14909 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
14910 _iterator["return"]();
14911 }
14912 } finally {
14913 if (_didIteratorError) {
14914 throw _iteratorError;
14915 }
14916 }
14917 }
14918 }
14919
14920 i++;
14921
14922 if (i === argsArrayLen) {
14923 return i;
14924 }
14925
14926 if (chunkOperations && ++steps > EXECUTION_STEPS) {
14927 if (Date.now() > endTime) {
14928 continueCallback();
14929 return i;
14930 }
14931
14932 steps = 0;
14933 }
14934 }
14935 },
14936 endDrawing: function CanvasGraphics_endDrawing() {
14937 if (this.current.activeSMask !== null) {
14938 this.endSMaskGroup();
14939 }
14940
14941 this.ctx.restore();
14942
14943 if (this.transparentCanvas) {
14944 this.ctx = this.compositeCtx;
14945 this.ctx.save();
14946 this.ctx.setTransform(1, 0, 0, 1, 0, 0);
14947 this.ctx.drawImage(this.transparentCanvas, 0, 0);
14948 this.ctx.restore();
14949 this.transparentCanvas = null;
14950 }
14951
14952 this.cachedCanvases.clear();
14953 this.webGLContext.clear();
14954
14955 if (this.imageLayer) {
14956 this.imageLayer.endLayout();
14957 }
14958 },
14959 setLineWidth: function CanvasGraphics_setLineWidth(width) {
14960 this.current.lineWidth = width;
14961 this.ctx.lineWidth = width;
14962 },
14963 setLineCap: function CanvasGraphics_setLineCap(style) {
14964 this.ctx.lineCap = LINE_CAP_STYLES[style];
14965 },
14966 setLineJoin: function CanvasGraphics_setLineJoin(style) {
14967 this.ctx.lineJoin = LINE_JOIN_STYLES[style];
14968 },
14969 setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
14970 this.ctx.miterLimit = limit;
14971 },
14972 setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
14973 var ctx = this.ctx;
14974
14975 if (ctx.setLineDash !== undefined) {
14976 ctx.setLineDash(dashArray);
14977 ctx.lineDashOffset = dashPhase;
14978 }
14979 },
14980 setRenderingIntent: function setRenderingIntent(intent) {},
14981 setFlatness: function setFlatness(flatness) {},
14982 setGState: function CanvasGraphics_setGState(states) {
14983 for (var i = 0, ii = states.length; i < ii; i++) {
14984 var state = states[i];
14985 var key = state[0];
14986 var value = state[1];
14987
14988 switch (key) {
14989 case 'LW':
14990 this.setLineWidth(value);
14991 break;
14992
14993 case 'LC':
14994 this.setLineCap(value);
14995 break;
14996
14997 case 'LJ':
14998 this.setLineJoin(value);
14999 break;
15000
15001 case 'ML':
15002 this.setMiterLimit(value);
15003 break;
15004
15005 case 'D':
15006 this.setDash(value[0], value[1]);
15007 break;
15008
15009 case 'RI':
15010 this.setRenderingIntent(value);
15011 break;
15012
15013 case 'FL':
15014 this.setFlatness(value);
15015 break;
15016
15017 case 'Font':
15018 this.setFont(value[0], value[1]);
15019 break;
15020
15021 case 'CA':
15022 this.current.strokeAlpha = state[1];
15023 break;
15024
15025 case 'ca':
15026 this.current.fillAlpha = state[1];
15027 this.ctx.globalAlpha = state[1];
15028 break;
15029
15030 case 'BM':
15031 this.ctx.globalCompositeOperation = value;
15032 break;
15033
15034 case 'SMask':
15035 if (this.current.activeSMask) {
15036 if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
15037 this.suspendSMaskGroup();
15038 } else {
15039 this.endSMaskGroup();
15040 }
15041 }
15042
15043 this.current.activeSMask = value ? this.tempSMask : null;
15044
15045 if (this.current.activeSMask) {
15046 this.beginSMaskGroup();
15047 }
15048
15049 this.tempSMask = null;
15050 break;
15051 }
15052 }
15053 },
15054 beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
15055 var activeSMask = this.current.activeSMask;
15056 var drawnWidth = activeSMask.canvas.width;
15057 var drawnHeight = activeSMask.canvas.height;
15058 var cacheId = 'smaskGroupAt' + this.groupLevel;
15059 var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
15060 var currentCtx = this.ctx;
15061 var currentTransform = currentCtx.mozCurrentTransform;
15062 this.ctx.save();
15063 var groupCtx = scratchCanvas.context;
15064 groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
15065 groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
15066 groupCtx.transform.apply(groupCtx, currentTransform);
15067 activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
15068 copyCtxState(currentCtx, groupCtx);
15069 this.ctx = groupCtx;
15070 this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
15071 this.groupStack.push(currentCtx);
15072 this.groupLevel++;
15073 },
15074 suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15075 var groupCtx = this.ctx;
15076 this.groupLevel--;
15077 this.ctx = this.groupStack.pop();
15078 composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
15079 this.ctx.restore();
15080 this.ctx.save();
15081 copyCtxState(groupCtx, this.ctx);
15082 this.current.resumeSMaskCtx = groupCtx;
15083
15084 var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
15085
15086 this.ctx.transform.apply(this.ctx, deltaTransform);
15087 groupCtx.save();
15088 groupCtx.setTransform(1, 0, 0, 1, 0, 0);
15089 groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
15090 groupCtx.restore();
15091 },
15092 resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15093 var groupCtx = this.current.resumeSMaskCtx;
15094 var currentCtx = this.ctx;
15095 this.ctx = groupCtx;
15096 this.groupStack.push(currentCtx);
15097 this.groupLevel++;
15098 },
15099 endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
15100 var groupCtx = this.ctx;
15101 this.groupLevel--;
15102 this.ctx = this.groupStack.pop();
15103 composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);
15104 this.ctx.restore();
15105 copyCtxState(groupCtx, this.ctx);
15106
15107 var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
15108
15109 this.ctx.transform.apply(this.ctx, deltaTransform);
15110 },
15111 save: function CanvasGraphics_save() {
15112 this.ctx.save();
15113 var old = this.current;
15114 this.stateStack.push(old);
15115 this.current = old.clone();
15116 this.current.resumeSMaskCtx = null;
15117 },
15118 restore: function CanvasGraphics_restore() {
15119 if (this.current.resumeSMaskCtx) {
15120 this.resumeSMaskGroup();
15121 }
15122
15123 if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
15124 this.endSMaskGroup();
15125 }
15126
15127 if (this.stateStack.length !== 0) {
15128 this.current = this.stateStack.pop();
15129 this.ctx.restore();
15130 this.pendingClip = null;
15131 this._cachedGetSinglePixelWidth = null;
15132 }
15133 },
15134 transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
15135 this.ctx.transform(a, b, c, d, e, f);
15136 this._cachedGetSinglePixelWidth = null;
15137 },
15138 constructPath: function CanvasGraphics_constructPath(ops, args) {
15139 var ctx = this.ctx;
15140 var current = this.current;
15141 var x = current.x,
15142 y = current.y;
15143
15144 for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
15145 switch (ops[i] | 0) {
15146 case _util.OPS.rectangle:
15147 x = args[j++];
15148 y = args[j++];
15149 var width = args[j++];
15150 var height = args[j++];
15151
15152 if (width === 0) {
15153 width = this.getSinglePixelWidth();
15154 }
15155
15156 if (height === 0) {
15157 height = this.getSinglePixelWidth();
15158 }
15159
15160 var xw = x + width;
15161 var yh = y + height;
15162 this.ctx.moveTo(x, y);
15163 this.ctx.lineTo(xw, y);
15164 this.ctx.lineTo(xw, yh);
15165 this.ctx.lineTo(x, yh);
15166 this.ctx.lineTo(x, y);
15167 this.ctx.closePath();
15168 break;
15169
15170 case _util.OPS.moveTo:
15171 x = args[j++];
15172 y = args[j++];
15173 ctx.moveTo(x, y);
15174 break;
15175
15176 case _util.OPS.lineTo:
15177 x = args[j++];
15178 y = args[j++];
15179 ctx.lineTo(x, y);
15180 break;
15181
15182 case _util.OPS.curveTo:
15183 x = args[j + 4];
15184 y = args[j + 5];
15185 ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
15186 j += 6;
15187 break;
15188
15189 case _util.OPS.curveTo2:
15190 ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
15191 x = args[j + 2];
15192 y = args[j + 3];
15193 j += 4;
15194 break;
15195
15196 case _util.OPS.curveTo3:
15197 x = args[j + 2];
15198 y = args[j + 3];
15199 ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
15200 j += 4;
15201 break;
15202
15203 case _util.OPS.closePath:
15204 ctx.closePath();
15205 break;
15206 }
15207 }
15208
15209 current.setCurrentPoint(x, y);
15210 },
15211 closePath: function CanvasGraphics_closePath() {
15212 this.ctx.closePath();
15213 },
15214 stroke: function CanvasGraphics_stroke(consumePath) {
15215 consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
15216 var ctx = this.ctx;
15217 var strokeColor = this.current.strokeColor;
15218 ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
15219 ctx.globalAlpha = this.current.strokeAlpha;
15220
15221 if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {
15222 ctx.save();
15223 ctx.strokeStyle = strokeColor.getPattern(ctx, this);
15224 ctx.stroke();
15225 ctx.restore();
15226 } else {
15227 ctx.stroke();
15228 }
15229
15230 if (consumePath) {
15231 this.consumePath();
15232 }
15233
15234 ctx.globalAlpha = this.current.fillAlpha;
15235 },
15236 closeStroke: function CanvasGraphics_closeStroke() {
15237 this.closePath();
15238 this.stroke();
15239 },
15240 fill: function CanvasGraphics_fill(consumePath) {
15241 consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
15242 var ctx = this.ctx;
15243 var fillColor = this.current.fillColor;
15244 var isPatternFill = this.current.patternFill;
15245 var needRestore = false;
15246
15247 if (isPatternFill) {
15248 ctx.save();
15249
15250 if (this.baseTransform) {
15251 ctx.setTransform.apply(ctx, this.baseTransform);
15252 }
15253
15254 ctx.fillStyle = fillColor.getPattern(ctx, this);
15255 needRestore = true;
15256 }
15257
15258 if (this.pendingEOFill) {
15259 ctx.fill('evenodd');
15260 this.pendingEOFill = false;
15261 } else {
15262 ctx.fill();
15263 }
15264
15265 if (needRestore) {
15266 ctx.restore();
15267 }
15268
15269 if (consumePath) {
15270 this.consumePath();
15271 }
15272 },
15273 eoFill: function CanvasGraphics_eoFill() {
15274 this.pendingEOFill = true;
15275 this.fill();
15276 },
15277 fillStroke: function CanvasGraphics_fillStroke() {
15278 this.fill(false);
15279 this.stroke(false);
15280 this.consumePath();
15281 },
15282 eoFillStroke: function CanvasGraphics_eoFillStroke() {
15283 this.pendingEOFill = true;
15284 this.fillStroke();
15285 },
15286 closeFillStroke: function CanvasGraphics_closeFillStroke() {
15287 this.closePath();
15288 this.fillStroke();
15289 },
15290 closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
15291 this.pendingEOFill = true;
15292 this.closePath();
15293 this.fillStroke();
15294 },
15295 endPath: function CanvasGraphics_endPath() {
15296 this.consumePath();
15297 },
15298 clip: function CanvasGraphics_clip() {
15299 this.pendingClip = NORMAL_CLIP;
15300 },
15301 eoClip: function CanvasGraphics_eoClip() {
15302 this.pendingClip = EO_CLIP;
15303 },
15304 beginText: function CanvasGraphics_beginText() {
15305 this.current.textMatrix = _util.IDENTITY_MATRIX;
15306 this.current.textMatrixScale = 1;
15307 this.current.x = this.current.lineX = 0;
15308 this.current.y = this.current.lineY = 0;
15309 },
15310 endText: function CanvasGraphics_endText() {
15311 var paths = this.pendingTextPaths;
15312 var ctx = this.ctx;
15313
15314 if (paths === undefined) {
15315 ctx.beginPath();
15316 return;
15317 }
15318
15319 ctx.save();
15320 ctx.beginPath();
15321
15322 for (var i = 0; i < paths.length; i++) {
15323 var path = paths[i];
15324 ctx.setTransform.apply(ctx, path.transform);
15325 ctx.translate(path.x, path.y);
15326 path.addToPath(ctx, path.fontSize);
15327 }
15328
15329 ctx.restore();
15330 ctx.clip();
15331 ctx.beginPath();
15332 delete this.pendingTextPaths;
15333 },
15334 setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
15335 this.current.charSpacing = spacing;
15336 },
15337 setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
15338 this.current.wordSpacing = spacing;
15339 },
15340 setHScale: function CanvasGraphics_setHScale(scale) {
15341 this.current.textHScale = scale / 100;
15342 },
15343 setLeading: function CanvasGraphics_setLeading(leading) {
15344 this.current.leading = -leading;
15345 },
15346 setFont: function CanvasGraphics_setFont(fontRefName, size) {
15347 var fontObj = this.commonObjs.get(fontRefName);
15348 var current = this.current;
15349
15350 if (!fontObj) {
15351 throw new Error("Can't find font for ".concat(fontRefName));
15352 }
15353
15354 current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
15355
15356 if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
15357 (0, _util.warn)('Invalid font matrix for font ' + fontRefName);
15358 }
15359
15360 if (size < 0) {
15361 size = -size;
15362 current.fontDirection = -1;
15363 } else {
15364 current.fontDirection = 1;
15365 }
15366
15367 this.current.font = fontObj;
15368 this.current.fontSize = size;
15369
15370 if (fontObj.isType3Font) {
15371 return;
15372 }
15373
15374 var name = fontObj.loadedName || 'sans-serif';
15375 var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';
15376 var italic = fontObj.italic ? 'italic' : 'normal';
15377 var typeface = "\"".concat(name, "\", ").concat(fontObj.fallbackName);
15378 var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
15379 this.current.fontSizeScale = size / browserFontSize;
15380 this.ctx.font = "".concat(italic, " ").concat(bold, " ").concat(browserFontSize, "px ").concat(typeface);
15381 },
15382 setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
15383 this.current.textRenderingMode = mode;
15384 },
15385 setTextRise: function CanvasGraphics_setTextRise(rise) {
15386 this.current.textRise = rise;
15387 },
15388 moveText: function CanvasGraphics_moveText(x, y) {
15389 this.current.x = this.current.lineX += x;
15390 this.current.y = this.current.lineY += y;
15391 },
15392 setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
15393 this.setLeading(-y);
15394 this.moveText(x, y);
15395 },
15396 setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
15397 this.current.textMatrix = [a, b, c, d, e, f];
15398 this.current.textMatrixScale = Math.sqrt(a * a + b * b);
15399 this.current.x = this.current.lineX = 0;
15400 this.current.y = this.current.lineY = 0;
15401 },
15402 nextLine: function CanvasGraphics_nextLine() {
15403 this.moveText(0, this.current.leading);
15404 },
15405 paintChar: function paintChar(character, x, y, patternTransform) {
15406 var ctx = this.ctx;
15407 var current = this.current;
15408 var font = current.font;
15409 var textRenderingMode = current.textRenderingMode;
15410 var fontSize = current.fontSize / current.fontSizeScale;
15411 var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
15412 var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
15413 var patternFill = current.patternFill && font.data;
15414 var addToPath;
15415
15416 if (font.disableFontFace || isAddToPathSet || patternFill) {
15417 addToPath = font.getPathGenerator(this.commonObjs, character);
15418 }
15419
15420 if (font.disableFontFace || patternFill) {
15421 ctx.save();
15422 ctx.translate(x, y);
15423 ctx.beginPath();
15424 addToPath(ctx, fontSize);
15425
15426 if (patternTransform) {
15427 ctx.setTransform.apply(ctx, patternTransform);
15428 }
15429
15430 if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15431 ctx.fill();
15432 }
15433
15434 if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15435 ctx.stroke();
15436 }
15437
15438 ctx.restore();
15439 } else {
15440 if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15441 ctx.fillText(character, x, y);
15442 }
15443
15444 if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15445 ctx.strokeText(character, x, y);
15446 }
15447 }
15448
15449 if (isAddToPathSet) {
15450 var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
15451 paths.push({
15452 transform: ctx.mozCurrentTransform,
15453 x: x,
15454 y: y,
15455 fontSize: fontSize,
15456 addToPath: addToPath
15457 });
15458 }
15459 },
15460
15461 get isFontSubpixelAAEnabled() {
15462 var _this$cachedCanvases$ = this.cachedCanvases.getCanvas('isFontSubpixelAAEnabled', 10, 10),
15463 ctx = _this$cachedCanvases$.context;
15464
15465 ctx.scale(1.5, 1);
15466 ctx.fillText('I', 0, 10);
15467 var data = ctx.getImageData(0, 0, 10, 10).data;
15468 var enabled = false;
15469
15470 for (var i = 3; i < data.length; i += 4) {
15471 if (data[i] > 0 && data[i] < 255) {
15472 enabled = true;
15473 break;
15474 }
15475 }
15476
15477 return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled);
15478 },
15479
15480 showText: function CanvasGraphics_showText(glyphs) {
15481 var current = this.current;
15482 var font = current.font;
15483
15484 if (font.isType3Font) {
15485 return this.showType3Text(glyphs);
15486 }
15487
15488 var fontSize = current.fontSize;
15489
15490 if (fontSize === 0) {
15491 return undefined;
15492 }
15493
15494 var ctx = this.ctx;
15495 var fontSizeScale = current.fontSizeScale;
15496 var charSpacing = current.charSpacing;
15497 var wordSpacing = current.wordSpacing;
15498 var fontDirection = current.fontDirection;
15499 var textHScale = current.textHScale * fontDirection;
15500 var glyphsLength = glyphs.length;
15501 var vertical = font.vertical;
15502 var spacingDir = vertical ? 1 : -1;
15503 var defaultVMetrics = font.defaultVMetrics;
15504 var widthAdvanceScale = fontSize * current.fontMatrix[0];
15505 var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
15506 ctx.save();
15507 var patternTransform;
15508
15509 if (current.patternFill) {
15510 ctx.save();
15511 var pattern = current.fillColor.getPattern(ctx, this);
15512 patternTransform = ctx.mozCurrentTransform;
15513 ctx.restore();
15514 ctx.fillStyle = pattern;
15515 }
15516
15517 ctx.transform.apply(ctx, current.textMatrix);
15518 ctx.translate(current.x, current.y + current.textRise);
15519
15520 if (fontDirection > 0) {
15521 ctx.scale(textHScale, -1);
15522 } else {
15523 ctx.scale(textHScale, 1);
15524 }
15525
15526 var lineWidth = current.lineWidth;
15527 var scale = current.textMatrixScale;
15528
15529 if (scale === 0 || lineWidth === 0) {
15530 var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
15531
15532 if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
15533 this._cachedGetSinglePixelWidth = null;
15534 lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
15535 }
15536 } else {
15537 lineWidth /= scale;
15538 }
15539
15540 if (fontSizeScale !== 1.0) {
15541 ctx.scale(fontSizeScale, fontSizeScale);
15542 lineWidth /= fontSizeScale;
15543 }
15544
15545 ctx.lineWidth = lineWidth;
15546 var x = 0,
15547 i;
15548
15549 for (i = 0; i < glyphsLength; ++i) {
15550 var glyph = glyphs[i];
15551
15552 if ((0, _util.isNum)(glyph)) {
15553 x += spacingDir * glyph * fontSize / 1000;
15554 continue;
15555 }
15556
15557 var restoreNeeded = false;
15558 var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
15559 var character = glyph.fontChar;
15560 var accent = glyph.accent;
15561 var scaledX, scaledY, scaledAccentX, scaledAccentY;
15562 var width = glyph.width;
15563
15564 if (vertical) {
15565 var vmetric, vx, vy;
15566 vmetric = glyph.vmetric || defaultVMetrics;
15567 vx = glyph.vmetric ? vmetric[1] : width * 0.5;
15568 vx = -vx * widthAdvanceScale;
15569 vy = vmetric[2] * widthAdvanceScale;
15570 width = vmetric ? -vmetric[0] : width;
15571 scaledX = vx / fontSizeScale;
15572 scaledY = (x + vy) / fontSizeScale;
15573 } else {
15574 scaledX = x / fontSizeScale;
15575 scaledY = 0;
15576 }
15577
15578 if (font.remeasure && width > 0) {
15579 var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
15580
15581 if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
15582 var characterScaleX = width / measuredWidth;
15583 restoreNeeded = true;
15584 ctx.save();
15585 ctx.scale(characterScaleX, 1);
15586 scaledX /= characterScaleX;
15587 } else if (width !== measuredWidth) {
15588 scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
15589 }
15590 }
15591
15592 if (glyph.isInFont || font.missingFile) {
15593 if (simpleFillText && !accent) {
15594 ctx.fillText(character, scaledX, scaledY);
15595 } else {
15596 this.paintChar(character, scaledX, scaledY, patternTransform);
15597
15598 if (accent) {
15599 scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
15600 scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
15601 this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
15602 }
15603 }
15604 }
15605
15606 var charWidth = width * widthAdvanceScale + spacing * fontDirection;
15607 x += charWidth;
15608
15609 if (restoreNeeded) {
15610 ctx.restore();
15611 }
15612 }
15613
15614 if (vertical) {
15615 current.y -= x * textHScale;
15616 } else {
15617 current.x += x * textHScale;
15618 }
15619
15620 ctx.restore();
15621 },
15622 showType3Text: function CanvasGraphics_showType3Text(glyphs) {
15623 var ctx = this.ctx;
15624 var current = this.current;
15625 var font = current.font;
15626 var fontSize = current.fontSize;
15627 var fontDirection = current.fontDirection;
15628 var spacingDir = font.vertical ? 1 : -1;
15629 var charSpacing = current.charSpacing;
15630 var wordSpacing = current.wordSpacing;
15631 var textHScale = current.textHScale * fontDirection;
15632 var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
15633 var glyphsLength = glyphs.length;
15634 var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
15635 var i, glyph, width, spacingLength;
15636
15637 if (isTextInvisible || fontSize === 0) {
15638 return;
15639 }
15640
15641 this._cachedGetSinglePixelWidth = null;
15642 ctx.save();
15643 ctx.transform.apply(ctx, current.textMatrix);
15644 ctx.translate(current.x, current.y);
15645 ctx.scale(textHScale, fontDirection);
15646
15647 for (i = 0; i < glyphsLength; ++i) {
15648 glyph = glyphs[i];
15649
15650 if ((0, _util.isNum)(glyph)) {
15651 spacingLength = spacingDir * glyph * fontSize / 1000;
15652 this.ctx.translate(spacingLength, 0);
15653 current.x += spacingLength * textHScale;
15654 continue;
15655 }
15656
15657 var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
15658 var operatorList = font.charProcOperatorList[glyph.operatorListId];
15659
15660 if (!operatorList) {
15661 (0, _util.warn)("Type3 character \"".concat(glyph.operatorListId, "\" is not available."));
15662 continue;
15663 }
15664
15665 this.processingType3 = glyph;
15666 this.save();
15667 ctx.scale(fontSize, fontSize);
15668 ctx.transform.apply(ctx, fontMatrix);
15669 this.executeOperatorList(operatorList);
15670 this.restore();
15671
15672 var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
15673
15674 width = transformed[0] * fontSize + spacing;
15675 ctx.translate(width, 0);
15676 current.x += width * textHScale;
15677 }
15678
15679 ctx.restore();
15680 this.processingType3 = null;
15681 },
15682 setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},
15683 setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
15684 this.ctx.rect(llx, lly, urx - llx, ury - lly);
15685 this.clip();
15686 this.endPath();
15687 },
15688 getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
15689 var _this = this;
15690
15691 var pattern;
15692
15693 if (IR[0] === 'TilingPattern') {
15694 var color = IR[1];
15695 var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
15696 var canvasGraphicsFactory = {
15697 createCanvasGraphics: function createCanvasGraphics(ctx) {
15698 return new CanvasGraphics(ctx, _this.commonObjs, _this.objs, _this.canvasFactory, _this.webGLContext);
15699 }
15700 };
15701 pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
15702 } else {
15703 pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);
15704 }
15705
15706 return pattern;
15707 },
15708 setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
15709 this.current.strokeColor = this.getColorN_Pattern(arguments);
15710 },
15711 setFillColorN: function CanvasGraphics_setFillColorN() {
15712 this.current.fillColor = this.getColorN_Pattern(arguments);
15713 this.current.patternFill = true;
15714 },
15715 setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
15716 var color = _util.Util.makeCssRgb(r, g, b);
15717
15718 this.ctx.strokeStyle = color;
15719 this.current.strokeColor = color;
15720 },
15721 setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
15722 var color = _util.Util.makeCssRgb(r, g, b);
15723
15724 this.ctx.fillStyle = color;
15725 this.current.fillColor = color;
15726 this.current.patternFill = false;
15727 },
15728 shadingFill: function CanvasGraphics_shadingFill(patternIR) {
15729 var ctx = this.ctx;
15730 this.save();
15731 var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);
15732 ctx.fillStyle = pattern.getPattern(ctx, this, true);
15733 var inv = ctx.mozCurrentTransformInverse;
15734
15735 if (inv) {
15736 var canvas = ctx.canvas;
15737 var width = canvas.width;
15738 var height = canvas.height;
15739
15740 var bl = _util.Util.applyTransform([0, 0], inv);
15741
15742 var br = _util.Util.applyTransform([0, height], inv);
15743
15744 var ul = _util.Util.applyTransform([width, 0], inv);
15745
15746 var ur = _util.Util.applyTransform([width, height], inv);
15747
15748 var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
15749 var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
15750 var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
15751 var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
15752 this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
15753 } else {
15754 this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
15755 }
15756
15757 this.restore();
15758 },
15759 beginInlineImage: function CanvasGraphics_beginInlineImage() {
15760 (0, _util.unreachable)('Should not call beginInlineImage');
15761 },
15762 beginImageData: function CanvasGraphics_beginImageData() {
15763 (0, _util.unreachable)('Should not call beginImageData');
15764 },
15765 paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {
15766 this.save();
15767 this.baseTransformStack.push(this.baseTransform);
15768
15769 if (Array.isArray(matrix) && matrix.length === 6) {
15770 this.transform.apply(this, matrix);
15771 }
15772
15773 this.baseTransform = this.ctx.mozCurrentTransform;
15774
15775 if (bbox) {
15776 var width = bbox[2] - bbox[0];
15777 var height = bbox[3] - bbox[1];
15778 this.ctx.rect(bbox[0], bbox[1], width, height);
15779 this.clip();
15780 this.endPath();
15781 }
15782 },
15783 paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
15784 this.restore();
15785 this.baseTransform = this.baseTransformStack.pop();
15786 },
15787 beginGroup: function CanvasGraphics_beginGroup(group) {
15788 this.save();
15789 var currentCtx = this.ctx;
15790
15791 if (!group.isolated) {
15792 (0, _util.info)('TODO: Support non-isolated groups.');
15793 }
15794
15795 if (group.knockout) {
15796 (0, _util.warn)('Knockout groups not supported.');
15797 }
15798
15799 var currentTransform = currentCtx.mozCurrentTransform;
15800
15801 if (group.matrix) {
15802 currentCtx.transform.apply(currentCtx, group.matrix);
15803 }
15804
15805 if (!group.bbox) {
15806 throw new Error('Bounding box is required.');
15807 }
15808
15809 var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
15810
15811 var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
15812 bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
15813 var offsetX = Math.floor(bounds[0]);
15814 var offsetY = Math.floor(bounds[1]);
15815 var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
15816 var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
15817 var scaleX = 1,
15818 scaleY = 1;
15819
15820 if (drawnWidth > MAX_GROUP_SIZE) {
15821 scaleX = drawnWidth / MAX_GROUP_SIZE;
15822 drawnWidth = MAX_GROUP_SIZE;
15823 }
15824
15825 if (drawnHeight > MAX_GROUP_SIZE) {
15826 scaleY = drawnHeight / MAX_GROUP_SIZE;
15827 drawnHeight = MAX_GROUP_SIZE;
15828 }
15829
15830 var cacheId = 'groupAt' + this.groupLevel;
15831
15832 if (group.smask) {
15833 cacheId += '_smask_' + this.smaskCounter++ % 2;
15834 }
15835
15836 var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
15837 var groupCtx = scratchCanvas.context;
15838 groupCtx.scale(1 / scaleX, 1 / scaleY);
15839 groupCtx.translate(-offsetX, -offsetY);
15840 groupCtx.transform.apply(groupCtx, currentTransform);
15841
15842 if (group.smask) {
15843 this.smaskStack.push({
15844 canvas: scratchCanvas.canvas,
15845 context: groupCtx,
15846 offsetX: offsetX,
15847 offsetY: offsetY,
15848 scaleX: scaleX,
15849 scaleY: scaleY,
15850 subtype: group.smask.subtype,
15851 backdrop: group.smask.backdrop,
15852 transferMap: group.smask.transferMap || null,
15853 startTransformInverse: null
15854 });
15855 } else {
15856 currentCtx.setTransform(1, 0, 0, 1, 0, 0);
15857 currentCtx.translate(offsetX, offsetY);
15858 currentCtx.scale(scaleX, scaleY);
15859 }
15860
15861 copyCtxState(currentCtx, groupCtx);
15862 this.ctx = groupCtx;
15863 this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]);
15864 this.groupStack.push(currentCtx);
15865 this.groupLevel++;
15866 this.current.activeSMask = null;
15867 },
15868 endGroup: function CanvasGraphics_endGroup(group) {
15869 this.groupLevel--;
15870 var groupCtx = this.ctx;
15871 this.ctx = this.groupStack.pop();
15872
15873 if (this.ctx.imageSmoothingEnabled !== undefined) {
15874 this.ctx.imageSmoothingEnabled = false;
15875 } else {
15876 this.ctx.mozImageSmoothingEnabled = false;
15877 }
15878
15879 if (group.smask) {
15880 this.tempSMask = this.smaskStack.pop();
15881 } else {
15882 this.ctx.drawImage(groupCtx.canvas, 0, 0);
15883 }
15884
15885 this.restore();
15886 },
15887 beginAnnotations: function CanvasGraphics_beginAnnotations() {
15888 this.save();
15889
15890 if (this.baseTransform) {
15891 this.ctx.setTransform.apply(this.ctx, this.baseTransform);
15892 }
15893 },
15894 endAnnotations: function CanvasGraphics_endAnnotations() {
15895 this.restore();
15896 },
15897 beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {
15898 this.save();
15899 resetCtxToDefault(this.ctx);
15900 this.current = new CanvasExtraState();
15901
15902 if (Array.isArray(rect) && rect.length === 4) {
15903 var width = rect[2] - rect[0];
15904 var height = rect[3] - rect[1];
15905 this.ctx.rect(rect[0], rect[1], width, height);
15906 this.clip();
15907 this.endPath();
15908 }
15909
15910 this.transform.apply(this, transform);
15911 this.transform.apply(this, matrix);
15912 },
15913 endAnnotation: function CanvasGraphics_endAnnotation() {
15914 this.restore();
15915 },
15916 paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
15917 var domImage = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
15918
15919 if (!domImage) {
15920 (0, _util.warn)('Dependent image isn\'t ready yet');
15921 return;
15922 }
15923
15924 this.save();
15925 var ctx = this.ctx;
15926 ctx.scale(1 / w, -1 / h);
15927 ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);
15928
15929 if (this.imageLayer) {
15930 var currentTransform = ctx.mozCurrentTransformInverse;
15931 var position = this.getCanvasPosition(0, 0);
15932 this.imageLayer.appendImage({
15933 objId: objId,
15934 left: position[0],
15935 top: position[1],
15936 width: w / currentTransform[0],
15937 height: h / currentTransform[3]
15938 });
15939 }
15940
15941 this.restore();
15942 },
15943 paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
15944 var ctx = this.ctx;
15945 var width = img.width,
15946 height = img.height;
15947 var fillColor = this.current.fillColor;
15948 var isPatternFill = this.current.patternFill;
15949 var glyph = this.processingType3;
15950
15951 if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
15952 if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
15953 glyph.compiled = compileType3Glyph({
15954 data: img.data,
15955 width: width,
15956 height: height
15957 });
15958 } else {
15959 glyph.compiled = null;
15960 }
15961 }
15962
15963 if (glyph && glyph.compiled) {
15964 glyph.compiled(ctx);
15965 return;
15966 }
15967
15968 var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
15969 var maskCtx = maskCanvas.context;
15970 maskCtx.save();
15971 putBinaryImageMask(maskCtx, img);
15972 maskCtx.globalCompositeOperation = 'source-in';
15973 maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
15974 maskCtx.fillRect(0, 0, width, height);
15975 maskCtx.restore();
15976 this.paintInlineImageXObject(maskCanvas.canvas);
15977 },
15978 paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {
15979 var width = imgData.width;
15980 var height = imgData.height;
15981 var fillColor = this.current.fillColor;
15982 var isPatternFill = this.current.patternFill;
15983 var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
15984 var maskCtx = maskCanvas.context;
15985 maskCtx.save();
15986 putBinaryImageMask(maskCtx, imgData);
15987 maskCtx.globalCompositeOperation = 'source-in';
15988 maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
15989 maskCtx.fillRect(0, 0, width, height);
15990 maskCtx.restore();
15991 var ctx = this.ctx;
15992
15993 for (var i = 0, ii = positions.length; i < ii; i += 2) {
15994 ctx.save();
15995 ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
15996 ctx.scale(1, -1);
15997 ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
15998 ctx.restore();
15999 }
16000 },
16001 paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {
16002 var ctx = this.ctx;
16003 var fillColor = this.current.fillColor;
16004 var isPatternFill = this.current.patternFill;
16005
16006 for (var i = 0, ii = images.length; i < ii; i++) {
16007 var image = images[i];
16008 var width = image.width,
16009 height = image.height;
16010 var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
16011 var maskCtx = maskCanvas.context;
16012 maskCtx.save();
16013 putBinaryImageMask(maskCtx, image);
16014 maskCtx.globalCompositeOperation = 'source-in';
16015 maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
16016 maskCtx.fillRect(0, 0, width, height);
16017 maskCtx.restore();
16018 ctx.save();
16019 ctx.transform.apply(ctx, image.transform);
16020 ctx.scale(1, -1);
16021 ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
16022 ctx.restore();
16023 }
16024 },
16025 paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
16026 var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
16027
16028 if (!imgData) {
16029 (0, _util.warn)('Dependent image isn\'t ready yet');
16030 return;
16031 }
16032
16033 this.paintInlineImageXObject(imgData);
16034 },
16035 paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
16036 var imgData = this.processingType3 ? this.commonObjs.get(objId) : this.objs.get(objId);
16037
16038 if (!imgData) {
16039 (0, _util.warn)('Dependent image isn\'t ready yet');
16040 return;
16041 }
16042
16043 var width = imgData.width;
16044 var height = imgData.height;
16045 var map = [];
16046
16047 for (var i = 0, ii = positions.length; i < ii; i += 2) {
16048 map.push({
16049 transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
16050 x: 0,
16051 y: 0,
16052 w: width,
16053 h: height
16054 });
16055 }
16056
16057 this.paintInlineImageXObjectGroup(imgData, map);
16058 },
16059 paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {
16060 var width = imgData.width;
16061 var height = imgData.height;
16062 var ctx = this.ctx;
16063 this.save();
16064 ctx.scale(1 / width, -1 / height);
16065 var currentTransform = ctx.mozCurrentTransformInverse;
16066 var a = currentTransform[0],
16067 b = currentTransform[1];
16068 var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
16069 var c = currentTransform[2],
16070 d = currentTransform[3];
16071 var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
16072 var imgToPaint, tmpCanvas;
16073
16074 if (typeof HTMLElement === 'function' && imgData instanceof HTMLElement || !imgData.data) {
16075 imgToPaint = imgData;
16076 } else {
16077 tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);
16078 var tmpCtx = tmpCanvas.context;
16079 putBinaryImageData(tmpCtx, imgData);
16080 imgToPaint = tmpCanvas.canvas;
16081 }
16082
16083 var paintWidth = width,
16084 paintHeight = height;
16085 var tmpCanvasId = 'prescale1';
16086
16087 while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
16088 var newWidth = paintWidth,
16089 newHeight = paintHeight;
16090
16091 if (widthScale > 2 && paintWidth > 1) {
16092 newWidth = Math.ceil(paintWidth / 2);
16093 widthScale /= paintWidth / newWidth;
16094 }
16095
16096 if (heightScale > 2 && paintHeight > 1) {
16097 newHeight = Math.ceil(paintHeight / 2);
16098 heightScale /= paintHeight / newHeight;
16099 }
16100
16101 tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
16102 tmpCtx = tmpCanvas.context;
16103 tmpCtx.clearRect(0, 0, newWidth, newHeight);
16104 tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
16105 imgToPaint = tmpCanvas.canvas;
16106 paintWidth = newWidth;
16107 paintHeight = newHeight;
16108 tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
16109 }
16110
16111 ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
16112
16113 if (this.imageLayer) {
16114 var position = this.getCanvasPosition(0, -height);
16115 this.imageLayer.appendImage({
16116 imgData: imgData,
16117 left: position[0],
16118 top: position[1],
16119 width: width / currentTransform[0],
16120 height: height / currentTransform[3]
16121 });
16122 }
16123
16124 this.restore();
16125 },
16126 paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
16127 var ctx = this.ctx;
16128 var w = imgData.width;
16129 var h = imgData.height;
16130 var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);
16131 var tmpCtx = tmpCanvas.context;
16132 putBinaryImageData(tmpCtx, imgData);
16133
16134 for (var i = 0, ii = map.length; i < ii; i++) {
16135 var entry = map[i];
16136 ctx.save();
16137 ctx.transform.apply(ctx, entry.transform);
16138 ctx.scale(1, -1);
16139 ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
16140
16141 if (this.imageLayer) {
16142 var position = this.getCanvasPosition(entry.x, entry.y);
16143 this.imageLayer.appendImage({
16144 imgData: imgData,
16145 left: position[0],
16146 top: position[1],
16147 width: w,
16148 height: h
16149 });
16150 }
16151
16152 ctx.restore();
16153 }
16154 },
16155 paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
16156 this.ctx.fillRect(0, 0, 1, 1);
16157 },
16158 paintXObject: function CanvasGraphics_paintXObject() {
16159 (0, _util.warn)('Unsupported \'paintXObject\' command.');
16160 },
16161 markPoint: function CanvasGraphics_markPoint(tag) {},
16162 markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},
16163 beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {},
16164 beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {},
16165 endMarkedContent: function CanvasGraphics_endMarkedContent() {},
16166 beginCompat: function CanvasGraphics_beginCompat() {},
16167 endCompat: function CanvasGraphics_endCompat() {},
16168 consumePath: function CanvasGraphics_consumePath() {
16169 var ctx = this.ctx;
16170
16171 if (this.pendingClip) {
16172 if (this.pendingClip === EO_CLIP) {
16173 ctx.clip('evenodd');
16174 } else {
16175 ctx.clip();
16176 }
16177
16178 this.pendingClip = null;
16179 }
16180
16181 ctx.beginPath();
16182 },
16183 getSinglePixelWidth: function getSinglePixelWidth(scale) {
16184 if (this._cachedGetSinglePixelWidth === null) {
16185 var inverse = this.ctx.mozCurrentTransformInverse;
16186 this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));
16187 }
16188
16189 return this._cachedGetSinglePixelWidth;
16190 },
16191 getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {
16192 var transform = this.ctx.mozCurrentTransform;
16193 return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
16194 }
16195 };
16196
16197 for (var op in _util.OPS) {
16198 CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
16199 }
16200
16201 return CanvasGraphics;
16202}();
16203
16204exports.CanvasGraphics = CanvasGraphics;
16205
16206/***/ }),
16207/* 155 */
16208/***/ (function(module, exports, __w_pdfjs_require__) {
16209
16210"use strict";
16211
16212
16213Object.defineProperty(exports, "__esModule", {
16214 value: true
16215});
16216exports.getShadingPatternFromIR = getShadingPatternFromIR;
16217exports.TilingPattern = void 0;
16218
16219var _util = __w_pdfjs_require__(1);
16220
16221var ShadingIRs = {};
16222ShadingIRs.RadialAxial = {
16223 fromIR: function RadialAxial_fromIR(raw) {
16224 var type = raw[1];
16225 var colorStops = raw[2];
16226 var p0 = raw[3];
16227 var p1 = raw[4];
16228 var r0 = raw[5];
16229 var r1 = raw[6];
16230 return {
16231 type: 'Pattern',
16232 getPattern: function RadialAxial_getPattern(ctx) {
16233 var grad;
16234
16235 if (type === 'axial') {
16236 grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
16237 } else if (type === 'radial') {
16238 grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
16239 }
16240
16241 for (var i = 0, ii = colorStops.length; i < ii; ++i) {
16242 var c = colorStops[i];
16243 grad.addColorStop(c[0], c[1]);
16244 }
16245
16246 return grad;
16247 }
16248 };
16249 }
16250};
16251
16252var createMeshCanvas = function createMeshCanvasClosure() {
16253 function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
16254 var coords = context.coords,
16255 colors = context.colors;
16256 var bytes = data.data,
16257 rowSize = data.width * 4;
16258 var tmp;
16259
16260 if (coords[p1 + 1] > coords[p2 + 1]) {
16261 tmp = p1;
16262 p1 = p2;
16263 p2 = tmp;
16264 tmp = c1;
16265 c1 = c2;
16266 c2 = tmp;
16267 }
16268
16269 if (coords[p2 + 1] > coords[p3 + 1]) {
16270 tmp = p2;
16271 p2 = p3;
16272 p3 = tmp;
16273 tmp = c2;
16274 c2 = c3;
16275 c3 = tmp;
16276 }
16277
16278 if (coords[p1 + 1] > coords[p2 + 1]) {
16279 tmp = p1;
16280 p1 = p2;
16281 p2 = tmp;
16282 tmp = c1;
16283 c1 = c2;
16284 c2 = tmp;
16285 }
16286
16287 var x1 = (coords[p1] + context.offsetX) * context.scaleX;
16288 var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
16289 var x2 = (coords[p2] + context.offsetX) * context.scaleX;
16290 var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
16291 var x3 = (coords[p3] + context.offsetX) * context.scaleX;
16292 var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
16293
16294 if (y1 >= y3) {
16295 return;
16296 }
16297
16298 var c1r = colors[c1],
16299 c1g = colors[c1 + 1],
16300 c1b = colors[c1 + 2];
16301 var c2r = colors[c2],
16302 c2g = colors[c2 + 1],
16303 c2b = colors[c2 + 2];
16304 var c3r = colors[c3],
16305 c3g = colors[c3 + 1],
16306 c3b = colors[c3 + 2];
16307 var minY = Math.round(y1),
16308 maxY = Math.round(y3);
16309 var xa, car, cag, cab;
16310 var xb, cbr, cbg, cbb;
16311 var k;
16312
16313 for (var y = minY; y <= maxY; y++) {
16314 if (y < y2) {
16315 k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);
16316 xa = x1 - (x1 - x2) * k;
16317 car = c1r - (c1r - c2r) * k;
16318 cag = c1g - (c1g - c2g) * k;
16319 cab = c1b - (c1b - c2b) * k;
16320 } else {
16321 k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);
16322 xa = x2 - (x2 - x3) * k;
16323 car = c2r - (c2r - c3r) * k;
16324 cag = c2g - (c2g - c3g) * k;
16325 cab = c2b - (c2b - c3b) * k;
16326 }
16327
16328 k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);
16329 xb = x1 - (x1 - x3) * k;
16330 cbr = c1r - (c1r - c3r) * k;
16331 cbg = c1g - (c1g - c3g) * k;
16332 cbb = c1b - (c1b - c3b) * k;
16333 var x1_ = Math.round(Math.min(xa, xb));
16334 var x2_ = Math.round(Math.max(xa, xb));
16335 var j = rowSize * y + x1_ * 4;
16336
16337 for (var x = x1_; x <= x2_; x++) {
16338 k = (xa - x) / (xa - xb);
16339 k = k < 0 ? 0 : k > 1 ? 1 : k;
16340 bytes[j++] = car - (car - cbr) * k | 0;
16341 bytes[j++] = cag - (cag - cbg) * k | 0;
16342 bytes[j++] = cab - (cab - cbb) * k | 0;
16343 bytes[j++] = 255;
16344 }
16345 }
16346 }
16347
16348 function drawFigure(data, figure, context) {
16349 var ps = figure.coords;
16350 var cs = figure.colors;
16351 var i, ii;
16352
16353 switch (figure.type) {
16354 case 'lattice':
16355 var verticesPerRow = figure.verticesPerRow;
16356 var rows = Math.floor(ps.length / verticesPerRow) - 1;
16357 var cols = verticesPerRow - 1;
16358
16359 for (i = 0; i < rows; i++) {
16360 var q = i * verticesPerRow;
16361
16362 for (var j = 0; j < cols; j++, q++) {
16363 drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
16364 drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
16365 }
16366 }
16367
16368 break;
16369
16370 case 'triangles':
16371 for (i = 0, ii = ps.length; i < ii; i += 3) {
16372 drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
16373 }
16374
16375 break;
16376
16377 default:
16378 throw new Error('illegal figure');
16379 }
16380 }
16381
16382 function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {
16383 var EXPECTED_SCALE = 1.1;
16384 var MAX_PATTERN_SIZE = 3000;
16385 var BORDER_SIZE = 2;
16386 var offsetX = Math.floor(bounds[0]);
16387 var offsetY = Math.floor(bounds[1]);
16388 var boundsWidth = Math.ceil(bounds[2]) - offsetX;
16389 var boundsHeight = Math.ceil(bounds[3]) - offsetY;
16390 var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
16391 var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
16392 var scaleX = boundsWidth / width;
16393 var scaleY = boundsHeight / height;
16394 var context = {
16395 coords: coords,
16396 colors: colors,
16397 offsetX: -offsetX,
16398 offsetY: -offsetY,
16399 scaleX: 1 / scaleX,
16400 scaleY: 1 / scaleY
16401 };
16402 var paddedWidth = width + BORDER_SIZE * 2;
16403 var paddedHeight = height + BORDER_SIZE * 2;
16404 var canvas, tmpCanvas, i, ii;
16405
16406 if (webGLContext.isEnabled) {
16407 canvas = webGLContext.drawFigures({
16408 width: width,
16409 height: height,
16410 backgroundColor: backgroundColor,
16411 figures: figures,
16412 context: context
16413 });
16414 tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
16415 tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);
16416 canvas = tmpCanvas.canvas;
16417 } else {
16418 tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false);
16419 var tmpCtx = tmpCanvas.context;
16420 var data = tmpCtx.createImageData(width, height);
16421
16422 if (backgroundColor) {
16423 var bytes = data.data;
16424
16425 for (i = 0, ii = bytes.length; i < ii; i += 4) {
16426 bytes[i] = backgroundColor[0];
16427 bytes[i + 1] = backgroundColor[1];
16428 bytes[i + 2] = backgroundColor[2];
16429 bytes[i + 3] = 255;
16430 }
16431 }
16432
16433 for (i = 0; i < figures.length; i++) {
16434 drawFigure(data, figures[i], context);
16435 }
16436
16437 tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
16438 canvas = tmpCanvas.canvas;
16439 }
16440
16441 return {
16442 canvas: canvas,
16443 offsetX: offsetX - BORDER_SIZE * scaleX,
16444 offsetY: offsetY - BORDER_SIZE * scaleY,
16445 scaleX: scaleX,
16446 scaleY: scaleY
16447 };
16448 }
16449
16450 return createMeshCanvas;
16451}();
16452
16453ShadingIRs.Mesh = {
16454 fromIR: function Mesh_fromIR(raw) {
16455 var coords = raw[2];
16456 var colors = raw[3];
16457 var figures = raw[4];
16458 var bounds = raw[5];
16459 var matrix = raw[6];
16460 var background = raw[8];
16461 return {
16462 type: 'Pattern',
16463 getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {
16464 var scale;
16465
16466 if (shadingFill) {
16467 scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
16468 } else {
16469 scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
16470
16471 if (matrix) {
16472 var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);
16473
16474 scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
16475 }
16476 }
16477
16478 var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);
16479
16480 if (!shadingFill) {
16481 ctx.setTransform.apply(ctx, owner.baseTransform);
16482
16483 if (matrix) {
16484 ctx.transform.apply(ctx, matrix);
16485 }
16486 }
16487
16488 ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
16489 ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
16490 return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');
16491 }
16492 };
16493 }
16494};
16495ShadingIRs.Dummy = {
16496 fromIR: function Dummy_fromIR() {
16497 return {
16498 type: 'Pattern',
16499 getPattern: function Dummy_fromIR_getPattern() {
16500 return 'hotpink';
16501 }
16502 };
16503 }
16504};
16505
16506function getShadingPatternFromIR(raw) {
16507 var shadingIR = ShadingIRs[raw[0]];
16508
16509 if (!shadingIR) {
16510 throw new Error("Unknown IR type: ".concat(raw[0]));
16511 }
16512
16513 return shadingIR.fromIR(raw);
16514}
16515
16516var TilingPattern = function TilingPatternClosure() {
16517 var PaintType = {
16518 COLORED: 1,
16519 UNCOLORED: 2
16520 };
16521 var MAX_PATTERN_SIZE = 3000;
16522
16523 function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
16524 this.operatorList = IR[2];
16525 this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
16526 this.bbox = IR[4];
16527 this.xstep = IR[5];
16528 this.ystep = IR[6];
16529 this.paintType = IR[7];
16530 this.tilingType = IR[8];
16531 this.color = color;
16532 this.canvasGraphicsFactory = canvasGraphicsFactory;
16533 this.baseTransform = baseTransform;
16534 this.type = 'Pattern';
16535 this.ctx = ctx;
16536 }
16537
16538 TilingPattern.prototype = {
16539 createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {
16540 var operatorList = this.operatorList;
16541 var bbox = this.bbox;
16542 var xstep = this.xstep;
16543 var ystep = this.ystep;
16544 var paintType = this.paintType;
16545 var tilingType = this.tilingType;
16546 var color = this.color;
16547 var canvasGraphicsFactory = this.canvasGraphicsFactory;
16548 (0, _util.info)('TilingType: ' + tilingType);
16549 var x0 = bbox[0],
16550 y0 = bbox[1],
16551 x1 = bbox[2],
16552 y1 = bbox[3];
16553
16554 var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
16555
16556 var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
16557
16558 var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
16559 var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
16560 var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
16561 var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', dimx.size, dimy.size, true);
16562 var tmpCtx = tmpCanvas.context;
16563 var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
16564 graphics.groupLevel = owner.groupLevel;
16565 this.setFillAndStrokeStyleToContext(graphics, paintType, color);
16566 graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
16567 graphics.transform(1, 0, 0, 1, -x0, -y0);
16568 this.clipBbox(graphics, bbox, x0, y0, x1, y1);
16569 graphics.executeOperatorList(operatorList);
16570 this.ctx.transform(1, 0, 0, 1, x0, y0);
16571 this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);
16572 return tmpCanvas.canvas;
16573 },
16574 getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {
16575 step = Math.abs(step);
16576 var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);
16577 var size = Math.ceil(step * scale);
16578
16579 if (size >= maxSize) {
16580 size = maxSize;
16581 } else {
16582 scale = size / step;
16583 }
16584
16585 return {
16586 scale: scale,
16587 size: size
16588 };
16589 },
16590 clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {
16591 if (Array.isArray(bbox) && bbox.length === 4) {
16592 var bboxWidth = x1 - x0;
16593 var bboxHeight = y1 - y0;
16594 graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
16595 graphics.clip();
16596 graphics.endPath();
16597 }
16598 },
16599 setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {
16600 var context = graphics.ctx,
16601 current = graphics.current;
16602
16603 switch (paintType) {
16604 case PaintType.COLORED:
16605 var ctx = this.ctx;
16606 context.fillStyle = ctx.fillStyle;
16607 context.strokeStyle = ctx.strokeStyle;
16608 current.fillColor = ctx.fillStyle;
16609 current.strokeColor = ctx.strokeStyle;
16610 break;
16611
16612 case PaintType.UNCOLORED:
16613 var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);
16614
16615 context.fillStyle = cssColor;
16616 context.strokeStyle = cssColor;
16617 current.fillColor = cssColor;
16618 current.strokeColor = cssColor;
16619 break;
16620
16621 default:
16622 throw new _util.FormatError("Unsupported paint type: ".concat(paintType));
16623 }
16624 },
16625 getPattern: function TilingPattern_getPattern(ctx, owner) {
16626 ctx = this.ctx;
16627 ctx.setTransform.apply(ctx, this.baseTransform);
16628 ctx.transform.apply(ctx, this.matrix);
16629 var temporaryPatternCanvas = this.createPatternCanvas(owner);
16630 return ctx.createPattern(temporaryPatternCanvas, 'repeat');
16631 }
16632 };
16633 return TilingPattern;
16634}();
16635
16636exports.TilingPattern = TilingPattern;
16637
16638/***/ }),
16639/* 156 */
16640/***/ (function(module, exports, __w_pdfjs_require__) {
16641
16642"use strict";
16643
16644
16645Object.defineProperty(exports, "__esModule", {
16646 value: true
16647});
16648exports.GlobalWorkerOptions = void 0;
16649var GlobalWorkerOptions = Object.create(null);
16650exports.GlobalWorkerOptions = GlobalWorkerOptions;
16651GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
16652GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
16653
16654/***/ }),
16655/* 157 */
16656/***/ (function(module, exports, __w_pdfjs_require__) {
16657
16658"use strict";
16659
16660
16661Object.defineProperty(exports, "__esModule", {
16662 value: true
16663});
16664exports.MessageHandler = MessageHandler;
16665
16666var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
16667
16668var _util = __w_pdfjs_require__(1);
16669
16670function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
16671
16672function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16673
16674function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16675
16676function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
16677
16678function resolveCall(_x, _x2) {
16679 return _resolveCall.apply(this, arguments);
16680}
16681
16682function _resolveCall() {
16683 _resolveCall = _asyncToGenerator(
16684 /*#__PURE__*/
16685 _regenerator["default"].mark(function _callee(fn, args) {
16686 var thisArg,
16687 _args = arguments;
16688 return _regenerator["default"].wrap(function _callee$(_context) {
16689 while (1) {
16690 switch (_context.prev = _context.next) {
16691 case 0:
16692 thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
16693
16694 if (fn) {
16695 _context.next = 3;
16696 break;
16697 }
16698
16699 return _context.abrupt("return", undefined);
16700
16701 case 3:
16702 return _context.abrupt("return", fn.apply(thisArg, args));
16703
16704 case 4:
16705 case "end":
16706 return _context.stop();
16707 }
16708 }
16709 }, _callee);
16710 }));
16711 return _resolveCall.apply(this, arguments);
16712}
16713
16714function wrapReason(reason) {
16715 if (_typeof(reason) !== 'object') {
16716 return reason;
16717 }
16718
16719 switch (reason.name) {
16720 case 'AbortException':
16721 return new _util.AbortException(reason.message);
16722
16723 case 'MissingPDFException':
16724 return new _util.MissingPDFException(reason.message);
16725
16726 case 'UnexpectedResponseException':
16727 return new _util.UnexpectedResponseException(reason.message, reason.status);
16728
16729 default:
16730 return new _util.UnknownErrorException(reason.message, reason.details);
16731 }
16732}
16733
16734function makeReasonSerializable(reason) {
16735 if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
16736 return reason;
16737 }
16738
16739 return new _util.UnknownErrorException(reason.message, reason.toString());
16740}
16741
16742function resolveOrReject(capability, success, reason) {
16743 if (success) {
16744 capability.resolve();
16745 } else {
16746 capability.reject(reason);
16747 }
16748}
16749
16750function finalize(promise) {
16751 return Promise.resolve(promise)["catch"](function () {});
16752}
16753
16754function MessageHandler(sourceName, targetName, comObj) {
16755 var _this = this;
16756
16757 this.sourceName = sourceName;
16758 this.targetName = targetName;
16759 this.comObj = comObj;
16760 this.callbackId = 1;
16761 this.streamId = 1;
16762 this.postMessageTransfers = true;
16763 this.streamSinks = Object.create(null);
16764 this.streamControllers = Object.create(null);
16765 var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
16766 var ah = this.actionHandler = Object.create(null);
16767
16768 this._onComObjOnMessage = function (event) {
16769 var data = event.data;
16770
16771 if (data.targetName !== _this.sourceName) {
16772 return;
16773 }
16774
16775 if (data.stream) {
16776 _this._processStreamMessage(data);
16777 } else if (data.isReply) {
16778 var callbackId = data.callbackId;
16779
16780 if (data.callbackId in callbacksCapabilities) {
16781 var callback = callbacksCapabilities[callbackId];
16782 delete callbacksCapabilities[callbackId];
16783
16784 if ('error' in data) {
16785 callback.reject(wrapReason(data.error));
16786 } else {
16787 callback.resolve(data.data);
16788 }
16789 } else {
16790 throw new Error("Cannot resolve callback ".concat(callbackId));
16791 }
16792 } else if (data.action in ah) {
16793 var action = ah[data.action];
16794
16795 if (data.callbackId) {
16796 var _sourceName = _this.sourceName;
16797 var _targetName = data.sourceName;
16798 Promise.resolve().then(function () {
16799 return action[0].call(action[1], data.data);
16800 }).then(function (result) {
16801 comObj.postMessage({
16802 sourceName: _sourceName,
16803 targetName: _targetName,
16804 isReply: true,
16805 callbackId: data.callbackId,
16806 data: result
16807 });
16808 }, function (reason) {
16809 comObj.postMessage({
16810 sourceName: _sourceName,
16811 targetName: _targetName,
16812 isReply: true,
16813 callbackId: data.callbackId,
16814 error: makeReasonSerializable(reason)
16815 });
16816 });
16817 } else if (data.streamId) {
16818 _this._createStreamSink(data);
16819 } else {
16820 action[0].call(action[1], data.data);
16821 }
16822 } else {
16823 throw new Error("Unknown action from worker: ".concat(data.action));
16824 }
16825 };
16826
16827 comObj.addEventListener('message', this._onComObjOnMessage);
16828}
16829
16830MessageHandler.prototype = {
16831 on: function on(actionName, handler, scope) {
16832 var ah = this.actionHandler;
16833
16834 if (ah[actionName]) {
16835 throw new Error("There is already an actionName called \"".concat(actionName, "\""));
16836 }
16837
16838 ah[actionName] = [handler, scope];
16839 },
16840 send: function send(actionName, data, transfers) {
16841 var message = {
16842 sourceName: this.sourceName,
16843 targetName: this.targetName,
16844 action: actionName,
16845 data: data
16846 };
16847 this.postMessage(message, transfers);
16848 },
16849 sendWithPromise: function sendWithPromise(actionName, data, transfers) {
16850 var callbackId = this.callbackId++;
16851 var message = {
16852 sourceName: this.sourceName,
16853 targetName: this.targetName,
16854 action: actionName,
16855 data: data,
16856 callbackId: callbackId
16857 };
16858 var capability = (0, _util.createPromiseCapability)();
16859 this.callbacksCapabilities[callbackId] = capability;
16860
16861 try {
16862 this.postMessage(message, transfers);
16863 } catch (e) {
16864 capability.reject(e);
16865 }
16866
16867 return capability.promise;
16868 },
16869 sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
16870 var _this2 = this;
16871
16872 var streamId = this.streamId++;
16873 var sourceName = this.sourceName;
16874 var targetName = this.targetName;
16875 return new _util.ReadableStream({
16876 start: function start(controller) {
16877 var startCapability = (0, _util.createPromiseCapability)();
16878 _this2.streamControllers[streamId] = {
16879 controller: controller,
16880 startCall: startCapability,
16881 isClosed: false
16882 };
16883
16884 _this2.postMessage({
16885 sourceName: sourceName,
16886 targetName: targetName,
16887 action: actionName,
16888 streamId: streamId,
16889 data: data,
16890 desiredSize: controller.desiredSize
16891 });
16892
16893 return startCapability.promise;
16894 },
16895 pull: function pull(controller) {
16896 var pullCapability = (0, _util.createPromiseCapability)();
16897 _this2.streamControllers[streamId].pullCall = pullCapability;
16898
16899 _this2.postMessage({
16900 sourceName: sourceName,
16901 targetName: targetName,
16902 stream: 'pull',
16903 streamId: streamId,
16904 desiredSize: controller.desiredSize
16905 });
16906
16907 return pullCapability.promise;
16908 },
16909 cancel: function cancel(reason) {
16910 var cancelCapability = (0, _util.createPromiseCapability)();
16911 _this2.streamControllers[streamId].cancelCall = cancelCapability;
16912 _this2.streamControllers[streamId].isClosed = true;
16913
16914 _this2.postMessage({
16915 sourceName: sourceName,
16916 targetName: targetName,
16917 stream: 'cancel',
16918 reason: reason,
16919 streamId: streamId
16920 });
16921
16922 return cancelCapability.promise;
16923 }
16924 }, queueingStrategy);
16925 },
16926 _createStreamSink: function _createStreamSink(data) {
16927 var _this3 = this;
16928
16929 var self = this;
16930 var action = this.actionHandler[data.action];
16931 var streamId = data.streamId;
16932 var desiredSize = data.desiredSize;
16933 var sourceName = this.sourceName;
16934 var targetName = data.sourceName;
16935 var capability = (0, _util.createPromiseCapability)();
16936
16937 var sendStreamRequest = function sendStreamRequest(_ref) {
16938 var stream = _ref.stream,
16939 chunk = _ref.chunk,
16940 transfers = _ref.transfers,
16941 success = _ref.success,
16942 reason = _ref.reason;
16943
16944 _this3.postMessage({
16945 sourceName: sourceName,
16946 targetName: targetName,
16947 stream: stream,
16948 streamId: streamId,
16949 chunk: chunk,
16950 success: success,
16951 reason: reason
16952 }, transfers);
16953 };
16954
16955 var streamSink = {
16956 enqueue: function enqueue(chunk) {
16957 var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
16958 var transfers = arguments.length > 2 ? arguments[2] : undefined;
16959
16960 if (this.isCancelled) {
16961 return;
16962 }
16963
16964 var lastDesiredSize = this.desiredSize;
16965 this.desiredSize -= size;
16966
16967 if (lastDesiredSize > 0 && this.desiredSize <= 0) {
16968 this.sinkCapability = (0, _util.createPromiseCapability)();
16969 this.ready = this.sinkCapability.promise;
16970 }
16971
16972 sendStreamRequest({
16973 stream: 'enqueue',
16974 chunk: chunk,
16975 transfers: transfers
16976 });
16977 },
16978 close: function close() {
16979 if (this.isCancelled) {
16980 return;
16981 }
16982
16983 this.isCancelled = true;
16984 sendStreamRequest({
16985 stream: 'close'
16986 });
16987 delete self.streamSinks[streamId];
16988 },
16989 error: function error(reason) {
16990 if (this.isCancelled) {
16991 return;
16992 }
16993
16994 this.isCancelled = true;
16995 sendStreamRequest({
16996 stream: 'error',
16997 reason: reason
16998 });
16999 },
17000 sinkCapability: capability,
17001 onPull: null,
17002 onCancel: null,
17003 isCancelled: false,
17004 desiredSize: desiredSize,
17005 ready: null
17006 };
17007 streamSink.sinkCapability.resolve();
17008 streamSink.ready = streamSink.sinkCapability.promise;
17009 this.streamSinks[streamId] = streamSink;
17010 resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
17011 sendStreamRequest({
17012 stream: 'start_complete',
17013 success: true
17014 });
17015 }, function (reason) {
17016 sendStreamRequest({
17017 stream: 'start_complete',
17018 success: false,
17019 reason: reason
17020 });
17021 });
17022 },
17023 _processStreamMessage: function _processStreamMessage(data) {
17024 var _this4 = this;
17025
17026 var sourceName = this.sourceName;
17027 var targetName = data.sourceName;
17028 var streamId = data.streamId;
17029
17030 var sendStreamResponse = function sendStreamResponse(_ref2) {
17031 var stream = _ref2.stream,
17032 success = _ref2.success,
17033 reason = _ref2.reason;
17034
17035 _this4.comObj.postMessage({
17036 sourceName: sourceName,
17037 targetName: targetName,
17038 stream: stream,
17039 success: success,
17040 streamId: streamId,
17041 reason: reason
17042 });
17043 };
17044
17045 var deleteStreamController = function deleteStreamController() {
17046 Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
17047 return capability && finalize(capability.promise);
17048 })).then(function () {
17049 delete _this4.streamControllers[data.streamId];
17050 });
17051 };
17052
17053 switch (data.stream) {
17054 case 'start_complete':
17055 resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
17056 break;
17057
17058 case 'pull_complete':
17059 resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
17060 break;
17061
17062 case 'pull':
17063 if (!this.streamSinks[data.streamId]) {
17064 sendStreamResponse({
17065 stream: 'pull_complete',
17066 success: true
17067 });
17068 break;
17069 }
17070
17071 if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
17072 this.streamSinks[data.streamId].sinkCapability.resolve();
17073 }
17074
17075 this.streamSinks[data.streamId].desiredSize = data.desiredSize;
17076 resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
17077 sendStreamResponse({
17078 stream: 'pull_complete',
17079 success: true
17080 });
17081 }, function (reason) {
17082 sendStreamResponse({
17083 stream: 'pull_complete',
17084 success: false,
17085 reason: reason
17086 });
17087 });
17088 break;
17089
17090 case 'enqueue':
17091 (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
17092
17093 if (!this.streamControllers[data.streamId].isClosed) {
17094 this.streamControllers[data.streamId].controller.enqueue(data.chunk);
17095 }
17096
17097 break;
17098
17099 case 'close':
17100 (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
17101
17102 if (this.streamControllers[data.streamId].isClosed) {
17103 break;
17104 }
17105
17106 this.streamControllers[data.streamId].isClosed = true;
17107 this.streamControllers[data.streamId].controller.close();
17108 deleteStreamController();
17109 break;
17110
17111 case 'error':
17112 (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
17113 this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
17114 deleteStreamController();
17115 break;
17116
17117 case 'cancel_complete':
17118 resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
17119 deleteStreamController();
17120 break;
17121
17122 case 'cancel':
17123 if (!this.streamSinks[data.streamId]) {
17124 break;
17125 }
17126
17127 resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
17128 sendStreamResponse({
17129 stream: 'cancel_complete',
17130 success: true
17131 });
17132 }, function (reason) {
17133 sendStreamResponse({
17134 stream: 'cancel_complete',
17135 success: false,
17136 reason: reason
17137 });
17138 });
17139 this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
17140 this.streamSinks[data.streamId].isCancelled = true;
17141 delete this.streamSinks[data.streamId];
17142 break;
17143
17144 default:
17145 throw new Error('Unexpected stream case');
17146 }
17147 },
17148 postMessage: function postMessage(message, transfers) {
17149 if (transfers && this.postMessageTransfers) {
17150 this.comObj.postMessage(message, transfers);
17151 } else {
17152 this.comObj.postMessage(message);
17153 }
17154 },
17155 destroy: function destroy() {
17156 this.comObj.removeEventListener('message', this._onComObjOnMessage);
17157 }
17158};
17159
17160/***/ }),
17161/* 158 */
17162/***/ (function(module, exports, __w_pdfjs_require__) {
17163
17164"use strict";
17165
17166
17167Object.defineProperty(exports, "__esModule", {
17168 value: true
17169});
17170exports.Metadata = void 0;
17171
17172var _util = __w_pdfjs_require__(1);
17173
17174var _xml_parser = __w_pdfjs_require__(159);
17175
17176function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17177
17178function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17179
17180function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17181
17182var Metadata =
17183/*#__PURE__*/
17184function () {
17185 function Metadata(data) {
17186 _classCallCheck(this, Metadata);
17187
17188 (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
17189 data = this._repair(data);
17190 var parser = new _xml_parser.SimpleXMLParser();
17191 var xmlDocument = parser.parseFromString(data);
17192 this._metadata = Object.create(null);
17193
17194 if (xmlDocument) {
17195 this._parse(xmlDocument);
17196 }
17197 }
17198
17199 _createClass(Metadata, [{
17200 key: "_repair",
17201 value: function _repair(data) {
17202 return data.replace(/^([^<]+)/, '').replace(/>\\376\\377([^<]+)/g, function (all, codes) {
17203 var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
17204 return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
17205 }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
17206 switch (name) {
17207 case 'amp':
17208 return '&';
17209
17210 case 'apos':
17211 return '\'';
17212
17213 case 'gt':
17214 return '>';
17215
17216 case 'lt':
17217 return '<';
17218
17219 case 'quot':
17220 return '\"';
17221 }
17222
17223 throw new Error("_repair: ".concat(name, " isn't defined."));
17224 });
17225 var chars = '';
17226
17227 for (var i = 0, ii = bytes.length; i < ii; i += 2) {
17228 var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
17229
17230 if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
17231 chars += String.fromCharCode(code);
17232 } else {
17233 chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
17234 }
17235 }
17236
17237 return '>' + chars;
17238 });
17239 }
17240 }, {
17241 key: "_parse",
17242 value: function _parse(xmlDocument) {
17243 var rdf = xmlDocument.documentElement;
17244
17245 if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
17246 rdf = rdf.firstChild;
17247
17248 while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
17249 rdf = rdf.nextSibling;
17250 }
17251 }
17252
17253 var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
17254
17255 if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
17256 return;
17257 }
17258
17259 var children = rdf.childNodes;
17260
17261 for (var i = 0, ii = children.length; i < ii; i++) {
17262 var desc = children[i];
17263
17264 if (desc.nodeName.toLowerCase() !== 'rdf:description') {
17265 continue;
17266 }
17267
17268 for (var j = 0, jj = desc.childNodes.length; j < jj; j++) {
17269 if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
17270 var entry = desc.childNodes[j];
17271 var name = entry.nodeName.toLowerCase();
17272 this._metadata[name] = entry.textContent.trim();
17273 }
17274 }
17275 }
17276 }
17277 }, {
17278 key: "get",
17279 value: function get(name) {
17280 var data = this._metadata[name];
17281 return typeof data !== 'undefined' ? data : null;
17282 }
17283 }, {
17284 key: "getAll",
17285 value: function getAll() {
17286 return this._metadata;
17287 }
17288 }, {
17289 key: "has",
17290 value: function has(name) {
17291 return typeof this._metadata[name] !== 'undefined';
17292 }
17293 }]);
17294
17295 return Metadata;
17296}();
17297
17298exports.Metadata = Metadata;
17299
17300/***/ }),
17301/* 159 */
17302/***/ (function(module, exports, __w_pdfjs_require__) {
17303
17304"use strict";
17305
17306
17307Object.defineProperty(exports, "__esModule", {
17308 value: true
17309});
17310exports.SimpleXMLParser = void 0;
17311
17312function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17313
17314function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
17315
17316function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
17317
17318function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
17319
17320function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17321
17322function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
17323
17324function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
17325
17326function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
17327
17328function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
17329
17330function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
17331
17332function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
17333
17334function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
17335
17336function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17337
17338function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17339
17340function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17341
17342var XMLParserErrorCode = {
17343 NoError: 0,
17344 EndOfDocument: -1,
17345 UnterminatedCdat: -2,
17346 UnterminatedXmlDeclaration: -3,
17347 UnterminatedDoctypeDeclaration: -4,
17348 UnterminatedComment: -5,
17349 MalformedElement: -6,
17350 OutOfMemory: -7,
17351 UnterminatedAttributeValue: -8,
17352 UnterminatedElement: -9,
17353 ElementNeverBegun: -10
17354};
17355
17356function isWhitespace(s, index) {
17357 var ch = s[index];
17358 return ch === ' ' || ch === '\n' || ch === '\r' || ch === '\t';
17359}
17360
17361function isWhitespaceString(s) {
17362 for (var i = 0, ii = s.length; i < ii; i++) {
17363 if (!isWhitespace(s, i)) {
17364 return false;
17365 }
17366 }
17367
17368 return true;
17369}
17370
17371var XMLParserBase =
17372/*#__PURE__*/
17373function () {
17374 function XMLParserBase() {
17375 _classCallCheck(this, XMLParserBase);
17376 }
17377
17378 _createClass(XMLParserBase, [{
17379 key: "_resolveEntities",
17380 value: function _resolveEntities(s) {
17381 var _this = this;
17382
17383 return s.replace(/&([^;]+);/g, function (all, entity) {
17384 if (entity.substring(0, 2) === '#x') {
17385 return String.fromCharCode(parseInt(entity.substring(2), 16));
17386 } else if (entity.substring(0, 1) === '#') {
17387 return String.fromCharCode(parseInt(entity.substring(1), 10));
17388 }
17389
17390 switch (entity) {
17391 case 'lt':
17392 return '<';
17393
17394 case 'gt':
17395 return '>';
17396
17397 case 'amp':
17398 return '&';
17399
17400 case 'quot':
17401 return '\"';
17402 }
17403
17404 return _this.onResolveEntity(entity);
17405 });
17406 }
17407 }, {
17408 key: "_parseContent",
17409 value: function _parseContent(s, start) {
17410 var pos = start,
17411 name,
17412 attributes = [];
17413
17414 function skipWs() {
17415 while (pos < s.length && isWhitespace(s, pos)) {
17416 ++pos;
17417 }
17418 }
17419
17420 while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
17421 ++pos;
17422 }
17423
17424 name = s.substring(start, pos);
17425 skipWs();
17426
17427 while (pos < s.length && s[pos] !== '>' && s[pos] !== '/' && s[pos] !== '?') {
17428 skipWs();
17429 var attrName = '',
17430 attrValue = '';
17431
17432 while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {
17433 attrName += s[pos];
17434 ++pos;
17435 }
17436
17437 skipWs();
17438
17439 if (s[pos] !== '=') {
17440 return null;
17441 }
17442
17443 ++pos;
17444 skipWs();
17445 var attrEndChar = s[pos];
17446
17447 if (attrEndChar !== '\"' && attrEndChar !== '\'') {
17448 return null;
17449 }
17450
17451 var attrEndIndex = s.indexOf(attrEndChar, ++pos);
17452
17453 if (attrEndIndex < 0) {
17454 return null;
17455 }
17456
17457 attrValue = s.substring(pos, attrEndIndex);
17458 attributes.push({
17459 name: attrName,
17460 value: this._resolveEntities(attrValue)
17461 });
17462 pos = attrEndIndex + 1;
17463 skipWs();
17464 }
17465
17466 return {
17467 name: name,
17468 attributes: attributes,
17469 parsed: pos - start
17470 };
17471 }
17472 }, {
17473 key: "_parseProcessingInstruction",
17474 value: function _parseProcessingInstruction(s, start) {
17475 var pos = start,
17476 name,
17477 value;
17478
17479 function skipWs() {
17480 while (pos < s.length && isWhitespace(s, pos)) {
17481 ++pos;
17482 }
17483 }
17484
17485 while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '>' && s[pos] !== '/') {
17486 ++pos;
17487 }
17488
17489 name = s.substring(start, pos);
17490 skipWs();
17491 var attrStart = pos;
17492
17493 while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {
17494 ++pos;
17495 }
17496
17497 value = s.substring(attrStart, pos);
17498 return {
17499 name: name,
17500 value: value,
17501 parsed: pos - start
17502 };
17503 }
17504 }, {
17505 key: "parseXml",
17506 value: function parseXml(s) {
17507 var i = 0;
17508
17509 while (i < s.length) {
17510 var ch = s[i];
17511 var j = i;
17512
17513 if (ch === '<') {
17514 ++j;
17515 var ch2 = s[j];
17516 var q = void 0;
17517
17518 switch (ch2) {
17519 case '/':
17520 ++j;
17521 q = s.indexOf('>', j);
17522
17523 if (q < 0) {
17524 this.onError(XMLParserErrorCode.UnterminatedElement);
17525 return;
17526 }
17527
17528 this.onEndElement(s.substring(j, q));
17529 j = q + 1;
17530 break;
17531
17532 case '?':
17533 ++j;
17534
17535 var pi = this._parseProcessingInstruction(s, j);
17536
17537 if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {
17538 this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
17539 return;
17540 }
17541
17542 this.onPi(pi.name, pi.value);
17543 j += pi.parsed + 2;
17544 break;
17545
17546 case '!':
17547 if (s.substring(j + 1, j + 3) === '--') {
17548 q = s.indexOf('-->', j + 3);
17549
17550 if (q < 0) {
17551 this.onError(XMLParserErrorCode.UnterminatedComment);
17552 return;
17553 }
17554
17555 this.onComment(s.substring(j + 3, q));
17556 j = q + 3;
17557 } else if (s.substring(j + 1, j + 8) === '[CDATA[') {
17558 q = s.indexOf(']]>', j + 8);
17559
17560 if (q < 0) {
17561 this.onError(XMLParserErrorCode.UnterminatedCdat);
17562 return;
17563 }
17564
17565 this.onCdata(s.substring(j + 8, q));
17566 j = q + 3;
17567 } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {
17568 var q2 = s.indexOf('[', j + 8);
17569 var complexDoctype = false;
17570 q = s.indexOf('>', j + 8);
17571
17572 if (q < 0) {
17573 this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
17574 return;
17575 }
17576
17577 if (q2 > 0 && q > q2) {
17578 q = s.indexOf(']>', j + 8);
17579
17580 if (q < 0) {
17581 this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
17582 return;
17583 }
17584
17585 complexDoctype = true;
17586 }
17587
17588 var doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
17589 this.onDoctype(doctypeContent);
17590 j = q + (complexDoctype ? 2 : 1);
17591 } else {
17592 this.onError(XMLParserErrorCode.MalformedElement);
17593 return;
17594 }
17595
17596 break;
17597
17598 default:
17599 var content = this._parseContent(s, j);
17600
17601 if (content === null) {
17602 this.onError(XMLParserErrorCode.MalformedElement);
17603 return;
17604 }
17605
17606 var isClosed = false;
17607
17608 if (s.substring(j + content.parsed, j + content.parsed + 2) === '/>') {
17609 isClosed = true;
17610 } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== '>') {
17611 this.onError(XMLParserErrorCode.UnterminatedElement);
17612 return;
17613 }
17614
17615 this.onBeginElement(content.name, content.attributes, isClosed);
17616 j += content.parsed + (isClosed ? 2 : 1);
17617 break;
17618 }
17619 } else {
17620 while (j < s.length && s[j] !== '<') {
17621 j++;
17622 }
17623
17624 var text = s.substring(i, j);
17625 this.onText(this._resolveEntities(text));
17626 }
17627
17628 i = j;
17629 }
17630 }
17631 }, {
17632 key: "onResolveEntity",
17633 value: function onResolveEntity(name) {
17634 return "&".concat(name, ";");
17635 }
17636 }, {
17637 key: "onPi",
17638 value: function onPi(name, value) {}
17639 }, {
17640 key: "onComment",
17641 value: function onComment(text) {}
17642 }, {
17643 key: "onCdata",
17644 value: function onCdata(text) {}
17645 }, {
17646 key: "onDoctype",
17647 value: function onDoctype(doctypeContent) {}
17648 }, {
17649 key: "onText",
17650 value: function onText(text) {}
17651 }, {
17652 key: "onBeginElement",
17653 value: function onBeginElement(name, attributes, isEmpty) {}
17654 }, {
17655 key: "onEndElement",
17656 value: function onEndElement(name) {}
17657 }, {
17658 key: "onError",
17659 value: function onError(code) {}
17660 }]);
17661
17662 return XMLParserBase;
17663}();
17664
17665var SimpleDOMNode =
17666/*#__PURE__*/
17667function () {
17668 function SimpleDOMNode(nodeName, nodeValue) {
17669 _classCallCheck(this, SimpleDOMNode);
17670
17671 this.nodeName = nodeName;
17672 this.nodeValue = nodeValue;
17673 Object.defineProperty(this, 'parentNode', {
17674 value: null,
17675 writable: true
17676 });
17677 }
17678
17679 _createClass(SimpleDOMNode, [{
17680 key: "hasChildNodes",
17681 value: function hasChildNodes() {
17682 return this.childNodes && this.childNodes.length > 0;
17683 }
17684 }, {
17685 key: "firstChild",
17686 get: function get() {
17687 return this.childNodes && this.childNodes[0];
17688 }
17689 }, {
17690 key: "nextSibling",
17691 get: function get() {
17692 var childNodes = this.parentNode.childNodes;
17693
17694 if (!childNodes) {
17695 return undefined;
17696 }
17697
17698 var index = childNodes.indexOf(this);
17699
17700 if (index === -1) {
17701 return undefined;
17702 }
17703
17704 return childNodes[index + 1];
17705 }
17706 }, {
17707 key: "textContent",
17708 get: function get() {
17709 if (!this.childNodes) {
17710 return this.nodeValue || '';
17711 }
17712
17713 return this.childNodes.map(function (child) {
17714 return child.textContent;
17715 }).join('');
17716 }
17717 }]);
17718
17719 return SimpleDOMNode;
17720}();
17721
17722var SimpleXMLParser =
17723/*#__PURE__*/
17724function (_XMLParserBase) {
17725 _inherits(SimpleXMLParser, _XMLParserBase);
17726
17727 function SimpleXMLParser() {
17728 var _this2;
17729
17730 _classCallCheck(this, SimpleXMLParser);
17731
17732 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(SimpleXMLParser).call(this));
17733 _this2._currentFragment = null;
17734 _this2._stack = null;
17735 _this2._errorCode = XMLParserErrorCode.NoError;
17736 return _this2;
17737 }
17738
17739 _createClass(SimpleXMLParser, [{
17740 key: "parseFromString",
17741 value: function parseFromString(data) {
17742 this._currentFragment = [];
17743 this._stack = [];
17744 this._errorCode = XMLParserErrorCode.NoError;
17745 this.parseXml(data);
17746
17747 if (this._errorCode !== XMLParserErrorCode.NoError) {
17748 return undefined;
17749 }
17750
17751 var _this$_currentFragmen = _slicedToArray(this._currentFragment, 1),
17752 documentElement = _this$_currentFragmen[0];
17753
17754 if (!documentElement) {
17755 return undefined;
17756 }
17757
17758 return {
17759 documentElement: documentElement
17760 };
17761 }
17762 }, {
17763 key: "onResolveEntity",
17764 value: function onResolveEntity(name) {
17765 switch (name) {
17766 case 'apos':
17767 return '\'';
17768 }
17769
17770 return _get(_getPrototypeOf(SimpleXMLParser.prototype), "onResolveEntity", this).call(this, name);
17771 }
17772 }, {
17773 key: "onText",
17774 value: function onText(text) {
17775 if (isWhitespaceString(text)) {
17776 return;
17777 }
17778
17779 var node = new SimpleDOMNode('#text', text);
17780
17781 this._currentFragment.push(node);
17782 }
17783 }, {
17784 key: "onCdata",
17785 value: function onCdata(text) {
17786 var node = new SimpleDOMNode('#text', text);
17787
17788 this._currentFragment.push(node);
17789 }
17790 }, {
17791 key: "onBeginElement",
17792 value: function onBeginElement(name, attributes, isEmpty) {
17793 var node = new SimpleDOMNode(name);
17794 node.childNodes = [];
17795
17796 this._currentFragment.push(node);
17797
17798 if (isEmpty) {
17799 return;
17800 }
17801
17802 this._stack.push(this._currentFragment);
17803
17804 this._currentFragment = node.childNodes;
17805 }
17806 }, {
17807 key: "onEndElement",
17808 value: function onEndElement(name) {
17809 this._currentFragment = this._stack.pop() || [];
17810 var lastElement = this._currentFragment[this._currentFragment.length - 1];
17811
17812 if (!lastElement) {
17813 return;
17814 }
17815
17816 for (var i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
17817 lastElement.childNodes[i].parentNode = lastElement;
17818 }
17819 }
17820 }, {
17821 key: "onError",
17822 value: function onError(code) {
17823 this._errorCode = code;
17824 }
17825 }]);
17826
17827 return SimpleXMLParser;
17828}(XMLParserBase);
17829
17830exports.SimpleXMLParser = SimpleXMLParser;
17831
17832/***/ }),
17833/* 160 */
17834/***/ (function(module, exports, __w_pdfjs_require__) {
17835
17836"use strict";
17837
17838
17839Object.defineProperty(exports, "__esModule", {
17840 value: true
17841});
17842exports.PDFDataTransportStream = void 0;
17843
17844var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
17845
17846var _util = __w_pdfjs_require__(1);
17847
17848function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17849
17850function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
17851
17852function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17853
17854function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17855
17856function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17857
17858function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
17859
17860var PDFDataTransportStream =
17861/*#__PURE__*/
17862function () {
17863 function PDFDataTransportStream(params, pdfDataRangeTransport) {
17864 var _this = this;
17865
17866 _classCallCheck(this, PDFDataTransportStream);
17867
17868 (0, _util.assert)(pdfDataRangeTransport);
17869 this._queuedChunks = [];
17870 this._progressiveDone = params.progressiveDone || false;
17871 var initialData = params.initialData;
17872
17873 if (initialData && initialData.length > 0) {
17874 var buffer = new Uint8Array(initialData).buffer;
17875
17876 this._queuedChunks.push(buffer);
17877 }
17878
17879 this._pdfDataRangeTransport = pdfDataRangeTransport;
17880 this._isStreamingSupported = !params.disableStream;
17881 this._isRangeSupported = !params.disableRange;
17882 this._contentLength = params.length;
17883 this._fullRequestReader = null;
17884 this._rangeReaders = [];
17885
17886 this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) {
17887 _this._onReceiveData({
17888 begin: begin,
17889 chunk: chunk
17890 });
17891 });
17892
17893 this._pdfDataRangeTransport.addProgressListener(function (loaded, total) {
17894 _this._onProgress({
17895 loaded: loaded,
17896 total: total
17897 });
17898 });
17899
17900 this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {
17901 _this._onReceiveData({
17902 chunk: chunk
17903 });
17904 });
17905
17906 this._pdfDataRangeTransport.addProgressiveDoneListener(function () {
17907 _this._onProgressiveDone();
17908 });
17909
17910 this._pdfDataRangeTransport.transportReady();
17911 }
17912
17913 _createClass(PDFDataTransportStream, [{
17914 key: "_onReceiveData",
17915 value: function _onReceiveData(args) {
17916 var buffer = new Uint8Array(args.chunk).buffer;
17917
17918 if (args.begin === undefined) {
17919 if (this._fullRequestReader) {
17920 this._fullRequestReader._enqueue(buffer);
17921 } else {
17922 this._queuedChunks.push(buffer);
17923 }
17924 } else {
17925 var found = this._rangeReaders.some(function (rangeReader) {
17926 if (rangeReader._begin !== args.begin) {
17927 return false;
17928 }
17929
17930 rangeReader._enqueue(buffer);
17931
17932 return true;
17933 });
17934
17935 (0, _util.assert)(found);
17936 }
17937 }
17938 }, {
17939 key: "_onProgress",
17940 value: function _onProgress(evt) {
17941 if (evt.total === undefined) {
17942 var firstReader = this._rangeReaders[0];
17943
17944 if (firstReader && firstReader.onProgress) {
17945 firstReader.onProgress({
17946 loaded: evt.loaded
17947 });
17948 }
17949 } else {
17950 var fullReader = this._fullRequestReader;
17951
17952 if (fullReader && fullReader.onProgress) {
17953 fullReader.onProgress({
17954 loaded: evt.loaded,
17955 total: evt.total
17956 });
17957 }
17958 }
17959 }
17960 }, {
17961 key: "_onProgressiveDone",
17962 value: function _onProgressiveDone() {
17963 if (this._fullRequestReader) {
17964 this._fullRequestReader.progressiveDone();
17965 }
17966
17967 this._progressiveDone = true;
17968 }
17969 }, {
17970 key: "_removeRangeReader",
17971 value: function _removeRangeReader(reader) {
17972 var i = this._rangeReaders.indexOf(reader);
17973
17974 if (i >= 0) {
17975 this._rangeReaders.splice(i, 1);
17976 }
17977 }
17978 }, {
17979 key: "getFullReader",
17980 value: function getFullReader() {
17981 (0, _util.assert)(!this._fullRequestReader);
17982 var queuedChunks = this._queuedChunks;
17983 this._queuedChunks = null;
17984 return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);
17985 }
17986 }, {
17987 key: "getRangeReader",
17988 value: function getRangeReader(begin, end) {
17989 if (end <= this._progressiveDataLength) {
17990 return null;
17991 }
17992
17993 var reader = new PDFDataTransportStreamRangeReader(this, begin, end);
17994
17995 this._pdfDataRangeTransport.requestDataRange(begin, end);
17996
17997 this._rangeReaders.push(reader);
17998
17999 return reader;
18000 }
18001 }, {
18002 key: "cancelAllRequests",
18003 value: function cancelAllRequests(reason) {
18004 if (this._fullRequestReader) {
18005 this._fullRequestReader.cancel(reason);
18006 }
18007
18008 var readers = this._rangeReaders.slice(0);
18009
18010 readers.forEach(function (rangeReader) {
18011 rangeReader.cancel(reason);
18012 });
18013
18014 this._pdfDataRangeTransport.abort();
18015 }
18016 }, {
18017 key: "_progressiveDataLength",
18018 get: function get() {
18019 return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
18020 }
18021 }]);
18022
18023 return PDFDataTransportStream;
18024}();
18025
18026exports.PDFDataTransportStream = PDFDataTransportStream;
18027
18028var PDFDataTransportStreamReader =
18029/*#__PURE__*/
18030function () {
18031 function PDFDataTransportStreamReader(stream, queuedChunks) {
18032 var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
18033
18034 _classCallCheck(this, PDFDataTransportStreamReader);
18035
18036 this._stream = stream;
18037 this._done = progressiveDone || false;
18038 this._filename = null;
18039 this._queuedChunks = queuedChunks || [];
18040 this._loaded = 0;
18041 var _iteratorNormalCompletion = true;
18042 var _didIteratorError = false;
18043 var _iteratorError = undefined;
18044
18045 try {
18046 for (var _iterator = this._queuedChunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
18047 var chunk = _step.value;
18048 this._loaded += chunk.byteLength;
18049 }
18050 } catch (err) {
18051 _didIteratorError = true;
18052 _iteratorError = err;
18053 } finally {
18054 try {
18055 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
18056 _iterator["return"]();
18057 }
18058 } finally {
18059 if (_didIteratorError) {
18060 throw _iteratorError;
18061 }
18062 }
18063 }
18064
18065 this._requests = [];
18066 this._headersReady = Promise.resolve();
18067 stream._fullRequestReader = this;
18068 this.onProgress = null;
18069 }
18070
18071 _createClass(PDFDataTransportStreamReader, [{
18072 key: "_enqueue",
18073 value: function _enqueue(chunk) {
18074 if (this._done) {
18075 return;
18076 }
18077
18078 if (this._requests.length > 0) {
18079 var requestCapability = this._requests.shift();
18080
18081 requestCapability.resolve({
18082 value: chunk,
18083 done: false
18084 });
18085 } else {
18086 this._queuedChunks.push(chunk);
18087 }
18088
18089 this._loaded += chunk.byteLength;
18090 }
18091 }, {
18092 key: "read",
18093 value: function () {
18094 var _read = _asyncToGenerator(
18095 /*#__PURE__*/
18096 _regenerator["default"].mark(function _callee() {
18097 var chunk, requestCapability;
18098 return _regenerator["default"].wrap(function _callee$(_context) {
18099 while (1) {
18100 switch (_context.prev = _context.next) {
18101 case 0:
18102 if (!(this._queuedChunks.length > 0)) {
18103 _context.next = 3;
18104 break;
18105 }
18106
18107 chunk = this._queuedChunks.shift();
18108 return _context.abrupt("return", {
18109 value: chunk,
18110 done: false
18111 });
18112
18113 case 3:
18114 if (!this._done) {
18115 _context.next = 5;
18116 break;
18117 }
18118
18119 return _context.abrupt("return", {
18120 value: undefined,
18121 done: true
18122 });
18123
18124 case 5:
18125 requestCapability = (0, _util.createPromiseCapability)();
18126
18127 this._requests.push(requestCapability);
18128
18129 return _context.abrupt("return", requestCapability.promise);
18130
18131 case 8:
18132 case "end":
18133 return _context.stop();
18134 }
18135 }
18136 }, _callee, this);
18137 }));
18138
18139 function read() {
18140 return _read.apply(this, arguments);
18141 }
18142
18143 return read;
18144 }()
18145 }, {
18146 key: "cancel",
18147 value: function cancel(reason) {
18148 this._done = true;
18149
18150 this._requests.forEach(function (requestCapability) {
18151 requestCapability.resolve({
18152 value: undefined,
18153 done: true
18154 });
18155 });
18156
18157 this._requests = [];
18158 }
18159 }, {
18160 key: "progressiveDone",
18161 value: function progressiveDone() {
18162 if (this._done) {
18163 return;
18164 }
18165
18166 this._done = true;
18167 }
18168 }, {
18169 key: "headersReady",
18170 get: function get() {
18171 return this._headersReady;
18172 }
18173 }, {
18174 key: "filename",
18175 get: function get() {
18176 return this._filename;
18177 }
18178 }, {
18179 key: "isRangeSupported",
18180 get: function get() {
18181 return this._stream._isRangeSupported;
18182 }
18183 }, {
18184 key: "isStreamingSupported",
18185 get: function get() {
18186 return this._stream._isStreamingSupported;
18187 }
18188 }, {
18189 key: "contentLength",
18190 get: function get() {
18191 return this._stream._contentLength;
18192 }
18193 }]);
18194
18195 return PDFDataTransportStreamReader;
18196}();
18197
18198var PDFDataTransportStreamRangeReader =
18199/*#__PURE__*/
18200function () {
18201 function PDFDataTransportStreamRangeReader(stream, begin, end) {
18202 _classCallCheck(this, PDFDataTransportStreamRangeReader);
18203
18204 this._stream = stream;
18205 this._begin = begin;
18206 this._end = end;
18207 this._queuedChunk = null;
18208 this._requests = [];
18209 this._done = false;
18210 this.onProgress = null;
18211 }
18212
18213 _createClass(PDFDataTransportStreamRangeReader, [{
18214 key: "_enqueue",
18215 value: function _enqueue(chunk) {
18216 if (this._done) {
18217 return;
18218 }
18219
18220 if (this._requests.length === 0) {
18221 this._queuedChunk = chunk;
18222 } else {
18223 var requestsCapability = this._requests.shift();
18224
18225 requestsCapability.resolve({
18226 value: chunk,
18227 done: false
18228 });
18229
18230 this._requests.forEach(function (requestCapability) {
18231 requestCapability.resolve({
18232 value: undefined,
18233 done: true
18234 });
18235 });
18236
18237 this._requests = [];
18238 }
18239
18240 this._done = true;
18241
18242 this._stream._removeRangeReader(this);
18243 }
18244 }, {
18245 key: "read",
18246 value: function () {
18247 var _read2 = _asyncToGenerator(
18248 /*#__PURE__*/
18249 _regenerator["default"].mark(function _callee2() {
18250 var chunk, requestCapability;
18251 return _regenerator["default"].wrap(function _callee2$(_context2) {
18252 while (1) {
18253 switch (_context2.prev = _context2.next) {
18254 case 0:
18255 if (!this._queuedChunk) {
18256 _context2.next = 4;
18257 break;
18258 }
18259
18260 chunk = this._queuedChunk;
18261 this._queuedChunk = null;
18262 return _context2.abrupt("return", {
18263 value: chunk,
18264 done: false
18265 });
18266
18267 case 4:
18268 if (!this._done) {
18269 _context2.next = 6;
18270 break;
18271 }
18272
18273 return _context2.abrupt("return", {
18274 value: undefined,
18275 done: true
18276 });
18277
18278 case 6:
18279 requestCapability = (0, _util.createPromiseCapability)();
18280
18281 this._requests.push(requestCapability);
18282
18283 return _context2.abrupt("return", requestCapability.promise);
18284
18285 case 9:
18286 case "end":
18287 return _context2.stop();
18288 }
18289 }
18290 }, _callee2, this);
18291 }));
18292
18293 function read() {
18294 return _read2.apply(this, arguments);
18295 }
18296
18297 return read;
18298 }()
18299 }, {
18300 key: "cancel",
18301 value: function cancel(reason) {
18302 this._done = true;
18303
18304 this._requests.forEach(function (requestCapability) {
18305 requestCapability.resolve({
18306 value: undefined,
18307 done: true
18308 });
18309 });
18310
18311 this._requests = [];
18312
18313 this._stream._removeRangeReader(this);
18314 }
18315 }, {
18316 key: "isStreamingSupported",
18317 get: function get() {
18318 return false;
18319 }
18320 }]);
18321
18322 return PDFDataTransportStreamRangeReader;
18323}();
18324
18325/***/ }),
18326/* 161 */
18327/***/ (function(module, exports, __w_pdfjs_require__) {
18328
18329"use strict";
18330
18331
18332Object.defineProperty(exports, "__esModule", {
18333 value: true
18334});
18335exports.WebGLContext = void 0;
18336
18337var _util = __w_pdfjs_require__(1);
18338
18339function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18340
18341function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
18342
18343function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
18344
18345var WebGLContext =
18346/*#__PURE__*/
18347function () {
18348 function WebGLContext(_ref) {
18349 var _ref$enable = _ref.enable,
18350 enable = _ref$enable === void 0 ? false : _ref$enable;
18351
18352 _classCallCheck(this, WebGLContext);
18353
18354 this._enabled = enable === true;
18355 }
18356
18357 _createClass(WebGLContext, [{
18358 key: "composeSMask",
18359 value: function composeSMask(_ref2) {
18360 var layer = _ref2.layer,
18361 mask = _ref2.mask,
18362 properties = _ref2.properties;
18363 return WebGLUtils.composeSMask(layer, mask, properties);
18364 }
18365 }, {
18366 key: "drawFigures",
18367 value: function drawFigures(_ref3) {
18368 var width = _ref3.width,
18369 height = _ref3.height,
18370 backgroundColor = _ref3.backgroundColor,
18371 figures = _ref3.figures,
18372 context = _ref3.context;
18373 return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);
18374 }
18375 }, {
18376 key: "clear",
18377 value: function clear() {
18378 WebGLUtils.cleanup();
18379 }
18380 }, {
18381 key: "isEnabled",
18382 get: function get() {
18383 var enabled = this._enabled;
18384
18385 if (enabled) {
18386 enabled = WebGLUtils.tryInitGL();
18387 }
18388
18389 return (0, _util.shadow)(this, 'isEnabled', enabled);
18390 }
18391 }]);
18392
18393 return WebGLContext;
18394}();
18395
18396exports.WebGLContext = WebGLContext;
18397
18398var WebGLUtils = function WebGLUtilsClosure() {
18399 function loadShader(gl, code, shaderType) {
18400 var shader = gl.createShader(shaderType);
18401 gl.shaderSource(shader, code);
18402 gl.compileShader(shader);
18403 var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
18404
18405 if (!compiled) {
18406 var errorMsg = gl.getShaderInfoLog(shader);
18407 throw new Error('Error during shader compilation: ' + errorMsg);
18408 }
18409
18410 return shader;
18411 }
18412
18413 function createVertexShader(gl, code) {
18414 return loadShader(gl, code, gl.VERTEX_SHADER);
18415 }
18416
18417 function createFragmentShader(gl, code) {
18418 return loadShader(gl, code, gl.FRAGMENT_SHADER);
18419 }
18420
18421 function createProgram(gl, shaders) {
18422 var program = gl.createProgram();
18423
18424 for (var i = 0, ii = shaders.length; i < ii; ++i) {
18425 gl.attachShader(program, shaders[i]);
18426 }
18427
18428 gl.linkProgram(program);
18429 var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
18430
18431 if (!linked) {
18432 var errorMsg = gl.getProgramInfoLog(program);
18433 throw new Error('Error during program linking: ' + errorMsg);
18434 }
18435
18436 return program;
18437 }
18438
18439 function createTexture(gl, image, textureId) {
18440 gl.activeTexture(textureId);
18441 var texture = gl.createTexture();
18442 gl.bindTexture(gl.TEXTURE_2D, texture);
18443 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
18444 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
18445 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
18446 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
18447 gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
18448 return texture;
18449 }
18450
18451 var currentGL, currentCanvas;
18452
18453 function generateGL() {
18454 if (currentGL) {
18455 return;
18456 }
18457
18458 currentCanvas = document.createElement('canvas');
18459 currentGL = currentCanvas.getContext('webgl', {
18460 premultipliedalpha: false
18461 });
18462 }
18463
18464 var smaskVertexShaderCode = '\
18465 attribute vec2 a_position; \
18466 attribute vec2 a_texCoord; \
18467 \
18468 uniform vec2 u_resolution; \
18469 \
18470 varying vec2 v_texCoord; \
18471 \
18472 void main() { \
18473 vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \
18474 gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
18475 \
18476 v_texCoord = a_texCoord; \
18477 } ';
18478 var smaskFragmentShaderCode = '\
18479 precision mediump float; \
18480 \
18481 uniform vec4 u_backdrop; \
18482 uniform int u_subtype; \
18483 uniform sampler2D u_image; \
18484 uniform sampler2D u_mask; \
18485 \
18486 varying vec2 v_texCoord; \
18487 \
18488 void main() { \
18489 vec4 imageColor = texture2D(u_image, v_texCoord); \
18490 vec4 maskColor = texture2D(u_mask, v_texCoord); \
18491 if (u_backdrop.a > 0.0) { \
18492 maskColor.rgb = maskColor.rgb * maskColor.a + \
18493 u_backdrop.rgb * (1.0 - maskColor.a); \
18494 } \
18495 float lum; \
18496 if (u_subtype == 0) { \
18497 lum = maskColor.a; \
18498 } else { \
18499 lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \
18500 maskColor.b * 0.11; \
18501 } \
18502 imageColor.a *= lum; \
18503 imageColor.rgb *= imageColor.a; \
18504 gl_FragColor = imageColor; \
18505 } ';
18506 var smaskCache = null;
18507
18508 function initSmaskGL() {
18509 var canvas, gl;
18510 generateGL();
18511 canvas = currentCanvas;
18512 currentCanvas = null;
18513 gl = currentGL;
18514 currentGL = null;
18515 var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
18516 var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
18517 var program = createProgram(gl, [vertexShader, fragmentShader]);
18518 gl.useProgram(program);
18519 var cache = {};
18520 cache.gl = gl;
18521 cache.canvas = canvas;
18522 cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
18523 cache.positionLocation = gl.getAttribLocation(program, 'a_position');
18524 cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
18525 cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
18526 var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
18527 var texLayerLocation = gl.getUniformLocation(program, 'u_image');
18528 var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
18529 var texCoordBuffer = gl.createBuffer();
18530 gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
18531 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);
18532 gl.enableVertexAttribArray(texCoordLocation);
18533 gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
18534 gl.uniform1i(texLayerLocation, 0);
18535 gl.uniform1i(texMaskLocation, 1);
18536 smaskCache = cache;
18537 }
18538
18539 function composeSMask(layer, mask, properties) {
18540 var width = layer.width,
18541 height = layer.height;
18542
18543 if (!smaskCache) {
18544 initSmaskGL();
18545 }
18546
18547 var cache = smaskCache,
18548 canvas = cache.canvas,
18549 gl = cache.gl;
18550 canvas.width = width;
18551 canvas.height = height;
18552 gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
18553 gl.uniform2f(cache.resolutionLocation, width, height);
18554
18555 if (properties.backdrop) {
18556 gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
18557 } else {
18558 gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
18559 }
18560
18561 gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);
18562 var texture = createTexture(gl, layer, gl.TEXTURE0);
18563 var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
18564 var buffer = gl.createBuffer();
18565 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
18566 gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);
18567 gl.enableVertexAttribArray(cache.positionLocation);
18568 gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
18569 gl.clearColor(0, 0, 0, 0);
18570 gl.enable(gl.BLEND);
18571 gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
18572 gl.clear(gl.COLOR_BUFFER_BIT);
18573 gl.drawArrays(gl.TRIANGLES, 0, 6);
18574 gl.flush();
18575 gl.deleteTexture(texture);
18576 gl.deleteTexture(maskTexture);
18577 gl.deleteBuffer(buffer);
18578 return canvas;
18579 }
18580
18581 var figuresVertexShaderCode = '\
18582 attribute vec2 a_position; \
18583 attribute vec3 a_color; \
18584 \
18585 uniform vec2 u_resolution; \
18586 uniform vec2 u_scale; \
18587 uniform vec2 u_offset; \
18588 \
18589 varying vec4 v_color; \
18590 \
18591 void main() { \
18592 vec2 position = (a_position + u_offset) * u_scale; \
18593 vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \
18594 gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
18595 \
18596 v_color = vec4(a_color / 255.0, 1.0); \
18597 } ';
18598 var figuresFragmentShaderCode = '\
18599 precision mediump float; \
18600 \
18601 varying vec4 v_color; \
18602 \
18603 void main() { \
18604 gl_FragColor = v_color; \
18605 } ';
18606 var figuresCache = null;
18607
18608 function initFiguresGL() {
18609 var canvas, gl;
18610 generateGL();
18611 canvas = currentCanvas;
18612 currentCanvas = null;
18613 gl = currentGL;
18614 currentGL = null;
18615 var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
18616 var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
18617 var program = createProgram(gl, [vertexShader, fragmentShader]);
18618 gl.useProgram(program);
18619 var cache = {};
18620 cache.gl = gl;
18621 cache.canvas = canvas;
18622 cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
18623 cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
18624 cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
18625 cache.positionLocation = gl.getAttribLocation(program, 'a_position');
18626 cache.colorLocation = gl.getAttribLocation(program, 'a_color');
18627 figuresCache = cache;
18628 }
18629
18630 function drawFigures(width, height, backgroundColor, figures, context) {
18631 if (!figuresCache) {
18632 initFiguresGL();
18633 }
18634
18635 var cache = figuresCache,
18636 canvas = cache.canvas,
18637 gl = cache.gl;
18638 canvas.width = width;
18639 canvas.height = height;
18640 gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
18641 gl.uniform2f(cache.resolutionLocation, width, height);
18642 var count = 0;
18643 var i, ii, rows;
18644
18645 for (i = 0, ii = figures.length; i < ii; i++) {
18646 switch (figures[i].type) {
18647 case 'lattice':
18648 rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
18649 count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
18650 break;
18651
18652 case 'triangles':
18653 count += figures[i].coords.length;
18654 break;
18655 }
18656 }
18657
18658 var coords = new Float32Array(count * 2);
18659 var colors = new Uint8Array(count * 3);
18660 var coordsMap = context.coords,
18661 colorsMap = context.colors;
18662 var pIndex = 0,
18663 cIndex = 0;
18664
18665 for (i = 0, ii = figures.length; i < ii; i++) {
18666 var figure = figures[i],
18667 ps = figure.coords,
18668 cs = figure.colors;
18669
18670 switch (figure.type) {
18671 case 'lattice':
18672 var cols = figure.verticesPerRow;
18673 rows = ps.length / cols | 0;
18674
18675 for (var row = 1; row < rows; row++) {
18676 var offset = row * cols + 1;
18677
18678 for (var col = 1; col < cols; col++, offset++) {
18679 coords[pIndex] = coordsMap[ps[offset - cols - 1]];
18680 coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
18681 coords[pIndex + 2] = coordsMap[ps[offset - cols]];
18682 coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
18683 coords[pIndex + 4] = coordsMap[ps[offset - 1]];
18684 coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
18685 colors[cIndex] = colorsMap[cs[offset - cols - 1]];
18686 colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
18687 colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
18688 colors[cIndex + 3] = colorsMap[cs[offset - cols]];
18689 colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
18690 colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
18691 colors[cIndex + 6] = colorsMap[cs[offset - 1]];
18692 colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
18693 colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
18694 coords[pIndex + 6] = coords[pIndex + 2];
18695 coords[pIndex + 7] = coords[pIndex + 3];
18696 coords[pIndex + 8] = coords[pIndex + 4];
18697 coords[pIndex + 9] = coords[pIndex + 5];
18698 coords[pIndex + 10] = coordsMap[ps[offset]];
18699 coords[pIndex + 11] = coordsMap[ps[offset] + 1];
18700 colors[cIndex + 9] = colors[cIndex + 3];
18701 colors[cIndex + 10] = colors[cIndex + 4];
18702 colors[cIndex + 11] = colors[cIndex + 5];
18703 colors[cIndex + 12] = colors[cIndex + 6];
18704 colors[cIndex + 13] = colors[cIndex + 7];
18705 colors[cIndex + 14] = colors[cIndex + 8];
18706 colors[cIndex + 15] = colorsMap[cs[offset]];
18707 colors[cIndex + 16] = colorsMap[cs[offset] + 1];
18708 colors[cIndex + 17] = colorsMap[cs[offset] + 2];
18709 pIndex += 12;
18710 cIndex += 18;
18711 }
18712 }
18713
18714 break;
18715
18716 case 'triangles':
18717 for (var j = 0, jj = ps.length; j < jj; j++) {
18718 coords[pIndex] = coordsMap[ps[j]];
18719 coords[pIndex + 1] = coordsMap[ps[j] + 1];
18720 colors[cIndex] = colorsMap[cs[j]];
18721 colors[cIndex + 1] = colorsMap[cs[j] + 1];
18722 colors[cIndex + 2] = colorsMap[cs[j] + 2];
18723 pIndex += 2;
18724 cIndex += 3;
18725 }
18726
18727 break;
18728 }
18729 }
18730
18731 if (backgroundColor) {
18732 gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
18733 } else {
18734 gl.clearColor(0, 0, 0, 0);
18735 }
18736
18737 gl.clear(gl.COLOR_BUFFER_BIT);
18738 var coordsBuffer = gl.createBuffer();
18739 gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
18740 gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
18741 gl.enableVertexAttribArray(cache.positionLocation);
18742 gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
18743 var colorsBuffer = gl.createBuffer();
18744 gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
18745 gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
18746 gl.enableVertexAttribArray(cache.colorLocation);
18747 gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);
18748 gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
18749 gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
18750 gl.drawArrays(gl.TRIANGLES, 0, count);
18751 gl.flush();
18752 gl.deleteBuffer(coordsBuffer);
18753 gl.deleteBuffer(colorsBuffer);
18754 return canvas;
18755 }
18756
18757 return {
18758 tryInitGL: function tryInitGL() {
18759 try {
18760 generateGL();
18761 return !!currentGL;
18762 } catch (ex) {}
18763
18764 return false;
18765 },
18766 composeSMask: composeSMask,
18767 drawFigures: drawFigures,
18768 cleanup: function cleanup() {
18769 if (smaskCache && smaskCache.canvas) {
18770 smaskCache.canvas.width = 0;
18771 smaskCache.canvas.height = 0;
18772 }
18773
18774 if (figuresCache && figuresCache.canvas) {
18775 figuresCache.canvas.width = 0;
18776 figuresCache.canvas.height = 0;
18777 }
18778
18779 smaskCache = null;
18780 figuresCache = null;
18781 }
18782 };
18783}();
18784
18785/***/ }),
18786/* 162 */
18787/***/ (function(module, exports, __w_pdfjs_require__) {
18788
18789"use strict";
18790
18791
18792Object.defineProperty(exports, "__esModule", {
18793 value: true
18794});
18795exports.renderTextLayer = void 0;
18796
18797var _util = __w_pdfjs_require__(1);
18798
18799var _global_scope = _interopRequireDefault(__w_pdfjs_require__(3));
18800
18801function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18802
18803var renderTextLayer = function renderTextLayerClosure() {
18804 var MAX_TEXT_DIVS_TO_RENDER = 100000;
18805 var NonWhitespaceRegexp = /\S/;
18806
18807 function isAllWhitespace(str) {
18808 return !NonWhitespaceRegexp.test(str);
18809 }
18810
18811 var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
18812
18813 function appendText(task, geom, styles) {
18814 var textDiv = document.createElement('span');
18815 var textDivProperties = {
18816 style: null,
18817 angle: 0,
18818 canvasWidth: 0,
18819 isWhitespace: false,
18820 originalTransform: null,
18821 paddingBottom: 0,
18822 paddingLeft: 0,
18823 paddingRight: 0,
18824 paddingTop: 0,
18825 scale: 1
18826 };
18827
18828 task._textDivs.push(textDiv);
18829
18830 if (isAllWhitespace(geom.str)) {
18831 textDivProperties.isWhitespace = true;
18832
18833 task._textDivProperties.set(textDiv, textDivProperties);
18834
18835 return;
18836 }
18837
18838 var tx = _util.Util.transform(task._viewport.transform, geom.transform);
18839
18840 var angle = Math.atan2(tx[1], tx[0]);
18841 var style = styles[geom.fontName];
18842
18843 if (style.vertical) {
18844 angle += Math.PI / 2;
18845 }
18846
18847 var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
18848 var fontAscent = fontHeight;
18849
18850 if (style.ascent) {
18851 fontAscent = style.ascent * fontAscent;
18852 } else if (style.descent) {
18853 fontAscent = (1 + style.descent) * fontAscent;
18854 }
18855
18856 var left;
18857 var top;
18858
18859 if (angle === 0) {
18860 left = tx[4];
18861 top = tx[5] - fontAscent;
18862 } else {
18863 left = tx[4] + fontAscent * Math.sin(angle);
18864 top = tx[5] - fontAscent * Math.cos(angle);
18865 }
18866
18867 styleBuf[1] = left;
18868 styleBuf[3] = top;
18869 styleBuf[5] = fontHeight;
18870 styleBuf[7] = style.fontFamily;
18871 textDivProperties.style = styleBuf.join('');
18872 textDiv.setAttribute('style', textDivProperties.style);
18873 textDiv.textContent = geom.str;
18874
18875 if (task._fontInspectorEnabled) {
18876 textDiv.dataset.fontName = geom.fontName;
18877 }
18878
18879 if (angle !== 0) {
18880 textDivProperties.angle = angle * (180 / Math.PI);
18881 }
18882
18883 if (geom.str.length > 1) {
18884 if (style.vertical) {
18885 textDivProperties.canvasWidth = geom.height * task._viewport.scale;
18886 } else {
18887 textDivProperties.canvasWidth = geom.width * task._viewport.scale;
18888 }
18889 }
18890
18891 task._textDivProperties.set(textDiv, textDivProperties);
18892
18893 if (task._textContentStream) {
18894 task._layoutText(textDiv);
18895 }
18896
18897 if (task._enhanceTextSelection) {
18898 var angleCos = 1,
18899 angleSin = 0;
18900
18901 if (angle !== 0) {
18902 angleCos = Math.cos(angle);
18903 angleSin = Math.sin(angle);
18904 }
18905
18906 var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
18907 var divHeight = fontHeight;
18908 var m, b;
18909
18910 if (angle !== 0) {
18911 m = [angleCos, angleSin, -angleSin, angleCos, left, top];
18912 b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
18913 } else {
18914 b = [left, top, left + divWidth, top + divHeight];
18915 }
18916
18917 task._bounds.push({
18918 left: b[0],
18919 top: b[1],
18920 right: b[2],
18921 bottom: b[3],
18922 div: textDiv,
18923 size: [divWidth, divHeight],
18924 m: m
18925 });
18926 }
18927 }
18928
18929 function render(task) {
18930 if (task._canceled) {
18931 return;
18932 }
18933
18934 var textDivs = task._textDivs;
18935 var capability = task._capability;
18936 var textDivsLength = textDivs.length;
18937
18938 if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
18939 task._renderingDone = true;
18940 capability.resolve();
18941 return;
18942 }
18943
18944 if (!task._textContentStream) {
18945 for (var i = 0; i < textDivsLength; i++) {
18946 task._layoutText(textDivs[i]);
18947 }
18948 }
18949
18950 task._renderingDone = true;
18951 capability.resolve();
18952 }
18953
18954 function expand(task) {
18955 var bounds = task._bounds;
18956 var viewport = task._viewport;
18957 var expanded = expandBounds(viewport.width, viewport.height, bounds);
18958
18959 for (var i = 0; i < expanded.length; i++) {
18960 var div = bounds[i].div;
18961
18962 var divProperties = task._textDivProperties.get(div);
18963
18964 if (divProperties.angle === 0) {
18965 divProperties.paddingLeft = bounds[i].left - expanded[i].left;
18966 divProperties.paddingTop = bounds[i].top - expanded[i].top;
18967 divProperties.paddingRight = expanded[i].right - bounds[i].right;
18968 divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
18969
18970 task._textDivProperties.set(div, divProperties);
18971
18972 continue;
18973 }
18974
18975 var e = expanded[i],
18976 b = bounds[i];
18977 var m = b.m,
18978 c = m[0],
18979 s = m[1];
18980 var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
18981 var ts = new Float64Array(64);
18982 points.forEach(function (p, i) {
18983 var t = _util.Util.applyTransform(p, m);
18984
18985 ts[i + 0] = c && (e.left - t[0]) / c;
18986 ts[i + 4] = s && (e.top - t[1]) / s;
18987 ts[i + 8] = c && (e.right - t[0]) / c;
18988 ts[i + 12] = s && (e.bottom - t[1]) / s;
18989 ts[i + 16] = s && (e.left - t[0]) / -s;
18990 ts[i + 20] = c && (e.top - t[1]) / c;
18991 ts[i + 24] = s && (e.right - t[0]) / -s;
18992 ts[i + 28] = c && (e.bottom - t[1]) / c;
18993 ts[i + 32] = c && (e.left - t[0]) / -c;
18994 ts[i + 36] = s && (e.top - t[1]) / -s;
18995 ts[i + 40] = c && (e.right - t[0]) / -c;
18996 ts[i + 44] = s && (e.bottom - t[1]) / -s;
18997 ts[i + 48] = s && (e.left - t[0]) / s;
18998 ts[i + 52] = c && (e.top - t[1]) / -c;
18999 ts[i + 56] = s && (e.right - t[0]) / s;
19000 ts[i + 60] = c && (e.bottom - t[1]) / -c;
19001 });
19002
19003 var findPositiveMin = function findPositiveMin(ts, offset, count) {
19004 var result = 0;
19005
19006 for (var i = 0; i < count; i++) {
19007 var t = ts[offset++];
19008
19009 if (t > 0) {
19010 result = result ? Math.min(t, result) : t;
19011 }
19012 }
19013
19014 return result;
19015 };
19016
19017 var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
19018 divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
19019 divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
19020 divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
19021 divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
19022
19023 task._textDivProperties.set(div, divProperties);
19024 }
19025 }
19026
19027 function expandBounds(width, height, boxes) {
19028 var bounds = boxes.map(function (box, i) {
19029 return {
19030 x1: box.left,
19031 y1: box.top,
19032 x2: box.right,
19033 y2: box.bottom,
19034 index: i,
19035 x1New: undefined,
19036 x2New: undefined
19037 };
19038 });
19039 expandBoundsLTR(width, bounds);
19040 var expanded = new Array(boxes.length);
19041 bounds.forEach(function (b) {
19042 var i = b.index;
19043 expanded[i] = {
19044 left: b.x1New,
19045 top: 0,
19046 right: b.x2New,
19047 bottom: 0
19048 };
19049 });
19050 boxes.map(function (box, i) {
19051 var e = expanded[i],
19052 b = bounds[i];
19053 b.x1 = box.top;
19054 b.y1 = width - e.right;
19055 b.x2 = box.bottom;
19056 b.y2 = width - e.left;
19057 b.index = i;
19058 b.x1New = undefined;
19059 b.x2New = undefined;
19060 });
19061 expandBoundsLTR(height, bounds);
19062 bounds.forEach(function (b) {
19063 var i = b.index;
19064 expanded[i].top = b.x1New;
19065 expanded[i].bottom = b.x2New;
19066 });
19067 return expanded;
19068 }
19069
19070 function expandBoundsLTR(width, bounds) {
19071 bounds.sort(function (a, b) {
19072 return a.x1 - b.x1 || a.index - b.index;
19073 });
19074 var fakeBoundary = {
19075 x1: -Infinity,
19076 y1: -Infinity,
19077 x2: 0,
19078 y2: Infinity,
19079 index: -1,
19080 x1New: 0,
19081 x2New: 0
19082 };
19083 var horizon = [{
19084 start: -Infinity,
19085 end: Infinity,
19086 boundary: fakeBoundary
19087 }];
19088 bounds.forEach(function (boundary) {
19089 var i = 0;
19090
19091 while (i < horizon.length && horizon[i].end <= boundary.y1) {
19092 i++;
19093 }
19094
19095 var j = horizon.length - 1;
19096
19097 while (j >= 0 && horizon[j].start >= boundary.y2) {
19098 j--;
19099 }
19100
19101 var horizonPart, affectedBoundary;
19102 var q,
19103 k,
19104 maxXNew = -Infinity;
19105
19106 for (q = i; q <= j; q++) {
19107 horizonPart = horizon[q];
19108 affectedBoundary = horizonPart.boundary;
19109 var xNew;
19110
19111 if (affectedBoundary.x2 > boundary.x1) {
19112 xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
19113 } else if (affectedBoundary.x2New === undefined) {
19114 xNew = (affectedBoundary.x2 + boundary.x1) / 2;
19115 } else {
19116 xNew = affectedBoundary.x2New;
19117 }
19118
19119 if (xNew > maxXNew) {
19120 maxXNew = xNew;
19121 }
19122 }
19123
19124 boundary.x1New = maxXNew;
19125
19126 for (q = i; q <= j; q++) {
19127 horizonPart = horizon[q];
19128 affectedBoundary = horizonPart.boundary;
19129
19130 if (affectedBoundary.x2New === undefined) {
19131 if (affectedBoundary.x2 > boundary.x1) {
19132 if (affectedBoundary.index > boundary.index) {
19133 affectedBoundary.x2New = affectedBoundary.x2;
19134 }
19135 } else {
19136 affectedBoundary.x2New = maxXNew;
19137 }
19138 } else if (affectedBoundary.x2New > maxXNew) {
19139 affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
19140 }
19141 }
19142
19143 var changedHorizon = [],
19144 lastBoundary = null;
19145
19146 for (q = i; q <= j; q++) {
19147 horizonPart = horizon[q];
19148 affectedBoundary = horizonPart.boundary;
19149 var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
19150
19151 if (lastBoundary === useBoundary) {
19152 changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
19153 } else {
19154 changedHorizon.push({
19155 start: horizonPart.start,
19156 end: horizonPart.end,
19157 boundary: useBoundary
19158 });
19159 lastBoundary = useBoundary;
19160 }
19161 }
19162
19163 if (horizon[i].start < boundary.y1) {
19164 changedHorizon[0].start = boundary.y1;
19165 changedHorizon.unshift({
19166 start: horizon[i].start,
19167 end: boundary.y1,
19168 boundary: horizon[i].boundary
19169 });
19170 }
19171
19172 if (boundary.y2 < horizon[j].end) {
19173 changedHorizon[changedHorizon.length - 1].end = boundary.y2;
19174 changedHorizon.push({
19175 start: boundary.y2,
19176 end: horizon[j].end,
19177 boundary: horizon[j].boundary
19178 });
19179 }
19180
19181 for (q = i; q <= j; q++) {
19182 horizonPart = horizon[q];
19183 affectedBoundary = horizonPart.boundary;
19184
19185 if (affectedBoundary.x2New !== undefined) {
19186 continue;
19187 }
19188
19189 var used = false;
19190
19191 for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
19192 used = horizon[k].boundary === affectedBoundary;
19193 }
19194
19195 for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
19196 used = horizon[k].boundary === affectedBoundary;
19197 }
19198
19199 for (k = 0; !used && k < changedHorizon.length; k++) {
19200 used = changedHorizon[k].boundary === affectedBoundary;
19201 }
19202
19203 if (!used) {
19204 affectedBoundary.x2New = maxXNew;
19205 }
19206 }
19207
19208 Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
19209 });
19210 horizon.forEach(function (horizonPart) {
19211 var affectedBoundary = horizonPart.boundary;
19212
19213 if (affectedBoundary.x2New === undefined) {
19214 affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
19215 }
19216 });
19217 }
19218
19219 function TextLayerRenderTask(_ref) {
19220 var _this = this;
19221
19222 var textContent = _ref.textContent,
19223 textContentStream = _ref.textContentStream,
19224 container = _ref.container,
19225 viewport = _ref.viewport,
19226 textDivs = _ref.textDivs,
19227 textContentItemsStr = _ref.textContentItemsStr,
19228 enhanceTextSelection = _ref.enhanceTextSelection;
19229 this._textContent = textContent;
19230 this._textContentStream = textContentStream;
19231 this._container = container;
19232 this._viewport = viewport;
19233 this._textDivs = textDivs || [];
19234 this._textContentItemsStr = textContentItemsStr || [];
19235 this._enhanceTextSelection = !!enhanceTextSelection;
19236 this._fontInspectorEnabled = !!(_global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled);
19237 this._reader = null;
19238 this._layoutTextLastFontSize = null;
19239 this._layoutTextLastFontFamily = null;
19240 this._layoutTextCtx = null;
19241 this._textDivProperties = new WeakMap();
19242 this._renderingDone = false;
19243 this._canceled = false;
19244 this._capability = (0, _util.createPromiseCapability)();
19245 this._renderTimer = null;
19246 this._bounds = [];
19247
19248 this._capability.promise["finally"](function () {
19249 if (_this._layoutTextCtx) {
19250 _this._layoutTextCtx.canvas.width = 0;
19251 _this._layoutTextCtx.canvas.height = 0;
19252 _this._layoutTextCtx = null;
19253 }
19254 });
19255 }
19256
19257 TextLayerRenderTask.prototype = {
19258 get promise() {
19259 return this._capability.promise;
19260 },
19261
19262 cancel: function TextLayer_cancel() {
19263 this._canceled = true;
19264
19265 if (this._reader) {
19266 this._reader.cancel(new _util.AbortException('TextLayer task cancelled.'));
19267
19268 this._reader = null;
19269 }
19270
19271 if (this._renderTimer !== null) {
19272 clearTimeout(this._renderTimer);
19273 this._renderTimer = null;
19274 }
19275
19276 this._capability.reject(new Error('TextLayer task cancelled.'));
19277 },
19278 _processItems: function _processItems(items, styleCache) {
19279 for (var i = 0, len = items.length; i < len; i++) {
19280 this._textContentItemsStr.push(items[i].str);
19281
19282 appendText(this, items[i], styleCache);
19283 }
19284 },
19285 _layoutText: function _layoutText(textDiv) {
19286 var textLayerFrag = this._container;
19287
19288 var textDivProperties = this._textDivProperties.get(textDiv);
19289
19290 if (textDivProperties.isWhitespace) {
19291 return;
19292 }
19293
19294 var fontSize = textDiv.style.fontSize;
19295 var fontFamily = textDiv.style.fontFamily;
19296
19297 if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
19298 this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
19299 this._layoutTextLastFontSize = fontSize;
19300 this._layoutTextLastFontFamily = fontFamily;
19301 }
19302
19303 var width = this._layoutTextCtx.measureText(textDiv.textContent).width;
19304
19305 var transform = '';
19306
19307 if (textDivProperties.canvasWidth !== 0 && width > 0) {
19308 textDivProperties.scale = textDivProperties.canvasWidth / width;
19309 transform = "scaleX(".concat(textDivProperties.scale, ")");
19310 }
19311
19312 if (textDivProperties.angle !== 0) {
19313 transform = "rotate(".concat(textDivProperties.angle, "deg) ").concat(transform);
19314 }
19315
19316 if (transform.length > 0) {
19317 textDivProperties.originalTransform = transform;
19318 textDiv.style.transform = transform;
19319 }
19320
19321 this._textDivProperties.set(textDiv, textDivProperties);
19322
19323 textLayerFrag.appendChild(textDiv);
19324 },
19325 _render: function TextLayer_render(timeout) {
19326 var _this2 = this;
19327
19328 var capability = (0, _util.createPromiseCapability)();
19329 var styleCache = Object.create(null);
19330 var canvas = document.createElement('canvas');
19331 canvas.mozOpaque = true;
19332 this._layoutTextCtx = canvas.getContext('2d', {
19333 alpha: false
19334 });
19335
19336 if (this._textContent) {
19337 var textItems = this._textContent.items;
19338 var textStyles = this._textContent.styles;
19339
19340 this._processItems(textItems, textStyles);
19341
19342 capability.resolve();
19343 } else if (this._textContentStream) {
19344 var pump = function pump() {
19345 _this2._reader.read().then(function (_ref2) {
19346 var value = _ref2.value,
19347 done = _ref2.done;
19348
19349 if (done) {
19350 capability.resolve();
19351 return;
19352 }
19353
19354 Object.assign(styleCache, value.styles);
19355
19356 _this2._processItems(value.items, styleCache);
19357
19358 pump();
19359 }, capability.reject);
19360 };
19361
19362 this._reader = this._textContentStream.getReader();
19363 pump();
19364 } else {
19365 throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
19366 }
19367
19368 capability.promise.then(function () {
19369 styleCache = null;
19370
19371 if (!timeout) {
19372 render(_this2);
19373 } else {
19374 _this2._renderTimer = setTimeout(function () {
19375 render(_this2);
19376 _this2._renderTimer = null;
19377 }, timeout);
19378 }
19379 }, this._capability.reject);
19380 },
19381 expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
19382 if (!this._enhanceTextSelection || !this._renderingDone) {
19383 return;
19384 }
19385
19386 if (this._bounds !== null) {
19387 expand(this);
19388 this._bounds = null;
19389 }
19390
19391 for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
19392 var div = this._textDivs[i];
19393
19394 var divProperties = this._textDivProperties.get(div);
19395
19396 if (divProperties.isWhitespace) {
19397 continue;
19398 }
19399
19400 if (expandDivs) {
19401 var transform = '',
19402 padding = '';
19403
19404 if (divProperties.scale !== 1) {
19405 transform = 'scaleX(' + divProperties.scale + ')';
19406 }
19407
19408 if (divProperties.angle !== 0) {
19409 transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
19410 }
19411
19412 if (divProperties.paddingLeft !== 0) {
19413 padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
19414 transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
19415 }
19416
19417 if (divProperties.paddingTop !== 0) {
19418 padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
19419 transform += ' translateY(' + -divProperties.paddingTop + 'px)';
19420 }
19421
19422 if (divProperties.paddingRight !== 0) {
19423 padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
19424 }
19425
19426 if (divProperties.paddingBottom !== 0) {
19427 padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
19428 }
19429
19430 if (padding !== '') {
19431 div.setAttribute('style', divProperties.style + padding);
19432 }
19433
19434 if (transform !== '') {
19435 div.style.transform = transform;
19436 }
19437 } else {
19438 div.style.padding = 0;
19439 div.style.transform = divProperties.originalTransform || '';
19440 }
19441 }
19442 }
19443 };
19444
19445 function renderTextLayer(renderParameters) {
19446 var task = new TextLayerRenderTask({
19447 textContent: renderParameters.textContent,
19448 textContentStream: renderParameters.textContentStream,
19449 container: renderParameters.container,
19450 viewport: renderParameters.viewport,
19451 textDivs: renderParameters.textDivs,
19452 textContentItemsStr: renderParameters.textContentItemsStr,
19453 enhanceTextSelection: renderParameters.enhanceTextSelection
19454 });
19455
19456 task._render(renderParameters.timeout);
19457
19458 return task;
19459 }
19460
19461 return renderTextLayer;
19462}();
19463
19464exports.renderTextLayer = renderTextLayer;
19465
19466/***/ }),
19467/* 163 */
19468/***/ (function(module, exports, __w_pdfjs_require__) {
19469
19470"use strict";
19471
19472
19473Object.defineProperty(exports, "__esModule", {
19474 value: true
19475});
19476exports.AnnotationLayer = void 0;
19477
19478var _display_utils = __w_pdfjs_require__(151);
19479
19480var _util = __w_pdfjs_require__(1);
19481
19482function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
19483
19484function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
19485
19486function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19487
19488function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
19489
19490function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
19491
19492function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
19493
19494function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
19495
19496function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19497
19498function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19499
19500function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
19501
19502function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
19503
19504var AnnotationElementFactory =
19505/*#__PURE__*/
19506function () {
19507 function AnnotationElementFactory() {
19508 _classCallCheck(this, AnnotationElementFactory);
19509 }
19510
19511 _createClass(AnnotationElementFactory, null, [{
19512 key: "create",
19513 value: function create(parameters) {
19514 var subtype = parameters.data.annotationType;
19515
19516 switch (subtype) {
19517 case _util.AnnotationType.LINK:
19518 return new LinkAnnotationElement(parameters);
19519
19520 case _util.AnnotationType.TEXT:
19521 return new TextAnnotationElement(parameters);
19522
19523 case _util.AnnotationType.WIDGET:
19524 var fieldType = parameters.data.fieldType;
19525
19526 switch (fieldType) {
19527 case 'Tx':
19528 return new TextWidgetAnnotationElement(parameters);
19529
19530 case 'Btn':
19531 if (parameters.data.radioButton) {
19532 return new RadioButtonWidgetAnnotationElement(parameters);
19533 } else if (parameters.data.checkBox) {
19534 return new CheckboxWidgetAnnotationElement(parameters);
19535 }
19536
19537 return new PushButtonWidgetAnnotationElement(parameters);
19538
19539 case 'Ch':
19540 return new ChoiceWidgetAnnotationElement(parameters);
19541 }
19542
19543 return new WidgetAnnotationElement(parameters);
19544
19545 case _util.AnnotationType.POPUP:
19546 return new PopupAnnotationElement(parameters);
19547
19548 case _util.AnnotationType.FREETEXT:
19549 return new FreeTextAnnotationElement(parameters);
19550
19551 case _util.AnnotationType.LINE:
19552 return new LineAnnotationElement(parameters);
19553
19554 case _util.AnnotationType.SQUARE:
19555 return new SquareAnnotationElement(parameters);
19556
19557 case _util.AnnotationType.CIRCLE:
19558 return new CircleAnnotationElement(parameters);
19559
19560 case _util.AnnotationType.POLYLINE:
19561 return new PolylineAnnotationElement(parameters);
19562
19563 case _util.AnnotationType.CARET:
19564 return new CaretAnnotationElement(parameters);
19565
19566 case _util.AnnotationType.INK:
19567 return new InkAnnotationElement(parameters);
19568
19569 case _util.AnnotationType.POLYGON:
19570 return new PolygonAnnotationElement(parameters);
19571
19572 case _util.AnnotationType.HIGHLIGHT:
19573 return new HighlightAnnotationElement(parameters);
19574
19575 case _util.AnnotationType.UNDERLINE:
19576 return new UnderlineAnnotationElement(parameters);
19577
19578 case _util.AnnotationType.SQUIGGLY:
19579 return new SquigglyAnnotationElement(parameters);
19580
19581 case _util.AnnotationType.STRIKEOUT:
19582 return new StrikeOutAnnotationElement(parameters);
19583
19584 case _util.AnnotationType.STAMP:
19585 return new StampAnnotationElement(parameters);
19586
19587 case _util.AnnotationType.FILEATTACHMENT:
19588 return new FileAttachmentAnnotationElement(parameters);
19589
19590 default:
19591 return new AnnotationElement(parameters);
19592 }
19593 }
19594 }]);
19595
19596 return AnnotationElementFactory;
19597}();
19598
19599var AnnotationElement =
19600/*#__PURE__*/
19601function () {
19602 function AnnotationElement(parameters) {
19603 var isRenderable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19604 var ignoreBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19605
19606 _classCallCheck(this, AnnotationElement);
19607
19608 this.isRenderable = isRenderable;
19609 this.data = parameters.data;
19610 this.layer = parameters.layer;
19611 this.page = parameters.page;
19612 this.viewport = parameters.viewport;
19613 this.linkService = parameters.linkService;
19614 this.downloadManager = parameters.downloadManager;
19615 this.imageResourcesPath = parameters.imageResourcesPath;
19616 this.renderInteractiveForms = parameters.renderInteractiveForms;
19617 this.svgFactory = parameters.svgFactory;
19618
19619 if (isRenderable) {
19620 this.container = this._createContainer(ignoreBorder);
19621 }
19622 }
19623
19624 _createClass(AnnotationElement, [{
19625 key: "_createContainer",
19626 value: function _createContainer() {
19627 var ignoreBorder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
19628 var data = this.data,
19629 page = this.page,
19630 viewport = this.viewport;
19631 var container = document.createElement('section');
19632 var width = data.rect[2] - data.rect[0];
19633 var height = data.rect[3] - data.rect[1];
19634 container.setAttribute('data-annotation-id', data.id);
19635
19636 var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
19637
19638 container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
19639 container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
19640
19641 if (!ignoreBorder && data.borderStyle.width > 0) {
19642 container.style.borderWidth = data.borderStyle.width + 'px';
19643
19644 if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
19645 width = width - 2 * data.borderStyle.width;
19646 height = height - 2 * data.borderStyle.width;
19647 }
19648
19649 var horizontalRadius = data.borderStyle.horizontalCornerRadius;
19650 var verticalRadius = data.borderStyle.verticalCornerRadius;
19651
19652 if (horizontalRadius > 0 || verticalRadius > 0) {
19653 var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
19654 container.style.borderRadius = radius;
19655 }
19656
19657 switch (data.borderStyle.style) {
19658 case _util.AnnotationBorderStyleType.SOLID:
19659 container.style.borderStyle = 'solid';
19660 break;
19661
19662 case _util.AnnotationBorderStyleType.DASHED:
19663 container.style.borderStyle = 'dashed';
19664 break;
19665
19666 case _util.AnnotationBorderStyleType.BEVELED:
19667 (0, _util.warn)('Unimplemented border style: beveled');
19668 break;
19669
19670 case _util.AnnotationBorderStyleType.INSET:
19671 (0, _util.warn)('Unimplemented border style: inset');
19672 break;
19673
19674 case _util.AnnotationBorderStyleType.UNDERLINE:
19675 container.style.borderBottomStyle = 'solid';
19676 break;
19677
19678 default:
19679 break;
19680 }
19681
19682 if (data.color) {
19683 container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
19684 } else {
19685 container.style.borderWidth = 0;
19686 }
19687 }
19688
19689 container.style.left = rect[0] + 'px';
19690 container.style.top = rect[1] + 'px';
19691 container.style.width = width + 'px';
19692 container.style.height = height + 'px';
19693 return container;
19694 }
19695 }, {
19696 key: "_createPopup",
19697 value: function _createPopup(container, trigger, data) {
19698 if (!trigger) {
19699 trigger = document.createElement('div');
19700 trigger.style.height = container.style.height;
19701 trigger.style.width = container.style.width;
19702 container.appendChild(trigger);
19703 }
19704
19705 var popupElement = new PopupElement({
19706 container: container,
19707 trigger: trigger,
19708 color: data.color,
19709 title: data.title,
19710 modificationDate: data.modificationDate,
19711 contents: data.contents,
19712 hideWrapper: true
19713 });
19714 var popup = popupElement.render();
19715 popup.style.left = container.style.width;
19716 container.appendChild(popup);
19717 }
19718 }, {
19719 key: "render",
19720 value: function render() {
19721 (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
19722 }
19723 }]);
19724
19725 return AnnotationElement;
19726}();
19727
19728var LinkAnnotationElement =
19729/*#__PURE__*/
19730function (_AnnotationElement) {
19731 _inherits(LinkAnnotationElement, _AnnotationElement);
19732
19733 function LinkAnnotationElement(parameters) {
19734 _classCallCheck(this, LinkAnnotationElement);
19735
19736 var isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
19737 return _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotationElement).call(this, parameters, isRenderable));
19738 }
19739
19740 _createClass(LinkAnnotationElement, [{
19741 key: "render",
19742 value: function render() {
19743 this.container.className = 'linkAnnotation';
19744 var data = this.data,
19745 linkService = this.linkService;
19746 var link = document.createElement('a');
19747 (0, _display_utils.addLinkAttributes)(link, {
19748 url: data.url,
19749 target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
19750 rel: linkService.externalLinkRel
19751 });
19752
19753 if (!data.url) {
19754 if (data.action) {
19755 this._bindNamedAction(link, data.action);
19756 } else {
19757 this._bindLink(link, data.dest);
19758 }
19759 }
19760
19761 this.container.appendChild(link);
19762 return this.container;
19763 }
19764 }, {
19765 key: "_bindLink",
19766 value: function _bindLink(link, destination) {
19767 var _this = this;
19768
19769 link.href = this.linkService.getDestinationHash(destination);
19770
19771 link.onclick = function () {
19772 if (destination) {
19773 _this.linkService.navigateTo(destination);
19774 }
19775
19776 return false;
19777 };
19778
19779 if (destination) {
19780 link.className = 'internalLink';
19781 }
19782 }
19783 }, {
19784 key: "_bindNamedAction",
19785 value: function _bindNamedAction(link, action) {
19786 var _this2 = this;
19787
19788 link.href = this.linkService.getAnchorUrl('');
19789
19790 link.onclick = function () {
19791 _this2.linkService.executeNamedAction(action);
19792
19793 return false;
19794 };
19795
19796 link.className = 'internalLink';
19797 }
19798 }]);
19799
19800 return LinkAnnotationElement;
19801}(AnnotationElement);
19802
19803var TextAnnotationElement =
19804/*#__PURE__*/
19805function (_AnnotationElement2) {
19806 _inherits(TextAnnotationElement, _AnnotationElement2);
19807
19808 function TextAnnotationElement(parameters) {
19809 _classCallCheck(this, TextAnnotationElement);
19810
19811 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
19812 return _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotationElement).call(this, parameters, isRenderable));
19813 }
19814
19815 _createClass(TextAnnotationElement, [{
19816 key: "render",
19817 value: function render() {
19818 this.container.className = 'textAnnotation';
19819 var image = document.createElement('img');
19820 image.style.height = this.container.style.height;
19821 image.style.width = this.container.style.width;
19822 image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
19823 image.alt = '[{{type}} Annotation]';
19824 image.dataset.l10nId = 'text_annotation_type';
19825 image.dataset.l10nArgs = JSON.stringify({
19826 type: this.data.name
19827 });
19828
19829 if (!this.data.hasPopup) {
19830 this._createPopup(this.container, image, this.data);
19831 }
19832
19833 this.container.appendChild(image);
19834 return this.container;
19835 }
19836 }]);
19837
19838 return TextAnnotationElement;
19839}(AnnotationElement);
19840
19841var WidgetAnnotationElement =
19842/*#__PURE__*/
19843function (_AnnotationElement3) {
19844 _inherits(WidgetAnnotationElement, _AnnotationElement3);
19845
19846 function WidgetAnnotationElement() {
19847 _classCallCheck(this, WidgetAnnotationElement);
19848
19849 return _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotationElement).apply(this, arguments));
19850 }
19851
19852 _createClass(WidgetAnnotationElement, [{
19853 key: "render",
19854 value: function render() {
19855 return this.container;
19856 }
19857 }]);
19858
19859 return WidgetAnnotationElement;
19860}(AnnotationElement);
19861
19862var TextWidgetAnnotationElement =
19863/*#__PURE__*/
19864function (_WidgetAnnotationElem) {
19865 _inherits(TextWidgetAnnotationElement, _WidgetAnnotationElem);
19866
19867 function TextWidgetAnnotationElement(parameters) {
19868 _classCallCheck(this, TextWidgetAnnotationElement);
19869
19870 var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
19871 return _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotationElement).call(this, parameters, isRenderable));
19872 }
19873
19874 _createClass(TextWidgetAnnotationElement, [{
19875 key: "render",
19876 value: function render() {
19877 var TEXT_ALIGNMENT = ['left', 'center', 'right'];
19878 this.container.className = 'textWidgetAnnotation';
19879 var element = null;
19880
19881 if (this.renderInteractiveForms) {
19882 if (this.data.multiLine) {
19883 element = document.createElement('textarea');
19884 element.textContent = this.data.fieldValue;
19885 } else {
19886 element = document.createElement('input');
19887 element.type = 'text';
19888 element.setAttribute('value', this.data.fieldValue);
19889 }
19890
19891 element.disabled = this.data.readOnly;
19892
19893 if (this.data.maxLen !== null) {
19894 element.maxLength = this.data.maxLen;
19895 }
19896
19897 if (this.data.comb) {
19898 var fieldWidth = this.data.rect[2] - this.data.rect[0];
19899 var combWidth = fieldWidth / this.data.maxLen;
19900 element.classList.add('comb');
19901 element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
19902 }
19903 } else {
19904 element = document.createElement('div');
19905 element.textContent = this.data.fieldValue;
19906 element.style.verticalAlign = 'middle';
19907 element.style.display = 'table-cell';
19908 var font = null;
19909
19910 if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {
19911 font = this.page.commonObjs.get(this.data.fontRefName);
19912 }
19913
19914 this._setTextStyle(element, font);
19915 }
19916
19917 if (this.data.textAlignment !== null) {
19918 element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
19919 }
19920
19921 this.container.appendChild(element);
19922 return this.container;
19923 }
19924 }, {
19925 key: "_setTextStyle",
19926 value: function _setTextStyle(element, font) {
19927 var style = element.style;
19928 style.fontSize = this.data.fontSize + 'px';
19929 style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
19930
19931 if (!font) {
19932 return;
19933 }
19934
19935 style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
19936 style.fontStyle = font.italic ? 'italic' : 'normal';
19937 var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
19938 var fallbackName = font.fallbackName || 'Helvetica, sans-serif';
19939 style.fontFamily = fontFamily + fallbackName;
19940 }
19941 }]);
19942
19943 return TextWidgetAnnotationElement;
19944}(WidgetAnnotationElement);
19945
19946var CheckboxWidgetAnnotationElement =
19947/*#__PURE__*/
19948function (_WidgetAnnotationElem2) {
19949 _inherits(CheckboxWidgetAnnotationElement, _WidgetAnnotationElem2);
19950
19951 function CheckboxWidgetAnnotationElement(parameters) {
19952 _classCallCheck(this, CheckboxWidgetAnnotationElement);
19953
19954 return _possibleConstructorReturn(this, _getPrototypeOf(CheckboxWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
19955 }
19956
19957 _createClass(CheckboxWidgetAnnotationElement, [{
19958 key: "render",
19959 value: function render() {
19960 this.container.className = 'buttonWidgetAnnotation checkBox';
19961 var element = document.createElement('input');
19962 element.disabled = this.data.readOnly;
19963 element.type = 'checkbox';
19964
19965 if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
19966 element.setAttribute('checked', true);
19967 }
19968
19969 this.container.appendChild(element);
19970 return this.container;
19971 }
19972 }]);
19973
19974 return CheckboxWidgetAnnotationElement;
19975}(WidgetAnnotationElement);
19976
19977var RadioButtonWidgetAnnotationElement =
19978/*#__PURE__*/
19979function (_WidgetAnnotationElem3) {
19980 _inherits(RadioButtonWidgetAnnotationElement, _WidgetAnnotationElem3);
19981
19982 function RadioButtonWidgetAnnotationElement(parameters) {
19983 _classCallCheck(this, RadioButtonWidgetAnnotationElement);
19984
19985 return _possibleConstructorReturn(this, _getPrototypeOf(RadioButtonWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
19986 }
19987
19988 _createClass(RadioButtonWidgetAnnotationElement, [{
19989 key: "render",
19990 value: function render() {
19991 this.container.className = 'buttonWidgetAnnotation radioButton';
19992 var element = document.createElement('input');
19993 element.disabled = this.data.readOnly;
19994 element.type = 'radio';
19995 element.name = this.data.fieldName;
19996
19997 if (this.data.fieldValue === this.data.buttonValue) {
19998 element.setAttribute('checked', true);
19999 }
20000
20001 this.container.appendChild(element);
20002 return this.container;
20003 }
20004 }]);
20005
20006 return RadioButtonWidgetAnnotationElement;
20007}(WidgetAnnotationElement);
20008
20009var PushButtonWidgetAnnotationElement =
20010/*#__PURE__*/
20011function (_LinkAnnotationElemen) {
20012 _inherits(PushButtonWidgetAnnotationElement, _LinkAnnotationElemen);
20013
20014 function PushButtonWidgetAnnotationElement() {
20015 _classCallCheck(this, PushButtonWidgetAnnotationElement);
20016
20017 return _possibleConstructorReturn(this, _getPrototypeOf(PushButtonWidgetAnnotationElement).apply(this, arguments));
20018 }
20019
20020 _createClass(PushButtonWidgetAnnotationElement, [{
20021 key: "render",
20022 value: function render() {
20023 var container = _get(_getPrototypeOf(PushButtonWidgetAnnotationElement.prototype), "render", this).call(this);
20024
20025 container.className = 'buttonWidgetAnnotation pushButton';
20026 return container;
20027 }
20028 }]);
20029
20030 return PushButtonWidgetAnnotationElement;
20031}(LinkAnnotationElement);
20032
20033var ChoiceWidgetAnnotationElement =
20034/*#__PURE__*/
20035function (_WidgetAnnotationElem4) {
20036 _inherits(ChoiceWidgetAnnotationElement, _WidgetAnnotationElem4);
20037
20038 function ChoiceWidgetAnnotationElement(parameters) {
20039 _classCallCheck(this, ChoiceWidgetAnnotationElement);
20040
20041 return _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotationElement).call(this, parameters, parameters.renderInteractiveForms));
20042 }
20043
20044 _createClass(ChoiceWidgetAnnotationElement, [{
20045 key: "render",
20046 value: function render() {
20047 this.container.className = 'choiceWidgetAnnotation';
20048 var selectElement = document.createElement('select');
20049 selectElement.disabled = this.data.readOnly;
20050
20051 if (!this.data.combo) {
20052 selectElement.size = this.data.options.length;
20053
20054 if (this.data.multiSelect) {
20055 selectElement.multiple = true;
20056 }
20057 }
20058
20059 for (var i = 0, ii = this.data.options.length; i < ii; i++) {
20060 var option = this.data.options[i];
20061 var optionElement = document.createElement('option');
20062 optionElement.textContent = option.displayValue;
20063 optionElement.value = option.exportValue;
20064
20065 if (this.data.fieldValue.includes(option.displayValue)) {
20066 optionElement.setAttribute('selected', true);
20067 }
20068
20069 selectElement.appendChild(optionElement);
20070 }
20071
20072 this.container.appendChild(selectElement);
20073 return this.container;
20074 }
20075 }]);
20076
20077 return ChoiceWidgetAnnotationElement;
20078}(WidgetAnnotationElement);
20079
20080var PopupAnnotationElement =
20081/*#__PURE__*/
20082function (_AnnotationElement4) {
20083 _inherits(PopupAnnotationElement, _AnnotationElement4);
20084
20085 function PopupAnnotationElement(parameters) {
20086 _classCallCheck(this, PopupAnnotationElement);
20087
20088 var isRenderable = !!(parameters.data.title || parameters.data.contents);
20089 return _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotationElement).call(this, parameters, isRenderable));
20090 }
20091
20092 _createClass(PopupAnnotationElement, [{
20093 key: "render",
20094 value: function render() {
20095 var IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon', 'Ink'];
20096 this.container.className = 'popupAnnotation';
20097
20098 if (IGNORE_TYPES.includes(this.data.parentType)) {
20099 return this.container;
20100 }
20101
20102 var selector = '[data-annotation-id="' + this.data.parentId + '"]';
20103 var parentElement = this.layer.querySelector(selector);
20104
20105 if (!parentElement) {
20106 return this.container;
20107 }
20108
20109 var popup = new PopupElement({
20110 container: this.container,
20111 trigger: parentElement,
20112 color: this.data.color,
20113 title: this.data.title,
20114 modificationDate: this.data.modificationDate,
20115 contents: this.data.contents
20116 });
20117 var parentLeft = parseFloat(parentElement.style.left);
20118 var parentWidth = parseFloat(parentElement.style.width);
20119 this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
20120 this.container.style.left = parentLeft + parentWidth + 'px';
20121 this.container.appendChild(popup.render());
20122 return this.container;
20123 }
20124 }]);
20125
20126 return PopupAnnotationElement;
20127}(AnnotationElement);
20128
20129var PopupElement =
20130/*#__PURE__*/
20131function () {
20132 function PopupElement(parameters) {
20133 _classCallCheck(this, PopupElement);
20134
20135 this.container = parameters.container;
20136 this.trigger = parameters.trigger;
20137 this.color = parameters.color;
20138 this.title = parameters.title;
20139 this.modificationDate = parameters.modificationDate;
20140 this.contents = parameters.contents;
20141 this.hideWrapper = parameters.hideWrapper || false;
20142 this.pinned = false;
20143 }
20144
20145 _createClass(PopupElement, [{
20146 key: "render",
20147 value: function render() {
20148 var BACKGROUND_ENLIGHT = 0.7;
20149 var wrapper = document.createElement('div');
20150 wrapper.className = 'popupWrapper';
20151 this.hideElement = this.hideWrapper ? wrapper : this.container;
20152 this.hideElement.setAttribute('hidden', true);
20153 var popup = document.createElement('div');
20154 popup.className = 'popup';
20155 var color = this.color;
20156
20157 if (color) {
20158 var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
20159 var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
20160 var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
20161 popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
20162 }
20163
20164 var title = document.createElement('h1');
20165 title.textContent = this.title;
20166 popup.appendChild(title);
20167
20168 var dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);
20169
20170 if (dateObject) {
20171 var modificationDate = document.createElement('span');
20172 modificationDate.textContent = '{{date}}, {{time}}';
20173 modificationDate.dataset.l10nId = 'annotation_date_string';
20174 modificationDate.dataset.l10nArgs = JSON.stringify({
20175 date: dateObject.toLocaleDateString(),
20176 time: dateObject.toLocaleTimeString()
20177 });
20178 popup.appendChild(modificationDate);
20179 }
20180
20181 var contents = this._formatContents(this.contents);
20182
20183 popup.appendChild(contents);
20184 this.trigger.addEventListener('click', this._toggle.bind(this));
20185 this.trigger.addEventListener('mouseover', this._show.bind(this, false));
20186 this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
20187 popup.addEventListener('click', this._hide.bind(this, true));
20188 wrapper.appendChild(popup);
20189 return wrapper;
20190 }
20191 }, {
20192 key: "_formatContents",
20193 value: function _formatContents(contents) {
20194 var p = document.createElement('p');
20195 var lines = contents.split(/(?:\r\n?|\n)/);
20196
20197 for (var i = 0, ii = lines.length; i < ii; ++i) {
20198 var line = lines[i];
20199 p.appendChild(document.createTextNode(line));
20200
20201 if (i < ii - 1) {
20202 p.appendChild(document.createElement('br'));
20203 }
20204 }
20205
20206 return p;
20207 }
20208 }, {
20209 key: "_toggle",
20210 value: function _toggle() {
20211 if (this.pinned) {
20212 this._hide(true);
20213 } else {
20214 this._show(true);
20215 }
20216 }
20217 }, {
20218 key: "_show",
20219 value: function _show() {
20220 var pin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
20221
20222 if (pin) {
20223 this.pinned = true;
20224 }
20225
20226 if (this.hideElement.hasAttribute('hidden')) {
20227 this.hideElement.removeAttribute('hidden');
20228 this.container.style.zIndex += 1;
20229 }
20230 }
20231 }, {
20232 key: "_hide",
20233 value: function _hide() {
20234 var unpin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
20235
20236 if (unpin) {
20237 this.pinned = false;
20238 }
20239
20240 if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
20241 this.hideElement.setAttribute('hidden', true);
20242 this.container.style.zIndex -= 1;
20243 }
20244 }
20245 }]);
20246
20247 return PopupElement;
20248}();
20249
20250var FreeTextAnnotationElement =
20251/*#__PURE__*/
20252function (_AnnotationElement5) {
20253 _inherits(FreeTextAnnotationElement, _AnnotationElement5);
20254
20255 function FreeTextAnnotationElement(parameters) {
20256 _classCallCheck(this, FreeTextAnnotationElement);
20257
20258 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20259 return _possibleConstructorReturn(this, _getPrototypeOf(FreeTextAnnotationElement).call(this, parameters, isRenderable, true));
20260 }
20261
20262 _createClass(FreeTextAnnotationElement, [{
20263 key: "render",
20264 value: function render() {
20265 this.container.className = 'freeTextAnnotation';
20266
20267 if (!this.data.hasPopup) {
20268 this._createPopup(this.container, null, this.data);
20269 }
20270
20271 return this.container;
20272 }
20273 }]);
20274
20275 return FreeTextAnnotationElement;
20276}(AnnotationElement);
20277
20278var LineAnnotationElement =
20279/*#__PURE__*/
20280function (_AnnotationElement6) {
20281 _inherits(LineAnnotationElement, _AnnotationElement6);
20282
20283 function LineAnnotationElement(parameters) {
20284 _classCallCheck(this, LineAnnotationElement);
20285
20286 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20287 return _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotationElement).call(this, parameters, isRenderable, true));
20288 }
20289
20290 _createClass(LineAnnotationElement, [{
20291 key: "render",
20292 value: function render() {
20293 this.container.className = 'lineAnnotation';
20294 var data = this.data;
20295 var width = data.rect[2] - data.rect[0];
20296 var height = data.rect[3] - data.rect[1];
20297 var svg = this.svgFactory.create(width, height);
20298 var line = this.svgFactory.createElement('svg:line');
20299 line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
20300 line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
20301 line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
20302 line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
20303 line.setAttribute('stroke-width', data.borderStyle.width);
20304 line.setAttribute('stroke', 'transparent');
20305 svg.appendChild(line);
20306 this.container.append(svg);
20307
20308 this._createPopup(this.container, line, data);
20309
20310 return this.container;
20311 }
20312 }]);
20313
20314 return LineAnnotationElement;
20315}(AnnotationElement);
20316
20317var SquareAnnotationElement =
20318/*#__PURE__*/
20319function (_AnnotationElement7) {
20320 _inherits(SquareAnnotationElement, _AnnotationElement7);
20321
20322 function SquareAnnotationElement(parameters) {
20323 _classCallCheck(this, SquareAnnotationElement);
20324
20325 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20326 return _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotationElement).call(this, parameters, isRenderable, true));
20327 }
20328
20329 _createClass(SquareAnnotationElement, [{
20330 key: "render",
20331 value: function render() {
20332 this.container.className = 'squareAnnotation';
20333 var data = this.data;
20334 var width = data.rect[2] - data.rect[0];
20335 var height = data.rect[3] - data.rect[1];
20336 var svg = this.svgFactory.create(width, height);
20337 var borderWidth = data.borderStyle.width;
20338 var square = this.svgFactory.createElement('svg:rect');
20339 square.setAttribute('x', borderWidth / 2);
20340 square.setAttribute('y', borderWidth / 2);
20341 square.setAttribute('width', width - borderWidth);
20342 square.setAttribute('height', height - borderWidth);
20343 square.setAttribute('stroke-width', borderWidth);
20344 square.setAttribute('stroke', 'transparent');
20345 square.setAttribute('fill', 'none');
20346 svg.appendChild(square);
20347 this.container.append(svg);
20348
20349 this._createPopup(this.container, square, data);
20350
20351 return this.container;
20352 }
20353 }]);
20354
20355 return SquareAnnotationElement;
20356}(AnnotationElement);
20357
20358var CircleAnnotationElement =
20359/*#__PURE__*/
20360function (_AnnotationElement8) {
20361 _inherits(CircleAnnotationElement, _AnnotationElement8);
20362
20363 function CircleAnnotationElement(parameters) {
20364 _classCallCheck(this, CircleAnnotationElement);
20365
20366 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20367 return _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotationElement).call(this, parameters, isRenderable, true));
20368 }
20369
20370 _createClass(CircleAnnotationElement, [{
20371 key: "render",
20372 value: function render() {
20373 this.container.className = 'circleAnnotation';
20374 var data = this.data;
20375 var width = data.rect[2] - data.rect[0];
20376 var height = data.rect[3] - data.rect[1];
20377 var svg = this.svgFactory.create(width, height);
20378 var borderWidth = data.borderStyle.width;
20379 var circle = this.svgFactory.createElement('svg:ellipse');
20380 circle.setAttribute('cx', width / 2);
20381 circle.setAttribute('cy', height / 2);
20382 circle.setAttribute('rx', width / 2 - borderWidth / 2);
20383 circle.setAttribute('ry', height / 2 - borderWidth / 2);
20384 circle.setAttribute('stroke-width', borderWidth);
20385 circle.setAttribute('stroke', 'transparent');
20386 circle.setAttribute('fill', 'none');
20387 svg.appendChild(circle);
20388 this.container.append(svg);
20389
20390 this._createPopup(this.container, circle, data);
20391
20392 return this.container;
20393 }
20394 }]);
20395
20396 return CircleAnnotationElement;
20397}(AnnotationElement);
20398
20399var PolylineAnnotationElement =
20400/*#__PURE__*/
20401function (_AnnotationElement9) {
20402 _inherits(PolylineAnnotationElement, _AnnotationElement9);
20403
20404 function PolylineAnnotationElement(parameters) {
20405 var _this3;
20406
20407 _classCallCheck(this, PolylineAnnotationElement);
20408
20409 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20410 _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotationElement).call(this, parameters, isRenderable, true));
20411 _this3.containerClassName = 'polylineAnnotation';
20412 _this3.svgElementName = 'svg:polyline';
20413 return _this3;
20414 }
20415
20416 _createClass(PolylineAnnotationElement, [{
20417 key: "render",
20418 value: function render() {
20419 this.container.className = this.containerClassName;
20420 var data = this.data;
20421 var width = data.rect[2] - data.rect[0];
20422 var height = data.rect[3] - data.rect[1];
20423 var svg = this.svgFactory.create(width, height);
20424 var vertices = data.vertices;
20425 var points = [];
20426
20427 for (var i = 0, ii = vertices.length; i < ii; i++) {
20428 var x = vertices[i].x - data.rect[0];
20429 var y = data.rect[3] - vertices[i].y;
20430 points.push(x + ',' + y);
20431 }
20432
20433 points = points.join(' ');
20434 var borderWidth = data.borderStyle.width;
20435 var polyline = this.svgFactory.createElement(this.svgElementName);
20436 polyline.setAttribute('points', points);
20437 polyline.setAttribute('stroke-width', borderWidth);
20438 polyline.setAttribute('stroke', 'transparent');
20439 polyline.setAttribute('fill', 'none');
20440 svg.appendChild(polyline);
20441 this.container.append(svg);
20442
20443 this._createPopup(this.container, polyline, data);
20444
20445 return this.container;
20446 }
20447 }]);
20448
20449 return PolylineAnnotationElement;
20450}(AnnotationElement);
20451
20452var PolygonAnnotationElement =
20453/*#__PURE__*/
20454function (_PolylineAnnotationEl) {
20455 _inherits(PolygonAnnotationElement, _PolylineAnnotationEl);
20456
20457 function PolygonAnnotationElement(parameters) {
20458 var _this4;
20459
20460 _classCallCheck(this, PolygonAnnotationElement);
20461
20462 _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotationElement).call(this, parameters));
20463 _this4.containerClassName = 'polygonAnnotation';
20464 _this4.svgElementName = 'svg:polygon';
20465 return _this4;
20466 }
20467
20468 return PolygonAnnotationElement;
20469}(PolylineAnnotationElement);
20470
20471var CaretAnnotationElement =
20472/*#__PURE__*/
20473function (_AnnotationElement10) {
20474 _inherits(CaretAnnotationElement, _AnnotationElement10);
20475
20476 function CaretAnnotationElement(parameters) {
20477 _classCallCheck(this, CaretAnnotationElement);
20478
20479 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20480 return _possibleConstructorReturn(this, _getPrototypeOf(CaretAnnotationElement).call(this, parameters, isRenderable, true));
20481 }
20482
20483 _createClass(CaretAnnotationElement, [{
20484 key: "render",
20485 value: function render() {
20486 this.container.className = 'caretAnnotation';
20487
20488 if (!this.data.hasPopup) {
20489 this._createPopup(this.container, null, this.data);
20490 }
20491
20492 return this.container;
20493 }
20494 }]);
20495
20496 return CaretAnnotationElement;
20497}(AnnotationElement);
20498
20499var InkAnnotationElement =
20500/*#__PURE__*/
20501function (_AnnotationElement11) {
20502 _inherits(InkAnnotationElement, _AnnotationElement11);
20503
20504 function InkAnnotationElement(parameters) {
20505 var _this5;
20506
20507 _classCallCheck(this, InkAnnotationElement);
20508
20509 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20510 _this5 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotationElement).call(this, parameters, isRenderable, true));
20511 _this5.containerClassName = 'inkAnnotation';
20512 _this5.svgElementName = 'svg:polyline';
20513 return _this5;
20514 }
20515
20516 _createClass(InkAnnotationElement, [{
20517 key: "render",
20518 value: function render() {
20519 this.container.className = this.containerClassName;
20520 var data = this.data;
20521 var width = data.rect[2] - data.rect[0];
20522 var height = data.rect[3] - data.rect[1];
20523 var svg = this.svgFactory.create(width, height);
20524 var inkLists = data.inkLists;
20525
20526 for (var i = 0, ii = inkLists.length; i < ii; i++) {
20527 var inkList = inkLists[i];
20528 var points = [];
20529
20530 for (var j = 0, jj = inkList.length; j < jj; j++) {
20531 var x = inkList[j].x - data.rect[0];
20532 var y = data.rect[3] - inkList[j].y;
20533 points.push(x + ',' + y);
20534 }
20535
20536 points = points.join(' ');
20537 var borderWidth = data.borderStyle.width;
20538 var polyline = this.svgFactory.createElement(this.svgElementName);
20539 polyline.setAttribute('points', points);
20540 polyline.setAttribute('stroke-width', borderWidth);
20541 polyline.setAttribute('stroke', 'transparent');
20542 polyline.setAttribute('fill', 'none');
20543
20544 this._createPopup(this.container, polyline, data);
20545
20546 svg.appendChild(polyline);
20547 }
20548
20549 this.container.append(svg);
20550 return this.container;
20551 }
20552 }]);
20553
20554 return InkAnnotationElement;
20555}(AnnotationElement);
20556
20557var HighlightAnnotationElement =
20558/*#__PURE__*/
20559function (_AnnotationElement12) {
20560 _inherits(HighlightAnnotationElement, _AnnotationElement12);
20561
20562 function HighlightAnnotationElement(parameters) {
20563 _classCallCheck(this, HighlightAnnotationElement);
20564
20565 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20566 return _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotationElement).call(this, parameters, isRenderable, true));
20567 }
20568
20569 _createClass(HighlightAnnotationElement, [{
20570 key: "render",
20571 value: function render() {
20572 this.container.className = 'highlightAnnotation';
20573
20574 if (!this.data.hasPopup) {
20575 this._createPopup(this.container, null, this.data);
20576 }
20577
20578 return this.container;
20579 }
20580 }]);
20581
20582 return HighlightAnnotationElement;
20583}(AnnotationElement);
20584
20585var UnderlineAnnotationElement =
20586/*#__PURE__*/
20587function (_AnnotationElement13) {
20588 _inherits(UnderlineAnnotationElement, _AnnotationElement13);
20589
20590 function UnderlineAnnotationElement(parameters) {
20591 _classCallCheck(this, UnderlineAnnotationElement);
20592
20593 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20594 return _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotationElement).call(this, parameters, isRenderable, true));
20595 }
20596
20597 _createClass(UnderlineAnnotationElement, [{
20598 key: "render",
20599 value: function render() {
20600 this.container.className = 'underlineAnnotation';
20601
20602 if (!this.data.hasPopup) {
20603 this._createPopup(this.container, null, this.data);
20604 }
20605
20606 return this.container;
20607 }
20608 }]);
20609
20610 return UnderlineAnnotationElement;
20611}(AnnotationElement);
20612
20613var SquigglyAnnotationElement =
20614/*#__PURE__*/
20615function (_AnnotationElement14) {
20616 _inherits(SquigglyAnnotationElement, _AnnotationElement14);
20617
20618 function SquigglyAnnotationElement(parameters) {
20619 _classCallCheck(this, SquigglyAnnotationElement);
20620
20621 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20622 return _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotationElement).call(this, parameters, isRenderable, true));
20623 }
20624
20625 _createClass(SquigglyAnnotationElement, [{
20626 key: "render",
20627 value: function render() {
20628 this.container.className = 'squigglyAnnotation';
20629
20630 if (!this.data.hasPopup) {
20631 this._createPopup(this.container, null, this.data);
20632 }
20633
20634 return this.container;
20635 }
20636 }]);
20637
20638 return SquigglyAnnotationElement;
20639}(AnnotationElement);
20640
20641var StrikeOutAnnotationElement =
20642/*#__PURE__*/
20643function (_AnnotationElement15) {
20644 _inherits(StrikeOutAnnotationElement, _AnnotationElement15);
20645
20646 function StrikeOutAnnotationElement(parameters) {
20647 _classCallCheck(this, StrikeOutAnnotationElement);
20648
20649 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20650 return _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotationElement).call(this, parameters, isRenderable, true));
20651 }
20652
20653 _createClass(StrikeOutAnnotationElement, [{
20654 key: "render",
20655 value: function render() {
20656 this.container.className = 'strikeoutAnnotation';
20657
20658 if (!this.data.hasPopup) {
20659 this._createPopup(this.container, null, this.data);
20660 }
20661
20662 return this.container;
20663 }
20664 }]);
20665
20666 return StrikeOutAnnotationElement;
20667}(AnnotationElement);
20668
20669var StampAnnotationElement =
20670/*#__PURE__*/
20671function (_AnnotationElement16) {
20672 _inherits(StampAnnotationElement, _AnnotationElement16);
20673
20674 function StampAnnotationElement(parameters) {
20675 _classCallCheck(this, StampAnnotationElement);
20676
20677 var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
20678 return _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotationElement).call(this, parameters, isRenderable, true));
20679 }
20680
20681 _createClass(StampAnnotationElement, [{
20682 key: "render",
20683 value: function render() {
20684 this.container.className = 'stampAnnotation';
20685
20686 if (!this.data.hasPopup) {
20687 this._createPopup(this.container, null, this.data);
20688 }
20689
20690 return this.container;
20691 }
20692 }]);
20693
20694 return StampAnnotationElement;
20695}(AnnotationElement);
20696
20697var FileAttachmentAnnotationElement =
20698/*#__PURE__*/
20699function (_AnnotationElement17) {
20700 _inherits(FileAttachmentAnnotationElement, _AnnotationElement17);
20701
20702 function FileAttachmentAnnotationElement(parameters) {
20703 var _this6;
20704
20705 _classCallCheck(this, FileAttachmentAnnotationElement);
20706
20707 _this6 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotationElement).call(this, parameters, true));
20708 var _this6$data$file = _this6.data.file,
20709 filename = _this6$data$file.filename,
20710 content = _this6$data$file.content;
20711 _this6.filename = (0, _display_utils.getFilenameFromUrl)(filename);
20712 _this6.content = content;
20713
20714 if (_this6.linkService.eventBus) {
20715 _this6.linkService.eventBus.dispatch('fileattachmentannotation', {
20716 source: _assertThisInitialized(_this6),
20717 id: (0, _util.stringToPDFString)(filename),
20718 filename: filename,
20719 content: content
20720 });
20721 }
20722
20723 return _this6;
20724 }
20725
20726 _createClass(FileAttachmentAnnotationElement, [{
20727 key: "render",
20728 value: function render() {
20729 this.container.className = 'fileAttachmentAnnotation';
20730 var trigger = document.createElement('div');
20731 trigger.style.height = this.container.style.height;
20732 trigger.style.width = this.container.style.width;
20733 trigger.addEventListener('dblclick', this._download.bind(this));
20734
20735 if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
20736 this._createPopup(this.container, trigger, this.data);
20737 }
20738
20739 this.container.appendChild(trigger);
20740 return this.container;
20741 }
20742 }, {
20743 key: "_download",
20744 value: function _download() {
20745 if (!this.downloadManager) {
20746 (0, _util.warn)('Download cannot be started due to unavailable download manager');
20747 return;
20748 }
20749
20750 this.downloadManager.downloadData(this.content, this.filename, '');
20751 }
20752 }]);
20753
20754 return FileAttachmentAnnotationElement;
20755}(AnnotationElement);
20756
20757var AnnotationLayer =
20758/*#__PURE__*/
20759function () {
20760 function AnnotationLayer() {
20761 _classCallCheck(this, AnnotationLayer);
20762 }
20763
20764 _createClass(AnnotationLayer, null, [{
20765 key: "render",
20766 value: function render(parameters) {
20767 for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
20768 var data = parameters.annotations[i];
20769
20770 if (!data) {
20771 continue;
20772 }
20773
20774 var element = AnnotationElementFactory.create({
20775 data: data,
20776 layer: parameters.div,
20777 page: parameters.page,
20778 viewport: parameters.viewport,
20779 linkService: parameters.linkService,
20780 downloadManager: parameters.downloadManager,
20781 imageResourcesPath: parameters.imageResourcesPath || '',
20782 renderInteractiveForms: parameters.renderInteractiveForms || false,
20783 svgFactory: new _display_utils.DOMSVGFactory()
20784 });
20785
20786 if (element.isRenderable) {
20787 parameters.div.appendChild(element.render());
20788 }
20789 }
20790 }
20791 }, {
20792 key: "update",
20793 value: function update(parameters) {
20794 for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
20795 var data = parameters.annotations[i];
20796 var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
20797
20798 if (element) {
20799 element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
20800 }
20801 }
20802
20803 parameters.div.removeAttribute('hidden');
20804 }
20805 }]);
20806
20807 return AnnotationLayer;
20808}();
20809
20810exports.AnnotationLayer = AnnotationLayer;
20811
20812/***/ }),
20813/* 164 */
20814/***/ (function(module, exports, __w_pdfjs_require__) {
20815
20816"use strict";
20817
20818
20819Object.defineProperty(exports, "__esModule", {
20820 value: true
20821});
20822exports.SVGGraphics = void 0;
20823
20824var _util = __w_pdfjs_require__(1);
20825
20826var _display_utils = __w_pdfjs_require__(151);
20827
20828var _is_node = _interopRequireDefault(__w_pdfjs_require__(4));
20829
20830function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20831
20832function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
20833
20834function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
20835
20836function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
20837
20838function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
20839
20840function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
20841
20842function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
20843
20844function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20845
20846function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20847
20848function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20849
20850function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
20851
20852function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
20853
20854var SVGGraphics = function SVGGraphics() {
20855 throw new Error('Not implemented: SVGGraphics');
20856};
20857
20858exports.SVGGraphics = SVGGraphics;
20859{
20860 var opListToTree = function opListToTree(opList) {
20861 var opTree = [];
20862 var tmp = [];
20863 var _iteratorNormalCompletion = true;
20864 var _didIteratorError = false;
20865 var _iteratorError = undefined;
20866
20867 try {
20868 for (var _iterator = opList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
20869 var opListElement = _step.value;
20870
20871 if (opListElement.fn === 'save') {
20872 opTree.push({
20873 'fnId': 92,
20874 'fn': 'group',
20875 'items': []
20876 });
20877 tmp.push(opTree);
20878 opTree = opTree[opTree.length - 1].items;
20879 continue;
20880 }
20881
20882 if (opListElement.fn === 'restore') {
20883 opTree = tmp.pop();
20884 } else {
20885 opTree.push(opListElement);
20886 }
20887 }
20888 } catch (err) {
20889 _didIteratorError = true;
20890 _iteratorError = err;
20891 } finally {
20892 try {
20893 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
20894 _iterator["return"]();
20895 }
20896 } finally {
20897 if (_didIteratorError) {
20898 throw _iteratorError;
20899 }
20900 }
20901 }
20902
20903 return opTree;
20904 };
20905
20906 var pf = function pf(value) {
20907 if (Number.isInteger(value)) {
20908 return value.toString();
20909 }
20910
20911 var s = value.toFixed(10);
20912 var i = s.length - 1;
20913
20914 if (s[i] !== '0') {
20915 return s;
20916 }
20917
20918 do {
20919 i--;
20920 } while (s[i] === '0');
20921
20922 return s.substring(0, s[i] === '.' ? i : i + 1);
20923 };
20924
20925 var pm = function pm(m) {
20926 if (m[4] === 0 && m[5] === 0) {
20927 if (m[1] === 0 && m[2] === 0) {
20928 if (m[0] === 1 && m[3] === 1) {
20929 return '';
20930 }
20931
20932 return "scale(".concat(pf(m[0]), " ").concat(pf(m[3]), ")");
20933 }
20934
20935 if (m[0] === m[3] && m[1] === -m[2]) {
20936 var a = Math.acos(m[0]) * 180 / Math.PI;
20937 return "rotate(".concat(pf(a), ")");
20938 }
20939 } else {
20940 if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
20941 return "translate(".concat(pf(m[4]), " ").concat(pf(m[5]), ")");
20942 }
20943 }
20944
20945 return "matrix(".concat(pf(m[0]), " ").concat(pf(m[1]), " ").concat(pf(m[2]), " ").concat(pf(m[3]), " ").concat(pf(m[4]), " ") + "".concat(pf(m[5]), ")");
20946 };
20947
20948 var SVG_DEFAULTS = {
20949 fontStyle: 'normal',
20950 fontWeight: 'normal',
20951 fillColor: '#000000'
20952 };
20953 var XML_NS = 'http://www.w3.org/XML/1998/namespace';
20954 var XLINK_NS = 'http://www.w3.org/1999/xlink';
20955 var LINE_CAP_STYLES = ['butt', 'round', 'square'];
20956 var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
20957
20958 var convertImgDataToPng = function () {
20959 var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
20960 var CHUNK_WRAPPER_SIZE = 12;
20961 var crcTable = new Int32Array(256);
20962
20963 for (var i = 0; i < 256; i++) {
20964 var c = i;
20965
20966 for (var h = 0; h < 8; h++) {
20967 if (c & 1) {
20968 c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
20969 } else {
20970 c = c >> 1 & 0x7fffffff;
20971 }
20972 }
20973
20974 crcTable[i] = c;
20975 }
20976
20977 function crc32(data, start, end) {
20978 var crc = -1;
20979
20980 for (var _i = start; _i < end; _i++) {
20981 var a = (crc ^ data[_i]) & 0xff;
20982 var b = crcTable[a];
20983 crc = crc >>> 8 ^ b;
20984 }
20985
20986 return crc ^ -1;
20987 }
20988
20989 function writePngChunk(type, body, data, offset) {
20990 var p = offset;
20991 var len = body.length;
20992 data[p] = len >> 24 & 0xff;
20993 data[p + 1] = len >> 16 & 0xff;
20994 data[p + 2] = len >> 8 & 0xff;
20995 data[p + 3] = len & 0xff;
20996 p += 4;
20997 data[p] = type.charCodeAt(0) & 0xff;
20998 data[p + 1] = type.charCodeAt(1) & 0xff;
20999 data[p + 2] = type.charCodeAt(2) & 0xff;
21000 data[p + 3] = type.charCodeAt(3) & 0xff;
21001 p += 4;
21002 data.set(body, p);
21003 p += body.length;
21004 var crc = crc32(data, offset + 4, p);
21005 data[p] = crc >> 24 & 0xff;
21006 data[p + 1] = crc >> 16 & 0xff;
21007 data[p + 2] = crc >> 8 & 0xff;
21008 data[p + 3] = crc & 0xff;
21009 }
21010
21011 function adler32(data, start, end) {
21012 var a = 1;
21013 var b = 0;
21014
21015 for (var _i2 = start; _i2 < end; ++_i2) {
21016 a = (a + (data[_i2] & 0xff)) % 65521;
21017 b = (b + a) % 65521;
21018 }
21019
21020 return b << 16 | a;
21021 }
21022
21023 function deflateSync(literals) {
21024 if (!(0, _is_node["default"])()) {
21025 return deflateSyncUncompressed(literals);
21026 }
21027
21028 try {
21029 var input;
21030
21031 if (parseInt(process.versions.node) >= 8) {
21032 input = literals;
21033 } else {
21034 input = new Buffer(literals);
21035 }
21036
21037 var output = require('zlib').deflateSync(input, {
21038 level: 9
21039 });
21040
21041 return output instanceof Uint8Array ? output : new Uint8Array(output);
21042 } catch (e) {
21043 (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
21044 }
21045
21046 return deflateSyncUncompressed(literals);
21047 }
21048
21049 function deflateSyncUncompressed(literals) {
21050 var len = literals.length;
21051 var maxBlockLength = 0xFFFF;
21052 var deflateBlocks = Math.ceil(len / maxBlockLength);
21053 var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
21054 var pi = 0;
21055 idat[pi++] = 0x78;
21056 idat[pi++] = 0x9c;
21057 var pos = 0;
21058
21059 while (len > maxBlockLength) {
21060 idat[pi++] = 0x00;
21061 idat[pi++] = 0xff;
21062 idat[pi++] = 0xff;
21063 idat[pi++] = 0x00;
21064 idat[pi++] = 0x00;
21065 idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
21066 pi += maxBlockLength;
21067 pos += maxBlockLength;
21068 len -= maxBlockLength;
21069 }
21070
21071 idat[pi++] = 0x01;
21072 idat[pi++] = len & 0xff;
21073 idat[pi++] = len >> 8 & 0xff;
21074 idat[pi++] = ~len & 0xffff & 0xff;
21075 idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
21076 idat.set(literals.subarray(pos), pi);
21077 pi += literals.length - pos;
21078 var adler = adler32(literals, 0, literals.length);
21079 idat[pi++] = adler >> 24 & 0xff;
21080 idat[pi++] = adler >> 16 & 0xff;
21081 idat[pi++] = adler >> 8 & 0xff;
21082 idat[pi++] = adler & 0xff;
21083 return idat;
21084 }
21085
21086 function encode(imgData, kind, forceDataSchema, isMask) {
21087 var width = imgData.width;
21088 var height = imgData.height;
21089 var bitDepth, colorType, lineSize;
21090 var bytes = imgData.data;
21091
21092 switch (kind) {
21093 case _util.ImageKind.GRAYSCALE_1BPP:
21094 colorType = 0;
21095 bitDepth = 1;
21096 lineSize = width + 7 >> 3;
21097 break;
21098
21099 case _util.ImageKind.RGB_24BPP:
21100 colorType = 2;
21101 bitDepth = 8;
21102 lineSize = width * 3;
21103 break;
21104
21105 case _util.ImageKind.RGBA_32BPP:
21106 colorType = 6;
21107 bitDepth = 8;
21108 lineSize = width * 4;
21109 break;
21110
21111 default:
21112 throw new Error('invalid format');
21113 }
21114
21115 var literals = new Uint8Array((1 + lineSize) * height);
21116 var offsetLiterals = 0,
21117 offsetBytes = 0;
21118
21119 for (var y = 0; y < height; ++y) {
21120 literals[offsetLiterals++] = 0;
21121 literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
21122 offsetBytes += lineSize;
21123 offsetLiterals += lineSize;
21124 }
21125
21126 if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
21127 offsetLiterals = 0;
21128
21129 for (var _y = 0; _y < height; _y++) {
21130 offsetLiterals++;
21131
21132 for (var _i3 = 0; _i3 < lineSize; _i3++) {
21133 literals[offsetLiterals++] ^= 0xFF;
21134 }
21135 }
21136 }
21137
21138 var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
21139 var idat = deflateSync(literals);
21140 var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
21141 var data = new Uint8Array(pngLength);
21142 var offset = 0;
21143 data.set(PNG_HEADER, offset);
21144 offset += PNG_HEADER.length;
21145 writePngChunk('IHDR', ihdr, data, offset);
21146 offset += CHUNK_WRAPPER_SIZE + ihdr.length;
21147 writePngChunk('IDATA', idat, data, offset);
21148 offset += CHUNK_WRAPPER_SIZE + idat.length;
21149 writePngChunk('IEND', new Uint8Array(0), data, offset);
21150 return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
21151 }
21152
21153 return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
21154 var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
21155 return encode(imgData, kind, forceDataSchema, isMask);
21156 };
21157 }();
21158
21159 var SVGExtraState =
21160 /*#__PURE__*/
21161 function () {
21162 function SVGExtraState() {
21163 _classCallCheck(this, SVGExtraState);
21164
21165 this.fontSizeScale = 1;
21166 this.fontWeight = SVG_DEFAULTS.fontWeight;
21167 this.fontSize = 0;
21168 this.textMatrix = _util.IDENTITY_MATRIX;
21169 this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
21170 this.leading = 0;
21171 this.textRenderingMode = _util.TextRenderingMode.FILL;
21172 this.textMatrixScale = 1;
21173 this.x = 0;
21174 this.y = 0;
21175 this.lineX = 0;
21176 this.lineY = 0;
21177 this.charSpacing = 0;
21178 this.wordSpacing = 0;
21179 this.textHScale = 1;
21180 this.textRise = 0;
21181 this.fillColor = SVG_DEFAULTS.fillColor;
21182 this.strokeColor = '#000000';
21183 this.fillAlpha = 1;
21184 this.strokeAlpha = 1;
21185 this.lineWidth = 1;
21186 this.lineJoin = '';
21187 this.lineCap = '';
21188 this.miterLimit = 0;
21189 this.dashArray = [];
21190 this.dashPhase = 0;
21191 this.dependencies = [];
21192 this.activeClipUrl = null;
21193 this.clipGroup = null;
21194 this.maskId = '';
21195 }
21196
21197 _createClass(SVGExtraState, [{
21198 key: "clone",
21199 value: function clone() {
21200 return Object.create(this);
21201 }
21202 }, {
21203 key: "setCurrentPoint",
21204 value: function setCurrentPoint(x, y) {
21205 this.x = x;
21206 this.y = y;
21207 }
21208 }]);
21209
21210 return SVGExtraState;
21211 }();
21212
21213 var clipCount = 0;
21214 var maskCount = 0;
21215 var shadingCount = 0;
21216
21217 exports.SVGGraphics = SVGGraphics =
21218 /*#__PURE__*/
21219 function () {
21220 function SVGGraphics(commonObjs, objs, forceDataSchema) {
21221 _classCallCheck(this, SVGGraphics);
21222
21223 this.svgFactory = new _display_utils.DOMSVGFactory();
21224 this.current = new SVGExtraState();
21225 this.transformMatrix = _util.IDENTITY_MATRIX;
21226 this.transformStack = [];
21227 this.extraStack = [];
21228 this.commonObjs = commonObjs;
21229 this.objs = objs;
21230 this.pendingClip = null;
21231 this.pendingEOFill = false;
21232 this.embedFonts = false;
21233 this.embeddedFonts = Object.create(null);
21234 this.cssStyle = null;
21235 this.forceDataSchema = !!forceDataSchema;
21236 this._operatorIdMapping = [];
21237
21238 for (var op in _util.OPS) {
21239 this._operatorIdMapping[_util.OPS[op]] = op;
21240 }
21241 }
21242
21243 _createClass(SVGGraphics, [{
21244 key: "save",
21245 value: function save() {
21246 this.transformStack.push(this.transformMatrix);
21247 var old = this.current;
21248 this.extraStack.push(old);
21249 this.current = old.clone();
21250 }
21251 }, {
21252 key: "restore",
21253 value: function restore() {
21254 this.transformMatrix = this.transformStack.pop();
21255 this.current = this.extraStack.pop();
21256 this.pendingClip = null;
21257 this.tgrp = null;
21258 }
21259 }, {
21260 key: "group",
21261 value: function group(items) {
21262 this.save();
21263 this.executeOpTree(items);
21264 this.restore();
21265 }
21266 }, {
21267 key: "loadDependencies",
21268 value: function loadDependencies(operatorList) {
21269 var _this = this;
21270
21271 var fnArray = operatorList.fnArray;
21272 var argsArray = operatorList.argsArray;
21273
21274 for (var i = 0, ii = fnArray.length; i < ii; i++) {
21275 if (fnArray[i] !== _util.OPS.dependency) {
21276 continue;
21277 }
21278
21279 var _iteratorNormalCompletion2 = true;
21280 var _didIteratorError2 = false;
21281 var _iteratorError2 = undefined;
21282
21283 try {
21284 var _loop = function _loop() {
21285 var obj = _step2.value;
21286 var objsPool = obj.startsWith('g_') ? _this.commonObjs : _this.objs;
21287 var promise = new Promise(function (resolve) {
21288 objsPool.get(obj, resolve);
21289 });
21290
21291 _this.current.dependencies.push(promise);
21292 };
21293
21294 for (var _iterator2 = argsArray[i][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
21295 _loop();
21296 }
21297 } catch (err) {
21298 _didIteratorError2 = true;
21299 _iteratorError2 = err;
21300 } finally {
21301 try {
21302 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
21303 _iterator2["return"]();
21304 }
21305 } finally {
21306 if (_didIteratorError2) {
21307 throw _iteratorError2;
21308 }
21309 }
21310 }
21311 }
21312
21313 return Promise.all(this.current.dependencies);
21314 }
21315 }, {
21316 key: "transform",
21317 value: function transform(a, b, c, d, e, f) {
21318 var transformMatrix = [a, b, c, d, e, f];
21319 this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
21320 this.tgrp = null;
21321 }
21322 }, {
21323 key: "getSVG",
21324 value: function getSVG(operatorList, viewport) {
21325 var _this2 = this;
21326
21327 this.viewport = viewport;
21328
21329 var svgElement = this._initialize(viewport);
21330
21331 return this.loadDependencies(operatorList).then(function () {
21332 _this2.transformMatrix = _util.IDENTITY_MATRIX;
21333
21334 _this2.executeOpTree(_this2.convertOpList(operatorList));
21335
21336 return svgElement;
21337 });
21338 }
21339 }, {
21340 key: "convertOpList",
21341 value: function convertOpList(operatorList) {
21342 var operatorIdMapping = this._operatorIdMapping;
21343 var argsArray = operatorList.argsArray;
21344 var fnArray = operatorList.fnArray;
21345 var opList = [];
21346
21347 for (var i = 0, ii = fnArray.length; i < ii; i++) {
21348 var fnId = fnArray[i];
21349 opList.push({
21350 'fnId': fnId,
21351 'fn': operatorIdMapping[fnId],
21352 'args': argsArray[i]
21353 });
21354 }
21355
21356 return opListToTree(opList);
21357 }
21358 }, {
21359 key: "executeOpTree",
21360 value: function executeOpTree(opTree) {
21361 var _iteratorNormalCompletion3 = true;
21362 var _didIteratorError3 = false;
21363 var _iteratorError3 = undefined;
21364
21365 try {
21366 for (var _iterator3 = opTree[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
21367 var opTreeElement = _step3.value;
21368 var fn = opTreeElement.fn;
21369 var fnId = opTreeElement.fnId;
21370 var args = opTreeElement.args;
21371
21372 switch (fnId | 0) {
21373 case _util.OPS.beginText:
21374 this.beginText();
21375 break;
21376
21377 case _util.OPS.dependency:
21378 break;
21379
21380 case _util.OPS.setLeading:
21381 this.setLeading(args);
21382 break;
21383
21384 case _util.OPS.setLeadingMoveText:
21385 this.setLeadingMoveText(args[0], args[1]);
21386 break;
21387
21388 case _util.OPS.setFont:
21389 this.setFont(args);
21390 break;
21391
21392 case _util.OPS.showText:
21393 this.showText(args[0]);
21394 break;
21395
21396 case _util.OPS.showSpacedText:
21397 this.showText(args[0]);
21398 break;
21399
21400 case _util.OPS.endText:
21401 this.endText();
21402 break;
21403
21404 case _util.OPS.moveText:
21405 this.moveText(args[0], args[1]);
21406 break;
21407
21408 case _util.OPS.setCharSpacing:
21409 this.setCharSpacing(args[0]);
21410 break;
21411
21412 case _util.OPS.setWordSpacing:
21413 this.setWordSpacing(args[0]);
21414 break;
21415
21416 case _util.OPS.setHScale:
21417 this.setHScale(args[0]);
21418 break;
21419
21420 case _util.OPS.setTextMatrix:
21421 this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
21422 break;
21423
21424 case _util.OPS.setTextRise:
21425 this.setTextRise(args[0]);
21426 break;
21427
21428 case _util.OPS.setTextRenderingMode:
21429 this.setTextRenderingMode(args[0]);
21430 break;
21431
21432 case _util.OPS.setLineWidth:
21433 this.setLineWidth(args[0]);
21434 break;
21435
21436 case _util.OPS.setLineJoin:
21437 this.setLineJoin(args[0]);
21438 break;
21439
21440 case _util.OPS.setLineCap:
21441 this.setLineCap(args[0]);
21442 break;
21443
21444 case _util.OPS.setMiterLimit:
21445 this.setMiterLimit(args[0]);
21446 break;
21447
21448 case _util.OPS.setFillRGBColor:
21449 this.setFillRGBColor(args[0], args[1], args[2]);
21450 break;
21451
21452 case _util.OPS.setStrokeRGBColor:
21453 this.setStrokeRGBColor(args[0], args[1], args[2]);
21454 break;
21455
21456 case _util.OPS.setStrokeColorN:
21457 this.setStrokeColorN(args);
21458 break;
21459
21460 case _util.OPS.setFillColorN:
21461 this.setFillColorN(args);
21462 break;
21463
21464 case _util.OPS.shadingFill:
21465 this.shadingFill(args[0]);
21466 break;
21467
21468 case _util.OPS.setDash:
21469 this.setDash(args[0], args[1]);
21470 break;
21471
21472 case _util.OPS.setRenderingIntent:
21473 this.setRenderingIntent(args[0]);
21474 break;
21475
21476 case _util.OPS.setFlatness:
21477 this.setFlatness(args[0]);
21478 break;
21479
21480 case _util.OPS.setGState:
21481 this.setGState(args[0]);
21482 break;
21483
21484 case _util.OPS.fill:
21485 this.fill();
21486 break;
21487
21488 case _util.OPS.eoFill:
21489 this.eoFill();
21490 break;
21491
21492 case _util.OPS.stroke:
21493 this.stroke();
21494 break;
21495
21496 case _util.OPS.fillStroke:
21497 this.fillStroke();
21498 break;
21499
21500 case _util.OPS.eoFillStroke:
21501 this.eoFillStroke();
21502 break;
21503
21504 case _util.OPS.clip:
21505 this.clip('nonzero');
21506 break;
21507
21508 case _util.OPS.eoClip:
21509 this.clip('evenodd');
21510 break;
21511
21512 case _util.OPS.paintSolidColorImageMask:
21513 this.paintSolidColorImageMask();
21514 break;
21515
21516 case _util.OPS.paintJpegXObject:
21517 this.paintJpegXObject(args[0], args[1], args[2]);
21518 break;
21519
21520 case _util.OPS.paintImageXObject:
21521 this.paintImageXObject(args[0]);
21522 break;
21523
21524 case _util.OPS.paintInlineImageXObject:
21525 this.paintInlineImageXObject(args[0]);
21526 break;
21527
21528 case _util.OPS.paintImageMaskXObject:
21529 this.paintImageMaskXObject(args[0]);
21530 break;
21531
21532 case _util.OPS.paintFormXObjectBegin:
21533 this.paintFormXObjectBegin(args[0], args[1]);
21534 break;
21535
21536 case _util.OPS.paintFormXObjectEnd:
21537 this.paintFormXObjectEnd();
21538 break;
21539
21540 case _util.OPS.closePath:
21541 this.closePath();
21542 break;
21543
21544 case _util.OPS.closeStroke:
21545 this.closeStroke();
21546 break;
21547
21548 case _util.OPS.closeFillStroke:
21549 this.closeFillStroke();
21550 break;
21551
21552 case _util.OPS.closeEOFillStroke:
21553 this.closeEOFillStroke();
21554 break;
21555
21556 case _util.OPS.nextLine:
21557 this.nextLine();
21558 break;
21559
21560 case _util.OPS.transform:
21561 this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
21562 break;
21563
21564 case _util.OPS.constructPath:
21565 this.constructPath(args[0], args[1]);
21566 break;
21567
21568 case _util.OPS.endPath:
21569 this.endPath();
21570 break;
21571
21572 case 92:
21573 this.group(opTreeElement.items);
21574 break;
21575
21576 default:
21577 (0, _util.warn)("Unimplemented operator ".concat(fn));
21578 break;
21579 }
21580 }
21581 } catch (err) {
21582 _didIteratorError3 = true;
21583 _iteratorError3 = err;
21584 } finally {
21585 try {
21586 if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
21587 _iterator3["return"]();
21588 }
21589 } finally {
21590 if (_didIteratorError3) {
21591 throw _iteratorError3;
21592 }
21593 }
21594 }
21595 }
21596 }, {
21597 key: "setWordSpacing",
21598 value: function setWordSpacing(wordSpacing) {
21599 this.current.wordSpacing = wordSpacing;
21600 }
21601 }, {
21602 key: "setCharSpacing",
21603 value: function setCharSpacing(charSpacing) {
21604 this.current.charSpacing = charSpacing;
21605 }
21606 }, {
21607 key: "nextLine",
21608 value: function nextLine() {
21609 this.moveText(0, this.current.leading);
21610 }
21611 }, {
21612 key: "setTextMatrix",
21613 value: function setTextMatrix(a, b, c, d, e, f) {
21614 var current = this.current;
21615 current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
21616 current.textMatrixScale = Math.sqrt(a * a + b * b);
21617 current.x = current.lineX = 0;
21618 current.y = current.lineY = 0;
21619 current.xcoords = [];
21620 current.tspan = this.svgFactory.createElement('svg:tspan');
21621 current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21622 current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21623 current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21624 current.txtElement = this.svgFactory.createElement('svg:text');
21625 current.txtElement.appendChild(current.tspan);
21626 }
21627 }, {
21628 key: "beginText",
21629 value: function beginText() {
21630 var current = this.current;
21631 current.x = current.lineX = 0;
21632 current.y = current.lineY = 0;
21633 current.textMatrix = _util.IDENTITY_MATRIX;
21634 current.lineMatrix = _util.IDENTITY_MATRIX;
21635 current.textMatrixScale = 1;
21636 current.tspan = this.svgFactory.createElement('svg:tspan');
21637 current.txtElement = this.svgFactory.createElement('svg:text');
21638 current.txtgrp = this.svgFactory.createElement('svg:g');
21639 current.xcoords = [];
21640 }
21641 }, {
21642 key: "moveText",
21643 value: function moveText(x, y) {
21644 var current = this.current;
21645 current.x = current.lineX += x;
21646 current.y = current.lineY += y;
21647 current.xcoords = [];
21648 current.tspan = this.svgFactory.createElement('svg:tspan');
21649 current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21650 current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21651 current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21652 }
21653 }, {
21654 key: "showText",
21655 value: function showText(glyphs) {
21656 var current = this.current;
21657 var font = current.font;
21658 var fontSize = current.fontSize;
21659
21660 if (fontSize === 0) {
21661 return;
21662 }
21663
21664 var charSpacing = current.charSpacing;
21665 var wordSpacing = current.wordSpacing;
21666 var fontDirection = current.fontDirection;
21667 var textHScale = current.textHScale * fontDirection;
21668 var vertical = font.vertical;
21669 var widthAdvanceScale = fontSize * current.fontMatrix[0];
21670 var x = 0;
21671 var _iteratorNormalCompletion4 = true;
21672 var _didIteratorError4 = false;
21673 var _iteratorError4 = undefined;
21674
21675 try {
21676 for (var _iterator4 = glyphs[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
21677 var glyph = _step4.value;
21678
21679 if (glyph === null) {
21680 x += fontDirection * wordSpacing;
21681 continue;
21682 } else if ((0, _util.isNum)(glyph)) {
21683 x += -glyph * fontSize * 0.001;
21684 continue;
21685 }
21686
21687 var width = glyph.width;
21688 var character = glyph.fontChar;
21689 var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
21690 var charWidth = width * widthAdvanceScale + spacing * fontDirection;
21691
21692 if (!glyph.isInFont && !font.missingFile) {
21693 x += charWidth;
21694 continue;
21695 }
21696
21697 current.xcoords.push(current.x + x * textHScale);
21698 current.tspan.textContent += character;
21699 x += charWidth;
21700 }
21701 } catch (err) {
21702 _didIteratorError4 = true;
21703 _iteratorError4 = err;
21704 } finally {
21705 try {
21706 if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
21707 _iterator4["return"]();
21708 }
21709 } finally {
21710 if (_didIteratorError4) {
21711 throw _iteratorError4;
21712 }
21713 }
21714 }
21715
21716 if (vertical) {
21717 current.y -= x * textHScale;
21718 } else {
21719 current.x += x * textHScale;
21720 }
21721
21722 current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
21723 current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21724 current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
21725 current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
21726
21727 if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
21728 current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
21729 }
21730
21731 if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
21732 current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
21733 }
21734
21735 var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
21736
21737 if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
21738 if (current.fillColor !== SVG_DEFAULTS.fillColor) {
21739 current.tspan.setAttributeNS(null, 'fill', current.fillColor);
21740 }
21741
21742 if (current.fillAlpha < 1) {
21743 current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
21744 }
21745 } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
21746 current.tspan.setAttributeNS(null, 'fill', 'transparent');
21747 } else {
21748 current.tspan.setAttributeNS(null, 'fill', 'none');
21749 }
21750
21751 if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
21752 var lineWidthScale = 1 / (current.textMatrixScale || 1);
21753
21754 this._setStrokeAttributes(current.tspan, lineWidthScale);
21755 }
21756
21757 var textMatrix = current.textMatrix;
21758
21759 if (current.textRise !== 0) {
21760 textMatrix = textMatrix.slice();
21761 textMatrix[5] += current.textRise;
21762 }
21763
21764 current.txtElement.setAttributeNS(null, 'transform', "".concat(pm(textMatrix), " scale(1, -1)"));
21765 current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
21766 current.txtElement.appendChild(current.tspan);
21767 current.txtgrp.appendChild(current.txtElement);
21768
21769 this._ensureTransformGroup().appendChild(current.txtElement);
21770 }
21771 }, {
21772 key: "setLeadingMoveText",
21773 value: function setLeadingMoveText(x, y) {
21774 this.setLeading(-y);
21775 this.moveText(x, y);
21776 }
21777 }, {
21778 key: "addFontStyle",
21779 value: function addFontStyle(fontObj) {
21780 if (!this.cssStyle) {
21781 this.cssStyle = this.svgFactory.createElement('svg:style');
21782 this.cssStyle.setAttributeNS(null, 'type', 'text/css');
21783 this.defs.appendChild(this.cssStyle);
21784 }
21785
21786 var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
21787 this.cssStyle.textContent += "@font-face { font-family: \"".concat(fontObj.loadedName, "\";") + " src: url(".concat(url, "); }\n");
21788 }
21789 }, {
21790 key: "setFont",
21791 value: function setFont(details) {
21792 var current = this.current;
21793 var fontObj = this.commonObjs.get(details[0]);
21794 var size = details[1];
21795 current.font = fontObj;
21796
21797 if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
21798 this.addFontStyle(fontObj);
21799 this.embeddedFonts[fontObj.loadedName] = fontObj;
21800 }
21801
21802 current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
21803 var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
21804 var italic = fontObj.italic ? 'italic' : 'normal';
21805
21806 if (size < 0) {
21807 size = -size;
21808 current.fontDirection = -1;
21809 } else {
21810 current.fontDirection = 1;
21811 }
21812
21813 current.fontSize = size;
21814 current.fontFamily = fontObj.loadedName;
21815 current.fontWeight = bold;
21816 current.fontStyle = italic;
21817 current.tspan = this.svgFactory.createElement('svg:tspan');
21818 current.tspan.setAttributeNS(null, 'y', pf(-current.y));
21819 current.xcoords = [];
21820 }
21821 }, {
21822 key: "endText",
21823 value: function endText() {
21824 var current = this.current;
21825
21826 if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
21827 current.element = current.txtElement;
21828 this.clip('nonzero');
21829 this.endPath();
21830 }
21831 }
21832 }, {
21833 key: "setLineWidth",
21834 value: function setLineWidth(width) {
21835 if (width > 0) {
21836 this.current.lineWidth = width;
21837 }
21838 }
21839 }, {
21840 key: "setLineCap",
21841 value: function setLineCap(style) {
21842 this.current.lineCap = LINE_CAP_STYLES[style];
21843 }
21844 }, {
21845 key: "setLineJoin",
21846 value: function setLineJoin(style) {
21847 this.current.lineJoin = LINE_JOIN_STYLES[style];
21848 }
21849 }, {
21850 key: "setMiterLimit",
21851 value: function setMiterLimit(limit) {
21852 this.current.miterLimit = limit;
21853 }
21854 }, {
21855 key: "setStrokeAlpha",
21856 value: function setStrokeAlpha(strokeAlpha) {
21857 this.current.strokeAlpha = strokeAlpha;
21858 }
21859 }, {
21860 key: "setStrokeRGBColor",
21861 value: function setStrokeRGBColor(r, g, b) {
21862 this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);
21863 }
21864 }, {
21865 key: "setFillAlpha",
21866 value: function setFillAlpha(fillAlpha) {
21867 this.current.fillAlpha = fillAlpha;
21868 }
21869 }, {
21870 key: "setFillRGBColor",
21871 value: function setFillRGBColor(r, g, b) {
21872 this.current.fillColor = _util.Util.makeCssRgb(r, g, b);
21873 this.current.tspan = this.svgFactory.createElement('svg:tspan');
21874 this.current.xcoords = [];
21875 }
21876 }, {
21877 key: "setStrokeColorN",
21878 value: function setStrokeColorN(args) {
21879 this.current.strokeColor = this._makeColorN_Pattern(args);
21880 }
21881 }, {
21882 key: "setFillColorN",
21883 value: function setFillColorN(args) {
21884 this.current.fillColor = this._makeColorN_Pattern(args);
21885 }
21886 }, {
21887 key: "shadingFill",
21888 value: function shadingFill(args) {
21889 var width = this.viewport.width;
21890 var height = this.viewport.height;
21891
21892 var inv = _util.Util.inverseTransform(this.transformMatrix);
21893
21894 var bl = _util.Util.applyTransform([0, 0], inv);
21895
21896 var br = _util.Util.applyTransform([0, height], inv);
21897
21898 var ul = _util.Util.applyTransform([width, 0], inv);
21899
21900 var ur = _util.Util.applyTransform([width, height], inv);
21901
21902 var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
21903 var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
21904 var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
21905 var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
21906 var rect = this.svgFactory.createElement('svg:rect');
21907 rect.setAttributeNS(null, 'x', x0);
21908 rect.setAttributeNS(null, 'y', y0);
21909 rect.setAttributeNS(null, 'width', x1 - x0);
21910 rect.setAttributeNS(null, 'height', y1 - y0);
21911 rect.setAttributeNS(null, 'fill', this._makeShadingPattern(args));
21912
21913 this._ensureTransformGroup().appendChild(rect);
21914 }
21915 }, {
21916 key: "_makeColorN_Pattern",
21917 value: function _makeColorN_Pattern(args) {
21918 if (args[0] === 'TilingPattern') {
21919 return this._makeTilingPattern(args);
21920 }
21921
21922 return this._makeShadingPattern(args);
21923 }
21924 }, {
21925 key: "_makeTilingPattern",
21926 value: function _makeTilingPattern(args) {
21927 var color = args[1];
21928 var operatorList = args[2];
21929 var matrix = args[3] || _util.IDENTITY_MATRIX;
21930
21931 var _args$ = _slicedToArray(args[4], 4),
21932 x0 = _args$[0],
21933 y0 = _args$[1],
21934 x1 = _args$[2],
21935 y1 = _args$[3];
21936
21937 var xstep = args[5];
21938 var ystep = args[6];
21939 var paintType = args[7];
21940 var tilingId = "shading".concat(shadingCount++);
21941
21942 var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix),
21943 _Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2),
21944 tx0 = _Util$applyTransform2[0],
21945 ty0 = _Util$applyTransform2[1];
21946
21947 var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix),
21948 _Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2),
21949 tx1 = _Util$applyTransform4[0],
21950 ty1 = _Util$applyTransform4[1];
21951
21952 var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix),
21953 _Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),
21954 xscale = _Util$singularValueDe2[0],
21955 yscale = _Util$singularValueDe2[1];
21956
21957 var txstep = xstep * xscale;
21958 var tystep = ystep * yscale;
21959 var tiling = this.svgFactory.createElement('svg:pattern');
21960 tiling.setAttributeNS(null, 'id', tilingId);
21961 tiling.setAttributeNS(null, 'patternUnits', 'userSpaceOnUse');
21962 tiling.setAttributeNS(null, 'width', txstep);
21963 tiling.setAttributeNS(null, 'height', tystep);
21964 tiling.setAttributeNS(null, 'x', "".concat(tx0));
21965 tiling.setAttributeNS(null, 'y', "".concat(ty0));
21966 var svg = this.svg;
21967 var transformMatrix = this.transformMatrix;
21968 var fillColor = this.current.fillColor;
21969 var strokeColor = this.current.strokeColor;
21970 var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);
21971 this.svg = bbox;
21972 this.transformMatrix = matrix;
21973
21974 if (paintType === 2) {
21975 var cssColor = _util.Util.makeCssRgb.apply(_util.Util, _toConsumableArray(color));
21976
21977 this.current.fillColor = cssColor;
21978 this.current.strokeColor = cssColor;
21979 }
21980
21981 this.executeOpTree(this.convertOpList(operatorList));
21982 this.svg = svg;
21983 this.transformMatrix = transformMatrix;
21984 this.current.fillColor = fillColor;
21985 this.current.strokeColor = strokeColor;
21986 tiling.appendChild(bbox.childNodes[0]);
21987 this.defs.appendChild(tiling);
21988 return "url(#".concat(tilingId, ")");
21989 }
21990 }, {
21991 key: "_makeShadingPattern",
21992 value: function _makeShadingPattern(args) {
21993 switch (args[0]) {
21994 case 'RadialAxial':
21995 var shadingId = "shading".concat(shadingCount++);
21996 var colorStops = args[2];
21997 var gradient;
21998
21999 switch (args[1]) {
22000 case 'axial':
22001 var point0 = args[3];
22002 var point1 = args[4];
22003 gradient = this.svgFactory.createElement('svg:linearGradient');
22004 gradient.setAttributeNS(null, 'id', shadingId);
22005 gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
22006 gradient.setAttributeNS(null, 'x1', point0[0]);
22007 gradient.setAttributeNS(null, 'y1', point0[1]);
22008 gradient.setAttributeNS(null, 'x2', point1[0]);
22009 gradient.setAttributeNS(null, 'y2', point1[1]);
22010 break;
22011
22012 case 'radial':
22013 var focalPoint = args[3];
22014 var circlePoint = args[4];
22015 var focalRadius = args[5];
22016 var circleRadius = args[6];
22017 gradient = this.svgFactory.createElement('svg:radialGradient');
22018 gradient.setAttributeNS(null, 'id', shadingId);
22019 gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
22020 gradient.setAttributeNS(null, 'cx', circlePoint[0]);
22021 gradient.setAttributeNS(null, 'cy', circlePoint[1]);
22022 gradient.setAttributeNS(null, 'r', circleRadius);
22023 gradient.setAttributeNS(null, 'fx', focalPoint[0]);
22024 gradient.setAttributeNS(null, 'fy', focalPoint[1]);
22025 gradient.setAttributeNS(null, 'fr', focalRadius);
22026 break;
22027
22028 default:
22029 throw new Error("Unknown RadialAxial type: ".concat(args[1]));
22030 }
22031
22032 var _iteratorNormalCompletion5 = true;
22033 var _didIteratorError5 = false;
22034 var _iteratorError5 = undefined;
22035
22036 try {
22037 for (var _iterator5 = colorStops[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
22038 var colorStop = _step5.value;
22039 var stop = this.svgFactory.createElement('svg:stop');
22040 stop.setAttributeNS(null, 'offset', colorStop[0]);
22041 stop.setAttributeNS(null, 'stop-color', colorStop[1]);
22042 gradient.appendChild(stop);
22043 }
22044 } catch (err) {
22045 _didIteratorError5 = true;
22046 _iteratorError5 = err;
22047 } finally {
22048 try {
22049 if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) {
22050 _iterator5["return"]();
22051 }
22052 } finally {
22053 if (_didIteratorError5) {
22054 throw _iteratorError5;
22055 }
22056 }
22057 }
22058
22059 this.defs.appendChild(gradient);
22060 return "url(#".concat(shadingId, ")");
22061
22062 case 'Mesh':
22063 (0, _util.warn)('Unimplemented pattern Mesh');
22064 return null;
22065
22066 case 'Dummy':
22067 return 'hotpink';
22068
22069 default:
22070 throw new Error("Unknown IR type: ".concat(args[0]));
22071 }
22072 }
22073 }, {
22074 key: "setDash",
22075 value: function setDash(dashArray, dashPhase) {
22076 this.current.dashArray = dashArray;
22077 this.current.dashPhase = dashPhase;
22078 }
22079 }, {
22080 key: "constructPath",
22081 value: function constructPath(ops, args) {
22082 var current = this.current;
22083 var x = current.x,
22084 y = current.y;
22085 var d = [];
22086 var j = 0;
22087 var _iteratorNormalCompletion6 = true;
22088 var _didIteratorError6 = false;
22089 var _iteratorError6 = undefined;
22090
22091 try {
22092 for (var _iterator6 = ops[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
22093 var op = _step6.value;
22094
22095 switch (op | 0) {
22096 case _util.OPS.rectangle:
22097 x = args[j++];
22098 y = args[j++];
22099 var width = args[j++];
22100 var height = args[j++];
22101 var xw = x + width;
22102 var yh = y + height;
22103 d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
22104 break;
22105
22106 case _util.OPS.moveTo:
22107 x = args[j++];
22108 y = args[j++];
22109 d.push('M', pf(x), pf(y));
22110 break;
22111
22112 case _util.OPS.lineTo:
22113 x = args[j++];
22114 y = args[j++];
22115 d.push('L', pf(x), pf(y));
22116 break;
22117
22118 case _util.OPS.curveTo:
22119 x = args[j + 4];
22120 y = args[j + 5];
22121 d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
22122 j += 6;
22123 break;
22124
22125 case _util.OPS.curveTo2:
22126 x = args[j + 2];
22127 y = args[j + 3];
22128 d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
22129 j += 4;
22130 break;
22131
22132 case _util.OPS.curveTo3:
22133 x = args[j + 2];
22134 y = args[j + 3];
22135 d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
22136 j += 4;
22137 break;
22138
22139 case _util.OPS.closePath:
22140 d.push('Z');
22141 break;
22142 }
22143 }
22144 } catch (err) {
22145 _didIteratorError6 = true;
22146 _iteratorError6 = err;
22147 } finally {
22148 try {
22149 if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) {
22150 _iterator6["return"]();
22151 }
22152 } finally {
22153 if (_didIteratorError6) {
22154 throw _iteratorError6;
22155 }
22156 }
22157 }
22158
22159 d = d.join(' ');
22160
22161 if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {
22162 d = current.path.getAttributeNS(null, 'd') + d;
22163 } else {
22164 current.path = this.svgFactory.createElement('svg:path');
22165
22166 this._ensureTransformGroup().appendChild(current.path);
22167 }
22168
22169 current.path.setAttributeNS(null, 'd', d);
22170 current.path.setAttributeNS(null, 'fill', 'none');
22171 current.element = current.path;
22172 current.setCurrentPoint(x, y);
22173 }
22174 }, {
22175 key: "endPath",
22176 value: function endPath() {
22177 var current = this.current;
22178 current.path = null;
22179
22180 if (!this.pendingClip) {
22181 return;
22182 }
22183
22184 if (!current.element) {
22185 this.pendingClip = null;
22186 return;
22187 }
22188
22189 var clipId = "clippath".concat(clipCount++);
22190 var clipPath = this.svgFactory.createElement('svg:clipPath');
22191 clipPath.setAttributeNS(null, 'id', clipId);
22192 clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
22193 var clipElement = current.element.cloneNode(true);
22194
22195 if (this.pendingClip === 'evenodd') {
22196 clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
22197 } else {
22198 clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
22199 }
22200
22201 this.pendingClip = null;
22202 clipPath.appendChild(clipElement);
22203 this.defs.appendChild(clipPath);
22204
22205 if (current.activeClipUrl) {
22206 current.clipGroup = null;
22207 this.extraStack.forEach(function (prev) {
22208 prev.clipGroup = null;
22209 });
22210 clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
22211 }
22212
22213 current.activeClipUrl = "url(#".concat(clipId, ")");
22214 this.tgrp = null;
22215 }
22216 }, {
22217 key: "clip",
22218 value: function clip(type) {
22219 this.pendingClip = type;
22220 }
22221 }, {
22222 key: "closePath",
22223 value: function closePath() {
22224 var current = this.current;
22225
22226 if (current.path) {
22227 var d = "".concat(current.path.getAttributeNS(null, 'd'), "Z");
22228 current.path.setAttributeNS(null, 'd', d);
22229 }
22230 }
22231 }, {
22232 key: "setLeading",
22233 value: function setLeading(leading) {
22234 this.current.leading = -leading;
22235 }
22236 }, {
22237 key: "setTextRise",
22238 value: function setTextRise(textRise) {
22239 this.current.textRise = textRise;
22240 }
22241 }, {
22242 key: "setTextRenderingMode",
22243 value: function setTextRenderingMode(textRenderingMode) {
22244 this.current.textRenderingMode = textRenderingMode;
22245 }
22246 }, {
22247 key: "setHScale",
22248 value: function setHScale(scale) {
22249 this.current.textHScale = scale / 100;
22250 }
22251 }, {
22252 key: "setRenderingIntent",
22253 value: function setRenderingIntent(intent) {}
22254 }, {
22255 key: "setFlatness",
22256 value: function setFlatness(flatness) {}
22257 }, {
22258 key: "setGState",
22259 value: function setGState(states) {
22260 var _iteratorNormalCompletion7 = true;
22261 var _didIteratorError7 = false;
22262 var _iteratorError7 = undefined;
22263
22264 try {
22265 for (var _iterator7 = states[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
22266 var _step7$value = _slicedToArray(_step7.value, 2),
22267 key = _step7$value[0],
22268 value = _step7$value[1];
22269
22270 switch (key) {
22271 case 'LW':
22272 this.setLineWidth(value);
22273 break;
22274
22275 case 'LC':
22276 this.setLineCap(value);
22277 break;
22278
22279 case 'LJ':
22280 this.setLineJoin(value);
22281 break;
22282
22283 case 'ML':
22284 this.setMiterLimit(value);
22285 break;
22286
22287 case 'D':
22288 this.setDash(value[0], value[1]);
22289 break;
22290
22291 case 'RI':
22292 this.setRenderingIntent(value);
22293 break;
22294
22295 case 'FL':
22296 this.setFlatness(value);
22297 break;
22298
22299 case 'Font':
22300 this.setFont(value);
22301 break;
22302
22303 case 'CA':
22304 this.setStrokeAlpha(value);
22305 break;
22306
22307 case 'ca':
22308 this.setFillAlpha(value);
22309 break;
22310
22311 default:
22312 (0, _util.warn)("Unimplemented graphic state operator ".concat(key));
22313 break;
22314 }
22315 }
22316 } catch (err) {
22317 _didIteratorError7 = true;
22318 _iteratorError7 = err;
22319 } finally {
22320 try {
22321 if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) {
22322 _iterator7["return"]();
22323 }
22324 } finally {
22325 if (_didIteratorError7) {
22326 throw _iteratorError7;
22327 }
22328 }
22329 }
22330 }
22331 }, {
22332 key: "fill",
22333 value: function fill() {
22334 var current = this.current;
22335
22336 if (current.element) {
22337 current.element.setAttributeNS(null, 'fill', current.fillColor);
22338 current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
22339 this.endPath();
22340 }
22341 }
22342 }, {
22343 key: "stroke",
22344 value: function stroke() {
22345 var current = this.current;
22346
22347 if (current.element) {
22348 this._setStrokeAttributes(current.element);
22349
22350 current.element.setAttributeNS(null, 'fill', 'none');
22351 this.endPath();
22352 }
22353 }
22354 }, {
22355 key: "_setStrokeAttributes",
22356 value: function _setStrokeAttributes(element) {
22357 var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
22358 var current = this.current;
22359 var dashArray = current.dashArray;
22360
22361 if (lineWidthScale !== 1 && dashArray.length > 0) {
22362 dashArray = dashArray.map(function (value) {
22363 return lineWidthScale * value;
22364 });
22365 }
22366
22367 element.setAttributeNS(null, 'stroke', current.strokeColor);
22368 element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
22369 element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
22370 element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
22371 element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
22372 element.setAttributeNS(null, 'stroke-width', pf(lineWidthScale * current.lineWidth) + 'px');
22373 element.setAttributeNS(null, 'stroke-dasharray', dashArray.map(pf).join(' '));
22374 element.setAttributeNS(null, 'stroke-dashoffset', pf(lineWidthScale * current.dashPhase) + 'px');
22375 }
22376 }, {
22377 key: "eoFill",
22378 value: function eoFill() {
22379 if (this.current.element) {
22380 this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
22381 }
22382
22383 this.fill();
22384 }
22385 }, {
22386 key: "fillStroke",
22387 value: function fillStroke() {
22388 this.stroke();
22389 this.fill();
22390 }
22391 }, {
22392 key: "eoFillStroke",
22393 value: function eoFillStroke() {
22394 if (this.current.element) {
22395 this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
22396 }
22397
22398 this.fillStroke();
22399 }
22400 }, {
22401 key: "closeStroke",
22402 value: function closeStroke() {
22403 this.closePath();
22404 this.stroke();
22405 }
22406 }, {
22407 key: "closeFillStroke",
22408 value: function closeFillStroke() {
22409 this.closePath();
22410 this.fillStroke();
22411 }
22412 }, {
22413 key: "closeEOFillStroke",
22414 value: function closeEOFillStroke() {
22415 this.closePath();
22416 this.eoFillStroke();
22417 }
22418 }, {
22419 key: "paintSolidColorImageMask",
22420 value: function paintSolidColorImageMask() {
22421 var rect = this.svgFactory.createElement('svg:rect');
22422 rect.setAttributeNS(null, 'x', '0');
22423 rect.setAttributeNS(null, 'y', '0');
22424 rect.setAttributeNS(null, 'width', '1px');
22425 rect.setAttributeNS(null, 'height', '1px');
22426 rect.setAttributeNS(null, 'fill', this.current.fillColor);
22427
22428 this._ensureTransformGroup().appendChild(rect);
22429 }
22430 }, {
22431 key: "paintJpegXObject",
22432 value: function paintJpegXObject(objId, w, h) {
22433 var imgObj = this.objs.get(objId);
22434 var imgEl = this.svgFactory.createElement('svg:image');
22435 imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
22436 imgEl.setAttributeNS(null, 'width', pf(w));
22437 imgEl.setAttributeNS(null, 'height', pf(h));
22438 imgEl.setAttributeNS(null, 'x', '0');
22439 imgEl.setAttributeNS(null, 'y', pf(-h));
22440 imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / w), " ").concat(pf(-1 / h), ")"));
22441
22442 this._ensureTransformGroup().appendChild(imgEl);
22443 }
22444 }, {
22445 key: "paintImageXObject",
22446 value: function paintImageXObject(objId) {
22447 var imgData = this.objs.get(objId);
22448
22449 if (!imgData) {
22450 (0, _util.warn)("Dependent image with object ID ".concat(objId, " is not ready yet"));
22451 return;
22452 }
22453
22454 this.paintInlineImageXObject(imgData);
22455 }
22456 }, {
22457 key: "paintInlineImageXObject",
22458 value: function paintInlineImageXObject(imgData, mask) {
22459 var width = imgData.width;
22460 var height = imgData.height;
22461 var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
22462 var cliprect = this.svgFactory.createElement('svg:rect');
22463 cliprect.setAttributeNS(null, 'x', '0');
22464 cliprect.setAttributeNS(null, 'y', '0');
22465 cliprect.setAttributeNS(null, 'width', pf(width));
22466 cliprect.setAttributeNS(null, 'height', pf(height));
22467 this.current.element = cliprect;
22468 this.clip('nonzero');
22469 var imgEl = this.svgFactory.createElement('svg:image');
22470 imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
22471 imgEl.setAttributeNS(null, 'x', '0');
22472 imgEl.setAttributeNS(null, 'y', pf(-height));
22473 imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
22474 imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
22475 imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / width), " ").concat(pf(-1 / height), ")"));
22476
22477 if (mask) {
22478 mask.appendChild(imgEl);
22479 } else {
22480 this._ensureTransformGroup().appendChild(imgEl);
22481 }
22482 }
22483 }, {
22484 key: "paintImageMaskXObject",
22485 value: function paintImageMaskXObject(imgData) {
22486 var current = this.current;
22487 var width = imgData.width;
22488 var height = imgData.height;
22489 var fillColor = current.fillColor;
22490 current.maskId = "mask".concat(maskCount++);
22491 var mask = this.svgFactory.createElement('svg:mask');
22492 mask.setAttributeNS(null, 'id', current.maskId);
22493 var rect = this.svgFactory.createElement('svg:rect');
22494 rect.setAttributeNS(null, 'x', '0');
22495 rect.setAttributeNS(null, 'y', '0');
22496 rect.setAttributeNS(null, 'width', pf(width));
22497 rect.setAttributeNS(null, 'height', pf(height));
22498 rect.setAttributeNS(null, 'fill', fillColor);
22499 rect.setAttributeNS(null, 'mask', "url(#".concat(current.maskId, ")"));
22500 this.defs.appendChild(mask);
22501
22502 this._ensureTransformGroup().appendChild(rect);
22503
22504 this.paintInlineImageXObject(imgData, mask);
22505 }
22506 }, {
22507 key: "paintFormXObjectBegin",
22508 value: function paintFormXObjectBegin(matrix, bbox) {
22509 if (Array.isArray(matrix) && matrix.length === 6) {
22510 this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
22511 }
22512
22513 if (bbox) {
22514 var width = bbox[2] - bbox[0];
22515 var height = bbox[3] - bbox[1];
22516 var cliprect = this.svgFactory.createElement('svg:rect');
22517 cliprect.setAttributeNS(null, 'x', bbox[0]);
22518 cliprect.setAttributeNS(null, 'y', bbox[1]);
22519 cliprect.setAttributeNS(null, 'width', pf(width));
22520 cliprect.setAttributeNS(null, 'height', pf(height));
22521 this.current.element = cliprect;
22522 this.clip('nonzero');
22523 this.endPath();
22524 }
22525 }
22526 }, {
22527 key: "paintFormXObjectEnd",
22528 value: function paintFormXObjectEnd() {}
22529 }, {
22530 key: "_initialize",
22531 value: function _initialize(viewport) {
22532 var svg = this.svgFactory.create(viewport.width, viewport.height);
22533 var definitions = this.svgFactory.createElement('svg:defs');
22534 svg.appendChild(definitions);
22535 this.defs = definitions;
22536 var rootGroup = this.svgFactory.createElement('svg:g');
22537 rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));
22538 svg.appendChild(rootGroup);
22539 this.svg = rootGroup;
22540 return svg;
22541 }
22542 }, {
22543 key: "_ensureClipGroup",
22544 value: function _ensureClipGroup() {
22545 if (!this.current.clipGroup) {
22546 var clipGroup = this.svgFactory.createElement('svg:g');
22547 clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
22548 this.svg.appendChild(clipGroup);
22549 this.current.clipGroup = clipGroup;
22550 }
22551
22552 return this.current.clipGroup;
22553 }
22554 }, {
22555 key: "_ensureTransformGroup",
22556 value: function _ensureTransformGroup() {
22557 if (!this.tgrp) {
22558 this.tgrp = this.svgFactory.createElement('svg:g');
22559 this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
22560
22561 if (this.current.activeClipUrl) {
22562 this._ensureClipGroup().appendChild(this.tgrp);
22563 } else {
22564 this.svg.appendChild(this.tgrp);
22565 }
22566 }
22567
22568 return this.tgrp;
22569 }
22570 }]);
22571
22572 return SVGGraphics;
22573 }();
22574}
22575
22576/***/ }),
22577/* 165 */
22578/***/ (function(module, exports, __w_pdfjs_require__) {
22579
22580"use strict";
22581
22582
22583Object.defineProperty(exports, "__esModule", {
22584 value: true
22585});
22586exports.PDFNodeStream = void 0;
22587
22588var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
22589
22590var _util = __w_pdfjs_require__(1);
22591
22592var _network_utils = __w_pdfjs_require__(166);
22593
22594function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
22595
22596function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22597
22598function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
22599
22600function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
22601
22602function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22603
22604function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
22605
22606function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22607
22608function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22609
22610function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
22611
22612function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22613
22614function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
22615
22616function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
22617
22618var fs = require('fs');
22619
22620var http = require('http');
22621
22622var https = require('https');
22623
22624var url = require('url');
22625
22626var fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
22627
22628function parseUrl(sourceUrl) {
22629 var parsedUrl = url.parse(sourceUrl);
22630
22631 if (parsedUrl.protocol === 'file:' || parsedUrl.host) {
22632 return parsedUrl;
22633 }
22634
22635 if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
22636 return url.parse("file:///".concat(sourceUrl));
22637 }
22638
22639 if (!parsedUrl.host) {
22640 parsedUrl.protocol = 'file:';
22641 }
22642
22643 return parsedUrl;
22644}
22645
22646var PDFNodeStream =
22647/*#__PURE__*/
22648function () {
22649 function PDFNodeStream(source) {
22650 _classCallCheck(this, PDFNodeStream);
22651
22652 this.source = source;
22653 this.url = parseUrl(source.url);
22654 this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:';
22655 this.isFsUrl = this.url.protocol === 'file:';
22656 this.httpHeaders = this.isHttp && source.httpHeaders || {};
22657 this._fullRequestReader = null;
22658 this._rangeRequestReaders = [];
22659 }
22660
22661 _createClass(PDFNodeStream, [{
22662 key: "getFullReader",
22663 value: function getFullReader() {
22664 (0, _util.assert)(!this._fullRequestReader);
22665 this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
22666 return this._fullRequestReader;
22667 }
22668 }, {
22669 key: "getRangeReader",
22670 value: function getRangeReader(start, end) {
22671 if (end <= this._progressiveDataLength) {
22672 return null;
22673 }
22674
22675 var rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
22676
22677 this._rangeRequestReaders.push(rangeReader);
22678
22679 return rangeReader;
22680 }
22681 }, {
22682 key: "cancelAllRequests",
22683 value: function cancelAllRequests(reason) {
22684 if (this._fullRequestReader) {
22685 this._fullRequestReader.cancel(reason);
22686 }
22687
22688 var readers = this._rangeRequestReaders.slice(0);
22689
22690 readers.forEach(function (reader) {
22691 reader.cancel(reason);
22692 });
22693 }
22694 }, {
22695 key: "_progressiveDataLength",
22696 get: function get() {
22697 return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
22698 }
22699 }]);
22700
22701 return PDFNodeStream;
22702}();
22703
22704exports.PDFNodeStream = PDFNodeStream;
22705
22706var BaseFullReader =
22707/*#__PURE__*/
22708function () {
22709 function BaseFullReader(stream) {
22710 _classCallCheck(this, BaseFullReader);
22711
22712 this._url = stream.url;
22713 this._done = false;
22714 this._storedError = null;
22715 this.onProgress = null;
22716 var source = stream.source;
22717 this._contentLength = source.length;
22718 this._loaded = 0;
22719 this._filename = null;
22720 this._disableRange = source.disableRange || false;
22721 this._rangeChunkSize = source.rangeChunkSize;
22722
22723 if (!this._rangeChunkSize && !this._disableRange) {
22724 this._disableRange = true;
22725 }
22726
22727 this._isStreamingSupported = !source.disableStream;
22728 this._isRangeSupported = !source.disableRange;
22729 this._readableStream = null;
22730 this._readCapability = (0, _util.createPromiseCapability)();
22731 this._headersCapability = (0, _util.createPromiseCapability)();
22732 }
22733
22734 _createClass(BaseFullReader, [{
22735 key: "read",
22736 value: function () {
22737 var _read = _asyncToGenerator(
22738 /*#__PURE__*/
22739 _regenerator["default"].mark(function _callee() {
22740 var chunk, buffer;
22741 return _regenerator["default"].wrap(function _callee$(_context) {
22742 while (1) {
22743 switch (_context.prev = _context.next) {
22744 case 0:
22745 _context.next = 2;
22746 return this._readCapability.promise;
22747
22748 case 2:
22749 if (!this._done) {
22750 _context.next = 4;
22751 break;
22752 }
22753
22754 return _context.abrupt("return", {
22755 value: undefined,
22756 done: true
22757 });
22758
22759 case 4:
22760 if (!this._storedError) {
22761 _context.next = 6;
22762 break;
22763 }
22764
22765 throw this._storedError;
22766
22767 case 6:
22768 chunk = this._readableStream.read();
22769
22770 if (!(chunk === null)) {
22771 _context.next = 10;
22772 break;
22773 }
22774
22775 this._readCapability = (0, _util.createPromiseCapability)();
22776 return _context.abrupt("return", this.read());
22777
22778 case 10:
22779 this._loaded += chunk.length;
22780
22781 if (this.onProgress) {
22782 this.onProgress({
22783 loaded: this._loaded,
22784 total: this._contentLength
22785 });
22786 }
22787
22788 buffer = new Uint8Array(chunk).buffer;
22789 return _context.abrupt("return", {
22790 value: buffer,
22791 done: false
22792 });
22793
22794 case 14:
22795 case "end":
22796 return _context.stop();
22797 }
22798 }
22799 }, _callee, this);
22800 }));
22801
22802 function read() {
22803 return _read.apply(this, arguments);
22804 }
22805
22806 return read;
22807 }()
22808 }, {
22809 key: "cancel",
22810 value: function cancel(reason) {
22811 if (!this._readableStream) {
22812 this._error(reason);
22813
22814 return;
22815 }
22816
22817 this._readableStream.destroy(reason);
22818 }
22819 }, {
22820 key: "_error",
22821 value: function _error(reason) {
22822 this._storedError = reason;
22823
22824 this._readCapability.resolve();
22825 }
22826 }, {
22827 key: "_setReadableStream",
22828 value: function _setReadableStream(readableStream) {
22829 var _this = this;
22830
22831 this._readableStream = readableStream;
22832 readableStream.on('readable', function () {
22833 _this._readCapability.resolve();
22834 });
22835 readableStream.on('end', function () {
22836 readableStream.destroy();
22837 _this._done = true;
22838
22839 _this._readCapability.resolve();
22840 });
22841 readableStream.on('error', function (reason) {
22842 _this._error(reason);
22843 });
22844
22845 if (!this._isStreamingSupported && this._isRangeSupported) {
22846 this._error(new _util.AbortException('streaming is disabled'));
22847 }
22848
22849 if (this._storedError) {
22850 this._readableStream.destroy(this._storedError);
22851 }
22852 }
22853 }, {
22854 key: "headersReady",
22855 get: function get() {
22856 return this._headersCapability.promise;
22857 }
22858 }, {
22859 key: "filename",
22860 get: function get() {
22861 return this._filename;
22862 }
22863 }, {
22864 key: "contentLength",
22865 get: function get() {
22866 return this._contentLength;
22867 }
22868 }, {
22869 key: "isRangeSupported",
22870 get: function get() {
22871 return this._isRangeSupported;
22872 }
22873 }, {
22874 key: "isStreamingSupported",
22875 get: function get() {
22876 return this._isStreamingSupported;
22877 }
22878 }]);
22879
22880 return BaseFullReader;
22881}();
22882
22883var BaseRangeReader =
22884/*#__PURE__*/
22885function () {
22886 function BaseRangeReader(stream) {
22887 _classCallCheck(this, BaseRangeReader);
22888
22889 this._url = stream.url;
22890 this._done = false;
22891 this._storedError = null;
22892 this.onProgress = null;
22893 this._loaded = 0;
22894 this._readableStream = null;
22895 this._readCapability = (0, _util.createPromiseCapability)();
22896 var source = stream.source;
22897 this._isStreamingSupported = !source.disableStream;
22898 }
22899
22900 _createClass(BaseRangeReader, [{
22901 key: "read",
22902 value: function () {
22903 var _read2 = _asyncToGenerator(
22904 /*#__PURE__*/
22905 _regenerator["default"].mark(function _callee2() {
22906 var chunk, buffer;
22907 return _regenerator["default"].wrap(function _callee2$(_context2) {
22908 while (1) {
22909 switch (_context2.prev = _context2.next) {
22910 case 0:
22911 _context2.next = 2;
22912 return this._readCapability.promise;
22913
22914 case 2:
22915 if (!this._done) {
22916 _context2.next = 4;
22917 break;
22918 }
22919
22920 return _context2.abrupt("return", {
22921 value: undefined,
22922 done: true
22923 });
22924
22925 case 4:
22926 if (!this._storedError) {
22927 _context2.next = 6;
22928 break;
22929 }
22930
22931 throw this._storedError;
22932
22933 case 6:
22934 chunk = this._readableStream.read();
22935
22936 if (!(chunk === null)) {
22937 _context2.next = 10;
22938 break;
22939 }
22940
22941 this._readCapability = (0, _util.createPromiseCapability)();
22942 return _context2.abrupt("return", this.read());
22943
22944 case 10:
22945 this._loaded += chunk.length;
22946
22947 if (this.onProgress) {
22948 this.onProgress({
22949 loaded: this._loaded
22950 });
22951 }
22952
22953 buffer = new Uint8Array(chunk).buffer;
22954 return _context2.abrupt("return", {
22955 value: buffer,
22956 done: false
22957 });
22958
22959 case 14:
22960 case "end":
22961 return _context2.stop();
22962 }
22963 }
22964 }, _callee2, this);
22965 }));
22966
22967 function read() {
22968 return _read2.apply(this, arguments);
22969 }
22970
22971 return read;
22972 }()
22973 }, {
22974 key: "cancel",
22975 value: function cancel(reason) {
22976 if (!this._readableStream) {
22977 this._error(reason);
22978
22979 return;
22980 }
22981
22982 this._readableStream.destroy(reason);
22983 }
22984 }, {
22985 key: "_error",
22986 value: function _error(reason) {
22987 this._storedError = reason;
22988
22989 this._readCapability.resolve();
22990 }
22991 }, {
22992 key: "_setReadableStream",
22993 value: function _setReadableStream(readableStream) {
22994 var _this2 = this;
22995
22996 this._readableStream = readableStream;
22997 readableStream.on('readable', function () {
22998 _this2._readCapability.resolve();
22999 });
23000 readableStream.on('end', function () {
23001 readableStream.destroy();
23002 _this2._done = true;
23003
23004 _this2._readCapability.resolve();
23005 });
23006 readableStream.on('error', function (reason) {
23007 _this2._error(reason);
23008 });
23009
23010 if (this._storedError) {
23011 this._readableStream.destroy(this._storedError);
23012 }
23013 }
23014 }, {
23015 key: "isStreamingSupported",
23016 get: function get() {
23017 return this._isStreamingSupported;
23018 }
23019 }]);
23020
23021 return BaseRangeReader;
23022}();
23023
23024function createRequestOptions(url, headers) {
23025 return {
23026 protocol: url.protocol,
23027 auth: url.auth,
23028 host: url.hostname,
23029 port: url.port,
23030 path: url.path,
23031 method: 'GET',
23032 headers: headers
23033 };
23034}
23035
23036var PDFNodeStreamFullReader =
23037/*#__PURE__*/
23038function (_BaseFullReader) {
23039 _inherits(PDFNodeStreamFullReader, _BaseFullReader);
23040
23041 function PDFNodeStreamFullReader(stream) {
23042 var _this3;
23043
23044 _classCallCheck(this, PDFNodeStreamFullReader);
23045
23046 _this3 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFullReader).call(this, stream));
23047
23048 var handleResponse = function handleResponse(response) {
23049 if (response.statusCode === 404) {
23050 var error = new _util.MissingPDFException("Missing PDF \"".concat(_this3._url, "\"."));
23051 _this3._storedError = error;
23052
23053 _this3._headersCapability.reject(error);
23054
23055 return;
23056 }
23057
23058 _this3._headersCapability.resolve();
23059
23060 _this3._setReadableStream(response);
23061
23062 var getResponseHeader = function getResponseHeader(name) {
23063 return _this3._readableStream.headers[name.toLowerCase()];
23064 };
23065
23066 var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
23067 getResponseHeader: getResponseHeader,
23068 isHttp: stream.isHttp,
23069 rangeChunkSize: _this3._rangeChunkSize,
23070 disableRange: _this3._disableRange
23071 }),
23072 allowRangeRequests = _validateRangeRequest.allowRangeRequests,
23073 suggestedLength = _validateRangeRequest.suggestedLength;
23074
23075 _this3._isRangeSupported = allowRangeRequests;
23076 _this3._contentLength = suggestedLength || _this3._contentLength;
23077 _this3._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
23078 };
23079
23080 _this3._request = null;
23081
23082 if (_this3._url.protocol === 'http:') {
23083 _this3._request = http.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
23084 } else {
23085 _this3._request = https.request(createRequestOptions(_this3._url, stream.httpHeaders), handleResponse);
23086 }
23087
23088 _this3._request.on('error', function (reason) {
23089 _this3._storedError = reason;
23090
23091 _this3._headersCapability.reject(reason);
23092 });
23093
23094 _this3._request.end();
23095
23096 return _this3;
23097 }
23098
23099 return PDFNodeStreamFullReader;
23100}(BaseFullReader);
23101
23102var PDFNodeStreamRangeReader =
23103/*#__PURE__*/
23104function (_BaseRangeReader) {
23105 _inherits(PDFNodeStreamRangeReader, _BaseRangeReader);
23106
23107 function PDFNodeStreamRangeReader(stream, start, end) {
23108 var _this4;
23109
23110 _classCallCheck(this, PDFNodeStreamRangeReader);
23111
23112 _this4 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamRangeReader).call(this, stream));
23113 _this4._httpHeaders = {};
23114
23115 for (var property in stream.httpHeaders) {
23116 var value = stream.httpHeaders[property];
23117
23118 if (typeof value === 'undefined') {
23119 continue;
23120 }
23121
23122 _this4._httpHeaders[property] = value;
23123 }
23124
23125 _this4._httpHeaders['Range'] = "bytes=".concat(start, "-").concat(end - 1);
23126
23127 var handleResponse = function handleResponse(response) {
23128 if (response.statusCode === 404) {
23129 var error = new _util.MissingPDFException("Missing PDF \"".concat(_this4._url, "\"."));
23130 _this4._storedError = error;
23131 return;
23132 }
23133
23134 _this4._setReadableStream(response);
23135 };
23136
23137 _this4._request = null;
23138
23139 if (_this4._url.protocol === 'http:') {
23140 _this4._request = http.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
23141 } else {
23142 _this4._request = https.request(createRequestOptions(_this4._url, _this4._httpHeaders), handleResponse);
23143 }
23144
23145 _this4._request.on('error', function (reason) {
23146 _this4._storedError = reason;
23147 });
23148
23149 _this4._request.end();
23150
23151 return _this4;
23152 }
23153
23154 return PDFNodeStreamRangeReader;
23155}(BaseRangeReader);
23156
23157var PDFNodeStreamFsFullReader =
23158/*#__PURE__*/
23159function (_BaseFullReader2) {
23160 _inherits(PDFNodeStreamFsFullReader, _BaseFullReader2);
23161
23162 function PDFNodeStreamFsFullReader(stream) {
23163 var _this5;
23164
23165 _classCallCheck(this, PDFNodeStreamFsFullReader);
23166
23167 _this5 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsFullReader).call(this, stream));
23168 var path = decodeURIComponent(_this5._url.path);
23169
23170 if (fileUriRegex.test(_this5._url.href)) {
23171 path = path.replace(/^\//, '');
23172 }
23173
23174 fs.lstat(path, function (error, stat) {
23175 if (error) {
23176 if (error.code === 'ENOENT') {
23177 error = new _util.MissingPDFException("Missing PDF \"".concat(path, "\"."));
23178 }
23179
23180 _this5._storedError = error;
23181
23182 _this5._headersCapability.reject(error);
23183
23184 return;
23185 }
23186
23187 _this5._contentLength = stat.size;
23188
23189 _this5._setReadableStream(fs.createReadStream(path));
23190
23191 _this5._headersCapability.resolve();
23192 });
23193 return _this5;
23194 }
23195
23196 return PDFNodeStreamFsFullReader;
23197}(BaseFullReader);
23198
23199var PDFNodeStreamFsRangeReader =
23200/*#__PURE__*/
23201function (_BaseRangeReader2) {
23202 _inherits(PDFNodeStreamFsRangeReader, _BaseRangeReader2);
23203
23204 function PDFNodeStreamFsRangeReader(stream, start, end) {
23205 var _this6;
23206
23207 _classCallCheck(this, PDFNodeStreamFsRangeReader);
23208
23209 _this6 = _possibleConstructorReturn(this, _getPrototypeOf(PDFNodeStreamFsRangeReader).call(this, stream));
23210 var path = decodeURIComponent(_this6._url.path);
23211
23212 if (fileUriRegex.test(_this6._url.href)) {
23213 path = path.replace(/^\//, '');
23214 }
23215
23216 _this6._setReadableStream(fs.createReadStream(path, {
23217 start: start,
23218 end: end - 1
23219 }));
23220
23221 return _this6;
23222 }
23223
23224 return PDFNodeStreamFsRangeReader;
23225}(BaseRangeReader);
23226
23227/***/ }),
23228/* 166 */
23229/***/ (function(module, exports, __w_pdfjs_require__) {
23230
23231"use strict";
23232
23233
23234Object.defineProperty(exports, "__esModule", {
23235 value: true
23236});
23237exports.createResponseStatusError = createResponseStatusError;
23238exports.extractFilenameFromHeader = extractFilenameFromHeader;
23239exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
23240exports.validateResponseStatus = validateResponseStatus;
23241
23242var _util = __w_pdfjs_require__(1);
23243
23244var _content_disposition = __w_pdfjs_require__(167);
23245
23246function validateRangeRequestCapabilities(_ref) {
23247 var getResponseHeader = _ref.getResponseHeader,
23248 isHttp = _ref.isHttp,
23249 rangeChunkSize = _ref.rangeChunkSize,
23250 disableRange = _ref.disableRange;
23251 (0, _util.assert)(rangeChunkSize > 0, 'Range chunk size must be larger than zero');
23252 var returnValues = {
23253 allowRangeRequests: false,
23254 suggestedLength: undefined
23255 };
23256 var length = parseInt(getResponseHeader('Content-Length'), 10);
23257
23258 if (!Number.isInteger(length)) {
23259 return returnValues;
23260 }
23261
23262 returnValues.suggestedLength = length;
23263
23264 if (length <= 2 * rangeChunkSize) {
23265 return returnValues;
23266 }
23267
23268 if (disableRange || !isHttp) {
23269 return returnValues;
23270 }
23271
23272 if (getResponseHeader('Accept-Ranges') !== 'bytes') {
23273 return returnValues;
23274 }
23275
23276 var contentEncoding = getResponseHeader('Content-Encoding') || 'identity';
23277
23278 if (contentEncoding !== 'identity') {
23279 return returnValues;
23280 }
23281
23282 returnValues.allowRangeRequests = true;
23283 return returnValues;
23284}
23285
23286function extractFilenameFromHeader(getResponseHeader) {
23287 var contentDisposition = getResponseHeader('Content-Disposition');
23288
23289 if (contentDisposition) {
23290 var filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
23291
23292 if (/\.pdf$/i.test(filename)) {
23293 return filename;
23294 }
23295 }
23296
23297 return null;
23298}
23299
23300function createResponseStatusError(status, url) {
23301 if (status === 404 || status === 0 && /^file:/.test(url)) {
23302 return new _util.MissingPDFException('Missing PDF "' + url + '".');
23303 }
23304
23305 return new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status);
23306}
23307
23308function validateResponseStatus(status) {
23309 return status === 200 || status === 206;
23310}
23311
23312/***/ }),
23313/* 167 */
23314/***/ (function(module, exports, __w_pdfjs_require__) {
23315
23316"use strict";
23317
23318
23319Object.defineProperty(exports, "__esModule", {
23320 value: true
23321});
23322exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
23323
23324function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
23325
23326function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
23327
23328function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23329
23330function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23331
23332function getFilenameFromContentDispositionHeader(contentDisposition) {
23333 var needsEncodingFixup = true;
23334 var tmp = toParamRegExp('filename\\*', 'i').exec(contentDisposition);
23335
23336 if (tmp) {
23337 tmp = tmp[1];
23338 var filename = rfc2616unquote(tmp);
23339 filename = unescape(filename);
23340 filename = rfc5987decode(filename);
23341 filename = rfc2047decode(filename);
23342 return fixupEncoding(filename);
23343 }
23344
23345 tmp = rfc2231getparam(contentDisposition);
23346
23347 if (tmp) {
23348 var _filename = rfc2047decode(tmp);
23349
23350 return fixupEncoding(_filename);
23351 }
23352
23353 tmp = toParamRegExp('filename', 'i').exec(contentDisposition);
23354
23355 if (tmp) {
23356 tmp = tmp[1];
23357
23358 var _filename2 = rfc2616unquote(tmp);
23359
23360 _filename2 = rfc2047decode(_filename2);
23361 return fixupEncoding(_filename2);
23362 }
23363
23364 function toParamRegExp(attributePattern, flags) {
23365 return new RegExp('(?:^|;)\\s*' + attributePattern + '\\s*=\\s*' + '(' + '[^";\\s][^;\\s]*' + '|' + '"(?:[^"\\\\]|\\\\"?)+"?' + ')', flags);
23366 }
23367
23368 function textdecode(encoding, value) {
23369 if (encoding) {
23370 if (!/^[\x00-\xFF]+$/.test(value)) {
23371 return value;
23372 }
23373
23374 try {
23375 var decoder = new TextDecoder(encoding, {
23376 fatal: true
23377 });
23378 var bytes = Array.from(value, function (ch) {
23379 return ch.charCodeAt(0) & 0xFF;
23380 });
23381 value = decoder.decode(new Uint8Array(bytes));
23382 needsEncodingFixup = false;
23383 } catch (e) {
23384 if (/^utf-?8$/i.test(encoding)) {
23385 try {
23386 value = decodeURIComponent(escape(value));
23387 needsEncodingFixup = false;
23388 } catch (err) {}
23389 }
23390 }
23391 }
23392
23393 return value;
23394 }
23395
23396 function fixupEncoding(value) {
23397 if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
23398 value = textdecode('utf-8', value);
23399
23400 if (needsEncodingFixup) {
23401 value = textdecode('iso-8859-1', value);
23402 }
23403 }
23404
23405 return value;
23406 }
23407
23408 function rfc2231getparam(contentDisposition) {
23409 var matches = [],
23410 match;
23411 var iter = toParamRegExp('filename\\*((?!0\\d)\\d+)(\\*?)', 'ig');
23412
23413 while ((match = iter.exec(contentDisposition)) !== null) {
23414 var _match = match,
23415 _match2 = _slicedToArray(_match, 4),
23416 n = _match2[1],
23417 quot = _match2[2],
23418 part = _match2[3];
23419
23420 n = parseInt(n, 10);
23421
23422 if (n in matches) {
23423 if (n === 0) {
23424 break;
23425 }
23426
23427 continue;
23428 }
23429
23430 matches[n] = [quot, part];
23431 }
23432
23433 var parts = [];
23434
23435 for (var n = 0; n < matches.length; ++n) {
23436 if (!(n in matches)) {
23437 break;
23438 }
23439
23440 var _matches$n = _slicedToArray(matches[n], 2),
23441 quot = _matches$n[0],
23442 part = _matches$n[1];
23443
23444 part = rfc2616unquote(part);
23445
23446 if (quot) {
23447 part = unescape(part);
23448
23449 if (n === 0) {
23450 part = rfc5987decode(part);
23451 }
23452 }
23453
23454 parts.push(part);
23455 }
23456
23457 return parts.join('');
23458 }
23459
23460 function rfc2616unquote(value) {
23461 if (value.startsWith('"')) {
23462 var parts = value.slice(1).split('\\"');
23463
23464 for (var i = 0; i < parts.length; ++i) {
23465 var quotindex = parts[i].indexOf('"');
23466
23467 if (quotindex !== -1) {
23468 parts[i] = parts[i].slice(0, quotindex);
23469 parts.length = i + 1;
23470 }
23471
23472 parts[i] = parts[i].replace(/\\(.)/g, '$1');
23473 }
23474
23475 value = parts.join('"');
23476 }
23477
23478 return value;
23479 }
23480
23481 function rfc5987decode(extvalue) {
23482 var encodingend = extvalue.indexOf('\'');
23483
23484 if (encodingend === -1) {
23485 return extvalue;
23486 }
23487
23488 var encoding = extvalue.slice(0, encodingend);
23489 var langvalue = extvalue.slice(encodingend + 1);
23490 var value = langvalue.replace(/^[^']*'/, '');
23491 return textdecode(encoding, value);
23492 }
23493
23494 function rfc2047decode(value) {
23495 if (!value.startsWith('=?') || /[\x00-\x19\x80-\xff]/.test(value)) {
23496 return value;
23497 }
23498
23499 return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (_, charset, encoding, text) {
23500 if (encoding === 'q' || encoding === 'Q') {
23501 text = text.replace(/_/g, ' ');
23502 text = text.replace(/=([0-9a-fA-F]{2})/g, function (_, hex) {
23503 return String.fromCharCode(parseInt(hex, 16));
23504 });
23505 return textdecode(charset, text);
23506 }
23507
23508 try {
23509 text = atob(text);
23510 } catch (e) {}
23511
23512 return textdecode(charset, text);
23513 });
23514 }
23515
23516 return '';
23517}
23518
23519/***/ }),
23520/* 168 */
23521/***/ (function(module, exports, __w_pdfjs_require__) {
23522
23523"use strict";
23524
23525
23526Object.defineProperty(exports, "__esModule", {
23527 value: true
23528});
23529exports.PDFNetworkStream = void 0;
23530
23531var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
23532
23533var _util = __w_pdfjs_require__(1);
23534
23535var _network_utils = __w_pdfjs_require__(166);
23536
23537function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23538
23539function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23540
23541function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
23542
23543function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23544
23545function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23546
23547function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23548
23549;
23550var OK_RESPONSE = 200;
23551var PARTIAL_CONTENT_RESPONSE = 206;
23552
23553function getArrayBuffer(xhr) {
23554 var data = xhr.response;
23555
23556 if (typeof data !== 'string') {
23557 return data;
23558 }
23559
23560 var array = (0, _util.stringToBytes)(data);
23561 return array.buffer;
23562}
23563
23564var NetworkManager =
23565/*#__PURE__*/
23566function () {
23567 function NetworkManager(url, args) {
23568 _classCallCheck(this, NetworkManager);
23569
23570 this.url = url;
23571 args = args || {};
23572 this.isHttp = /^https?:/i.test(url);
23573 this.httpHeaders = this.isHttp && args.httpHeaders || {};
23574 this.withCredentials = args.withCredentials || false;
23575
23576 this.getXhr = args.getXhr || function NetworkManager_getXhr() {
23577 return new XMLHttpRequest();
23578 };
23579
23580 this.currXhrId = 0;
23581 this.pendingRequests = Object.create(null);
23582 }
23583
23584 _createClass(NetworkManager, [{
23585 key: "requestRange",
23586 value: function requestRange(begin, end, listeners) {
23587 var args = {
23588 begin: begin,
23589 end: end
23590 };
23591
23592 for (var prop in listeners) {
23593 args[prop] = listeners[prop];
23594 }
23595
23596 return this.request(args);
23597 }
23598 }, {
23599 key: "requestFull",
23600 value: function requestFull(listeners) {
23601 return this.request(listeners);
23602 }
23603 }, {
23604 key: "request",
23605 value: function request(args) {
23606 var xhr = this.getXhr();
23607 var xhrId = this.currXhrId++;
23608 var pendingRequest = this.pendingRequests[xhrId] = {
23609 xhr: xhr
23610 };
23611 xhr.open('GET', this.url);
23612 xhr.withCredentials = this.withCredentials;
23613
23614 for (var property in this.httpHeaders) {
23615 var value = this.httpHeaders[property];
23616
23617 if (typeof value === 'undefined') {
23618 continue;
23619 }
23620
23621 xhr.setRequestHeader(property, value);
23622 }
23623
23624 if (this.isHttp && 'begin' in args && 'end' in args) {
23625 xhr.setRequestHeader('Range', "bytes=".concat(args.begin, "-").concat(args.end - 1));
23626 pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;
23627 } else {
23628 pendingRequest.expectedStatus = OK_RESPONSE;
23629 }
23630
23631 xhr.responseType = 'arraybuffer';
23632
23633 if (args.onError) {
23634 xhr.onerror = function (evt) {
23635 args.onError(xhr.status);
23636 };
23637 }
23638
23639 xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
23640 xhr.onprogress = this.onProgress.bind(this, xhrId);
23641 pendingRequest.onHeadersReceived = args.onHeadersReceived;
23642 pendingRequest.onDone = args.onDone;
23643 pendingRequest.onError = args.onError;
23644 pendingRequest.onProgress = args.onProgress;
23645 xhr.send(null);
23646 return xhrId;
23647 }
23648 }, {
23649 key: "onProgress",
23650 value: function onProgress(xhrId, evt) {
23651 var pendingRequest = this.pendingRequests[xhrId];
23652
23653 if (!pendingRequest) {
23654 return;
23655 }
23656
23657 if (pendingRequest.onProgress) {
23658 pendingRequest.onProgress(evt);
23659 }
23660 }
23661 }, {
23662 key: "onStateChange",
23663 value: function onStateChange(xhrId, evt) {
23664 var pendingRequest = this.pendingRequests[xhrId];
23665
23666 if (!pendingRequest) {
23667 return;
23668 }
23669
23670 var xhr = pendingRequest.xhr;
23671
23672 if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
23673 pendingRequest.onHeadersReceived();
23674 delete pendingRequest.onHeadersReceived;
23675 }
23676
23677 if (xhr.readyState !== 4) {
23678 return;
23679 }
23680
23681 if (!(xhrId in this.pendingRequests)) {
23682 return;
23683 }
23684
23685 delete this.pendingRequests[xhrId];
23686
23687 if (xhr.status === 0 && this.isHttp) {
23688 if (pendingRequest.onError) {
23689 pendingRequest.onError(xhr.status);
23690 }
23691
23692 return;
23693 }
23694
23695 var xhrStatus = xhr.status || OK_RESPONSE;
23696 var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
23697
23698 if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
23699 if (pendingRequest.onError) {
23700 pendingRequest.onError(xhr.status);
23701 }
23702
23703 return;
23704 }
23705
23706 var chunk = getArrayBuffer(xhr);
23707
23708 if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
23709 var rangeHeader = xhr.getResponseHeader('Content-Range');
23710 var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
23711 pendingRequest.onDone({
23712 begin: parseInt(matches[1], 10),
23713 chunk: chunk
23714 });
23715 } else if (chunk) {
23716 pendingRequest.onDone({
23717 begin: 0,
23718 chunk: chunk
23719 });
23720 } else if (pendingRequest.onError) {
23721 pendingRequest.onError(xhr.status);
23722 }
23723 }
23724 }, {
23725 key: "hasPendingRequests",
23726 value: function hasPendingRequests() {
23727 for (var xhrId in this.pendingRequests) {
23728 return true;
23729 }
23730
23731 return false;
23732 }
23733 }, {
23734 key: "getRequestXhr",
23735 value: function getRequestXhr(xhrId) {
23736 return this.pendingRequests[xhrId].xhr;
23737 }
23738 }, {
23739 key: "isPendingRequest",
23740 value: function isPendingRequest(xhrId) {
23741 return xhrId in this.pendingRequests;
23742 }
23743 }, {
23744 key: "abortAllRequests",
23745 value: function abortAllRequests() {
23746 for (var xhrId in this.pendingRequests) {
23747 this.abortRequest(xhrId | 0);
23748 }
23749 }
23750 }, {
23751 key: "abortRequest",
23752 value: function abortRequest(xhrId) {
23753 var xhr = this.pendingRequests[xhrId].xhr;
23754 delete this.pendingRequests[xhrId];
23755 xhr.abort();
23756 }
23757 }]);
23758
23759 return NetworkManager;
23760}();
23761
23762var PDFNetworkStream =
23763/*#__PURE__*/
23764function () {
23765 function PDFNetworkStream(source) {
23766 _classCallCheck(this, PDFNetworkStream);
23767
23768 this._source = source;
23769 this._manager = new NetworkManager(source.url, {
23770 httpHeaders: source.httpHeaders,
23771 withCredentials: source.withCredentials
23772 });
23773 this._rangeChunkSize = source.rangeChunkSize;
23774 this._fullRequestReader = null;
23775 this._rangeRequestReaders = [];
23776 }
23777
23778 _createClass(PDFNetworkStream, [{
23779 key: "_onRangeRequestReaderClosed",
23780 value: function _onRangeRequestReaderClosed(reader) {
23781 var i = this._rangeRequestReaders.indexOf(reader);
23782
23783 if (i >= 0) {
23784 this._rangeRequestReaders.splice(i, 1);
23785 }
23786 }
23787 }, {
23788 key: "getFullReader",
23789 value: function getFullReader() {
23790 (0, _util.assert)(!this._fullRequestReader);
23791 this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
23792 return this._fullRequestReader;
23793 }
23794 }, {
23795 key: "getRangeReader",
23796 value: function getRangeReader(begin, end) {
23797 var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
23798 reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
23799
23800 this._rangeRequestReaders.push(reader);
23801
23802 return reader;
23803 }
23804 }, {
23805 key: "cancelAllRequests",
23806 value: function cancelAllRequests(reason) {
23807 if (this._fullRequestReader) {
23808 this._fullRequestReader.cancel(reason);
23809 }
23810
23811 var readers = this._rangeRequestReaders.slice(0);
23812
23813 readers.forEach(function (reader) {
23814 reader.cancel(reason);
23815 });
23816 }
23817 }]);
23818
23819 return PDFNetworkStream;
23820}();
23821
23822exports.PDFNetworkStream = PDFNetworkStream;
23823
23824var PDFNetworkStreamFullRequestReader =
23825/*#__PURE__*/
23826function () {
23827 function PDFNetworkStreamFullRequestReader(manager, source) {
23828 _classCallCheck(this, PDFNetworkStreamFullRequestReader);
23829
23830 this._manager = manager;
23831 var args = {
23832 onHeadersReceived: this._onHeadersReceived.bind(this),
23833 onDone: this._onDone.bind(this),
23834 onError: this._onError.bind(this),
23835 onProgress: this._onProgress.bind(this)
23836 };
23837 this._url = source.url;
23838 this._fullRequestId = manager.requestFull(args);
23839 this._headersReceivedCapability = (0, _util.createPromiseCapability)();
23840 this._disableRange = source.disableRange || false;
23841 this._contentLength = source.length;
23842 this._rangeChunkSize = source.rangeChunkSize;
23843
23844 if (!this._rangeChunkSize && !this._disableRange) {
23845 this._disableRange = true;
23846 }
23847
23848 this._isStreamingSupported = false;
23849 this._isRangeSupported = false;
23850 this._cachedChunks = [];
23851 this._requests = [];
23852 this._done = false;
23853 this._storedError = undefined;
23854 this._filename = null;
23855 this.onProgress = null;
23856 }
23857
23858 _createClass(PDFNetworkStreamFullRequestReader, [{
23859 key: "_onHeadersReceived",
23860 value: function _onHeadersReceived() {
23861 var fullRequestXhrId = this._fullRequestId;
23862
23863 var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
23864
23865 var getResponseHeader = function getResponseHeader(name) {
23866 return fullRequestXhr.getResponseHeader(name);
23867 };
23868
23869 var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
23870 getResponseHeader: getResponseHeader,
23871 isHttp: this._manager.isHttp,
23872 rangeChunkSize: this._rangeChunkSize,
23873 disableRange: this._disableRange
23874 }),
23875 allowRangeRequests = _validateRangeRequest.allowRangeRequests,
23876 suggestedLength = _validateRangeRequest.suggestedLength;
23877
23878 if (allowRangeRequests) {
23879 this._isRangeSupported = true;
23880 }
23881
23882 this._contentLength = suggestedLength || this._contentLength;
23883 this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
23884
23885 if (this._isRangeSupported) {
23886 this._manager.abortRequest(fullRequestXhrId);
23887 }
23888
23889 this._headersReceivedCapability.resolve();
23890 }
23891 }, {
23892 key: "_onDone",
23893 value: function _onDone(args) {
23894 if (args) {
23895 if (this._requests.length > 0) {
23896 var requestCapability = this._requests.shift();
23897
23898 requestCapability.resolve({
23899 value: args.chunk,
23900 done: false
23901 });
23902 } else {
23903 this._cachedChunks.push(args.chunk);
23904 }
23905 }
23906
23907 this._done = true;
23908
23909 if (this._cachedChunks.length > 0) {
23910 return;
23911 }
23912
23913 this._requests.forEach(function (requestCapability) {
23914 requestCapability.resolve({
23915 value: undefined,
23916 done: true
23917 });
23918 });
23919
23920 this._requests = [];
23921 }
23922 }, {
23923 key: "_onError",
23924 value: function _onError(status) {
23925 var url = this._url;
23926 var exception = (0, _network_utils.createResponseStatusError)(status, url);
23927 this._storedError = exception;
23928
23929 this._headersReceivedCapability.reject(exception);
23930
23931 this._requests.forEach(function (requestCapability) {
23932 requestCapability.reject(exception);
23933 });
23934
23935 this._requests = [];
23936 this._cachedChunks = [];
23937 }
23938 }, {
23939 key: "_onProgress",
23940 value: function _onProgress(data) {
23941 if (this.onProgress) {
23942 this.onProgress({
23943 loaded: data.loaded,
23944 total: data.lengthComputable ? data.total : this._contentLength
23945 });
23946 }
23947 }
23948 }, {
23949 key: "read",
23950 value: function () {
23951 var _read = _asyncToGenerator(
23952 /*#__PURE__*/
23953 _regenerator["default"].mark(function _callee() {
23954 var chunk, requestCapability;
23955 return _regenerator["default"].wrap(function _callee$(_context) {
23956 while (1) {
23957 switch (_context.prev = _context.next) {
23958 case 0:
23959 if (!this._storedError) {
23960 _context.next = 2;
23961 break;
23962 }
23963
23964 throw this._storedError;
23965
23966 case 2:
23967 if (!(this._cachedChunks.length > 0)) {
23968 _context.next = 5;
23969 break;
23970 }
23971
23972 chunk = this._cachedChunks.shift();
23973 return _context.abrupt("return", {
23974 value: chunk,
23975 done: false
23976 });
23977
23978 case 5:
23979 if (!this._done) {
23980 _context.next = 7;
23981 break;
23982 }
23983
23984 return _context.abrupt("return", {
23985 value: undefined,
23986 done: true
23987 });
23988
23989 case 7:
23990 requestCapability = (0, _util.createPromiseCapability)();
23991
23992 this._requests.push(requestCapability);
23993
23994 return _context.abrupt("return", requestCapability.promise);
23995
23996 case 10:
23997 case "end":
23998 return _context.stop();
23999 }
24000 }
24001 }, _callee, this);
24002 }));
24003
24004 function read() {
24005 return _read.apply(this, arguments);
24006 }
24007
24008 return read;
24009 }()
24010 }, {
24011 key: "cancel",
24012 value: function cancel(reason) {
24013 this._done = true;
24014
24015 this._headersReceivedCapability.reject(reason);
24016
24017 this._requests.forEach(function (requestCapability) {
24018 requestCapability.resolve({
24019 value: undefined,
24020 done: true
24021 });
24022 });
24023
24024 this._requests = [];
24025
24026 if (this._manager.isPendingRequest(this._fullRequestId)) {
24027 this._manager.abortRequest(this._fullRequestId);
24028 }
24029
24030 this._fullRequestReader = null;
24031 }
24032 }, {
24033 key: "filename",
24034 get: function get() {
24035 return this._filename;
24036 }
24037 }, {
24038 key: "isRangeSupported",
24039 get: function get() {
24040 return this._isRangeSupported;
24041 }
24042 }, {
24043 key: "isStreamingSupported",
24044 get: function get() {
24045 return this._isStreamingSupported;
24046 }
24047 }, {
24048 key: "contentLength",
24049 get: function get() {
24050 return this._contentLength;
24051 }
24052 }, {
24053 key: "headersReady",
24054 get: function get() {
24055 return this._headersReceivedCapability.promise;
24056 }
24057 }]);
24058
24059 return PDFNetworkStreamFullRequestReader;
24060}();
24061
24062var PDFNetworkStreamRangeRequestReader =
24063/*#__PURE__*/
24064function () {
24065 function PDFNetworkStreamRangeRequestReader(manager, begin, end) {
24066 _classCallCheck(this, PDFNetworkStreamRangeRequestReader);
24067
24068 this._manager = manager;
24069 var args = {
24070 onDone: this._onDone.bind(this),
24071 onProgress: this._onProgress.bind(this)
24072 };
24073 this._requestId = manager.requestRange(begin, end, args);
24074 this._requests = [];
24075 this._queuedChunk = null;
24076 this._done = false;
24077 this.onProgress = null;
24078 this.onClosed = null;
24079 }
24080
24081 _createClass(PDFNetworkStreamRangeRequestReader, [{
24082 key: "_close",
24083 value: function _close() {
24084 if (this.onClosed) {
24085 this.onClosed(this);
24086 }
24087 }
24088 }, {
24089 key: "_onDone",
24090 value: function _onDone(data) {
24091 var chunk = data.chunk;
24092
24093 if (this._requests.length > 0) {
24094 var requestCapability = this._requests.shift();
24095
24096 requestCapability.resolve({
24097 value: chunk,
24098 done: false
24099 });
24100 } else {
24101 this._queuedChunk = chunk;
24102 }
24103
24104 this._done = true;
24105
24106 this._requests.forEach(function (requestCapability) {
24107 requestCapability.resolve({
24108 value: undefined,
24109 done: true
24110 });
24111 });
24112
24113 this._requests = [];
24114
24115 this._close();
24116 }
24117 }, {
24118 key: "_onProgress",
24119 value: function _onProgress(evt) {
24120 if (!this.isStreamingSupported && this.onProgress) {
24121 this.onProgress({
24122 loaded: evt.loaded
24123 });
24124 }
24125 }
24126 }, {
24127 key: "read",
24128 value: function () {
24129 var _read2 = _asyncToGenerator(
24130 /*#__PURE__*/
24131 _regenerator["default"].mark(function _callee2() {
24132 var chunk, requestCapability;
24133 return _regenerator["default"].wrap(function _callee2$(_context2) {
24134 while (1) {
24135 switch (_context2.prev = _context2.next) {
24136 case 0:
24137 if (!(this._queuedChunk !== null)) {
24138 _context2.next = 4;
24139 break;
24140 }
24141
24142 chunk = this._queuedChunk;
24143 this._queuedChunk = null;
24144 return _context2.abrupt("return", {
24145 value: chunk,
24146 done: false
24147 });
24148
24149 case 4:
24150 if (!this._done) {
24151 _context2.next = 6;
24152 break;
24153 }
24154
24155 return _context2.abrupt("return", {
24156 value: undefined,
24157 done: true
24158 });
24159
24160 case 6:
24161 requestCapability = (0, _util.createPromiseCapability)();
24162
24163 this._requests.push(requestCapability);
24164
24165 return _context2.abrupt("return", requestCapability.promise);
24166
24167 case 9:
24168 case "end":
24169 return _context2.stop();
24170 }
24171 }
24172 }, _callee2, this);
24173 }));
24174
24175 function read() {
24176 return _read2.apply(this, arguments);
24177 }
24178
24179 return read;
24180 }()
24181 }, {
24182 key: "cancel",
24183 value: function cancel(reason) {
24184 this._done = true;
24185
24186 this._requests.forEach(function (requestCapability) {
24187 requestCapability.resolve({
24188 value: undefined,
24189 done: true
24190 });
24191 });
24192
24193 this._requests = [];
24194
24195 if (this._manager.isPendingRequest(this._requestId)) {
24196 this._manager.abortRequest(this._requestId);
24197 }
24198
24199 this._close();
24200 }
24201 }, {
24202 key: "isStreamingSupported",
24203 get: function get() {
24204 return false;
24205 }
24206 }]);
24207
24208 return PDFNetworkStreamRangeRequestReader;
24209}();
24210
24211/***/ }),
24212/* 169 */
24213/***/ (function(module, exports, __w_pdfjs_require__) {
24214
24215"use strict";
24216
24217
24218Object.defineProperty(exports, "__esModule", {
24219 value: true
24220});
24221exports.PDFFetchStream = void 0;
24222
24223var _regenerator = _interopRequireDefault(__w_pdfjs_require__(148));
24224
24225var _util = __w_pdfjs_require__(1);
24226
24227var _network_utils = __w_pdfjs_require__(166);
24228
24229function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24230
24231function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
24232
24233function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24234
24235function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24236
24237function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
24238
24239function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
24240
24241function createFetchOptions(headers, withCredentials, abortController) {
24242 return {
24243 method: 'GET',
24244 headers: headers,
24245 signal: abortController && abortController.signal,
24246 mode: 'cors',
24247 credentials: withCredentials ? 'include' : 'same-origin',
24248 redirect: 'follow'
24249 };
24250}
24251
24252var PDFFetchStream =
24253/*#__PURE__*/
24254function () {
24255 function PDFFetchStream(source) {
24256 _classCallCheck(this, PDFFetchStream);
24257
24258 this.source = source;
24259 this.isHttp = /^https?:/i.test(source.url);
24260 this.httpHeaders = this.isHttp && source.httpHeaders || {};
24261 this._fullRequestReader = null;
24262 this._rangeRequestReaders = [];
24263 }
24264
24265 _createClass(PDFFetchStream, [{
24266 key: "getFullReader",
24267 value: function getFullReader() {
24268 (0, _util.assert)(!this._fullRequestReader);
24269 this._fullRequestReader = new PDFFetchStreamReader(this);
24270 return this._fullRequestReader;
24271 }
24272 }, {
24273 key: "getRangeReader",
24274 value: function getRangeReader(begin, end) {
24275 if (end <= this._progressiveDataLength) {
24276 return null;
24277 }
24278
24279 var reader = new PDFFetchStreamRangeReader(this, begin, end);
24280
24281 this._rangeRequestReaders.push(reader);
24282
24283 return reader;
24284 }
24285 }, {
24286 key: "cancelAllRequests",
24287 value: function cancelAllRequests(reason) {
24288 if (this._fullRequestReader) {
24289 this._fullRequestReader.cancel(reason);
24290 }
24291
24292 var readers = this._rangeRequestReaders.slice(0);
24293
24294 readers.forEach(function (reader) {
24295 reader.cancel(reason);
24296 });
24297 }
24298 }, {
24299 key: "_progressiveDataLength",
24300 get: function get() {
24301 return this._fullRequestReader ? this._fullRequestReader._loaded : 0;
24302 }
24303 }]);
24304
24305 return PDFFetchStream;
24306}();
24307
24308exports.PDFFetchStream = PDFFetchStream;
24309
24310var PDFFetchStreamReader =
24311/*#__PURE__*/
24312function () {
24313 function PDFFetchStreamReader(stream) {
24314 var _this = this;
24315
24316 _classCallCheck(this, PDFFetchStreamReader);
24317
24318 this._stream = stream;
24319 this._reader = null;
24320 this._loaded = 0;
24321 this._filename = null;
24322 var source = stream.source;
24323 this._withCredentials = source.withCredentials || false;
24324 this._contentLength = source.length;
24325 this._headersCapability = (0, _util.createPromiseCapability)();
24326 this._disableRange = source.disableRange || false;
24327 this._rangeChunkSize = source.rangeChunkSize;
24328
24329 if (!this._rangeChunkSize && !this._disableRange) {
24330 this._disableRange = true;
24331 }
24332
24333 if (typeof AbortController !== 'undefined') {
24334 this._abortController = new AbortController();
24335 }
24336
24337 this._isStreamingSupported = !source.disableStream;
24338 this._isRangeSupported = !source.disableRange;
24339 this._headers = new Headers();
24340
24341 for (var property in this._stream.httpHeaders) {
24342 var value = this._stream.httpHeaders[property];
24343
24344 if (typeof value === 'undefined') {
24345 continue;
24346 }
24347
24348 this._headers.append(property, value);
24349 }
24350
24351 var url = source.url;
24352 fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
24353 if (!(0, _network_utils.validateResponseStatus)(response.status)) {
24354 throw (0, _network_utils.createResponseStatusError)(response.status, url);
24355 }
24356
24357 _this._reader = response.body.getReader();
24358
24359 _this._headersCapability.resolve();
24360
24361 var getResponseHeader = function getResponseHeader(name) {
24362 return response.headers.get(name);
24363 };
24364
24365 var _validateRangeRequest = (0, _network_utils.validateRangeRequestCapabilities)({
24366 getResponseHeader: getResponseHeader,
24367 isHttp: _this._stream.isHttp,
24368 rangeChunkSize: _this._rangeChunkSize,
24369 disableRange: _this._disableRange
24370 }),
24371 allowRangeRequests = _validateRangeRequest.allowRangeRequests,
24372 suggestedLength = _validateRangeRequest.suggestedLength;
24373
24374 _this._isRangeSupported = allowRangeRequests;
24375 _this._contentLength = suggestedLength || _this._contentLength;
24376 _this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
24377
24378 if (!_this._isStreamingSupported && _this._isRangeSupported) {
24379 _this.cancel(new _util.AbortException('Streaming is disabled.'));
24380 }
24381 })["catch"](this._headersCapability.reject);
24382 this.onProgress = null;
24383 }
24384
24385 _createClass(PDFFetchStreamReader, [{
24386 key: "read",
24387 value: function () {
24388 var _read = _asyncToGenerator(
24389 /*#__PURE__*/
24390 _regenerator["default"].mark(function _callee() {
24391 var _ref, value, done, buffer;
24392
24393 return _regenerator["default"].wrap(function _callee$(_context) {
24394 while (1) {
24395 switch (_context.prev = _context.next) {
24396 case 0:
24397 _context.next = 2;
24398 return this._headersCapability.promise;
24399
24400 case 2:
24401 _context.next = 4;
24402 return this._reader.read();
24403
24404 case 4:
24405 _ref = _context.sent;
24406 value = _ref.value;
24407 done = _ref.done;
24408
24409 if (!done) {
24410 _context.next = 9;
24411 break;
24412 }
24413
24414 return _context.abrupt("return", {
24415 value: value,
24416 done: done
24417 });
24418
24419 case 9:
24420 this._loaded += value.byteLength;
24421
24422 if (this.onProgress) {
24423 this.onProgress({
24424 loaded: this._loaded,
24425 total: this._contentLength
24426 });
24427 }
24428
24429 buffer = new Uint8Array(value).buffer;
24430 return _context.abrupt("return", {
24431 value: buffer,
24432 done: false
24433 });
24434
24435 case 13:
24436 case "end":
24437 return _context.stop();
24438 }
24439 }
24440 }, _callee, this);
24441 }));
24442
24443 function read() {
24444 return _read.apply(this, arguments);
24445 }
24446
24447 return read;
24448 }()
24449 }, {
24450 key: "cancel",
24451 value: function cancel(reason) {
24452 if (this._reader) {
24453 this._reader.cancel(reason);
24454 }
24455
24456 if (this._abortController) {
24457 this._abortController.abort();
24458 }
24459 }
24460 }, {
24461 key: "headersReady",
24462 get: function get() {
24463 return this._headersCapability.promise;
24464 }
24465 }, {
24466 key: "filename",
24467 get: function get() {
24468 return this._filename;
24469 }
24470 }, {
24471 key: "contentLength",
24472 get: function get() {
24473 return this._contentLength;
24474 }
24475 }, {
24476 key: "isRangeSupported",
24477 get: function get() {
24478 return this._isRangeSupported;
24479 }
24480 }, {
24481 key: "isStreamingSupported",
24482 get: function get() {
24483 return this._isStreamingSupported;
24484 }
24485 }]);
24486
24487 return PDFFetchStreamReader;
24488}();
24489
24490var PDFFetchStreamRangeReader =
24491/*#__PURE__*/
24492function () {
24493 function PDFFetchStreamRangeReader(stream, begin, end) {
24494 var _this2 = this;
24495
24496 _classCallCheck(this, PDFFetchStreamRangeReader);
24497
24498 this._stream = stream;
24499 this._reader = null;
24500 this._loaded = 0;
24501 var source = stream.source;
24502 this._withCredentials = source.withCredentials || false;
24503 this._readCapability = (0, _util.createPromiseCapability)();
24504 this._isStreamingSupported = !source.disableStream;
24505
24506 if (typeof AbortController !== 'undefined') {
24507 this._abortController = new AbortController();
24508 }
24509
24510 this._headers = new Headers();
24511
24512 for (var property in this._stream.httpHeaders) {
24513 var value = this._stream.httpHeaders[property];
24514
24515 if (typeof value === 'undefined') {
24516 continue;
24517 }
24518
24519 this._headers.append(property, value);
24520 }
24521
24522 this._headers.append('Range', "bytes=".concat(begin, "-").concat(end - 1));
24523
24524 var url = source.url;
24525 fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(function (response) {
24526 if (!(0, _network_utils.validateResponseStatus)(response.status)) {
24527 throw (0, _network_utils.createResponseStatusError)(response.status, url);
24528 }
24529
24530 _this2._readCapability.resolve();
24531
24532 _this2._reader = response.body.getReader();
24533 });
24534 this.onProgress = null;
24535 }
24536
24537 _createClass(PDFFetchStreamRangeReader, [{
24538 key: "read",
24539 value: function () {
24540 var _read2 = _asyncToGenerator(
24541 /*#__PURE__*/
24542 _regenerator["default"].mark(function _callee2() {
24543 var _ref2, value, done, buffer;
24544
24545 return _regenerator["default"].wrap(function _callee2$(_context2) {
24546 while (1) {
24547 switch (_context2.prev = _context2.next) {
24548 case 0:
24549 _context2.next = 2;
24550 return this._readCapability.promise;
24551
24552 case 2:
24553 _context2.next = 4;
24554 return this._reader.read();
24555
24556 case 4:
24557 _ref2 = _context2.sent;
24558 value = _ref2.value;
24559 done = _ref2.done;
24560
24561 if (!done) {
24562 _context2.next = 9;
24563 break;
24564 }
24565
24566 return _context2.abrupt("return", {
24567 value: value,
24568 done: done
24569 });
24570
24571 case 9:
24572 this._loaded += value.byteLength;
24573
24574 if (this.onProgress) {
24575 this.onProgress({
24576 loaded: this._loaded
24577 });
24578 }
24579
24580 buffer = new Uint8Array(value).buffer;
24581 return _context2.abrupt("return", {
24582 value: buffer,
24583 done: false
24584 });
24585
24586 case 13:
24587 case "end":
24588 return _context2.stop();
24589 }
24590 }
24591 }, _callee2, this);
24592 }));
24593
24594 function read() {
24595 return _read2.apply(this, arguments);
24596 }
24597
24598 return read;
24599 }()
24600 }, {
24601 key: "cancel",
24602 value: function cancel(reason) {
24603 if (this._reader) {
24604 this._reader.cancel(reason);
24605 }
24606
24607 if (this._abortController) {
24608 this._abortController.abort();
24609 }
24610 }
24611 }, {
24612 key: "isStreamingSupported",
24613 get: function get() {
24614 return this._isStreamingSupported;
24615 }
24616 }]);
24617
24618 return PDFFetchStreamRangeReader;
24619}();
24620
24621/***/ })
24622/******/ ]);
24623});
24624//# sourceMappingURL=pdf.js.map
\No newline at end of file