UNPKG

1.65 MBJavaScriptView 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.worker", [], factory);
28 else if(typeof exports === 'object')
29 exports["pdfjs-dist/build/pdf.worker"] = factory();
30 else
31 root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = 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 pdfjsCoreWorker = __w_pdfjs_require__(1);
130
131exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
132
133/***/ }),
134/* 1 */
135/***/ (function(module, exports, __w_pdfjs_require__) {
136
137"use strict";
138
139
140Object.defineProperty(exports, "__esModule", {
141 value: true
142});
143exports.WorkerMessageHandler = exports.WorkerTask = void 0;
144
145var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
146
147var _util = __w_pdfjs_require__(5);
148
149var _primitives = __w_pdfjs_require__(151);
150
151var _pdf_manager = __w_pdfjs_require__(152);
152
153var _is_node = _interopRequireDefault(__w_pdfjs_require__(8));
154
155var _message_handler = __w_pdfjs_require__(191);
156
157var _worker_stream = __w_pdfjs_require__(192);
158
159var _core_utils = __w_pdfjs_require__(154);
160
161function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
162
163function _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); }
164
165function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
166
167function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
168
169function _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; }
170
171function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
172
173function 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); } }
174
175function _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); }); }; }
176
177var WorkerTask = function WorkerTaskClosure() {
178 function WorkerTask(name) {
179 this.name = name;
180 this.terminated = false;
181 this._capability = (0, _util.createPromiseCapability)();
182 }
183
184 WorkerTask.prototype = {
185 get finished() {
186 return this._capability.promise;
187 },
188
189 finish: function finish() {
190 this._capability.resolve();
191 },
192 terminate: function terminate() {
193 this.terminated = true;
194 },
195 ensureNotTerminated: function ensureNotTerminated() {
196 if (this.terminated) {
197 throw new Error('Worker task was terminated');
198 }
199 }
200 };
201 return WorkerTask;
202}();
203
204exports.WorkerTask = WorkerTask;
205var WorkerMessageHandler = {
206 setup: function setup(handler, port) {
207 var testMessageProcessed = false;
208 handler.on('test', function wphSetupTest(data) {
209 if (testMessageProcessed) {
210 return;
211 }
212
213 testMessageProcessed = true;
214
215 if (!(data instanceof Uint8Array)) {
216 handler.send('test', false);
217 return;
218 }
219
220 var supportTransfers = data[0] === 255;
221 handler.postMessageTransfers = supportTransfers;
222 var xhr = new XMLHttpRequest();
223 var responseExists = 'response' in xhr;
224
225 try {
226 xhr.responseType;
227 } catch (e) {
228 responseExists = false;
229 }
230
231 if (!responseExists) {
232 handler.send('test', false);
233 return;
234 }
235
236 handler.send('test', {
237 supportTypedArray: true,
238 supportTransfers: supportTransfers
239 });
240 });
241 handler.on('configure', function wphConfigure(data) {
242 (0, _util.setVerbosityLevel)(data.verbosity);
243 });
244 handler.on('GetDocRequest', function wphSetupDoc(data) {
245 return WorkerMessageHandler.createDocumentHandler(data, port);
246 });
247 },
248 createDocumentHandler: function createDocumentHandler(docParams, port) {
249 var pdfManager;
250 var terminated = false;
251 var cancelXHRs = null;
252 var WorkerTasks = [];
253 var verbosity = (0, _util.getVerbosityLevel)();
254 var apiVersion = docParams.apiVersion;
255 var workerVersion = '2.2.228';
256
257 if (apiVersion !== workerVersion) {
258 throw new Error("The API version \"".concat(apiVersion, "\" does not match ") + "the Worker version \"".concat(workerVersion, "\"."));
259 }
260
261 var docId = docParams.docId;
262 var docBaseUrl = docParams.docBaseUrl;
263 var workerHandlerName = docParams.docId + '_worker';
264 var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);
265 handler.postMessageTransfers = docParams.postMessageTransfers;
266
267 function ensureNotTerminated() {
268 if (terminated) {
269 throw new Error('Worker was terminated');
270 }
271 }
272
273 function startWorkerTask(task) {
274 WorkerTasks.push(task);
275 }
276
277 function finishWorkerTask(task) {
278 task.finish();
279 var i = WorkerTasks.indexOf(task);
280 WorkerTasks.splice(i, 1);
281 }
282
283 function loadDocument(_x) {
284 return _loadDocument.apply(this, arguments);
285 }
286
287 function _loadDocument() {
288 _loadDocument = _asyncToGenerator(
289 /*#__PURE__*/
290 _regenerator["default"].mark(function _callee(recoveryMode) {
291 var _ref4, _ref5, numPages, fingerprint;
292
293 return _regenerator["default"].wrap(function _callee$(_context) {
294 while (1) {
295 switch (_context.prev = _context.next) {
296 case 0:
297 _context.next = 2;
298 return pdfManager.ensureDoc('checkHeader');
299
300 case 2:
301 _context.next = 4;
302 return pdfManager.ensureDoc('parseStartXRef');
303
304 case 4:
305 _context.next = 6;
306 return pdfManager.ensureDoc('parse', [recoveryMode]);
307
308 case 6:
309 if (recoveryMode) {
310 _context.next = 9;
311 break;
312 }
313
314 _context.next = 9;
315 return pdfManager.ensureDoc('checkFirstPage');
316
317 case 9:
318 _context.next = 11;
319 return Promise.all([pdfManager.ensureDoc('numPages'), pdfManager.ensureDoc('fingerprint')]);
320
321 case 11:
322 _ref4 = _context.sent;
323 _ref5 = _slicedToArray(_ref4, 2);
324 numPages = _ref5[0];
325 fingerprint = _ref5[1];
326 return _context.abrupt("return", {
327 numPages: numPages,
328 fingerprint: fingerprint
329 });
330
331 case 16:
332 case "end":
333 return _context.stop();
334 }
335 }
336 }, _callee);
337 }));
338 return _loadDocument.apply(this, arguments);
339 }
340
341 function getPdfManager(data, evaluatorOptions) {
342 var pdfManagerCapability = (0, _util.createPromiseCapability)();
343 var pdfManager;
344 var source = data.source;
345
346 if (source.data) {
347 try {
348 pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);
349 pdfManagerCapability.resolve(pdfManager);
350 } catch (ex) {
351 pdfManagerCapability.reject(ex);
352 }
353
354 return pdfManagerCapability.promise;
355 }
356
357 var pdfStream,
358 cachedChunks = [];
359
360 try {
361 pdfStream = new _worker_stream.PDFWorkerStream(handler);
362 } catch (ex) {
363 pdfManagerCapability.reject(ex);
364 return pdfManagerCapability.promise;
365 }
366
367 var fullRequest = pdfStream.getFullReader();
368 fullRequest.headersReady.then(function () {
369 if (!fullRequest.isRangeSupported) {
370 return;
371 }
372
373 var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;
374 pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {
375 msgHandler: handler,
376 password: source.password,
377 length: fullRequest.contentLength,
378 disableAutoFetch: disableAutoFetch,
379 rangeChunkSize: source.rangeChunkSize
380 }, evaluatorOptions, docBaseUrl);
381
382 for (var i = 0; i < cachedChunks.length; i++) {
383 pdfManager.sendProgressiveData(cachedChunks[i]);
384 }
385
386 cachedChunks = [];
387 pdfManagerCapability.resolve(pdfManager);
388 cancelXHRs = null;
389 })["catch"](function (reason) {
390 pdfManagerCapability.reject(reason);
391 cancelXHRs = null;
392 });
393 var loaded = 0;
394
395 var flushChunks = function flushChunks() {
396 var pdfFile = (0, _util.arraysToBytes)(cachedChunks);
397
398 if (source.length && pdfFile.length !== source.length) {
399 (0, _util.warn)('reported HTTP length is different from actual');
400 }
401
402 try {
403 pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);
404 pdfManagerCapability.resolve(pdfManager);
405 } catch (ex) {
406 pdfManagerCapability.reject(ex);
407 }
408
409 cachedChunks = [];
410 };
411
412 var readPromise = new Promise(function (resolve, reject) {
413 var readChunk = function readChunk(chunk) {
414 try {
415 ensureNotTerminated();
416
417 if (chunk.done) {
418 if (!pdfManager) {
419 flushChunks();
420 }
421
422 cancelXHRs = null;
423 return;
424 }
425
426 var data = chunk.value;
427 loaded += (0, _util.arrayByteLength)(data);
428
429 if (!fullRequest.isStreamingSupported) {
430 handler.send('DocProgress', {
431 loaded: loaded,
432 total: Math.max(loaded, fullRequest.contentLength || 0)
433 });
434 }
435
436 if (pdfManager) {
437 pdfManager.sendProgressiveData(data);
438 } else {
439 cachedChunks.push(data);
440 }
441
442 fullRequest.read().then(readChunk, reject);
443 } catch (e) {
444 reject(e);
445 }
446 };
447
448 fullRequest.read().then(readChunk, reject);
449 });
450 readPromise["catch"](function (e) {
451 pdfManagerCapability.reject(e);
452 cancelXHRs = null;
453 });
454
455 cancelXHRs = function cancelXHRs() {
456 pdfStream.cancelAllRequests('abort');
457 };
458
459 return pdfManagerCapability.promise;
460 }
461
462 function setupDoc(data) {
463 function onSuccess(doc) {
464 ensureNotTerminated();
465 handler.send('GetDoc', {
466 pdfInfo: doc
467 });
468 }
469
470 function onFailure(e) {
471 ensureNotTerminated();
472
473 if (e instanceof _util.PasswordException) {
474 var task = new WorkerTask('PasswordException: response ' + e.code);
475 startWorkerTask(task);
476 handler.sendWithPromise('PasswordRequest', e).then(function (data) {
477 finishWorkerTask(task);
478 pdfManager.updatePassword(data.password);
479 pdfManagerReady();
480 })["catch"](function (boundException) {
481 finishWorkerTask(task);
482 handler.send('PasswordException', boundException);
483 }.bind(null, e));
484 } else if (e instanceof _util.InvalidPDFException) {
485 handler.send('InvalidPDF', e);
486 } else if (e instanceof _util.MissingPDFException) {
487 handler.send('MissingPDF', e);
488 } else if (e instanceof _util.UnexpectedResponseException) {
489 handler.send('UnexpectedResponse', e);
490 } else {
491 handler.send('UnknownError', new _util.UnknownErrorException(e.message, e.toString()));
492 }
493 }
494
495 function pdfManagerReady() {
496 ensureNotTerminated();
497 loadDocument(false).then(onSuccess, function loadFailure(ex) {
498 ensureNotTerminated();
499
500 if (!(ex instanceof _core_utils.XRefParseException)) {
501 onFailure(ex);
502 return;
503 }
504
505 pdfManager.requestLoadedStream();
506 pdfManager.onLoadedStream().then(function () {
507 ensureNotTerminated();
508 loadDocument(true).then(onSuccess, onFailure);
509 });
510 }, onFailure);
511 }
512
513 ensureNotTerminated();
514 var evaluatorOptions = {
515 forceDataSchema: data.disableCreateObjectURL,
516 maxImageSize: data.maxImageSize,
517 disableFontFace: data.disableFontFace,
518 nativeImageDecoderSupport: data.nativeImageDecoderSupport,
519 ignoreErrors: data.ignoreErrors,
520 isEvalSupported: data.isEvalSupported
521 };
522 getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {
523 if (terminated) {
524 newPdfManager.terminate();
525 throw new Error('Worker was terminated');
526 }
527
528 pdfManager = newPdfManager;
529 pdfManager.onLoadedStream().then(function (stream) {
530 handler.send('DataLoaded', {
531 length: stream.bytes.byteLength
532 });
533 });
534 }).then(pdfManagerReady, onFailure);
535 }
536
537 handler.on('GetPage', function wphSetupGetPage(data) {
538 return pdfManager.getPage(data.pageIndex).then(function (page) {
539 return Promise.all([pdfManager.ensure(page, 'rotate'), pdfManager.ensure(page, 'ref'), pdfManager.ensure(page, 'userUnit'), pdfManager.ensure(page, 'view')]).then(function (_ref) {
540 var _ref2 = _slicedToArray(_ref, 4),
541 rotate = _ref2[0],
542 ref = _ref2[1],
543 userUnit = _ref2[2],
544 view = _ref2[3];
545
546 return {
547 rotate: rotate,
548 ref: ref,
549 userUnit: userUnit,
550 view: view
551 };
552 });
553 });
554 });
555 handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {
556 var ref = _primitives.Ref.get(data.ref.num, data.ref.gen);
557
558 var catalog = pdfManager.pdfDocument.catalog;
559 return catalog.getPageIndex(ref);
560 });
561 handler.on('GetDestinations', function wphSetupGetDestinations(data) {
562 return pdfManager.ensureCatalog('destinations');
563 });
564 handler.on('GetDestination', function wphSetupGetDestination(data) {
565 return pdfManager.ensureCatalog('getDestination', [data.id]);
566 });
567 handler.on('GetPageLabels', function wphSetupGetPageLabels(data) {
568 return pdfManager.ensureCatalog('pageLabels');
569 });
570 handler.on('GetPageLayout', function wphSetupGetPageLayout(data) {
571 return pdfManager.ensureCatalog('pageLayout');
572 });
573 handler.on('GetPageMode', function wphSetupGetPageMode(data) {
574 return pdfManager.ensureCatalog('pageMode');
575 });
576 handler.on('GetViewerPreferences', function (data) {
577 return pdfManager.ensureCatalog('viewerPreferences');
578 });
579 handler.on('GetOpenActionDestination', function (data) {
580 return pdfManager.ensureCatalog('openActionDestination');
581 });
582 handler.on('GetAttachments', function wphSetupGetAttachments(data) {
583 return pdfManager.ensureCatalog('attachments');
584 });
585 handler.on('GetJavaScript', function wphSetupGetJavaScript(data) {
586 return pdfManager.ensureCatalog('javaScript');
587 });
588 handler.on('GetOutline', function wphSetupGetOutline(data) {
589 return pdfManager.ensureCatalog('documentOutline');
590 });
591 handler.on('GetPermissions', function (data) {
592 return pdfManager.ensureCatalog('permissions');
593 });
594 handler.on('GetMetadata', function wphSetupGetMetadata(data) {
595 return Promise.all([pdfManager.ensureDoc('documentInfo'), pdfManager.ensureCatalog('metadata')]);
596 });
597 handler.on('GetData', function wphSetupGetData(data) {
598 pdfManager.requestLoadedStream();
599 return pdfManager.onLoadedStream().then(function (stream) {
600 return stream.bytes;
601 });
602 });
603 handler.on('GetStats', function wphSetupGetStats(data) {
604 return pdfManager.pdfDocument.xref.stats;
605 });
606 handler.on('GetAnnotations', function (_ref3) {
607 var pageIndex = _ref3.pageIndex,
608 intent = _ref3.intent;
609 return pdfManager.getPage(pageIndex).then(function (page) {
610 return page.getAnnotationsData(intent);
611 });
612 });
613 handler.on('RenderPageRequest', function wphSetupRenderPage(data) {
614 var pageIndex = data.pageIndex;
615 pdfManager.getPage(pageIndex).then(function (page) {
616 var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);
617 startWorkerTask(task);
618 var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
619 page.getOperatorList({
620 handler: handler,
621 task: task,
622 intent: data.intent,
623 renderInteractiveForms: data.renderInteractiveForms
624 }).then(function (operatorList) {
625 finishWorkerTask(task);
626
627 if (start) {
628 (0, _util.info)("page=".concat(pageIndex + 1, " - getOperatorList: time=") + "".concat(Date.now() - start, "ms, len=").concat(operatorList.totalLength));
629 }
630 }, function (e) {
631 finishWorkerTask(task);
632
633 if (task.terminated) {
634 return;
635 }
636
637 handler.send('UnsupportedFeature', {
638 featureId: _util.UNSUPPORTED_FEATURES.unknown
639 });
640 var minimumStackMessage = 'worker.js: while trying to getPage() and getOperatorList()';
641 var wrappedException;
642
643 if (typeof e === 'string') {
644 wrappedException = {
645 message: e,
646 stack: minimumStackMessage
647 };
648 } else if (_typeof(e) === 'object') {
649 wrappedException = {
650 message: e.message || e.toString(),
651 stack: e.stack || minimumStackMessage
652 };
653 } else {
654 wrappedException = {
655 message: 'Unknown exception type: ' + _typeof(e),
656 stack: minimumStackMessage
657 };
658 }
659
660 handler.send('PageError', {
661 pageIndex: pageIndex,
662 error: wrappedException,
663 intent: data.intent
664 });
665 });
666 });
667 }, this);
668 handler.on('GetTextContent', function wphExtractText(data, sink) {
669 var pageIndex = data.pageIndex;
670
671 sink.onPull = function (desiredSize) {};
672
673 sink.onCancel = function (reason) {};
674
675 pdfManager.getPage(pageIndex).then(function (page) {
676 var task = new WorkerTask('GetTextContent: page ' + pageIndex);
677 startWorkerTask(task);
678 var start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
679 page.extractTextContent({
680 handler: handler,
681 task: task,
682 sink: sink,
683 normalizeWhitespace: data.normalizeWhitespace,
684 combineTextItems: data.combineTextItems
685 }).then(function () {
686 finishWorkerTask(task);
687
688 if (start) {
689 (0, _util.info)("page=".concat(pageIndex + 1, " - getTextContent: time=") + "".concat(Date.now() - start, "ms"));
690 }
691
692 sink.close();
693 }, function (reason) {
694 finishWorkerTask(task);
695
696 if (task.terminated) {
697 return;
698 }
699
700 sink.error(reason);
701 throw reason;
702 });
703 });
704 });
705 handler.on('FontFallback', function (data) {
706 return pdfManager.fontFallback(data.id, handler);
707 });
708 handler.on('Cleanup', function wphCleanup(data) {
709 return pdfManager.cleanup();
710 });
711 handler.on('Terminate', function wphTerminate(data) {
712 terminated = true;
713
714 if (pdfManager) {
715 pdfManager.terminate();
716 pdfManager = null;
717 }
718
719 if (cancelXHRs) {
720 cancelXHRs();
721 }
722
723 (0, _primitives.clearPrimitiveCaches)();
724 var waitOn = [];
725 WorkerTasks.forEach(function (task) {
726 waitOn.push(task.finished);
727 task.terminate();
728 });
729 return Promise.all(waitOn).then(function () {
730 handler.destroy();
731 handler = null;
732 });
733 });
734 handler.on('Ready', function wphReady(data) {
735 setupDoc(docParams);
736 docParams = null;
737 });
738 return workerHandlerName;
739 },
740 initializeFromPort: function initializeFromPort(port) {
741 var handler = new _message_handler.MessageHandler('worker', 'main', port);
742 WorkerMessageHandler.setup(handler, port);
743 handler.send('ready', null);
744 }
745};
746exports.WorkerMessageHandler = WorkerMessageHandler;
747
748function isMessagePort(maybePort) {
749 return typeof maybePort.postMessage === 'function' && 'onmessage' in maybePort;
750}
751
752if (typeof window === 'undefined' && !(0, _is_node["default"])() && typeof self !== 'undefined' && isMessagePort(self)) {
753 WorkerMessageHandler.initializeFromPort(self);
754}
755
756/***/ }),
757/* 2 */
758/***/ (function(module, exports, __w_pdfjs_require__) {
759
760"use strict";
761
762
763module.exports = __w_pdfjs_require__(3);
764
765/***/ }),
766/* 3 */
767/***/ (function(module, exports, __w_pdfjs_require__) {
768
769"use strict";
770/* WEBPACK VAR INJECTION */(function(module) {
771
772function _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); }
773
774var runtime = function (exports) {
775 "use strict";
776
777 var Op = Object.prototype;
778 var hasOwn = Op.hasOwnProperty;
779 var undefined;
780 var $Symbol = typeof Symbol === "function" ? Symbol : {};
781 var iteratorSymbol = $Symbol.iterator || "@@iterator";
782 var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
783 var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
784
785 function wrap(innerFn, outerFn, self, tryLocsList) {
786 var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
787 var generator = Object.create(protoGenerator.prototype);
788 var context = new Context(tryLocsList || []);
789 generator._invoke = makeInvokeMethod(innerFn, self, context);
790 return generator;
791 }
792
793 exports.wrap = wrap;
794
795 function tryCatch(fn, obj, arg) {
796 try {
797 return {
798 type: "normal",
799 arg: fn.call(obj, arg)
800 };
801 } catch (err) {
802 return {
803 type: "throw",
804 arg: err
805 };
806 }
807 }
808
809 var GenStateSuspendedStart = "suspendedStart";
810 var GenStateSuspendedYield = "suspendedYield";
811 var GenStateExecuting = "executing";
812 var GenStateCompleted = "completed";
813 var ContinueSentinel = {};
814
815 function Generator() {}
816
817 function GeneratorFunction() {}
818
819 function GeneratorFunctionPrototype() {}
820
821 var IteratorPrototype = {};
822
823 IteratorPrototype[iteratorSymbol] = function () {
824 return this;
825 };
826
827 var getProto = Object.getPrototypeOf;
828 var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
829
830 if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
831 IteratorPrototype = NativeIteratorPrototype;
832 }
833
834 var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
835 GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
836 GeneratorFunctionPrototype.constructor = GeneratorFunction;
837 GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
838
839 function defineIteratorMethods(prototype) {
840 ["next", "throw", "return"].forEach(function (method) {
841 prototype[method] = function (arg) {
842 return this._invoke(method, arg);
843 };
844 });
845 }
846
847 exports.isGeneratorFunction = function (genFun) {
848 var ctor = typeof genFun === "function" && genFun.constructor;
849 return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
850 };
851
852 exports.mark = function (genFun) {
853 if (Object.setPrototypeOf) {
854 Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
855 } else {
856 genFun.__proto__ = GeneratorFunctionPrototype;
857
858 if (!(toStringTagSymbol in genFun)) {
859 genFun[toStringTagSymbol] = "GeneratorFunction";
860 }
861 }
862
863 genFun.prototype = Object.create(Gp);
864 return genFun;
865 };
866
867 exports.awrap = function (arg) {
868 return {
869 __await: arg
870 };
871 };
872
873 function AsyncIterator(generator) {
874 function invoke(method, arg, resolve, reject) {
875 var record = tryCatch(generator[method], generator, arg);
876
877 if (record.type === "throw") {
878 reject(record.arg);
879 } else {
880 var result = record.arg;
881 var value = result.value;
882
883 if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
884 return Promise.resolve(value.__await).then(function (value) {
885 invoke("next", value, resolve, reject);
886 }, function (err) {
887 invoke("throw", err, resolve, reject);
888 });
889 }
890
891 return Promise.resolve(value).then(function (unwrapped) {
892 result.value = unwrapped;
893 resolve(result);
894 }, function (error) {
895 return invoke("throw", error, resolve, reject);
896 });
897 }
898 }
899
900 var previousPromise;
901
902 function enqueue(method, arg) {
903 function callInvokeWithMethodAndArg() {
904 return new Promise(function (resolve, reject) {
905 invoke(method, arg, resolve, reject);
906 });
907 }
908
909 return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
910 }
911
912 this._invoke = enqueue;
913 }
914
915 defineIteratorMethods(AsyncIterator.prototype);
916
917 AsyncIterator.prototype[asyncIteratorSymbol] = function () {
918 return this;
919 };
920
921 exports.AsyncIterator = AsyncIterator;
922
923 exports.async = function (innerFn, outerFn, self, tryLocsList) {
924 var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
925 return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
926 return result.done ? result.value : iter.next();
927 });
928 };
929
930 function makeInvokeMethod(innerFn, self, context) {
931 var state = GenStateSuspendedStart;
932 return function invoke(method, arg) {
933 if (state === GenStateExecuting) {
934 throw new Error("Generator is already running");
935 }
936
937 if (state === GenStateCompleted) {
938 if (method === "throw") {
939 throw arg;
940 }
941
942 return doneResult();
943 }
944
945 context.method = method;
946 context.arg = arg;
947
948 while (true) {
949 var delegate = context.delegate;
950
951 if (delegate) {
952 var delegateResult = maybeInvokeDelegate(delegate, context);
953
954 if (delegateResult) {
955 if (delegateResult === ContinueSentinel) continue;
956 return delegateResult;
957 }
958 }
959
960 if (context.method === "next") {
961 context.sent = context._sent = context.arg;
962 } else if (context.method === "throw") {
963 if (state === GenStateSuspendedStart) {
964 state = GenStateCompleted;
965 throw context.arg;
966 }
967
968 context.dispatchException(context.arg);
969 } else if (context.method === "return") {
970 context.abrupt("return", context.arg);
971 }
972
973 state = GenStateExecuting;
974 var record = tryCatch(innerFn, self, context);
975
976 if (record.type === "normal") {
977 state = context.done ? GenStateCompleted : GenStateSuspendedYield;
978
979 if (record.arg === ContinueSentinel) {
980 continue;
981 }
982
983 return {
984 value: record.arg,
985 done: context.done
986 };
987 } else if (record.type === "throw") {
988 state = GenStateCompleted;
989 context.method = "throw";
990 context.arg = record.arg;
991 }
992 }
993 };
994 }
995
996 function maybeInvokeDelegate(delegate, context) {
997 var method = delegate.iterator[context.method];
998
999 if (method === undefined) {
1000 context.delegate = null;
1001
1002 if (context.method === "throw") {
1003 if (delegate.iterator["return"]) {
1004 context.method = "return";
1005 context.arg = undefined;
1006 maybeInvokeDelegate(delegate, context);
1007
1008 if (context.method === "throw") {
1009 return ContinueSentinel;
1010 }
1011 }
1012
1013 context.method = "throw";
1014 context.arg = new TypeError("The iterator does not provide a 'throw' method");
1015 }
1016
1017 return ContinueSentinel;
1018 }
1019
1020 var record = tryCatch(method, delegate.iterator, context.arg);
1021
1022 if (record.type === "throw") {
1023 context.method = "throw";
1024 context.arg = record.arg;
1025 context.delegate = null;
1026 return ContinueSentinel;
1027 }
1028
1029 var info = record.arg;
1030
1031 if (!info) {
1032 context.method = "throw";
1033 context.arg = new TypeError("iterator result is not an object");
1034 context.delegate = null;
1035 return ContinueSentinel;
1036 }
1037
1038 if (info.done) {
1039 context[delegate.resultName] = info.value;
1040 context.next = delegate.nextLoc;
1041
1042 if (context.method !== "return") {
1043 context.method = "next";
1044 context.arg = undefined;
1045 }
1046 } else {
1047 return info;
1048 }
1049
1050 context.delegate = null;
1051 return ContinueSentinel;
1052 }
1053
1054 defineIteratorMethods(Gp);
1055 Gp[toStringTagSymbol] = "Generator";
1056
1057 Gp[iteratorSymbol] = function () {
1058 return this;
1059 };
1060
1061 Gp.toString = function () {
1062 return "[object Generator]";
1063 };
1064
1065 function pushTryEntry(locs) {
1066 var entry = {
1067 tryLoc: locs[0]
1068 };
1069
1070 if (1 in locs) {
1071 entry.catchLoc = locs[1];
1072 }
1073
1074 if (2 in locs) {
1075 entry.finallyLoc = locs[2];
1076 entry.afterLoc = locs[3];
1077 }
1078
1079 this.tryEntries.push(entry);
1080 }
1081
1082 function resetTryEntry(entry) {
1083 var record = entry.completion || {};
1084 record.type = "normal";
1085 delete record.arg;
1086 entry.completion = record;
1087 }
1088
1089 function Context(tryLocsList) {
1090 this.tryEntries = [{
1091 tryLoc: "root"
1092 }];
1093 tryLocsList.forEach(pushTryEntry, this);
1094 this.reset(true);
1095 }
1096
1097 exports.keys = function (object) {
1098 var keys = [];
1099
1100 for (var key in object) {
1101 keys.push(key);
1102 }
1103
1104 keys.reverse();
1105 return function next() {
1106 while (keys.length) {
1107 var key = keys.pop();
1108
1109 if (key in object) {
1110 next.value = key;
1111 next.done = false;
1112 return next;
1113 }
1114 }
1115
1116 next.done = true;
1117 return next;
1118 };
1119 };
1120
1121 function values(iterable) {
1122 if (iterable) {
1123 var iteratorMethod = iterable[iteratorSymbol];
1124
1125 if (iteratorMethod) {
1126 return iteratorMethod.call(iterable);
1127 }
1128
1129 if (typeof iterable.next === "function") {
1130 return iterable;
1131 }
1132
1133 if (!isNaN(iterable.length)) {
1134 var i = -1,
1135 next = function next() {
1136 while (++i < iterable.length) {
1137 if (hasOwn.call(iterable, i)) {
1138 next.value = iterable[i];
1139 next.done = false;
1140 return next;
1141 }
1142 }
1143
1144 next.value = undefined;
1145 next.done = true;
1146 return next;
1147 };
1148
1149 return next.next = next;
1150 }
1151 }
1152
1153 return {
1154 next: doneResult
1155 };
1156 }
1157
1158 exports.values = values;
1159
1160 function doneResult() {
1161 return {
1162 value: undefined,
1163 done: true
1164 };
1165 }
1166
1167 Context.prototype = {
1168 constructor: Context,
1169 reset: function reset(skipTempReset) {
1170 this.prev = 0;
1171 this.next = 0;
1172 this.sent = this._sent = undefined;
1173 this.done = false;
1174 this.delegate = null;
1175 this.method = "next";
1176 this.arg = undefined;
1177 this.tryEntries.forEach(resetTryEntry);
1178
1179 if (!skipTempReset) {
1180 for (var name in this) {
1181 if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
1182 this[name] = undefined;
1183 }
1184 }
1185 }
1186 },
1187 stop: function stop() {
1188 this.done = true;
1189 var rootEntry = this.tryEntries[0];
1190 var rootRecord = rootEntry.completion;
1191
1192 if (rootRecord.type === "throw") {
1193 throw rootRecord.arg;
1194 }
1195
1196 return this.rval;
1197 },
1198 dispatchException: function dispatchException(exception) {
1199 if (this.done) {
1200 throw exception;
1201 }
1202
1203 var context = this;
1204
1205 function handle(loc, caught) {
1206 record.type = "throw";
1207 record.arg = exception;
1208 context.next = loc;
1209
1210 if (caught) {
1211 context.method = "next";
1212 context.arg = undefined;
1213 }
1214
1215 return !!caught;
1216 }
1217
1218 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
1219 var entry = this.tryEntries[i];
1220 var record = entry.completion;
1221
1222 if (entry.tryLoc === "root") {
1223 return handle("end");
1224 }
1225
1226 if (entry.tryLoc <= this.prev) {
1227 var hasCatch = hasOwn.call(entry, "catchLoc");
1228 var hasFinally = hasOwn.call(entry, "finallyLoc");
1229
1230 if (hasCatch && hasFinally) {
1231 if (this.prev < entry.catchLoc) {
1232 return handle(entry.catchLoc, true);
1233 } else if (this.prev < entry.finallyLoc) {
1234 return handle(entry.finallyLoc);
1235 }
1236 } else if (hasCatch) {
1237 if (this.prev < entry.catchLoc) {
1238 return handle(entry.catchLoc, true);
1239 }
1240 } else if (hasFinally) {
1241 if (this.prev < entry.finallyLoc) {
1242 return handle(entry.finallyLoc);
1243 }
1244 } else {
1245 throw new Error("try statement without catch or finally");
1246 }
1247 }
1248 }
1249 },
1250 abrupt: function abrupt(type, arg) {
1251 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
1252 var entry = this.tryEntries[i];
1253
1254 if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
1255 var finallyEntry = entry;
1256 break;
1257 }
1258 }
1259
1260 if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
1261 finallyEntry = null;
1262 }
1263
1264 var record = finallyEntry ? finallyEntry.completion : {};
1265 record.type = type;
1266 record.arg = arg;
1267
1268 if (finallyEntry) {
1269 this.method = "next";
1270 this.next = finallyEntry.finallyLoc;
1271 return ContinueSentinel;
1272 }
1273
1274 return this.complete(record);
1275 },
1276 complete: function complete(record, afterLoc) {
1277 if (record.type === "throw") {
1278 throw record.arg;
1279 }
1280
1281 if (record.type === "break" || record.type === "continue") {
1282 this.next = record.arg;
1283 } else if (record.type === "return") {
1284 this.rval = this.arg = record.arg;
1285 this.method = "return";
1286 this.next = "end";
1287 } else if (record.type === "normal" && afterLoc) {
1288 this.next = afterLoc;
1289 }
1290
1291 return ContinueSentinel;
1292 },
1293 finish: function finish(finallyLoc) {
1294 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
1295 var entry = this.tryEntries[i];
1296
1297 if (entry.finallyLoc === finallyLoc) {
1298 this.complete(entry.completion, entry.afterLoc);
1299 resetTryEntry(entry);
1300 return ContinueSentinel;
1301 }
1302 }
1303 },
1304 "catch": function _catch(tryLoc) {
1305 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
1306 var entry = this.tryEntries[i];
1307
1308 if (entry.tryLoc === tryLoc) {
1309 var record = entry.completion;
1310
1311 if (record.type === "throw") {
1312 var thrown = record.arg;
1313 resetTryEntry(entry);
1314 }
1315
1316 return thrown;
1317 }
1318 }
1319
1320 throw new Error("illegal catch attempt");
1321 },
1322 delegateYield: function delegateYield(iterable, resultName, nextLoc) {
1323 this.delegate = {
1324 iterator: values(iterable),
1325 resultName: resultName,
1326 nextLoc: nextLoc
1327 };
1328
1329 if (this.method === "next") {
1330 this.arg = undefined;
1331 }
1332
1333 return ContinueSentinel;
1334 }
1335 };
1336 return exports;
1337}(( false ? undefined : _typeof(module)) === "object" ? module.exports : {});
1338
1339try {
1340 regeneratorRuntime = runtime;
1341} catch (accidentalStrictMode) {
1342 Function("r", "regeneratorRuntime = r")(runtime);
1343}
1344/* WEBPACK VAR INJECTION */}.call(this, __w_pdfjs_require__(4)(module)))
1345
1346/***/ }),
1347/* 4 */
1348/***/ (function(module, exports, __w_pdfjs_require__) {
1349
1350"use strict";
1351
1352
1353module.exports = function (module) {
1354 if (!module.webpackPolyfill) {
1355 module.deprecate = function () {};
1356
1357 module.paths = [];
1358 if (!module.children) module.children = [];
1359 Object.defineProperty(module, "loaded", {
1360 enumerable: true,
1361 get: function get() {
1362 return module.l;
1363 }
1364 });
1365 Object.defineProperty(module, "id", {
1366 enumerable: true,
1367 get: function get() {
1368 return module.i;
1369 }
1370 });
1371 module.webpackPolyfill = 1;
1372 }
1373
1374 return module;
1375};
1376
1377/***/ }),
1378/* 5 */
1379/***/ (function(module, exports, __w_pdfjs_require__) {
1380
1381"use strict";
1382
1383
1384Object.defineProperty(exports, "__esModule", {
1385 value: true
1386});
1387exports.arrayByteLength = arrayByteLength;
1388exports.arraysToBytes = arraysToBytes;
1389exports.assert = assert;
1390exports.bytesToString = bytesToString;
1391exports.createPromiseCapability = createPromiseCapability;
1392exports.getVerbosityLevel = getVerbosityLevel;
1393exports.info = info;
1394exports.isArrayBuffer = isArrayBuffer;
1395exports.isArrayEqual = isArrayEqual;
1396exports.isBool = isBool;
1397exports.isEmptyObj = isEmptyObj;
1398exports.isNum = isNum;
1399exports.isString = isString;
1400exports.isSpace = isSpace;
1401exports.isSameOrigin = isSameOrigin;
1402exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
1403exports.isLittleEndian = isLittleEndian;
1404exports.isEvalSupported = isEvalSupported;
1405exports.log2 = log2;
1406exports.readInt8 = readInt8;
1407exports.readUint16 = readUint16;
1408exports.readUint32 = readUint32;
1409exports.removeNullCharacters = removeNullCharacters;
1410exports.setVerbosityLevel = setVerbosityLevel;
1411exports.shadow = shadow;
1412exports.string32 = string32;
1413exports.stringToBytes = stringToBytes;
1414exports.stringToPDFString = stringToPDFString;
1415exports.stringToUTF8String = stringToUTF8String;
1416exports.utf8StringToString = utf8StringToString;
1417exports.warn = warn;
1418exports.unreachable = unreachable;
1419Object.defineProperty(exports, "ReadableStream", {
1420 enumerable: true,
1421 get: function get() {
1422 return _streams_polyfill.ReadableStream;
1423 }
1424});
1425Object.defineProperty(exports, "URL", {
1426 enumerable: true,
1427 get: function get() {
1428 return _url_polyfill.URL;
1429 }
1430});
1431exports.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;
1432
1433__w_pdfjs_require__(6);
1434
1435var _streams_polyfill = __w_pdfjs_require__(147);
1436
1437var _url_polyfill = __w_pdfjs_require__(149);
1438
1439function _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); }
1440
1441var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
1442exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
1443var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
1444exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
1445var NativeImageDecoding = {
1446 NONE: 'none',
1447 DECODE: 'decode',
1448 DISPLAY: 'display'
1449};
1450exports.NativeImageDecoding = NativeImageDecoding;
1451var PermissionFlag = {
1452 PRINT: 0x04,
1453 MODIFY_CONTENTS: 0x08,
1454 COPY: 0x10,
1455 MODIFY_ANNOTATIONS: 0x20,
1456 FILL_INTERACTIVE_FORMS: 0x100,
1457 COPY_FOR_ACCESSIBILITY: 0x200,
1458 ASSEMBLE: 0x400,
1459 PRINT_HIGH_QUALITY: 0x800
1460};
1461exports.PermissionFlag = PermissionFlag;
1462var TextRenderingMode = {
1463 FILL: 0,
1464 STROKE: 1,
1465 FILL_STROKE: 2,
1466 INVISIBLE: 3,
1467 FILL_ADD_TO_PATH: 4,
1468 STROKE_ADD_TO_PATH: 5,
1469 FILL_STROKE_ADD_TO_PATH: 6,
1470 ADD_TO_PATH: 7,
1471 FILL_STROKE_MASK: 3,
1472 ADD_TO_PATH_FLAG: 4
1473};
1474exports.TextRenderingMode = TextRenderingMode;
1475var ImageKind = {
1476 GRAYSCALE_1BPP: 1,
1477 RGB_24BPP: 2,
1478 RGBA_32BPP: 3
1479};
1480exports.ImageKind = ImageKind;
1481var AnnotationType = {
1482 TEXT: 1,
1483 LINK: 2,
1484 FREETEXT: 3,
1485 LINE: 4,
1486 SQUARE: 5,
1487 CIRCLE: 6,
1488 POLYGON: 7,
1489 POLYLINE: 8,
1490 HIGHLIGHT: 9,
1491 UNDERLINE: 10,
1492 SQUIGGLY: 11,
1493 STRIKEOUT: 12,
1494 STAMP: 13,
1495 CARET: 14,
1496 INK: 15,
1497 POPUP: 16,
1498 FILEATTACHMENT: 17,
1499 SOUND: 18,
1500 MOVIE: 19,
1501 WIDGET: 20,
1502 SCREEN: 21,
1503 PRINTERMARK: 22,
1504 TRAPNET: 23,
1505 WATERMARK: 24,
1506 THREED: 25,
1507 REDACT: 26
1508};
1509exports.AnnotationType = AnnotationType;
1510var AnnotationFlag = {
1511 INVISIBLE: 0x01,
1512 HIDDEN: 0x02,
1513 PRINT: 0x04,
1514 NOZOOM: 0x08,
1515 NOROTATE: 0x10,
1516 NOVIEW: 0x20,
1517 READONLY: 0x40,
1518 LOCKED: 0x80,
1519 TOGGLENOVIEW: 0x100,
1520 LOCKEDCONTENTS: 0x200
1521};
1522exports.AnnotationFlag = AnnotationFlag;
1523var AnnotationFieldFlag = {
1524 READONLY: 0x0000001,
1525 REQUIRED: 0x0000002,
1526 NOEXPORT: 0x0000004,
1527 MULTILINE: 0x0001000,
1528 PASSWORD: 0x0002000,
1529 NOTOGGLETOOFF: 0x0004000,
1530 RADIO: 0x0008000,
1531 PUSHBUTTON: 0x0010000,
1532 COMBO: 0x0020000,
1533 EDIT: 0x0040000,
1534 SORT: 0x0080000,
1535 FILESELECT: 0x0100000,
1536 MULTISELECT: 0x0200000,
1537 DONOTSPELLCHECK: 0x0400000,
1538 DONOTSCROLL: 0x0800000,
1539 COMB: 0x1000000,
1540 RICHTEXT: 0x2000000,
1541 RADIOSINUNISON: 0x2000000,
1542 COMMITONSELCHANGE: 0x4000000
1543};
1544exports.AnnotationFieldFlag = AnnotationFieldFlag;
1545var AnnotationBorderStyleType = {
1546 SOLID: 1,
1547 DASHED: 2,
1548 BEVELED: 3,
1549 INSET: 4,
1550 UNDERLINE: 5
1551};
1552exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
1553var StreamType = {
1554 UNKNOWN: 0,
1555 FLATE: 1,
1556 LZW: 2,
1557 DCT: 3,
1558 JPX: 4,
1559 JBIG: 5,
1560 A85: 6,
1561 AHX: 7,
1562 CCF: 8,
1563 RL: 9
1564};
1565exports.StreamType = StreamType;
1566var FontType = {
1567 UNKNOWN: 0,
1568 TYPE1: 1,
1569 TYPE1C: 2,
1570 CIDFONTTYPE0: 3,
1571 CIDFONTTYPE0C: 4,
1572 TRUETYPE: 5,
1573 CIDFONTTYPE2: 6,
1574 TYPE3: 7,
1575 OPENTYPE: 8,
1576 TYPE0: 9,
1577 MMTYPE1: 10
1578};
1579exports.FontType = FontType;
1580var VerbosityLevel = {
1581 ERRORS: 0,
1582 WARNINGS: 1,
1583 INFOS: 5
1584};
1585exports.VerbosityLevel = VerbosityLevel;
1586var CMapCompressionType = {
1587 NONE: 0,
1588 BINARY: 1,
1589 STREAM: 2
1590};
1591exports.CMapCompressionType = CMapCompressionType;
1592var OPS = {
1593 dependency: 1,
1594 setLineWidth: 2,
1595 setLineCap: 3,
1596 setLineJoin: 4,
1597 setMiterLimit: 5,
1598 setDash: 6,
1599 setRenderingIntent: 7,
1600 setFlatness: 8,
1601 setGState: 9,
1602 save: 10,
1603 restore: 11,
1604 transform: 12,
1605 moveTo: 13,
1606 lineTo: 14,
1607 curveTo: 15,
1608 curveTo2: 16,
1609 curveTo3: 17,
1610 closePath: 18,
1611 rectangle: 19,
1612 stroke: 20,
1613 closeStroke: 21,
1614 fill: 22,
1615 eoFill: 23,
1616 fillStroke: 24,
1617 eoFillStroke: 25,
1618 closeFillStroke: 26,
1619 closeEOFillStroke: 27,
1620 endPath: 28,
1621 clip: 29,
1622 eoClip: 30,
1623 beginText: 31,
1624 endText: 32,
1625 setCharSpacing: 33,
1626 setWordSpacing: 34,
1627 setHScale: 35,
1628 setLeading: 36,
1629 setFont: 37,
1630 setTextRenderingMode: 38,
1631 setTextRise: 39,
1632 moveText: 40,
1633 setLeadingMoveText: 41,
1634 setTextMatrix: 42,
1635 nextLine: 43,
1636 showText: 44,
1637 showSpacedText: 45,
1638 nextLineShowText: 46,
1639 nextLineSetSpacingShowText: 47,
1640 setCharWidth: 48,
1641 setCharWidthAndBounds: 49,
1642 setStrokeColorSpace: 50,
1643 setFillColorSpace: 51,
1644 setStrokeColor: 52,
1645 setStrokeColorN: 53,
1646 setFillColor: 54,
1647 setFillColorN: 55,
1648 setStrokeGray: 56,
1649 setFillGray: 57,
1650 setStrokeRGBColor: 58,
1651 setFillRGBColor: 59,
1652 setStrokeCMYKColor: 60,
1653 setFillCMYKColor: 61,
1654 shadingFill: 62,
1655 beginInlineImage: 63,
1656 beginImageData: 64,
1657 endInlineImage: 65,
1658 paintXObject: 66,
1659 markPoint: 67,
1660 markPointProps: 68,
1661 beginMarkedContent: 69,
1662 beginMarkedContentProps: 70,
1663 endMarkedContent: 71,
1664 beginCompat: 72,
1665 endCompat: 73,
1666 paintFormXObjectBegin: 74,
1667 paintFormXObjectEnd: 75,
1668 beginGroup: 76,
1669 endGroup: 77,
1670 beginAnnotations: 78,
1671 endAnnotations: 79,
1672 beginAnnotation: 80,
1673 endAnnotation: 81,
1674 paintJpegXObject: 82,
1675 paintImageMaskXObject: 83,
1676 paintImageMaskXObjectGroup: 84,
1677 paintImageXObject: 85,
1678 paintInlineImageXObject: 86,
1679 paintInlineImageXObjectGroup: 87,
1680 paintImageXObjectRepeat: 88,
1681 paintImageMaskXObjectRepeat: 89,
1682 paintSolidColorImageMask: 90,
1683 constructPath: 91
1684};
1685exports.OPS = OPS;
1686var UNSUPPORTED_FEATURES = {
1687 unknown: 'unknown',
1688 forms: 'forms',
1689 javaScript: 'javaScript',
1690 smask: 'smask',
1691 shadingPattern: 'shadingPattern',
1692 font: 'font'
1693};
1694exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
1695var PasswordResponses = {
1696 NEED_PASSWORD: 1,
1697 INCORRECT_PASSWORD: 2
1698};
1699exports.PasswordResponses = PasswordResponses;
1700var verbosity = VerbosityLevel.WARNINGS;
1701
1702function setVerbosityLevel(level) {
1703 if (Number.isInteger(level)) {
1704 verbosity = level;
1705 }
1706}
1707
1708function getVerbosityLevel() {
1709 return verbosity;
1710}
1711
1712function info(msg) {
1713 if (verbosity >= VerbosityLevel.INFOS) {
1714 console.log('Info: ' + msg);
1715 }
1716}
1717
1718function warn(msg) {
1719 if (verbosity >= VerbosityLevel.WARNINGS) {
1720 console.log('Warning: ' + msg);
1721 }
1722}
1723
1724function unreachable(msg) {
1725 throw new Error(msg);
1726}
1727
1728function assert(cond, msg) {
1729 if (!cond) {
1730 unreachable(msg);
1731 }
1732}
1733
1734function isSameOrigin(baseUrl, otherUrl) {
1735 try {
1736 var base = new _url_polyfill.URL(baseUrl);
1737
1738 if (!base.origin || base.origin === 'null') {
1739 return false;
1740 }
1741 } catch (e) {
1742 return false;
1743 }
1744
1745 var other = new _url_polyfill.URL(otherUrl, base);
1746 return base.origin === other.origin;
1747}
1748
1749function _isValidProtocol(url) {
1750 if (!url) {
1751 return false;
1752 }
1753
1754 switch (url.protocol) {
1755 case 'http:':
1756 case 'https:':
1757 case 'ftp:':
1758 case 'mailto:':
1759 case 'tel:':
1760 return true;
1761
1762 default:
1763 return false;
1764 }
1765}
1766
1767function createValidAbsoluteUrl(url, baseUrl) {
1768 if (!url) {
1769 return null;
1770 }
1771
1772 try {
1773 var absoluteUrl = baseUrl ? new _url_polyfill.URL(url, baseUrl) : new _url_polyfill.URL(url);
1774
1775 if (_isValidProtocol(absoluteUrl)) {
1776 return absoluteUrl;
1777 }
1778 } catch (ex) {}
1779
1780 return null;
1781}
1782
1783function shadow(obj, prop, value) {
1784 Object.defineProperty(obj, prop, {
1785 value: value,
1786 enumerable: true,
1787 configurable: true,
1788 writable: false
1789 });
1790 return value;
1791}
1792
1793var PasswordException = function PasswordExceptionClosure() {
1794 function PasswordException(msg, code) {
1795 this.name = 'PasswordException';
1796 this.message = msg;
1797 this.code = code;
1798 }
1799
1800 PasswordException.prototype = new Error();
1801 PasswordException.constructor = PasswordException;
1802 return PasswordException;
1803}();
1804
1805exports.PasswordException = PasswordException;
1806
1807var UnknownErrorException = function UnknownErrorExceptionClosure() {
1808 function UnknownErrorException(msg, details) {
1809 this.name = 'UnknownErrorException';
1810 this.message = msg;
1811 this.details = details;
1812 }
1813
1814 UnknownErrorException.prototype = new Error();
1815 UnknownErrorException.constructor = UnknownErrorException;
1816 return UnknownErrorException;
1817}();
1818
1819exports.UnknownErrorException = UnknownErrorException;
1820
1821var InvalidPDFException = function InvalidPDFExceptionClosure() {
1822 function InvalidPDFException(msg) {
1823 this.name = 'InvalidPDFException';
1824 this.message = msg;
1825 }
1826
1827 InvalidPDFException.prototype = new Error();
1828 InvalidPDFException.constructor = InvalidPDFException;
1829 return InvalidPDFException;
1830}();
1831
1832exports.InvalidPDFException = InvalidPDFException;
1833
1834var MissingPDFException = function MissingPDFExceptionClosure() {
1835 function MissingPDFException(msg) {
1836 this.name = 'MissingPDFException';
1837 this.message = msg;
1838 }
1839
1840 MissingPDFException.prototype = new Error();
1841 MissingPDFException.constructor = MissingPDFException;
1842 return MissingPDFException;
1843}();
1844
1845exports.MissingPDFException = MissingPDFException;
1846
1847var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
1848 function UnexpectedResponseException(msg, status) {
1849 this.name = 'UnexpectedResponseException';
1850 this.message = msg;
1851 this.status = status;
1852 }
1853
1854 UnexpectedResponseException.prototype = new Error();
1855 UnexpectedResponseException.constructor = UnexpectedResponseException;
1856 return UnexpectedResponseException;
1857}();
1858
1859exports.UnexpectedResponseException = UnexpectedResponseException;
1860
1861var FormatError = function FormatErrorClosure() {
1862 function FormatError(msg) {
1863 this.message = msg;
1864 }
1865
1866 FormatError.prototype = new Error();
1867 FormatError.prototype.name = 'FormatError';
1868 FormatError.constructor = FormatError;
1869 return FormatError;
1870}();
1871
1872exports.FormatError = FormatError;
1873
1874var AbortException = function AbortExceptionClosure() {
1875 function AbortException(msg) {
1876 this.name = 'AbortException';
1877 this.message = msg;
1878 }
1879
1880 AbortException.prototype = new Error();
1881 AbortException.constructor = AbortException;
1882 return AbortException;
1883}();
1884
1885exports.AbortException = AbortException;
1886var NullCharactersRegExp = /\x00/g;
1887
1888function removeNullCharacters(str) {
1889 if (typeof str !== 'string') {
1890 warn('The argument for removeNullCharacters must be a string.');
1891 return str;
1892 }
1893
1894 return str.replace(NullCharactersRegExp, '');
1895}
1896
1897function bytesToString(bytes) {
1898 assert(bytes !== null && _typeof(bytes) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
1899 var length = bytes.length;
1900 var MAX_ARGUMENT_COUNT = 8192;
1901
1902 if (length < MAX_ARGUMENT_COUNT) {
1903 return String.fromCharCode.apply(null, bytes);
1904 }
1905
1906 var strBuf = [];
1907
1908 for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
1909 var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
1910 var chunk = bytes.subarray(i, chunkEnd);
1911 strBuf.push(String.fromCharCode.apply(null, chunk));
1912 }
1913
1914 return strBuf.join('');
1915}
1916
1917function stringToBytes(str) {
1918 assert(typeof str === 'string', 'Invalid argument for stringToBytes');
1919 var length = str.length;
1920 var bytes = new Uint8Array(length);
1921
1922 for (var i = 0; i < length; ++i) {
1923 bytes[i] = str.charCodeAt(i) & 0xFF;
1924 }
1925
1926 return bytes;
1927}
1928
1929function arrayByteLength(arr) {
1930 if (arr.length !== undefined) {
1931 return arr.length;
1932 }
1933
1934 assert(arr.byteLength !== undefined);
1935 return arr.byteLength;
1936}
1937
1938function arraysToBytes(arr) {
1939 if (arr.length === 1 && arr[0] instanceof Uint8Array) {
1940 return arr[0];
1941 }
1942
1943 var resultLength = 0;
1944 var i,
1945 ii = arr.length;
1946 var item, itemLength;
1947
1948 for (i = 0; i < ii; i++) {
1949 item = arr[i];
1950 itemLength = arrayByteLength(item);
1951 resultLength += itemLength;
1952 }
1953
1954 var pos = 0;
1955 var data = new Uint8Array(resultLength);
1956
1957 for (i = 0; i < ii; i++) {
1958 item = arr[i];
1959
1960 if (!(item instanceof Uint8Array)) {
1961 if (typeof item === 'string') {
1962 item = stringToBytes(item);
1963 } else {
1964 item = new Uint8Array(item);
1965 }
1966 }
1967
1968 itemLength = item.byteLength;
1969 data.set(item, pos);
1970 pos += itemLength;
1971 }
1972
1973 return data;
1974}
1975
1976function string32(value) {
1977 return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
1978}
1979
1980function log2(x) {
1981 if (x <= 0) {
1982 return 0;
1983 }
1984
1985 return Math.ceil(Math.log2(x));
1986}
1987
1988function readInt8(data, start) {
1989 return data[start] << 24 >> 24;
1990}
1991
1992function readUint16(data, offset) {
1993 return data[offset] << 8 | data[offset + 1];
1994}
1995
1996function readUint32(data, offset) {
1997 return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
1998}
1999
2000function isLittleEndian() {
2001 var buffer8 = new Uint8Array(4);
2002 buffer8[0] = 1;
2003 var view32 = new Uint32Array(buffer8.buffer, 0, 1);
2004 return view32[0] === 1;
2005}
2006
2007function isEvalSupported() {
2008 try {
2009 new Function('');
2010 return true;
2011 } catch (e) {
2012 return false;
2013 }
2014}
2015
2016var Util = function UtilClosure() {
2017 function Util() {}
2018
2019 var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
2020
2021 Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
2022 rgbBuf[1] = r;
2023 rgbBuf[3] = g;
2024 rgbBuf[5] = b;
2025 return rgbBuf.join('');
2026 };
2027
2028 Util.transform = function Util_transform(m1, m2) {
2029 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]];
2030 };
2031
2032 Util.applyTransform = function Util_applyTransform(p, m) {
2033 var xt = p[0] * m[0] + p[1] * m[2] + m[4];
2034 var yt = p[0] * m[1] + p[1] * m[3] + m[5];
2035 return [xt, yt];
2036 };
2037
2038 Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
2039 var d = m[0] * m[3] - m[1] * m[2];
2040 var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
2041 var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
2042 return [xt, yt];
2043 };
2044
2045 Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
2046 var p1 = Util.applyTransform(r, m);
2047 var p2 = Util.applyTransform(r.slice(2, 4), m);
2048 var p3 = Util.applyTransform([r[0], r[3]], m);
2049 var p4 = Util.applyTransform([r[2], r[1]], m);
2050 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])];
2051 };
2052
2053 Util.inverseTransform = function Util_inverseTransform(m) {
2054 var d = m[0] * m[3] - m[1] * m[2];
2055 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];
2056 };
2057
2058 Util.apply3dTransform = function Util_apply3dTransform(m, v) {
2059 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]];
2060 };
2061
2062 Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
2063 var transpose = [m[0], m[2], m[1], m[3]];
2064 var a = m[0] * transpose[0] + m[1] * transpose[2];
2065 var b = m[0] * transpose[1] + m[1] * transpose[3];
2066 var c = m[2] * transpose[0] + m[3] * transpose[2];
2067 var d = m[2] * transpose[1] + m[3] * transpose[3];
2068 var first = (a + d) / 2;
2069 var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
2070 var sx = first + second || 1;
2071 var sy = first - second || 1;
2072 return [Math.sqrt(sx), Math.sqrt(sy)];
2073 };
2074
2075 Util.normalizeRect = function Util_normalizeRect(rect) {
2076 var r = rect.slice(0);
2077
2078 if (rect[0] > rect[2]) {
2079 r[0] = rect[2];
2080 r[2] = rect[0];
2081 }
2082
2083 if (rect[1] > rect[3]) {
2084 r[1] = rect[3];
2085 r[3] = rect[1];
2086 }
2087
2088 return r;
2089 };
2090
2091 Util.intersect = function Util_intersect(rect1, rect2) {
2092 function compare(a, b) {
2093 return a - b;
2094 }
2095
2096 var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
2097 orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
2098 result = [];
2099 rect1 = Util.normalizeRect(rect1);
2100 rect2 = Util.normalizeRect(rect2);
2101
2102 if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
2103 result[0] = orderedX[1];
2104 result[2] = orderedX[2];
2105 } else {
2106 return false;
2107 }
2108
2109 if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
2110 result[1] = orderedY[1];
2111 result[3] = orderedY[2];
2112 } else {
2113 return false;
2114 }
2115
2116 return result;
2117 };
2118
2119 return Util;
2120}();
2121
2122exports.Util = Util;
2123var 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];
2124
2125function stringToPDFString(str) {
2126 var i,
2127 n = str.length,
2128 strBuf = [];
2129
2130 if (str[0] === '\xFE' && str[1] === '\xFF') {
2131 for (i = 2; i < n; i += 2) {
2132 strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
2133 }
2134 } else {
2135 for (i = 0; i < n; ++i) {
2136 var code = PDFStringTranslateTable[str.charCodeAt(i)];
2137 strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
2138 }
2139 }
2140
2141 return strBuf.join('');
2142}
2143
2144function stringToUTF8String(str) {
2145 return decodeURIComponent(escape(str));
2146}
2147
2148function utf8StringToString(str) {
2149 return unescape(encodeURIComponent(str));
2150}
2151
2152function isEmptyObj(obj) {
2153 for (var key in obj) {
2154 return false;
2155 }
2156
2157 return true;
2158}
2159
2160function isBool(v) {
2161 return typeof v === 'boolean';
2162}
2163
2164function isNum(v) {
2165 return typeof v === 'number';
2166}
2167
2168function isString(v) {
2169 return typeof v === 'string';
2170}
2171
2172function isArrayBuffer(v) {
2173 return _typeof(v) === 'object' && v !== null && v.byteLength !== undefined;
2174}
2175
2176function isArrayEqual(arr1, arr2) {
2177 if (arr1.length !== arr2.length) {
2178 return false;
2179 }
2180
2181 return arr1.every(function (element, index) {
2182 return element === arr2[index];
2183 });
2184}
2185
2186function isSpace(ch) {
2187 return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
2188}
2189
2190function createPromiseCapability() {
2191 var capability = Object.create(null);
2192 var isSettled = false;
2193 Object.defineProperty(capability, 'settled', {
2194 get: function get() {
2195 return isSettled;
2196 }
2197 });
2198 capability.promise = new Promise(function (resolve, reject) {
2199 capability.resolve = function (data) {
2200 isSettled = true;
2201 resolve(data);
2202 };
2203
2204 capability.reject = function (reason) {
2205 isSettled = true;
2206 reject(reason);
2207 };
2208 });
2209 return capability;
2210}
2211
2212var createObjectURL = function createObjectURLClosure() {
2213 var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
2214 return function createObjectURL(data, contentType) {
2215 var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2216
2217 if (!forceDataSchema && _url_polyfill.URL.createObjectURL) {
2218 var blob = new Blob([data], {
2219 type: contentType
2220 });
2221 return _url_polyfill.URL.createObjectURL(blob);
2222 }
2223
2224 var buffer = 'data:' + contentType + ';base64,';
2225
2226 for (var i = 0, ii = data.length; i < ii; i += 3) {
2227 var b1 = data[i] & 0xFF;
2228 var b2 = data[i + 1] & 0xFF;
2229 var b3 = data[i + 2] & 0xFF;
2230 var d1 = b1 >> 2,
2231 d2 = (b1 & 3) << 4 | b2 >> 4;
2232 var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
2233 var d4 = i + 2 < ii ? b3 & 0x3F : 64;
2234 buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
2235 }
2236
2237 return buffer;
2238 };
2239}();
2240
2241exports.createObjectURL = createObjectURL;
2242
2243/***/ }),
2244/* 6 */
2245/***/ (function(module, exports, __w_pdfjs_require__) {
2246
2247"use strict";
2248
2249
2250function _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); }
2251
2252var globalScope = __w_pdfjs_require__(7);
2253
2254if (!globalScope._pdfjsCompatibilityChecked) {
2255 globalScope._pdfjsCompatibilityChecked = true;
2256
2257 var isNodeJS = __w_pdfjs_require__(8);
2258
2259 var hasDOM = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object';
2260
2261 (function checkNodeBtoa() {
2262 if (globalScope.btoa || !isNodeJS()) {
2263 return;
2264 }
2265
2266 globalScope.btoa = function (chars) {
2267 return Buffer.from(chars, 'binary').toString('base64');
2268 };
2269 })();
2270
2271 (function checkNodeAtob() {
2272 if (globalScope.atob || !isNodeJS()) {
2273 return;
2274 }
2275
2276 globalScope.atob = function (input) {
2277 return Buffer.from(input, 'base64').toString('binary');
2278 };
2279 })();
2280
2281 (function checkChildNodeRemove() {
2282 if (!hasDOM) {
2283 return;
2284 }
2285
2286 if (typeof Element.prototype.remove !== 'undefined') {
2287 return;
2288 }
2289
2290 Element.prototype.remove = function () {
2291 if (this.parentNode) {
2292 this.parentNode.removeChild(this);
2293 }
2294 };
2295 })();
2296
2297 (function checkDOMTokenListAddRemove() {
2298 if (!hasDOM || isNodeJS()) {
2299 return;
2300 }
2301
2302 var div = document.createElement('div');
2303 div.classList.add('testOne', 'testTwo');
2304
2305 if (div.classList.contains('testOne') === true && div.classList.contains('testTwo') === true) {
2306 return;
2307 }
2308
2309 var OriginalDOMTokenListAdd = DOMTokenList.prototype.add;
2310 var OriginalDOMTokenListRemove = DOMTokenList.prototype.remove;
2311
2312 DOMTokenList.prototype.add = function () {
2313 for (var _len = arguments.length, tokens = new Array(_len), _key = 0; _key < _len; _key++) {
2314 tokens[_key] = arguments[_key];
2315 }
2316
2317 for (var _i = 0, _tokens = tokens; _i < _tokens.length; _i++) {
2318 var token = _tokens[_i];
2319 OriginalDOMTokenListAdd.call(this, token);
2320 }
2321 };
2322
2323 DOMTokenList.prototype.remove = function () {
2324 for (var _len2 = arguments.length, tokens = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2325 tokens[_key2] = arguments[_key2];
2326 }
2327
2328 for (var _i2 = 0, _tokens2 = tokens; _i2 < _tokens2.length; _i2++) {
2329 var token = _tokens2[_i2];
2330 OriginalDOMTokenListRemove.call(this, token);
2331 }
2332 };
2333 })();
2334
2335 (function checkDOMTokenListToggle() {
2336 if (!hasDOM || isNodeJS()) {
2337 return;
2338 }
2339
2340 var div = document.createElement('div');
2341
2342 if (div.classList.toggle('test', 0) === false) {
2343 return;
2344 }
2345
2346 DOMTokenList.prototype.toggle = function (token) {
2347 var force = arguments.length > 1 ? !!arguments[1] : !this.contains(token);
2348 return this[force ? 'add' : 'remove'](token), force;
2349 };
2350 })();
2351
2352 (function checkStringStartsWith() {
2353 if (String.prototype.startsWith) {
2354 return;
2355 }
2356
2357 __w_pdfjs_require__(9);
2358 })();
2359
2360 (function checkStringEndsWith() {
2361 if (String.prototype.endsWith) {
2362 return;
2363 }
2364
2365 __w_pdfjs_require__(40);
2366 })();
2367
2368 (function checkStringIncludes() {
2369 if (String.prototype.includes) {
2370 return;
2371 }
2372
2373 __w_pdfjs_require__(42);
2374 })();
2375
2376 (function checkArrayIncludes() {
2377 if (Array.prototype.includes) {
2378 return;
2379 }
2380
2381 __w_pdfjs_require__(44);
2382 })();
2383
2384 (function checkArrayFrom() {
2385 if (Array.from) {
2386 return;
2387 }
2388
2389 __w_pdfjs_require__(51);
2390 })();
2391
2392 (function checkObjectAssign() {
2393 if (Object.assign) {
2394 return;
2395 }
2396
2397 __w_pdfjs_require__(74);
2398 })();
2399
2400 (function checkMathLog2() {
2401 if (Math.log2) {
2402 return;
2403 }
2404
2405 Math.log2 = __w_pdfjs_require__(79);
2406 })();
2407
2408 (function checkNumberIsNaN() {
2409 if (Number.isNaN) {
2410 return;
2411 }
2412
2413 Number.isNaN = __w_pdfjs_require__(81);
2414 })();
2415
2416 (function checkNumberIsInteger() {
2417 if (Number.isInteger) {
2418 return;
2419 }
2420
2421 Number.isInteger = __w_pdfjs_require__(83);
2422 })();
2423
2424 (function checkPromise() {
2425 if (globalScope.Promise && globalScope.Promise.prototype && globalScope.Promise.prototype["finally"]) {
2426 return;
2427 }
2428
2429 globalScope.Promise = __w_pdfjs_require__(86);
2430 })();
2431
2432 (function checkWeakMap() {
2433 if (globalScope.WeakMap) {
2434 return;
2435 }
2436
2437 globalScope.WeakMap = __w_pdfjs_require__(106);
2438 })();
2439
2440 (function checkWeakSet() {
2441 if (globalScope.WeakSet) {
2442 return;
2443 }
2444
2445 globalScope.WeakSet = __w_pdfjs_require__(123);
2446 })();
2447
2448 (function checkStringCodePointAt() {
2449 if (String.codePointAt) {
2450 return;
2451 }
2452
2453 String.codePointAt = __w_pdfjs_require__(127);
2454 })();
2455
2456 (function checkStringFromCodePoint() {
2457 if (String.fromCodePoint) {
2458 return;
2459 }
2460
2461 String.fromCodePoint = __w_pdfjs_require__(129);
2462 })();
2463
2464 (function checkSymbol() {
2465 if (globalScope.Symbol) {
2466 return;
2467 }
2468
2469 __w_pdfjs_require__(131);
2470 })();
2471
2472 (function checkStringPadStart() {
2473 if (String.prototype.padStart) {
2474 return;
2475 }
2476
2477 __w_pdfjs_require__(138);
2478 })();
2479
2480 (function checkStringPadEnd() {
2481 if (String.prototype.padEnd) {
2482 return;
2483 }
2484
2485 __w_pdfjs_require__(142);
2486 })();
2487
2488 (function checkObjectValues() {
2489 if (Object.values) {
2490 return;
2491 }
2492
2493 Object.values = __w_pdfjs_require__(144);
2494 })();
2495}
2496
2497/***/ }),
2498/* 7 */
2499/***/ (function(module, exports, __w_pdfjs_require__) {
2500
2501"use strict";
2502
2503
2504module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
2505
2506/***/ }),
2507/* 8 */
2508/***/ (function(module, exports, __w_pdfjs_require__) {
2509
2510"use strict";
2511
2512
2513function _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); }
2514
2515module.exports = function isNodeJS() {
2516 return (typeof process === "undefined" ? "undefined" : _typeof(process)) === 'object' && process + '' === '[object process]' && !process.versions['nw'] && !process.versions['electron'];
2517};
2518
2519/***/ }),
2520/* 9 */
2521/***/ (function(module, exports, __w_pdfjs_require__) {
2522
2523"use strict";
2524
2525
2526__w_pdfjs_require__(10);
2527
2528module.exports = __w_pdfjs_require__(13).String.startsWith;
2529
2530/***/ }),
2531/* 10 */
2532/***/ (function(module, exports, __w_pdfjs_require__) {
2533
2534"use strict";
2535
2536
2537var $export = __w_pdfjs_require__(11);
2538
2539var toLength = __w_pdfjs_require__(32);
2540
2541var context = __w_pdfjs_require__(34);
2542
2543var STARTS_WITH = 'startsWith';
2544var $startsWith = ''[STARTS_WITH];
2545$export($export.P + $export.F * __w_pdfjs_require__(39)(STARTS_WITH), 'String', {
2546 startsWith: function startsWith(searchString) {
2547 var that = context(this, searchString, STARTS_WITH);
2548 var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
2549 var search = String(searchString);
2550 return $startsWith ? $startsWith.call(that, search, index) : that.slice(index, index + search.length) === search;
2551 }
2552});
2553
2554/***/ }),
2555/* 11 */
2556/***/ (function(module, exports, __w_pdfjs_require__) {
2557
2558"use strict";
2559
2560
2561var global = __w_pdfjs_require__(12);
2562
2563var core = __w_pdfjs_require__(13);
2564
2565var hide = __w_pdfjs_require__(14);
2566
2567var redefine = __w_pdfjs_require__(24);
2568
2569var ctx = __w_pdfjs_require__(30);
2570
2571var PROTOTYPE = 'prototype';
2572
2573var $export = function $export(type, name, source) {
2574 var IS_FORCED = type & $export.F;
2575 var IS_GLOBAL = type & $export.G;
2576 var IS_STATIC = type & $export.S;
2577 var IS_PROTO = type & $export.P;
2578 var IS_BIND = type & $export.B;
2579 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
2580 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
2581 var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
2582 var key, own, out, exp;
2583 if (IS_GLOBAL) source = name;
2584
2585 for (key in source) {
2586 own = !IS_FORCED && target && target[key] !== undefined;
2587 out = (own ? target : source)[key];
2588 exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
2589 if (target) redefine(target, key, out, type & $export.U);
2590 if (exports[key] != out) hide(exports, key, exp);
2591 if (IS_PROTO && expProto[key] != out) expProto[key] = out;
2592 }
2593};
2594
2595global.core = core;
2596$export.F = 1;
2597$export.G = 2;
2598$export.S = 4;
2599$export.P = 8;
2600$export.B = 16;
2601$export.W = 32;
2602$export.U = 64;
2603$export.R = 128;
2604module.exports = $export;
2605
2606/***/ }),
2607/* 12 */
2608/***/ (function(module, exports, __w_pdfjs_require__) {
2609
2610"use strict";
2611
2612
2613var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
2614if (typeof __g == 'number') __g = global;
2615
2616/***/ }),
2617/* 13 */
2618/***/ (function(module, exports, __w_pdfjs_require__) {
2619
2620"use strict";
2621
2622
2623var core = module.exports = {
2624 version: '2.6.9'
2625};
2626if (typeof __e == 'number') __e = core;
2627
2628/***/ }),
2629/* 14 */
2630/***/ (function(module, exports, __w_pdfjs_require__) {
2631
2632"use strict";
2633
2634
2635var dP = __w_pdfjs_require__(15);
2636
2637var createDesc = __w_pdfjs_require__(23);
2638
2639module.exports = __w_pdfjs_require__(19) ? function (object, key, value) {
2640 return dP.f(object, key, createDesc(1, value));
2641} : function (object, key, value) {
2642 object[key] = value;
2643 return object;
2644};
2645
2646/***/ }),
2647/* 15 */
2648/***/ (function(module, exports, __w_pdfjs_require__) {
2649
2650"use strict";
2651
2652
2653var anObject = __w_pdfjs_require__(16);
2654
2655var IE8_DOM_DEFINE = __w_pdfjs_require__(18);
2656
2657var toPrimitive = __w_pdfjs_require__(22);
2658
2659var dP = Object.defineProperty;
2660exports.f = __w_pdfjs_require__(19) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
2661 anObject(O);
2662 P = toPrimitive(P, true);
2663 anObject(Attributes);
2664 if (IE8_DOM_DEFINE) try {
2665 return dP(O, P, Attributes);
2666 } catch (e) {}
2667 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
2668 if ('value' in Attributes) O[P] = Attributes.value;
2669 return O;
2670};
2671
2672/***/ }),
2673/* 16 */
2674/***/ (function(module, exports, __w_pdfjs_require__) {
2675
2676"use strict";
2677
2678
2679var isObject = __w_pdfjs_require__(17);
2680
2681module.exports = function (it) {
2682 if (!isObject(it)) throw TypeError(it + ' is not an object!');
2683 return it;
2684};
2685
2686/***/ }),
2687/* 17 */
2688/***/ (function(module, exports, __w_pdfjs_require__) {
2689
2690"use strict";
2691
2692
2693function _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); }
2694
2695module.exports = function (it) {
2696 return _typeof(it) === 'object' ? it !== null : typeof it === 'function';
2697};
2698
2699/***/ }),
2700/* 18 */
2701/***/ (function(module, exports, __w_pdfjs_require__) {
2702
2703"use strict";
2704
2705
2706module.exports = !__w_pdfjs_require__(19) && !__w_pdfjs_require__(20)(function () {
2707 return Object.defineProperty(__w_pdfjs_require__(21)('div'), 'a', {
2708 get: function get() {
2709 return 7;
2710 }
2711 }).a != 7;
2712});
2713
2714/***/ }),
2715/* 19 */
2716/***/ (function(module, exports, __w_pdfjs_require__) {
2717
2718"use strict";
2719
2720
2721module.exports = !__w_pdfjs_require__(20)(function () {
2722 return Object.defineProperty({}, 'a', {
2723 get: function get() {
2724 return 7;
2725 }
2726 }).a != 7;
2727});
2728
2729/***/ }),
2730/* 20 */
2731/***/ (function(module, exports, __w_pdfjs_require__) {
2732
2733"use strict";
2734
2735
2736module.exports = function (exec) {
2737 try {
2738 return !!exec();
2739 } catch (e) {
2740 return true;
2741 }
2742};
2743
2744/***/ }),
2745/* 21 */
2746/***/ (function(module, exports, __w_pdfjs_require__) {
2747
2748"use strict";
2749
2750
2751var isObject = __w_pdfjs_require__(17);
2752
2753var document = __w_pdfjs_require__(12).document;
2754
2755var is = isObject(document) && isObject(document.createElement);
2756
2757module.exports = function (it) {
2758 return is ? document.createElement(it) : {};
2759};
2760
2761/***/ }),
2762/* 22 */
2763/***/ (function(module, exports, __w_pdfjs_require__) {
2764
2765"use strict";
2766
2767
2768var isObject = __w_pdfjs_require__(17);
2769
2770module.exports = function (it, S) {
2771 if (!isObject(it)) return it;
2772 var fn, val;
2773 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
2774 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
2775 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
2776 throw TypeError("Can't convert object to primitive value");
2777};
2778
2779/***/ }),
2780/* 23 */
2781/***/ (function(module, exports, __w_pdfjs_require__) {
2782
2783"use strict";
2784
2785
2786module.exports = function (bitmap, value) {
2787 return {
2788 enumerable: !(bitmap & 1),
2789 configurable: !(bitmap & 2),
2790 writable: !(bitmap & 4),
2791 value: value
2792 };
2793};
2794
2795/***/ }),
2796/* 24 */
2797/***/ (function(module, exports, __w_pdfjs_require__) {
2798
2799"use strict";
2800
2801
2802var global = __w_pdfjs_require__(12);
2803
2804var hide = __w_pdfjs_require__(14);
2805
2806var has = __w_pdfjs_require__(25);
2807
2808var SRC = __w_pdfjs_require__(26)('src');
2809
2810var $toString = __w_pdfjs_require__(27);
2811
2812var TO_STRING = 'toString';
2813var TPL = ('' + $toString).split(TO_STRING);
2814
2815__w_pdfjs_require__(13).inspectSource = function (it) {
2816 return $toString.call(it);
2817};
2818
2819(module.exports = function (O, key, val, safe) {
2820 var isFunction = typeof val == 'function';
2821 if (isFunction) has(val, 'name') || hide(val, 'name', key);
2822 if (O[key] === val) return;
2823 if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
2824
2825 if (O === global) {
2826 O[key] = val;
2827 } else if (!safe) {
2828 delete O[key];
2829 hide(O, key, val);
2830 } else if (O[key]) {
2831 O[key] = val;
2832 } else {
2833 hide(O, key, val);
2834 }
2835})(Function.prototype, TO_STRING, function toString() {
2836 return typeof this == 'function' && this[SRC] || $toString.call(this);
2837});
2838
2839/***/ }),
2840/* 25 */
2841/***/ (function(module, exports, __w_pdfjs_require__) {
2842
2843"use strict";
2844
2845
2846var hasOwnProperty = {}.hasOwnProperty;
2847
2848module.exports = function (it, key) {
2849 return hasOwnProperty.call(it, key);
2850};
2851
2852/***/ }),
2853/* 26 */
2854/***/ (function(module, exports, __w_pdfjs_require__) {
2855
2856"use strict";
2857
2858
2859var id = 0;
2860var px = Math.random();
2861
2862module.exports = function (key) {
2863 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
2864};
2865
2866/***/ }),
2867/* 27 */
2868/***/ (function(module, exports, __w_pdfjs_require__) {
2869
2870"use strict";
2871
2872
2873module.exports = __w_pdfjs_require__(28)('native-function-to-string', Function.toString);
2874
2875/***/ }),
2876/* 28 */
2877/***/ (function(module, exports, __w_pdfjs_require__) {
2878
2879"use strict";
2880
2881
2882var core = __w_pdfjs_require__(13);
2883
2884var global = __w_pdfjs_require__(12);
2885
2886var SHARED = '__core-js_shared__';
2887var store = global[SHARED] || (global[SHARED] = {});
2888(module.exports = function (key, value) {
2889 return store[key] || (store[key] = value !== undefined ? value : {});
2890})('versions', []).push({
2891 version: core.version,
2892 mode: __w_pdfjs_require__(29) ? 'pure' : 'global',
2893 copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
2894});
2895
2896/***/ }),
2897/* 29 */
2898/***/ (function(module, exports, __w_pdfjs_require__) {
2899
2900"use strict";
2901
2902
2903module.exports = false;
2904
2905/***/ }),
2906/* 30 */
2907/***/ (function(module, exports, __w_pdfjs_require__) {
2908
2909"use strict";
2910
2911
2912var aFunction = __w_pdfjs_require__(31);
2913
2914module.exports = function (fn, that, length) {
2915 aFunction(fn);
2916 if (that === undefined) return fn;
2917
2918 switch (length) {
2919 case 1:
2920 return function (a) {
2921 return fn.call(that, a);
2922 };
2923
2924 case 2:
2925 return function (a, b) {
2926 return fn.call(that, a, b);
2927 };
2928
2929 case 3:
2930 return function (a, b, c) {
2931 return fn.call(that, a, b, c);
2932 };
2933 }
2934
2935 return function () {
2936 return fn.apply(that, arguments);
2937 };
2938};
2939
2940/***/ }),
2941/* 31 */
2942/***/ (function(module, exports, __w_pdfjs_require__) {
2943
2944"use strict";
2945
2946
2947module.exports = function (it) {
2948 if (typeof it != 'function') throw TypeError(it + ' is not a function!');
2949 return it;
2950};
2951
2952/***/ }),
2953/* 32 */
2954/***/ (function(module, exports, __w_pdfjs_require__) {
2955
2956"use strict";
2957
2958
2959var toInteger = __w_pdfjs_require__(33);
2960
2961var min = Math.min;
2962
2963module.exports = function (it) {
2964 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0;
2965};
2966
2967/***/ }),
2968/* 33 */
2969/***/ (function(module, exports, __w_pdfjs_require__) {
2970
2971"use strict";
2972
2973
2974var ceil = Math.ceil;
2975var floor = Math.floor;
2976
2977module.exports = function (it) {
2978 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
2979};
2980
2981/***/ }),
2982/* 34 */
2983/***/ (function(module, exports, __w_pdfjs_require__) {
2984
2985"use strict";
2986
2987
2988var isRegExp = __w_pdfjs_require__(35);
2989
2990var defined = __w_pdfjs_require__(38);
2991
2992module.exports = function (that, searchString, NAME) {
2993 if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
2994 return String(defined(that));
2995};
2996
2997/***/ }),
2998/* 35 */
2999/***/ (function(module, exports, __w_pdfjs_require__) {
3000
3001"use strict";
3002
3003
3004var isObject = __w_pdfjs_require__(17);
3005
3006var cof = __w_pdfjs_require__(36);
3007
3008var MATCH = __w_pdfjs_require__(37)('match');
3009
3010module.exports = function (it) {
3011 var isRegExp;
3012 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
3013};
3014
3015/***/ }),
3016/* 36 */
3017/***/ (function(module, exports, __w_pdfjs_require__) {
3018
3019"use strict";
3020
3021
3022var toString = {}.toString;
3023
3024module.exports = function (it) {
3025 return toString.call(it).slice(8, -1);
3026};
3027
3028/***/ }),
3029/* 37 */
3030/***/ (function(module, exports, __w_pdfjs_require__) {
3031
3032"use strict";
3033
3034
3035var store = __w_pdfjs_require__(28)('wks');
3036
3037var uid = __w_pdfjs_require__(26);
3038
3039var _Symbol = __w_pdfjs_require__(12).Symbol;
3040
3041var USE_SYMBOL = typeof _Symbol == 'function';
3042
3043var $exports = module.exports = function (name) {
3044 return store[name] || (store[name] = USE_SYMBOL && _Symbol[name] || (USE_SYMBOL ? _Symbol : uid)('Symbol.' + name));
3045};
3046
3047$exports.store = store;
3048
3049/***/ }),
3050/* 38 */
3051/***/ (function(module, exports, __w_pdfjs_require__) {
3052
3053"use strict";
3054
3055
3056module.exports = function (it) {
3057 if (it == undefined) throw TypeError("Can't call method on " + it);
3058 return it;
3059};
3060
3061/***/ }),
3062/* 39 */
3063/***/ (function(module, exports, __w_pdfjs_require__) {
3064
3065"use strict";
3066
3067
3068var MATCH = __w_pdfjs_require__(37)('match');
3069
3070module.exports = function (KEY) {
3071 var re = /./;
3072
3073 try {
3074 '/./'[KEY](re);
3075 } catch (e) {
3076 try {
3077 re[MATCH] = false;
3078 return !'/./'[KEY](re);
3079 } catch (f) {}
3080 }
3081
3082 return true;
3083};
3084
3085/***/ }),
3086/* 40 */
3087/***/ (function(module, exports, __w_pdfjs_require__) {
3088
3089"use strict";
3090
3091
3092__w_pdfjs_require__(41);
3093
3094module.exports = __w_pdfjs_require__(13).String.endsWith;
3095
3096/***/ }),
3097/* 41 */
3098/***/ (function(module, exports, __w_pdfjs_require__) {
3099
3100"use strict";
3101
3102
3103var $export = __w_pdfjs_require__(11);
3104
3105var toLength = __w_pdfjs_require__(32);
3106
3107var context = __w_pdfjs_require__(34);
3108
3109var ENDS_WITH = 'endsWith';
3110var $endsWith = ''[ENDS_WITH];
3111$export($export.P + $export.F * __w_pdfjs_require__(39)(ENDS_WITH), 'String', {
3112 endsWith: function endsWith(searchString) {
3113 var that = context(this, searchString, ENDS_WITH);
3114 var endPosition = arguments.length > 1 ? arguments[1] : undefined;
3115 var len = toLength(that.length);
3116 var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
3117 var search = String(searchString);
3118 return $endsWith ? $endsWith.call(that, search, end) : that.slice(end - search.length, end) === search;
3119 }
3120});
3121
3122/***/ }),
3123/* 42 */
3124/***/ (function(module, exports, __w_pdfjs_require__) {
3125
3126"use strict";
3127
3128
3129__w_pdfjs_require__(43);
3130
3131module.exports = __w_pdfjs_require__(13).String.includes;
3132
3133/***/ }),
3134/* 43 */
3135/***/ (function(module, exports, __w_pdfjs_require__) {
3136
3137"use strict";
3138
3139
3140var $export = __w_pdfjs_require__(11);
3141
3142var context = __w_pdfjs_require__(34);
3143
3144var INCLUDES = 'includes';
3145$export($export.P + $export.F * __w_pdfjs_require__(39)(INCLUDES), 'String', {
3146 includes: function includes(searchString) {
3147 return !!~context(this, searchString, INCLUDES).indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
3148 }
3149});
3150
3151/***/ }),
3152/* 44 */
3153/***/ (function(module, exports, __w_pdfjs_require__) {
3154
3155"use strict";
3156
3157
3158__w_pdfjs_require__(45);
3159
3160module.exports = __w_pdfjs_require__(13).Array.includes;
3161
3162/***/ }),
3163/* 45 */
3164/***/ (function(module, exports, __w_pdfjs_require__) {
3165
3166"use strict";
3167
3168
3169var $export = __w_pdfjs_require__(11);
3170
3171var $includes = __w_pdfjs_require__(46)(true);
3172
3173$export($export.P, 'Array', {
3174 includes: function includes(el) {
3175 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
3176 }
3177});
3178
3179__w_pdfjs_require__(50)('includes');
3180
3181/***/ }),
3182/* 46 */
3183/***/ (function(module, exports, __w_pdfjs_require__) {
3184
3185"use strict";
3186
3187
3188var toIObject = __w_pdfjs_require__(47);
3189
3190var toLength = __w_pdfjs_require__(32);
3191
3192var toAbsoluteIndex = __w_pdfjs_require__(49);
3193
3194module.exports = function (IS_INCLUDES) {
3195 return function ($this, el, fromIndex) {
3196 var O = toIObject($this);
3197 var length = toLength(O.length);
3198 var index = toAbsoluteIndex(fromIndex, length);
3199 var value;
3200 if (IS_INCLUDES && el != el) while (length > index) {
3201 value = O[index++];
3202 if (value != value) return true;
3203 } else for (; length > index; index++) {
3204 if (IS_INCLUDES || index in O) {
3205 if (O[index] === el) return IS_INCLUDES || index || 0;
3206 }
3207 }
3208 return !IS_INCLUDES && -1;
3209 };
3210};
3211
3212/***/ }),
3213/* 47 */
3214/***/ (function(module, exports, __w_pdfjs_require__) {
3215
3216"use strict";
3217
3218
3219var IObject = __w_pdfjs_require__(48);
3220
3221var defined = __w_pdfjs_require__(38);
3222
3223module.exports = function (it) {
3224 return IObject(defined(it));
3225};
3226
3227/***/ }),
3228/* 48 */
3229/***/ (function(module, exports, __w_pdfjs_require__) {
3230
3231"use strict";
3232
3233
3234var cof = __w_pdfjs_require__(36);
3235
3236module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
3237 return cof(it) == 'String' ? it.split('') : Object(it);
3238};
3239
3240/***/ }),
3241/* 49 */
3242/***/ (function(module, exports, __w_pdfjs_require__) {
3243
3244"use strict";
3245
3246
3247var toInteger = __w_pdfjs_require__(33);
3248
3249var max = Math.max;
3250var min = Math.min;
3251
3252module.exports = function (index, length) {
3253 index = toInteger(index);
3254 return index < 0 ? max(index + length, 0) : min(index, length);
3255};
3256
3257/***/ }),
3258/* 50 */
3259/***/ (function(module, exports, __w_pdfjs_require__) {
3260
3261"use strict";
3262
3263
3264var UNSCOPABLES = __w_pdfjs_require__(37)('unscopables');
3265
3266var ArrayProto = Array.prototype;
3267if (ArrayProto[UNSCOPABLES] == undefined) __w_pdfjs_require__(14)(ArrayProto, UNSCOPABLES, {});
3268
3269module.exports = function (key) {
3270 ArrayProto[UNSCOPABLES][key] = true;
3271};
3272
3273/***/ }),
3274/* 51 */
3275/***/ (function(module, exports, __w_pdfjs_require__) {
3276
3277"use strict";
3278
3279
3280__w_pdfjs_require__(52);
3281
3282__w_pdfjs_require__(67);
3283
3284module.exports = __w_pdfjs_require__(13).Array.from;
3285
3286/***/ }),
3287/* 52 */
3288/***/ (function(module, exports, __w_pdfjs_require__) {
3289
3290"use strict";
3291
3292
3293var $at = __w_pdfjs_require__(53)(true);
3294
3295__w_pdfjs_require__(54)(String, 'String', function (iterated) {
3296 this._t = String(iterated);
3297 this._i = 0;
3298}, function () {
3299 var O = this._t;
3300 var index = this._i;
3301 var point;
3302 if (index >= O.length) return {
3303 value: undefined,
3304 done: true
3305 };
3306 point = $at(O, index);
3307 this._i += point.length;
3308 return {
3309 value: point,
3310 done: false
3311 };
3312});
3313
3314/***/ }),
3315/* 53 */
3316/***/ (function(module, exports, __w_pdfjs_require__) {
3317
3318"use strict";
3319
3320
3321var toInteger = __w_pdfjs_require__(33);
3322
3323var defined = __w_pdfjs_require__(38);
3324
3325module.exports = function (TO_STRING) {
3326 return function (that, pos) {
3327 var s = String(defined(that));
3328 var i = toInteger(pos);
3329 var l = s.length;
3330 var a, b;
3331 if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
3332 a = s.charCodeAt(i);
3333 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;
3334 };
3335};
3336
3337/***/ }),
3338/* 54 */
3339/***/ (function(module, exports, __w_pdfjs_require__) {
3340
3341"use strict";
3342
3343
3344var LIBRARY = __w_pdfjs_require__(29);
3345
3346var $export = __w_pdfjs_require__(11);
3347
3348var redefine = __w_pdfjs_require__(24);
3349
3350var hide = __w_pdfjs_require__(14);
3351
3352var Iterators = __w_pdfjs_require__(55);
3353
3354var $iterCreate = __w_pdfjs_require__(56);
3355
3356var setToStringTag = __w_pdfjs_require__(64);
3357
3358var getPrototypeOf = __w_pdfjs_require__(65);
3359
3360var ITERATOR = __w_pdfjs_require__(37)('iterator');
3361
3362var BUGGY = !([].keys && 'next' in [].keys());
3363var FF_ITERATOR = '@@iterator';
3364var KEYS = 'keys';
3365var VALUES = 'values';
3366
3367var returnThis = function returnThis() {
3368 return this;
3369};
3370
3371module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
3372 $iterCreate(Constructor, NAME, next);
3373
3374 var getMethod = function getMethod(kind) {
3375 if (!BUGGY && kind in proto) return proto[kind];
3376
3377 switch (kind) {
3378 case KEYS:
3379 return function keys() {
3380 return new Constructor(this, kind);
3381 };
3382
3383 case VALUES:
3384 return function values() {
3385 return new Constructor(this, kind);
3386 };
3387 }
3388
3389 return function entries() {
3390 return new Constructor(this, kind);
3391 };
3392 };
3393
3394 var TAG = NAME + ' Iterator';
3395 var DEF_VALUES = DEFAULT == VALUES;
3396 var VALUES_BUG = false;
3397 var proto = Base.prototype;
3398 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
3399 var $default = $native || getMethod(DEFAULT);
3400 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
3401 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
3402 var methods, key, IteratorPrototype;
3403
3404 if ($anyNative) {
3405 IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
3406
3407 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
3408 setToStringTag(IteratorPrototype, TAG, true);
3409 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
3410 }
3411 }
3412
3413 if (DEF_VALUES && $native && $native.name !== VALUES) {
3414 VALUES_BUG = true;
3415
3416 $default = function values() {
3417 return $native.call(this);
3418 };
3419 }
3420
3421 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
3422 hide(proto, ITERATOR, $default);
3423 }
3424
3425 Iterators[NAME] = $default;
3426 Iterators[TAG] = returnThis;
3427
3428 if (DEFAULT) {
3429 methods = {
3430 values: DEF_VALUES ? $default : getMethod(VALUES),
3431 keys: IS_SET ? $default : getMethod(KEYS),
3432 entries: $entries
3433 };
3434 if (FORCED) for (key in methods) {
3435 if (!(key in proto)) redefine(proto, key, methods[key]);
3436 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
3437 }
3438
3439 return methods;
3440};
3441
3442/***/ }),
3443/* 55 */
3444/***/ (function(module, exports, __w_pdfjs_require__) {
3445
3446"use strict";
3447
3448
3449module.exports = {};
3450
3451/***/ }),
3452/* 56 */
3453/***/ (function(module, exports, __w_pdfjs_require__) {
3454
3455"use strict";
3456
3457
3458var create = __w_pdfjs_require__(57);
3459
3460var descriptor = __w_pdfjs_require__(23);
3461
3462var setToStringTag = __w_pdfjs_require__(64);
3463
3464var IteratorPrototype = {};
3465
3466__w_pdfjs_require__(14)(IteratorPrototype, __w_pdfjs_require__(37)('iterator'), function () {
3467 return this;
3468});
3469
3470module.exports = function (Constructor, NAME, next) {
3471 Constructor.prototype = create(IteratorPrototype, {
3472 next: descriptor(1, next)
3473 });
3474 setToStringTag(Constructor, NAME + ' Iterator');
3475};
3476
3477/***/ }),
3478/* 57 */
3479/***/ (function(module, exports, __w_pdfjs_require__) {
3480
3481"use strict";
3482
3483
3484var anObject = __w_pdfjs_require__(16);
3485
3486var dPs = __w_pdfjs_require__(58);
3487
3488var enumBugKeys = __w_pdfjs_require__(62);
3489
3490var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO');
3491
3492var Empty = function Empty() {};
3493
3494var PROTOTYPE = 'prototype';
3495
3496var _createDict = function createDict() {
3497 var iframe = __w_pdfjs_require__(21)('iframe');
3498
3499 var i = enumBugKeys.length;
3500 var lt = '<';
3501 var gt = '>';
3502 var iframeDocument;
3503 iframe.style.display = 'none';
3504
3505 __w_pdfjs_require__(63).appendChild(iframe);
3506
3507 iframe.src = 'javascript:';
3508 iframeDocument = iframe.contentWindow.document;
3509 iframeDocument.open();
3510 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
3511 iframeDocument.close();
3512 _createDict = iframeDocument.F;
3513
3514 while (i--) {
3515 delete _createDict[PROTOTYPE][enumBugKeys[i]];
3516 }
3517
3518 return _createDict();
3519};
3520
3521module.exports = Object.create || function create(O, Properties) {
3522 var result;
3523
3524 if (O !== null) {
3525 Empty[PROTOTYPE] = anObject(O);
3526 result = new Empty();
3527 Empty[PROTOTYPE] = null;
3528 result[IE_PROTO] = O;
3529 } else result = _createDict();
3530
3531 return Properties === undefined ? result : dPs(result, Properties);
3532};
3533
3534/***/ }),
3535/* 58 */
3536/***/ (function(module, exports, __w_pdfjs_require__) {
3537
3538"use strict";
3539
3540
3541var dP = __w_pdfjs_require__(15);
3542
3543var anObject = __w_pdfjs_require__(16);
3544
3545var getKeys = __w_pdfjs_require__(59);
3546
3547module.exports = __w_pdfjs_require__(19) ? Object.defineProperties : function defineProperties(O, Properties) {
3548 anObject(O);
3549 var keys = getKeys(Properties);
3550 var length = keys.length;
3551 var i = 0;
3552 var P;
3553
3554 while (length > i) {
3555 dP.f(O, P = keys[i++], Properties[P]);
3556 }
3557
3558 return O;
3559};
3560
3561/***/ }),
3562/* 59 */
3563/***/ (function(module, exports, __w_pdfjs_require__) {
3564
3565"use strict";
3566
3567
3568var $keys = __w_pdfjs_require__(60);
3569
3570var enumBugKeys = __w_pdfjs_require__(62);
3571
3572module.exports = Object.keys || function keys(O) {
3573 return $keys(O, enumBugKeys);
3574};
3575
3576/***/ }),
3577/* 60 */
3578/***/ (function(module, exports, __w_pdfjs_require__) {
3579
3580"use strict";
3581
3582
3583var has = __w_pdfjs_require__(25);
3584
3585var toIObject = __w_pdfjs_require__(47);
3586
3587var arrayIndexOf = __w_pdfjs_require__(46)(false);
3588
3589var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO');
3590
3591module.exports = function (object, names) {
3592 var O = toIObject(object);
3593 var i = 0;
3594 var result = [];
3595 var key;
3596
3597 for (key in O) {
3598 if (key != IE_PROTO) has(O, key) && result.push(key);
3599 }
3600
3601 while (names.length > i) {
3602 if (has(O, key = names[i++])) {
3603 ~arrayIndexOf(result, key) || result.push(key);
3604 }
3605 }
3606
3607 return result;
3608};
3609
3610/***/ }),
3611/* 61 */
3612/***/ (function(module, exports, __w_pdfjs_require__) {
3613
3614"use strict";
3615
3616
3617var shared = __w_pdfjs_require__(28)('keys');
3618
3619var uid = __w_pdfjs_require__(26);
3620
3621module.exports = function (key) {
3622 return shared[key] || (shared[key] = uid(key));
3623};
3624
3625/***/ }),
3626/* 62 */
3627/***/ (function(module, exports, __w_pdfjs_require__) {
3628
3629"use strict";
3630
3631
3632module.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');
3633
3634/***/ }),
3635/* 63 */
3636/***/ (function(module, exports, __w_pdfjs_require__) {
3637
3638"use strict";
3639
3640
3641var document = __w_pdfjs_require__(12).document;
3642
3643module.exports = document && document.documentElement;
3644
3645/***/ }),
3646/* 64 */
3647/***/ (function(module, exports, __w_pdfjs_require__) {
3648
3649"use strict";
3650
3651
3652var def = __w_pdfjs_require__(15).f;
3653
3654var has = __w_pdfjs_require__(25);
3655
3656var TAG = __w_pdfjs_require__(37)('toStringTag');
3657
3658module.exports = function (it, tag, stat) {
3659 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
3660 configurable: true,
3661 value: tag
3662 });
3663};
3664
3665/***/ }),
3666/* 65 */
3667/***/ (function(module, exports, __w_pdfjs_require__) {
3668
3669"use strict";
3670
3671
3672var has = __w_pdfjs_require__(25);
3673
3674var toObject = __w_pdfjs_require__(66);
3675
3676var IE_PROTO = __w_pdfjs_require__(61)('IE_PROTO');
3677
3678var ObjectProto = Object.prototype;
3679
3680module.exports = Object.getPrototypeOf || function (O) {
3681 O = toObject(O);
3682 if (has(O, IE_PROTO)) return O[IE_PROTO];
3683
3684 if (typeof O.constructor == 'function' && O instanceof O.constructor) {
3685 return O.constructor.prototype;
3686 }
3687
3688 return O instanceof Object ? ObjectProto : null;
3689};
3690
3691/***/ }),
3692/* 66 */
3693/***/ (function(module, exports, __w_pdfjs_require__) {
3694
3695"use strict";
3696
3697
3698var defined = __w_pdfjs_require__(38);
3699
3700module.exports = function (it) {
3701 return Object(defined(it));
3702};
3703
3704/***/ }),
3705/* 67 */
3706/***/ (function(module, exports, __w_pdfjs_require__) {
3707
3708"use strict";
3709
3710
3711var ctx = __w_pdfjs_require__(30);
3712
3713var $export = __w_pdfjs_require__(11);
3714
3715var toObject = __w_pdfjs_require__(66);
3716
3717var call = __w_pdfjs_require__(68);
3718
3719var isArrayIter = __w_pdfjs_require__(69);
3720
3721var toLength = __w_pdfjs_require__(32);
3722
3723var createProperty = __w_pdfjs_require__(70);
3724
3725var getIterFn = __w_pdfjs_require__(71);
3726
3727$export($export.S + $export.F * !__w_pdfjs_require__(73)(function (iter) {
3728 Array.from(iter);
3729}), 'Array', {
3730 from: function from(arrayLike) {
3731 var O = toObject(arrayLike);
3732 var C = typeof this == 'function' ? this : Array;
3733 var aLen = arguments.length;
3734 var mapfn = aLen > 1 ? arguments[1] : undefined;
3735 var mapping = mapfn !== undefined;
3736 var index = 0;
3737 var iterFn = getIterFn(O);
3738 var length, result, step, iterator;
3739 if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
3740
3741 if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
3742 for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
3743 createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
3744 }
3745 } else {
3746 length = toLength(O.length);
3747
3748 for (result = new C(length); length > index; index++) {
3749 createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
3750 }
3751 }
3752
3753 result.length = index;
3754 return result;
3755 }
3756});
3757
3758/***/ }),
3759/* 68 */
3760/***/ (function(module, exports, __w_pdfjs_require__) {
3761
3762"use strict";
3763
3764
3765var anObject = __w_pdfjs_require__(16);
3766
3767module.exports = function (iterator, fn, value, entries) {
3768 try {
3769 return entries ? fn(anObject(value)[0], value[1]) : fn(value);
3770 } catch (e) {
3771 var ret = iterator['return'];
3772 if (ret !== undefined) anObject(ret.call(iterator));
3773 throw e;
3774 }
3775};
3776
3777/***/ }),
3778/* 69 */
3779/***/ (function(module, exports, __w_pdfjs_require__) {
3780
3781"use strict";
3782
3783
3784var Iterators = __w_pdfjs_require__(55);
3785
3786var ITERATOR = __w_pdfjs_require__(37)('iterator');
3787
3788var ArrayProto = Array.prototype;
3789
3790module.exports = function (it) {
3791 return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
3792};
3793
3794/***/ }),
3795/* 70 */
3796/***/ (function(module, exports, __w_pdfjs_require__) {
3797
3798"use strict";
3799
3800
3801var $defineProperty = __w_pdfjs_require__(15);
3802
3803var createDesc = __w_pdfjs_require__(23);
3804
3805module.exports = function (object, index, value) {
3806 if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value;
3807};
3808
3809/***/ }),
3810/* 71 */
3811/***/ (function(module, exports, __w_pdfjs_require__) {
3812
3813"use strict";
3814
3815
3816var classof = __w_pdfjs_require__(72);
3817
3818var ITERATOR = __w_pdfjs_require__(37)('iterator');
3819
3820var Iterators = __w_pdfjs_require__(55);
3821
3822module.exports = __w_pdfjs_require__(13).getIteratorMethod = function (it) {
3823 if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];
3824};
3825
3826/***/ }),
3827/* 72 */
3828/***/ (function(module, exports, __w_pdfjs_require__) {
3829
3830"use strict";
3831
3832
3833var cof = __w_pdfjs_require__(36);
3834
3835var TAG = __w_pdfjs_require__(37)('toStringTag');
3836
3837var ARG = cof(function () {
3838 return arguments;
3839}()) == 'Arguments';
3840
3841var tryGet = function tryGet(it, key) {
3842 try {
3843 return it[key];
3844 } catch (e) {}
3845};
3846
3847module.exports = function (it) {
3848 var O, T, B;
3849 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;
3850};
3851
3852/***/ }),
3853/* 73 */
3854/***/ (function(module, exports, __w_pdfjs_require__) {
3855
3856"use strict";
3857
3858
3859var ITERATOR = __w_pdfjs_require__(37)('iterator');
3860
3861var SAFE_CLOSING = false;
3862
3863try {
3864 var riter = [7][ITERATOR]();
3865
3866 riter['return'] = function () {
3867 SAFE_CLOSING = true;
3868 };
3869
3870 Array.from(riter, function () {
3871 throw 2;
3872 });
3873} catch (e) {}
3874
3875module.exports = function (exec, skipClosing) {
3876 if (!skipClosing && !SAFE_CLOSING) return false;
3877 var safe = false;
3878
3879 try {
3880 var arr = [7];
3881 var iter = arr[ITERATOR]();
3882
3883 iter.next = function () {
3884 return {
3885 done: safe = true
3886 };
3887 };
3888
3889 arr[ITERATOR] = function () {
3890 return iter;
3891 };
3892
3893 exec(arr);
3894 } catch (e) {}
3895
3896 return safe;
3897};
3898
3899/***/ }),
3900/* 74 */
3901/***/ (function(module, exports, __w_pdfjs_require__) {
3902
3903"use strict";
3904
3905
3906__w_pdfjs_require__(75);
3907
3908module.exports = __w_pdfjs_require__(13).Object.assign;
3909
3910/***/ }),
3911/* 75 */
3912/***/ (function(module, exports, __w_pdfjs_require__) {
3913
3914"use strict";
3915
3916
3917var $export = __w_pdfjs_require__(11);
3918
3919$export($export.S + $export.F, 'Object', {
3920 assign: __w_pdfjs_require__(76)
3921});
3922
3923/***/ }),
3924/* 76 */
3925/***/ (function(module, exports, __w_pdfjs_require__) {
3926
3927"use strict";
3928
3929
3930var DESCRIPTORS = __w_pdfjs_require__(19);
3931
3932var getKeys = __w_pdfjs_require__(59);
3933
3934var gOPS = __w_pdfjs_require__(77);
3935
3936var pIE = __w_pdfjs_require__(78);
3937
3938var toObject = __w_pdfjs_require__(66);
3939
3940var IObject = __w_pdfjs_require__(48);
3941
3942var $assign = Object.assign;
3943module.exports = !$assign || __w_pdfjs_require__(20)(function () {
3944 var A = {};
3945 var B = {};
3946 var S = Symbol();
3947 var K = 'abcdefghijklmnopqrst';
3948 A[S] = 7;
3949 K.split('').forEach(function (k) {
3950 B[k] = k;
3951 });
3952 return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
3953}) ? function assign(target, source) {
3954 var T = toObject(target);
3955 var aLen = arguments.length;
3956 var index = 1;
3957 var getSymbols = gOPS.f;
3958 var isEnum = pIE.f;
3959
3960 while (aLen > index) {
3961 var S = IObject(arguments[index++]);
3962 var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
3963 var length = keys.length;
3964 var j = 0;
3965 var key;
3966
3967 while (length > j) {
3968 key = keys[j++];
3969 if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
3970 }
3971 }
3972
3973 return T;
3974} : $assign;
3975
3976/***/ }),
3977/* 77 */
3978/***/ (function(module, exports, __w_pdfjs_require__) {
3979
3980"use strict";
3981
3982
3983exports.f = Object.getOwnPropertySymbols;
3984
3985/***/ }),
3986/* 78 */
3987/***/ (function(module, exports, __w_pdfjs_require__) {
3988
3989"use strict";
3990
3991
3992exports.f = {}.propertyIsEnumerable;
3993
3994/***/ }),
3995/* 79 */
3996/***/ (function(module, exports, __w_pdfjs_require__) {
3997
3998"use strict";
3999
4000
4001__w_pdfjs_require__(80);
4002
4003module.exports = __w_pdfjs_require__(13).Math.log2;
4004
4005/***/ }),
4006/* 80 */
4007/***/ (function(module, exports, __w_pdfjs_require__) {
4008
4009"use strict";
4010
4011
4012var $export = __w_pdfjs_require__(11);
4013
4014$export($export.S, 'Math', {
4015 log2: function log2(x) {
4016 return Math.log(x) / Math.LN2;
4017 }
4018});
4019
4020/***/ }),
4021/* 81 */
4022/***/ (function(module, exports, __w_pdfjs_require__) {
4023
4024"use strict";
4025
4026
4027__w_pdfjs_require__(82);
4028
4029module.exports = __w_pdfjs_require__(13).Number.isNaN;
4030
4031/***/ }),
4032/* 82 */
4033/***/ (function(module, exports, __w_pdfjs_require__) {
4034
4035"use strict";
4036
4037
4038var $export = __w_pdfjs_require__(11);
4039
4040$export($export.S, 'Number', {
4041 isNaN: function isNaN(number) {
4042 return number != number;
4043 }
4044});
4045
4046/***/ }),
4047/* 83 */
4048/***/ (function(module, exports, __w_pdfjs_require__) {
4049
4050"use strict";
4051
4052
4053__w_pdfjs_require__(84);
4054
4055module.exports = __w_pdfjs_require__(13).Number.isInteger;
4056
4057/***/ }),
4058/* 84 */
4059/***/ (function(module, exports, __w_pdfjs_require__) {
4060
4061"use strict";
4062
4063
4064var $export = __w_pdfjs_require__(11);
4065
4066$export($export.S, 'Number', {
4067 isInteger: __w_pdfjs_require__(85)
4068});
4069
4070/***/ }),
4071/* 85 */
4072/***/ (function(module, exports, __w_pdfjs_require__) {
4073
4074"use strict";
4075
4076
4077var isObject = __w_pdfjs_require__(17);
4078
4079var floor = Math.floor;
4080
4081module.exports = function isInteger(it) {
4082 return !isObject(it) && isFinite(it) && floor(it) === it;
4083};
4084
4085/***/ }),
4086/* 86 */
4087/***/ (function(module, exports, __w_pdfjs_require__) {
4088
4089"use strict";
4090
4091
4092__w_pdfjs_require__(87);
4093
4094__w_pdfjs_require__(52);
4095
4096__w_pdfjs_require__(88);
4097
4098__w_pdfjs_require__(91);
4099
4100__w_pdfjs_require__(104);
4101
4102__w_pdfjs_require__(105);
4103
4104module.exports = __w_pdfjs_require__(13).Promise;
4105
4106/***/ }),
4107/* 87 */
4108/***/ (function(module, exports, __w_pdfjs_require__) {
4109
4110"use strict";
4111
4112
4113var classof = __w_pdfjs_require__(72);
4114
4115var test = {};
4116test[__w_pdfjs_require__(37)('toStringTag')] = 'z';
4117
4118if (test + '' != '[object z]') {
4119 __w_pdfjs_require__(24)(Object.prototype, 'toString', function toString() {
4120 return '[object ' + classof(this) + ']';
4121 }, true);
4122}
4123
4124/***/ }),
4125/* 88 */
4126/***/ (function(module, exports, __w_pdfjs_require__) {
4127
4128"use strict";
4129
4130
4131var $iterators = __w_pdfjs_require__(89);
4132
4133var getKeys = __w_pdfjs_require__(59);
4134
4135var redefine = __w_pdfjs_require__(24);
4136
4137var global = __w_pdfjs_require__(12);
4138
4139var hide = __w_pdfjs_require__(14);
4140
4141var Iterators = __w_pdfjs_require__(55);
4142
4143var wks = __w_pdfjs_require__(37);
4144
4145var ITERATOR = wks('iterator');
4146var TO_STRING_TAG = wks('toStringTag');
4147var ArrayValues = Iterators.Array;
4148var DOMIterables = {
4149 CSSRuleList: true,
4150 CSSStyleDeclaration: false,
4151 CSSValueList: false,
4152 ClientRectList: false,
4153 DOMRectList: false,
4154 DOMStringList: false,
4155 DOMTokenList: true,
4156 DataTransferItemList: false,
4157 FileList: false,
4158 HTMLAllCollection: false,
4159 HTMLCollection: false,
4160 HTMLFormElement: false,
4161 HTMLSelectElement: false,
4162 MediaList: true,
4163 MimeTypeArray: false,
4164 NamedNodeMap: false,
4165 NodeList: true,
4166 PaintRequestList: false,
4167 Plugin: false,
4168 PluginArray: false,
4169 SVGLengthList: false,
4170 SVGNumberList: false,
4171 SVGPathSegList: false,
4172 SVGPointList: false,
4173 SVGStringList: false,
4174 SVGTransformList: false,
4175 SourceBufferList: false,
4176 StyleSheetList: true,
4177 TextTrackCueList: false,
4178 TextTrackList: false,
4179 TouchList: false
4180};
4181
4182for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
4183 var NAME = collections[i];
4184 var explicit = DOMIterables[NAME];
4185 var Collection = global[NAME];
4186 var proto = Collection && Collection.prototype;
4187 var key;
4188
4189 if (proto) {
4190 if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
4191 if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
4192 Iterators[NAME] = ArrayValues;
4193 if (explicit) for (key in $iterators) {
4194 if (!proto[key]) redefine(proto, key, $iterators[key], true);
4195 }
4196 }
4197}
4198
4199/***/ }),
4200/* 89 */
4201/***/ (function(module, exports, __w_pdfjs_require__) {
4202
4203"use strict";
4204
4205
4206var addToUnscopables = __w_pdfjs_require__(50);
4207
4208var step = __w_pdfjs_require__(90);
4209
4210var Iterators = __w_pdfjs_require__(55);
4211
4212var toIObject = __w_pdfjs_require__(47);
4213
4214module.exports = __w_pdfjs_require__(54)(Array, 'Array', function (iterated, kind) {
4215 this._t = toIObject(iterated);
4216 this._i = 0;
4217 this._k = kind;
4218}, function () {
4219 var O = this._t;
4220 var kind = this._k;
4221 var index = this._i++;
4222
4223 if (!O || index >= O.length) {
4224 this._t = undefined;
4225 return step(1);
4226 }
4227
4228 if (kind == 'keys') return step(0, index);
4229 if (kind == 'values') return step(0, O[index]);
4230 return step(0, [index, O[index]]);
4231}, 'values');
4232Iterators.Arguments = Iterators.Array;
4233addToUnscopables('keys');
4234addToUnscopables('values');
4235addToUnscopables('entries');
4236
4237/***/ }),
4238/* 90 */
4239/***/ (function(module, exports, __w_pdfjs_require__) {
4240
4241"use strict";
4242
4243
4244module.exports = function (done, value) {
4245 return {
4246 value: value,
4247 done: !!done
4248 };
4249};
4250
4251/***/ }),
4252/* 91 */
4253/***/ (function(module, exports, __w_pdfjs_require__) {
4254
4255"use strict";
4256
4257
4258var LIBRARY = __w_pdfjs_require__(29);
4259
4260var global = __w_pdfjs_require__(12);
4261
4262var ctx = __w_pdfjs_require__(30);
4263
4264var classof = __w_pdfjs_require__(72);
4265
4266var $export = __w_pdfjs_require__(11);
4267
4268var isObject = __w_pdfjs_require__(17);
4269
4270var aFunction = __w_pdfjs_require__(31);
4271
4272var anInstance = __w_pdfjs_require__(92);
4273
4274var forOf = __w_pdfjs_require__(93);
4275
4276var speciesConstructor = __w_pdfjs_require__(94);
4277
4278var task = __w_pdfjs_require__(95).set;
4279
4280var microtask = __w_pdfjs_require__(97)();
4281
4282var newPromiseCapabilityModule = __w_pdfjs_require__(98);
4283
4284var perform = __w_pdfjs_require__(99);
4285
4286var userAgent = __w_pdfjs_require__(100);
4287
4288var promiseResolve = __w_pdfjs_require__(101);
4289
4290var PROMISE = 'Promise';
4291var TypeError = global.TypeError;
4292var process = global.process;
4293var versions = process && process.versions;
4294var v8 = versions && versions.v8 || '';
4295var $Promise = global[PROMISE];
4296var isNode = classof(process) == 'process';
4297
4298var empty = function empty() {};
4299
4300var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
4301var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
4302var USE_NATIVE = !!function () {
4303 try {
4304 var promise = $Promise.resolve(1);
4305
4306 var FakePromise = (promise.constructor = {})[__w_pdfjs_require__(37)('species')] = function (exec) {
4307 exec(empty, empty);
4308 };
4309
4310 return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1;
4311 } catch (e) {}
4312}();
4313
4314var isThenable = function isThenable(it) {
4315 var then;
4316 return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
4317};
4318
4319var notify = function notify(promise, isReject) {
4320 if (promise._n) return;
4321 promise._n = true;
4322 var chain = promise._c;
4323 microtask(function () {
4324 var value = promise._v;
4325 var ok = promise._s == 1;
4326 var i = 0;
4327
4328 var run = function run(reaction) {
4329 var handler = ok ? reaction.ok : reaction.fail;
4330 var resolve = reaction.resolve;
4331 var reject = reaction.reject;
4332 var domain = reaction.domain;
4333 var result, then, exited;
4334
4335 try {
4336 if (handler) {
4337 if (!ok) {
4338 if (promise._h == 2) onHandleUnhandled(promise);
4339 promise._h = 1;
4340 }
4341
4342 if (handler === true) result = value;else {
4343 if (domain) domain.enter();
4344 result = handler(value);
4345
4346 if (domain) {
4347 domain.exit();
4348 exited = true;
4349 }
4350 }
4351
4352 if (result === reaction.promise) {
4353 reject(TypeError('Promise-chain cycle'));
4354 } else if (then = isThenable(result)) {
4355 then.call(result, resolve, reject);
4356 } else resolve(result);
4357 } else reject(value);
4358 } catch (e) {
4359 if (domain && !exited) domain.exit();
4360 reject(e);
4361 }
4362 };
4363
4364 while (chain.length > i) {
4365 run(chain[i++]);
4366 }
4367
4368 promise._c = [];
4369 promise._n = false;
4370 if (isReject && !promise._h) onUnhandled(promise);
4371 });
4372};
4373
4374var onUnhandled = function onUnhandled(promise) {
4375 task.call(global, function () {
4376 var value = promise._v;
4377 var unhandled = isUnhandled(promise);
4378 var result, handler, console;
4379
4380 if (unhandled) {
4381 result = perform(function () {
4382 if (isNode) {
4383 process.emit('unhandledRejection', value, promise);
4384 } else if (handler = global.onunhandledrejection) {
4385 handler({
4386 promise: promise,
4387 reason: value
4388 });
4389 } else if ((console = global.console) && console.error) {
4390 console.error('Unhandled promise rejection', value);
4391 }
4392 });
4393 promise._h = isNode || isUnhandled(promise) ? 2 : 1;
4394 }
4395
4396 promise._a = undefined;
4397 if (unhandled && result.e) throw result.v;
4398 });
4399};
4400
4401var isUnhandled = function isUnhandled(promise) {
4402 return promise._h !== 1 && (promise._a || promise._c).length === 0;
4403};
4404
4405var onHandleUnhandled = function onHandleUnhandled(promise) {
4406 task.call(global, function () {
4407 var handler;
4408
4409 if (isNode) {
4410 process.emit('rejectionHandled', promise);
4411 } else if (handler = global.onrejectionhandled) {
4412 handler({
4413 promise: promise,
4414 reason: promise._v
4415 });
4416 }
4417 });
4418};
4419
4420var $reject = function $reject(value) {
4421 var promise = this;
4422 if (promise._d) return;
4423 promise._d = true;
4424 promise = promise._w || promise;
4425 promise._v = value;
4426 promise._s = 2;
4427 if (!promise._a) promise._a = promise._c.slice();
4428 notify(promise, true);
4429};
4430
4431var $resolve = function $resolve(value) {
4432 var promise = this;
4433 var then;
4434 if (promise._d) return;
4435 promise._d = true;
4436 promise = promise._w || promise;
4437
4438 try {
4439 if (promise === value) throw TypeError("Promise can't be resolved itself");
4440
4441 if (then = isThenable(value)) {
4442 microtask(function () {
4443 var wrapper = {
4444 _w: promise,
4445 _d: false
4446 };
4447
4448 try {
4449 then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
4450 } catch (e) {
4451 $reject.call(wrapper, e);
4452 }
4453 });
4454 } else {
4455 promise._v = value;
4456 promise._s = 1;
4457 notify(promise, false);
4458 }
4459 } catch (e) {
4460 $reject.call({
4461 _w: promise,
4462 _d: false
4463 }, e);
4464 }
4465};
4466
4467if (!USE_NATIVE) {
4468 $Promise = function Promise(executor) {
4469 anInstance(this, $Promise, PROMISE, '_h');
4470 aFunction(executor);
4471 Internal.call(this);
4472
4473 try {
4474 executor(ctx($resolve, this, 1), ctx($reject, this, 1));
4475 } catch (err) {
4476 $reject.call(this, err);
4477 }
4478 };
4479
4480 Internal = function Promise(executor) {
4481 this._c = [];
4482 this._a = undefined;
4483 this._s = 0;
4484 this._d = false;
4485 this._v = undefined;
4486 this._h = 0;
4487 this._n = false;
4488 };
4489
4490 Internal.prototype = __w_pdfjs_require__(102)($Promise.prototype, {
4491 then: function then(onFulfilled, onRejected) {
4492 var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
4493 reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
4494 reaction.fail = typeof onRejected == 'function' && onRejected;
4495 reaction.domain = isNode ? process.domain : undefined;
4496
4497 this._c.push(reaction);
4498
4499 if (this._a) this._a.push(reaction);
4500 if (this._s) notify(this, false);
4501 return reaction.promise;
4502 },
4503 'catch': function _catch(onRejected) {
4504 return this.then(undefined, onRejected);
4505 }
4506 });
4507
4508 OwnPromiseCapability = function OwnPromiseCapability() {
4509 var promise = new Internal();
4510 this.promise = promise;
4511 this.resolve = ctx($resolve, promise, 1);
4512 this.reject = ctx($reject, promise, 1);
4513 };
4514
4515 newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) {
4516 return C === $Promise || C === Wrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);
4517 };
4518}
4519
4520$export($export.G + $export.W + $export.F * !USE_NATIVE, {
4521 Promise: $Promise
4522});
4523
4524__w_pdfjs_require__(64)($Promise, PROMISE);
4525
4526__w_pdfjs_require__(103)(PROMISE);
4527
4528Wrapper = __w_pdfjs_require__(13)[PROMISE];
4529$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
4530 reject: function reject(r) {
4531 var capability = newPromiseCapability(this);
4532 var $$reject = capability.reject;
4533 $$reject(r);
4534 return capability.promise;
4535 }
4536});
4537$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
4538 resolve: function resolve(x) {
4539 return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
4540 }
4541});
4542$export($export.S + $export.F * !(USE_NATIVE && __w_pdfjs_require__(73)(function (iter) {
4543 $Promise.all(iter)['catch'](empty);
4544})), PROMISE, {
4545 all: function all(iterable) {
4546 var C = this;
4547 var capability = newPromiseCapability(C);
4548 var resolve = capability.resolve;
4549 var reject = capability.reject;
4550 var result = perform(function () {
4551 var values = [];
4552 var index = 0;
4553 var remaining = 1;
4554 forOf(iterable, false, function (promise) {
4555 var $index = index++;
4556 var alreadyCalled = false;
4557 values.push(undefined);
4558 remaining++;
4559 C.resolve(promise).then(function (value) {
4560 if (alreadyCalled) return;
4561 alreadyCalled = true;
4562 values[$index] = value;
4563 --remaining || resolve(values);
4564 }, reject);
4565 });
4566 --remaining || resolve(values);
4567 });
4568 if (result.e) reject(result.v);
4569 return capability.promise;
4570 },
4571 race: function race(iterable) {
4572 var C = this;
4573 var capability = newPromiseCapability(C);
4574 var reject = capability.reject;
4575 var result = perform(function () {
4576 forOf(iterable, false, function (promise) {
4577 C.resolve(promise).then(capability.resolve, reject);
4578 });
4579 });
4580 if (result.e) reject(result.v);
4581 return capability.promise;
4582 }
4583});
4584
4585/***/ }),
4586/* 92 */
4587/***/ (function(module, exports, __w_pdfjs_require__) {
4588
4589"use strict";
4590
4591
4592module.exports = function (it, Constructor, name, forbiddenField) {
4593 if (!(it instanceof Constructor) || forbiddenField !== undefined && forbiddenField in it) {
4594 throw TypeError(name + ': incorrect invocation!');
4595 }
4596
4597 return it;
4598};
4599
4600/***/ }),
4601/* 93 */
4602/***/ (function(module, exports, __w_pdfjs_require__) {
4603
4604"use strict";
4605
4606
4607var ctx = __w_pdfjs_require__(30);
4608
4609var call = __w_pdfjs_require__(68);
4610
4611var isArrayIter = __w_pdfjs_require__(69);
4612
4613var anObject = __w_pdfjs_require__(16);
4614
4615var toLength = __w_pdfjs_require__(32);
4616
4617var getIterFn = __w_pdfjs_require__(71);
4618
4619var BREAK = {};
4620var RETURN = {};
4621
4622var _exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
4623 var iterFn = ITERATOR ? function () {
4624 return iterable;
4625 } : getIterFn(iterable);
4626 var f = ctx(fn, that, entries ? 2 : 1);
4627 var index = 0;
4628 var length, step, iterator, result;
4629 if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
4630 if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
4631 result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
4632 if (result === BREAK || result === RETURN) return result;
4633 } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
4634 result = call(iterator, f, step.value, entries);
4635 if (result === BREAK || result === RETURN) return result;
4636 }
4637};
4638
4639_exports.BREAK = BREAK;
4640_exports.RETURN = RETURN;
4641
4642/***/ }),
4643/* 94 */
4644/***/ (function(module, exports, __w_pdfjs_require__) {
4645
4646"use strict";
4647
4648
4649var anObject = __w_pdfjs_require__(16);
4650
4651var aFunction = __w_pdfjs_require__(31);
4652
4653var SPECIES = __w_pdfjs_require__(37)('species');
4654
4655module.exports = function (O, D) {
4656 var C = anObject(O).constructor;
4657 var S;
4658 return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
4659};
4660
4661/***/ }),
4662/* 95 */
4663/***/ (function(module, exports, __w_pdfjs_require__) {
4664
4665"use strict";
4666
4667
4668var ctx = __w_pdfjs_require__(30);
4669
4670var invoke = __w_pdfjs_require__(96);
4671
4672var html = __w_pdfjs_require__(63);
4673
4674var cel = __w_pdfjs_require__(21);
4675
4676var global = __w_pdfjs_require__(12);
4677
4678var process = global.process;
4679var setTask = global.setImmediate;
4680var clearTask = global.clearImmediate;
4681var MessageChannel = global.MessageChannel;
4682var Dispatch = global.Dispatch;
4683var counter = 0;
4684var queue = {};
4685var ONREADYSTATECHANGE = 'onreadystatechange';
4686var defer, channel, port;
4687
4688var run = function run() {
4689 var id = +this;
4690
4691 if (queue.hasOwnProperty(id)) {
4692 var fn = queue[id];
4693 delete queue[id];
4694 fn();
4695 }
4696};
4697
4698var listener = function listener(event) {
4699 run.call(event.data);
4700};
4701
4702if (!setTask || !clearTask) {
4703 setTask = function setImmediate(fn) {
4704 var args = [];
4705 var i = 1;
4706
4707 while (arguments.length > i) {
4708 args.push(arguments[i++]);
4709 }
4710
4711 queue[++counter] = function () {
4712 invoke(typeof fn == 'function' ? fn : Function(fn), args);
4713 };
4714
4715 defer(counter);
4716 return counter;
4717 };
4718
4719 clearTask = function clearImmediate(id) {
4720 delete queue[id];
4721 };
4722
4723 if (__w_pdfjs_require__(36)(process) == 'process') {
4724 defer = function defer(id) {
4725 process.nextTick(ctx(run, id, 1));
4726 };
4727 } else if (Dispatch && Dispatch.now) {
4728 defer = function defer(id) {
4729 Dispatch.now(ctx(run, id, 1));
4730 };
4731 } else if (MessageChannel) {
4732 channel = new MessageChannel();
4733 port = channel.port2;
4734 channel.port1.onmessage = listener;
4735 defer = ctx(port.postMessage, port, 1);
4736 } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
4737 defer = function defer(id) {
4738 global.postMessage(id + '', '*');
4739 };
4740
4741 global.addEventListener('message', listener, false);
4742 } else if (ONREADYSTATECHANGE in cel('script')) {
4743 defer = function defer(id) {
4744 html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
4745 html.removeChild(this);
4746 run.call(id);
4747 };
4748 };
4749 } else {
4750 defer = function defer(id) {
4751 setTimeout(ctx(run, id, 1), 0);
4752 };
4753 }
4754}
4755
4756module.exports = {
4757 set: setTask,
4758 clear: clearTask
4759};
4760
4761/***/ }),
4762/* 96 */
4763/***/ (function(module, exports, __w_pdfjs_require__) {
4764
4765"use strict";
4766
4767
4768module.exports = function (fn, args, that) {
4769 var un = that === undefined;
4770
4771 switch (args.length) {
4772 case 0:
4773 return un ? fn() : fn.call(that);
4774
4775 case 1:
4776 return un ? fn(args[0]) : fn.call(that, args[0]);
4777
4778 case 2:
4779 return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]);
4780
4781 case 3:
4782 return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]);
4783
4784 case 4:
4785 return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]);
4786 }
4787
4788 return fn.apply(that, args);
4789};
4790
4791/***/ }),
4792/* 97 */
4793/***/ (function(module, exports, __w_pdfjs_require__) {
4794
4795"use strict";
4796
4797
4798var global = __w_pdfjs_require__(12);
4799
4800var macrotask = __w_pdfjs_require__(95).set;
4801
4802var Observer = global.MutationObserver || global.WebKitMutationObserver;
4803var process = global.process;
4804var Promise = global.Promise;
4805var isNode = __w_pdfjs_require__(36)(process) == 'process';
4806
4807module.exports = function () {
4808 var head, last, notify;
4809
4810 var flush = function flush() {
4811 var parent, fn;
4812 if (isNode && (parent = process.domain)) parent.exit();
4813
4814 while (head) {
4815 fn = head.fn;
4816 head = head.next;
4817
4818 try {
4819 fn();
4820 } catch (e) {
4821 if (head) notify();else last = undefined;
4822 throw e;
4823 }
4824 }
4825
4826 last = undefined;
4827 if (parent) parent.enter();
4828 };
4829
4830 if (isNode) {
4831 notify = function notify() {
4832 process.nextTick(flush);
4833 };
4834 } else if (Observer && !(global.navigator && global.navigator.standalone)) {
4835 var toggle = true;
4836 var node = document.createTextNode('');
4837 new Observer(flush).observe(node, {
4838 characterData: true
4839 });
4840
4841 notify = function notify() {
4842 node.data = toggle = !toggle;
4843 };
4844 } else if (Promise && Promise.resolve) {
4845 var promise = Promise.resolve(undefined);
4846
4847 notify = function notify() {
4848 promise.then(flush);
4849 };
4850 } else {
4851 notify = function notify() {
4852 macrotask.call(global, flush);
4853 };
4854 }
4855
4856 return function (fn) {
4857 var task = {
4858 fn: fn,
4859 next: undefined
4860 };
4861 if (last) last.next = task;
4862
4863 if (!head) {
4864 head = task;
4865 notify();
4866 }
4867
4868 last = task;
4869 };
4870};
4871
4872/***/ }),
4873/* 98 */
4874/***/ (function(module, exports, __w_pdfjs_require__) {
4875
4876"use strict";
4877
4878
4879var aFunction = __w_pdfjs_require__(31);
4880
4881function PromiseCapability(C) {
4882 var resolve, reject;
4883 this.promise = new C(function ($$resolve, $$reject) {
4884 if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
4885 resolve = $$resolve;
4886 reject = $$reject;
4887 });
4888 this.resolve = aFunction(resolve);
4889 this.reject = aFunction(reject);
4890}
4891
4892module.exports.f = function (C) {
4893 return new PromiseCapability(C);
4894};
4895
4896/***/ }),
4897/* 99 */
4898/***/ (function(module, exports, __w_pdfjs_require__) {
4899
4900"use strict";
4901
4902
4903module.exports = function (exec) {
4904 try {
4905 return {
4906 e: false,
4907 v: exec()
4908 };
4909 } catch (e) {
4910 return {
4911 e: true,
4912 v: e
4913 };
4914 }
4915};
4916
4917/***/ }),
4918/* 100 */
4919/***/ (function(module, exports, __w_pdfjs_require__) {
4920
4921"use strict";
4922
4923
4924var global = __w_pdfjs_require__(12);
4925
4926var navigator = global.navigator;
4927module.exports = navigator && navigator.userAgent || '';
4928
4929/***/ }),
4930/* 101 */
4931/***/ (function(module, exports, __w_pdfjs_require__) {
4932
4933"use strict";
4934
4935
4936var anObject = __w_pdfjs_require__(16);
4937
4938var isObject = __w_pdfjs_require__(17);
4939
4940var newPromiseCapability = __w_pdfjs_require__(98);
4941
4942module.exports = function (C, x) {
4943 anObject(C);
4944 if (isObject(x) && x.constructor === C) return x;
4945 var promiseCapability = newPromiseCapability.f(C);
4946 var resolve = promiseCapability.resolve;
4947 resolve(x);
4948 return promiseCapability.promise;
4949};
4950
4951/***/ }),
4952/* 102 */
4953/***/ (function(module, exports, __w_pdfjs_require__) {
4954
4955"use strict";
4956
4957
4958var redefine = __w_pdfjs_require__(24);
4959
4960module.exports = function (target, src, safe) {
4961 for (var key in src) {
4962 redefine(target, key, src[key], safe);
4963 }
4964
4965 return target;
4966};
4967
4968/***/ }),
4969/* 103 */
4970/***/ (function(module, exports, __w_pdfjs_require__) {
4971
4972"use strict";
4973
4974
4975var global = __w_pdfjs_require__(12);
4976
4977var dP = __w_pdfjs_require__(15);
4978
4979var DESCRIPTORS = __w_pdfjs_require__(19);
4980
4981var SPECIES = __w_pdfjs_require__(37)('species');
4982
4983module.exports = function (KEY) {
4984 var C = global[KEY];
4985 if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
4986 configurable: true,
4987 get: function get() {
4988 return this;
4989 }
4990 });
4991};
4992
4993/***/ }),
4994/* 104 */
4995/***/ (function(module, exports, __w_pdfjs_require__) {
4996
4997"use strict";
4998
4999
5000var $export = __w_pdfjs_require__(11);
5001
5002var core = __w_pdfjs_require__(13);
5003
5004var global = __w_pdfjs_require__(12);
5005
5006var speciesConstructor = __w_pdfjs_require__(94);
5007
5008var promiseResolve = __w_pdfjs_require__(101);
5009
5010$export($export.P + $export.R, 'Promise', {
5011 'finally': function _finally(onFinally) {
5012 var C = speciesConstructor(this, core.Promise || global.Promise);
5013 var isFunction = typeof onFinally == 'function';
5014 return this.then(isFunction ? function (x) {
5015 return promiseResolve(C, onFinally()).then(function () {
5016 return x;
5017 });
5018 } : onFinally, isFunction ? function (e) {
5019 return promiseResolve(C, onFinally()).then(function () {
5020 throw e;
5021 });
5022 } : onFinally);
5023 }
5024});
5025
5026/***/ }),
5027/* 105 */
5028/***/ (function(module, exports, __w_pdfjs_require__) {
5029
5030"use strict";
5031
5032
5033var $export = __w_pdfjs_require__(11);
5034
5035var newPromiseCapability = __w_pdfjs_require__(98);
5036
5037var perform = __w_pdfjs_require__(99);
5038
5039$export($export.S, 'Promise', {
5040 'try': function _try(callbackfn) {
5041 var promiseCapability = newPromiseCapability.f(this);
5042 var result = perform(callbackfn);
5043 (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
5044 return promiseCapability.promise;
5045 }
5046});
5047
5048/***/ }),
5049/* 106 */
5050/***/ (function(module, exports, __w_pdfjs_require__) {
5051
5052"use strict";
5053
5054
5055__w_pdfjs_require__(87);
5056
5057__w_pdfjs_require__(88);
5058
5059__w_pdfjs_require__(107);
5060
5061__w_pdfjs_require__(119);
5062
5063__w_pdfjs_require__(121);
5064
5065module.exports = __w_pdfjs_require__(13).WeakMap;
5066
5067/***/ }),
5068/* 107 */
5069/***/ (function(module, exports, __w_pdfjs_require__) {
5070
5071"use strict";
5072
5073
5074var global = __w_pdfjs_require__(12);
5075
5076var each = __w_pdfjs_require__(108)(0);
5077
5078var redefine = __w_pdfjs_require__(24);
5079
5080var meta = __w_pdfjs_require__(112);
5081
5082var assign = __w_pdfjs_require__(76);
5083
5084var weak = __w_pdfjs_require__(113);
5085
5086var isObject = __w_pdfjs_require__(17);
5087
5088var validate = __w_pdfjs_require__(114);
5089
5090var NATIVE_WEAK_MAP = __w_pdfjs_require__(114);
5091
5092var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
5093var WEAK_MAP = 'WeakMap';
5094var getWeak = meta.getWeak;
5095var isExtensible = Object.isExtensible;
5096var uncaughtFrozenStore = weak.ufstore;
5097var InternalMap;
5098
5099var wrapper = function wrapper(get) {
5100 return function WeakMap() {
5101 return get(this, arguments.length > 0 ? arguments[0] : undefined);
5102 };
5103};
5104
5105var methods = {
5106 get: function get(key) {
5107 if (isObject(key)) {
5108 var data = getWeak(key);
5109 if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
5110 return data ? data[this._i] : undefined;
5111 }
5112 },
5113 set: function set(key, value) {
5114 return weak.def(validate(this, WEAK_MAP), key, value);
5115 }
5116};
5117
5118var $WeakMap = module.exports = __w_pdfjs_require__(115)(WEAK_MAP, wrapper, methods, weak, true, true);
5119
5120if (NATIVE_WEAK_MAP && IS_IE11) {
5121 InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
5122 assign(InternalMap.prototype, methods);
5123 meta.NEED = true;
5124 each(['delete', 'has', 'get', 'set'], function (key) {
5125 var proto = $WeakMap.prototype;
5126 var method = proto[key];
5127 redefine(proto, key, function (a, b) {
5128 if (isObject(a) && !isExtensible(a)) {
5129 if (!this._f) this._f = new InternalMap();
5130
5131 var result = this._f[key](a, b);
5132
5133 return key == 'set' ? this : result;
5134 }
5135
5136 return method.call(this, a, b);
5137 });
5138 });
5139}
5140
5141/***/ }),
5142/* 108 */
5143/***/ (function(module, exports, __w_pdfjs_require__) {
5144
5145"use strict";
5146
5147
5148var ctx = __w_pdfjs_require__(30);
5149
5150var IObject = __w_pdfjs_require__(48);
5151
5152var toObject = __w_pdfjs_require__(66);
5153
5154var toLength = __w_pdfjs_require__(32);
5155
5156var asc = __w_pdfjs_require__(109);
5157
5158module.exports = function (TYPE, $create) {
5159 var IS_MAP = TYPE == 1;
5160 var IS_FILTER = TYPE == 2;
5161 var IS_SOME = TYPE == 3;
5162 var IS_EVERY = TYPE == 4;
5163 var IS_FIND_INDEX = TYPE == 6;
5164 var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
5165 var create = $create || asc;
5166 return function ($this, callbackfn, that) {
5167 var O = toObject($this);
5168 var self = IObject(O);
5169 var f = ctx(callbackfn, that, 3);
5170 var length = toLength(self.length);
5171 var index = 0;
5172 var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
5173 var val, res;
5174
5175 for (; length > index; index++) {
5176 if (NO_HOLES || index in self) {
5177 val = self[index];
5178 res = f(val, index, O);
5179
5180 if (TYPE) {
5181 if (IS_MAP) result[index] = res;else if (res) switch (TYPE) {
5182 case 3:
5183 return true;
5184
5185 case 5:
5186 return val;
5187
5188 case 6:
5189 return index;
5190
5191 case 2:
5192 result.push(val);
5193 } else if (IS_EVERY) return false;
5194 }
5195 }
5196 }
5197
5198 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
5199 };
5200};
5201
5202/***/ }),
5203/* 109 */
5204/***/ (function(module, exports, __w_pdfjs_require__) {
5205
5206"use strict";
5207
5208
5209var speciesConstructor = __w_pdfjs_require__(110);
5210
5211module.exports = function (original, length) {
5212 return new (speciesConstructor(original))(length);
5213};
5214
5215/***/ }),
5216/* 110 */
5217/***/ (function(module, exports, __w_pdfjs_require__) {
5218
5219"use strict";
5220
5221
5222var isObject = __w_pdfjs_require__(17);
5223
5224var isArray = __w_pdfjs_require__(111);
5225
5226var SPECIES = __w_pdfjs_require__(37)('species');
5227
5228module.exports = function (original) {
5229 var C;
5230
5231 if (isArray(original)) {
5232 C = original.constructor;
5233 if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
5234
5235 if (isObject(C)) {
5236 C = C[SPECIES];
5237 if (C === null) C = undefined;
5238 }
5239 }
5240
5241 return C === undefined ? Array : C;
5242};
5243
5244/***/ }),
5245/* 111 */
5246/***/ (function(module, exports, __w_pdfjs_require__) {
5247
5248"use strict";
5249
5250
5251var cof = __w_pdfjs_require__(36);
5252
5253module.exports = Array.isArray || function isArray(arg) {
5254 return cof(arg) == 'Array';
5255};
5256
5257/***/ }),
5258/* 112 */
5259/***/ (function(module, exports, __w_pdfjs_require__) {
5260
5261"use strict";
5262
5263
5264function _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); }
5265
5266var META = __w_pdfjs_require__(26)('meta');
5267
5268var isObject = __w_pdfjs_require__(17);
5269
5270var has = __w_pdfjs_require__(25);
5271
5272var setDesc = __w_pdfjs_require__(15).f;
5273
5274var id = 0;
5275
5276var isExtensible = Object.isExtensible || function () {
5277 return true;
5278};
5279
5280var FREEZE = !__w_pdfjs_require__(20)(function () {
5281 return isExtensible(Object.preventExtensions({}));
5282});
5283
5284var setMeta = function setMeta(it) {
5285 setDesc(it, META, {
5286 value: {
5287 i: 'O' + ++id,
5288 w: {}
5289 }
5290 });
5291};
5292
5293var fastKey = function fastKey(it, create) {
5294 if (!isObject(it)) return _typeof(it) == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
5295
5296 if (!has(it, META)) {
5297 if (!isExtensible(it)) return 'F';
5298 if (!create) return 'E';
5299 setMeta(it);
5300 }
5301
5302 return it[META].i;
5303};
5304
5305var getWeak = function getWeak(it, create) {
5306 if (!has(it, META)) {
5307 if (!isExtensible(it)) return true;
5308 if (!create) return false;
5309 setMeta(it);
5310 }
5311
5312 return it[META].w;
5313};
5314
5315var onFreeze = function onFreeze(it) {
5316 if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
5317 return it;
5318};
5319
5320var meta = module.exports = {
5321 KEY: META,
5322 NEED: false,
5323 fastKey: fastKey,
5324 getWeak: getWeak,
5325 onFreeze: onFreeze
5326};
5327
5328/***/ }),
5329/* 113 */
5330/***/ (function(module, exports, __w_pdfjs_require__) {
5331
5332"use strict";
5333
5334
5335var redefineAll = __w_pdfjs_require__(102);
5336
5337var getWeak = __w_pdfjs_require__(112).getWeak;
5338
5339var anObject = __w_pdfjs_require__(16);
5340
5341var isObject = __w_pdfjs_require__(17);
5342
5343var anInstance = __w_pdfjs_require__(92);
5344
5345var forOf = __w_pdfjs_require__(93);
5346
5347var createArrayMethod = __w_pdfjs_require__(108);
5348
5349var $has = __w_pdfjs_require__(25);
5350
5351var validate = __w_pdfjs_require__(114);
5352
5353var arrayFind = createArrayMethod(5);
5354var arrayFindIndex = createArrayMethod(6);
5355var id = 0;
5356
5357var uncaughtFrozenStore = function uncaughtFrozenStore(that) {
5358 return that._l || (that._l = new UncaughtFrozenStore());
5359};
5360
5361var UncaughtFrozenStore = function UncaughtFrozenStore() {
5362 this.a = [];
5363};
5364
5365var findUncaughtFrozen = function findUncaughtFrozen(store, key) {
5366 return arrayFind(store.a, function (it) {
5367 return it[0] === key;
5368 });
5369};
5370
5371UncaughtFrozenStore.prototype = {
5372 get: function get(key) {
5373 var entry = findUncaughtFrozen(this, key);
5374 if (entry) return entry[1];
5375 },
5376 has: function has(key) {
5377 return !!findUncaughtFrozen(this, key);
5378 },
5379 set: function set(key, value) {
5380 var entry = findUncaughtFrozen(this, key);
5381 if (entry) entry[1] = value;else this.a.push([key, value]);
5382 },
5383 'delete': function _delete(key) {
5384 var index = arrayFindIndex(this.a, function (it) {
5385 return it[0] === key;
5386 });
5387 if (~index) this.a.splice(index, 1);
5388 return !!~index;
5389 }
5390};
5391module.exports = {
5392 getConstructor: function getConstructor(wrapper, NAME, IS_MAP, ADDER) {
5393 var C = wrapper(function (that, iterable) {
5394 anInstance(that, C, NAME, '_i');
5395 that._t = NAME;
5396 that._i = id++;
5397 that._l = undefined;
5398 if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
5399 });
5400 redefineAll(C.prototype, {
5401 'delete': function _delete(key) {
5402 if (!isObject(key)) return false;
5403 var data = getWeak(key);
5404 if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
5405 return data && $has(data, this._i) && delete data[this._i];
5406 },
5407 has: function has(key) {
5408 if (!isObject(key)) return false;
5409 var data = getWeak(key);
5410 if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
5411 return data && $has(data, this._i);
5412 }
5413 });
5414 return C;
5415 },
5416 def: function def(that, key, value) {
5417 var data = getWeak(anObject(key), true);
5418 if (data === true) uncaughtFrozenStore(that).set(key, value);else data[that._i] = value;
5419 return that;
5420 },
5421 ufstore: uncaughtFrozenStore
5422};
5423
5424/***/ }),
5425/* 114 */
5426/***/ (function(module, exports, __w_pdfjs_require__) {
5427
5428"use strict";
5429
5430
5431var isObject = __w_pdfjs_require__(17);
5432
5433module.exports = function (it, TYPE) {
5434 if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
5435 return it;
5436};
5437
5438/***/ }),
5439/* 115 */
5440/***/ (function(module, exports, __w_pdfjs_require__) {
5441
5442"use strict";
5443
5444
5445var global = __w_pdfjs_require__(12);
5446
5447var $export = __w_pdfjs_require__(11);
5448
5449var redefine = __w_pdfjs_require__(24);
5450
5451var redefineAll = __w_pdfjs_require__(102);
5452
5453var meta = __w_pdfjs_require__(112);
5454
5455var forOf = __w_pdfjs_require__(93);
5456
5457var anInstance = __w_pdfjs_require__(92);
5458
5459var isObject = __w_pdfjs_require__(17);
5460
5461var fails = __w_pdfjs_require__(20);
5462
5463var $iterDetect = __w_pdfjs_require__(73);
5464
5465var setToStringTag = __w_pdfjs_require__(64);
5466
5467var inheritIfRequired = __w_pdfjs_require__(116);
5468
5469module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
5470 var Base = global[NAME];
5471 var C = Base;
5472 var ADDER = IS_MAP ? 'set' : 'add';
5473 var proto = C && C.prototype;
5474 var O = {};
5475
5476 var fixMethod = function fixMethod(KEY) {
5477 var fn = proto[KEY];
5478 redefine(proto, KEY, KEY == 'delete' ? function (a) {
5479 return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
5480 } : KEY == 'has' ? function has(a) {
5481 return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
5482 } : KEY == 'get' ? function get(a) {
5483 return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
5484 } : KEY == 'add' ? function add(a) {
5485 fn.call(this, a === 0 ? 0 : a);
5486 return this;
5487 } : function set(a, b) {
5488 fn.call(this, a === 0 ? 0 : a, b);
5489 return this;
5490 });
5491 };
5492
5493 if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
5494 new C().entries().next();
5495 }))) {
5496 C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
5497 redefineAll(C.prototype, methods);
5498 meta.NEED = true;
5499 } else {
5500 var instance = new C();
5501 var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
5502 var THROWS_ON_PRIMITIVES = fails(function () {
5503 instance.has(1);
5504 });
5505 var ACCEPT_ITERABLES = $iterDetect(function (iter) {
5506 new C(iter);
5507 });
5508 var BUGGY_ZERO = !IS_WEAK && fails(function () {
5509 var $instance = new C();
5510 var index = 5;
5511
5512 while (index--) {
5513 $instance[ADDER](index, index);
5514 }
5515
5516 return !$instance.has(-0);
5517 });
5518
5519 if (!ACCEPT_ITERABLES) {
5520 C = wrapper(function (target, iterable) {
5521 anInstance(target, C, NAME);
5522 var that = inheritIfRequired(new Base(), target, C);
5523 if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
5524 return that;
5525 });
5526 C.prototype = proto;
5527 proto.constructor = C;
5528 }
5529
5530 if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
5531 fixMethod('delete');
5532 fixMethod('has');
5533 IS_MAP && fixMethod('get');
5534 }
5535
5536 if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
5537 if (IS_WEAK && proto.clear) delete proto.clear;
5538 }
5539
5540 setToStringTag(C, NAME);
5541 O[NAME] = C;
5542 $export($export.G + $export.W + $export.F * (C != Base), O);
5543 if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
5544 return C;
5545};
5546
5547/***/ }),
5548/* 116 */
5549/***/ (function(module, exports, __w_pdfjs_require__) {
5550
5551"use strict";
5552
5553
5554var isObject = __w_pdfjs_require__(17);
5555
5556var setPrototypeOf = __w_pdfjs_require__(117).set;
5557
5558module.exports = function (that, target, C) {
5559 var S = target.constructor;
5560 var P;
5561
5562 if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
5563 setPrototypeOf(that, P);
5564 }
5565
5566 return that;
5567};
5568
5569/***/ }),
5570/* 117 */
5571/***/ (function(module, exports, __w_pdfjs_require__) {
5572
5573"use strict";
5574
5575
5576var isObject = __w_pdfjs_require__(17);
5577
5578var anObject = __w_pdfjs_require__(16);
5579
5580var check = function check(O, proto) {
5581 anObject(O);
5582 if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
5583};
5584
5585module.exports = {
5586 set: Object.setPrototypeOf || ('__proto__' in {} ? function (test, buggy, set) {
5587 try {
5588 set = __w_pdfjs_require__(30)(Function.call, __w_pdfjs_require__(118).f(Object.prototype, '__proto__').set, 2);
5589 set(test, []);
5590 buggy = !(test instanceof Array);
5591 } catch (e) {
5592 buggy = true;
5593 }
5594
5595 return function setPrototypeOf(O, proto) {
5596 check(O, proto);
5597 if (buggy) O.__proto__ = proto;else set(O, proto);
5598 return O;
5599 };
5600 }({}, false) : undefined),
5601 check: check
5602};
5603
5604/***/ }),
5605/* 118 */
5606/***/ (function(module, exports, __w_pdfjs_require__) {
5607
5608"use strict";
5609
5610
5611var pIE = __w_pdfjs_require__(78);
5612
5613var createDesc = __w_pdfjs_require__(23);
5614
5615var toIObject = __w_pdfjs_require__(47);
5616
5617var toPrimitive = __w_pdfjs_require__(22);
5618
5619var has = __w_pdfjs_require__(25);
5620
5621var IE8_DOM_DEFINE = __w_pdfjs_require__(18);
5622
5623var gOPD = Object.getOwnPropertyDescriptor;
5624exports.f = __w_pdfjs_require__(19) ? gOPD : function getOwnPropertyDescriptor(O, P) {
5625 O = toIObject(O);
5626 P = toPrimitive(P, true);
5627 if (IE8_DOM_DEFINE) try {
5628 return gOPD(O, P);
5629 } catch (e) {}
5630 if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
5631};
5632
5633/***/ }),
5634/* 119 */
5635/***/ (function(module, exports, __w_pdfjs_require__) {
5636
5637"use strict";
5638
5639
5640__w_pdfjs_require__(120)('WeakMap');
5641
5642/***/ }),
5643/* 120 */
5644/***/ (function(module, exports, __w_pdfjs_require__) {
5645
5646"use strict";
5647
5648
5649var $export = __w_pdfjs_require__(11);
5650
5651module.exports = function (COLLECTION) {
5652 $export($export.S, COLLECTION, {
5653 of: function of() {
5654 var length = arguments.length;
5655 var A = new Array(length);
5656
5657 while (length--) {
5658 A[length] = arguments[length];
5659 }
5660
5661 return new this(A);
5662 }
5663 });
5664};
5665
5666/***/ }),
5667/* 121 */
5668/***/ (function(module, exports, __w_pdfjs_require__) {
5669
5670"use strict";
5671
5672
5673__w_pdfjs_require__(122)('WeakMap');
5674
5675/***/ }),
5676/* 122 */
5677/***/ (function(module, exports, __w_pdfjs_require__) {
5678
5679"use strict";
5680
5681
5682var $export = __w_pdfjs_require__(11);
5683
5684var aFunction = __w_pdfjs_require__(31);
5685
5686var ctx = __w_pdfjs_require__(30);
5687
5688var forOf = __w_pdfjs_require__(93);
5689
5690module.exports = function (COLLECTION) {
5691 $export($export.S, COLLECTION, {
5692 from: function from(source) {
5693 var mapFn = arguments[1];
5694 var mapping, A, n, cb;
5695 aFunction(this);
5696 mapping = mapFn !== undefined;
5697 if (mapping) aFunction(mapFn);
5698 if (source == undefined) return new this();
5699 A = [];
5700
5701 if (mapping) {
5702 n = 0;
5703 cb = ctx(mapFn, arguments[2], 2);
5704 forOf(source, false, function (nextItem) {
5705 A.push(cb(nextItem, n++));
5706 });
5707 } else {
5708 forOf(source, false, A.push, A);
5709 }
5710
5711 return new this(A);
5712 }
5713 });
5714};
5715
5716/***/ }),
5717/* 123 */
5718/***/ (function(module, exports, __w_pdfjs_require__) {
5719
5720"use strict";
5721
5722
5723__w_pdfjs_require__(87);
5724
5725__w_pdfjs_require__(88);
5726
5727__w_pdfjs_require__(124);
5728
5729__w_pdfjs_require__(125);
5730
5731__w_pdfjs_require__(126);
5732
5733module.exports = __w_pdfjs_require__(13).WeakSet;
5734
5735/***/ }),
5736/* 124 */
5737/***/ (function(module, exports, __w_pdfjs_require__) {
5738
5739"use strict";
5740
5741
5742var weak = __w_pdfjs_require__(113);
5743
5744var validate = __w_pdfjs_require__(114);
5745
5746var WEAK_SET = 'WeakSet';
5747
5748__w_pdfjs_require__(115)(WEAK_SET, function (get) {
5749 return function WeakSet() {
5750 return get(this, arguments.length > 0 ? arguments[0] : undefined);
5751 };
5752}, {
5753 add: function add(value) {
5754 return weak.def(validate(this, WEAK_SET), value, true);
5755 }
5756}, weak, false, true);
5757
5758/***/ }),
5759/* 125 */
5760/***/ (function(module, exports, __w_pdfjs_require__) {
5761
5762"use strict";
5763
5764
5765__w_pdfjs_require__(120)('WeakSet');
5766
5767/***/ }),
5768/* 126 */
5769/***/ (function(module, exports, __w_pdfjs_require__) {
5770
5771"use strict";
5772
5773
5774__w_pdfjs_require__(122)('WeakSet');
5775
5776/***/ }),
5777/* 127 */
5778/***/ (function(module, exports, __w_pdfjs_require__) {
5779
5780"use strict";
5781
5782
5783__w_pdfjs_require__(128);
5784
5785module.exports = __w_pdfjs_require__(13).String.codePointAt;
5786
5787/***/ }),
5788/* 128 */
5789/***/ (function(module, exports, __w_pdfjs_require__) {
5790
5791"use strict";
5792
5793
5794var $export = __w_pdfjs_require__(11);
5795
5796var $at = __w_pdfjs_require__(53)(false);
5797
5798$export($export.P, 'String', {
5799 codePointAt: function codePointAt(pos) {
5800 return $at(this, pos);
5801 }
5802});
5803
5804/***/ }),
5805/* 129 */
5806/***/ (function(module, exports, __w_pdfjs_require__) {
5807
5808"use strict";
5809
5810
5811__w_pdfjs_require__(130);
5812
5813module.exports = __w_pdfjs_require__(13).String.fromCodePoint;
5814
5815/***/ }),
5816/* 130 */
5817/***/ (function(module, exports, __w_pdfjs_require__) {
5818
5819"use strict";
5820
5821
5822var $export = __w_pdfjs_require__(11);
5823
5824var toAbsoluteIndex = __w_pdfjs_require__(49);
5825
5826var fromCharCode = String.fromCharCode;
5827var $fromCodePoint = String.fromCodePoint;
5828$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
5829 fromCodePoint: function fromCodePoint(x) {
5830 var res = [];
5831 var aLen = arguments.length;
5832 var i = 0;
5833 var code;
5834
5835 while (aLen > i) {
5836 code = +arguments[i++];
5837 if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
5838 res.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00));
5839 }
5840
5841 return res.join('');
5842 }
5843});
5844
5845/***/ }),
5846/* 131 */
5847/***/ (function(module, exports, __w_pdfjs_require__) {
5848
5849"use strict";
5850
5851
5852__w_pdfjs_require__(132);
5853
5854__w_pdfjs_require__(87);
5855
5856module.exports = __w_pdfjs_require__(13).Symbol;
5857
5858/***/ }),
5859/* 132 */
5860/***/ (function(module, exports, __w_pdfjs_require__) {
5861
5862"use strict";
5863
5864
5865function _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); }
5866
5867var global = __w_pdfjs_require__(12);
5868
5869var has = __w_pdfjs_require__(25);
5870
5871var DESCRIPTORS = __w_pdfjs_require__(19);
5872
5873var $export = __w_pdfjs_require__(11);
5874
5875var redefine = __w_pdfjs_require__(24);
5876
5877var META = __w_pdfjs_require__(112).KEY;
5878
5879var $fails = __w_pdfjs_require__(20);
5880
5881var shared = __w_pdfjs_require__(28);
5882
5883var setToStringTag = __w_pdfjs_require__(64);
5884
5885var uid = __w_pdfjs_require__(26);
5886
5887var wks = __w_pdfjs_require__(37);
5888
5889var wksExt = __w_pdfjs_require__(133);
5890
5891var wksDefine = __w_pdfjs_require__(134);
5892
5893var enumKeys = __w_pdfjs_require__(135);
5894
5895var isArray = __w_pdfjs_require__(111);
5896
5897var anObject = __w_pdfjs_require__(16);
5898
5899var isObject = __w_pdfjs_require__(17);
5900
5901var toObject = __w_pdfjs_require__(66);
5902
5903var toIObject = __w_pdfjs_require__(47);
5904
5905var toPrimitive = __w_pdfjs_require__(22);
5906
5907var createDesc = __w_pdfjs_require__(23);
5908
5909var _create = __w_pdfjs_require__(57);
5910
5911var gOPNExt = __w_pdfjs_require__(136);
5912
5913var $GOPD = __w_pdfjs_require__(118);
5914
5915var $GOPS = __w_pdfjs_require__(77);
5916
5917var $DP = __w_pdfjs_require__(15);
5918
5919var $keys = __w_pdfjs_require__(59);
5920
5921var gOPD = $GOPD.f;
5922var dP = $DP.f;
5923var gOPN = gOPNExt.f;
5924var $Symbol = global.Symbol;
5925var $JSON = global.JSON;
5926
5927var _stringify = $JSON && $JSON.stringify;
5928
5929var PROTOTYPE = 'prototype';
5930var HIDDEN = wks('_hidden');
5931var TO_PRIMITIVE = wks('toPrimitive');
5932var isEnum = {}.propertyIsEnumerable;
5933var SymbolRegistry = shared('symbol-registry');
5934var AllSymbols = shared('symbols');
5935var OPSymbols = shared('op-symbols');
5936var ObjectProto = Object[PROTOTYPE];
5937var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
5938var QObject = global.QObject;
5939var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
5940var setSymbolDesc = DESCRIPTORS && $fails(function () {
5941 return _create(dP({}, 'a', {
5942 get: function get() {
5943 return dP(this, 'a', {
5944 value: 7
5945 }).a;
5946 }
5947 })).a != 7;
5948}) ? function (it, key, D) {
5949 var protoDesc = gOPD(ObjectProto, key);
5950 if (protoDesc) delete ObjectProto[key];
5951 dP(it, key, D);
5952 if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
5953} : dP;
5954
5955var wrap = function wrap(tag) {
5956 var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
5957
5958 sym._k = tag;
5959 return sym;
5960};
5961
5962var isSymbol = USE_NATIVE && _typeof($Symbol.iterator) == 'symbol' ? function (it) {
5963 return _typeof(it) == 'symbol';
5964} : function (it) {
5965 return it instanceof $Symbol;
5966};
5967
5968var $defineProperty = function defineProperty(it, key, D) {
5969 if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
5970 anObject(it);
5971 key = toPrimitive(key, true);
5972 anObject(D);
5973
5974 if (has(AllSymbols, key)) {
5975 if (!D.enumerable) {
5976 if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
5977 it[HIDDEN][key] = true;
5978 } else {
5979 if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
5980 D = _create(D, {
5981 enumerable: createDesc(0, false)
5982 });
5983 }
5984
5985 return setSymbolDesc(it, key, D);
5986 }
5987
5988 return dP(it, key, D);
5989};
5990
5991var $defineProperties = function defineProperties(it, P) {
5992 anObject(it);
5993 var keys = enumKeys(P = toIObject(P));
5994 var i = 0;
5995 var l = keys.length;
5996 var key;
5997
5998 while (l > i) {
5999 $defineProperty(it, key = keys[i++], P[key]);
6000 }
6001
6002 return it;
6003};
6004
6005var $create = function create(it, P) {
6006 return P === undefined ? _create(it) : $defineProperties(_create(it), P);
6007};
6008
6009var $propertyIsEnumerable = function propertyIsEnumerable(key) {
6010 var E = isEnum.call(this, key = toPrimitive(key, true));
6011 if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
6012 return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
6013};
6014
6015var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
6016 it = toIObject(it);
6017 key = toPrimitive(key, true);
6018 if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
6019 var D = gOPD(it, key);
6020 if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
6021 return D;
6022};
6023
6024var $getOwnPropertyNames = function getOwnPropertyNames(it) {
6025 var names = gOPN(toIObject(it));
6026 var result = [];
6027 var i = 0;
6028 var key;
6029
6030 while (names.length > i) {
6031 if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
6032 }
6033
6034 return result;
6035};
6036
6037var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
6038 var IS_OP = it === ObjectProto;
6039 var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
6040 var result = [];
6041 var i = 0;
6042 var key;
6043
6044 while (names.length > i) {
6045 if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
6046 }
6047
6048 return result;
6049};
6050
6051if (!USE_NATIVE) {
6052 $Symbol = function _Symbol() {
6053 if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
6054 var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
6055
6056 var $set = function $set(value) {
6057 if (this === ObjectProto) $set.call(OPSymbols, value);
6058 if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
6059 setSymbolDesc(this, tag, createDesc(1, value));
6060 };
6061
6062 if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
6063 configurable: true,
6064 set: $set
6065 });
6066 return wrap(tag);
6067 };
6068
6069 redefine($Symbol[PROTOTYPE], 'toString', function toString() {
6070 return this._k;
6071 });
6072 $GOPD.f = $getOwnPropertyDescriptor;
6073 $DP.f = $defineProperty;
6074 __w_pdfjs_require__(137).f = gOPNExt.f = $getOwnPropertyNames;
6075 __w_pdfjs_require__(78).f = $propertyIsEnumerable;
6076 $GOPS.f = $getOwnPropertySymbols;
6077
6078 if (DESCRIPTORS && !__w_pdfjs_require__(29)) {
6079 redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
6080 }
6081
6082 wksExt.f = function (name) {
6083 return wrap(wks(name));
6084 };
6085}
6086
6087$export($export.G + $export.W + $export.F * !USE_NATIVE, {
6088 Symbol: $Symbol
6089});
6090
6091for (var es6Symbols = 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {
6092 wks(es6Symbols[j++]);
6093}
6094
6095for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {
6096 wksDefine(wellKnownSymbols[k++]);
6097}
6098
6099$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
6100 'for': function _for(key) {
6101 return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);
6102 },
6103 keyFor: function keyFor(sym) {
6104 if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
6105
6106 for (var key in SymbolRegistry) {
6107 if (SymbolRegistry[key] === sym) return key;
6108 }
6109 },
6110 useSetter: function useSetter() {
6111 setter = true;
6112 },
6113 useSimple: function useSimple() {
6114 setter = false;
6115 }
6116});
6117$export($export.S + $export.F * !USE_NATIVE, 'Object', {
6118 create: $create,
6119 defineProperty: $defineProperty,
6120 defineProperties: $defineProperties,
6121 getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
6122 getOwnPropertyNames: $getOwnPropertyNames,
6123 getOwnPropertySymbols: $getOwnPropertySymbols
6124});
6125var FAILS_ON_PRIMITIVES = $fails(function () {
6126 $GOPS.f(1);
6127});
6128$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
6129 getOwnPropertySymbols: function getOwnPropertySymbols(it) {
6130 return $GOPS.f(toObject(it));
6131 }
6132});
6133$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
6134 var S = $Symbol();
6135 return _stringify([S]) != '[null]' || _stringify({
6136 a: S
6137 }) != '{}' || _stringify(Object(S)) != '{}';
6138})), 'JSON', {
6139 stringify: function stringify(it) {
6140 var args = [it];
6141 var i = 1;
6142 var replacer, $replacer;
6143
6144 while (arguments.length > i) {
6145 args.push(arguments[i++]);
6146 }
6147
6148 $replacer = replacer = args[1];
6149 if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
6150 if (!isArray(replacer)) replacer = function replacer(key, value) {
6151 if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
6152 if (!isSymbol(value)) return value;
6153 };
6154 args[1] = replacer;
6155 return _stringify.apply($JSON, args);
6156 }
6157});
6158$Symbol[PROTOTYPE][TO_PRIMITIVE] || __w_pdfjs_require__(14)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
6159setToStringTag($Symbol, 'Symbol');
6160setToStringTag(Math, 'Math', true);
6161setToStringTag(global.JSON, 'JSON', true);
6162
6163/***/ }),
6164/* 133 */
6165/***/ (function(module, exports, __w_pdfjs_require__) {
6166
6167"use strict";
6168
6169
6170exports.f = __w_pdfjs_require__(37);
6171
6172/***/ }),
6173/* 134 */
6174/***/ (function(module, exports, __w_pdfjs_require__) {
6175
6176"use strict";
6177
6178
6179var global = __w_pdfjs_require__(12);
6180
6181var core = __w_pdfjs_require__(13);
6182
6183var LIBRARY = __w_pdfjs_require__(29);
6184
6185var wksExt = __w_pdfjs_require__(133);
6186
6187var defineProperty = __w_pdfjs_require__(15).f;
6188
6189module.exports = function (name) {
6190 var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
6191 if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, {
6192 value: wksExt.f(name)
6193 });
6194};
6195
6196/***/ }),
6197/* 135 */
6198/***/ (function(module, exports, __w_pdfjs_require__) {
6199
6200"use strict";
6201
6202
6203var getKeys = __w_pdfjs_require__(59);
6204
6205var gOPS = __w_pdfjs_require__(77);
6206
6207var pIE = __w_pdfjs_require__(78);
6208
6209module.exports = function (it) {
6210 var result = getKeys(it);
6211 var getSymbols = gOPS.f;
6212
6213 if (getSymbols) {
6214 var symbols = getSymbols(it);
6215 var isEnum = pIE.f;
6216 var i = 0;
6217 var key;
6218
6219 while (symbols.length > i) {
6220 if (isEnum.call(it, key = symbols[i++])) result.push(key);
6221 }
6222 }
6223
6224 return result;
6225};
6226
6227/***/ }),
6228/* 136 */
6229/***/ (function(module, exports, __w_pdfjs_require__) {
6230
6231"use strict";
6232
6233
6234function _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); }
6235
6236var toIObject = __w_pdfjs_require__(47);
6237
6238var gOPN = __w_pdfjs_require__(137).f;
6239
6240var toString = {}.toString;
6241var windowNames = (typeof window === "undefined" ? "undefined" : _typeof(window)) == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
6242
6243var getWindowNames = function getWindowNames(it) {
6244 try {
6245 return gOPN(it);
6246 } catch (e) {
6247 return windowNames.slice();
6248 }
6249};
6250
6251module.exports.f = function getOwnPropertyNames(it) {
6252 return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
6253};
6254
6255/***/ }),
6256/* 137 */
6257/***/ (function(module, exports, __w_pdfjs_require__) {
6258
6259"use strict";
6260
6261
6262var $keys = __w_pdfjs_require__(60);
6263
6264var hiddenKeys = __w_pdfjs_require__(62).concat('length', 'prototype');
6265
6266exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
6267 return $keys(O, hiddenKeys);
6268};
6269
6270/***/ }),
6271/* 138 */
6272/***/ (function(module, exports, __w_pdfjs_require__) {
6273
6274"use strict";
6275
6276
6277__w_pdfjs_require__(139);
6278
6279module.exports = __w_pdfjs_require__(13).String.padStart;
6280
6281/***/ }),
6282/* 139 */
6283/***/ (function(module, exports, __w_pdfjs_require__) {
6284
6285"use strict";
6286
6287
6288var $export = __w_pdfjs_require__(11);
6289
6290var $pad = __w_pdfjs_require__(140);
6291
6292var userAgent = __w_pdfjs_require__(100);
6293
6294var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
6295$export($export.P + $export.F * WEBKIT_BUG, 'String', {
6296 padStart: function padStart(maxLength) {
6297 return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
6298 }
6299});
6300
6301/***/ }),
6302/* 140 */
6303/***/ (function(module, exports, __w_pdfjs_require__) {
6304
6305"use strict";
6306
6307
6308var toLength = __w_pdfjs_require__(32);
6309
6310var repeat = __w_pdfjs_require__(141);
6311
6312var defined = __w_pdfjs_require__(38);
6313
6314module.exports = function (that, maxLength, fillString, left) {
6315 var S = String(defined(that));
6316 var stringLength = S.length;
6317 var fillStr = fillString === undefined ? ' ' : String(fillString);
6318 var intMaxLength = toLength(maxLength);
6319 if (intMaxLength <= stringLength || fillStr == '') return S;
6320 var fillLen = intMaxLength - stringLength;
6321 var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
6322 if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
6323 return left ? stringFiller + S : S + stringFiller;
6324};
6325
6326/***/ }),
6327/* 141 */
6328/***/ (function(module, exports, __w_pdfjs_require__) {
6329
6330"use strict";
6331
6332
6333var toInteger = __w_pdfjs_require__(33);
6334
6335var defined = __w_pdfjs_require__(38);
6336
6337module.exports = function repeat(count) {
6338 var str = String(defined(this));
6339 var res = '';
6340 var n = toInteger(count);
6341 if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
6342
6343 for (; n > 0; (n >>>= 1) && (str += str)) {
6344 if (n & 1) res += str;
6345 }
6346
6347 return res;
6348};
6349
6350/***/ }),
6351/* 142 */
6352/***/ (function(module, exports, __w_pdfjs_require__) {
6353
6354"use strict";
6355
6356
6357__w_pdfjs_require__(143);
6358
6359module.exports = __w_pdfjs_require__(13).String.padEnd;
6360
6361/***/ }),
6362/* 143 */
6363/***/ (function(module, exports, __w_pdfjs_require__) {
6364
6365"use strict";
6366
6367
6368var $export = __w_pdfjs_require__(11);
6369
6370var $pad = __w_pdfjs_require__(140);
6371
6372var userAgent = __w_pdfjs_require__(100);
6373
6374var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
6375$export($export.P + $export.F * WEBKIT_BUG, 'String', {
6376 padEnd: function padEnd(maxLength) {
6377 return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
6378 }
6379});
6380
6381/***/ }),
6382/* 144 */
6383/***/ (function(module, exports, __w_pdfjs_require__) {
6384
6385"use strict";
6386
6387
6388__w_pdfjs_require__(145);
6389
6390module.exports = __w_pdfjs_require__(13).Object.values;
6391
6392/***/ }),
6393/* 145 */
6394/***/ (function(module, exports, __w_pdfjs_require__) {
6395
6396"use strict";
6397
6398
6399var $export = __w_pdfjs_require__(11);
6400
6401var $values = __w_pdfjs_require__(146)(false);
6402
6403$export($export.S, 'Object', {
6404 values: function values(it) {
6405 return $values(it);
6406 }
6407});
6408
6409/***/ }),
6410/* 146 */
6411/***/ (function(module, exports, __w_pdfjs_require__) {
6412
6413"use strict";
6414
6415
6416var DESCRIPTORS = __w_pdfjs_require__(19);
6417
6418var getKeys = __w_pdfjs_require__(59);
6419
6420var toIObject = __w_pdfjs_require__(47);
6421
6422var isEnum = __w_pdfjs_require__(78).f;
6423
6424module.exports = function (isEntries) {
6425 return function (it) {
6426 var O = toIObject(it);
6427 var keys = getKeys(O);
6428 var length = keys.length;
6429 var i = 0;
6430 var result = [];
6431 var key;
6432
6433 while (length > i) {
6434 key = keys[i++];
6435
6436 if (!DESCRIPTORS || isEnum.call(O, key)) {
6437 result.push(isEntries ? [key, O[key]] : O[key]);
6438 }
6439 }
6440
6441 return result;
6442 };
6443};
6444
6445/***/ }),
6446/* 147 */
6447/***/ (function(module, exports, __w_pdfjs_require__) {
6448
6449"use strict";
6450
6451
6452{
6453 var isReadableStreamSupported = false;
6454
6455 if (typeof ReadableStream !== 'undefined') {
6456 try {
6457 new ReadableStream({
6458 start: function start(controller) {
6459 controller.close();
6460 }
6461 });
6462 isReadableStreamSupported = true;
6463 } catch (e) {}
6464 }
6465
6466 if (isReadableStreamSupported) {
6467 exports.ReadableStream = ReadableStream;
6468 } else {
6469 exports.ReadableStream = __w_pdfjs_require__(148).ReadableStream;
6470 }
6471}
6472
6473/***/ }),
6474/* 148 */
6475/***/ (function(module, exports, __w_pdfjs_require__) {
6476
6477"use strict";
6478
6479
6480function _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); }
6481
6482(function (e, a) {
6483 for (var i in a) {
6484 e[i] = a[i];
6485 }
6486})(exports, function (modules) {
6487 var installedModules = {};
6488
6489 function __w_pdfjs_require__(moduleId) {
6490 if (installedModules[moduleId]) return installedModules[moduleId].exports;
6491 var module = installedModules[moduleId] = {
6492 i: moduleId,
6493 l: false,
6494 exports: {}
6495 };
6496 modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
6497 module.l = true;
6498 return module.exports;
6499 }
6500
6501 __w_pdfjs_require__.m = modules;
6502 __w_pdfjs_require__.c = installedModules;
6503
6504 __w_pdfjs_require__.i = function (value) {
6505 return value;
6506 };
6507
6508 __w_pdfjs_require__.d = function (exports, name, getter) {
6509 if (!__w_pdfjs_require__.o(exports, name)) {
6510 Object.defineProperty(exports, name, {
6511 configurable: false,
6512 enumerable: true,
6513 get: getter
6514 });
6515 }
6516 };
6517
6518 __w_pdfjs_require__.n = function (module) {
6519 var getter = module && module.__esModule ? function getDefault() {
6520 return module['default'];
6521 } : function getModuleExports() {
6522 return module;
6523 };
6524
6525 __w_pdfjs_require__.d(getter, 'a', getter);
6526
6527 return getter;
6528 };
6529
6530 __w_pdfjs_require__.o = function (object, property) {
6531 return Object.prototype.hasOwnProperty.call(object, property);
6532 };
6533
6534 __w_pdfjs_require__.p = "";
6535 return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);
6536}([function (module, exports, __w_pdfjs_require__) {
6537 "use strict";
6538
6539 var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
6540 return _typeof2(obj);
6541 } : function (obj) {
6542 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
6543 };
6544
6545 var _require = __w_pdfjs_require__(1),
6546 assert = _require.assert;
6547
6548 function IsPropertyKey(argument) {
6549 return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';
6550 }
6551
6552 exports.typeIsObject = function (x) {
6553 return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';
6554 };
6555
6556 exports.createDataProperty = function (o, p, v) {
6557 assert(exports.typeIsObject(o));
6558 Object.defineProperty(o, p, {
6559 value: v,
6560 writable: true,
6561 enumerable: true,
6562 configurable: true
6563 });
6564 };
6565
6566 exports.createArrayFromList = function (elements) {
6567 return elements.slice();
6568 };
6569
6570 exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {
6571 new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);
6572 };
6573
6574 exports.CreateIterResultObject = function (value, done) {
6575 assert(typeof done === 'boolean');
6576 var obj = {};
6577 Object.defineProperty(obj, 'value', {
6578 value: value,
6579 enumerable: true,
6580 writable: true,
6581 configurable: true
6582 });
6583 Object.defineProperty(obj, 'done', {
6584 value: done,
6585 enumerable: true,
6586 writable: true,
6587 configurable: true
6588 });
6589 return obj;
6590 };
6591
6592 exports.IsFiniteNonNegativeNumber = function (v) {
6593 if (Number.isNaN(v)) {
6594 return false;
6595 }
6596
6597 if (v === Infinity) {
6598 return false;
6599 }
6600
6601 if (v < 0) {
6602 return false;
6603 }
6604
6605 return true;
6606 };
6607
6608 function Call(F, V, args) {
6609 if (typeof F !== 'function') {
6610 throw new TypeError('Argument is not a function');
6611 }
6612
6613 return Function.prototype.apply.call(F, V, args);
6614 }
6615
6616 exports.InvokeOrNoop = function (O, P, args) {
6617 assert(O !== undefined);
6618 assert(IsPropertyKey(P));
6619 assert(Array.isArray(args));
6620 var method = O[P];
6621
6622 if (method === undefined) {
6623 return undefined;
6624 }
6625
6626 return Call(method, O, args);
6627 };
6628
6629 exports.PromiseInvokeOrNoop = function (O, P, args) {
6630 assert(O !== undefined);
6631 assert(IsPropertyKey(P));
6632 assert(Array.isArray(args));
6633
6634 try {
6635 return Promise.resolve(exports.InvokeOrNoop(O, P, args));
6636 } catch (returnValueE) {
6637 return Promise.reject(returnValueE);
6638 }
6639 };
6640
6641 exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {
6642 assert(O !== undefined);
6643 assert(IsPropertyKey(P));
6644 assert(Array.isArray(args));
6645 assert(Array.isArray(argsF));
6646 var method = void 0;
6647
6648 try {
6649 method = O[P];
6650 } catch (methodE) {
6651 return Promise.reject(methodE);
6652 }
6653
6654 if (method === undefined) {
6655 return F.apply(null, argsF);
6656 }
6657
6658 try {
6659 return Promise.resolve(Call(method, O, args));
6660 } catch (e) {
6661 return Promise.reject(e);
6662 }
6663 };
6664
6665 exports.TransferArrayBuffer = function (O) {
6666 return O.slice();
6667 };
6668
6669 exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {
6670 highWaterMark = Number(highWaterMark);
6671
6672 if (Number.isNaN(highWaterMark) || highWaterMark < 0) {
6673 throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');
6674 }
6675
6676 return highWaterMark;
6677 };
6678
6679 exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {
6680 if (size !== undefined && typeof size !== 'function') {
6681 throw new TypeError('size property of a queuing strategy must be a function');
6682 }
6683
6684 highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);
6685 return {
6686 size: size,
6687 highWaterMark: highWaterMark
6688 };
6689 };
6690}, function (module, exports, __w_pdfjs_require__) {
6691 "use strict";
6692
6693 function rethrowAssertionErrorRejection(e) {
6694 if (e && e.constructor === AssertionError) {
6695 setTimeout(function () {
6696 throw e;
6697 }, 0);
6698 }
6699 }
6700
6701 function AssertionError(message) {
6702 this.name = 'AssertionError';
6703 this.message = message || '';
6704 this.stack = new Error().stack;
6705 }
6706
6707 AssertionError.prototype = Object.create(Error.prototype);
6708 AssertionError.prototype.constructor = AssertionError;
6709
6710 function assert(value, message) {
6711 if (!value) {
6712 throw new AssertionError(message);
6713 }
6714 }
6715
6716 module.exports = {
6717 rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,
6718 AssertionError: AssertionError,
6719 assert: assert
6720 };
6721}, function (module, exports, __w_pdfjs_require__) {
6722 "use strict";
6723
6724 var _createClass = function () {
6725 function defineProperties(target, props) {
6726 for (var i = 0; i < props.length; i++) {
6727 var descriptor = props[i];
6728 descriptor.enumerable = descriptor.enumerable || false;
6729 descriptor.configurable = true;
6730 if ("value" in descriptor) descriptor.writable = true;
6731 Object.defineProperty(target, descriptor.key, descriptor);
6732 }
6733 }
6734
6735 return function (Constructor, protoProps, staticProps) {
6736 if (protoProps) defineProperties(Constructor.prototype, protoProps);
6737 if (staticProps) defineProperties(Constructor, staticProps);
6738 return Constructor;
6739 };
6740 }();
6741
6742 function _classCallCheck(instance, Constructor) {
6743 if (!(instance instanceof Constructor)) {
6744 throw new TypeError("Cannot call a class as a function");
6745 }
6746 }
6747
6748 var _require = __w_pdfjs_require__(0),
6749 InvokeOrNoop = _require.InvokeOrNoop,
6750 PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
6751 ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
6752 typeIsObject = _require.typeIsObject;
6753
6754 var _require2 = __w_pdfjs_require__(1),
6755 assert = _require2.assert,
6756 rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;
6757
6758 var _require3 = __w_pdfjs_require__(3),
6759 DequeueValue = _require3.DequeueValue,
6760 EnqueueValueWithSize = _require3.EnqueueValueWithSize,
6761 PeekQueueValue = _require3.PeekQueueValue,
6762 ResetQueue = _require3.ResetQueue;
6763
6764 var WritableStream = function () {
6765 function WritableStream() {
6766 var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6767
6768 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6769 size = _ref.size,
6770 _ref$highWaterMark = _ref.highWaterMark,
6771 highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;
6772
6773 _classCallCheck(this, WritableStream);
6774
6775 this._state = 'writable';
6776 this._storedError = undefined;
6777 this._writer = undefined;
6778 this._writableStreamController = undefined;
6779 this._writeRequests = [];
6780 this._inFlightWriteRequest = undefined;
6781 this._closeRequest = undefined;
6782 this._inFlightCloseRequest = undefined;
6783 this._pendingAbortRequest = undefined;
6784 this._backpressure = false;
6785 var type = underlyingSink.type;
6786
6787 if (type !== undefined) {
6788 throw new RangeError('Invalid type is specified');
6789 }
6790
6791 this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);
6792
6793 this._writableStreamController.__startSteps();
6794 }
6795
6796 _createClass(WritableStream, [{
6797 key: 'abort',
6798 value: function abort(reason) {
6799 if (IsWritableStream(this) === false) {
6800 return Promise.reject(streamBrandCheckException('abort'));
6801 }
6802
6803 if (IsWritableStreamLocked(this) === true) {
6804 return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));
6805 }
6806
6807 return WritableStreamAbort(this, reason);
6808 }
6809 }, {
6810 key: 'getWriter',
6811 value: function getWriter() {
6812 if (IsWritableStream(this) === false) {
6813 throw streamBrandCheckException('getWriter');
6814 }
6815
6816 return AcquireWritableStreamDefaultWriter(this);
6817 }
6818 }, {
6819 key: 'locked',
6820 get: function get() {
6821 if (IsWritableStream(this) === false) {
6822 throw streamBrandCheckException('locked');
6823 }
6824
6825 return IsWritableStreamLocked(this);
6826 }
6827 }]);
6828
6829 return WritableStream;
6830 }();
6831
6832 module.exports = {
6833 AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,
6834 IsWritableStream: IsWritableStream,
6835 IsWritableStreamLocked: IsWritableStreamLocked,
6836 WritableStream: WritableStream,
6837 WritableStreamAbort: WritableStreamAbort,
6838 WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,
6839 WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,
6840 WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,
6841 WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,
6842 WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight
6843 };
6844
6845 function AcquireWritableStreamDefaultWriter(stream) {
6846 return new WritableStreamDefaultWriter(stream);
6847 }
6848
6849 function IsWritableStream(x) {
6850 if (!typeIsObject(x)) {
6851 return false;
6852 }
6853
6854 if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {
6855 return false;
6856 }
6857
6858 return true;
6859 }
6860
6861 function IsWritableStreamLocked(stream) {
6862 assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');
6863
6864 if (stream._writer === undefined) {
6865 return false;
6866 }
6867
6868 return true;
6869 }
6870
6871 function WritableStreamAbort(stream, reason) {
6872 var state = stream._state;
6873
6874 if (state === 'closed') {
6875 return Promise.resolve(undefined);
6876 }
6877
6878 if (state === 'errored') {
6879 return Promise.reject(stream._storedError);
6880 }
6881
6882 var error = new TypeError('Requested to abort');
6883
6884 if (stream._pendingAbortRequest !== undefined) {
6885 return Promise.reject(error);
6886 }
6887
6888 assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');
6889 var wasAlreadyErroring = false;
6890
6891 if (state === 'erroring') {
6892 wasAlreadyErroring = true;
6893 reason = undefined;
6894 }
6895
6896 var promise = new Promise(function (resolve, reject) {
6897 stream._pendingAbortRequest = {
6898 _resolve: resolve,
6899 _reject: reject,
6900 _reason: reason,
6901 _wasAlreadyErroring: wasAlreadyErroring
6902 };
6903 });
6904
6905 if (wasAlreadyErroring === false) {
6906 WritableStreamStartErroring(stream, error);
6907 }
6908
6909 return promise;
6910 }
6911
6912 function WritableStreamAddWriteRequest(stream) {
6913 assert(IsWritableStreamLocked(stream) === true);
6914 assert(stream._state === 'writable');
6915 var promise = new Promise(function (resolve, reject) {
6916 var writeRequest = {
6917 _resolve: resolve,
6918 _reject: reject
6919 };
6920
6921 stream._writeRequests.push(writeRequest);
6922 });
6923 return promise;
6924 }
6925
6926 function WritableStreamDealWithRejection(stream, error) {
6927 var state = stream._state;
6928
6929 if (state === 'writable') {
6930 WritableStreamStartErroring(stream, error);
6931 return;
6932 }
6933
6934 assert(state === 'erroring');
6935 WritableStreamFinishErroring(stream);
6936 }
6937
6938 function WritableStreamStartErroring(stream, reason) {
6939 assert(stream._storedError === undefined, 'stream._storedError === undefined');
6940 assert(stream._state === 'writable', 'state must be writable');
6941 var controller = stream._writableStreamController;
6942 assert(controller !== undefined, 'controller must not be undefined');
6943 stream._state = 'erroring';
6944 stream._storedError = reason;
6945 var writer = stream._writer;
6946
6947 if (writer !== undefined) {
6948 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);
6949 }
6950
6951 if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {
6952 WritableStreamFinishErroring(stream);
6953 }
6954 }
6955
6956 function WritableStreamFinishErroring(stream) {
6957 assert(stream._state === 'erroring', 'stream._state === erroring');
6958 assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');
6959 stream._state = 'errored';
6960
6961 stream._writableStreamController.__errorSteps();
6962
6963 var storedError = stream._storedError;
6964
6965 for (var i = 0; i < stream._writeRequests.length; i++) {
6966 var writeRequest = stream._writeRequests[i];
6967
6968 writeRequest._reject(storedError);
6969 }
6970
6971 stream._writeRequests = [];
6972
6973 if (stream._pendingAbortRequest === undefined) {
6974 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
6975 return;
6976 }
6977
6978 var abortRequest = stream._pendingAbortRequest;
6979 stream._pendingAbortRequest = undefined;
6980
6981 if (abortRequest._wasAlreadyErroring === true) {
6982 abortRequest._reject(storedError);
6983
6984 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
6985 return;
6986 }
6987
6988 var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);
6989
6990 promise.then(function () {
6991 abortRequest._resolve();
6992
6993 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
6994 }, function (reason) {
6995 abortRequest._reject(reason);
6996
6997 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);
6998 });
6999 }
7000
7001 function WritableStreamFinishInFlightWrite(stream) {
7002 assert(stream._inFlightWriteRequest !== undefined);
7003
7004 stream._inFlightWriteRequest._resolve(undefined);
7005
7006 stream._inFlightWriteRequest = undefined;
7007 }
7008
7009 function WritableStreamFinishInFlightWriteWithError(stream, error) {
7010 assert(stream._inFlightWriteRequest !== undefined);
7011
7012 stream._inFlightWriteRequest._reject(error);
7013
7014 stream._inFlightWriteRequest = undefined;
7015 assert(stream._state === 'writable' || stream._state === 'erroring');
7016 WritableStreamDealWithRejection(stream, error);
7017 }
7018
7019 function WritableStreamFinishInFlightClose(stream) {
7020 assert(stream._inFlightCloseRequest !== undefined);
7021
7022 stream._inFlightCloseRequest._resolve(undefined);
7023
7024 stream._inFlightCloseRequest = undefined;
7025 var state = stream._state;
7026 assert(state === 'writable' || state === 'erroring');
7027
7028 if (state === 'erroring') {
7029 stream._storedError = undefined;
7030
7031 if (stream._pendingAbortRequest !== undefined) {
7032 stream._pendingAbortRequest._resolve();
7033
7034 stream._pendingAbortRequest = undefined;
7035 }
7036 }
7037
7038 stream._state = 'closed';
7039 var writer = stream._writer;
7040
7041 if (writer !== undefined) {
7042 defaultWriterClosedPromiseResolve(writer);
7043 }
7044
7045 assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');
7046 assert(stream._storedError === undefined, 'stream._storedError === undefined');
7047 }
7048
7049 function WritableStreamFinishInFlightCloseWithError(stream, error) {
7050 assert(stream._inFlightCloseRequest !== undefined);
7051
7052 stream._inFlightCloseRequest._reject(error);
7053
7054 stream._inFlightCloseRequest = undefined;
7055 assert(stream._state === 'writable' || stream._state === 'erroring');
7056
7057 if (stream._pendingAbortRequest !== undefined) {
7058 stream._pendingAbortRequest._reject(error);
7059
7060 stream._pendingAbortRequest = undefined;
7061 }
7062
7063 WritableStreamDealWithRejection(stream, error);
7064 }
7065
7066 function WritableStreamCloseQueuedOrInFlight(stream) {
7067 if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {
7068 return false;
7069 }
7070
7071 return true;
7072 }
7073
7074 function WritableStreamHasOperationMarkedInFlight(stream) {
7075 if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {
7076 return false;
7077 }
7078
7079 return true;
7080 }
7081
7082 function WritableStreamMarkCloseRequestInFlight(stream) {
7083 assert(stream._inFlightCloseRequest === undefined);
7084 assert(stream._closeRequest !== undefined);
7085 stream._inFlightCloseRequest = stream._closeRequest;
7086 stream._closeRequest = undefined;
7087 }
7088
7089 function WritableStreamMarkFirstWriteRequestInFlight(stream) {
7090 assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');
7091 assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');
7092 stream._inFlightWriteRequest = stream._writeRequests.shift();
7093 }
7094
7095 function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {
7096 assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`');
7097
7098 if (stream._closeRequest !== undefined) {
7099 assert(stream._inFlightCloseRequest === undefined);
7100
7101 stream._closeRequest._reject(stream._storedError);
7102
7103 stream._closeRequest = undefined;
7104 }
7105
7106 var writer = stream._writer;
7107
7108 if (writer !== undefined) {
7109 defaultWriterClosedPromiseReject(writer, stream._storedError);
7110
7111 writer._closedPromise["catch"](function () {});
7112 }
7113 }
7114
7115 function WritableStreamUpdateBackpressure(stream, backpressure) {
7116 assert(stream._state === 'writable');
7117 assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
7118 var writer = stream._writer;
7119
7120 if (writer !== undefined && backpressure !== stream._backpressure) {
7121 if (backpressure === true) {
7122 defaultWriterReadyPromiseReset(writer);
7123 } else {
7124 assert(backpressure === false);
7125 defaultWriterReadyPromiseResolve(writer);
7126 }
7127 }
7128
7129 stream._backpressure = backpressure;
7130 }
7131
7132 var WritableStreamDefaultWriter = function () {
7133 function WritableStreamDefaultWriter(stream) {
7134 _classCallCheck(this, WritableStreamDefaultWriter);
7135
7136 if (IsWritableStream(stream) === false) {
7137 throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');
7138 }
7139
7140 if (IsWritableStreamLocked(stream) === true) {
7141 throw new TypeError('This stream has already been locked for exclusive writing by another writer');
7142 }
7143
7144 this._ownerWritableStream = stream;
7145 stream._writer = this;
7146 var state = stream._state;
7147
7148 if (state === 'writable') {
7149 if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {
7150 defaultWriterReadyPromiseInitialize(this);
7151 } else {
7152 defaultWriterReadyPromiseInitializeAsResolved(this);
7153 }
7154
7155 defaultWriterClosedPromiseInitialize(this);
7156 } else if (state === 'erroring') {
7157 defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);
7158
7159 this._readyPromise["catch"](function () {});
7160
7161 defaultWriterClosedPromiseInitialize(this);
7162 } else if (state === 'closed') {
7163 defaultWriterReadyPromiseInitializeAsResolved(this);
7164 defaultWriterClosedPromiseInitializeAsResolved(this);
7165 } else {
7166 assert(state === 'errored', 'state must be errored');
7167 var storedError = stream._storedError;
7168 defaultWriterReadyPromiseInitializeAsRejected(this, storedError);
7169
7170 this._readyPromise["catch"](function () {});
7171
7172 defaultWriterClosedPromiseInitializeAsRejected(this, storedError);
7173
7174 this._closedPromise["catch"](function () {});
7175 }
7176 }
7177
7178 _createClass(WritableStreamDefaultWriter, [{
7179 key: 'abort',
7180 value: function abort(reason) {
7181 if (IsWritableStreamDefaultWriter(this) === false) {
7182 return Promise.reject(defaultWriterBrandCheckException('abort'));
7183 }
7184
7185 if (this._ownerWritableStream === undefined) {
7186 return Promise.reject(defaultWriterLockException('abort'));
7187 }
7188
7189 return WritableStreamDefaultWriterAbort(this, reason);
7190 }
7191 }, {
7192 key: 'close',
7193 value: function close() {
7194 if (IsWritableStreamDefaultWriter(this) === false) {
7195 return Promise.reject(defaultWriterBrandCheckException('close'));
7196 }
7197
7198 var stream = this._ownerWritableStream;
7199
7200 if (stream === undefined) {
7201 return Promise.reject(defaultWriterLockException('close'));
7202 }
7203
7204 if (WritableStreamCloseQueuedOrInFlight(stream) === true) {
7205 return Promise.reject(new TypeError('cannot close an already-closing stream'));
7206 }
7207
7208 return WritableStreamDefaultWriterClose(this);
7209 }
7210 }, {
7211 key: 'releaseLock',
7212 value: function releaseLock() {
7213 if (IsWritableStreamDefaultWriter(this) === false) {
7214 throw defaultWriterBrandCheckException('releaseLock');
7215 }
7216
7217 var stream = this._ownerWritableStream;
7218
7219 if (stream === undefined) {
7220 return;
7221 }
7222
7223 assert(stream._writer !== undefined);
7224 WritableStreamDefaultWriterRelease(this);
7225 }
7226 }, {
7227 key: 'write',
7228 value: function write(chunk) {
7229 if (IsWritableStreamDefaultWriter(this) === false) {
7230 return Promise.reject(defaultWriterBrandCheckException('write'));
7231 }
7232
7233 if (this._ownerWritableStream === undefined) {
7234 return Promise.reject(defaultWriterLockException('write to'));
7235 }
7236
7237 return WritableStreamDefaultWriterWrite(this, chunk);
7238 }
7239 }, {
7240 key: 'closed',
7241 get: function get() {
7242 if (IsWritableStreamDefaultWriter(this) === false) {
7243 return Promise.reject(defaultWriterBrandCheckException('closed'));
7244 }
7245
7246 return this._closedPromise;
7247 }
7248 }, {
7249 key: 'desiredSize',
7250 get: function get() {
7251 if (IsWritableStreamDefaultWriter(this) === false) {
7252 throw defaultWriterBrandCheckException('desiredSize');
7253 }
7254
7255 if (this._ownerWritableStream === undefined) {
7256 throw defaultWriterLockException('desiredSize');
7257 }
7258
7259 return WritableStreamDefaultWriterGetDesiredSize(this);
7260 }
7261 }, {
7262 key: 'ready',
7263 get: function get() {
7264 if (IsWritableStreamDefaultWriter(this) === false) {
7265 return Promise.reject(defaultWriterBrandCheckException('ready'));
7266 }
7267
7268 return this._readyPromise;
7269 }
7270 }]);
7271
7272 return WritableStreamDefaultWriter;
7273 }();
7274
7275 function IsWritableStreamDefaultWriter(x) {
7276 if (!typeIsObject(x)) {
7277 return false;
7278 }
7279
7280 if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {
7281 return false;
7282 }
7283
7284 return true;
7285 }
7286
7287 function WritableStreamDefaultWriterAbort(writer, reason) {
7288 var stream = writer._ownerWritableStream;
7289 assert(stream !== undefined);
7290 return WritableStreamAbort(stream, reason);
7291 }
7292
7293 function WritableStreamDefaultWriterClose(writer) {
7294 var stream = writer._ownerWritableStream;
7295 assert(stream !== undefined);
7296 var state = stream._state;
7297
7298 if (state === 'closed' || state === 'errored') {
7299 return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));
7300 }
7301
7302 assert(state === 'writable' || state === 'erroring');
7303 assert(WritableStreamCloseQueuedOrInFlight(stream) === false);
7304 var promise = new Promise(function (resolve, reject) {
7305 var closeRequest = {
7306 _resolve: resolve,
7307 _reject: reject
7308 };
7309 stream._closeRequest = closeRequest;
7310 });
7311
7312 if (stream._backpressure === true && state === 'writable') {
7313 defaultWriterReadyPromiseResolve(writer);
7314 }
7315
7316 WritableStreamDefaultControllerClose(stream._writableStreamController);
7317 return promise;
7318 }
7319
7320 function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {
7321 var stream = writer._ownerWritableStream;
7322 assert(stream !== undefined);
7323 var state = stream._state;
7324
7325 if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
7326 return Promise.resolve();
7327 }
7328
7329 if (state === 'errored') {
7330 return Promise.reject(stream._storedError);
7331 }
7332
7333 assert(state === 'writable' || state === 'erroring');
7334 return WritableStreamDefaultWriterClose(writer);
7335 }
7336
7337 function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {
7338 if (writer._closedPromiseState === 'pending') {
7339 defaultWriterClosedPromiseReject(writer, error);
7340 } else {
7341 defaultWriterClosedPromiseResetToRejected(writer, error);
7342 }
7343
7344 writer._closedPromise["catch"](function () {});
7345 }
7346
7347 function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {
7348 if (writer._readyPromiseState === 'pending') {
7349 defaultWriterReadyPromiseReject(writer, error);
7350 } else {
7351 defaultWriterReadyPromiseResetToRejected(writer, error);
7352 }
7353
7354 writer._readyPromise["catch"](function () {});
7355 }
7356
7357 function WritableStreamDefaultWriterGetDesiredSize(writer) {
7358 var stream = writer._ownerWritableStream;
7359 var state = stream._state;
7360
7361 if (state === 'errored' || state === 'erroring') {
7362 return null;
7363 }
7364
7365 if (state === 'closed') {
7366 return 0;
7367 }
7368
7369 return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);
7370 }
7371
7372 function WritableStreamDefaultWriterRelease(writer) {
7373 var stream = writer._ownerWritableStream;
7374 assert(stream !== undefined);
7375 assert(stream._writer === writer);
7376 var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness');
7377 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);
7378 WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);
7379 stream._writer = undefined;
7380 writer._ownerWritableStream = undefined;
7381 }
7382
7383 function WritableStreamDefaultWriterWrite(writer, chunk) {
7384 var stream = writer._ownerWritableStream;
7385 assert(stream !== undefined);
7386 var controller = stream._writableStreamController;
7387 var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);
7388
7389 if (stream !== writer._ownerWritableStream) {
7390 return Promise.reject(defaultWriterLockException('write to'));
7391 }
7392
7393 var state = stream._state;
7394
7395 if (state === 'errored') {
7396 return Promise.reject(stream._storedError);
7397 }
7398
7399 if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {
7400 return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));
7401 }
7402
7403 if (state === 'erroring') {
7404 return Promise.reject(stream._storedError);
7405 }
7406
7407 assert(state === 'writable');
7408 var promise = WritableStreamAddWriteRequest(stream);
7409 WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);
7410 return promise;
7411 }
7412
7413 var WritableStreamDefaultController = function () {
7414 function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {
7415 _classCallCheck(this, WritableStreamDefaultController);
7416
7417 if (IsWritableStream(stream) === false) {
7418 throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');
7419 }
7420
7421 if (stream._writableStreamController !== undefined) {
7422 throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');
7423 }
7424
7425 this._controlledWritableStream = stream;
7426 this._underlyingSink = underlyingSink;
7427 this._queue = undefined;
7428 this._queueTotalSize = undefined;
7429 ResetQueue(this);
7430 this._started = false;
7431 var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
7432 this._strategySize = normalizedStrategy.size;
7433 this._strategyHWM = normalizedStrategy.highWaterMark;
7434 var backpressure = WritableStreamDefaultControllerGetBackpressure(this);
7435 WritableStreamUpdateBackpressure(stream, backpressure);
7436 }
7437
7438 _createClass(WritableStreamDefaultController, [{
7439 key: 'error',
7440 value: function error(e) {
7441 if (IsWritableStreamDefaultController(this) === false) {
7442 throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');
7443 }
7444
7445 var state = this._controlledWritableStream._state;
7446
7447 if (state !== 'writable') {
7448 return;
7449 }
7450
7451 WritableStreamDefaultControllerError(this, e);
7452 }
7453 }, {
7454 key: '__abortSteps',
7455 value: function __abortSteps(reason) {
7456 return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);
7457 }
7458 }, {
7459 key: '__errorSteps',
7460 value: function __errorSteps() {
7461 ResetQueue(this);
7462 }
7463 }, {
7464 key: '__startSteps',
7465 value: function __startSteps() {
7466 var _this = this;
7467
7468 var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);
7469 var stream = this._controlledWritableStream;
7470 Promise.resolve(startResult).then(function () {
7471 assert(stream._state === 'writable' || stream._state === 'erroring');
7472 _this._started = true;
7473 WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);
7474 }, function (r) {
7475 assert(stream._state === 'writable' || stream._state === 'erroring');
7476 _this._started = true;
7477 WritableStreamDealWithRejection(stream, r);
7478 })["catch"](rethrowAssertionErrorRejection);
7479 }
7480 }]);
7481
7482 return WritableStreamDefaultController;
7483 }();
7484
7485 function WritableStreamDefaultControllerClose(controller) {
7486 EnqueueValueWithSize(controller, 'close', 0);
7487 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
7488 }
7489
7490 function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {
7491 var strategySize = controller._strategySize;
7492
7493 if (strategySize === undefined) {
7494 return 1;
7495 }
7496
7497 try {
7498 return strategySize(chunk);
7499 } catch (chunkSizeE) {
7500 WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
7501 return 1;
7502 }
7503 }
7504
7505 function WritableStreamDefaultControllerGetDesiredSize(controller) {
7506 return controller._strategyHWM - controller._queueTotalSize;
7507 }
7508
7509 function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {
7510 var writeRecord = {
7511 chunk: chunk
7512 };
7513
7514 try {
7515 EnqueueValueWithSize(controller, writeRecord, chunkSize);
7516 } catch (enqueueE) {
7517 WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
7518 return;
7519 }
7520
7521 var stream = controller._controlledWritableStream;
7522
7523 if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {
7524 var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
7525 WritableStreamUpdateBackpressure(stream, backpressure);
7526 }
7527
7528 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
7529 }
7530
7531 function IsWritableStreamDefaultController(x) {
7532 if (!typeIsObject(x)) {
7533 return false;
7534 }
7535
7536 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {
7537 return false;
7538 }
7539
7540 return true;
7541 }
7542
7543 function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {
7544 var stream = controller._controlledWritableStream;
7545
7546 if (controller._started === false) {
7547 return;
7548 }
7549
7550 if (stream._inFlightWriteRequest !== undefined) {
7551 return;
7552 }
7553
7554 var state = stream._state;
7555
7556 if (state === 'closed' || state === 'errored') {
7557 return;
7558 }
7559
7560 if (state === 'erroring') {
7561 WritableStreamFinishErroring(stream);
7562 return;
7563 }
7564
7565 if (controller._queue.length === 0) {
7566 return;
7567 }
7568
7569 var writeRecord = PeekQueueValue(controller);
7570
7571 if (writeRecord === 'close') {
7572 WritableStreamDefaultControllerProcessClose(controller);
7573 } else {
7574 WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);
7575 }
7576 }
7577
7578 function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {
7579 if (controller._controlledWritableStream._state === 'writable') {
7580 WritableStreamDefaultControllerError(controller, error);
7581 }
7582 }
7583
7584 function WritableStreamDefaultControllerProcessClose(controller) {
7585 var stream = controller._controlledWritableStream;
7586 WritableStreamMarkCloseRequestInFlight(stream);
7587 DequeueValue(controller);
7588 assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');
7589 var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);
7590 sinkClosePromise.then(function () {
7591 WritableStreamFinishInFlightClose(stream);
7592 }, function (reason) {
7593 WritableStreamFinishInFlightCloseWithError(stream, reason);
7594 })["catch"](rethrowAssertionErrorRejection);
7595 }
7596
7597 function WritableStreamDefaultControllerProcessWrite(controller, chunk) {
7598 var stream = controller._controlledWritableStream;
7599 WritableStreamMarkFirstWriteRequestInFlight(stream);
7600 var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);
7601 sinkWritePromise.then(function () {
7602 WritableStreamFinishInFlightWrite(stream);
7603 var state = stream._state;
7604 assert(state === 'writable' || state === 'erroring');
7605 DequeueValue(controller);
7606
7607 if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {
7608 var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);
7609 WritableStreamUpdateBackpressure(stream, backpressure);
7610 }
7611
7612 WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);
7613 }, function (reason) {
7614 WritableStreamFinishInFlightWriteWithError(stream, reason);
7615 })["catch"](rethrowAssertionErrorRejection);
7616 }
7617
7618 function WritableStreamDefaultControllerGetBackpressure(controller) {
7619 var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);
7620 return desiredSize <= 0;
7621 }
7622
7623 function WritableStreamDefaultControllerError(controller, error) {
7624 var stream = controller._controlledWritableStream;
7625 assert(stream._state === 'writable');
7626 WritableStreamStartErroring(stream, error);
7627 }
7628
7629 function streamBrandCheckException(name) {
7630 return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');
7631 }
7632
7633 function defaultWriterBrandCheckException(name) {
7634 return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');
7635 }
7636
7637 function defaultWriterLockException(name) {
7638 return new TypeError('Cannot ' + name + ' a stream using a released writer');
7639 }
7640
7641 function defaultWriterClosedPromiseInitialize(writer) {
7642 writer._closedPromise = new Promise(function (resolve, reject) {
7643 writer._closedPromise_resolve = resolve;
7644 writer._closedPromise_reject = reject;
7645 writer._closedPromiseState = 'pending';
7646 });
7647 }
7648
7649 function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {
7650 writer._closedPromise = Promise.reject(reason);
7651 writer._closedPromise_resolve = undefined;
7652 writer._closedPromise_reject = undefined;
7653 writer._closedPromiseState = 'rejected';
7654 }
7655
7656 function defaultWriterClosedPromiseInitializeAsResolved(writer) {
7657 writer._closedPromise = Promise.resolve(undefined);
7658 writer._closedPromise_resolve = undefined;
7659 writer._closedPromise_reject = undefined;
7660 writer._closedPromiseState = 'resolved';
7661 }
7662
7663 function defaultWriterClosedPromiseReject(writer, reason) {
7664 assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
7665 assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
7666 assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
7667
7668 writer._closedPromise_reject(reason);
7669
7670 writer._closedPromise_resolve = undefined;
7671 writer._closedPromise_reject = undefined;
7672 writer._closedPromiseState = 'rejected';
7673 }
7674
7675 function defaultWriterClosedPromiseResetToRejected(writer, reason) {
7676 assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');
7677 assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');
7678 assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');
7679 writer._closedPromise = Promise.reject(reason);
7680 writer._closedPromiseState = 'rejected';
7681 }
7682
7683 function defaultWriterClosedPromiseResolve(writer) {
7684 assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');
7685 assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');
7686 assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');
7687
7688 writer._closedPromise_resolve(undefined);
7689
7690 writer._closedPromise_resolve = undefined;
7691 writer._closedPromise_reject = undefined;
7692 writer._closedPromiseState = 'resolved';
7693 }
7694
7695 function defaultWriterReadyPromiseInitialize(writer) {
7696 writer._readyPromise = new Promise(function (resolve, reject) {
7697 writer._readyPromise_resolve = resolve;
7698 writer._readyPromise_reject = reject;
7699 });
7700 writer._readyPromiseState = 'pending';
7701 }
7702
7703 function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {
7704 writer._readyPromise = Promise.reject(reason);
7705 writer._readyPromise_resolve = undefined;
7706 writer._readyPromise_reject = undefined;
7707 writer._readyPromiseState = 'rejected';
7708 }
7709
7710 function defaultWriterReadyPromiseInitializeAsResolved(writer) {
7711 writer._readyPromise = Promise.resolve(undefined);
7712 writer._readyPromise_resolve = undefined;
7713 writer._readyPromise_reject = undefined;
7714 writer._readyPromiseState = 'fulfilled';
7715 }
7716
7717 function defaultWriterReadyPromiseReject(writer, reason) {
7718 assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
7719 assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
7720
7721 writer._readyPromise_reject(reason);
7722
7723 writer._readyPromise_resolve = undefined;
7724 writer._readyPromise_reject = undefined;
7725 writer._readyPromiseState = 'rejected';
7726 }
7727
7728 function defaultWriterReadyPromiseReset(writer) {
7729 assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
7730 assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
7731 writer._readyPromise = new Promise(function (resolve, reject) {
7732 writer._readyPromise_resolve = resolve;
7733 writer._readyPromise_reject = reject;
7734 });
7735 writer._readyPromiseState = 'pending';
7736 }
7737
7738 function defaultWriterReadyPromiseResetToRejected(writer, reason) {
7739 assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');
7740 assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');
7741 writer._readyPromise = Promise.reject(reason);
7742 writer._readyPromiseState = 'rejected';
7743 }
7744
7745 function defaultWriterReadyPromiseResolve(writer) {
7746 assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');
7747 assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');
7748
7749 writer._readyPromise_resolve(undefined);
7750
7751 writer._readyPromise_resolve = undefined;
7752 writer._readyPromise_reject = undefined;
7753 writer._readyPromiseState = 'fulfilled';
7754 }
7755}, function (module, exports, __w_pdfjs_require__) {
7756 "use strict";
7757
7758 var _require = __w_pdfjs_require__(0),
7759 IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;
7760
7761 var _require2 = __w_pdfjs_require__(1),
7762 assert = _require2.assert;
7763
7764 exports.DequeueValue = function (container) {
7765 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
7766 assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');
7767
7768 var pair = container._queue.shift();
7769
7770 container._queueTotalSize -= pair.size;
7771
7772 if (container._queueTotalSize < 0) {
7773 container._queueTotalSize = 0;
7774 }
7775
7776 return pair.value;
7777 };
7778
7779 exports.EnqueueValueWithSize = function (container, value, size) {
7780 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');
7781 size = Number(size);
7782
7783 if (!IsFiniteNonNegativeNumber(size)) {
7784 throw new RangeError('Size must be a finite, non-NaN, non-negative number.');
7785 }
7786
7787 container._queue.push({
7788 value: value,
7789 size: size
7790 });
7791
7792 container._queueTotalSize += size;
7793 };
7794
7795 exports.PeekQueueValue = function (container) {
7796 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');
7797 assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');
7798 var pair = container._queue[0];
7799 return pair.value;
7800 };
7801
7802 exports.ResetQueue = function (container) {
7803 assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');
7804 container._queue = [];
7805 container._queueTotalSize = 0;
7806 };
7807}, function (module, exports, __w_pdfjs_require__) {
7808 "use strict";
7809
7810 var _createClass = function () {
7811 function defineProperties(target, props) {
7812 for (var i = 0; i < props.length; i++) {
7813 var descriptor = props[i];
7814 descriptor.enumerable = descriptor.enumerable || false;
7815 descriptor.configurable = true;
7816 if ("value" in descriptor) descriptor.writable = true;
7817 Object.defineProperty(target, descriptor.key, descriptor);
7818 }
7819 }
7820
7821 return function (Constructor, protoProps, staticProps) {
7822 if (protoProps) defineProperties(Constructor.prototype, protoProps);
7823 if (staticProps) defineProperties(Constructor, staticProps);
7824 return Constructor;
7825 };
7826 }();
7827
7828 function _classCallCheck(instance, Constructor) {
7829 if (!(instance instanceof Constructor)) {
7830 throw new TypeError("Cannot call a class as a function");
7831 }
7832 }
7833
7834 var _require = __w_pdfjs_require__(0),
7835 ArrayBufferCopy = _require.ArrayBufferCopy,
7836 CreateIterResultObject = _require.CreateIterResultObject,
7837 IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,
7838 InvokeOrNoop = _require.InvokeOrNoop,
7839 PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,
7840 TransferArrayBuffer = _require.TransferArrayBuffer,
7841 ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,
7842 ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;
7843
7844 var _require2 = __w_pdfjs_require__(0),
7845 createArrayFromList = _require2.createArrayFromList,
7846 createDataProperty = _require2.createDataProperty,
7847 typeIsObject = _require2.typeIsObject;
7848
7849 var _require3 = __w_pdfjs_require__(1),
7850 assert = _require3.assert,
7851 rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;
7852
7853 var _require4 = __w_pdfjs_require__(3),
7854 DequeueValue = _require4.DequeueValue,
7855 EnqueueValueWithSize = _require4.EnqueueValueWithSize,
7856 ResetQueue = _require4.ResetQueue;
7857
7858 var _require5 = __w_pdfjs_require__(2),
7859 AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,
7860 IsWritableStream = _require5.IsWritableStream,
7861 IsWritableStreamLocked = _require5.IsWritableStreamLocked,
7862 WritableStreamAbort = _require5.WritableStreamAbort,
7863 WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,
7864 WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,
7865 WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,
7866 WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;
7867
7868 var ReadableStream = function () {
7869 function ReadableStream() {
7870 var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7871
7872 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
7873 size = _ref.size,
7874 highWaterMark = _ref.highWaterMark;
7875
7876 _classCallCheck(this, ReadableStream);
7877
7878 this._state = 'readable';
7879 this._reader = undefined;
7880 this._storedError = undefined;
7881 this._disturbed = false;
7882 this._readableStreamController = undefined;
7883 var type = underlyingSource.type;
7884 var typeString = String(type);
7885
7886 if (typeString === 'bytes') {
7887 if (highWaterMark === undefined) {
7888 highWaterMark = 0;
7889 }
7890
7891 this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);
7892 } else if (type === undefined) {
7893 if (highWaterMark === undefined) {
7894 highWaterMark = 1;
7895 }
7896
7897 this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);
7898 } else {
7899 throw new RangeError('Invalid type is specified');
7900 }
7901 }
7902
7903 _createClass(ReadableStream, [{
7904 key: 'cancel',
7905 value: function cancel(reason) {
7906 if (IsReadableStream(this) === false) {
7907 return Promise.reject(streamBrandCheckException('cancel'));
7908 }
7909
7910 if (IsReadableStreamLocked(this) === true) {
7911 return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));
7912 }
7913
7914 return ReadableStreamCancel(this, reason);
7915 }
7916 }, {
7917 key: 'getReader',
7918 value: function getReader() {
7919 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
7920 mode = _ref2.mode;
7921
7922 if (IsReadableStream(this) === false) {
7923 throw streamBrandCheckException('getReader');
7924 }
7925
7926 if (mode === undefined) {
7927 return AcquireReadableStreamDefaultReader(this);
7928 }
7929
7930 mode = String(mode);
7931
7932 if (mode === 'byob') {
7933 return AcquireReadableStreamBYOBReader(this);
7934 }
7935
7936 throw new RangeError('Invalid mode is specified');
7937 }
7938 }, {
7939 key: 'pipeThrough',
7940 value: function pipeThrough(_ref3, options) {
7941 var writable = _ref3.writable,
7942 readable = _ref3.readable;
7943 var promise = this.pipeTo(writable, options);
7944 ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);
7945 return readable;
7946 }
7947 }, {
7948 key: 'pipeTo',
7949 value: function pipeTo(dest) {
7950 var _this = this;
7951
7952 var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
7953 preventClose = _ref4.preventClose,
7954 preventAbort = _ref4.preventAbort,
7955 preventCancel = _ref4.preventCancel;
7956
7957 if (IsReadableStream(this) === false) {
7958 return Promise.reject(streamBrandCheckException('pipeTo'));
7959 }
7960
7961 if (IsWritableStream(dest) === false) {
7962 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream'));
7963 }
7964
7965 preventClose = Boolean(preventClose);
7966 preventAbort = Boolean(preventAbort);
7967 preventCancel = Boolean(preventCancel);
7968
7969 if (IsReadableStreamLocked(this) === true) {
7970 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));
7971 }
7972
7973 if (IsWritableStreamLocked(dest) === true) {
7974 return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));
7975 }
7976
7977 var reader = AcquireReadableStreamDefaultReader(this);
7978 var writer = AcquireWritableStreamDefaultWriter(dest);
7979 var shuttingDown = false;
7980 var currentWrite = Promise.resolve();
7981 return new Promise(function (resolve, reject) {
7982 function pipeLoop() {
7983 currentWrite = Promise.resolve();
7984
7985 if (shuttingDown === true) {
7986 return Promise.resolve();
7987 }
7988
7989 return writer._readyPromise.then(function () {
7990 return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {
7991 var value = _ref5.value,
7992 done = _ref5.done;
7993
7994 if (done === true) {
7995 return;
7996 }
7997
7998 currentWrite = WritableStreamDefaultWriterWrite(writer, value)["catch"](function () {});
7999 });
8000 }).then(pipeLoop);
8001 }
8002
8003 isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {
8004 if (preventAbort === false) {
8005 shutdownWithAction(function () {
8006 return WritableStreamAbort(dest, storedError);
8007 }, true, storedError);
8008 } else {
8009 shutdown(true, storedError);
8010 }
8011 });
8012 isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {
8013 if (preventCancel === false) {
8014 shutdownWithAction(function () {
8015 return ReadableStreamCancel(_this, storedError);
8016 }, true, storedError);
8017 } else {
8018 shutdown(true, storedError);
8019 }
8020 });
8021 isOrBecomesClosed(_this, reader._closedPromise, function () {
8022 if (preventClose === false) {
8023 shutdownWithAction(function () {
8024 return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);
8025 });
8026 } else {
8027 shutdown();
8028 }
8029 });
8030
8031 if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {
8032 var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');
8033
8034 if (preventCancel === false) {
8035 shutdownWithAction(function () {
8036 return ReadableStreamCancel(_this, destClosed);
8037 }, true, destClosed);
8038 } else {
8039 shutdown(true, destClosed);
8040 }
8041 }
8042
8043 pipeLoop()["catch"](function (err) {
8044 currentWrite = Promise.resolve();
8045 rethrowAssertionErrorRejection(err);
8046 });
8047
8048 function waitForWritesToFinish() {
8049 var oldCurrentWrite = currentWrite;
8050 return currentWrite.then(function () {
8051 return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;
8052 });
8053 }
8054
8055 function isOrBecomesErrored(stream, promise, action) {
8056 if (stream._state === 'errored') {
8057 action(stream._storedError);
8058 } else {
8059 promise["catch"](action)["catch"](rethrowAssertionErrorRejection);
8060 }
8061 }
8062
8063 function isOrBecomesClosed(stream, promise, action) {
8064 if (stream._state === 'closed') {
8065 action();
8066 } else {
8067 promise.then(action)["catch"](rethrowAssertionErrorRejection);
8068 }
8069 }
8070
8071 function shutdownWithAction(action, originalIsError, originalError) {
8072 if (shuttingDown === true) {
8073 return;
8074 }
8075
8076 shuttingDown = true;
8077
8078 if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
8079 waitForWritesToFinish().then(doTheRest);
8080 } else {
8081 doTheRest();
8082 }
8083
8084 function doTheRest() {
8085 action().then(function () {
8086 return finalize(originalIsError, originalError);
8087 }, function (newError) {
8088 return finalize(true, newError);
8089 })["catch"](rethrowAssertionErrorRejection);
8090 }
8091 }
8092
8093 function shutdown(isError, error) {
8094 if (shuttingDown === true) {
8095 return;
8096 }
8097
8098 shuttingDown = true;
8099
8100 if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {
8101 waitForWritesToFinish().then(function () {
8102 return finalize(isError, error);
8103 })["catch"](rethrowAssertionErrorRejection);
8104 } else {
8105 finalize(isError, error);
8106 }
8107 }
8108
8109 function finalize(isError, error) {
8110 WritableStreamDefaultWriterRelease(writer);
8111 ReadableStreamReaderGenericRelease(reader);
8112
8113 if (isError) {
8114 reject(error);
8115 } else {
8116 resolve(undefined);
8117 }
8118 }
8119 });
8120 }
8121 }, {
8122 key: 'tee',
8123 value: function tee() {
8124 if (IsReadableStream(this) === false) {
8125 throw streamBrandCheckException('tee');
8126 }
8127
8128 var branches = ReadableStreamTee(this, false);
8129 return createArrayFromList(branches);
8130 }
8131 }, {
8132 key: 'locked',
8133 get: function get() {
8134 if (IsReadableStream(this) === false) {
8135 throw streamBrandCheckException('locked');
8136 }
8137
8138 return IsReadableStreamLocked(this);
8139 }
8140 }]);
8141
8142 return ReadableStream;
8143 }();
8144
8145 module.exports = {
8146 ReadableStream: ReadableStream,
8147 IsReadableStreamDisturbed: IsReadableStreamDisturbed,
8148 ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,
8149 ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,
8150 ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,
8151 ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize
8152 };
8153
8154 function AcquireReadableStreamBYOBReader(stream) {
8155 return new ReadableStreamBYOBReader(stream);
8156 }
8157
8158 function AcquireReadableStreamDefaultReader(stream) {
8159 return new ReadableStreamDefaultReader(stream);
8160 }
8161
8162 function IsReadableStream(x) {
8163 if (!typeIsObject(x)) {
8164 return false;
8165 }
8166
8167 if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {
8168 return false;
8169 }
8170
8171 return true;
8172 }
8173
8174 function IsReadableStreamDisturbed(stream) {
8175 assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');
8176 return stream._disturbed;
8177 }
8178
8179 function IsReadableStreamLocked(stream) {
8180 assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');
8181
8182 if (stream._reader === undefined) {
8183 return false;
8184 }
8185
8186 return true;
8187 }
8188
8189 function ReadableStreamTee(stream, cloneForBranch2) {
8190 assert(IsReadableStream(stream) === true);
8191 assert(typeof cloneForBranch2 === 'boolean');
8192 var reader = AcquireReadableStreamDefaultReader(stream);
8193 var teeState = {
8194 closedOrErrored: false,
8195 canceled1: false,
8196 canceled2: false,
8197 reason1: undefined,
8198 reason2: undefined
8199 };
8200 teeState.promise = new Promise(function (resolve) {
8201 teeState._resolve = resolve;
8202 });
8203 var pull = create_ReadableStreamTeePullFunction();
8204 pull._reader = reader;
8205 pull._teeState = teeState;
8206 pull._cloneForBranch2 = cloneForBranch2;
8207 var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();
8208 cancel1._stream = stream;
8209 cancel1._teeState = teeState;
8210 var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();
8211 cancel2._stream = stream;
8212 cancel2._teeState = teeState;
8213 var underlyingSource1 = Object.create(Object.prototype);
8214 createDataProperty(underlyingSource1, 'pull', pull);
8215 createDataProperty(underlyingSource1, 'cancel', cancel1);
8216 var branch1Stream = new ReadableStream(underlyingSource1);
8217 var underlyingSource2 = Object.create(Object.prototype);
8218 createDataProperty(underlyingSource2, 'pull', pull);
8219 createDataProperty(underlyingSource2, 'cancel', cancel2);
8220 var branch2Stream = new ReadableStream(underlyingSource2);
8221 pull._branch1 = branch1Stream._readableStreamController;
8222 pull._branch2 = branch2Stream._readableStreamController;
8223
8224 reader._closedPromise["catch"](function (r) {
8225 if (teeState.closedOrErrored === true) {
8226 return;
8227 }
8228
8229 ReadableStreamDefaultControllerError(pull._branch1, r);
8230 ReadableStreamDefaultControllerError(pull._branch2, r);
8231 teeState.closedOrErrored = true;
8232 });
8233
8234 return [branch1Stream, branch2Stream];
8235 }
8236
8237 function create_ReadableStreamTeePullFunction() {
8238 function f() {
8239 var reader = f._reader,
8240 branch1 = f._branch1,
8241 branch2 = f._branch2,
8242 teeState = f._teeState;
8243 return ReadableStreamDefaultReaderRead(reader).then(function (result) {
8244 assert(typeIsObject(result));
8245 var value = result.value;
8246 var done = result.done;
8247 assert(typeof done === 'boolean');
8248
8249 if (done === true && teeState.closedOrErrored === false) {
8250 if (teeState.canceled1 === false) {
8251 ReadableStreamDefaultControllerClose(branch1);
8252 }
8253
8254 if (teeState.canceled2 === false) {
8255 ReadableStreamDefaultControllerClose(branch2);
8256 }
8257
8258 teeState.closedOrErrored = true;
8259 }
8260
8261 if (teeState.closedOrErrored === true) {
8262 return;
8263 }
8264
8265 var value1 = value;
8266 var value2 = value;
8267
8268 if (teeState.canceled1 === false) {
8269 ReadableStreamDefaultControllerEnqueue(branch1, value1);
8270 }
8271
8272 if (teeState.canceled2 === false) {
8273 ReadableStreamDefaultControllerEnqueue(branch2, value2);
8274 }
8275 });
8276 }
8277
8278 return f;
8279 }
8280
8281 function create_ReadableStreamTeeBranch1CancelFunction() {
8282 function f(reason) {
8283 var stream = f._stream,
8284 teeState = f._teeState;
8285 teeState.canceled1 = true;
8286 teeState.reason1 = reason;
8287
8288 if (teeState.canceled2 === true) {
8289 var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
8290 var cancelResult = ReadableStreamCancel(stream, compositeReason);
8291
8292 teeState._resolve(cancelResult);
8293 }
8294
8295 return teeState.promise;
8296 }
8297
8298 return f;
8299 }
8300
8301 function create_ReadableStreamTeeBranch2CancelFunction() {
8302 function f(reason) {
8303 var stream = f._stream,
8304 teeState = f._teeState;
8305 teeState.canceled2 = true;
8306 teeState.reason2 = reason;
8307
8308 if (teeState.canceled1 === true) {
8309 var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);
8310 var cancelResult = ReadableStreamCancel(stream, compositeReason);
8311
8312 teeState._resolve(cancelResult);
8313 }
8314
8315 return teeState.promise;
8316 }
8317
8318 return f;
8319 }
8320
8321 function ReadableStreamAddReadIntoRequest(stream) {
8322 assert(IsReadableStreamBYOBReader(stream._reader) === true);
8323 assert(stream._state === 'readable' || stream._state === 'closed');
8324 var promise = new Promise(function (resolve, reject) {
8325 var readIntoRequest = {
8326 _resolve: resolve,
8327 _reject: reject
8328 };
8329
8330 stream._reader._readIntoRequests.push(readIntoRequest);
8331 });
8332 return promise;
8333 }
8334
8335 function ReadableStreamAddReadRequest(stream) {
8336 assert(IsReadableStreamDefaultReader(stream._reader) === true);
8337 assert(stream._state === 'readable');
8338 var promise = new Promise(function (resolve, reject) {
8339 var readRequest = {
8340 _resolve: resolve,
8341 _reject: reject
8342 };
8343
8344 stream._reader._readRequests.push(readRequest);
8345 });
8346 return promise;
8347 }
8348
8349 function ReadableStreamCancel(stream, reason) {
8350 stream._disturbed = true;
8351
8352 if (stream._state === 'closed') {
8353 return Promise.resolve(undefined);
8354 }
8355
8356 if (stream._state === 'errored') {
8357 return Promise.reject(stream._storedError);
8358 }
8359
8360 ReadableStreamClose(stream);
8361
8362 var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);
8363
8364 return sourceCancelPromise.then(function () {
8365 return undefined;
8366 });
8367 }
8368
8369 function ReadableStreamClose(stream) {
8370 assert(stream._state === 'readable');
8371 stream._state = 'closed';
8372 var reader = stream._reader;
8373
8374 if (reader === undefined) {
8375 return undefined;
8376 }
8377
8378 if (IsReadableStreamDefaultReader(reader) === true) {
8379 for (var i = 0; i < reader._readRequests.length; i++) {
8380 var _resolve = reader._readRequests[i]._resolve;
8381
8382 _resolve(CreateIterResultObject(undefined, true));
8383 }
8384
8385 reader._readRequests = [];
8386 }
8387
8388 defaultReaderClosedPromiseResolve(reader);
8389 return undefined;
8390 }
8391
8392 function ReadableStreamError(stream, e) {
8393 assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');
8394 assert(stream._state === 'readable', 'state must be readable');
8395 stream._state = 'errored';
8396 stream._storedError = e;
8397 var reader = stream._reader;
8398
8399 if (reader === undefined) {
8400 return undefined;
8401 }
8402
8403 if (IsReadableStreamDefaultReader(reader) === true) {
8404 for (var i = 0; i < reader._readRequests.length; i++) {
8405 var readRequest = reader._readRequests[i];
8406
8407 readRequest._reject(e);
8408 }
8409
8410 reader._readRequests = [];
8411 } else {
8412 assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');
8413
8414 for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {
8415 var readIntoRequest = reader._readIntoRequests[_i];
8416
8417 readIntoRequest._reject(e);
8418 }
8419
8420 reader._readIntoRequests = [];
8421 }
8422
8423 defaultReaderClosedPromiseReject(reader, e);
8424
8425 reader._closedPromise["catch"](function () {});
8426 }
8427
8428 function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {
8429 var reader = stream._reader;
8430 assert(reader._readIntoRequests.length > 0);
8431
8432 var readIntoRequest = reader._readIntoRequests.shift();
8433
8434 readIntoRequest._resolve(CreateIterResultObject(chunk, done));
8435 }
8436
8437 function ReadableStreamFulfillReadRequest(stream, chunk, done) {
8438 var reader = stream._reader;
8439 assert(reader._readRequests.length > 0);
8440
8441 var readRequest = reader._readRequests.shift();
8442
8443 readRequest._resolve(CreateIterResultObject(chunk, done));
8444 }
8445
8446 function ReadableStreamGetNumReadIntoRequests(stream) {
8447 return stream._reader._readIntoRequests.length;
8448 }
8449
8450 function ReadableStreamGetNumReadRequests(stream) {
8451 return stream._reader._readRequests.length;
8452 }
8453
8454 function ReadableStreamHasBYOBReader(stream) {
8455 var reader = stream._reader;
8456
8457 if (reader === undefined) {
8458 return false;
8459 }
8460
8461 if (IsReadableStreamBYOBReader(reader) === false) {
8462 return false;
8463 }
8464
8465 return true;
8466 }
8467
8468 function ReadableStreamHasDefaultReader(stream) {
8469 var reader = stream._reader;
8470
8471 if (reader === undefined) {
8472 return false;
8473 }
8474
8475 if (IsReadableStreamDefaultReader(reader) === false) {
8476 return false;
8477 }
8478
8479 return true;
8480 }
8481
8482 var ReadableStreamDefaultReader = function () {
8483 function ReadableStreamDefaultReader(stream) {
8484 _classCallCheck(this, ReadableStreamDefaultReader);
8485
8486 if (IsReadableStream(stream) === false) {
8487 throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');
8488 }
8489
8490 if (IsReadableStreamLocked(stream) === true) {
8491 throw new TypeError('This stream has already been locked for exclusive reading by another reader');
8492 }
8493
8494 ReadableStreamReaderGenericInitialize(this, stream);
8495 this._readRequests = [];
8496 }
8497
8498 _createClass(ReadableStreamDefaultReader, [{
8499 key: 'cancel',
8500 value: function cancel(reason) {
8501 if (IsReadableStreamDefaultReader(this) === false) {
8502 return Promise.reject(defaultReaderBrandCheckException('cancel'));
8503 }
8504
8505 if (this._ownerReadableStream === undefined) {
8506 return Promise.reject(readerLockException('cancel'));
8507 }
8508
8509 return ReadableStreamReaderGenericCancel(this, reason);
8510 }
8511 }, {
8512 key: 'read',
8513 value: function read() {
8514 if (IsReadableStreamDefaultReader(this) === false) {
8515 return Promise.reject(defaultReaderBrandCheckException('read'));
8516 }
8517
8518 if (this._ownerReadableStream === undefined) {
8519 return Promise.reject(readerLockException('read from'));
8520 }
8521
8522 return ReadableStreamDefaultReaderRead(this);
8523 }
8524 }, {
8525 key: 'releaseLock',
8526 value: function releaseLock() {
8527 if (IsReadableStreamDefaultReader(this) === false) {
8528 throw defaultReaderBrandCheckException('releaseLock');
8529 }
8530
8531 if (this._ownerReadableStream === undefined) {
8532 return;
8533 }
8534
8535 if (this._readRequests.length > 0) {
8536 throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
8537 }
8538
8539 ReadableStreamReaderGenericRelease(this);
8540 }
8541 }, {
8542 key: 'closed',
8543 get: function get() {
8544 if (IsReadableStreamDefaultReader(this) === false) {
8545 return Promise.reject(defaultReaderBrandCheckException('closed'));
8546 }
8547
8548 return this._closedPromise;
8549 }
8550 }]);
8551
8552 return ReadableStreamDefaultReader;
8553 }();
8554
8555 var ReadableStreamBYOBReader = function () {
8556 function ReadableStreamBYOBReader(stream) {
8557 _classCallCheck(this, ReadableStreamBYOBReader);
8558
8559 if (!IsReadableStream(stream)) {
8560 throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');
8561 }
8562
8563 if (IsReadableByteStreamController(stream._readableStreamController) === false) {
8564 throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');
8565 }
8566
8567 if (IsReadableStreamLocked(stream)) {
8568 throw new TypeError('This stream has already been locked for exclusive reading by another reader');
8569 }
8570
8571 ReadableStreamReaderGenericInitialize(this, stream);
8572 this._readIntoRequests = [];
8573 }
8574
8575 _createClass(ReadableStreamBYOBReader, [{
8576 key: 'cancel',
8577 value: function cancel(reason) {
8578 if (!IsReadableStreamBYOBReader(this)) {
8579 return Promise.reject(byobReaderBrandCheckException('cancel'));
8580 }
8581
8582 if (this._ownerReadableStream === undefined) {
8583 return Promise.reject(readerLockException('cancel'));
8584 }
8585
8586 return ReadableStreamReaderGenericCancel(this, reason);
8587 }
8588 }, {
8589 key: 'read',
8590 value: function read(view) {
8591 if (!IsReadableStreamBYOBReader(this)) {
8592 return Promise.reject(byobReaderBrandCheckException('read'));
8593 }
8594
8595 if (this._ownerReadableStream === undefined) {
8596 return Promise.reject(readerLockException('read from'));
8597 }
8598
8599 if (!ArrayBuffer.isView(view)) {
8600 return Promise.reject(new TypeError('view must be an array buffer view'));
8601 }
8602
8603 if (view.byteLength === 0) {
8604 return Promise.reject(new TypeError('view must have non-zero byteLength'));
8605 }
8606
8607 return ReadableStreamBYOBReaderRead(this, view);
8608 }
8609 }, {
8610 key: 'releaseLock',
8611 value: function releaseLock() {
8612 if (!IsReadableStreamBYOBReader(this)) {
8613 throw byobReaderBrandCheckException('releaseLock');
8614 }
8615
8616 if (this._ownerReadableStream === undefined) {
8617 return;
8618 }
8619
8620 if (this._readIntoRequests.length > 0) {
8621 throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');
8622 }
8623
8624 ReadableStreamReaderGenericRelease(this);
8625 }
8626 }, {
8627 key: 'closed',
8628 get: function get() {
8629 if (!IsReadableStreamBYOBReader(this)) {
8630 return Promise.reject(byobReaderBrandCheckException('closed'));
8631 }
8632
8633 return this._closedPromise;
8634 }
8635 }]);
8636
8637 return ReadableStreamBYOBReader;
8638 }();
8639
8640 function IsReadableStreamBYOBReader(x) {
8641 if (!typeIsObject(x)) {
8642 return false;
8643 }
8644
8645 if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {
8646 return false;
8647 }
8648
8649 return true;
8650 }
8651
8652 function IsReadableStreamDefaultReader(x) {
8653 if (!typeIsObject(x)) {
8654 return false;
8655 }
8656
8657 if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {
8658 return false;
8659 }
8660
8661 return true;
8662 }
8663
8664 function ReadableStreamReaderGenericInitialize(reader, stream) {
8665 reader._ownerReadableStream = stream;
8666 stream._reader = reader;
8667
8668 if (stream._state === 'readable') {
8669 defaultReaderClosedPromiseInitialize(reader);
8670 } else if (stream._state === 'closed') {
8671 defaultReaderClosedPromiseInitializeAsResolved(reader);
8672 } else {
8673 assert(stream._state === 'errored', 'state must be errored');
8674 defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);
8675
8676 reader._closedPromise["catch"](function () {});
8677 }
8678 }
8679
8680 function ReadableStreamReaderGenericCancel(reader, reason) {
8681 var stream = reader._ownerReadableStream;
8682 assert(stream !== undefined);
8683 return ReadableStreamCancel(stream, reason);
8684 }
8685
8686 function ReadableStreamReaderGenericRelease(reader) {
8687 assert(reader._ownerReadableStream !== undefined);
8688 assert(reader._ownerReadableStream._reader === reader);
8689
8690 if (reader._ownerReadableStream._state === 'readable') {
8691 defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
8692 } else {
8693 defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness'));
8694 }
8695
8696 reader._closedPromise["catch"](function () {});
8697
8698 reader._ownerReadableStream._reader = undefined;
8699 reader._ownerReadableStream = undefined;
8700 }
8701
8702 function ReadableStreamBYOBReaderRead(reader, view) {
8703 var stream = reader._ownerReadableStream;
8704 assert(stream !== undefined);
8705 stream._disturbed = true;
8706
8707 if (stream._state === 'errored') {
8708 return Promise.reject(stream._storedError);
8709 }
8710
8711 return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);
8712 }
8713
8714 function ReadableStreamDefaultReaderRead(reader) {
8715 var stream = reader._ownerReadableStream;
8716 assert(stream !== undefined);
8717 stream._disturbed = true;
8718
8719 if (stream._state === 'closed') {
8720 return Promise.resolve(CreateIterResultObject(undefined, true));
8721 }
8722
8723 if (stream._state === 'errored') {
8724 return Promise.reject(stream._storedError);
8725 }
8726
8727 assert(stream._state === 'readable');
8728 return stream._readableStreamController.__pullSteps();
8729 }
8730
8731 var ReadableStreamDefaultController = function () {
8732 function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {
8733 _classCallCheck(this, ReadableStreamDefaultController);
8734
8735 if (IsReadableStream(stream) === false) {
8736 throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');
8737 }
8738
8739 if (stream._readableStreamController !== undefined) {
8740 throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');
8741 }
8742
8743 this._controlledReadableStream = stream;
8744 this._underlyingSource = underlyingSource;
8745 this._queue = undefined;
8746 this._queueTotalSize = undefined;
8747 ResetQueue(this);
8748 this._started = false;
8749 this._closeRequested = false;
8750 this._pullAgain = false;
8751 this._pulling = false;
8752 var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);
8753 this._strategySize = normalizedStrategy.size;
8754 this._strategyHWM = normalizedStrategy.highWaterMark;
8755 var controller = this;
8756 var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);
8757 Promise.resolve(startResult).then(function () {
8758 controller._started = true;
8759 assert(controller._pulling === false);
8760 assert(controller._pullAgain === false);
8761 ReadableStreamDefaultControllerCallPullIfNeeded(controller);
8762 }, function (r) {
8763 ReadableStreamDefaultControllerErrorIfNeeded(controller, r);
8764 })["catch"](rethrowAssertionErrorRejection);
8765 }
8766
8767 _createClass(ReadableStreamDefaultController, [{
8768 key: 'close',
8769 value: function close() {
8770 if (IsReadableStreamDefaultController(this) === false) {
8771 throw defaultControllerBrandCheckException('close');
8772 }
8773
8774 if (this._closeRequested === true) {
8775 throw new TypeError('The stream has already been closed; do not close it again!');
8776 }
8777
8778 var state = this._controlledReadableStream._state;
8779
8780 if (state !== 'readable') {
8781 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
8782 }
8783
8784 ReadableStreamDefaultControllerClose(this);
8785 }
8786 }, {
8787 key: 'enqueue',
8788 value: function enqueue(chunk) {
8789 if (IsReadableStreamDefaultController(this) === false) {
8790 throw defaultControllerBrandCheckException('enqueue');
8791 }
8792
8793 if (this._closeRequested === true) {
8794 throw new TypeError('stream is closed or draining');
8795 }
8796
8797 var state = this._controlledReadableStream._state;
8798
8799 if (state !== 'readable') {
8800 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
8801 }
8802
8803 return ReadableStreamDefaultControllerEnqueue(this, chunk);
8804 }
8805 }, {
8806 key: 'error',
8807 value: function error(e) {
8808 if (IsReadableStreamDefaultController(this) === false) {
8809 throw defaultControllerBrandCheckException('error');
8810 }
8811
8812 var stream = this._controlledReadableStream;
8813
8814 if (stream._state !== 'readable') {
8815 throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
8816 }
8817
8818 ReadableStreamDefaultControllerError(this, e);
8819 }
8820 }, {
8821 key: '__cancelSteps',
8822 value: function __cancelSteps(reason) {
8823 ResetQueue(this);
8824 return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);
8825 }
8826 }, {
8827 key: '__pullSteps',
8828 value: function __pullSteps() {
8829 var stream = this._controlledReadableStream;
8830
8831 if (this._queue.length > 0) {
8832 var chunk = DequeueValue(this);
8833
8834 if (this._closeRequested === true && this._queue.length === 0) {
8835 ReadableStreamClose(stream);
8836 } else {
8837 ReadableStreamDefaultControllerCallPullIfNeeded(this);
8838 }
8839
8840 return Promise.resolve(CreateIterResultObject(chunk, false));
8841 }
8842
8843 var pendingPromise = ReadableStreamAddReadRequest(stream);
8844 ReadableStreamDefaultControllerCallPullIfNeeded(this);
8845 return pendingPromise;
8846 }
8847 }, {
8848 key: 'desiredSize',
8849 get: function get() {
8850 if (IsReadableStreamDefaultController(this) === false) {
8851 throw defaultControllerBrandCheckException('desiredSize');
8852 }
8853
8854 return ReadableStreamDefaultControllerGetDesiredSize(this);
8855 }
8856 }]);
8857
8858 return ReadableStreamDefaultController;
8859 }();
8860
8861 function IsReadableStreamDefaultController(x) {
8862 if (!typeIsObject(x)) {
8863 return false;
8864 }
8865
8866 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {
8867 return false;
8868 }
8869
8870 return true;
8871 }
8872
8873 function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {
8874 var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);
8875
8876 if (shouldPull === false) {
8877 return undefined;
8878 }
8879
8880 if (controller._pulling === true) {
8881 controller._pullAgain = true;
8882 return undefined;
8883 }
8884
8885 assert(controller._pullAgain === false);
8886 controller._pulling = true;
8887 var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);
8888 pullPromise.then(function () {
8889 controller._pulling = false;
8890
8891 if (controller._pullAgain === true) {
8892 controller._pullAgain = false;
8893 return ReadableStreamDefaultControllerCallPullIfNeeded(controller);
8894 }
8895
8896 return undefined;
8897 }, function (e) {
8898 ReadableStreamDefaultControllerErrorIfNeeded(controller, e);
8899 })["catch"](rethrowAssertionErrorRejection);
8900 return undefined;
8901 }
8902
8903 function ReadableStreamDefaultControllerShouldCallPull(controller) {
8904 var stream = controller._controlledReadableStream;
8905
8906 if (stream._state === 'closed' || stream._state === 'errored') {
8907 return false;
8908 }
8909
8910 if (controller._closeRequested === true) {
8911 return false;
8912 }
8913
8914 if (controller._started === false) {
8915 return false;
8916 }
8917
8918 if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
8919 return true;
8920 }
8921
8922 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
8923
8924 if (desiredSize > 0) {
8925 return true;
8926 }
8927
8928 return false;
8929 }
8930
8931 function ReadableStreamDefaultControllerClose(controller) {
8932 var stream = controller._controlledReadableStream;
8933 assert(controller._closeRequested === false);
8934 assert(stream._state === 'readable');
8935 controller._closeRequested = true;
8936
8937 if (controller._queue.length === 0) {
8938 ReadableStreamClose(stream);
8939 }
8940 }
8941
8942 function ReadableStreamDefaultControllerEnqueue(controller, chunk) {
8943 var stream = controller._controlledReadableStream;
8944 assert(controller._closeRequested === false);
8945 assert(stream._state === 'readable');
8946
8947 if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
8948 ReadableStreamFulfillReadRequest(stream, chunk, false);
8949 } else {
8950 var chunkSize = 1;
8951
8952 if (controller._strategySize !== undefined) {
8953 var strategySize = controller._strategySize;
8954
8955 try {
8956 chunkSize = strategySize(chunk);
8957 } catch (chunkSizeE) {
8958 ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);
8959 throw chunkSizeE;
8960 }
8961 }
8962
8963 try {
8964 EnqueueValueWithSize(controller, chunk, chunkSize);
8965 } catch (enqueueE) {
8966 ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);
8967 throw enqueueE;
8968 }
8969 }
8970
8971 ReadableStreamDefaultControllerCallPullIfNeeded(controller);
8972 return undefined;
8973 }
8974
8975 function ReadableStreamDefaultControllerError(controller, e) {
8976 var stream = controller._controlledReadableStream;
8977 assert(stream._state === 'readable');
8978 ResetQueue(controller);
8979 ReadableStreamError(stream, e);
8980 }
8981
8982 function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {
8983 if (controller._controlledReadableStream._state === 'readable') {
8984 ReadableStreamDefaultControllerError(controller, e);
8985 }
8986 }
8987
8988 function ReadableStreamDefaultControllerGetDesiredSize(controller) {
8989 var stream = controller._controlledReadableStream;
8990 var state = stream._state;
8991
8992 if (state === 'errored') {
8993 return null;
8994 }
8995
8996 if (state === 'closed') {
8997 return 0;
8998 }
8999
9000 return controller._strategyHWM - controller._queueTotalSize;
9001 }
9002
9003 var ReadableStreamBYOBRequest = function () {
9004 function ReadableStreamBYOBRequest(controller, view) {
9005 _classCallCheck(this, ReadableStreamBYOBRequest);
9006
9007 this._associatedReadableByteStreamController = controller;
9008 this._view = view;
9009 }
9010
9011 _createClass(ReadableStreamBYOBRequest, [{
9012 key: 'respond',
9013 value: function respond(bytesWritten) {
9014 if (IsReadableStreamBYOBRequest(this) === false) {
9015 throw byobRequestBrandCheckException('respond');
9016 }
9017
9018 if (this._associatedReadableByteStreamController === undefined) {
9019 throw new TypeError('This BYOB request has been invalidated');
9020 }
9021
9022 ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);
9023 }
9024 }, {
9025 key: 'respondWithNewView',
9026 value: function respondWithNewView(view) {
9027 if (IsReadableStreamBYOBRequest(this) === false) {
9028 throw byobRequestBrandCheckException('respond');
9029 }
9030
9031 if (this._associatedReadableByteStreamController === undefined) {
9032 throw new TypeError('This BYOB request has been invalidated');
9033 }
9034
9035 if (!ArrayBuffer.isView(view)) {
9036 throw new TypeError('You can only respond with array buffer views');
9037 }
9038
9039 ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);
9040 }
9041 }, {
9042 key: 'view',
9043 get: function get() {
9044 return this._view;
9045 }
9046 }]);
9047
9048 return ReadableStreamBYOBRequest;
9049 }();
9050
9051 var ReadableByteStreamController = function () {
9052 function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {
9053 _classCallCheck(this, ReadableByteStreamController);
9054
9055 if (IsReadableStream(stream) === false) {
9056 throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');
9057 }
9058
9059 if (stream._readableStreamController !== undefined) {
9060 throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');
9061 }
9062
9063 this._controlledReadableStream = stream;
9064 this._underlyingByteSource = underlyingByteSource;
9065 this._pullAgain = false;
9066 this._pulling = false;
9067 ReadableByteStreamControllerClearPendingPullIntos(this);
9068 this._queue = this._queueTotalSize = undefined;
9069 ResetQueue(this);
9070 this._closeRequested = false;
9071 this._started = false;
9072 this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);
9073 var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;
9074
9075 if (autoAllocateChunkSize !== undefined) {
9076 if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {
9077 throw new RangeError('autoAllocateChunkSize must be a positive integer');
9078 }
9079 }
9080
9081 this._autoAllocateChunkSize = autoAllocateChunkSize;
9082 this._pendingPullIntos = [];
9083 var controller = this;
9084 var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);
9085 Promise.resolve(startResult).then(function () {
9086 controller._started = true;
9087 assert(controller._pulling === false);
9088 assert(controller._pullAgain === false);
9089 ReadableByteStreamControllerCallPullIfNeeded(controller);
9090 }, function (r) {
9091 if (stream._state === 'readable') {
9092 ReadableByteStreamControllerError(controller, r);
9093 }
9094 })["catch"](rethrowAssertionErrorRejection);
9095 }
9096
9097 _createClass(ReadableByteStreamController, [{
9098 key: 'close',
9099 value: function close() {
9100 if (IsReadableByteStreamController(this) === false) {
9101 throw byteStreamControllerBrandCheckException('close');
9102 }
9103
9104 if (this._closeRequested === true) {
9105 throw new TypeError('The stream has already been closed; do not close it again!');
9106 }
9107
9108 var state = this._controlledReadableStream._state;
9109
9110 if (state !== 'readable') {
9111 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');
9112 }
9113
9114 ReadableByteStreamControllerClose(this);
9115 }
9116 }, {
9117 key: 'enqueue',
9118 value: function enqueue(chunk) {
9119 if (IsReadableByteStreamController(this) === false) {
9120 throw byteStreamControllerBrandCheckException('enqueue');
9121 }
9122
9123 if (this._closeRequested === true) {
9124 throw new TypeError('stream is closed or draining');
9125 }
9126
9127 var state = this._controlledReadableStream._state;
9128
9129 if (state !== 'readable') {
9130 throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');
9131 }
9132
9133 if (!ArrayBuffer.isView(chunk)) {
9134 throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');
9135 }
9136
9137 ReadableByteStreamControllerEnqueue(this, chunk);
9138 }
9139 }, {
9140 key: 'error',
9141 value: function error(e) {
9142 if (IsReadableByteStreamController(this) === false) {
9143 throw byteStreamControllerBrandCheckException('error');
9144 }
9145
9146 var stream = this._controlledReadableStream;
9147
9148 if (stream._state !== 'readable') {
9149 throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');
9150 }
9151
9152 ReadableByteStreamControllerError(this, e);
9153 }
9154 }, {
9155 key: '__cancelSteps',
9156 value: function __cancelSteps(reason) {
9157 if (this._pendingPullIntos.length > 0) {
9158 var firstDescriptor = this._pendingPullIntos[0];
9159 firstDescriptor.bytesFilled = 0;
9160 }
9161
9162 ResetQueue(this);
9163 return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);
9164 }
9165 }, {
9166 key: '__pullSteps',
9167 value: function __pullSteps() {
9168 var stream = this._controlledReadableStream;
9169 assert(ReadableStreamHasDefaultReader(stream) === true);
9170
9171 if (this._queueTotalSize > 0) {
9172 assert(ReadableStreamGetNumReadRequests(stream) === 0);
9173
9174 var entry = this._queue.shift();
9175
9176 this._queueTotalSize -= entry.byteLength;
9177 ReadableByteStreamControllerHandleQueueDrain(this);
9178 var view = void 0;
9179
9180 try {
9181 view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);
9182 } catch (viewE) {
9183 return Promise.reject(viewE);
9184 }
9185
9186 return Promise.resolve(CreateIterResultObject(view, false));
9187 }
9188
9189 var autoAllocateChunkSize = this._autoAllocateChunkSize;
9190
9191 if (autoAllocateChunkSize !== undefined) {
9192 var buffer = void 0;
9193
9194 try {
9195 buffer = new ArrayBuffer(autoAllocateChunkSize);
9196 } catch (bufferE) {
9197 return Promise.reject(bufferE);
9198 }
9199
9200 var pullIntoDescriptor = {
9201 buffer: buffer,
9202 byteOffset: 0,
9203 byteLength: autoAllocateChunkSize,
9204 bytesFilled: 0,
9205 elementSize: 1,
9206 ctor: Uint8Array,
9207 readerType: 'default'
9208 };
9209
9210 this._pendingPullIntos.push(pullIntoDescriptor);
9211 }
9212
9213 var promise = ReadableStreamAddReadRequest(stream);
9214 ReadableByteStreamControllerCallPullIfNeeded(this);
9215 return promise;
9216 }
9217 }, {
9218 key: 'byobRequest',
9219 get: function get() {
9220 if (IsReadableByteStreamController(this) === false) {
9221 throw byteStreamControllerBrandCheckException('byobRequest');
9222 }
9223
9224 if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {
9225 var firstDescriptor = this._pendingPullIntos[0];
9226 var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);
9227 this._byobRequest = new ReadableStreamBYOBRequest(this, view);
9228 }
9229
9230 return this._byobRequest;
9231 }
9232 }, {
9233 key: 'desiredSize',
9234 get: function get() {
9235 if (IsReadableByteStreamController(this) === false) {
9236 throw byteStreamControllerBrandCheckException('desiredSize');
9237 }
9238
9239 return ReadableByteStreamControllerGetDesiredSize(this);
9240 }
9241 }]);
9242
9243 return ReadableByteStreamController;
9244 }();
9245
9246 function IsReadableByteStreamController(x) {
9247 if (!typeIsObject(x)) {
9248 return false;
9249 }
9250
9251 if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {
9252 return false;
9253 }
9254
9255 return true;
9256 }
9257
9258 function IsReadableStreamBYOBRequest(x) {
9259 if (!typeIsObject(x)) {
9260 return false;
9261 }
9262
9263 if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {
9264 return false;
9265 }
9266
9267 return true;
9268 }
9269
9270 function ReadableByteStreamControllerCallPullIfNeeded(controller) {
9271 var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);
9272
9273 if (shouldPull === false) {
9274 return undefined;
9275 }
9276
9277 if (controller._pulling === true) {
9278 controller._pullAgain = true;
9279 return undefined;
9280 }
9281
9282 assert(controller._pullAgain === false);
9283 controller._pulling = true;
9284 var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);
9285 pullPromise.then(function () {
9286 controller._pulling = false;
9287
9288 if (controller._pullAgain === true) {
9289 controller._pullAgain = false;
9290 ReadableByteStreamControllerCallPullIfNeeded(controller);
9291 }
9292 }, function (e) {
9293 if (controller._controlledReadableStream._state === 'readable') {
9294 ReadableByteStreamControllerError(controller, e);
9295 }
9296 })["catch"](rethrowAssertionErrorRejection);
9297 return undefined;
9298 }
9299
9300 function ReadableByteStreamControllerClearPendingPullIntos(controller) {
9301 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
9302 controller._pendingPullIntos = [];
9303 }
9304
9305 function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {
9306 assert(stream._state !== 'errored', 'state must not be errored');
9307 var done = false;
9308
9309 if (stream._state === 'closed') {
9310 assert(pullIntoDescriptor.bytesFilled === 0);
9311 done = true;
9312 }
9313
9314 var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
9315
9316 if (pullIntoDescriptor.readerType === 'default') {
9317 ReadableStreamFulfillReadRequest(stream, filledView, done);
9318 } else {
9319 assert(pullIntoDescriptor.readerType === 'byob');
9320 ReadableStreamFulfillReadIntoRequest(stream, filledView, done);
9321 }
9322 }
9323
9324 function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {
9325 var bytesFilled = pullIntoDescriptor.bytesFilled;
9326 var elementSize = pullIntoDescriptor.elementSize;
9327 assert(bytesFilled <= pullIntoDescriptor.byteLength);
9328 assert(bytesFilled % elementSize === 0);
9329 return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);
9330 }
9331
9332 function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {
9333 controller._queue.push({
9334 buffer: buffer,
9335 byteOffset: byteOffset,
9336 byteLength: byteLength
9337 });
9338
9339 controller._queueTotalSize += byteLength;
9340 }
9341
9342 function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {
9343 var elementSize = pullIntoDescriptor.elementSize;
9344 var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;
9345 var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);
9346 var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;
9347 var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;
9348 var totalBytesToCopyRemaining = maxBytesToCopy;
9349 var ready = false;
9350
9351 if (maxAlignedBytes > currentAlignedBytes) {
9352 totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;
9353 ready = true;
9354 }
9355
9356 var queue = controller._queue;
9357
9358 while (totalBytesToCopyRemaining > 0) {
9359 var headOfQueue = queue[0];
9360 var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);
9361 var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
9362 ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);
9363
9364 if (headOfQueue.byteLength === bytesToCopy) {
9365 queue.shift();
9366 } else {
9367 headOfQueue.byteOffset += bytesToCopy;
9368 headOfQueue.byteLength -= bytesToCopy;
9369 }
9370
9371 controller._queueTotalSize -= bytesToCopy;
9372 ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);
9373 totalBytesToCopyRemaining -= bytesToCopy;
9374 }
9375
9376 if (ready === false) {
9377 assert(controller._queueTotalSize === 0, 'queue must be empty');
9378 assert(pullIntoDescriptor.bytesFilled > 0);
9379 assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);
9380 }
9381
9382 return ready;
9383 }
9384
9385 function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {
9386 assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);
9387 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
9388 pullIntoDescriptor.bytesFilled += size;
9389 }
9390
9391 function ReadableByteStreamControllerHandleQueueDrain(controller) {
9392 assert(controller._controlledReadableStream._state === 'readable');
9393
9394 if (controller._queueTotalSize === 0 && controller._closeRequested === true) {
9395 ReadableStreamClose(controller._controlledReadableStream);
9396 } else {
9397 ReadableByteStreamControllerCallPullIfNeeded(controller);
9398 }
9399 }
9400
9401 function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {
9402 if (controller._byobRequest === undefined) {
9403 return;
9404 }
9405
9406 controller._byobRequest._associatedReadableByteStreamController = undefined;
9407 controller._byobRequest._view = undefined;
9408 controller._byobRequest = undefined;
9409 }
9410
9411 function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {
9412 assert(controller._closeRequested === false);
9413
9414 while (controller._pendingPullIntos.length > 0) {
9415 if (controller._queueTotalSize === 0) {
9416 return;
9417 }
9418
9419 var pullIntoDescriptor = controller._pendingPullIntos[0];
9420
9421 if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
9422 ReadableByteStreamControllerShiftPendingPullInto(controller);
9423 ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
9424 }
9425 }
9426 }
9427
9428 function ReadableByteStreamControllerPullInto(controller, view) {
9429 var stream = controller._controlledReadableStream;
9430 var elementSize = 1;
9431
9432 if (view.constructor !== DataView) {
9433 elementSize = view.constructor.BYTES_PER_ELEMENT;
9434 }
9435
9436 var ctor = view.constructor;
9437 var pullIntoDescriptor = {
9438 buffer: view.buffer,
9439 byteOffset: view.byteOffset,
9440 byteLength: view.byteLength,
9441 bytesFilled: 0,
9442 elementSize: elementSize,
9443 ctor: ctor,
9444 readerType: 'byob'
9445 };
9446
9447 if (controller._pendingPullIntos.length > 0) {
9448 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
9449
9450 controller._pendingPullIntos.push(pullIntoDescriptor);
9451
9452 return ReadableStreamAddReadIntoRequest(stream);
9453 }
9454
9455 if (stream._state === 'closed') {
9456 var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);
9457 return Promise.resolve(CreateIterResultObject(emptyView, true));
9458 }
9459
9460 if (controller._queueTotalSize > 0) {
9461 if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {
9462 var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);
9463 ReadableByteStreamControllerHandleQueueDrain(controller);
9464 return Promise.resolve(CreateIterResultObject(filledView, false));
9465 }
9466
9467 if (controller._closeRequested === true) {
9468 var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
9469 ReadableByteStreamControllerError(controller, e);
9470 return Promise.reject(e);
9471 }
9472 }
9473
9474 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
9475
9476 controller._pendingPullIntos.push(pullIntoDescriptor);
9477
9478 var promise = ReadableStreamAddReadIntoRequest(stream);
9479 ReadableByteStreamControllerCallPullIfNeeded(controller);
9480 return promise;
9481 }
9482
9483 function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {
9484 firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);
9485 assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');
9486 var stream = controller._controlledReadableStream;
9487
9488 if (ReadableStreamHasBYOBReader(stream) === true) {
9489 while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {
9490 var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);
9491 ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);
9492 }
9493 }
9494 }
9495
9496 function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {
9497 if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {
9498 throw new RangeError('bytesWritten out of range');
9499 }
9500
9501 ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);
9502
9503 if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {
9504 return;
9505 }
9506
9507 ReadableByteStreamControllerShiftPendingPullInto(controller);
9508 var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;
9509
9510 if (remainderSize > 0) {
9511 var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;
9512 var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);
9513 ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);
9514 }
9515
9516 pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);
9517 pullIntoDescriptor.bytesFilled -= remainderSize;
9518 ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);
9519 ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
9520 }
9521
9522 function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {
9523 var firstDescriptor = controller._pendingPullIntos[0];
9524 var stream = controller._controlledReadableStream;
9525
9526 if (stream._state === 'closed') {
9527 if (bytesWritten !== 0) {
9528 throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');
9529 }
9530
9531 ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);
9532 } else {
9533 assert(stream._state === 'readable');
9534 ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);
9535 }
9536 }
9537
9538 function ReadableByteStreamControllerShiftPendingPullInto(controller) {
9539 var descriptor = controller._pendingPullIntos.shift();
9540
9541 ReadableByteStreamControllerInvalidateBYOBRequest(controller);
9542 return descriptor;
9543 }
9544
9545 function ReadableByteStreamControllerShouldCallPull(controller) {
9546 var stream = controller._controlledReadableStream;
9547
9548 if (stream._state !== 'readable') {
9549 return false;
9550 }
9551
9552 if (controller._closeRequested === true) {
9553 return false;
9554 }
9555
9556 if (controller._started === false) {
9557 return false;
9558 }
9559
9560 if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {
9561 return true;
9562 }
9563
9564 if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {
9565 return true;
9566 }
9567
9568 if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {
9569 return true;
9570 }
9571
9572 return false;
9573 }
9574
9575 function ReadableByteStreamControllerClose(controller) {
9576 var stream = controller._controlledReadableStream;
9577 assert(controller._closeRequested === false);
9578 assert(stream._state === 'readable');
9579
9580 if (controller._queueTotalSize > 0) {
9581 controller._closeRequested = true;
9582 return;
9583 }
9584
9585 if (controller._pendingPullIntos.length > 0) {
9586 var firstPendingPullInto = controller._pendingPullIntos[0];
9587
9588 if (firstPendingPullInto.bytesFilled > 0) {
9589 var e = new TypeError('Insufficient bytes to fill elements in the given buffer');
9590 ReadableByteStreamControllerError(controller, e);
9591 throw e;
9592 }
9593 }
9594
9595 ReadableStreamClose(stream);
9596 }
9597
9598 function ReadableByteStreamControllerEnqueue(controller, chunk) {
9599 var stream = controller._controlledReadableStream;
9600 assert(controller._closeRequested === false);
9601 assert(stream._state === 'readable');
9602 var buffer = chunk.buffer;
9603 var byteOffset = chunk.byteOffset;
9604 var byteLength = chunk.byteLength;
9605 var transferredBuffer = TransferArrayBuffer(buffer);
9606
9607 if (ReadableStreamHasDefaultReader(stream) === true) {
9608 if (ReadableStreamGetNumReadRequests(stream) === 0) {
9609 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
9610 } else {
9611 assert(controller._queue.length === 0);
9612 var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);
9613 ReadableStreamFulfillReadRequest(stream, transferredView, false);
9614 }
9615 } else if (ReadableStreamHasBYOBReader(stream) === true) {
9616 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
9617 ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);
9618 } else {
9619 assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');
9620 ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);
9621 }
9622 }
9623
9624 function ReadableByteStreamControllerError(controller, e) {
9625 var stream = controller._controlledReadableStream;
9626 assert(stream._state === 'readable');
9627 ReadableByteStreamControllerClearPendingPullIntos(controller);
9628 ResetQueue(controller);
9629 ReadableStreamError(stream, e);
9630 }
9631
9632 function ReadableByteStreamControllerGetDesiredSize(controller) {
9633 var stream = controller._controlledReadableStream;
9634 var state = stream._state;
9635
9636 if (state === 'errored') {
9637 return null;
9638 }
9639
9640 if (state === 'closed') {
9641 return 0;
9642 }
9643
9644 return controller._strategyHWM - controller._queueTotalSize;
9645 }
9646
9647 function ReadableByteStreamControllerRespond(controller, bytesWritten) {
9648 bytesWritten = Number(bytesWritten);
9649
9650 if (IsFiniteNonNegativeNumber(bytesWritten) === false) {
9651 throw new RangeError('bytesWritten must be a finite');
9652 }
9653
9654 assert(controller._pendingPullIntos.length > 0);
9655 ReadableByteStreamControllerRespondInternal(controller, bytesWritten);
9656 }
9657
9658 function ReadableByteStreamControllerRespondWithNewView(controller, view) {
9659 assert(controller._pendingPullIntos.length > 0);
9660 var firstDescriptor = controller._pendingPullIntos[0];
9661
9662 if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {
9663 throw new RangeError('The region specified by view does not match byobRequest');
9664 }
9665
9666 if (firstDescriptor.byteLength !== view.byteLength) {
9667 throw new RangeError('The buffer of view has different capacity than byobRequest');
9668 }
9669
9670 firstDescriptor.buffer = view.buffer;
9671 ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
9672 }
9673
9674 function streamBrandCheckException(name) {
9675 return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');
9676 }
9677
9678 function readerLockException(name) {
9679 return new TypeError('Cannot ' + name + ' a stream using a released reader');
9680 }
9681
9682 function defaultReaderBrandCheckException(name) {
9683 return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');
9684 }
9685
9686 function defaultReaderClosedPromiseInitialize(reader) {
9687 reader._closedPromise = new Promise(function (resolve, reject) {
9688 reader._closedPromise_resolve = resolve;
9689 reader._closedPromise_reject = reject;
9690 });
9691 }
9692
9693 function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {
9694 reader._closedPromise = Promise.reject(reason);
9695 reader._closedPromise_resolve = undefined;
9696 reader._closedPromise_reject = undefined;
9697 }
9698
9699 function defaultReaderClosedPromiseInitializeAsResolved(reader) {
9700 reader._closedPromise = Promise.resolve(undefined);
9701 reader._closedPromise_resolve = undefined;
9702 reader._closedPromise_reject = undefined;
9703 }
9704
9705 function defaultReaderClosedPromiseReject(reader, reason) {
9706 assert(reader._closedPromise_resolve !== undefined);
9707 assert(reader._closedPromise_reject !== undefined);
9708
9709 reader._closedPromise_reject(reason);
9710
9711 reader._closedPromise_resolve = undefined;
9712 reader._closedPromise_reject = undefined;
9713 }
9714
9715 function defaultReaderClosedPromiseResetToRejected(reader, reason) {
9716 assert(reader._closedPromise_resolve === undefined);
9717 assert(reader._closedPromise_reject === undefined);
9718 reader._closedPromise = Promise.reject(reason);
9719 }
9720
9721 function defaultReaderClosedPromiseResolve(reader) {
9722 assert(reader._closedPromise_resolve !== undefined);
9723 assert(reader._closedPromise_reject !== undefined);
9724
9725 reader._closedPromise_resolve(undefined);
9726
9727 reader._closedPromise_resolve = undefined;
9728 reader._closedPromise_reject = undefined;
9729 }
9730
9731 function byobReaderBrandCheckException(name) {
9732 return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');
9733 }
9734
9735 function defaultControllerBrandCheckException(name) {
9736 return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');
9737 }
9738
9739 function byobRequestBrandCheckException(name) {
9740 return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');
9741 }
9742
9743 function byteStreamControllerBrandCheckException(name) {
9744 return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');
9745 }
9746
9747 function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {
9748 try {
9749 Promise.prototype.then.call(promise, undefined, function () {});
9750 } catch (e) {}
9751 }
9752}, function (module, exports, __w_pdfjs_require__) {
9753 "use strict";
9754
9755 var transformStream = __w_pdfjs_require__(6);
9756
9757 var readableStream = __w_pdfjs_require__(4);
9758
9759 var writableStream = __w_pdfjs_require__(2);
9760
9761 exports.TransformStream = transformStream.TransformStream;
9762 exports.ReadableStream = readableStream.ReadableStream;
9763 exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;
9764 exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;
9765 exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;
9766 exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;
9767 exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;
9768 exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;
9769 exports.IsWritableStream = writableStream.IsWritableStream;
9770 exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;
9771 exports.WritableStream = writableStream.WritableStream;
9772 exports.WritableStreamAbort = writableStream.WritableStreamAbort;
9773 exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;
9774 exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;
9775 exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;
9776 exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;
9777}, function (module, exports, __w_pdfjs_require__) {
9778 "use strict";
9779
9780 var _createClass = function () {
9781 function defineProperties(target, props) {
9782 for (var i = 0; i < props.length; i++) {
9783 var descriptor = props[i];
9784 descriptor.enumerable = descriptor.enumerable || false;
9785 descriptor.configurable = true;
9786 if ("value" in descriptor) descriptor.writable = true;
9787 Object.defineProperty(target, descriptor.key, descriptor);
9788 }
9789 }
9790
9791 return function (Constructor, protoProps, staticProps) {
9792 if (protoProps) defineProperties(Constructor.prototype, protoProps);
9793 if (staticProps) defineProperties(Constructor, staticProps);
9794 return Constructor;
9795 };
9796 }();
9797
9798 function _classCallCheck(instance, Constructor) {
9799 if (!(instance instanceof Constructor)) {
9800 throw new TypeError("Cannot call a class as a function");
9801 }
9802 }
9803
9804 var _require = __w_pdfjs_require__(1),
9805 assert = _require.assert;
9806
9807 var _require2 = __w_pdfjs_require__(0),
9808 InvokeOrNoop = _require2.InvokeOrNoop,
9809 PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,
9810 PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,
9811 typeIsObject = _require2.typeIsObject;
9812
9813 var _require3 = __w_pdfjs_require__(4),
9814 ReadableStream = _require3.ReadableStream,
9815 ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,
9816 ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,
9817 ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,
9818 ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;
9819
9820 var _require4 = __w_pdfjs_require__(2),
9821 WritableStream = _require4.WritableStream,
9822 WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;
9823
9824 function TransformStreamCloseReadable(transformStream) {
9825 if (transformStream._errored === true) {
9826 throw new TypeError('TransformStream is already errored');
9827 }
9828
9829 if (transformStream._readableClosed === true) {
9830 throw new TypeError('Readable side is already closed');
9831 }
9832
9833 TransformStreamCloseReadableInternal(transformStream);
9834 }
9835
9836 function TransformStreamEnqueueToReadable(transformStream, chunk) {
9837 if (transformStream._errored === true) {
9838 throw new TypeError('TransformStream is already errored');
9839 }
9840
9841 if (transformStream._readableClosed === true) {
9842 throw new TypeError('Readable side is already closed');
9843 }
9844
9845 var controller = transformStream._readableController;
9846
9847 try {
9848 ReadableStreamDefaultControllerEnqueue(controller, chunk);
9849 } catch (e) {
9850 transformStream._readableClosed = true;
9851 TransformStreamErrorIfNeeded(transformStream, e);
9852 throw transformStream._storedError;
9853 }
9854
9855 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);
9856 var maybeBackpressure = desiredSize <= 0;
9857
9858 if (maybeBackpressure === true && transformStream._backpressure === false) {
9859 TransformStreamSetBackpressure(transformStream, true);
9860 }
9861 }
9862
9863 function TransformStreamError(transformStream, e) {
9864 if (transformStream._errored === true) {
9865 throw new TypeError('TransformStream is already errored');
9866 }
9867
9868 TransformStreamErrorInternal(transformStream, e);
9869 }
9870
9871 function TransformStreamCloseReadableInternal(transformStream) {
9872 assert(transformStream._errored === false);
9873 assert(transformStream._readableClosed === false);
9874
9875 try {
9876 ReadableStreamDefaultControllerClose(transformStream._readableController);
9877 } catch (e) {
9878 assert(false);
9879 }
9880
9881 transformStream._readableClosed = true;
9882 }
9883
9884 function TransformStreamErrorIfNeeded(transformStream, e) {
9885 if (transformStream._errored === false) {
9886 TransformStreamErrorInternal(transformStream, e);
9887 }
9888 }
9889
9890 function TransformStreamErrorInternal(transformStream, e) {
9891 assert(transformStream._errored === false);
9892 transformStream._errored = true;
9893 transformStream._storedError = e;
9894
9895 if (transformStream._writableDone === false) {
9896 WritableStreamDefaultControllerError(transformStream._writableController, e);
9897 }
9898
9899 if (transformStream._readableClosed === false) {
9900 ReadableStreamDefaultControllerError(transformStream._readableController, e);
9901 }
9902 }
9903
9904 function TransformStreamReadableReadyPromise(transformStream) {
9905 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
9906
9907 if (transformStream._backpressure === false) {
9908 return Promise.resolve();
9909 }
9910
9911 assert(transformStream._backpressure === true, '_backpressure should have been initialized');
9912 return transformStream._backpressureChangePromise;
9913 }
9914
9915 function TransformStreamSetBackpressure(transformStream, backpressure) {
9916 assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');
9917
9918 if (transformStream._backpressureChangePromise !== undefined) {
9919 transformStream._backpressureChangePromise_resolve(backpressure);
9920 }
9921
9922 transformStream._backpressureChangePromise = new Promise(function (resolve) {
9923 transformStream._backpressureChangePromise_resolve = resolve;
9924 });
9925
9926 transformStream._backpressureChangePromise.then(function (resolution) {
9927 assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');
9928 });
9929
9930 transformStream._backpressure = backpressure;
9931 }
9932
9933 function TransformStreamDefaultTransform(chunk, transformStreamController) {
9934 var transformStream = transformStreamController._controlledTransformStream;
9935 TransformStreamEnqueueToReadable(transformStream, chunk);
9936 return Promise.resolve();
9937 }
9938
9939 function TransformStreamTransform(transformStream, chunk) {
9940 assert(transformStream._errored === false);
9941 assert(transformStream._transforming === false);
9942 assert(transformStream._backpressure === false);
9943 transformStream._transforming = true;
9944 var transformer = transformStream._transformer;
9945 var controller = transformStream._transformStreamController;
9946 var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);
9947 return transformPromise.then(function () {
9948 transformStream._transforming = false;
9949 return TransformStreamReadableReadyPromise(transformStream);
9950 }, function (e) {
9951 TransformStreamErrorIfNeeded(transformStream, e);
9952 return Promise.reject(e);
9953 });
9954 }
9955
9956 function IsTransformStreamDefaultController(x) {
9957 if (!typeIsObject(x)) {
9958 return false;
9959 }
9960
9961 if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {
9962 return false;
9963 }
9964
9965 return true;
9966 }
9967
9968 function IsTransformStream(x) {
9969 if (!typeIsObject(x)) {
9970 return false;
9971 }
9972
9973 if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {
9974 return false;
9975 }
9976
9977 return true;
9978 }
9979
9980 var TransformStreamSink = function () {
9981 function TransformStreamSink(transformStream, startPromise) {
9982 _classCallCheck(this, TransformStreamSink);
9983
9984 this._transformStream = transformStream;
9985 this._startPromise = startPromise;
9986 }
9987
9988 _createClass(TransformStreamSink, [{
9989 key: 'start',
9990 value: function start(c) {
9991 var transformStream = this._transformStream;
9992 transformStream._writableController = c;
9993 return this._startPromise.then(function () {
9994 return TransformStreamReadableReadyPromise(transformStream);
9995 });
9996 }
9997 }, {
9998 key: 'write',
9999 value: function write(chunk) {
10000 var transformStream = this._transformStream;
10001 return TransformStreamTransform(transformStream, chunk);
10002 }
10003 }, {
10004 key: 'abort',
10005 value: function abort() {
10006 var transformStream = this._transformStream;
10007 transformStream._writableDone = true;
10008 TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));
10009 }
10010 }, {
10011 key: 'close',
10012 value: function close() {
10013 var transformStream = this._transformStream;
10014 assert(transformStream._transforming === false);
10015 transformStream._writableDone = true;
10016 var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);
10017 return flushPromise.then(function () {
10018 if (transformStream._errored === true) {
10019 return Promise.reject(transformStream._storedError);
10020 }
10021
10022 if (transformStream._readableClosed === false) {
10023 TransformStreamCloseReadableInternal(transformStream);
10024 }
10025
10026 return Promise.resolve();
10027 })["catch"](function (r) {
10028 TransformStreamErrorIfNeeded(transformStream, r);
10029 return Promise.reject(transformStream._storedError);
10030 });
10031 }
10032 }]);
10033
10034 return TransformStreamSink;
10035 }();
10036
10037 var TransformStreamSource = function () {
10038 function TransformStreamSource(transformStream, startPromise) {
10039 _classCallCheck(this, TransformStreamSource);
10040
10041 this._transformStream = transformStream;
10042 this._startPromise = startPromise;
10043 }
10044
10045 _createClass(TransformStreamSource, [{
10046 key: 'start',
10047 value: function start(c) {
10048 var transformStream = this._transformStream;
10049 transformStream._readableController = c;
10050 return this._startPromise.then(function () {
10051 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
10052
10053 if (transformStream._backpressure === true) {
10054 return Promise.resolve();
10055 }
10056
10057 assert(transformStream._backpressure === false, '_backpressure should have been initialized');
10058 return transformStream._backpressureChangePromise;
10059 });
10060 }
10061 }, {
10062 key: 'pull',
10063 value: function pull() {
10064 var transformStream = this._transformStream;
10065 assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');
10066 assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');
10067 TransformStreamSetBackpressure(transformStream, false);
10068 return transformStream._backpressureChangePromise;
10069 }
10070 }, {
10071 key: 'cancel',
10072 value: function cancel() {
10073 var transformStream = this._transformStream;
10074 transformStream._readableClosed = true;
10075 TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));
10076 }
10077 }]);
10078
10079 return TransformStreamSource;
10080 }();
10081
10082 var TransformStreamDefaultController = function () {
10083 function TransformStreamDefaultController(transformStream) {
10084 _classCallCheck(this, TransformStreamDefaultController);
10085
10086 if (IsTransformStream(transformStream) === false) {
10087 throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');
10088 }
10089
10090 if (transformStream._transformStreamController !== undefined) {
10091 throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');
10092 }
10093
10094 this._controlledTransformStream = transformStream;
10095 }
10096
10097 _createClass(TransformStreamDefaultController, [{
10098 key: 'enqueue',
10099 value: function enqueue(chunk) {
10100 if (IsTransformStreamDefaultController(this) === false) {
10101 throw defaultControllerBrandCheckException('enqueue');
10102 }
10103
10104 TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);
10105 }
10106 }, {
10107 key: 'close',
10108 value: function close() {
10109 if (IsTransformStreamDefaultController(this) === false) {
10110 throw defaultControllerBrandCheckException('close');
10111 }
10112
10113 TransformStreamCloseReadable(this._controlledTransformStream);
10114 }
10115 }, {
10116 key: 'error',
10117 value: function error(reason) {
10118 if (IsTransformStreamDefaultController(this) === false) {
10119 throw defaultControllerBrandCheckException('error');
10120 }
10121
10122 TransformStreamError(this._controlledTransformStream, reason);
10123 }
10124 }, {
10125 key: 'desiredSize',
10126 get: function get() {
10127 if (IsTransformStreamDefaultController(this) === false) {
10128 throw defaultControllerBrandCheckException('desiredSize');
10129 }
10130
10131 var transformStream = this._controlledTransformStream;
10132 var readableController = transformStream._readableController;
10133 return ReadableStreamDefaultControllerGetDesiredSize(readableController);
10134 }
10135 }]);
10136
10137 return TransformStreamDefaultController;
10138 }();
10139
10140 var TransformStream = function () {
10141 function TransformStream() {
10142 var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10143
10144 _classCallCheck(this, TransformStream);
10145
10146 this._transformer = transformer;
10147 var readableStrategy = transformer.readableStrategy,
10148 writableStrategy = transformer.writableStrategy;
10149 this._transforming = false;
10150 this._errored = false;
10151 this._storedError = undefined;
10152 this._writableController = undefined;
10153 this._readableController = undefined;
10154 this._transformStreamController = undefined;
10155 this._writableDone = false;
10156 this._readableClosed = false;
10157 this._backpressure = undefined;
10158 this._backpressureChangePromise = undefined;
10159 this._backpressureChangePromise_resolve = undefined;
10160 this._transformStreamController = new TransformStreamDefaultController(this);
10161 var startPromise_resolve = void 0;
10162 var startPromise = new Promise(function (resolve) {
10163 startPromise_resolve = resolve;
10164 });
10165 var source = new TransformStreamSource(this, startPromise);
10166 this._readable = new ReadableStream(source, readableStrategy);
10167 var sink = new TransformStreamSink(this, startPromise);
10168 this._writable = new WritableStream(sink, writableStrategy);
10169 assert(this._writableController !== undefined);
10170 assert(this._readableController !== undefined);
10171 var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);
10172 TransformStreamSetBackpressure(this, desiredSize <= 0);
10173 var transformStream = this;
10174 var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);
10175 startPromise_resolve(startResult);
10176 startPromise["catch"](function (e) {
10177 if (transformStream._errored === false) {
10178 transformStream._errored = true;
10179 transformStream._storedError = e;
10180 }
10181 });
10182 }
10183
10184 _createClass(TransformStream, [{
10185 key: 'readable',
10186 get: function get() {
10187 if (IsTransformStream(this) === false) {
10188 throw streamBrandCheckException('readable');
10189 }
10190
10191 return this._readable;
10192 }
10193 }, {
10194 key: 'writable',
10195 get: function get() {
10196 if (IsTransformStream(this) === false) {
10197 throw streamBrandCheckException('writable');
10198 }
10199
10200 return this._writable;
10201 }
10202 }]);
10203
10204 return TransformStream;
10205 }();
10206
10207 module.exports = {
10208 TransformStream: TransformStream
10209 };
10210
10211 function defaultControllerBrandCheckException(name) {
10212 return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');
10213 }
10214
10215 function streamBrandCheckException(name) {
10216 return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
10217 }
10218}, function (module, exports, __w_pdfjs_require__) {
10219 module.exports = __w_pdfjs_require__(5);
10220}]));
10221
10222/***/ }),
10223/* 149 */
10224/***/ (function(module, exports, __w_pdfjs_require__) {
10225
10226"use strict";
10227
10228
10229function _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); }
10230
10231{
10232 var isURLSupported = false;
10233
10234 try {
10235 if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) {
10236 var u = new URL('b', 'http://a');
10237 u.pathname = 'c%20d';
10238 isURLSupported = u.href === 'http://a/c%20d';
10239 }
10240 } catch (ex) {}
10241
10242 if (isURLSupported) {
10243 exports.URL = URL;
10244 } else {
10245 var PolyfillURL = __w_pdfjs_require__(150).URL;
10246
10247 var OriginalURL = __w_pdfjs_require__(7).URL;
10248
10249 if (OriginalURL) {
10250 PolyfillURL.createObjectURL = function (blob) {
10251 return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
10252 };
10253
10254 PolyfillURL.revokeObjectURL = function (url) {
10255 OriginalURL.revokeObjectURL(url);
10256 };
10257 }
10258
10259 exports.URL = PolyfillURL;
10260 }
10261}
10262
10263/***/ }),
10264/* 150 */
10265/***/ (function(module, exports, __w_pdfjs_require__) {
10266
10267"use strict";
10268
10269
10270(function URLConstructorClosure() {
10271 'use strict';
10272
10273 var relative = Object.create(null);
10274 relative['ftp'] = 21;
10275 relative['file'] = 0;
10276 relative['gopher'] = 70;
10277 relative['http'] = 80;
10278 relative['https'] = 443;
10279 relative['ws'] = 80;
10280 relative['wss'] = 443;
10281 var relativePathDotMapping = Object.create(null);
10282 relativePathDotMapping['%2e'] = '.';
10283 relativePathDotMapping['.%2e'] = '..';
10284 relativePathDotMapping['%2e.'] = '..';
10285 relativePathDotMapping['%2e%2e'] = '..';
10286
10287 function isRelativeScheme(scheme) {
10288 return relative[scheme] !== undefined;
10289 }
10290
10291 function invalid() {
10292 clear.call(this);
10293 this._isInvalid = true;
10294 }
10295
10296 function IDNAToASCII(h) {
10297 if (h === '') {
10298 invalid.call(this);
10299 }
10300
10301 return h.toLowerCase();
10302 }
10303
10304 function percentEscape(c) {
10305 var unicode = c.charCodeAt(0);
10306
10307 if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) {
10308 return c;
10309 }
10310
10311 return encodeURIComponent(c);
10312 }
10313
10314 function percentEscapeQuery(c) {
10315 var unicode = c.charCodeAt(0);
10316
10317 if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) {
10318 return c;
10319 }
10320
10321 return encodeURIComponent(c);
10322 }
10323
10324 var EOF,
10325 ALPHA = /[a-zA-Z]/,
10326 ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
10327
10328 function parse(input, stateOverride, base) {
10329 function err(message) {
10330 errors.push(message);
10331 }
10332
10333 var state = stateOverride || 'scheme start',
10334 cursor = 0,
10335 buffer = '',
10336 seenAt = false,
10337 seenBracket = false,
10338 errors = [];
10339
10340 loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) {
10341 var c = input[cursor];
10342
10343 switch (state) {
10344 case 'scheme start':
10345 if (c && ALPHA.test(c)) {
10346 buffer += c.toLowerCase();
10347 state = 'scheme';
10348 } else if (!stateOverride) {
10349 buffer = '';
10350 state = 'no scheme';
10351 continue;
10352 } else {
10353 err('Invalid scheme.');
10354 break loop;
10355 }
10356
10357 break;
10358
10359 case 'scheme':
10360 if (c && ALPHANUMERIC.test(c)) {
10361 buffer += c.toLowerCase();
10362 } else if (c === ':') {
10363 this._scheme = buffer;
10364 buffer = '';
10365
10366 if (stateOverride) {
10367 break loop;
10368 }
10369
10370 if (isRelativeScheme(this._scheme)) {
10371 this._isRelative = true;
10372 }
10373
10374 if (this._scheme === 'file') {
10375 state = 'relative';
10376 } else if (this._isRelative && base && base._scheme === this._scheme) {
10377 state = 'relative or authority';
10378 } else if (this._isRelative) {
10379 state = 'authority first slash';
10380 } else {
10381 state = 'scheme data';
10382 }
10383 } else if (!stateOverride) {
10384 buffer = '';
10385 cursor = 0;
10386 state = 'no scheme';
10387 continue;
10388 } else if (c === EOF) {
10389 break loop;
10390 } else {
10391 err('Code point not allowed in scheme: ' + c);
10392 break loop;
10393 }
10394
10395 break;
10396
10397 case 'scheme data':
10398 if (c === '?') {
10399 this._query = '?';
10400 state = 'query';
10401 } else if (c === '#') {
10402 this._fragment = '#';
10403 state = 'fragment';
10404 } else {
10405 if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
10406 this._schemeData += percentEscape(c);
10407 }
10408 }
10409
10410 break;
10411
10412 case 'no scheme':
10413 if (!base || !isRelativeScheme(base._scheme)) {
10414 err('Missing scheme.');
10415 invalid.call(this);
10416 } else {
10417 state = 'relative';
10418 continue;
10419 }
10420
10421 break;
10422
10423 case 'relative or authority':
10424 if (c === '/' && input[cursor + 1] === '/') {
10425 state = 'authority ignore slashes';
10426 } else {
10427 err('Expected /, got: ' + c);
10428 state = 'relative';
10429 continue;
10430 }
10431
10432 break;
10433
10434 case 'relative':
10435 this._isRelative = true;
10436
10437 if (this._scheme !== 'file') {
10438 this._scheme = base._scheme;
10439 }
10440
10441 if (c === EOF) {
10442 this._host = base._host;
10443 this._port = base._port;
10444 this._path = base._path.slice();
10445 this._query = base._query;
10446 this._username = base._username;
10447 this._password = base._password;
10448 break loop;
10449 } else if (c === '/' || c === '\\') {
10450 if (c === '\\') {
10451 err('\\ is an invalid code point.');
10452 }
10453
10454 state = 'relative slash';
10455 } else if (c === '?') {
10456 this._host = base._host;
10457 this._port = base._port;
10458 this._path = base._path.slice();
10459 this._query = '?';
10460 this._username = base._username;
10461 this._password = base._password;
10462 state = 'query';
10463 } else if (c === '#') {
10464 this._host = base._host;
10465 this._port = base._port;
10466 this._path = base._path.slice();
10467 this._query = base._query;
10468 this._fragment = '#';
10469 this._username = base._username;
10470 this._password = base._password;
10471 state = 'fragment';
10472 } else {
10473 var nextC = input[cursor + 1];
10474 var nextNextC = input[cursor + 2];
10475
10476 if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') {
10477 this._host = base._host;
10478 this._port = base._port;
10479 this._username = base._username;
10480 this._password = base._password;
10481 this._path = base._path.slice();
10482
10483 this._path.pop();
10484 }
10485
10486 state = 'relative path';
10487 continue;
10488 }
10489
10490 break;
10491
10492 case 'relative slash':
10493 if (c === '/' || c === '\\') {
10494 if (c === '\\') {
10495 err('\\ is an invalid code point.');
10496 }
10497
10498 if (this._scheme === 'file') {
10499 state = 'file host';
10500 } else {
10501 state = 'authority ignore slashes';
10502 }
10503 } else {
10504 if (this._scheme !== 'file') {
10505 this._host = base._host;
10506 this._port = base._port;
10507 this._username = base._username;
10508 this._password = base._password;
10509 }
10510
10511 state = 'relative path';
10512 continue;
10513 }
10514
10515 break;
10516
10517 case 'authority first slash':
10518 if (c === '/') {
10519 state = 'authority second slash';
10520 } else {
10521 err('Expected \'/\', got: ' + c);
10522 state = 'authority ignore slashes';
10523 continue;
10524 }
10525
10526 break;
10527
10528 case 'authority second slash':
10529 state = 'authority ignore slashes';
10530
10531 if (c !== '/') {
10532 err('Expected \'/\', got: ' + c);
10533 continue;
10534 }
10535
10536 break;
10537
10538 case 'authority ignore slashes':
10539 if (c !== '/' && c !== '\\') {
10540 state = 'authority';
10541 continue;
10542 } else {
10543 err('Expected authority, got: ' + c);
10544 }
10545
10546 break;
10547
10548 case 'authority':
10549 if (c === '@') {
10550 if (seenAt) {
10551 err('@ already seen.');
10552 buffer += '%40';
10553 }
10554
10555 seenAt = true;
10556
10557 for (var i = 0; i < buffer.length; i++) {
10558 var cp = buffer[i];
10559
10560 if (cp === '\t' || cp === '\n' || cp === '\r') {
10561 err('Invalid whitespace in authority.');
10562 continue;
10563 }
10564
10565 if (cp === ':' && this._password === null) {
10566 this._password = '';
10567 continue;
10568 }
10569
10570 var tempC = percentEscape(cp);
10571
10572 if (this._password !== null) {
10573 this._password += tempC;
10574 } else {
10575 this._username += tempC;
10576 }
10577 }
10578
10579 buffer = '';
10580 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
10581 cursor -= buffer.length;
10582 buffer = '';
10583 state = 'host';
10584 continue;
10585 } else {
10586 buffer += c;
10587 }
10588
10589 break;
10590
10591 case 'file host':
10592 if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
10593 if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) {
10594 state = 'relative path';
10595 } else if (buffer.length === 0) {
10596 state = 'relative path start';
10597 } else {
10598 this._host = IDNAToASCII.call(this, buffer);
10599 buffer = '';
10600 state = 'relative path start';
10601 }
10602
10603 continue;
10604 } else if (c === '\t' || c === '\n' || c === '\r') {
10605 err('Invalid whitespace in file host.');
10606 } else {
10607 buffer += c;
10608 }
10609
10610 break;
10611
10612 case 'host':
10613 case 'hostname':
10614 if (c === ':' && !seenBracket) {
10615 this._host = IDNAToASCII.call(this, buffer);
10616 buffer = '';
10617 state = 'port';
10618
10619 if (stateOverride === 'hostname') {
10620 break loop;
10621 }
10622 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') {
10623 this._host = IDNAToASCII.call(this, buffer);
10624 buffer = '';
10625 state = 'relative path start';
10626
10627 if (stateOverride) {
10628 break loop;
10629 }
10630
10631 continue;
10632 } else if (c !== '\t' && c !== '\n' && c !== '\r') {
10633 if (c === '[') {
10634 seenBracket = true;
10635 } else if (c === ']') {
10636 seenBracket = false;
10637 }
10638
10639 buffer += c;
10640 } else {
10641 err('Invalid code point in host/hostname: ' + c);
10642 }
10643
10644 break;
10645
10646 case 'port':
10647 if (/[0-9]/.test(c)) {
10648 buffer += c;
10649 } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) {
10650 if (buffer !== '') {
10651 var temp = parseInt(buffer, 10);
10652
10653 if (temp !== relative[this._scheme]) {
10654 this._port = temp + '';
10655 }
10656
10657 buffer = '';
10658 }
10659
10660 if (stateOverride) {
10661 break loop;
10662 }
10663
10664 state = 'relative path start';
10665 continue;
10666 } else if (c === '\t' || c === '\n' || c === '\r') {
10667 err('Invalid code point in port: ' + c);
10668 } else {
10669 invalid.call(this);
10670 }
10671
10672 break;
10673
10674 case 'relative path start':
10675 if (c === '\\') {
10676 err('\'\\\' not allowed in path.');
10677 }
10678
10679 state = 'relative path';
10680
10681 if (c !== '/' && c !== '\\') {
10682 continue;
10683 }
10684
10685 break;
10686
10687 case 'relative path':
10688 if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) {
10689 if (c === '\\') {
10690 err('\\ not allowed in relative path.');
10691 }
10692
10693 var tmp;
10694
10695 if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
10696 buffer = tmp;
10697 }
10698
10699 if (buffer === '..') {
10700 this._path.pop();
10701
10702 if (c !== '/' && c !== '\\') {
10703 this._path.push('');
10704 }
10705 } else if (buffer === '.' && c !== '/' && c !== '\\') {
10706 this._path.push('');
10707 } else if (buffer !== '.') {
10708 if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') {
10709 buffer = buffer[0] + ':';
10710 }
10711
10712 this._path.push(buffer);
10713 }
10714
10715 buffer = '';
10716
10717 if (c === '?') {
10718 this._query = '?';
10719 state = 'query';
10720 } else if (c === '#') {
10721 this._fragment = '#';
10722 state = 'fragment';
10723 }
10724 } else if (c !== '\t' && c !== '\n' && c !== '\r') {
10725 buffer += percentEscape(c);
10726 }
10727
10728 break;
10729
10730 case 'query':
10731 if (!stateOverride && c === '#') {
10732 this._fragment = '#';
10733 state = 'fragment';
10734 } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
10735 this._query += percentEscapeQuery(c);
10736 }
10737
10738 break;
10739
10740 case 'fragment':
10741 if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') {
10742 this._fragment += c;
10743 }
10744
10745 break;
10746 }
10747
10748 cursor++;
10749 }
10750 }
10751
10752 function clear() {
10753 this._scheme = '';
10754 this._schemeData = '';
10755 this._username = '';
10756 this._password = null;
10757 this._host = '';
10758 this._port = '';
10759 this._path = [];
10760 this._query = '';
10761 this._fragment = '';
10762 this._isInvalid = false;
10763 this._isRelative = false;
10764 }
10765
10766 function JURL(url, base) {
10767 if (base !== undefined && !(base instanceof JURL)) {
10768 base = new JURL(String(base));
10769 }
10770
10771 this._url = url;
10772 clear.call(this);
10773 var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, '');
10774 parse.call(this, input, null, base);
10775 }
10776
10777 JURL.prototype = {
10778 toString: function toString() {
10779 return this.href;
10780 },
10781
10782 get href() {
10783 if (this._isInvalid) {
10784 return this._url;
10785 }
10786
10787 var authority = '';
10788
10789 if (this._username !== '' || this._password !== null) {
10790 authority = this._username + (this._password !== null ? ':' + this._password : '') + '@';
10791 }
10792
10793 return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;
10794 },
10795
10796 set href(value) {
10797 clear.call(this);
10798 parse.call(this, value);
10799 },
10800
10801 get protocol() {
10802 return this._scheme + ':';
10803 },
10804
10805 set protocol(value) {
10806 if (this._isInvalid) {
10807 return;
10808 }
10809
10810 parse.call(this, value + ':', 'scheme start');
10811 },
10812
10813 get host() {
10814 return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;
10815 },
10816
10817 set host(value) {
10818 if (this._isInvalid || !this._isRelative) {
10819 return;
10820 }
10821
10822 parse.call(this, value, 'host');
10823 },
10824
10825 get hostname() {
10826 return this._host;
10827 },
10828
10829 set hostname(value) {
10830 if (this._isInvalid || !this._isRelative) {
10831 return;
10832 }
10833
10834 parse.call(this, value, 'hostname');
10835 },
10836
10837 get port() {
10838 return this._port;
10839 },
10840
10841 set port(value) {
10842 if (this._isInvalid || !this._isRelative) {
10843 return;
10844 }
10845
10846 parse.call(this, value, 'port');
10847 },
10848
10849 get pathname() {
10850 return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;
10851 },
10852
10853 set pathname(value) {
10854 if (this._isInvalid || !this._isRelative) {
10855 return;
10856 }
10857
10858 this._path = [];
10859 parse.call(this, value, 'relative path start');
10860 },
10861
10862 get search() {
10863 return this._isInvalid || !this._query || this._query === '?' ? '' : this._query;
10864 },
10865
10866 set search(value) {
10867 if (this._isInvalid || !this._isRelative) {
10868 return;
10869 }
10870
10871 this._query = '?';
10872
10873 if (value[0] === '?') {
10874 value = value.slice(1);
10875 }
10876
10877 parse.call(this, value, 'query');
10878 },
10879
10880 get hash() {
10881 return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment;
10882 },
10883
10884 set hash(value) {
10885 if (this._isInvalid) {
10886 return;
10887 }
10888
10889 this._fragment = '#';
10890
10891 if (value[0] === '#') {
10892 value = value.slice(1);
10893 }
10894
10895 parse.call(this, value, 'fragment');
10896 },
10897
10898 get origin() {
10899 var host;
10900
10901 if (this._isInvalid || !this._scheme) {
10902 return '';
10903 }
10904
10905 switch (this._scheme) {
10906 case 'data':
10907 case 'file':
10908 case 'javascript':
10909 case 'mailto':
10910 return 'null';
10911
10912 case 'blob':
10913 try {
10914 return new JURL(this._schemeData).origin || 'null';
10915 } catch (_) {}
10916
10917 return 'null';
10918 }
10919
10920 host = this.host;
10921
10922 if (!host) {
10923 return '';
10924 }
10925
10926 return this._scheme + '://' + host;
10927 }
10928
10929 };
10930 exports.URL = JURL;
10931})();
10932
10933/***/ }),
10934/* 151 */
10935/***/ (function(module, exports, __w_pdfjs_require__) {
10936
10937"use strict";
10938
10939
10940Object.defineProperty(exports, "__esModule", {
10941 value: true
10942});
10943exports.clearPrimitiveCaches = clearPrimitiveCaches;
10944exports.isEOF = isEOF;
10945exports.isCmd = isCmd;
10946exports.isDict = isDict;
10947exports.isName = isName;
10948exports.isRef = isRef;
10949exports.isRefsEqual = isRefsEqual;
10950exports.isStream = isStream;
10951exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = void 0;
10952
10953var _util = __w_pdfjs_require__(5);
10954
10955function _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); }
10956
10957var EOF = {};
10958exports.EOF = EOF;
10959
10960var Name = function NameClosure() {
10961 var nameCache = Object.create(null);
10962
10963 function Name(name) {
10964 this.name = name;
10965 }
10966
10967 Name.prototype = {};
10968
10969 Name.get = function Name_get(name) {
10970 var nameValue = nameCache[name];
10971 return nameValue ? nameValue : nameCache[name] = new Name(name);
10972 };
10973
10974 Name._clearCache = function () {
10975 nameCache = Object.create(null);
10976 };
10977
10978 return Name;
10979}();
10980
10981exports.Name = Name;
10982
10983var Cmd = function CmdClosure() {
10984 var cmdCache = Object.create(null);
10985
10986 function Cmd(cmd) {
10987 this.cmd = cmd;
10988 }
10989
10990 Cmd.prototype = {};
10991
10992 Cmd.get = function Cmd_get(cmd) {
10993 var cmdValue = cmdCache[cmd];
10994 return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);
10995 };
10996
10997 Cmd._clearCache = function () {
10998 cmdCache = Object.create(null);
10999 };
11000
11001 return Cmd;
11002}();
11003
11004exports.Cmd = Cmd;
11005
11006var Dict = function DictClosure() {
11007 var nonSerializable = function nonSerializableClosure() {
11008 return nonSerializable;
11009 };
11010
11011 function Dict(xref) {
11012 this._map = Object.create(null);
11013 this.xref = xref;
11014 this.objId = null;
11015 this.suppressEncryption = false;
11016 this.__nonSerializable__ = nonSerializable;
11017 }
11018
11019 Dict.prototype = {
11020 assignXref: function Dict_assignXref(newXref) {
11021 this.xref = newXref;
11022 },
11023 get: function Dict_get(key1, key2, key3) {
11024 var value;
11025 var xref = this.xref,
11026 suppressEncryption = this.suppressEncryption;
11027
11028 if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {
11029 return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
11030 }
11031
11032 if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {
11033 return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
11034 }
11035
11036 value = this._map[key3] || null;
11037 return xref ? xref.fetchIfRef(value, suppressEncryption) : value;
11038 },
11039 getAsync: function Dict_getAsync(key1, key2, key3) {
11040 var value;
11041 var xref = this.xref,
11042 suppressEncryption = this.suppressEncryption;
11043
11044 if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') {
11045 if (xref) {
11046 return xref.fetchIfRefAsync(value, suppressEncryption);
11047 }
11048
11049 return Promise.resolve(value);
11050 }
11051
11052 if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') {
11053 if (xref) {
11054 return xref.fetchIfRefAsync(value, suppressEncryption);
11055 }
11056
11057 return Promise.resolve(value);
11058 }
11059
11060 value = this._map[key3] || null;
11061
11062 if (xref) {
11063 return xref.fetchIfRefAsync(value, suppressEncryption);
11064 }
11065
11066 return Promise.resolve(value);
11067 },
11068 getArray: function Dict_getArray(key1, key2, key3) {
11069 var value = this.get(key1, key2, key3);
11070 var xref = this.xref,
11071 suppressEncryption = this.suppressEncryption;
11072
11073 if (!Array.isArray(value) || !xref) {
11074 return value;
11075 }
11076
11077 value = value.slice();
11078
11079 for (var i = 0, ii = value.length; i < ii; i++) {
11080 if (!isRef(value[i])) {
11081 continue;
11082 }
11083
11084 value[i] = xref.fetch(value[i], suppressEncryption);
11085 }
11086
11087 return value;
11088 },
11089 getRaw: function Dict_getRaw(key) {
11090 return this._map[key];
11091 },
11092 getKeys: function Dict_getKeys() {
11093 return Object.keys(this._map);
11094 },
11095 set: function Dict_set(key, value) {
11096 this._map[key] = value;
11097 },
11098 has: function Dict_has(key) {
11099 return key in this._map;
11100 },
11101 forEach: function Dict_forEach(callback) {
11102 for (var key in this._map) {
11103 callback(key, this.get(key));
11104 }
11105 }
11106 };
11107 Dict.empty = new Dict(null);
11108
11109 Dict.merge = function (xref, dictArray) {
11110 var mergedDict = new Dict(xref);
11111
11112 for (var i = 0, ii = dictArray.length; i < ii; i++) {
11113 var dict = dictArray[i];
11114
11115 if (!isDict(dict)) {
11116 continue;
11117 }
11118
11119 for (var keyName in dict._map) {
11120 if (mergedDict._map[keyName] !== undefined) {
11121 continue;
11122 }
11123
11124 mergedDict._map[keyName] = dict._map[keyName];
11125 }
11126 }
11127
11128 return mergedDict;
11129 };
11130
11131 return Dict;
11132}();
11133
11134exports.Dict = Dict;
11135
11136var Ref = function RefClosure() {
11137 var refCache = Object.create(null);
11138
11139 function Ref(num, gen) {
11140 this.num = num;
11141 this.gen = gen;
11142 }
11143
11144 Ref.prototype = {
11145 toString: function Ref_toString() {
11146 if (this.gen === 0) {
11147 return "".concat(this.num, "R");
11148 }
11149
11150 return "".concat(this.num, "R").concat(this.gen);
11151 }
11152 };
11153
11154 Ref.get = function (num, gen) {
11155 var key = gen === 0 ? "".concat(num, "R") : "".concat(num, "R").concat(gen);
11156 var refValue = refCache[key];
11157 return refValue ? refValue : refCache[key] = new Ref(num, gen);
11158 };
11159
11160 Ref._clearCache = function () {
11161 refCache = Object.create(null);
11162 };
11163
11164 return Ref;
11165}();
11166
11167exports.Ref = Ref;
11168
11169var RefSet = function RefSetClosure() {
11170 function RefSet() {
11171 this.dict = Object.create(null);
11172 }
11173
11174 RefSet.prototype = {
11175 has: function RefSet_has(ref) {
11176 return ref.toString() in this.dict;
11177 },
11178 put: function RefSet_put(ref) {
11179 this.dict[ref.toString()] = true;
11180 },
11181 remove: function RefSet_remove(ref) {
11182 delete this.dict[ref.toString()];
11183 }
11184 };
11185 return RefSet;
11186}();
11187
11188exports.RefSet = RefSet;
11189
11190var RefSetCache = function RefSetCacheClosure() {
11191 function RefSetCache() {
11192 this.dict = Object.create(null);
11193 }
11194
11195 RefSetCache.prototype = {
11196 get: function RefSetCache_get(ref) {
11197 return this.dict[ref.toString()];
11198 },
11199 has: function RefSetCache_has(ref) {
11200 return ref.toString() in this.dict;
11201 },
11202 put: function RefSetCache_put(ref, obj) {
11203 this.dict[ref.toString()] = obj;
11204 },
11205 putAlias: function RefSetCache_putAlias(ref, aliasRef) {
11206 this.dict[ref.toString()] = this.get(aliasRef);
11207 },
11208 forEach: function RefSetCache_forEach(fn, thisArg) {
11209 for (var i in this.dict) {
11210 fn.call(thisArg, this.dict[i]);
11211 }
11212 },
11213 clear: function RefSetCache_clear() {
11214 this.dict = Object.create(null);
11215 }
11216 };
11217 return RefSetCache;
11218}();
11219
11220exports.RefSetCache = RefSetCache;
11221
11222function isEOF(v) {
11223 return v === EOF;
11224}
11225
11226function isName(v, name) {
11227 return v instanceof Name && (name === undefined || v.name === name);
11228}
11229
11230function isCmd(v, cmd) {
11231 return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);
11232}
11233
11234function isDict(v, type) {
11235 return v instanceof Dict && (type === undefined || isName(v.get('Type'), type));
11236}
11237
11238function isRef(v) {
11239 return v instanceof Ref;
11240}
11241
11242function isRefsEqual(v1, v2) {
11243 return v1.num === v2.num && v1.gen === v2.gen;
11244}
11245
11246function isStream(v) {
11247 return _typeof(v) === 'object' && v !== null && v.getBytes !== undefined;
11248}
11249
11250function clearPrimitiveCaches() {
11251 Cmd._clearCache();
11252
11253 Name._clearCache();
11254
11255 Ref._clearCache();
11256}
11257
11258/***/ }),
11259/* 152 */
11260/***/ (function(module, exports, __w_pdfjs_require__) {
11261
11262"use strict";
11263
11264
11265Object.defineProperty(exports, "__esModule", {
11266 value: true
11267});
11268exports.NetworkPdfManager = exports.LocalPdfManager = void 0;
11269
11270var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
11271
11272var _util = __w_pdfjs_require__(5);
11273
11274var _chunked_stream = __w_pdfjs_require__(153);
11275
11276var _core_utils = __w_pdfjs_require__(154);
11277
11278var _document = __w_pdfjs_require__(155);
11279
11280var _stream = __w_pdfjs_require__(158);
11281
11282function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11283
11284function _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); }
11285
11286function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
11287
11288function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
11289
11290function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
11291
11292function _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); }
11293
11294function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11295
11296function 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); } }
11297
11298function _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); }); }; }
11299
11300function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11301
11302function _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); } }
11303
11304function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
11305
11306var BasePdfManager =
11307/*#__PURE__*/
11308function () {
11309 function BasePdfManager() {
11310 _classCallCheck(this, BasePdfManager);
11311
11312 if (this.constructor === BasePdfManager) {
11313 (0, _util.unreachable)('Cannot initialize BasePdfManager.');
11314 }
11315 }
11316
11317 _createClass(BasePdfManager, [{
11318 key: "onLoadedStream",
11319 value: function onLoadedStream() {
11320 (0, _util.unreachable)('Abstract method `onLoadedStream` called');
11321 }
11322 }, {
11323 key: "ensureDoc",
11324 value: function ensureDoc(prop, args) {
11325 return this.ensure(this.pdfDocument, prop, args);
11326 }
11327 }, {
11328 key: "ensureXRef",
11329 value: function ensureXRef(prop, args) {
11330 return this.ensure(this.pdfDocument.xref, prop, args);
11331 }
11332 }, {
11333 key: "ensureCatalog",
11334 value: function ensureCatalog(prop, args) {
11335 return this.ensure(this.pdfDocument.catalog, prop, args);
11336 }
11337 }, {
11338 key: "getPage",
11339 value: function getPage(pageIndex) {
11340 return this.pdfDocument.getPage(pageIndex);
11341 }
11342 }, {
11343 key: "fontFallback",
11344 value: function fontFallback(id, handler) {
11345 return this.pdfDocument.fontFallback(id, handler);
11346 }
11347 }, {
11348 key: "cleanup",
11349 value: function cleanup() {
11350 return this.pdfDocument.cleanup();
11351 }
11352 }, {
11353 key: "ensure",
11354 value: function () {
11355 var _ensure = _asyncToGenerator(
11356 /*#__PURE__*/
11357 _regenerator["default"].mark(function _callee(obj, prop, args) {
11358 return _regenerator["default"].wrap(function _callee$(_context) {
11359 while (1) {
11360 switch (_context.prev = _context.next) {
11361 case 0:
11362 (0, _util.unreachable)('Abstract method `ensure` called');
11363
11364 case 1:
11365 case "end":
11366 return _context.stop();
11367 }
11368 }
11369 }, _callee);
11370 }));
11371
11372 function ensure(_x, _x2, _x3) {
11373 return _ensure.apply(this, arguments);
11374 }
11375
11376 return ensure;
11377 }()
11378 }, {
11379 key: "requestRange",
11380 value: function requestRange(begin, end) {
11381 (0, _util.unreachable)('Abstract method `requestRange` called');
11382 }
11383 }, {
11384 key: "requestLoadedStream",
11385 value: function requestLoadedStream() {
11386 (0, _util.unreachable)('Abstract method `requestLoadedStream` called');
11387 }
11388 }, {
11389 key: "sendProgressiveData",
11390 value: function sendProgressiveData(chunk) {
11391 (0, _util.unreachable)('Abstract method `sendProgressiveData` called');
11392 }
11393 }, {
11394 key: "updatePassword",
11395 value: function updatePassword(password) {
11396 this._password = password;
11397 }
11398 }, {
11399 key: "terminate",
11400 value: function terminate() {
11401 (0, _util.unreachable)('Abstract method `terminate` called');
11402 }
11403 }, {
11404 key: "docId",
11405 get: function get() {
11406 return this._docId;
11407 }
11408 }, {
11409 key: "password",
11410 get: function get() {
11411 return this._password;
11412 }
11413 }, {
11414 key: "docBaseUrl",
11415 get: function get() {
11416 var docBaseUrl = null;
11417
11418 if (this._docBaseUrl) {
11419 var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl);
11420
11421 if (absoluteUrl) {
11422 docBaseUrl = absoluteUrl.href;
11423 } else {
11424 (0, _util.warn)("Invalid absolute docBaseUrl: \"".concat(this._docBaseUrl, "\"."));
11425 }
11426 }
11427
11428 return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl);
11429 }
11430 }]);
11431
11432 return BasePdfManager;
11433}();
11434
11435var LocalPdfManager =
11436/*#__PURE__*/
11437function (_BasePdfManager) {
11438 _inherits(LocalPdfManager, _BasePdfManager);
11439
11440 function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) {
11441 var _this;
11442
11443 _classCallCheck(this, LocalPdfManager);
11444
11445 _this = _possibleConstructorReturn(this, _getPrototypeOf(LocalPdfManager).call(this));
11446 _this._docId = docId;
11447 _this._password = password;
11448 _this._docBaseUrl = docBaseUrl;
11449 _this.evaluatorOptions = evaluatorOptions;
11450 var stream = new _stream.Stream(data);
11451 _this.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this), stream);
11452 _this._loadedStreamPromise = Promise.resolve(stream);
11453 return _this;
11454 }
11455
11456 _createClass(LocalPdfManager, [{
11457 key: "ensure",
11458 value: function () {
11459 var _ensure2 = _asyncToGenerator(
11460 /*#__PURE__*/
11461 _regenerator["default"].mark(function _callee2(obj, prop, args) {
11462 var value;
11463 return _regenerator["default"].wrap(function _callee2$(_context2) {
11464 while (1) {
11465 switch (_context2.prev = _context2.next) {
11466 case 0:
11467 value = obj[prop];
11468
11469 if (!(typeof value === 'function')) {
11470 _context2.next = 3;
11471 break;
11472 }
11473
11474 return _context2.abrupt("return", value.apply(obj, args));
11475
11476 case 3:
11477 return _context2.abrupt("return", value);
11478
11479 case 4:
11480 case "end":
11481 return _context2.stop();
11482 }
11483 }
11484 }, _callee2);
11485 }));
11486
11487 function ensure(_x4, _x5, _x6) {
11488 return _ensure2.apply(this, arguments);
11489 }
11490
11491 return ensure;
11492 }()
11493 }, {
11494 key: "requestRange",
11495 value: function requestRange(begin, end) {
11496 return Promise.resolve();
11497 }
11498 }, {
11499 key: "requestLoadedStream",
11500 value: function requestLoadedStream() {}
11501 }, {
11502 key: "onLoadedStream",
11503 value: function onLoadedStream() {
11504 return this._loadedStreamPromise;
11505 }
11506 }, {
11507 key: "terminate",
11508 value: function terminate() {}
11509 }]);
11510
11511 return LocalPdfManager;
11512}(BasePdfManager);
11513
11514exports.LocalPdfManager = LocalPdfManager;
11515
11516var NetworkPdfManager =
11517/*#__PURE__*/
11518function (_BasePdfManager2) {
11519 _inherits(NetworkPdfManager, _BasePdfManager2);
11520
11521 function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {
11522 var _this2;
11523
11524 _classCallCheck(this, NetworkPdfManager);
11525
11526 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(NetworkPdfManager).call(this));
11527 _this2._docId = docId;
11528 _this2._password = args.password;
11529 _this2._docBaseUrl = docBaseUrl;
11530 _this2.msgHandler = args.msgHandler;
11531 _this2.evaluatorOptions = evaluatorOptions;
11532 _this2.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {
11533 msgHandler: args.msgHandler,
11534 length: args.length,
11535 disableAutoFetch: args.disableAutoFetch,
11536 rangeChunkSize: args.rangeChunkSize
11537 });
11538 _this2.pdfDocument = new _document.PDFDocument(_assertThisInitialized(_this2), _this2.streamManager.getStream());
11539 return _this2;
11540 }
11541
11542 _createClass(NetworkPdfManager, [{
11543 key: "ensure",
11544 value: function () {
11545 var _ensure3 = _asyncToGenerator(
11546 /*#__PURE__*/
11547 _regenerator["default"].mark(function _callee3(obj, prop, args) {
11548 var value;
11549 return _regenerator["default"].wrap(function _callee3$(_context3) {
11550 while (1) {
11551 switch (_context3.prev = _context3.next) {
11552 case 0:
11553 _context3.prev = 0;
11554 value = obj[prop];
11555
11556 if (!(typeof value === 'function')) {
11557 _context3.next = 4;
11558 break;
11559 }
11560
11561 return _context3.abrupt("return", value.apply(obj, args));
11562
11563 case 4:
11564 return _context3.abrupt("return", value);
11565
11566 case 7:
11567 _context3.prev = 7;
11568 _context3.t0 = _context3["catch"](0);
11569
11570 if (_context3.t0 instanceof _core_utils.MissingDataException) {
11571 _context3.next = 11;
11572 break;
11573 }
11574
11575 throw _context3.t0;
11576
11577 case 11:
11578 _context3.next = 13;
11579 return this.requestRange(_context3.t0.begin, _context3.t0.end);
11580
11581 case 13:
11582 return _context3.abrupt("return", this.ensure(obj, prop, args));
11583
11584 case 14:
11585 case "end":
11586 return _context3.stop();
11587 }
11588 }
11589 }, _callee3, this, [[0, 7]]);
11590 }));
11591
11592 function ensure(_x7, _x8, _x9) {
11593 return _ensure3.apply(this, arguments);
11594 }
11595
11596 return ensure;
11597 }()
11598 }, {
11599 key: "requestRange",
11600 value: function requestRange(begin, end) {
11601 return this.streamManager.requestRange(begin, end);
11602 }
11603 }, {
11604 key: "requestLoadedStream",
11605 value: function requestLoadedStream() {
11606 this.streamManager.requestAllChunks();
11607 }
11608 }, {
11609 key: "sendProgressiveData",
11610 value: function sendProgressiveData(chunk) {
11611 this.streamManager.onReceiveData({
11612 chunk: chunk
11613 });
11614 }
11615 }, {
11616 key: "onLoadedStream",
11617 value: function onLoadedStream() {
11618 return this.streamManager.onLoadedStream();
11619 }
11620 }, {
11621 key: "terminate",
11622 value: function terminate() {
11623 this.streamManager.abort();
11624 }
11625 }]);
11626
11627 return NetworkPdfManager;
11628}(BasePdfManager);
11629
11630exports.NetworkPdfManager = NetworkPdfManager;
11631
11632/***/ }),
11633/* 153 */
11634/***/ (function(module, exports, __w_pdfjs_require__) {
11635
11636"use strict";
11637
11638
11639Object.defineProperty(exports, "__esModule", {
11640 value: true
11641});
11642exports.ChunkedStreamManager = exports.ChunkedStream = void 0;
11643
11644var _util = __w_pdfjs_require__(5);
11645
11646var _core_utils = __w_pdfjs_require__(154);
11647
11648function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11649
11650function _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); } }
11651
11652function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
11653
11654var ChunkedStream =
11655/*#__PURE__*/
11656function () {
11657 function ChunkedStream(length, chunkSize, manager) {
11658 _classCallCheck(this, ChunkedStream);
11659
11660 this.bytes = new Uint8Array(length);
11661 this.start = 0;
11662 this.pos = 0;
11663 this.end = length;
11664 this.chunkSize = chunkSize;
11665 this.loadedChunks = [];
11666 this.numChunksLoaded = 0;
11667 this.numChunks = Math.ceil(length / chunkSize);
11668 this.manager = manager;
11669 this.progressiveDataLength = 0;
11670 this.lastSuccessfulEnsureByteChunk = -1;
11671 }
11672
11673 _createClass(ChunkedStream, [{
11674 key: "getMissingChunks",
11675 value: function getMissingChunks() {
11676 var chunks = [];
11677
11678 for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {
11679 if (!this.loadedChunks[chunk]) {
11680 chunks.push(chunk);
11681 }
11682 }
11683
11684 return chunks;
11685 }
11686 }, {
11687 key: "getBaseStreams",
11688 value: function getBaseStreams() {
11689 return [this];
11690 }
11691 }, {
11692 key: "allChunksLoaded",
11693 value: function allChunksLoaded() {
11694 return this.numChunksLoaded === this.numChunks;
11695 }
11696 }, {
11697 key: "onReceiveData",
11698 value: function onReceiveData(begin, chunk) {
11699 var chunkSize = this.chunkSize;
11700
11701 if (begin % chunkSize !== 0) {
11702 throw new Error("Bad begin offset: ".concat(begin));
11703 }
11704
11705 var end = begin + chunk.byteLength;
11706
11707 if (end % chunkSize !== 0 && end !== this.bytes.length) {
11708 throw new Error("Bad end offset: ".concat(end));
11709 }
11710
11711 this.bytes.set(new Uint8Array(chunk), begin);
11712 var beginChunk = Math.floor(begin / chunkSize);
11713 var endChunk = Math.floor((end - 1) / chunkSize) + 1;
11714
11715 for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
11716 if (!this.loadedChunks[curChunk]) {
11717 this.loadedChunks[curChunk] = true;
11718 ++this.numChunksLoaded;
11719 }
11720 }
11721 }
11722 }, {
11723 key: "onReceiveProgressiveData",
11724 value: function onReceiveProgressiveData(data) {
11725 var position = this.progressiveDataLength;
11726 var beginChunk = Math.floor(position / this.chunkSize);
11727 this.bytes.set(new Uint8Array(data), position);
11728 position += data.byteLength;
11729 this.progressiveDataLength = position;
11730 var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);
11731
11732 for (var curChunk = beginChunk; curChunk < endChunk; ++curChunk) {
11733 if (!this.loadedChunks[curChunk]) {
11734 this.loadedChunks[curChunk] = true;
11735 ++this.numChunksLoaded;
11736 }
11737 }
11738 }
11739 }, {
11740 key: "ensureByte",
11741 value: function ensureByte(pos) {
11742 if (pos < this.progressiveDataLength) {
11743 return;
11744 }
11745
11746 var chunk = Math.floor(pos / this.chunkSize);
11747
11748 if (chunk === this.lastSuccessfulEnsureByteChunk) {
11749 return;
11750 }
11751
11752 if (!this.loadedChunks[chunk]) {
11753 throw new _core_utils.MissingDataException(pos, pos + 1);
11754 }
11755
11756 this.lastSuccessfulEnsureByteChunk = chunk;
11757 }
11758 }, {
11759 key: "ensureRange",
11760 value: function ensureRange(begin, end) {
11761 if (begin >= end) {
11762 return;
11763 }
11764
11765 if (end <= this.progressiveDataLength) {
11766 return;
11767 }
11768
11769 var chunkSize = this.chunkSize;
11770 var beginChunk = Math.floor(begin / chunkSize);
11771 var endChunk = Math.floor((end - 1) / chunkSize) + 1;
11772
11773 for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
11774 if (!this.loadedChunks[chunk]) {
11775 throw new _core_utils.MissingDataException(begin, end);
11776 }
11777 }
11778 }
11779 }, {
11780 key: "nextEmptyChunk",
11781 value: function nextEmptyChunk(beginChunk) {
11782 var numChunks = this.numChunks;
11783
11784 for (var i = 0; i < numChunks; ++i) {
11785 var chunk = (beginChunk + i) % numChunks;
11786
11787 if (!this.loadedChunks[chunk]) {
11788 return chunk;
11789 }
11790 }
11791
11792 return null;
11793 }
11794 }, {
11795 key: "hasChunk",
11796 value: function hasChunk(chunk) {
11797 return !!this.loadedChunks[chunk];
11798 }
11799 }, {
11800 key: "getByte",
11801 value: function getByte() {
11802 var pos = this.pos;
11803
11804 if (pos >= this.end) {
11805 return -1;
11806 }
11807
11808 this.ensureByte(pos);
11809 return this.bytes[this.pos++];
11810 }
11811 }, {
11812 key: "getUint16",
11813 value: function getUint16() {
11814 var b0 = this.getByte();
11815 var b1 = this.getByte();
11816
11817 if (b0 === -1 || b1 === -1) {
11818 return -1;
11819 }
11820
11821 return (b0 << 8) + b1;
11822 }
11823 }, {
11824 key: "getInt32",
11825 value: function getInt32() {
11826 var b0 = this.getByte();
11827 var b1 = this.getByte();
11828 var b2 = this.getByte();
11829 var b3 = this.getByte();
11830 return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
11831 }
11832 }, {
11833 key: "getBytes",
11834 value: function getBytes(length) {
11835 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
11836 var bytes = this.bytes;
11837 var pos = this.pos;
11838 var strEnd = this.end;
11839
11840 if (!length) {
11841 this.ensureRange(pos, strEnd);
11842
11843 var _subarray = bytes.subarray(pos, strEnd);
11844
11845 return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;
11846 }
11847
11848 var end = pos + length;
11849
11850 if (end > strEnd) {
11851 end = strEnd;
11852 }
11853
11854 this.ensureRange(pos, end);
11855 this.pos = end;
11856 var subarray = bytes.subarray(pos, end);
11857 return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
11858 }
11859 }, {
11860 key: "peekByte",
11861 value: function peekByte() {
11862 var peekedByte = this.getByte();
11863 this.pos--;
11864 return peekedByte;
11865 }
11866 }, {
11867 key: "peekBytes",
11868 value: function peekBytes(length) {
11869 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
11870 var bytes = this.getBytes(length, forceClamped);
11871 this.pos -= bytes.length;
11872 return bytes;
11873 }
11874 }, {
11875 key: "getByteRange",
11876 value: function getByteRange(begin, end) {
11877 this.ensureRange(begin, end);
11878 return this.bytes.subarray(begin, end);
11879 }
11880 }, {
11881 key: "skip",
11882 value: function skip(n) {
11883 if (!n) {
11884 n = 1;
11885 }
11886
11887 this.pos += n;
11888 }
11889 }, {
11890 key: "reset",
11891 value: function reset() {
11892 this.pos = this.start;
11893 }
11894 }, {
11895 key: "moveStart",
11896 value: function moveStart() {
11897 this.start = this.pos;
11898 }
11899 }, {
11900 key: "makeSubStream",
11901 value: function makeSubStream(start, length, dict) {
11902 if (length) {
11903 this.ensureRange(start, start + length);
11904 } else {
11905 this.ensureByte(start);
11906 }
11907
11908 function ChunkedStreamSubstream() {}
11909
11910 ChunkedStreamSubstream.prototype = Object.create(this);
11911
11912 ChunkedStreamSubstream.prototype.getMissingChunks = function () {
11913 var chunkSize = this.chunkSize;
11914 var beginChunk = Math.floor(this.start / chunkSize);
11915 var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;
11916 var missingChunks = [];
11917
11918 for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
11919 if (!this.loadedChunks[chunk]) {
11920 missingChunks.push(chunk);
11921 }
11922 }
11923
11924 return missingChunks;
11925 };
11926
11927 var subStream = new ChunkedStreamSubstream();
11928 subStream.pos = subStream.start = start;
11929 subStream.end = start + length || this.end;
11930 subStream.dict = dict;
11931 return subStream;
11932 }
11933 }, {
11934 key: "length",
11935 get: function get() {
11936 return this.end - this.start;
11937 }
11938 }, {
11939 key: "isEmpty",
11940 get: function get() {
11941 return this.length === 0;
11942 }
11943 }]);
11944
11945 return ChunkedStream;
11946}();
11947
11948exports.ChunkedStream = ChunkedStream;
11949
11950var ChunkedStreamManager =
11951/*#__PURE__*/
11952function () {
11953 function ChunkedStreamManager(pdfNetworkStream, args) {
11954 _classCallCheck(this, ChunkedStreamManager);
11955
11956 this.length = args.length;
11957 this.chunkSize = args.rangeChunkSize;
11958 this.stream = new ChunkedStream(this.length, this.chunkSize, this);
11959 this.pdfNetworkStream = pdfNetworkStream;
11960 this.disableAutoFetch = args.disableAutoFetch;
11961 this.msgHandler = args.msgHandler;
11962 this.currRequestId = 0;
11963 this.chunksNeededByRequest = Object.create(null);
11964 this.requestsByChunk = Object.create(null);
11965 this.promisesByRequest = Object.create(null);
11966 this.progressiveDataLength = 0;
11967 this.aborted = false;
11968 this._loadedStreamCapability = (0, _util.createPromiseCapability)();
11969 }
11970
11971 _createClass(ChunkedStreamManager, [{
11972 key: "onLoadedStream",
11973 value: function onLoadedStream() {
11974 return this._loadedStreamCapability.promise;
11975 }
11976 }, {
11977 key: "sendRequest",
11978 value: function sendRequest(begin, end) {
11979 var _this = this;
11980
11981 var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);
11982
11983 if (!rangeReader.isStreamingSupported) {
11984 rangeReader.onProgress = this.onProgress.bind(this);
11985 }
11986
11987 var chunks = [],
11988 loaded = 0;
11989 var promise = new Promise(function (resolve, reject) {
11990 var readChunk = function readChunk(chunk) {
11991 try {
11992 if (!chunk.done) {
11993 var data = chunk.value;
11994 chunks.push(data);
11995 loaded += (0, _util.arrayByteLength)(data);
11996
11997 if (rangeReader.isStreamingSupported) {
11998 _this.onProgress({
11999 loaded: loaded
12000 });
12001 }
12002
12003 rangeReader.read().then(readChunk, reject);
12004 return;
12005 }
12006
12007 var chunkData = (0, _util.arraysToBytes)(chunks);
12008 chunks = null;
12009 resolve(chunkData);
12010 } catch (e) {
12011 reject(e);
12012 }
12013 };
12014
12015 rangeReader.read().then(readChunk, reject);
12016 });
12017 promise.then(function (data) {
12018 if (_this.aborted) {
12019 return;
12020 }
12021
12022 _this.onReceiveData({
12023 chunk: data,
12024 begin: begin
12025 });
12026 });
12027 }
12028 }, {
12029 key: "requestAllChunks",
12030 value: function requestAllChunks() {
12031 var missingChunks = this.stream.getMissingChunks();
12032
12033 this._requestChunks(missingChunks);
12034
12035 return this._loadedStreamCapability.promise;
12036 }
12037 }, {
12038 key: "_requestChunks",
12039 value: function _requestChunks(chunks) {
12040 var requestId = this.currRequestId++;
12041 var chunksNeeded = Object.create(null);
12042 this.chunksNeededByRequest[requestId] = chunksNeeded;
12043 var _iteratorNormalCompletion = true;
12044 var _didIteratorError = false;
12045 var _iteratorError = undefined;
12046
12047 try {
12048 for (var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
12049 var _chunk = _step.value;
12050
12051 if (!this.stream.hasChunk(_chunk)) {
12052 chunksNeeded[_chunk] = true;
12053 }
12054 }
12055 } catch (err) {
12056 _didIteratorError = true;
12057 _iteratorError = err;
12058 } finally {
12059 try {
12060 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
12061 _iterator["return"]();
12062 }
12063 } finally {
12064 if (_didIteratorError) {
12065 throw _iteratorError;
12066 }
12067 }
12068 }
12069
12070 if ((0, _util.isEmptyObj)(chunksNeeded)) {
12071 return Promise.resolve();
12072 }
12073
12074 var capability = (0, _util.createPromiseCapability)();
12075 this.promisesByRequest[requestId] = capability;
12076 var chunksToRequest = [];
12077
12078 for (var chunk in chunksNeeded) {
12079 chunk = chunk | 0;
12080
12081 if (!(chunk in this.requestsByChunk)) {
12082 this.requestsByChunk[chunk] = [];
12083 chunksToRequest.push(chunk);
12084 }
12085
12086 this.requestsByChunk[chunk].push(requestId);
12087 }
12088
12089 if (!chunksToRequest.length) {
12090 return capability.promise;
12091 }
12092
12093 var groupedChunksToRequest = this.groupChunks(chunksToRequest);
12094 var _iteratorNormalCompletion2 = true;
12095 var _didIteratorError2 = false;
12096 var _iteratorError2 = undefined;
12097
12098 try {
12099 for (var _iterator2 = groupedChunksToRequest[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
12100 var groupedChunk = _step2.value;
12101 var begin = groupedChunk.beginChunk * this.chunkSize;
12102 var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);
12103 this.sendRequest(begin, end);
12104 }
12105 } catch (err) {
12106 _didIteratorError2 = true;
12107 _iteratorError2 = err;
12108 } finally {
12109 try {
12110 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
12111 _iterator2["return"]();
12112 }
12113 } finally {
12114 if (_didIteratorError2) {
12115 throw _iteratorError2;
12116 }
12117 }
12118 }
12119
12120 return capability.promise;
12121 }
12122 }, {
12123 key: "getStream",
12124 value: function getStream() {
12125 return this.stream;
12126 }
12127 }, {
12128 key: "requestRange",
12129 value: function requestRange(begin, end) {
12130 end = Math.min(end, this.length);
12131 var beginChunk = this.getBeginChunk(begin);
12132 var endChunk = this.getEndChunk(end);
12133 var chunks = [];
12134
12135 for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
12136 chunks.push(chunk);
12137 }
12138
12139 return this._requestChunks(chunks);
12140 }
12141 }, {
12142 key: "requestRanges",
12143 value: function requestRanges() {
12144 var ranges = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
12145 var chunksToRequest = [];
12146 var _iteratorNormalCompletion3 = true;
12147 var _didIteratorError3 = false;
12148 var _iteratorError3 = undefined;
12149
12150 try {
12151 for (var _iterator3 = ranges[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
12152 var range = _step3.value;
12153 var beginChunk = this.getBeginChunk(range.begin);
12154 var endChunk = this.getEndChunk(range.end);
12155
12156 for (var chunk = beginChunk; chunk < endChunk; ++chunk) {
12157 if (!chunksToRequest.includes(chunk)) {
12158 chunksToRequest.push(chunk);
12159 }
12160 }
12161 }
12162 } catch (err) {
12163 _didIteratorError3 = true;
12164 _iteratorError3 = err;
12165 } finally {
12166 try {
12167 if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
12168 _iterator3["return"]();
12169 }
12170 } finally {
12171 if (_didIteratorError3) {
12172 throw _iteratorError3;
12173 }
12174 }
12175 }
12176
12177 chunksToRequest.sort(function (a, b) {
12178 return a - b;
12179 });
12180 return this._requestChunks(chunksToRequest);
12181 }
12182 }, {
12183 key: "groupChunks",
12184 value: function groupChunks(chunks) {
12185 var groupedChunks = [];
12186 var beginChunk = -1;
12187 var prevChunk = -1;
12188
12189 for (var i = 0, ii = chunks.length; i < ii; ++i) {
12190 var chunk = chunks[i];
12191
12192 if (beginChunk < 0) {
12193 beginChunk = chunk;
12194 }
12195
12196 if (prevChunk >= 0 && prevChunk + 1 !== chunk) {
12197 groupedChunks.push({
12198 beginChunk: beginChunk,
12199 endChunk: prevChunk + 1
12200 });
12201 beginChunk = chunk;
12202 }
12203
12204 if (i + 1 === chunks.length) {
12205 groupedChunks.push({
12206 beginChunk: beginChunk,
12207 endChunk: chunk + 1
12208 });
12209 }
12210
12211 prevChunk = chunk;
12212 }
12213
12214 return groupedChunks;
12215 }
12216 }, {
12217 key: "onProgress",
12218 value: function onProgress(args) {
12219 this.msgHandler.send('DocProgress', {
12220 loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,
12221 total: this.length
12222 });
12223 }
12224 }, {
12225 key: "onReceiveData",
12226 value: function onReceiveData(args) {
12227 var chunk = args.chunk;
12228 var isProgressive = args.begin === undefined;
12229 var begin = isProgressive ? this.progressiveDataLength : args.begin;
12230 var end = begin + chunk.byteLength;
12231 var beginChunk = Math.floor(begin / this.chunkSize);
12232 var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);
12233
12234 if (isProgressive) {
12235 this.stream.onReceiveProgressiveData(chunk);
12236 this.progressiveDataLength = end;
12237 } else {
12238 this.stream.onReceiveData(begin, chunk);
12239 }
12240
12241 if (this.stream.allChunksLoaded()) {
12242 this._loadedStreamCapability.resolve(this.stream);
12243 }
12244
12245 var loadedRequests = [];
12246
12247 for (var _chunk2 = beginChunk; _chunk2 < endChunk; ++_chunk2) {
12248 var requestIds = this.requestsByChunk[_chunk2] || [];
12249 delete this.requestsByChunk[_chunk2];
12250 var _iteratorNormalCompletion4 = true;
12251 var _didIteratorError4 = false;
12252 var _iteratorError4 = undefined;
12253
12254 try {
12255 for (var _iterator4 = requestIds[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
12256 var requestId = _step4.value;
12257 var chunksNeeded = this.chunksNeededByRequest[requestId];
12258
12259 if (_chunk2 in chunksNeeded) {
12260 delete chunksNeeded[_chunk2];
12261 }
12262
12263 if (!(0, _util.isEmptyObj)(chunksNeeded)) {
12264 continue;
12265 }
12266
12267 loadedRequests.push(requestId);
12268 }
12269 } catch (err) {
12270 _didIteratorError4 = true;
12271 _iteratorError4 = err;
12272 } finally {
12273 try {
12274 if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
12275 _iterator4["return"]();
12276 }
12277 } finally {
12278 if (_didIteratorError4) {
12279 throw _iteratorError4;
12280 }
12281 }
12282 }
12283 }
12284
12285 if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) {
12286 var nextEmptyChunk;
12287
12288 if (this.stream.numChunksLoaded === 1) {
12289 var lastChunk = this.stream.numChunks - 1;
12290
12291 if (!this.stream.hasChunk(lastChunk)) {
12292 nextEmptyChunk = lastChunk;
12293 }
12294 } else {
12295 nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);
12296 }
12297
12298 if (Number.isInteger(nextEmptyChunk)) {
12299 this._requestChunks([nextEmptyChunk]);
12300 }
12301 }
12302
12303 for (var _i = 0, _loadedRequests = loadedRequests; _i < _loadedRequests.length; _i++) {
12304 var _requestId = _loadedRequests[_i];
12305 var capability = this.promisesByRequest[_requestId];
12306 delete this.promisesByRequest[_requestId];
12307 capability.resolve();
12308 }
12309
12310 this.msgHandler.send('DocProgress', {
12311 loaded: this.stream.numChunksLoaded * this.chunkSize,
12312 total: this.length
12313 });
12314 }
12315 }, {
12316 key: "onError",
12317 value: function onError(err) {
12318 this._loadedStreamCapability.reject(err);
12319 }
12320 }, {
12321 key: "getBeginChunk",
12322 value: function getBeginChunk(begin) {
12323 return Math.floor(begin / this.chunkSize);
12324 }
12325 }, {
12326 key: "getEndChunk",
12327 value: function getEndChunk(end) {
12328 return Math.floor((end - 1) / this.chunkSize) + 1;
12329 }
12330 }, {
12331 key: "abort",
12332 value: function abort() {
12333 this.aborted = true;
12334
12335 if (this.pdfNetworkStream) {
12336 this.pdfNetworkStream.cancelAllRequests('abort');
12337 }
12338
12339 for (var requestId in this.promisesByRequest) {
12340 this.promisesByRequest[requestId].reject(new Error('Request was aborted'));
12341 }
12342 }
12343 }]);
12344
12345 return ChunkedStreamManager;
12346}();
12347
12348exports.ChunkedStreamManager = ChunkedStreamManager;
12349
12350/***/ }),
12351/* 154 */
12352/***/ (function(module, exports, __w_pdfjs_require__) {
12353
12354"use strict";
12355
12356
12357Object.defineProperty(exports, "__esModule", {
12358 value: true
12359});
12360exports.getLookupTableFactory = getLookupTableFactory;
12361exports.getInheritableProperty = getInheritableProperty;
12362exports.toRomanNumerals = toRomanNumerals;
12363exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0;
12364
12365var _util = __w_pdfjs_require__(5);
12366
12367function getLookupTableFactory(initializer) {
12368 var lookup;
12369 return function () {
12370 if (initializer) {
12371 lookup = Object.create(null);
12372 initializer(lookup);
12373 initializer = null;
12374 }
12375
12376 return lookup;
12377 };
12378}
12379
12380var MissingDataException = function MissingDataExceptionClosure() {
12381 function MissingDataException(begin, end) {
12382 this.begin = begin;
12383 this.end = end;
12384 this.message = "Missing data [".concat(begin, ", ").concat(end, ")");
12385 }
12386
12387 MissingDataException.prototype = new Error();
12388 MissingDataException.prototype.name = 'MissingDataException';
12389 MissingDataException.constructor = MissingDataException;
12390 return MissingDataException;
12391}();
12392
12393exports.MissingDataException = MissingDataException;
12394
12395var XRefEntryException = function XRefEntryExceptionClosure() {
12396 function XRefEntryException(msg) {
12397 this.message = msg;
12398 }
12399
12400 XRefEntryException.prototype = new Error();
12401 XRefEntryException.prototype.name = 'XRefEntryException';
12402 XRefEntryException.constructor = XRefEntryException;
12403 return XRefEntryException;
12404}();
12405
12406exports.XRefEntryException = XRefEntryException;
12407
12408var XRefParseException = function XRefParseExceptionClosure() {
12409 function XRefParseException(msg) {
12410 this.message = msg;
12411 }
12412
12413 XRefParseException.prototype = new Error();
12414 XRefParseException.prototype.name = 'XRefParseException';
12415 XRefParseException.constructor = XRefParseException;
12416 return XRefParseException;
12417}();
12418
12419exports.XRefParseException = XRefParseException;
12420
12421function getInheritableProperty(_ref) {
12422 var dict = _ref.dict,
12423 key = _ref.key,
12424 _ref$getArray = _ref.getArray,
12425 getArray = _ref$getArray === void 0 ? false : _ref$getArray,
12426 _ref$stopWhenFound = _ref.stopWhenFound,
12427 stopWhenFound = _ref$stopWhenFound === void 0 ? true : _ref$stopWhenFound;
12428 var LOOP_LIMIT = 100;
12429 var loopCount = 0;
12430 var values;
12431
12432 while (dict) {
12433 var value = getArray ? dict.getArray(key) : dict.get(key);
12434
12435 if (value !== undefined) {
12436 if (stopWhenFound) {
12437 return value;
12438 }
12439
12440 if (!values) {
12441 values = [];
12442 }
12443
12444 values.push(value);
12445 }
12446
12447 if (++loopCount > LOOP_LIMIT) {
12448 (0, _util.warn)("getInheritableProperty: maximum loop count exceeded for \"".concat(key, "\""));
12449 break;
12450 }
12451
12452 dict = dict.get('Parent');
12453 }
12454
12455 return values;
12456}
12457
12458var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
12459
12460function toRomanNumerals(number) {
12461 var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
12462 (0, _util.assert)(Number.isInteger(number) && number > 0, 'The number should be a positive integer.');
12463 var pos,
12464 romanBuf = [];
12465
12466 while (number >= 1000) {
12467 number -= 1000;
12468 romanBuf.push('M');
12469 }
12470
12471 pos = number / 100 | 0;
12472 number %= 100;
12473 romanBuf.push(ROMAN_NUMBER_MAP[pos]);
12474 pos = number / 10 | 0;
12475 number %= 10;
12476 romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);
12477 romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);
12478 var romanStr = romanBuf.join('');
12479 return lowerCase ? romanStr.toLowerCase() : romanStr;
12480}
12481
12482/***/ }),
12483/* 155 */
12484/***/ (function(module, exports, __w_pdfjs_require__) {
12485
12486"use strict";
12487
12488
12489Object.defineProperty(exports, "__esModule", {
12490 value: true
12491});
12492exports.PDFDocument = exports.Page = void 0;
12493
12494var _util = __w_pdfjs_require__(5);
12495
12496var _obj = __w_pdfjs_require__(156);
12497
12498var _primitives = __w_pdfjs_require__(151);
12499
12500var _core_utils = __w_pdfjs_require__(154);
12501
12502var _stream2 = __w_pdfjs_require__(158);
12503
12504var _annotation = __w_pdfjs_require__(170);
12505
12506var _crypto = __w_pdfjs_require__(168);
12507
12508var _parser = __w_pdfjs_require__(157);
12509
12510var _operator_list = __w_pdfjs_require__(171);
12511
12512var _evaluator = __w_pdfjs_require__(172);
12513
12514var _function = __w_pdfjs_require__(186);
12515
12516function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
12517
12518function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
12519
12520function _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; }
12521
12522function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12523
12524function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12525
12526function _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); } }
12527
12528function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12529
12530var DEFAULT_USER_UNIT = 1.0;
12531var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
12532
12533function isAnnotationRenderable(annotation, intent) {
12534 return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable;
12535}
12536
12537var Page =
12538/*#__PURE__*/
12539function () {
12540 function Page(_ref) {
12541 var pdfManager = _ref.pdfManager,
12542 xref = _ref.xref,
12543 pageIndex = _ref.pageIndex,
12544 pageDict = _ref.pageDict,
12545 ref = _ref.ref,
12546 fontCache = _ref.fontCache,
12547 builtInCMapCache = _ref.builtInCMapCache,
12548 pdfFunctionFactory = _ref.pdfFunctionFactory;
12549
12550 _classCallCheck(this, Page);
12551
12552 this.pdfManager = pdfManager;
12553 this.pageIndex = pageIndex;
12554 this.pageDict = pageDict;
12555 this.xref = xref;
12556 this.ref = ref;
12557 this.fontCache = fontCache;
12558 this.builtInCMapCache = builtInCMapCache;
12559 this.pdfFunctionFactory = pdfFunctionFactory;
12560 this.evaluatorOptions = pdfManager.evaluatorOptions;
12561 this.resourcesPromise = null;
12562 var idCounters = {
12563 obj: 0
12564 };
12565 this.idFactory = {
12566 createObjId: function createObjId() {
12567 return "p".concat(pageIndex, "_").concat(++idCounters.obj);
12568 },
12569 getDocId: function getDocId() {
12570 return "g_".concat(pdfManager.docId);
12571 }
12572 };
12573 }
12574
12575 _createClass(Page, [{
12576 key: "_getInheritableProperty",
12577 value: function _getInheritableProperty(key) {
12578 var getArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
12579 var value = (0, _core_utils.getInheritableProperty)({
12580 dict: this.pageDict,
12581 key: key,
12582 getArray: getArray,
12583 stopWhenFound: false
12584 });
12585
12586 if (!Array.isArray(value)) {
12587 return value;
12588 }
12589
12590 if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {
12591 return value[0];
12592 }
12593
12594 return _primitives.Dict.merge(this.xref, value);
12595 }
12596 }, {
12597 key: "getContentStream",
12598 value: function getContentStream() {
12599 var content = this.content;
12600 var stream;
12601
12602 if (Array.isArray(content)) {
12603 var xref = this.xref;
12604 var streams = [];
12605 var _iteratorNormalCompletion = true;
12606 var _didIteratorError = false;
12607 var _iteratorError = undefined;
12608
12609 try {
12610 for (var _iterator = content[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
12611 var _stream = _step.value;
12612 streams.push(xref.fetchIfRef(_stream));
12613 }
12614 } catch (err) {
12615 _didIteratorError = true;
12616 _iteratorError = err;
12617 } finally {
12618 try {
12619 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
12620 _iterator["return"]();
12621 }
12622 } finally {
12623 if (_didIteratorError) {
12624 throw _iteratorError;
12625 }
12626 }
12627 }
12628
12629 stream = new _stream2.StreamsSequenceStream(streams);
12630 } else if ((0, _primitives.isStream)(content)) {
12631 stream = content;
12632 } else {
12633 stream = new _stream2.NullStream();
12634 }
12635
12636 return stream;
12637 }
12638 }, {
12639 key: "loadResources",
12640 value: function loadResources(keys) {
12641 var _this = this;
12642
12643 if (!this.resourcesPromise) {
12644 this.resourcesPromise = this.pdfManager.ensure(this, 'resources');
12645 }
12646
12647 return this.resourcesPromise.then(function () {
12648 var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref);
12649 return objectLoader.load();
12650 });
12651 }
12652 }, {
12653 key: "getOperatorList",
12654 value: function getOperatorList(_ref2) {
12655 var _this2 = this;
12656
12657 var handler = _ref2.handler,
12658 task = _ref2.task,
12659 intent = _ref2.intent,
12660 renderInteractiveForms = _ref2.renderInteractiveForms;
12661 var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');
12662 var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);
12663 var partialEvaluator = new _evaluator.PartialEvaluator({
12664 xref: this.xref,
12665 handler: handler,
12666 pageIndex: this.pageIndex,
12667 idFactory: this.idFactory,
12668 fontCache: this.fontCache,
12669 builtInCMapCache: this.builtInCMapCache,
12670 options: this.evaluatorOptions,
12671 pdfFunctionFactory: this.pdfFunctionFactory
12672 });
12673 var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
12674 var pageListPromise = dataPromises.then(function (_ref3) {
12675 var _ref4 = _slicedToArray(_ref3, 1),
12676 contentStream = _ref4[0];
12677
12678 var opList = new _operator_list.OperatorList(intent, handler, _this2.pageIndex);
12679 handler.send('StartRenderPage', {
12680 transparency: partialEvaluator.hasBlendModes(_this2.resources),
12681 pageIndex: _this2.pageIndex,
12682 intent: intent
12683 });
12684 return partialEvaluator.getOperatorList({
12685 stream: contentStream,
12686 task: task,
12687 resources: _this2.resources,
12688 operatorList: opList
12689 }).then(function () {
12690 return opList;
12691 });
12692 });
12693 return Promise.all([pageListPromise, this._parsedAnnotations]).then(function (_ref5) {
12694 var _ref6 = _slicedToArray(_ref5, 2),
12695 pageOpList = _ref6[0],
12696 annotations = _ref6[1];
12697
12698 if (annotations.length === 0) {
12699 pageOpList.flush(true);
12700 return pageOpList;
12701 }
12702
12703 var opListPromises = [];
12704 var _iteratorNormalCompletion2 = true;
12705 var _didIteratorError2 = false;
12706 var _iteratorError2 = undefined;
12707
12708 try {
12709 for (var _iterator2 = annotations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
12710 var annotation = _step2.value;
12711
12712 if (isAnnotationRenderable(annotation, intent)) {
12713 opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms));
12714 }
12715 }
12716 } catch (err) {
12717 _didIteratorError2 = true;
12718 _iteratorError2 = err;
12719 } finally {
12720 try {
12721 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
12722 _iterator2["return"]();
12723 }
12724 } finally {
12725 if (_didIteratorError2) {
12726 throw _iteratorError2;
12727 }
12728 }
12729 }
12730
12731 return Promise.all(opListPromises).then(function (opLists) {
12732 pageOpList.addOp(_util.OPS.beginAnnotations, []);
12733 var _iteratorNormalCompletion3 = true;
12734 var _didIteratorError3 = false;
12735 var _iteratorError3 = undefined;
12736
12737 try {
12738 for (var _iterator3 = opLists[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
12739 var opList = _step3.value;
12740 pageOpList.addOpList(opList);
12741 }
12742 } catch (err) {
12743 _didIteratorError3 = true;
12744 _iteratorError3 = err;
12745 } finally {
12746 try {
12747 if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
12748 _iterator3["return"]();
12749 }
12750 } finally {
12751 if (_didIteratorError3) {
12752 throw _iteratorError3;
12753 }
12754 }
12755 }
12756
12757 pageOpList.addOp(_util.OPS.endAnnotations, []);
12758 pageOpList.flush(true);
12759 return pageOpList;
12760 });
12761 });
12762 }
12763 }, {
12764 key: "extractTextContent",
12765 value: function extractTextContent(_ref7) {
12766 var _this3 = this;
12767
12768 var handler = _ref7.handler,
12769 task = _ref7.task,
12770 normalizeWhitespace = _ref7.normalizeWhitespace,
12771 sink = _ref7.sink,
12772 combineTextItems = _ref7.combineTextItems;
12773 var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream');
12774 var resourcesPromise = this.loadResources(['ExtGState', 'XObject', 'Font']);
12775 var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
12776 return dataPromises.then(function (_ref8) {
12777 var _ref9 = _slicedToArray(_ref8, 1),
12778 contentStream = _ref9[0];
12779
12780 var partialEvaluator = new _evaluator.PartialEvaluator({
12781 xref: _this3.xref,
12782 handler: handler,
12783 pageIndex: _this3.pageIndex,
12784 idFactory: _this3.idFactory,
12785 fontCache: _this3.fontCache,
12786 builtInCMapCache: _this3.builtInCMapCache,
12787 options: _this3.evaluatorOptions,
12788 pdfFunctionFactory: _this3.pdfFunctionFactory
12789 });
12790 return partialEvaluator.getTextContent({
12791 stream: contentStream,
12792 task: task,
12793 resources: _this3.resources,
12794 normalizeWhitespace: normalizeWhitespace,
12795 combineTextItems: combineTextItems,
12796 sink: sink
12797 });
12798 });
12799 }
12800 }, {
12801 key: "getAnnotationsData",
12802 value: function getAnnotationsData(intent) {
12803 return this._parsedAnnotations.then(function (annotations) {
12804 var annotationsData = [];
12805
12806 for (var i = 0, ii = annotations.length; i < ii; i++) {
12807 if (!intent || isAnnotationRenderable(annotations[i], intent)) {
12808 annotationsData.push(annotations[i].data);
12809 }
12810 }
12811
12812 return annotationsData;
12813 });
12814 }
12815 }, {
12816 key: "content",
12817 get: function get() {
12818 return this.pageDict.get('Contents');
12819 }
12820 }, {
12821 key: "resources",
12822 get: function get() {
12823 return (0, _util.shadow)(this, 'resources', this._getInheritableProperty('Resources') || _primitives.Dict.empty);
12824 }
12825 }, {
12826 key: "mediaBox",
12827 get: function get() {
12828 var mediaBox = this._getInheritableProperty('MediaBox', true);
12829
12830 if (!Array.isArray(mediaBox) || mediaBox.length !== 4) {
12831 return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX);
12832 }
12833
12834 return (0, _util.shadow)(this, 'mediaBox', mediaBox);
12835 }
12836 }, {
12837 key: "cropBox",
12838 get: function get() {
12839 var cropBox = this._getInheritableProperty('CropBox', true);
12840
12841 if (!Array.isArray(cropBox) || cropBox.length !== 4) {
12842 return (0, _util.shadow)(this, 'cropBox', this.mediaBox);
12843 }
12844
12845 return (0, _util.shadow)(this, 'cropBox', cropBox);
12846 }
12847 }, {
12848 key: "userUnit",
12849 get: function get() {
12850 var obj = this.pageDict.get('UserUnit');
12851
12852 if (!(0, _util.isNum)(obj) || obj <= 0) {
12853 obj = DEFAULT_USER_UNIT;
12854 }
12855
12856 return (0, _util.shadow)(this, 'userUnit', obj);
12857 }
12858 }, {
12859 key: "view",
12860 get: function get() {
12861 var mediaBox = this.mediaBox,
12862 cropBox = this.cropBox;
12863
12864 if (mediaBox === cropBox) {
12865 return (0, _util.shadow)(this, 'view', mediaBox);
12866 }
12867
12868 var intersection = _util.Util.intersect(cropBox, mediaBox);
12869
12870 return (0, _util.shadow)(this, 'view', intersection || mediaBox);
12871 }
12872 }, {
12873 key: "rotate",
12874 get: function get() {
12875 var rotate = this._getInheritableProperty('Rotate') || 0;
12876
12877 if (rotate % 90 !== 0) {
12878 rotate = 0;
12879 } else if (rotate >= 360) {
12880 rotate = rotate % 360;
12881 } else if (rotate < 0) {
12882 rotate = (rotate % 360 + 360) % 360;
12883 }
12884
12885 return (0, _util.shadow)(this, 'rotate', rotate);
12886 }
12887 }, {
12888 key: "annotations",
12889 get: function get() {
12890 return (0, _util.shadow)(this, 'annotations', this._getInheritableProperty('Annots') || []);
12891 }
12892 }, {
12893 key: "_parsedAnnotations",
12894 get: function get() {
12895 var _this4 = this;
12896
12897 var parsedAnnotations = this.pdfManager.ensure(this, 'annotations').then(function () {
12898 var annotationRefs = _this4.annotations;
12899 var annotationPromises = [];
12900
12901 for (var i = 0, ii = annotationRefs.length; i < ii; i++) {
12902 annotationPromises.push(_annotation.AnnotationFactory.create(_this4.xref, annotationRefs[i], _this4.pdfManager, _this4.idFactory));
12903 }
12904
12905 return Promise.all(annotationPromises).then(function (annotations) {
12906 return annotations.filter(function isDefined(annotation) {
12907 return !!annotation;
12908 });
12909 }, function (reason) {
12910 (0, _util.warn)("_parsedAnnotations: \"".concat(reason, "\"."));
12911 return [];
12912 });
12913 });
12914 return (0, _util.shadow)(this, '_parsedAnnotations', parsedAnnotations);
12915 }
12916 }]);
12917
12918 return Page;
12919}();
12920
12921exports.Page = Page;
12922var FINGERPRINT_FIRST_BYTES = 1024;
12923var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + '\x00\x00\x00\x00\x00\x00\x00\x00\x00';
12924
12925function find(stream, needle, limit) {
12926 var backwards = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
12927 (0, _util.assert)(limit > 0, 'The "limit" must be a positive integer.');
12928 var str = (0, _util.bytesToString)(stream.peekBytes(limit));
12929 var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
12930
12931 if (index === -1) {
12932 return false;
12933 }
12934
12935 stream.pos += index;
12936 return true;
12937}
12938
12939var PDFDocument =
12940/*#__PURE__*/
12941function () {
12942 function PDFDocument(pdfManager, arg) {
12943 _classCallCheck(this, PDFDocument);
12944
12945 var stream;
12946
12947 if ((0, _primitives.isStream)(arg)) {
12948 stream = arg;
12949 } else if ((0, _util.isArrayBuffer)(arg)) {
12950 stream = new _stream2.Stream(arg);
12951 } else {
12952 throw new Error('PDFDocument: Unknown argument type');
12953 }
12954
12955 if (stream.length <= 0) {
12956 throw new Error('PDFDocument: Stream must have data');
12957 }
12958
12959 this.pdfManager = pdfManager;
12960 this.stream = stream;
12961 this.xref = new _obj.XRef(stream, pdfManager);
12962 this.pdfFunctionFactory = new _function.PDFFunctionFactory({
12963 xref: this.xref,
12964 isEvalSupported: pdfManager.evaluatorOptions.isEvalSupported
12965 });
12966 this._pagePromises = [];
12967 }
12968
12969 _createClass(PDFDocument, [{
12970 key: "parse",
12971 value: function parse(recoveryMode) {
12972 this.setup(recoveryMode);
12973 var version = this.catalog.catDict.get('Version');
12974
12975 if ((0, _primitives.isName)(version)) {
12976 this.pdfFormatVersion = version.name;
12977 }
12978
12979 try {
12980 this.acroForm = this.catalog.catDict.get('AcroForm');
12981
12982 if (this.acroForm) {
12983 this.xfa = this.acroForm.get('XFA');
12984 var fields = this.acroForm.get('Fields');
12985
12986 if ((!Array.isArray(fields) || fields.length === 0) && !this.xfa) {
12987 this.acroForm = null;
12988 }
12989 }
12990 } catch (ex) {
12991 if (ex instanceof _core_utils.MissingDataException) {
12992 throw ex;
12993 }
12994
12995 (0, _util.info)('Cannot fetch AcroForm entry; assuming no AcroForms are present');
12996 this.acroForm = null;
12997 }
12998
12999 try {
13000 var collection = this.catalog.catDict.get('Collection');
13001
13002 if ((0, _primitives.isDict)(collection) && collection.getKeys().length > 0) {
13003 this.collection = collection;
13004 }
13005 } catch (ex) {
13006 if (ex instanceof _core_utils.MissingDataException) {
13007 throw ex;
13008 }
13009
13010 (0, _util.info)('Cannot fetch Collection dictionary.');
13011 }
13012 }
13013 }, {
13014 key: "checkHeader",
13015 value: function checkHeader() {
13016 var stream = this.stream;
13017 stream.reset();
13018
13019 if (!find(stream, '%PDF-', 1024)) {
13020 return;
13021 }
13022
13023 stream.moveStart();
13024 var MAX_PDF_VERSION_LENGTH = 12;
13025 var version = '',
13026 ch;
13027
13028 while ((ch = stream.getByte()) > 0x20) {
13029 if (version.length >= MAX_PDF_VERSION_LENGTH) {
13030 break;
13031 }
13032
13033 version += String.fromCharCode(ch);
13034 }
13035
13036 if (!this.pdfFormatVersion) {
13037 this.pdfFormatVersion = version.substring(5);
13038 }
13039 }
13040 }, {
13041 key: "parseStartXRef",
13042 value: function parseStartXRef() {
13043 this.xref.setStartXRef(this.startXRef);
13044 }
13045 }, {
13046 key: "setup",
13047 value: function setup(recoveryMode) {
13048 this.xref.parse(recoveryMode);
13049 this.catalog = new _obj.Catalog(this.pdfManager, this.xref);
13050 }
13051 }, {
13052 key: "_getLinearizationPage",
13053 value: function _getLinearizationPage(pageIndex) {
13054 var catalog = this.catalog,
13055 linearization = this.linearization;
13056 (0, _util.assert)(linearization && linearization.pageFirst === pageIndex);
13057
13058 var ref = _primitives.Ref.get(linearization.objectNumberFirst, 0);
13059
13060 return this.xref.fetchAsync(ref).then(function (obj) {
13061 if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Type') && obj.has('Contents')) {
13062 if (ref && !catalog.pageKidsCountCache.has(ref)) {
13063 catalog.pageKidsCountCache.put(ref, 1);
13064 }
13065
13066 return [obj, ref];
13067 }
13068
13069 throw new _util.FormatError('The Linearization dictionary doesn\'t point ' + 'to a valid Page dictionary.');
13070 })["catch"](function (reason) {
13071 (0, _util.info)(reason);
13072 return catalog.getPageDict(pageIndex);
13073 });
13074 }
13075 }, {
13076 key: "getPage",
13077 value: function getPage(pageIndex) {
13078 var _this5 = this;
13079
13080 if (this._pagePromises[pageIndex] !== undefined) {
13081 return this._pagePromises[pageIndex];
13082 }
13083
13084 var catalog = this.catalog,
13085 linearization = this.linearization;
13086 var promise = linearization && linearization.pageFirst === pageIndex ? this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);
13087 return this._pagePromises[pageIndex] = promise.then(function (_ref10) {
13088 var _ref11 = _slicedToArray(_ref10, 2),
13089 pageDict = _ref11[0],
13090 ref = _ref11[1];
13091
13092 return new Page({
13093 pdfManager: _this5.pdfManager,
13094 xref: _this5.xref,
13095 pageIndex: pageIndex,
13096 pageDict: pageDict,
13097 ref: ref,
13098 fontCache: catalog.fontCache,
13099 builtInCMapCache: catalog.builtInCMapCache,
13100 pdfFunctionFactory: _this5.pdfFunctionFactory
13101 });
13102 });
13103 }
13104 }, {
13105 key: "checkFirstPage",
13106 value: function checkFirstPage() {
13107 var _this6 = this;
13108
13109 return this.getPage(0)["catch"](function (reason) {
13110 if (reason instanceof _core_utils.XRefEntryException) {
13111 _this6._pagePromises.length = 0;
13112
13113 _this6.cleanup();
13114
13115 throw new _core_utils.XRefParseException();
13116 }
13117 });
13118 }
13119 }, {
13120 key: "fontFallback",
13121 value: function fontFallback(id, handler) {
13122 return this.catalog.fontFallback(id, handler);
13123 }
13124 }, {
13125 key: "cleanup",
13126 value: function cleanup() {
13127 return this.catalog.cleanup();
13128 }
13129 }, {
13130 key: "linearization",
13131 get: function get() {
13132 var linearization = null;
13133
13134 try {
13135 linearization = _parser.Linearization.create(this.stream);
13136 } catch (err) {
13137 if (err instanceof _core_utils.MissingDataException) {
13138 throw err;
13139 }
13140
13141 (0, _util.info)(err);
13142 }
13143
13144 return (0, _util.shadow)(this, 'linearization', linearization);
13145 }
13146 }, {
13147 key: "startXRef",
13148 get: function get() {
13149 var stream = this.stream;
13150 var startXRef = 0;
13151
13152 if (this.linearization) {
13153 stream.reset();
13154
13155 if (find(stream, 'endobj', 1024)) {
13156 startXRef = stream.pos + 6;
13157 }
13158 } else {
13159 var step = 1024;
13160 var startXRefLength = 'startxref'.length;
13161 var found = false,
13162 pos = stream.end;
13163
13164 while (!found && pos > 0) {
13165 pos -= step - startXRefLength;
13166
13167 if (pos < 0) {
13168 pos = 0;
13169 }
13170
13171 stream.pos = pos;
13172 found = find(stream, 'startxref', step, true);
13173 }
13174
13175 if (found) {
13176 stream.skip(9);
13177 var ch;
13178
13179 do {
13180 ch = stream.getByte();
13181 } while ((0, _util.isSpace)(ch));
13182
13183 var str = '';
13184
13185 while (ch >= 0x20 && ch <= 0x39) {
13186 str += String.fromCharCode(ch);
13187 ch = stream.getByte();
13188 }
13189
13190 startXRef = parseInt(str, 10);
13191
13192 if (isNaN(startXRef)) {
13193 startXRef = 0;
13194 }
13195 }
13196 }
13197
13198 return (0, _util.shadow)(this, 'startXRef', startXRef);
13199 }
13200 }, {
13201 key: "numPages",
13202 get: function get() {
13203 var linearization = this.linearization;
13204 var num = linearization ? linearization.numPages : this.catalog.numPages;
13205 return (0, _util.shadow)(this, 'numPages', num);
13206 }
13207 }, {
13208 key: "documentInfo",
13209 get: function get() {
13210 var DocumentInfoValidators = {
13211 Title: _util.isString,
13212 Author: _util.isString,
13213 Subject: _util.isString,
13214 Keywords: _util.isString,
13215 Creator: _util.isString,
13216 Producer: _util.isString,
13217 CreationDate: _util.isString,
13218 ModDate: _util.isString,
13219 Trapped: _primitives.isName
13220 };
13221 var docInfo = {
13222 PDFFormatVersion: this.pdfFormatVersion,
13223 IsLinearized: !!this.linearization,
13224 IsAcroFormPresent: !!this.acroForm,
13225 IsXFAPresent: !!this.xfa,
13226 IsCollectionPresent: !!this.collection
13227 };
13228 var infoDict;
13229
13230 try {
13231 infoDict = this.xref.trailer.get('Info');
13232 } catch (err) {
13233 if (err instanceof _core_utils.MissingDataException) {
13234 throw err;
13235 }
13236
13237 (0, _util.info)('The document information dictionary is invalid.');
13238 }
13239
13240 if ((0, _primitives.isDict)(infoDict)) {
13241 var _iteratorNormalCompletion4 = true;
13242 var _didIteratorError4 = false;
13243 var _iteratorError4 = undefined;
13244
13245 try {
13246 for (var _iterator4 = infoDict.getKeys()[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
13247 var key = _step4.value;
13248 var value = infoDict.get(key);
13249
13250 if (DocumentInfoValidators[key]) {
13251 if (DocumentInfoValidators[key](value)) {
13252 docInfo[key] = typeof value !== 'string' ? value : (0, _util.stringToPDFString)(value);
13253 } else {
13254 (0, _util.info)("Bad value in document info for \"".concat(key, "\"."));
13255 }
13256 } else if (typeof key === 'string') {
13257 var customValue = void 0;
13258
13259 if ((0, _util.isString)(value)) {
13260 customValue = (0, _util.stringToPDFString)(value);
13261 } else if ((0, _primitives.isName)(value) || (0, _util.isNum)(value) || (0, _util.isBool)(value)) {
13262 customValue = value;
13263 } else {
13264 (0, _util.info)("Unsupported value in document info for (custom) \"".concat(key, "\"."));
13265 continue;
13266 }
13267
13268 if (!docInfo['Custom']) {
13269 docInfo['Custom'] = Object.create(null);
13270 }
13271
13272 docInfo['Custom'][key] = customValue;
13273 }
13274 }
13275 } catch (err) {
13276 _didIteratorError4 = true;
13277 _iteratorError4 = err;
13278 } finally {
13279 try {
13280 if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
13281 _iterator4["return"]();
13282 }
13283 } finally {
13284 if (_didIteratorError4) {
13285 throw _iteratorError4;
13286 }
13287 }
13288 }
13289 }
13290
13291 return (0, _util.shadow)(this, 'documentInfo', docInfo);
13292 }
13293 }, {
13294 key: "fingerprint",
13295 get: function get() {
13296 var hash;
13297 var idArray = this.xref.trailer.get('ID');
13298
13299 if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) {
13300 hash = (0, _util.stringToBytes)(idArray[0]);
13301 } else {
13302 if (this.stream.ensureRange) {
13303 this.stream.ensureRange(0, Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));
13304 }
13305
13306 hash = (0, _crypto.calculateMD5)(this.stream.bytes.subarray(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);
13307 }
13308
13309 var fingerprint = '';
13310
13311 for (var i = 0, ii = hash.length; i < ii; i++) {
13312 var hex = hash[i].toString(16);
13313 fingerprint += hex.length === 1 ? '0' + hex : hex;
13314 }
13315
13316 return (0, _util.shadow)(this, 'fingerprint', fingerprint);
13317 }
13318 }]);
13319
13320 return PDFDocument;
13321}();
13322
13323exports.PDFDocument = PDFDocument;
13324
13325/***/ }),
13326/* 156 */
13327/***/ (function(module, exports, __w_pdfjs_require__) {
13328
13329"use strict";
13330
13331
13332Object.defineProperty(exports, "__esModule", {
13333 value: true
13334});
13335exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = void 0;
13336
13337var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
13338
13339var _util = __w_pdfjs_require__(5);
13340
13341var _primitives = __w_pdfjs_require__(151);
13342
13343var _parser = __w_pdfjs_require__(157);
13344
13345var _core_utils = __w_pdfjs_require__(154);
13346
13347var _chunked_stream = __w_pdfjs_require__(153);
13348
13349var _crypto = __w_pdfjs_require__(168);
13350
13351var _colorspace = __w_pdfjs_require__(169);
13352
13353function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13354
13355function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
13356
13357function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13358
13359function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
13360
13361function _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); }
13362
13363function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13364
13365function 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); } }
13366
13367function _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); }); }; }
13368
13369function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
13370
13371function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
13372
13373function _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; }
13374
13375function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13376
13377function _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); }
13378
13379function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13380
13381function _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); } }
13382
13383function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13384
13385function fetchDestination(dest) {
13386 return (0, _primitives.isDict)(dest) ? dest.get('D') : dest;
13387}
13388
13389var Catalog =
13390/*#__PURE__*/
13391function () {
13392 function Catalog(pdfManager, xref) {
13393 _classCallCheck(this, Catalog);
13394
13395 this.pdfManager = pdfManager;
13396 this.xref = xref;
13397 this.catDict = xref.getCatalogObj();
13398
13399 if (!(0, _primitives.isDict)(this.catDict)) {
13400 throw new _util.FormatError('Catalog object is not a dictionary.');
13401 }
13402
13403 this.fontCache = new _primitives.RefSetCache();
13404 this.builtInCMapCache = new Map();
13405 this.pageKidsCountCache = new _primitives.RefSetCache();
13406 }
13407
13408 _createClass(Catalog, [{
13409 key: "_readDocumentOutline",
13410 value: function _readDocumentOutline() {
13411 var obj = this.catDict.get('Outlines');
13412
13413 if (!(0, _primitives.isDict)(obj)) {
13414 return null;
13415 }
13416
13417 obj = obj.getRaw('First');
13418
13419 if (!(0, _primitives.isRef)(obj)) {
13420 return null;
13421 }
13422
13423 var root = {
13424 items: []
13425 };
13426 var queue = [{
13427 obj: obj,
13428 parent: root
13429 }];
13430 var processed = new _primitives.RefSet();
13431 processed.put(obj);
13432 var xref = this.xref,
13433 blackColor = new Uint8ClampedArray(3);
13434
13435 while (queue.length > 0) {
13436 var i = queue.shift();
13437 var outlineDict = xref.fetchIfRef(i.obj);
13438
13439 if (outlineDict === null) {
13440 continue;
13441 }
13442
13443 if (!outlineDict.has('Title')) {
13444 throw new _util.FormatError('Invalid outline item encountered.');
13445 }
13446
13447 var data = {
13448 url: null,
13449 dest: null
13450 };
13451 Catalog.parseDestDictionary({
13452 destDict: outlineDict,
13453 resultObj: data,
13454 docBaseUrl: this.pdfManager.docBaseUrl
13455 });
13456 var title = outlineDict.get('Title');
13457 var flags = outlineDict.get('F') || 0;
13458 var color = outlineDict.getArray('C');
13459 var count = outlineDict.get('Count');
13460 var rgbColor = blackColor;
13461
13462 if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {
13463 rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);
13464 }
13465
13466 var outlineItem = {
13467 dest: data.dest,
13468 url: data.url,
13469 unsafeUrl: data.unsafeUrl,
13470 newWindow: data.newWindow,
13471 title: (0, _util.stringToPDFString)(title),
13472 color: rgbColor,
13473 count: Number.isInteger(count) ? count : undefined,
13474 bold: !!(flags & 2),
13475 italic: !!(flags & 1),
13476 items: []
13477 };
13478 i.parent.items.push(outlineItem);
13479 obj = outlineDict.getRaw('First');
13480
13481 if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
13482 queue.push({
13483 obj: obj,
13484 parent: outlineItem
13485 });
13486 processed.put(obj);
13487 }
13488
13489 obj = outlineDict.getRaw('Next');
13490
13491 if ((0, _primitives.isRef)(obj) && !processed.has(obj)) {
13492 queue.push({
13493 obj: obj,
13494 parent: i.parent
13495 });
13496 processed.put(obj);
13497 }
13498 }
13499
13500 return root.items.length > 0 ? root.items : null;
13501 }
13502 }, {
13503 key: "_readPermissions",
13504 value: function _readPermissions() {
13505 var encrypt = this.xref.trailer.get('Encrypt');
13506
13507 if (!(0, _primitives.isDict)(encrypt)) {
13508 return null;
13509 }
13510
13511 var flags = encrypt.get('P');
13512
13513 if (!(0, _util.isNum)(flags)) {
13514 return null;
13515 }
13516
13517 flags += Math.pow(2, 32);
13518 var permissions = [];
13519
13520 for (var key in _util.PermissionFlag) {
13521 var value = _util.PermissionFlag[key];
13522
13523 if (flags & value) {
13524 permissions.push(value);
13525 }
13526 }
13527
13528 return permissions;
13529 }
13530 }, {
13531 key: "getDestination",
13532 value: function getDestination(destinationId) {
13533 var obj = this._readDests();
13534
13535 if (obj instanceof NameTree || obj instanceof _primitives.Dict) {
13536 return fetchDestination(obj.get(destinationId) || null);
13537 }
13538
13539 return null;
13540 }
13541 }, {
13542 key: "_readDests",
13543 value: function _readDests() {
13544 var obj = this.catDict.get('Names');
13545
13546 if (obj && obj.has('Dests')) {
13547 return new NameTree(obj.getRaw('Dests'), this.xref);
13548 } else if (this.catDict.has('Dests')) {
13549 return this.catDict.get('Dests');
13550 }
13551
13552 return undefined;
13553 }
13554 }, {
13555 key: "_readPageLabels",
13556 value: function _readPageLabels() {
13557 var obj = this.catDict.getRaw('PageLabels');
13558
13559 if (!obj) {
13560 return null;
13561 }
13562
13563 var pageLabels = new Array(this.numPages);
13564 var style = null,
13565 prefix = '';
13566 var numberTree = new NumberTree(obj, this.xref);
13567 var nums = numberTree.getAll();
13568 var currentLabel = '',
13569 currentIndex = 1;
13570
13571 for (var i = 0, ii = this.numPages; i < ii; i++) {
13572 if (i in nums) {
13573 var labelDict = nums[i];
13574
13575 if (!(0, _primitives.isDict)(labelDict)) {
13576 throw new _util.FormatError('PageLabel is not a dictionary.');
13577 }
13578
13579 if (labelDict.has('Type') && !(0, _primitives.isName)(labelDict.get('Type'), 'PageLabel')) {
13580 throw new _util.FormatError('Invalid type in PageLabel dictionary.');
13581 }
13582
13583 if (labelDict.has('S')) {
13584 var s = labelDict.get('S');
13585
13586 if (!(0, _primitives.isName)(s)) {
13587 throw new _util.FormatError('Invalid style in PageLabel dictionary.');
13588 }
13589
13590 style = s.name;
13591 } else {
13592 style = null;
13593 }
13594
13595 if (labelDict.has('P')) {
13596 var p = labelDict.get('P');
13597
13598 if (!(0, _util.isString)(p)) {
13599 throw new _util.FormatError('Invalid prefix in PageLabel dictionary.');
13600 }
13601
13602 prefix = (0, _util.stringToPDFString)(p);
13603 } else {
13604 prefix = '';
13605 }
13606
13607 if (labelDict.has('St')) {
13608 var st = labelDict.get('St');
13609
13610 if (!(Number.isInteger(st) && st >= 1)) {
13611 throw new _util.FormatError('Invalid start in PageLabel dictionary.');
13612 }
13613
13614 currentIndex = st;
13615 } else {
13616 currentIndex = 1;
13617 }
13618 }
13619
13620 switch (style) {
13621 case 'D':
13622 currentLabel = currentIndex;
13623 break;
13624
13625 case 'R':
13626 case 'r':
13627 currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === 'r');
13628 break;
13629
13630 case 'A':
13631 case 'a':
13632 var LIMIT = 26;
13633 var A_UPPER_CASE = 0x41,
13634 A_LOWER_CASE = 0x61;
13635 var baseCharCode = style === 'a' ? A_LOWER_CASE : A_UPPER_CASE;
13636 var letterIndex = currentIndex - 1;
13637 var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);
13638 var charBuf = [];
13639
13640 for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {
13641 charBuf.push(character);
13642 }
13643
13644 currentLabel = charBuf.join('');
13645 break;
13646
13647 default:
13648 if (style) {
13649 throw new _util.FormatError("Invalid style \"".concat(style, "\" in PageLabel dictionary."));
13650 }
13651
13652 currentLabel = '';
13653 }
13654
13655 pageLabels[i] = prefix + currentLabel;
13656 currentIndex++;
13657 }
13658
13659 return pageLabels;
13660 }
13661 }, {
13662 key: "fontFallback",
13663 value: function fontFallback(id, handler) {
13664 var promises = [];
13665 this.fontCache.forEach(function (promise) {
13666 promises.push(promise);
13667 });
13668 return Promise.all(promises).then(function (translatedFonts) {
13669 var _iteratorNormalCompletion = true;
13670 var _didIteratorError = false;
13671 var _iteratorError = undefined;
13672
13673 try {
13674 for (var _iterator = translatedFonts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
13675 var translatedFont = _step.value;
13676
13677 if (translatedFont.loadedName === id) {
13678 translatedFont.fallback(handler);
13679 return;
13680 }
13681 }
13682 } catch (err) {
13683 _didIteratorError = true;
13684 _iteratorError = err;
13685 } finally {
13686 try {
13687 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
13688 _iterator["return"]();
13689 }
13690 } finally {
13691 if (_didIteratorError) {
13692 throw _iteratorError;
13693 }
13694 }
13695 }
13696 });
13697 }
13698 }, {
13699 key: "cleanup",
13700 value: function cleanup() {
13701 var _this = this;
13702
13703 (0, _primitives.clearPrimitiveCaches)();
13704 this.pageKidsCountCache.clear();
13705 var promises = [];
13706 this.fontCache.forEach(function (promise) {
13707 promises.push(promise);
13708 });
13709 return Promise.all(promises).then(function (translatedFonts) {
13710 for (var i = 0, ii = translatedFonts.length; i < ii; i++) {
13711 var font = translatedFonts[i].dict;
13712 delete font.translated;
13713 }
13714
13715 _this.fontCache.clear();
13716
13717 _this.builtInCMapCache.clear();
13718 });
13719 }
13720 }, {
13721 key: "getPageDict",
13722 value: function getPageDict(pageIndex) {
13723 var capability = (0, _util.createPromiseCapability)();
13724 var nodesToVisit = [this.catDict.getRaw('Pages')];
13725 var xref = this.xref,
13726 pageKidsCountCache = this.pageKidsCountCache;
13727 var count,
13728 currentPageIndex = 0;
13729
13730 function next() {
13731 var _loop = function _loop() {
13732 var currentNode = nodesToVisit.pop();
13733
13734 if ((0, _primitives.isRef)(currentNode)) {
13735 count = pageKidsCountCache.get(currentNode);
13736
13737 if (count > 0 && currentPageIndex + count < pageIndex) {
13738 currentPageIndex += count;
13739 return "continue";
13740 }
13741
13742 xref.fetchAsync(currentNode).then(function (obj) {
13743 if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Kids')) {
13744 if (pageIndex === currentPageIndex) {
13745 if (currentNode && !pageKidsCountCache.has(currentNode)) {
13746 pageKidsCountCache.put(currentNode, 1);
13747 }
13748
13749 capability.resolve([obj, currentNode]);
13750 } else {
13751 currentPageIndex++;
13752 next();
13753 }
13754
13755 return;
13756 }
13757
13758 nodesToVisit.push(obj);
13759 next();
13760 }, capability.reject);
13761 return {
13762 v: void 0
13763 };
13764 }
13765
13766 if (!(0, _primitives.isDict)(currentNode)) {
13767 capability.reject(new _util.FormatError('Page dictionary kid reference points to wrong type of object.'));
13768 return {
13769 v: void 0
13770 };
13771 }
13772
13773 count = currentNode.get('Count');
13774
13775 if (Number.isInteger(count) && count >= 0) {
13776 var objId = currentNode.objId;
13777
13778 if (objId && !pageKidsCountCache.has(objId)) {
13779 pageKidsCountCache.put(objId, count);
13780 }
13781
13782 if (currentPageIndex + count <= pageIndex) {
13783 currentPageIndex += count;
13784 return "continue";
13785 }
13786 }
13787
13788 var kids = currentNode.get('Kids');
13789
13790 if (!Array.isArray(kids)) {
13791 if ((0, _primitives.isName)(currentNode.get('Type'), 'Page') || !currentNode.has('Type') && currentNode.has('Contents')) {
13792 if (currentPageIndex === pageIndex) {
13793 capability.resolve([currentNode, null]);
13794 return {
13795 v: void 0
13796 };
13797 }
13798
13799 currentPageIndex++;
13800 return "continue";
13801 }
13802
13803 capability.reject(new _util.FormatError('Page dictionary kids object is not an array.'));
13804 return {
13805 v: void 0
13806 };
13807 }
13808
13809 for (var last = kids.length - 1; last >= 0; last--) {
13810 nodesToVisit.push(kids[last]);
13811 }
13812 };
13813
13814 while (nodesToVisit.length) {
13815 var _ret = _loop();
13816
13817 switch (_ret) {
13818 case "continue":
13819 continue;
13820
13821 default:
13822 if (_typeof(_ret) === "object") return _ret.v;
13823 }
13824 }
13825
13826 capability.reject(new Error("Page index ".concat(pageIndex, " not found.")));
13827 }
13828
13829 next();
13830 return capability.promise;
13831 }
13832 }, {
13833 key: "getPageIndex",
13834 value: function getPageIndex(pageRef) {
13835 var xref = this.xref;
13836
13837 function pagesBeforeRef(kidRef) {
13838 var total = 0,
13839 parentRef;
13840 return xref.fetchAsync(kidRef).then(function (node) {
13841 if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, 'Page') && !((0, _primitives.isDict)(node) && !node.has('Type') && node.has('Contents'))) {
13842 throw new _util.FormatError('The reference does not point to a /Page dictionary.');
13843 }
13844
13845 if (!node) {
13846 return null;
13847 }
13848
13849 if (!(0, _primitives.isDict)(node)) {
13850 throw new _util.FormatError('Node must be a dictionary.');
13851 }
13852
13853 parentRef = node.getRaw('Parent');
13854 return node.getAsync('Parent');
13855 }).then(function (parent) {
13856 if (!parent) {
13857 return null;
13858 }
13859
13860 if (!(0, _primitives.isDict)(parent)) {
13861 throw new _util.FormatError('Parent must be a dictionary.');
13862 }
13863
13864 return parent.getAsync('Kids');
13865 }).then(function (kids) {
13866 if (!kids) {
13867 return null;
13868 }
13869
13870 var kidPromises = [];
13871 var found = false;
13872
13873 for (var i = 0, ii = kids.length; i < ii; i++) {
13874 var kid = kids[i];
13875
13876 if (!(0, _primitives.isRef)(kid)) {
13877 throw new _util.FormatError('Kid must be a reference.');
13878 }
13879
13880 if ((0, _primitives.isRefsEqual)(kid, kidRef)) {
13881 found = true;
13882 break;
13883 }
13884
13885 kidPromises.push(xref.fetchAsync(kid).then(function (kid) {
13886 if (!(0, _primitives.isDict)(kid)) {
13887 throw new _util.FormatError('Kid node must be a dictionary.');
13888 }
13889
13890 if (kid.has('Count')) {
13891 total += kid.get('Count');
13892 } else {
13893 total++;
13894 }
13895 }));
13896 }
13897
13898 if (!found) {
13899 throw new _util.FormatError('Kid reference not found in parent\'s kids.');
13900 }
13901
13902 return Promise.all(kidPromises).then(function () {
13903 return [total, parentRef];
13904 });
13905 });
13906 }
13907
13908 var total = 0;
13909
13910 function next(ref) {
13911 return pagesBeforeRef(ref).then(function (args) {
13912 if (!args) {
13913 return total;
13914 }
13915
13916 var _args = _slicedToArray(args, 2),
13917 count = _args[0],
13918 parentRef = _args[1];
13919
13920 total += count;
13921 return next(parentRef);
13922 });
13923 }
13924
13925 return next(pageRef);
13926 }
13927 }, {
13928 key: "metadata",
13929 get: function get() {
13930 var streamRef = this.catDict.getRaw('Metadata');
13931
13932 if (!(0, _primitives.isRef)(streamRef)) {
13933 return (0, _util.shadow)(this, 'metadata', null);
13934 }
13935
13936 var suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);
13937 var stream = this.xref.fetch(streamRef, suppressEncryption);
13938 var metadata;
13939
13940 if (stream && (0, _primitives.isDict)(stream.dict)) {
13941 var type = stream.dict.get('Type');
13942 var subtype = stream.dict.get('Subtype');
13943
13944 if ((0, _primitives.isName)(type, 'Metadata') && (0, _primitives.isName)(subtype, 'XML')) {
13945 try {
13946 metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));
13947 } catch (e) {
13948 if (e instanceof _core_utils.MissingDataException) {
13949 throw e;
13950 }
13951
13952 (0, _util.info)('Skipping invalid metadata.');
13953 }
13954 }
13955 }
13956
13957 return (0, _util.shadow)(this, 'metadata', metadata);
13958 }
13959 }, {
13960 key: "toplevelPagesDict",
13961 get: function get() {
13962 var pagesObj = this.catDict.get('Pages');
13963
13964 if (!(0, _primitives.isDict)(pagesObj)) {
13965 throw new _util.FormatError('Invalid top-level pages dictionary.');
13966 }
13967
13968 return (0, _util.shadow)(this, 'toplevelPagesDict', pagesObj);
13969 }
13970 }, {
13971 key: "documentOutline",
13972 get: function get() {
13973 var obj = null;
13974
13975 try {
13976 obj = this._readDocumentOutline();
13977 } catch (ex) {
13978 if (ex instanceof _core_utils.MissingDataException) {
13979 throw ex;
13980 }
13981
13982 (0, _util.warn)('Unable to read document outline.');
13983 }
13984
13985 return (0, _util.shadow)(this, 'documentOutline', obj);
13986 }
13987 }, {
13988 key: "permissions",
13989 get: function get() {
13990 var permissions = null;
13991
13992 try {
13993 permissions = this._readPermissions();
13994 } catch (ex) {
13995 if (ex instanceof _core_utils.MissingDataException) {
13996 throw ex;
13997 }
13998
13999 (0, _util.warn)('Unable to read permissions.');
14000 }
14001
14002 return (0, _util.shadow)(this, 'permissions', permissions);
14003 }
14004 }, {
14005 key: "numPages",
14006 get: function get() {
14007 var obj = this.toplevelPagesDict.get('Count');
14008
14009 if (!Number.isInteger(obj)) {
14010 throw new _util.FormatError('Page count in top-level pages dictionary is not an integer.');
14011 }
14012
14013 return (0, _util.shadow)(this, 'numPages', obj);
14014 }
14015 }, {
14016 key: "destinations",
14017 get: function get() {
14018 var obj = this._readDests(),
14019 dests = Object.create(null);
14020
14021 if (obj instanceof NameTree) {
14022 var names = obj.getAll();
14023
14024 for (var name in names) {
14025 dests[name] = fetchDestination(names[name]);
14026 }
14027 } else if (obj instanceof _primitives.Dict) {
14028 obj.forEach(function (key, value) {
14029 if (value) {
14030 dests[key] = fetchDestination(value);
14031 }
14032 });
14033 }
14034
14035 return (0, _util.shadow)(this, 'destinations', dests);
14036 }
14037 }, {
14038 key: "pageLabels",
14039 get: function get() {
14040 var obj = null;
14041
14042 try {
14043 obj = this._readPageLabels();
14044 } catch (ex) {
14045 if (ex instanceof _core_utils.MissingDataException) {
14046 throw ex;
14047 }
14048
14049 (0, _util.warn)('Unable to read page labels.');
14050 }
14051
14052 return (0, _util.shadow)(this, 'pageLabels', obj);
14053 }
14054 }, {
14055 key: "pageLayout",
14056 get: function get() {
14057 var obj = this.catDict.get('PageLayout');
14058 var pageLayout = '';
14059
14060 if ((0, _primitives.isName)(obj)) {
14061 switch (obj.name) {
14062 case 'SinglePage':
14063 case 'OneColumn':
14064 case 'TwoColumnLeft':
14065 case 'TwoColumnRight':
14066 case 'TwoPageLeft':
14067 case 'TwoPageRight':
14068 pageLayout = obj.name;
14069 }
14070 }
14071
14072 return (0, _util.shadow)(this, 'pageLayout', pageLayout);
14073 }
14074 }, {
14075 key: "pageMode",
14076 get: function get() {
14077 var obj = this.catDict.get('PageMode');
14078 var pageMode = 'UseNone';
14079
14080 if ((0, _primitives.isName)(obj)) {
14081 switch (obj.name) {
14082 case 'UseNone':
14083 case 'UseOutlines':
14084 case 'UseThumbs':
14085 case 'FullScreen':
14086 case 'UseOC':
14087 case 'UseAttachments':
14088 pageMode = obj.name;
14089 }
14090 }
14091
14092 return (0, _util.shadow)(this, 'pageMode', pageMode);
14093 }
14094 }, {
14095 key: "viewerPreferences",
14096 get: function get() {
14097 var _this2 = this;
14098
14099 var ViewerPreferencesValidators = {
14100 HideToolbar: _util.isBool,
14101 HideMenubar: _util.isBool,
14102 HideWindowUI: _util.isBool,
14103 FitWindow: _util.isBool,
14104 CenterWindow: _util.isBool,
14105 DisplayDocTitle: _util.isBool,
14106 NonFullScreenPageMode: _primitives.isName,
14107 Direction: _primitives.isName,
14108 ViewArea: _primitives.isName,
14109 ViewClip: _primitives.isName,
14110 PrintArea: _primitives.isName,
14111 PrintClip: _primitives.isName,
14112 PrintScaling: _primitives.isName,
14113 Duplex: _primitives.isName,
14114 PickTrayByPDFSize: _util.isBool,
14115 PrintPageRange: Array.isArray,
14116 NumCopies: Number.isInteger
14117 };
14118 var obj = this.catDict.get('ViewerPreferences');
14119 var prefs = Object.create(null);
14120
14121 if ((0, _primitives.isDict)(obj)) {
14122 for (var key in ViewerPreferencesValidators) {
14123 if (!obj.has(key)) {
14124 continue;
14125 }
14126
14127 var value = obj.get(key);
14128
14129 if (!ViewerPreferencesValidators[key](value)) {
14130 (0, _util.info)("Bad value in ViewerPreferences for \"".concat(key, "\"."));
14131 continue;
14132 }
14133
14134 var prefValue = void 0;
14135
14136 switch (key) {
14137 case 'NonFullScreenPageMode':
14138 switch (value.name) {
14139 case 'UseNone':
14140 case 'UseOutlines':
14141 case 'UseThumbs':
14142 case 'UseOC':
14143 prefValue = value.name;
14144 break;
14145
14146 default:
14147 prefValue = 'UseNone';
14148 }
14149
14150 break;
14151
14152 case 'Direction':
14153 switch (value.name) {
14154 case 'L2R':
14155 case 'R2L':
14156 prefValue = value.name;
14157 break;
14158
14159 default:
14160 prefValue = 'L2R';
14161 }
14162
14163 break;
14164
14165 case 'ViewArea':
14166 case 'ViewClip':
14167 case 'PrintArea':
14168 case 'PrintClip':
14169 switch (value.name) {
14170 case 'MediaBox':
14171 case 'CropBox':
14172 case 'BleedBox':
14173 case 'TrimBox':
14174 case 'ArtBox':
14175 prefValue = value.name;
14176 break;
14177
14178 default:
14179 prefValue = 'CropBox';
14180 }
14181
14182 break;
14183
14184 case 'PrintScaling':
14185 switch (value.name) {
14186 case 'None':
14187 case 'AppDefault':
14188 prefValue = value.name;
14189 break;
14190
14191 default:
14192 prefValue = 'AppDefault';
14193 }
14194
14195 break;
14196
14197 case 'Duplex':
14198 switch (value.name) {
14199 case 'Simplex':
14200 case 'DuplexFlipShortEdge':
14201 case 'DuplexFlipLongEdge':
14202 prefValue = value.name;
14203 break;
14204
14205 default:
14206 prefValue = 'None';
14207 }
14208
14209 break;
14210
14211 case 'PrintPageRange':
14212 var length = value.length;
14213
14214 if (length % 2 !== 0) {
14215 break;
14216 }
14217
14218 var isValid = value.every(function (page, i, arr) {
14219 return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= _this2.numPages;
14220 });
14221
14222 if (isValid) {
14223 prefValue = value;
14224 }
14225
14226 break;
14227
14228 case 'NumCopies':
14229 if (value > 0) {
14230 prefValue = value;
14231 }
14232
14233 break;
14234
14235 default:
14236 (0, _util.assert)(typeof value === 'boolean');
14237 prefValue = value;
14238 }
14239
14240 if (prefValue !== undefined) {
14241 prefs[key] = prefValue;
14242 } else {
14243 (0, _util.info)("Bad value in ViewerPreferences for \"".concat(key, "\"."));
14244 }
14245 }
14246 }
14247
14248 return (0, _util.shadow)(this, 'viewerPreferences', prefs);
14249 }
14250 }, {
14251 key: "openActionDestination",
14252 get: function get() {
14253 var obj = this.catDict.get('OpenAction');
14254 var openActionDest = null;
14255
14256 if ((0, _primitives.isDict)(obj)) {
14257 var destDict = new _primitives.Dict(this.xref);
14258 destDict.set('A', obj);
14259 var resultObj = {
14260 url: null,
14261 dest: null
14262 };
14263 Catalog.parseDestDictionary({
14264 destDict: destDict,
14265 resultObj: resultObj
14266 });
14267
14268 if (Array.isArray(resultObj.dest)) {
14269 openActionDest = resultObj.dest;
14270 }
14271 } else if (Array.isArray(obj)) {
14272 openActionDest = obj;
14273 }
14274
14275 return (0, _util.shadow)(this, 'openActionDestination', openActionDest);
14276 }
14277 }, {
14278 key: "attachments",
14279 get: function get() {
14280 var obj = this.catDict.get('Names');
14281 var attachments = null;
14282
14283 if (obj && obj.has('EmbeddedFiles')) {
14284 var nameTree = new NameTree(obj.getRaw('EmbeddedFiles'), this.xref);
14285 var names = nameTree.getAll();
14286
14287 for (var name in names) {
14288 var fs = new FileSpec(names[name], this.xref);
14289
14290 if (!attachments) {
14291 attachments = Object.create(null);
14292 }
14293
14294 attachments[(0, _util.stringToPDFString)(name)] = fs.serializable;
14295 }
14296 }
14297
14298 return (0, _util.shadow)(this, 'attachments', attachments);
14299 }
14300 }, {
14301 key: "javaScript",
14302 get: function get() {
14303 var obj = this.catDict.get('Names');
14304 var javaScript = null;
14305
14306 function appendIfJavaScriptDict(jsDict) {
14307 var type = jsDict.get('S');
14308
14309 if (!(0, _primitives.isName)(type, 'JavaScript')) {
14310 return;
14311 }
14312
14313 var js = jsDict.get('JS');
14314
14315 if ((0, _primitives.isStream)(js)) {
14316 js = (0, _util.bytesToString)(js.getBytes());
14317 } else if (!(0, _util.isString)(js)) {
14318 return;
14319 }
14320
14321 if (!javaScript) {
14322 javaScript = [];
14323 }
14324
14325 javaScript.push((0, _util.stringToPDFString)(js));
14326 }
14327
14328 if (obj && obj.has('JavaScript')) {
14329 var nameTree = new NameTree(obj.getRaw('JavaScript'), this.xref);
14330 var names = nameTree.getAll();
14331
14332 for (var name in names) {
14333 var jsDict = names[name];
14334
14335 if ((0, _primitives.isDict)(jsDict)) {
14336 appendIfJavaScriptDict(jsDict);
14337 }
14338 }
14339 }
14340
14341 var openActionDict = this.catDict.get('OpenAction');
14342
14343 if ((0, _primitives.isDict)(openActionDict, 'Action')) {
14344 var actionType = openActionDict.get('S');
14345
14346 if ((0, _primitives.isName)(actionType, 'Named')) {
14347 var action = openActionDict.get('N');
14348
14349 if ((0, _primitives.isName)(action, 'Print')) {
14350 if (!javaScript) {
14351 javaScript = [];
14352 }
14353
14354 javaScript.push('print({});');
14355 }
14356 } else {
14357 appendIfJavaScriptDict(openActionDict);
14358 }
14359 }
14360
14361 return (0, _util.shadow)(this, 'javaScript', javaScript);
14362 }
14363 }], [{
14364 key: "parseDestDictionary",
14365 value: function parseDestDictionary(params) {
14366 function addDefaultProtocolToUrl(url) {
14367 return url.startsWith('www.') ? "http://".concat(url) : url;
14368 }
14369
14370 function tryConvertUrlEncoding(url) {
14371 try {
14372 return (0, _util.stringToUTF8String)(url);
14373 } catch (e) {
14374 return url;
14375 }
14376 }
14377
14378 var destDict = params.destDict;
14379
14380 if (!(0, _primitives.isDict)(destDict)) {
14381 (0, _util.warn)('parseDestDictionary: `destDict` must be a dictionary.');
14382 return;
14383 }
14384
14385 var resultObj = params.resultObj;
14386
14387 if (_typeof(resultObj) !== 'object') {
14388 (0, _util.warn)('parseDestDictionary: `resultObj` must be an object.');
14389 return;
14390 }
14391
14392 var docBaseUrl = params.docBaseUrl || null;
14393 var action = destDict.get('A'),
14394 url,
14395 dest;
14396
14397 if (!(0, _primitives.isDict)(action) && destDict.has('Dest')) {
14398 action = destDict.get('Dest');
14399 }
14400
14401 if ((0, _primitives.isDict)(action)) {
14402 var actionType = action.get('S');
14403
14404 if (!(0, _primitives.isName)(actionType)) {
14405 (0, _util.warn)('parseDestDictionary: Invalid type in Action dictionary.');
14406 return;
14407 }
14408
14409 var actionName = actionType.name;
14410
14411 switch (actionName) {
14412 case 'URI':
14413 url = action.get('URI');
14414
14415 if ((0, _primitives.isName)(url)) {
14416 url = '/' + url.name;
14417 } else if ((0, _util.isString)(url)) {
14418 url = addDefaultProtocolToUrl(url);
14419 }
14420
14421 break;
14422
14423 case 'GoTo':
14424 dest = action.get('D');
14425 break;
14426
14427 case 'Launch':
14428 case 'GoToR':
14429 var urlDict = action.get('F');
14430
14431 if ((0, _primitives.isDict)(urlDict)) {
14432 url = urlDict.get('F') || null;
14433 } else if ((0, _util.isString)(urlDict)) {
14434 url = urlDict;
14435 }
14436
14437 var remoteDest = action.get('D');
14438
14439 if (remoteDest) {
14440 if ((0, _primitives.isName)(remoteDest)) {
14441 remoteDest = remoteDest.name;
14442 }
14443
14444 if ((0, _util.isString)(url)) {
14445 var baseUrl = url.split('#')[0];
14446
14447 if ((0, _util.isString)(remoteDest)) {
14448 url = baseUrl + '#' + remoteDest;
14449 } else if (Array.isArray(remoteDest)) {
14450 url = baseUrl + '#' + JSON.stringify(remoteDest);
14451 }
14452 }
14453 }
14454
14455 var newWindow = action.get('NewWindow');
14456
14457 if ((0, _util.isBool)(newWindow)) {
14458 resultObj.newWindow = newWindow;
14459 }
14460
14461 break;
14462
14463 case 'Named':
14464 var namedAction = action.get('N');
14465
14466 if ((0, _primitives.isName)(namedAction)) {
14467 resultObj.action = namedAction.name;
14468 }
14469
14470 break;
14471
14472 case 'JavaScript':
14473 var jsAction = action.get('JS');
14474 var js;
14475
14476 if ((0, _primitives.isStream)(jsAction)) {
14477 js = (0, _util.bytesToString)(jsAction.getBytes());
14478 } else if ((0, _util.isString)(jsAction)) {
14479 js = jsAction;
14480 }
14481
14482 if (js) {
14483 var URL_OPEN_METHODS = ['app.launchURL', 'window.open'];
14484 var regex = new RegExp('^\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\.') + ')\\((?:\'|\")([^\'\"]*)(?:\'|\")(?:,\\s*(\\w+)\\)|\\))', 'i');
14485 var jsUrl = regex.exec((0, _util.stringToPDFString)(js));
14486
14487 if (jsUrl && jsUrl[2]) {
14488 url = jsUrl[2];
14489
14490 if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') {
14491 resultObj.newWindow = true;
14492 }
14493
14494 break;
14495 }
14496 }
14497
14498 default:
14499 (0, _util.warn)("parseDestDictionary: unsupported action type \"".concat(actionName, "\"."));
14500 break;
14501 }
14502 } else if (destDict.has('Dest')) {
14503 dest = destDict.get('Dest');
14504 }
14505
14506 if ((0, _util.isString)(url)) {
14507 url = tryConvertUrlEncoding(url);
14508 var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);
14509
14510 if (absoluteUrl) {
14511 resultObj.url = absoluteUrl.href;
14512 }
14513
14514 resultObj.unsafeUrl = url;
14515 }
14516
14517 if (dest) {
14518 if ((0, _primitives.isName)(dest)) {
14519 dest = dest.name;
14520 }
14521
14522 if ((0, _util.isString)(dest) || Array.isArray(dest)) {
14523 resultObj.dest = dest;
14524 }
14525 }
14526 }
14527 }]);
14528
14529 return Catalog;
14530}();
14531
14532exports.Catalog = Catalog;
14533
14534var XRef = function XRefClosure() {
14535 function XRef(stream, pdfManager) {
14536 this.stream = stream;
14537 this.pdfManager = pdfManager;
14538 this.entries = [];
14539 this.xrefstms = Object.create(null);
14540 this.cache = [];
14541 this.stats = {
14542 streamTypes: [],
14543 fontTypes: []
14544 };
14545 }
14546
14547 XRef.prototype = {
14548 setStartXRef: function XRef_setStartXRef(startXRef) {
14549 this.startXRefQueue = [startXRef];
14550 },
14551 parse: function XRef_parse(recoveryMode) {
14552 var trailerDict;
14553
14554 if (!recoveryMode) {
14555 trailerDict = this.readXRef();
14556 } else {
14557 (0, _util.warn)('Indexing all PDF objects');
14558 trailerDict = this.indexObjects();
14559 }
14560
14561 trailerDict.assignXref(this);
14562 this.trailer = trailerDict;
14563 var encrypt;
14564
14565 try {
14566 encrypt = trailerDict.get('Encrypt');
14567 } catch (ex) {
14568 if (ex instanceof _core_utils.MissingDataException) {
14569 throw ex;
14570 }
14571
14572 (0, _util.warn)("XRef.parse - Invalid \"Encrypt\" reference: \"".concat(ex, "\"."));
14573 }
14574
14575 if ((0, _primitives.isDict)(encrypt)) {
14576 var ids = trailerDict.get('ID');
14577 var fileId = ids && ids.length ? ids[0] : '';
14578 encrypt.suppressEncryption = true;
14579 this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);
14580 }
14581
14582 var root;
14583
14584 try {
14585 root = trailerDict.get('Root');
14586 } catch (ex) {
14587 if (ex instanceof _core_utils.MissingDataException) {
14588 throw ex;
14589 }
14590
14591 (0, _util.warn)("XRef.parse - Invalid \"Root\" reference: \"".concat(ex, "\"."));
14592 }
14593
14594 if ((0, _primitives.isDict)(root) && root.has('Pages')) {
14595 this.root = root;
14596 } else {
14597 if (!recoveryMode) {
14598 throw new _core_utils.XRefParseException();
14599 }
14600
14601 throw new _util.FormatError('Invalid root reference');
14602 }
14603 },
14604 processXRefTable: function XRef_processXRefTable(parser) {
14605 if (!('tableState' in this)) {
14606 this.tableState = {
14607 entryNum: 0,
14608 streamPos: parser.lexer.stream.pos,
14609 parserBuf1: parser.buf1,
14610 parserBuf2: parser.buf2
14611 };
14612 }
14613
14614 var obj = this.readXRefTable(parser);
14615
14616 if (!(0, _primitives.isCmd)(obj, 'trailer')) {
14617 throw new _util.FormatError('Invalid XRef table: could not find trailer dictionary');
14618 }
14619
14620 var dict = parser.getObj();
14621
14622 if (!(0, _primitives.isDict)(dict) && dict.dict) {
14623 dict = dict.dict;
14624 }
14625
14626 if (!(0, _primitives.isDict)(dict)) {
14627 throw new _util.FormatError('Invalid XRef table: could not parse trailer dictionary');
14628 }
14629
14630 delete this.tableState;
14631 return dict;
14632 },
14633 readXRefTable: function XRef_readXRefTable(parser) {
14634 var stream = parser.lexer.stream;
14635 var tableState = this.tableState;
14636 stream.pos = tableState.streamPos;
14637 parser.buf1 = tableState.parserBuf1;
14638 parser.buf2 = tableState.parserBuf2;
14639 var obj;
14640
14641 while (true) {
14642 if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {
14643 if ((0, _primitives.isCmd)(obj = parser.getObj(), 'trailer')) {
14644 break;
14645 }
14646
14647 tableState.firstEntryNum = obj;
14648 tableState.entryCount = parser.getObj();
14649 }
14650
14651 var first = tableState.firstEntryNum;
14652 var count = tableState.entryCount;
14653
14654 if (!Number.isInteger(first) || !Number.isInteger(count)) {
14655 throw new _util.FormatError('Invalid XRef table: wrong types in subsection header');
14656 }
14657
14658 for (var i = tableState.entryNum; i < count; i++) {
14659 tableState.streamPos = stream.pos;
14660 tableState.entryNum = i;
14661 tableState.parserBuf1 = parser.buf1;
14662 tableState.parserBuf2 = parser.buf2;
14663 var entry = {};
14664 entry.offset = parser.getObj();
14665 entry.gen = parser.getObj();
14666 var type = parser.getObj();
14667
14668 if (type instanceof _primitives.Cmd) {
14669 switch (type.cmd) {
14670 case 'f':
14671 entry.free = true;
14672 break;
14673
14674 case 'n':
14675 entry.uncompressed = true;
14676 break;
14677 }
14678 }
14679
14680 if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {
14681 throw new _util.FormatError("Invalid entry in XRef subsection: ".concat(first, ", ").concat(count));
14682 }
14683
14684 if (i === 0 && entry.free && first === 1) {
14685 first = 0;
14686 }
14687
14688 if (!this.entries[i + first]) {
14689 this.entries[i + first] = entry;
14690 }
14691 }
14692
14693 tableState.entryNum = 0;
14694 tableState.streamPos = stream.pos;
14695 tableState.parserBuf1 = parser.buf1;
14696 tableState.parserBuf2 = parser.buf2;
14697 delete tableState.firstEntryNum;
14698 delete tableState.entryCount;
14699 }
14700
14701 if (this.entries[0] && !this.entries[0].free) {
14702 throw new _util.FormatError('Invalid XRef table: unexpected first object');
14703 }
14704
14705 return obj;
14706 },
14707 processXRefStream: function XRef_processXRefStream(stream) {
14708 if (!('streamState' in this)) {
14709 var streamParameters = stream.dict;
14710 var byteWidths = streamParameters.get('W');
14711 var range = streamParameters.get('Index');
14712
14713 if (!range) {
14714 range = [0, streamParameters.get('Size')];
14715 }
14716
14717 this.streamState = {
14718 entryRanges: range,
14719 byteWidths: byteWidths,
14720 entryNum: 0,
14721 streamPos: stream.pos
14722 };
14723 }
14724
14725 this.readXRefStream(stream);
14726 delete this.streamState;
14727 return stream.dict;
14728 },
14729 readXRefStream: function XRef_readXRefStream(stream) {
14730 var i, j;
14731 var streamState = this.streamState;
14732 stream.pos = streamState.streamPos;
14733 var byteWidths = streamState.byteWidths;
14734 var typeFieldWidth = byteWidths[0];
14735 var offsetFieldWidth = byteWidths[1];
14736 var generationFieldWidth = byteWidths[2];
14737 var entryRanges = streamState.entryRanges;
14738
14739 while (entryRanges.length > 0) {
14740 var first = entryRanges[0];
14741 var n = entryRanges[1];
14742
14743 if (!Number.isInteger(first) || !Number.isInteger(n)) {
14744 throw new _util.FormatError("Invalid XRef range fields: ".concat(first, ", ").concat(n));
14745 }
14746
14747 if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {
14748 throw new _util.FormatError("Invalid XRef entry fields length: ".concat(first, ", ").concat(n));
14749 }
14750
14751 for (i = streamState.entryNum; i < n; ++i) {
14752 streamState.entryNum = i;
14753 streamState.streamPos = stream.pos;
14754 var type = 0,
14755 offset = 0,
14756 generation = 0;
14757
14758 for (j = 0; j < typeFieldWidth; ++j) {
14759 type = type << 8 | stream.getByte();
14760 }
14761
14762 if (typeFieldWidth === 0) {
14763 type = 1;
14764 }
14765
14766 for (j = 0; j < offsetFieldWidth; ++j) {
14767 offset = offset << 8 | stream.getByte();
14768 }
14769
14770 for (j = 0; j < generationFieldWidth; ++j) {
14771 generation = generation << 8 | stream.getByte();
14772 }
14773
14774 var entry = {};
14775 entry.offset = offset;
14776 entry.gen = generation;
14777
14778 switch (type) {
14779 case 0:
14780 entry.free = true;
14781 break;
14782
14783 case 1:
14784 entry.uncompressed = true;
14785 break;
14786
14787 case 2:
14788 break;
14789
14790 default:
14791 throw new _util.FormatError("Invalid XRef entry type: ".concat(type));
14792 }
14793
14794 if (!this.entries[first + i]) {
14795 this.entries[first + i] = entry;
14796 }
14797 }
14798
14799 streamState.entryNum = 0;
14800 streamState.streamPos = stream.pos;
14801 entryRanges.splice(0, 2);
14802 }
14803 },
14804 indexObjects: function XRef_indexObjects() {
14805 var TAB = 0x9,
14806 LF = 0xA,
14807 CR = 0xD,
14808 SPACE = 0x20;
14809 var PERCENT = 0x25,
14810 LT = 0x3C;
14811
14812 function readToken(data, offset) {
14813 var token = '',
14814 ch = data[offset];
14815
14816 while (ch !== LF && ch !== CR && ch !== LT) {
14817 if (++offset >= data.length) {
14818 break;
14819 }
14820
14821 token += String.fromCharCode(ch);
14822 ch = data[offset];
14823 }
14824
14825 return token;
14826 }
14827
14828 function skipUntil(data, offset, what) {
14829 var length = what.length,
14830 dataLength = data.length;
14831 var skipped = 0;
14832
14833 while (offset < dataLength) {
14834 var i = 0;
14835
14836 while (i < length && data[offset + i] === what[i]) {
14837 ++i;
14838 }
14839
14840 if (i >= length) {
14841 break;
14842 }
14843
14844 offset++;
14845 skipped++;
14846 }
14847
14848 return skipped;
14849 }
14850
14851 var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/;
14852 var endobjRegExp = /\bendobj[\b\s]$/;
14853 var nestedObjRegExp = /\s+(\d+\s+\d+\s+obj[\b\s<])$/;
14854 var CHECK_CONTENT_LENGTH = 25;
14855 var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);
14856 var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);
14857 var objBytes = new Uint8Array([111, 98, 106]);
14858 var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);
14859 this.entries.length = 0;
14860 var stream = this.stream;
14861 stream.pos = 0;
14862 var buffer = stream.getBytes();
14863 var position = stream.start,
14864 length = buffer.length;
14865 var trailers = [],
14866 xrefStms = [];
14867
14868 while (position < length) {
14869 var ch = buffer[position];
14870
14871 if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {
14872 ++position;
14873 continue;
14874 }
14875
14876 if (ch === PERCENT) {
14877 do {
14878 ++position;
14879
14880 if (position >= length) {
14881 break;
14882 }
14883
14884 ch = buffer[position];
14885 } while (ch !== LF && ch !== CR);
14886
14887 continue;
14888 }
14889
14890 var token = readToken(buffer, position);
14891 var m;
14892
14893 if (token.startsWith('xref') && (token.length === 4 || /\s/.test(token[4]))) {
14894 position += skipUntil(buffer, position, trailerBytes);
14895 trailers.push(position);
14896 position += skipUntil(buffer, position, startxrefBytes);
14897 } else if (m = objRegExp.exec(token)) {
14898 var num = m[1] | 0,
14899 gen = m[2] | 0;
14900
14901 if (typeof this.entries[num] === 'undefined') {
14902 this.entries[num] = {
14903 offset: position - stream.start,
14904 gen: gen,
14905 uncompressed: true
14906 };
14907 }
14908
14909 var contentLength = void 0,
14910 startPos = position + token.length;
14911
14912 while (startPos < buffer.length) {
14913 var endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;
14914 contentLength = endPos - position;
14915 var checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);
14916 var tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));
14917
14918 if (endobjRegExp.test(tokenStr)) {
14919 break;
14920 } else {
14921 var objToken = nestedObjRegExp.exec(tokenStr);
14922
14923 if (objToken && objToken[1]) {
14924 (0, _util.warn)('indexObjects: Found new "obj" inside of another "obj", ' + 'caused by missing "endobj" -- trying to recover.');
14925 contentLength -= objToken[1].length;
14926 break;
14927 }
14928 }
14929
14930 startPos = endPos;
14931 }
14932
14933 var content = buffer.subarray(position, position + contentLength);
14934 var xrefTagOffset = skipUntil(content, 0, xrefBytes);
14935
14936 if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {
14937 xrefStms.push(position - stream.start);
14938 this.xrefstms[position - stream.start] = 1;
14939 }
14940
14941 position += contentLength;
14942 } else if (token.startsWith('trailer') && (token.length === 7 || /\s/.test(token[7]))) {
14943 trailers.push(position);
14944 position += skipUntil(buffer, position, startxrefBytes);
14945 } else {
14946 position += token.length + 1;
14947 }
14948 }
14949
14950 var i, ii;
14951
14952 for (i = 0, ii = xrefStms.length; i < ii; ++i) {
14953 this.startXRefQueue.push(xrefStms[i]);
14954 this.readXRef(true);
14955 }
14956
14957 var trailerDict;
14958
14959 for (i = 0, ii = trailers.length; i < ii; ++i) {
14960 stream.pos = trailers[i];
14961 var parser = new _parser.Parser({
14962 lexer: new _parser.Lexer(stream),
14963 xref: this,
14964 allowStreams: true,
14965 recoveryMode: true
14966 });
14967 var obj = parser.getObj();
14968
14969 if (!(0, _primitives.isCmd)(obj, 'trailer')) {
14970 continue;
14971 }
14972
14973 var dict = parser.getObj();
14974
14975 if (!(0, _primitives.isDict)(dict)) {
14976 continue;
14977 }
14978
14979 var rootDict = void 0;
14980
14981 try {
14982 rootDict = dict.get('Root');
14983 } catch (ex) {
14984 if (ex instanceof _core_utils.MissingDataException) {
14985 throw ex;
14986 }
14987
14988 continue;
14989 }
14990
14991 if (!(0, _primitives.isDict)(rootDict) || !rootDict.has('Pages')) {
14992 continue;
14993 }
14994
14995 if (dict.has('ID')) {
14996 return dict;
14997 }
14998
14999 trailerDict = dict;
15000 }
15001
15002 if (trailerDict) {
15003 return trailerDict;
15004 }
15005
15006 throw new _util.InvalidPDFException('Invalid PDF structure');
15007 },
15008 readXRef: function XRef_readXRef(recoveryMode) {
15009 var stream = this.stream;
15010 var startXRefParsedCache = Object.create(null);
15011
15012 try {
15013 while (this.startXRefQueue.length) {
15014 var startXRef = this.startXRefQueue[0];
15015
15016 if (startXRefParsedCache[startXRef]) {
15017 (0, _util.warn)('readXRef - skipping XRef table since it was already parsed.');
15018 this.startXRefQueue.shift();
15019 continue;
15020 }
15021
15022 startXRefParsedCache[startXRef] = true;
15023 stream.pos = startXRef + stream.start;
15024 var parser = new _parser.Parser({
15025 lexer: new _parser.Lexer(stream),
15026 xref: this,
15027 allowStreams: true
15028 });
15029 var obj = parser.getObj();
15030 var dict;
15031
15032 if ((0, _primitives.isCmd)(obj, 'xref')) {
15033 dict = this.processXRefTable(parser);
15034
15035 if (!this.topDict) {
15036 this.topDict = dict;
15037 }
15038
15039 obj = dict.get('XRefStm');
15040
15041 if (Number.isInteger(obj)) {
15042 var pos = obj;
15043
15044 if (!(pos in this.xrefstms)) {
15045 this.xrefstms[pos] = 1;
15046 this.startXRefQueue.push(pos);
15047 }
15048 }
15049 } else if (Number.isInteger(obj)) {
15050 if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), 'obj') || !(0, _primitives.isStream)(obj = parser.getObj())) {
15051 throw new _util.FormatError('Invalid XRef stream');
15052 }
15053
15054 dict = this.processXRefStream(obj);
15055
15056 if (!this.topDict) {
15057 this.topDict = dict;
15058 }
15059
15060 if (!dict) {
15061 throw new _util.FormatError('Failed to read XRef stream');
15062 }
15063 } else {
15064 throw new _util.FormatError('Invalid XRef stream header');
15065 }
15066
15067 obj = dict.get('Prev');
15068
15069 if (Number.isInteger(obj)) {
15070 this.startXRefQueue.push(obj);
15071 } else if ((0, _primitives.isRef)(obj)) {
15072 this.startXRefQueue.push(obj.num);
15073 }
15074
15075 this.startXRefQueue.shift();
15076 }
15077
15078 return this.topDict;
15079 } catch (e) {
15080 if (e instanceof _core_utils.MissingDataException) {
15081 throw e;
15082 }
15083
15084 (0, _util.info)('(while reading XRef): ' + e);
15085 }
15086
15087 if (recoveryMode) {
15088 return undefined;
15089 }
15090
15091 throw new _core_utils.XRefParseException();
15092 },
15093 getEntry: function XRef_getEntry(i) {
15094 var xrefEntry = this.entries[i];
15095
15096 if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {
15097 return xrefEntry;
15098 }
15099
15100 return null;
15101 },
15102 fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {
15103 if (!(0, _primitives.isRef)(obj)) {
15104 return obj;
15105 }
15106
15107 return this.fetch(obj, suppressEncryption);
15108 },
15109 fetch: function XRef_fetch(ref, suppressEncryption) {
15110 if (!(0, _primitives.isRef)(ref)) {
15111 throw new Error('ref object is not a reference');
15112 }
15113
15114 var num = ref.num;
15115
15116 if (num in this.cache) {
15117 var cacheEntry = this.cache[num];
15118
15119 if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {
15120 cacheEntry.objId = ref.toString();
15121 }
15122
15123 return cacheEntry;
15124 }
15125
15126 var xrefEntry = this.getEntry(num);
15127
15128 if (xrefEntry === null) {
15129 return this.cache[num] = null;
15130 }
15131
15132 if (xrefEntry.uncompressed) {
15133 xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);
15134 } else {
15135 xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);
15136 }
15137
15138 if ((0, _primitives.isDict)(xrefEntry)) {
15139 xrefEntry.objId = ref.toString();
15140 } else if ((0, _primitives.isStream)(xrefEntry)) {
15141 xrefEntry.dict.objId = ref.toString();
15142 }
15143
15144 return xrefEntry;
15145 },
15146 fetchUncompressed: function fetchUncompressed(ref, xrefEntry) {
15147 var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
15148 var gen = ref.gen;
15149 var num = ref.num;
15150
15151 if (xrefEntry.gen !== gen) {
15152 throw new _core_utils.XRefEntryException("Inconsistent generation in XRef: ".concat(ref));
15153 }
15154
15155 var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);
15156 var parser = new _parser.Parser({
15157 lexer: new _parser.Lexer(stream),
15158 xref: this,
15159 allowStreams: true
15160 });
15161 var obj1 = parser.getObj();
15162 var obj2 = parser.getObj();
15163 var obj3 = parser.getObj();
15164
15165 if (!Number.isInteger(obj1)) {
15166 obj1 = parseInt(obj1, 10);
15167 }
15168
15169 if (!Number.isInteger(obj2)) {
15170 obj2 = parseInt(obj2, 10);
15171 }
15172
15173 if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) {
15174 throw new _core_utils.XRefEntryException("Bad (uncompressed) XRef entry: ".concat(ref));
15175 }
15176
15177 if (obj3.cmd !== 'obj') {
15178 if (obj3.cmd.startsWith('obj')) {
15179 num = parseInt(obj3.cmd.substring(3), 10);
15180
15181 if (!Number.isNaN(num)) {
15182 return num;
15183 }
15184 }
15185
15186 throw new _core_utils.XRefEntryException("Bad (uncompressed) XRef entry: ".concat(ref));
15187 }
15188
15189 if (this.encrypt && !suppressEncryption) {
15190 xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));
15191 } else {
15192 xrefEntry = parser.getObj();
15193 }
15194
15195 if (!(0, _primitives.isStream)(xrefEntry)) {
15196 this.cache[num] = xrefEntry;
15197 }
15198
15199 return xrefEntry;
15200 },
15201 fetchCompressed: function fetchCompressed(ref, xrefEntry) {
15202 var suppressEncryption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
15203 var tableOffset = xrefEntry.offset;
15204 var stream = this.fetch(_primitives.Ref.get(tableOffset, 0));
15205
15206 if (!(0, _primitives.isStream)(stream)) {
15207 throw new _util.FormatError('bad ObjStm stream');
15208 }
15209
15210 var first = stream.dict.get('First');
15211 var n = stream.dict.get('N');
15212
15213 if (!Number.isInteger(first) || !Number.isInteger(n)) {
15214 throw new _util.FormatError('invalid first and n parameters for ObjStm stream');
15215 }
15216
15217 var parser = new _parser.Parser({
15218 lexer: new _parser.Lexer(stream),
15219 xref: this,
15220 allowStreams: true
15221 });
15222 var i,
15223 entries = [],
15224 num,
15225 nums = [];
15226
15227 for (i = 0; i < n; ++i) {
15228 num = parser.getObj();
15229
15230 if (!Number.isInteger(num)) {
15231 throw new _util.FormatError("invalid object number in the ObjStm stream: ".concat(num));
15232 }
15233
15234 nums.push(num);
15235 var offset = parser.getObj();
15236
15237 if (!Number.isInteger(offset)) {
15238 throw new _util.FormatError("invalid object offset in the ObjStm stream: ".concat(offset));
15239 }
15240 }
15241
15242 for (i = 0; i < n; ++i) {
15243 entries.push(parser.getObj());
15244
15245 if ((0, _primitives.isCmd)(parser.buf1, 'endobj')) {
15246 parser.shift();
15247 }
15248
15249 num = nums[i];
15250 var entry = this.entries[num];
15251
15252 if (entry && entry.offset === tableOffset && entry.gen === i) {
15253 this.cache[num] = entries[i];
15254 }
15255 }
15256
15257 xrefEntry = entries[xrefEntry.gen];
15258
15259 if (xrefEntry === undefined) {
15260 throw new _core_utils.XRefEntryException("Bad (compressed) XRef entry: ".concat(ref));
15261 }
15262
15263 return xrefEntry;
15264 },
15265 fetchIfRefAsync: function () {
15266 var _fetchIfRefAsync = _asyncToGenerator(
15267 /*#__PURE__*/
15268 _regenerator["default"].mark(function _callee(obj, suppressEncryption) {
15269 return _regenerator["default"].wrap(function _callee$(_context) {
15270 while (1) {
15271 switch (_context.prev = _context.next) {
15272 case 0:
15273 if ((0, _primitives.isRef)(obj)) {
15274 _context.next = 2;
15275 break;
15276 }
15277
15278 return _context.abrupt("return", obj);
15279
15280 case 2:
15281 return _context.abrupt("return", this.fetchAsync(obj, suppressEncryption));
15282
15283 case 3:
15284 case "end":
15285 return _context.stop();
15286 }
15287 }
15288 }, _callee, this);
15289 }));
15290
15291 function fetchIfRefAsync(_x, _x2) {
15292 return _fetchIfRefAsync.apply(this, arguments);
15293 }
15294
15295 return fetchIfRefAsync;
15296 }(),
15297 fetchAsync: function () {
15298 var _fetchAsync = _asyncToGenerator(
15299 /*#__PURE__*/
15300 _regenerator["default"].mark(function _callee2(ref, suppressEncryption) {
15301 return _regenerator["default"].wrap(function _callee2$(_context2) {
15302 while (1) {
15303 switch (_context2.prev = _context2.next) {
15304 case 0:
15305 _context2.prev = 0;
15306 return _context2.abrupt("return", this.fetch(ref, suppressEncryption));
15307
15308 case 4:
15309 _context2.prev = 4;
15310 _context2.t0 = _context2["catch"](0);
15311
15312 if (_context2.t0 instanceof _core_utils.MissingDataException) {
15313 _context2.next = 8;
15314 break;
15315 }
15316
15317 throw _context2.t0;
15318
15319 case 8:
15320 _context2.next = 10;
15321 return this.pdfManager.requestRange(_context2.t0.begin, _context2.t0.end);
15322
15323 case 10:
15324 return _context2.abrupt("return", this.fetchAsync(ref, suppressEncryption));
15325
15326 case 11:
15327 case "end":
15328 return _context2.stop();
15329 }
15330 }
15331 }, _callee2, this, [[0, 4]]);
15332 }));
15333
15334 function fetchAsync(_x3, _x4) {
15335 return _fetchAsync.apply(this, arguments);
15336 }
15337
15338 return fetchAsync;
15339 }(),
15340 getCatalogObj: function XRef_getCatalogObj() {
15341 return this.root;
15342 }
15343 };
15344 return XRef;
15345}();
15346
15347exports.XRef = XRef;
15348
15349var NameOrNumberTree =
15350/*#__PURE__*/
15351function () {
15352 function NameOrNumberTree(root, xref, type) {
15353 _classCallCheck(this, NameOrNumberTree);
15354
15355 if (this.constructor === NameOrNumberTree) {
15356 (0, _util.unreachable)('Cannot initialize NameOrNumberTree.');
15357 }
15358
15359 this.root = root;
15360 this.xref = xref;
15361 this._type = type;
15362 }
15363
15364 _createClass(NameOrNumberTree, [{
15365 key: "getAll",
15366 value: function getAll() {
15367 var dict = Object.create(null);
15368
15369 if (!this.root) {
15370 return dict;
15371 }
15372
15373 var xref = this.xref;
15374 var processed = new _primitives.RefSet();
15375 processed.put(this.root);
15376 var queue = [this.root];
15377
15378 while (queue.length > 0) {
15379 var obj = xref.fetchIfRef(queue.shift());
15380
15381 if (!(0, _primitives.isDict)(obj)) {
15382 continue;
15383 }
15384
15385 if (obj.has('Kids')) {
15386 var kids = obj.get('Kids');
15387
15388 for (var i = 0, ii = kids.length; i < ii; i++) {
15389 var kid = kids[i];
15390
15391 if (processed.has(kid)) {
15392 throw new _util.FormatError("Duplicate entry in \"".concat(this._type, "\" tree."));
15393 }
15394
15395 queue.push(kid);
15396 processed.put(kid);
15397 }
15398
15399 continue;
15400 }
15401
15402 var entries = obj.get(this._type);
15403
15404 if (Array.isArray(entries)) {
15405 for (var _i2 = 0, _ii = entries.length; _i2 < _ii; _i2 += 2) {
15406 dict[xref.fetchIfRef(entries[_i2])] = xref.fetchIfRef(entries[_i2 + 1]);
15407 }
15408 }
15409 }
15410
15411 return dict;
15412 }
15413 }, {
15414 key: "get",
15415 value: function get(key) {
15416 if (!this.root) {
15417 return null;
15418 }
15419
15420 var xref = this.xref;
15421 var kidsOrEntries = xref.fetchIfRef(this.root);
15422 var loopCount = 0;
15423 var MAX_LEVELS = 10;
15424
15425 while (kidsOrEntries.has('Kids')) {
15426 if (++loopCount > MAX_LEVELS) {
15427 (0, _util.warn)("Search depth limit reached for \"".concat(this._type, "\" tree."));
15428 return null;
15429 }
15430
15431 var kids = kidsOrEntries.get('Kids');
15432
15433 if (!Array.isArray(kids)) {
15434 return null;
15435 }
15436
15437 var l = 0,
15438 r = kids.length - 1;
15439
15440 while (l <= r) {
15441 var m = l + r >> 1;
15442 var kid = xref.fetchIfRef(kids[m]);
15443 var limits = kid.get('Limits');
15444
15445 if (key < xref.fetchIfRef(limits[0])) {
15446 r = m - 1;
15447 } else if (key > xref.fetchIfRef(limits[1])) {
15448 l = m + 1;
15449 } else {
15450 kidsOrEntries = xref.fetchIfRef(kids[m]);
15451 break;
15452 }
15453 }
15454
15455 if (l > r) {
15456 return null;
15457 }
15458 }
15459
15460 var entries = kidsOrEntries.get(this._type);
15461
15462 if (Array.isArray(entries)) {
15463 var _l = 0,
15464 _r = entries.length - 2;
15465
15466 while (_l <= _r) {
15467 var tmp = _l + _r >> 1,
15468 _m = tmp + (tmp & 1);
15469
15470 var currentKey = xref.fetchIfRef(entries[_m]);
15471
15472 if (key < currentKey) {
15473 _r = _m - 2;
15474 } else if (key > currentKey) {
15475 _l = _m + 2;
15476 } else {
15477 return xref.fetchIfRef(entries[_m + 1]);
15478 }
15479 }
15480
15481 (0, _util.info)("Falling back to an exhaustive search, for key \"".concat(key, "\", ") + "in \"".concat(this._type, "\" tree."));
15482
15483 for (var _m2 = 0, mm = entries.length; _m2 < mm; _m2 += 2) {
15484 var _currentKey = xref.fetchIfRef(entries[_m2]);
15485
15486 if (_currentKey === key) {
15487 (0, _util.warn)("The \"".concat(key, "\" key was found at an incorrect, ") + "i.e. out-of-order, position in \"".concat(this._type, "\" tree."));
15488 return xref.fetchIfRef(entries[_m2 + 1]);
15489 }
15490 }
15491 }
15492
15493 return null;
15494 }
15495 }]);
15496
15497 return NameOrNumberTree;
15498}();
15499
15500var NameTree =
15501/*#__PURE__*/
15502function (_NameOrNumberTree) {
15503 _inherits(NameTree, _NameOrNumberTree);
15504
15505 function NameTree(root, xref) {
15506 _classCallCheck(this, NameTree);
15507
15508 return _possibleConstructorReturn(this, _getPrototypeOf(NameTree).call(this, root, xref, 'Names'));
15509 }
15510
15511 return NameTree;
15512}(NameOrNumberTree);
15513
15514var NumberTree =
15515/*#__PURE__*/
15516function (_NameOrNumberTree2) {
15517 _inherits(NumberTree, _NameOrNumberTree2);
15518
15519 function NumberTree(root, xref) {
15520 _classCallCheck(this, NumberTree);
15521
15522 return _possibleConstructorReturn(this, _getPrototypeOf(NumberTree).call(this, root, xref, 'Nums'));
15523 }
15524
15525 return NumberTree;
15526}(NameOrNumberTree);
15527
15528var FileSpec = function FileSpecClosure() {
15529 function FileSpec(root, xref) {
15530 if (!root || !(0, _primitives.isDict)(root)) {
15531 return;
15532 }
15533
15534 this.xref = xref;
15535 this.root = root;
15536
15537 if (root.has('FS')) {
15538 this.fs = root.get('FS');
15539 }
15540
15541 this.description = root.has('Desc') ? (0, _util.stringToPDFString)(root.get('Desc')) : '';
15542
15543 if (root.has('RF')) {
15544 (0, _util.warn)('Related file specifications are not supported');
15545 }
15546
15547 this.contentAvailable = true;
15548
15549 if (!root.has('EF')) {
15550 this.contentAvailable = false;
15551 (0, _util.warn)('Non-embedded file specifications are not supported');
15552 }
15553 }
15554
15555 function pickPlatformItem(dict) {
15556 if (dict.has('UF')) {
15557 return dict.get('UF');
15558 } else if (dict.has('F')) {
15559 return dict.get('F');
15560 } else if (dict.has('Unix')) {
15561 return dict.get('Unix');
15562 } else if (dict.has('Mac')) {
15563 return dict.get('Mac');
15564 } else if (dict.has('DOS')) {
15565 return dict.get('DOS');
15566 }
15567
15568 return null;
15569 }
15570
15571 FileSpec.prototype = {
15572 get filename() {
15573 if (!this._filename && this.root) {
15574 var filename = pickPlatformItem(this.root) || 'unnamed';
15575 this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, '\\').replace(/\\\//g, '/').replace(/\\/g, '/');
15576 }
15577
15578 return this._filename;
15579 },
15580
15581 get content() {
15582 if (!this.contentAvailable) {
15583 return null;
15584 }
15585
15586 if (!this.contentRef && this.root) {
15587 this.contentRef = pickPlatformItem(this.root.get('EF'));
15588 }
15589
15590 var content = null;
15591
15592 if (this.contentRef) {
15593 var xref = this.xref;
15594 var fileObj = xref.fetchIfRef(this.contentRef);
15595
15596 if (fileObj && (0, _primitives.isStream)(fileObj)) {
15597 content = fileObj.getBytes();
15598 } else {
15599 (0, _util.warn)('Embedded file specification points to non-existing/invalid ' + 'content');
15600 }
15601 } else {
15602 (0, _util.warn)('Embedded file specification does not have a content');
15603 }
15604
15605 return content;
15606 },
15607
15608 get serializable() {
15609 return {
15610 filename: this.filename,
15611 content: this.content
15612 };
15613 }
15614
15615 };
15616 return FileSpec;
15617}();
15618
15619exports.FileSpec = FileSpec;
15620
15621var ObjectLoader = function () {
15622 function mayHaveChildren(value) {
15623 return (0, _primitives.isRef)(value) || (0, _primitives.isDict)(value) || Array.isArray(value) || (0, _primitives.isStream)(value);
15624 }
15625
15626 function addChildren(node, nodesToVisit) {
15627 if ((0, _primitives.isDict)(node) || (0, _primitives.isStream)(node)) {
15628 var dict = (0, _primitives.isDict)(node) ? node : node.dict;
15629 var dictKeys = dict.getKeys();
15630
15631 for (var i = 0, ii = dictKeys.length; i < ii; i++) {
15632 var rawValue = dict.getRaw(dictKeys[i]);
15633
15634 if (mayHaveChildren(rawValue)) {
15635 nodesToVisit.push(rawValue);
15636 }
15637 }
15638 } else if (Array.isArray(node)) {
15639 for (var _i3 = 0, _ii2 = node.length; _i3 < _ii2; _i3++) {
15640 var value = node[_i3];
15641
15642 if (mayHaveChildren(value)) {
15643 nodesToVisit.push(value);
15644 }
15645 }
15646 }
15647 }
15648
15649 function ObjectLoader(dict, keys, xref) {
15650 this.dict = dict;
15651 this.keys = keys;
15652 this.xref = xref;
15653 this.refSet = null;
15654 this.capability = null;
15655 }
15656
15657 ObjectLoader.prototype = {
15658 load: function load() {
15659 this.capability = (0, _util.createPromiseCapability)();
15660
15661 if (!(this.xref.stream instanceof _chunked_stream.ChunkedStream) || this.xref.stream.getMissingChunks().length === 0) {
15662 this.capability.resolve();
15663 return this.capability.promise;
15664 }
15665
15666 var keys = this.keys,
15667 dict = this.dict;
15668 this.refSet = new _primitives.RefSet();
15669 var nodesToVisit = [];
15670
15671 for (var i = 0, ii = keys.length; i < ii; i++) {
15672 var rawValue = dict.getRaw(keys[i]);
15673
15674 if (rawValue !== undefined) {
15675 nodesToVisit.push(rawValue);
15676 }
15677 }
15678
15679 this._walk(nodesToVisit);
15680
15681 return this.capability.promise;
15682 },
15683 _walk: function _walk(nodesToVisit) {
15684 var _this3 = this;
15685
15686 var nodesToRevisit = [];
15687 var pendingRequests = [];
15688
15689 while (nodesToVisit.length) {
15690 var currentNode = nodesToVisit.pop();
15691
15692 if ((0, _primitives.isRef)(currentNode)) {
15693 if (this.refSet.has(currentNode)) {
15694 continue;
15695 }
15696
15697 try {
15698 this.refSet.put(currentNode);
15699 currentNode = this.xref.fetch(currentNode);
15700 } catch (ex) {
15701 if (!(ex instanceof _core_utils.MissingDataException)) {
15702 throw ex;
15703 }
15704
15705 nodesToRevisit.push(currentNode);
15706 pendingRequests.push({
15707 begin: ex.begin,
15708 end: ex.end
15709 });
15710 }
15711 }
15712
15713 if (currentNode && currentNode.getBaseStreams) {
15714 var baseStreams = currentNode.getBaseStreams();
15715 var foundMissingData = false;
15716
15717 for (var i = 0, ii = baseStreams.length; i < ii; i++) {
15718 var stream = baseStreams[i];
15719
15720 if (stream.getMissingChunks && stream.getMissingChunks().length) {
15721 foundMissingData = true;
15722 pendingRequests.push({
15723 begin: stream.start,
15724 end: stream.end
15725 });
15726 }
15727 }
15728
15729 if (foundMissingData) {
15730 nodesToRevisit.push(currentNode);
15731 }
15732 }
15733
15734 addChildren(currentNode, nodesToVisit);
15735 }
15736
15737 if (pendingRequests.length) {
15738 this.xref.stream.manager.requestRanges(pendingRequests).then(function () {
15739 for (var _i4 = 0, _ii3 = nodesToRevisit.length; _i4 < _ii3; _i4++) {
15740 var node = nodesToRevisit[_i4];
15741
15742 if ((0, _primitives.isRef)(node)) {
15743 _this3.refSet.remove(node);
15744 }
15745 }
15746
15747 _this3._walk(nodesToRevisit);
15748 }, this.capability.reject);
15749 return;
15750 }
15751
15752 this.refSet = null;
15753 this.capability.resolve();
15754 }
15755 };
15756 return ObjectLoader;
15757}();
15758
15759exports.ObjectLoader = ObjectLoader;
15760
15761/***/ }),
15762/* 157 */
15763/***/ (function(module, exports, __w_pdfjs_require__) {
15764
15765"use strict";
15766
15767
15768Object.defineProperty(exports, "__esModule", {
15769 value: true
15770});
15771exports.Parser = exports.Linearization = exports.Lexer = void 0;
15772
15773var _stream = __w_pdfjs_require__(158);
15774
15775var _util = __w_pdfjs_require__(5);
15776
15777var _primitives = __w_pdfjs_require__(151);
15778
15779var _ccitt_stream = __w_pdfjs_require__(159);
15780
15781var _jbig2_stream = __w_pdfjs_require__(161);
15782
15783var _jpeg_stream = __w_pdfjs_require__(164);
15784
15785var _jpx_stream = __w_pdfjs_require__(166);
15786
15787var _core_utils = __w_pdfjs_require__(154);
15788
15789function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15790
15791function _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); } }
15792
15793function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
15794
15795var MAX_LENGTH_TO_CACHE = 1000;
15796var MAX_ADLER32_LENGTH = 5552;
15797
15798function computeAdler32(bytes) {
15799 var bytesLength = bytes.length;
15800 var a = 1,
15801 b = 0;
15802
15803 for (var i = 0; i < bytesLength; ++i) {
15804 a += bytes[i] & 0xFF;
15805 b += a;
15806 }
15807
15808 return b % 65521 << 16 | a % 65521;
15809}
15810
15811var Parser =
15812/*#__PURE__*/
15813function () {
15814 function Parser(_ref) {
15815 var lexer = _ref.lexer,
15816 xref = _ref.xref,
15817 _ref$allowStreams = _ref.allowStreams,
15818 allowStreams = _ref$allowStreams === void 0 ? false : _ref$allowStreams,
15819 _ref$recoveryMode = _ref.recoveryMode,
15820 recoveryMode = _ref$recoveryMode === void 0 ? false : _ref$recoveryMode;
15821
15822 _classCallCheck(this, Parser);
15823
15824 this.lexer = lexer;
15825 this.xref = xref;
15826 this.allowStreams = allowStreams;
15827 this.recoveryMode = recoveryMode;
15828 this.imageCache = Object.create(null);
15829 this.refill();
15830 }
15831
15832 _createClass(Parser, [{
15833 key: "refill",
15834 value: function refill() {
15835 this.buf1 = this.lexer.getObj();
15836 this.buf2 = this.lexer.getObj();
15837 }
15838 }, {
15839 key: "shift",
15840 value: function shift() {
15841 if ((0, _primitives.isCmd)(this.buf2, 'ID')) {
15842 this.buf1 = this.buf2;
15843 this.buf2 = null;
15844 } else {
15845 this.buf1 = this.buf2;
15846 this.buf2 = this.lexer.getObj();
15847 }
15848 }
15849 }, {
15850 key: "tryShift",
15851 value: function tryShift() {
15852 try {
15853 this.shift();
15854 return true;
15855 } catch (e) {
15856 if (e instanceof _core_utils.MissingDataException) {
15857 throw e;
15858 }
15859
15860 return false;
15861 }
15862 }
15863 }, {
15864 key: "getObj",
15865 value: function getObj(cipherTransform) {
15866 var buf1 = this.buf1;
15867 this.shift();
15868
15869 if (buf1 instanceof _primitives.Cmd) {
15870 switch (buf1.cmd) {
15871 case 'BI':
15872 return this.makeInlineImage(cipherTransform);
15873
15874 case '[':
15875 var array = [];
15876
15877 while (!(0, _primitives.isCmd)(this.buf1, ']') && !(0, _primitives.isEOF)(this.buf1)) {
15878 array.push(this.getObj(cipherTransform));
15879 }
15880
15881 if ((0, _primitives.isEOF)(this.buf1)) {
15882 if (!this.recoveryMode) {
15883 throw new _util.FormatError('End of file inside array');
15884 }
15885
15886 return array;
15887 }
15888
15889 this.shift();
15890 return array;
15891
15892 case '<<':
15893 var dict = new _primitives.Dict(this.xref);
15894
15895 while (!(0, _primitives.isCmd)(this.buf1, '>>') && !(0, _primitives.isEOF)(this.buf1)) {
15896 if (!(0, _primitives.isName)(this.buf1)) {
15897 (0, _util.info)('Malformed dictionary: key must be a name object');
15898 this.shift();
15899 continue;
15900 }
15901
15902 var key = this.buf1.name;
15903 this.shift();
15904
15905 if ((0, _primitives.isEOF)(this.buf1)) {
15906 break;
15907 }
15908
15909 dict.set(key, this.getObj(cipherTransform));
15910 }
15911
15912 if ((0, _primitives.isEOF)(this.buf1)) {
15913 if (!this.recoveryMode) {
15914 throw new _util.FormatError('End of file inside dictionary');
15915 }
15916
15917 return dict;
15918 }
15919
15920 if ((0, _primitives.isCmd)(this.buf2, 'stream')) {
15921 return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;
15922 }
15923
15924 this.shift();
15925 return dict;
15926
15927 default:
15928 return buf1;
15929 }
15930 }
15931
15932 if (Number.isInteger(buf1)) {
15933 var num = buf1;
15934
15935 if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, 'R')) {
15936 var ref = _primitives.Ref.get(num, this.buf1);
15937
15938 this.shift();
15939 this.shift();
15940 return ref;
15941 }
15942
15943 return num;
15944 }
15945
15946 if ((0, _util.isString)(buf1)) {
15947 var str = buf1;
15948
15949 if (cipherTransform) {
15950 str = cipherTransform.decryptString(str);
15951 }
15952
15953 return str;
15954 }
15955
15956 return buf1;
15957 }
15958 }, {
15959 key: "findDefaultInlineStreamEnd",
15960 value: function findDefaultInlineStreamEnd(stream) {
15961 var E = 0x45,
15962 I = 0x49,
15963 SPACE = 0x20,
15964 LF = 0xA,
15965 CR = 0xD;
15966 var n = 10,
15967 NUL = 0x0;
15968 var startPos = stream.pos,
15969 state = 0,
15970 ch,
15971 maybeEIPos;
15972
15973 while ((ch = stream.getByte()) !== -1) {
15974 if (state === 0) {
15975 state = ch === E ? 1 : 0;
15976 } else if (state === 1) {
15977 state = ch === I ? 2 : 0;
15978 } else {
15979 (0, _util.assert)(state === 2);
15980
15981 if (ch === SPACE || ch === LF || ch === CR) {
15982 maybeEIPos = stream.pos;
15983 var followingBytes = stream.peekBytes(n);
15984
15985 for (var i = 0, ii = followingBytes.length; i < ii; i++) {
15986 ch = followingBytes[i];
15987
15988 if (ch === NUL && followingBytes[i + 1] !== NUL) {
15989 continue;
15990 }
15991
15992 if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {
15993 state = 0;
15994 break;
15995 }
15996 }
15997
15998 if (state === 2) {
15999 break;
16000 }
16001 } else {
16002 state = 0;
16003 }
16004 }
16005 }
16006
16007 if (ch === -1) {
16008 (0, _util.warn)('findDefaultInlineStreamEnd: ' + 'Reached the end of the stream without finding a valid EI marker');
16009
16010 if (maybeEIPos) {
16011 (0, _util.warn)('... trying to recover by using the last "EI" occurrence.');
16012 stream.skip(-(stream.pos - maybeEIPos));
16013 }
16014 }
16015
16016 var endOffset = 4;
16017 stream.skip(-endOffset);
16018 ch = stream.peekByte();
16019 stream.skip(endOffset);
16020
16021 if (!(0, _util.isSpace)(ch)) {
16022 endOffset--;
16023 }
16024
16025 return stream.pos - endOffset - startPos;
16026 }
16027 }, {
16028 key: "findDCTDecodeInlineStreamEnd",
16029 value: function findDCTDecodeInlineStreamEnd(stream) {
16030 var startPos = stream.pos,
16031 foundEOI = false,
16032 b,
16033 markerLength,
16034 length;
16035
16036 while ((b = stream.getByte()) !== -1) {
16037 if (b !== 0xFF) {
16038 continue;
16039 }
16040
16041 switch (stream.getByte()) {
16042 case 0x00:
16043 break;
16044
16045 case 0xFF:
16046 stream.skip(-1);
16047 break;
16048
16049 case 0xD9:
16050 foundEOI = true;
16051 break;
16052
16053 case 0xC0:
16054 case 0xC1:
16055 case 0xC2:
16056 case 0xC3:
16057 case 0xC5:
16058 case 0xC6:
16059 case 0xC7:
16060 case 0xC9:
16061 case 0xCA:
16062 case 0xCB:
16063 case 0xCD:
16064 case 0xCE:
16065 case 0xCF:
16066 case 0xC4:
16067 case 0xCC:
16068 case 0xDA:
16069 case 0xDB:
16070 case 0xDC:
16071 case 0xDD:
16072 case 0xDE:
16073 case 0xDF:
16074 case 0xE0:
16075 case 0xE1:
16076 case 0xE2:
16077 case 0xE3:
16078 case 0xE4:
16079 case 0xE5:
16080 case 0xE6:
16081 case 0xE7:
16082 case 0xE8:
16083 case 0xE9:
16084 case 0xEA:
16085 case 0xEB:
16086 case 0xEC:
16087 case 0xED:
16088 case 0xEE:
16089 case 0xEF:
16090 case 0xFE:
16091 markerLength = stream.getUint16();
16092
16093 if (markerLength > 2) {
16094 stream.skip(markerLength - 2);
16095 } else {
16096 stream.skip(-2);
16097 }
16098
16099 break;
16100 }
16101
16102 if (foundEOI) {
16103 break;
16104 }
16105 }
16106
16107 length = stream.pos - startPos;
16108
16109 if (b === -1) {
16110 (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.');
16111 stream.skip(-length);
16112 return this.findDefaultInlineStreamEnd(stream);
16113 }
16114
16115 this.inlineStreamSkipEI(stream);
16116 return length;
16117 }
16118 }, {
16119 key: "findASCII85DecodeInlineStreamEnd",
16120 value: function findASCII85DecodeInlineStreamEnd(stream) {
16121 var TILDE = 0x7E,
16122 GT = 0x3E;
16123 var startPos = stream.pos,
16124 ch,
16125 length;
16126
16127 while ((ch = stream.getByte()) !== -1) {
16128 if (ch === TILDE) {
16129 ch = stream.peekByte();
16130
16131 while ((0, _util.isSpace)(ch)) {
16132 stream.skip();
16133 ch = stream.peekByte();
16134 }
16135
16136 if (ch === GT) {
16137 stream.skip();
16138 break;
16139 }
16140 }
16141 }
16142
16143 length = stream.pos - startPos;
16144
16145 if (ch === -1) {
16146 (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');
16147 stream.skip(-length);
16148 return this.findDefaultInlineStreamEnd(stream);
16149 }
16150
16151 this.inlineStreamSkipEI(stream);
16152 return length;
16153 }
16154 }, {
16155 key: "findASCIIHexDecodeInlineStreamEnd",
16156 value: function findASCIIHexDecodeInlineStreamEnd(stream) {
16157 var GT = 0x3E;
16158 var startPos = stream.pos,
16159 ch,
16160 length;
16161
16162 while ((ch = stream.getByte()) !== -1) {
16163 if (ch === GT) {
16164 break;
16165 }
16166 }
16167
16168 length = stream.pos - startPos;
16169
16170 if (ch === -1) {
16171 (0, _util.warn)('Inline ASCIIHexDecode image stream: ' + 'EOD marker not found, searching for /EI/ instead.');
16172 stream.skip(-length);
16173 return this.findDefaultInlineStreamEnd(stream);
16174 }
16175
16176 this.inlineStreamSkipEI(stream);
16177 return length;
16178 }
16179 }, {
16180 key: "inlineStreamSkipEI",
16181 value: function inlineStreamSkipEI(stream) {
16182 var E = 0x45,
16183 I = 0x49;
16184 var state = 0,
16185 ch;
16186
16187 while ((ch = stream.getByte()) !== -1) {
16188 if (state === 0) {
16189 state = ch === E ? 1 : 0;
16190 } else if (state === 1) {
16191 state = ch === I ? 2 : 0;
16192 } else if (state === 2) {
16193 break;
16194 }
16195 }
16196 }
16197 }, {
16198 key: "makeInlineImage",
16199 value: function makeInlineImage(cipherTransform) {
16200 var lexer = this.lexer;
16201 var stream = lexer.stream;
16202 var dict = new _primitives.Dict(this.xref);
16203 var dictLength;
16204
16205 while (!(0, _primitives.isCmd)(this.buf1, 'ID') && !(0, _primitives.isEOF)(this.buf1)) {
16206 if (!(0, _primitives.isName)(this.buf1)) {
16207 throw new _util.FormatError('Dictionary key must be a name object');
16208 }
16209
16210 var key = this.buf1.name;
16211 this.shift();
16212
16213 if ((0, _primitives.isEOF)(this.buf1)) {
16214 break;
16215 }
16216
16217 dict.set(key, this.getObj(cipherTransform));
16218 }
16219
16220 if (lexer.beginInlineImagePos !== -1) {
16221 dictLength = stream.pos - lexer.beginInlineImagePos;
16222 }
16223
16224 var filter = dict.get('Filter', 'F');
16225 var filterName;
16226
16227 if ((0, _primitives.isName)(filter)) {
16228 filterName = filter.name;
16229 } else if (Array.isArray(filter)) {
16230 var filterZero = this.xref.fetchIfRef(filter[0]);
16231
16232 if ((0, _primitives.isName)(filterZero)) {
16233 filterName = filterZero.name;
16234 }
16235 }
16236
16237 var startPos = stream.pos;
16238 var length;
16239
16240 if (filterName === 'DCTDecode' || filterName === 'DCT') {
16241 length = this.findDCTDecodeInlineStreamEnd(stream);
16242 } else if (filterName === 'ASCII85Decode' || filterName === 'A85') {
16243 length = this.findASCII85DecodeInlineStreamEnd(stream);
16244 } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {
16245 length = this.findASCIIHexDecodeInlineStreamEnd(stream);
16246 } else {
16247 length = this.findDefaultInlineStreamEnd(stream);
16248 }
16249
16250 var imageStream = stream.makeSubStream(startPos, length, dict);
16251 var cacheKey;
16252
16253 if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {
16254 var imageBytes = imageStream.getBytes();
16255 imageStream.reset();
16256 var initialStreamPos = stream.pos;
16257 stream.pos = lexer.beginInlineImagePos;
16258 var dictBytes = stream.getBytes(dictLength);
16259 stream.pos = initialStreamPos;
16260 cacheKey = computeAdler32(imageBytes) + '_' + computeAdler32(dictBytes);
16261 var cacheEntry = this.imageCache[cacheKey];
16262
16263 if (cacheEntry !== undefined) {
16264 this.buf2 = _primitives.Cmd.get('EI');
16265 this.shift();
16266 cacheEntry.reset();
16267 return cacheEntry;
16268 }
16269 }
16270
16271 if (cipherTransform) {
16272 imageStream = cipherTransform.createStream(imageStream, length);
16273 }
16274
16275 imageStream = this.filter(imageStream, dict, length);
16276 imageStream.dict = dict;
16277
16278 if (cacheKey !== undefined) {
16279 imageStream.cacheKey = "inline_".concat(length, "_").concat(cacheKey);
16280 this.imageCache[cacheKey] = imageStream;
16281 }
16282
16283 this.buf2 = _primitives.Cmd.get('EI');
16284 this.shift();
16285 return imageStream;
16286 }
16287 }, {
16288 key: "_findStreamLength",
16289 value: function _findStreamLength(startPos, signature) {
16290 var stream = this.lexer.stream;
16291 stream.pos = startPos;
16292 var SCAN_BLOCK_LENGTH = 2048;
16293 var signatureLength = signature.length;
16294
16295 while (stream.pos < stream.end) {
16296 var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
16297 var scanLength = scanBytes.length - signatureLength;
16298
16299 if (scanLength <= 0) {
16300 break;
16301 }
16302
16303 var pos = 0;
16304
16305 while (pos < scanLength) {
16306 var j = 0;
16307
16308 while (j < signatureLength && scanBytes[pos + j] === signature[j]) {
16309 j++;
16310 }
16311
16312 if (j >= signatureLength) {
16313 stream.pos += pos;
16314 return stream.pos - startPos;
16315 }
16316
16317 pos++;
16318 }
16319
16320 stream.pos += scanLength;
16321 }
16322
16323 return -1;
16324 }
16325 }, {
16326 key: "makeStream",
16327 value: function makeStream(dict, cipherTransform) {
16328 var lexer = this.lexer;
16329 var stream = lexer.stream;
16330 lexer.skipToNextLine();
16331 var startPos = stream.pos - 1;
16332 var length = dict.get('Length');
16333
16334 if (!Number.isInteger(length)) {
16335 (0, _util.info)("Bad length \"".concat(length, "\" in stream"));
16336 length = 0;
16337 }
16338
16339 stream.pos = startPos + length;
16340 lexer.nextChar();
16341
16342 if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, 'endstream')) {
16343 this.shift();
16344 } else {
16345 var ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);
16346
16347 var actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);
16348
16349 if (actualLength < 0) {
16350 var MAX_TRUNCATION = 1;
16351
16352 for (var i = 1; i <= MAX_TRUNCATION; i++) {
16353 var end = ENDSTREAM_SIGNATURE.length - i;
16354 var TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);
16355
16356 var maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);
16357
16358 if (maybeLength >= 0) {
16359 var lastByte = stream.peekBytes(end + 1)[end];
16360
16361 if (!(0, _util.isSpace)(lastByte)) {
16362 break;
16363 }
16364
16365 (0, _util.info)("Found \"".concat((0, _util.bytesToString)(TRUNCATED_SIGNATURE), "\" when ") + 'searching for endstream command.');
16366 actualLength = maybeLength;
16367 break;
16368 }
16369 }
16370
16371 if (actualLength < 0) {
16372 throw new _util.FormatError('Missing endstream command.');
16373 }
16374 }
16375
16376 length = actualLength;
16377 lexer.nextChar();
16378 this.shift();
16379 this.shift();
16380 }
16381
16382 this.shift();
16383 stream = stream.makeSubStream(startPos, length, dict);
16384
16385 if (cipherTransform) {
16386 stream = cipherTransform.createStream(stream, length);
16387 }
16388
16389 stream = this.filter(stream, dict, length);
16390 stream.dict = dict;
16391 return stream;
16392 }
16393 }, {
16394 key: "filter",
16395 value: function filter(stream, dict, length) {
16396 var filter = dict.get('Filter', 'F');
16397 var params = dict.get('DecodeParms', 'DP');
16398
16399 if ((0, _primitives.isName)(filter)) {
16400 if (Array.isArray(params)) {
16401 (0, _util.warn)('/DecodeParms should not contain an Array, ' + 'when /Filter contains a Name.');
16402 }
16403
16404 return this.makeFilter(stream, filter.name, length, params);
16405 }
16406
16407 var maybeLength = length;
16408
16409 if (Array.isArray(filter)) {
16410 var filterArray = filter;
16411 var paramsArray = params;
16412
16413 for (var i = 0, ii = filterArray.length; i < ii; ++i) {
16414 filter = this.xref.fetchIfRef(filterArray[i]);
16415
16416 if (!(0, _primitives.isName)(filter)) {
16417 throw new _util.FormatError("Bad filter name \"".concat(filter, "\""));
16418 }
16419
16420 params = null;
16421
16422 if (Array.isArray(paramsArray) && i in paramsArray) {
16423 params = this.xref.fetchIfRef(paramsArray[i]);
16424 }
16425
16426 stream = this.makeFilter(stream, filter.name, maybeLength, params);
16427 maybeLength = null;
16428 }
16429 }
16430
16431 return stream;
16432 }
16433 }, {
16434 key: "makeFilter",
16435 value: function makeFilter(stream, name, maybeLength, params) {
16436 if (maybeLength === 0) {
16437 (0, _util.warn)("Empty \"".concat(name, "\" stream."));
16438 return new _stream.NullStream();
16439 }
16440
16441 try {
16442 var xrefStreamStats = this.xref.stats.streamTypes;
16443
16444 if (name === 'FlateDecode' || name === 'Fl') {
16445 xrefStreamStats[_util.StreamType.FLATE] = true;
16446
16447 if (params) {
16448 return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params);
16449 }
16450
16451 return new _stream.FlateStream(stream, maybeLength);
16452 }
16453
16454 if (name === 'LZWDecode' || name === 'LZW') {
16455 xrefStreamStats[_util.StreamType.LZW] = true;
16456 var earlyChange = 1;
16457
16458 if (params) {
16459 if (params.has('EarlyChange')) {
16460 earlyChange = params.get('EarlyChange');
16461 }
16462
16463 return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);
16464 }
16465
16466 return new _stream.LZWStream(stream, maybeLength, earlyChange);
16467 }
16468
16469 if (name === 'DCTDecode' || name === 'DCT') {
16470 xrefStreamStats[_util.StreamType.DCT] = true;
16471 return new _jpeg_stream.JpegStream(stream, maybeLength, stream.dict, params);
16472 }
16473
16474 if (name === 'JPXDecode' || name === 'JPX') {
16475 xrefStreamStats[_util.StreamType.JPX] = true;
16476 return new _jpx_stream.JpxStream(stream, maybeLength, stream.dict, params);
16477 }
16478
16479 if (name === 'ASCII85Decode' || name === 'A85') {
16480 xrefStreamStats[_util.StreamType.A85] = true;
16481 return new _stream.Ascii85Stream(stream, maybeLength);
16482 }
16483
16484 if (name === 'ASCIIHexDecode' || name === 'AHx') {
16485 xrefStreamStats[_util.StreamType.AHX] = true;
16486 return new _stream.AsciiHexStream(stream, maybeLength);
16487 }
16488
16489 if (name === 'CCITTFaxDecode' || name === 'CCF') {
16490 xrefStreamStats[_util.StreamType.CCF] = true;
16491 return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);
16492 }
16493
16494 if (name === 'RunLengthDecode' || name === 'RL') {
16495 xrefStreamStats[_util.StreamType.RL] = true;
16496 return new _stream.RunLengthStream(stream, maybeLength);
16497 }
16498
16499 if (name === 'JBIG2Decode') {
16500 xrefStreamStats[_util.StreamType.JBIG] = true;
16501 return new _jbig2_stream.Jbig2Stream(stream, maybeLength, stream.dict, params);
16502 }
16503
16504 (0, _util.warn)("Filter \"".concat(name, "\" is not supported."));
16505 return stream;
16506 } catch (ex) {
16507 if (ex instanceof _core_utils.MissingDataException) {
16508 throw ex;
16509 }
16510
16511 (0, _util.warn)("Invalid stream: \"".concat(ex, "\""));
16512 return new _stream.NullStream();
16513 }
16514 }
16515 }]);
16516
16517 return Parser;
16518}();
16519
16520exports.Parser = Parser;
16521var specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 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, 2, 0, 2, 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, 2, 0, 2, 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, 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];
16522
16523function toHexDigit(ch) {
16524 if (ch >= 0x30 && ch <= 0x39) {
16525 return ch & 0x0F;
16526 }
16527
16528 if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
16529 return (ch & 0x0F) + 9;
16530 }
16531
16532 return -1;
16533}
16534
16535var Lexer =
16536/*#__PURE__*/
16537function () {
16538 function Lexer(stream) {
16539 var knownCommands = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
16540
16541 _classCallCheck(this, Lexer);
16542
16543 this.stream = stream;
16544 this.nextChar();
16545 this.strBuf = [];
16546 this.knownCommands = knownCommands;
16547 this.beginInlineImagePos = -1;
16548 }
16549
16550 _createClass(Lexer, [{
16551 key: "nextChar",
16552 value: function nextChar() {
16553 return this.currentChar = this.stream.getByte();
16554 }
16555 }, {
16556 key: "peekChar",
16557 value: function peekChar() {
16558 return this.stream.peekByte();
16559 }
16560 }, {
16561 key: "getNumber",
16562 value: function getNumber() {
16563 var ch = this.currentChar;
16564 var eNotation = false;
16565 var divideBy = 0;
16566 var sign = 0;
16567
16568 if (ch === 0x2D) {
16569 sign = -1;
16570 ch = this.nextChar();
16571
16572 if (ch === 0x2D) {
16573 ch = this.nextChar();
16574 }
16575 } else if (ch === 0x2B) {
16576 sign = 1;
16577 ch = this.nextChar();
16578 }
16579
16580 if (ch === 0x0A || ch === 0x0D) {
16581 do {
16582 ch = this.nextChar();
16583 } while (ch === 0x0A || ch === 0x0D);
16584 }
16585
16586 if (ch === 0x2E) {
16587 divideBy = 10;
16588 ch = this.nextChar();
16589 }
16590
16591 if (ch < 0x30 || ch > 0x39) {
16592 if (divideBy === 10 && sign === 0 && ((0, _util.isSpace)(ch) || ch === -1)) {
16593 (0, _util.warn)('Lexer.getNumber - treating a single decimal point as zero.');
16594 return 0;
16595 }
16596
16597 throw new _util.FormatError("Invalid number: ".concat(String.fromCharCode(ch), " (charCode ").concat(ch, ")"));
16598 }
16599
16600 sign = sign || 1;
16601 var baseValue = ch - 0x30;
16602 var powerValue = 0;
16603 var powerValueSign = 1;
16604
16605 while ((ch = this.nextChar()) >= 0) {
16606 if (0x30 <= ch && ch <= 0x39) {
16607 var currentDigit = ch - 0x30;
16608
16609 if (eNotation) {
16610 powerValue = powerValue * 10 + currentDigit;
16611 } else {
16612 if (divideBy !== 0) {
16613 divideBy *= 10;
16614 }
16615
16616 baseValue = baseValue * 10 + currentDigit;
16617 }
16618 } else if (ch === 0x2E) {
16619 if (divideBy === 0) {
16620 divideBy = 1;
16621 } else {
16622 break;
16623 }
16624 } else if (ch === 0x2D) {
16625 (0, _util.warn)('Badly formatted number: minus sign in the middle');
16626 } else if (ch === 0x45 || ch === 0x65) {
16627 ch = this.peekChar();
16628
16629 if (ch === 0x2B || ch === 0x2D) {
16630 powerValueSign = ch === 0x2D ? -1 : 1;
16631 this.nextChar();
16632 } else if (ch < 0x30 || ch > 0x39) {
16633 break;
16634 }
16635
16636 eNotation = true;
16637 } else {
16638 break;
16639 }
16640 }
16641
16642 if (divideBy !== 0) {
16643 baseValue /= divideBy;
16644 }
16645
16646 if (eNotation) {
16647 baseValue *= Math.pow(10, powerValueSign * powerValue);
16648 }
16649
16650 return sign * baseValue;
16651 }
16652 }, {
16653 key: "getString",
16654 value: function getString() {
16655 var numParen = 1;
16656 var done = false;
16657 var strBuf = this.strBuf;
16658 strBuf.length = 0;
16659 var ch = this.nextChar();
16660
16661 while (true) {
16662 var charBuffered = false;
16663
16664 switch (ch | 0) {
16665 case -1:
16666 (0, _util.warn)('Unterminated string');
16667 done = true;
16668 break;
16669
16670 case 0x28:
16671 ++numParen;
16672 strBuf.push('(');
16673 break;
16674
16675 case 0x29:
16676 if (--numParen === 0) {
16677 this.nextChar();
16678 done = true;
16679 } else {
16680 strBuf.push(')');
16681 }
16682
16683 break;
16684
16685 case 0x5C:
16686 ch = this.nextChar();
16687
16688 switch (ch) {
16689 case -1:
16690 (0, _util.warn)('Unterminated string');
16691 done = true;
16692 break;
16693
16694 case 0x6E:
16695 strBuf.push('\n');
16696 break;
16697
16698 case 0x72:
16699 strBuf.push('\r');
16700 break;
16701
16702 case 0x74:
16703 strBuf.push('\t');
16704 break;
16705
16706 case 0x62:
16707 strBuf.push('\b');
16708 break;
16709
16710 case 0x66:
16711 strBuf.push('\f');
16712 break;
16713
16714 case 0x5C:
16715 case 0x28:
16716 case 0x29:
16717 strBuf.push(String.fromCharCode(ch));
16718 break;
16719
16720 case 0x30:
16721 case 0x31:
16722 case 0x32:
16723 case 0x33:
16724 case 0x34:
16725 case 0x35:
16726 case 0x36:
16727 case 0x37:
16728 var x = ch & 0x0F;
16729 ch = this.nextChar();
16730 charBuffered = true;
16731
16732 if (ch >= 0x30 && ch <= 0x37) {
16733 x = (x << 3) + (ch & 0x0F);
16734 ch = this.nextChar();
16735
16736 if (ch >= 0x30 && ch <= 0x37) {
16737 charBuffered = false;
16738 x = (x << 3) + (ch & 0x0F);
16739 }
16740 }
16741
16742 strBuf.push(String.fromCharCode(x));
16743 break;
16744
16745 case 0x0D:
16746 if (this.peekChar() === 0x0A) {
16747 this.nextChar();
16748 }
16749
16750 break;
16751
16752 case 0x0A:
16753 break;
16754
16755 default:
16756 strBuf.push(String.fromCharCode(ch));
16757 break;
16758 }
16759
16760 break;
16761
16762 default:
16763 strBuf.push(String.fromCharCode(ch));
16764 break;
16765 }
16766
16767 if (done) {
16768 break;
16769 }
16770
16771 if (!charBuffered) {
16772 ch = this.nextChar();
16773 }
16774 }
16775
16776 return strBuf.join('');
16777 }
16778 }, {
16779 key: "getName",
16780 value: function getName() {
16781 var ch, previousCh;
16782 var strBuf = this.strBuf;
16783 strBuf.length = 0;
16784
16785 while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
16786 if (ch === 0x23) {
16787 ch = this.nextChar();
16788
16789 if (specialChars[ch]) {
16790 (0, _util.warn)('Lexer_getName: ' + 'NUMBER SIGN (#) should be followed by a hexadecimal number.');
16791 strBuf.push('#');
16792 break;
16793 }
16794
16795 var x = toHexDigit(ch);
16796
16797 if (x !== -1) {
16798 previousCh = ch;
16799 ch = this.nextChar();
16800 var x2 = toHexDigit(ch);
16801
16802 if (x2 === -1) {
16803 (0, _util.warn)("Lexer_getName: Illegal digit (".concat(String.fromCharCode(ch), ") ") + 'in hexadecimal number.');
16804 strBuf.push('#', String.fromCharCode(previousCh));
16805
16806 if (specialChars[ch]) {
16807 break;
16808 }
16809
16810 strBuf.push(String.fromCharCode(ch));
16811 continue;
16812 }
16813
16814 strBuf.push(String.fromCharCode(x << 4 | x2));
16815 } else {
16816 strBuf.push('#', String.fromCharCode(ch));
16817 }
16818 } else {
16819 strBuf.push(String.fromCharCode(ch));
16820 }
16821 }
16822
16823 if (strBuf.length > 127) {
16824 (0, _util.warn)("Name token is longer than allowed by the spec: ".concat(strBuf.length));
16825 }
16826
16827 return _primitives.Name.get(strBuf.join(''));
16828 }
16829 }, {
16830 key: "getHexString",
16831 value: function getHexString() {
16832 var strBuf = this.strBuf;
16833 strBuf.length = 0;
16834 var ch = this.currentChar;
16835 var isFirstHex = true;
16836 var firstDigit, secondDigit;
16837
16838 while (true) {
16839 if (ch < 0) {
16840 (0, _util.warn)('Unterminated hex string');
16841 break;
16842 } else if (ch === 0x3E) {
16843 this.nextChar();
16844 break;
16845 } else if (specialChars[ch] === 1) {
16846 ch = this.nextChar();
16847 continue;
16848 } else {
16849 if (isFirstHex) {
16850 firstDigit = toHexDigit(ch);
16851
16852 if (firstDigit === -1) {
16853 (0, _util.warn)("Ignoring invalid character \"".concat(ch, "\" in hex string"));
16854 ch = this.nextChar();
16855 continue;
16856 }
16857 } else {
16858 secondDigit = toHexDigit(ch);
16859
16860 if (secondDigit === -1) {
16861 (0, _util.warn)("Ignoring invalid character \"".concat(ch, "\" in hex string"));
16862 ch = this.nextChar();
16863 continue;
16864 }
16865
16866 strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));
16867 }
16868
16869 isFirstHex = !isFirstHex;
16870 ch = this.nextChar();
16871 }
16872 }
16873
16874 return strBuf.join('');
16875 }
16876 }, {
16877 key: "getObj",
16878 value: function getObj() {
16879 var comment = false;
16880 var ch = this.currentChar;
16881
16882 while (true) {
16883 if (ch < 0) {
16884 return _primitives.EOF;
16885 }
16886
16887 if (comment) {
16888 if (ch === 0x0A || ch === 0x0D) {
16889 comment = false;
16890 }
16891 } else if (ch === 0x25) {
16892 comment = true;
16893 } else if (specialChars[ch] !== 1) {
16894 break;
16895 }
16896
16897 ch = this.nextChar();
16898 }
16899
16900 switch (ch | 0) {
16901 case 0x30:
16902 case 0x31:
16903 case 0x32:
16904 case 0x33:
16905 case 0x34:
16906 case 0x35:
16907 case 0x36:
16908 case 0x37:
16909 case 0x38:
16910 case 0x39:
16911 case 0x2B:
16912 case 0x2D:
16913 case 0x2E:
16914 return this.getNumber();
16915
16916 case 0x28:
16917 return this.getString();
16918
16919 case 0x2F:
16920 return this.getName();
16921
16922 case 0x5B:
16923 this.nextChar();
16924 return _primitives.Cmd.get('[');
16925
16926 case 0x5D:
16927 this.nextChar();
16928 return _primitives.Cmd.get(']');
16929
16930 case 0x3C:
16931 ch = this.nextChar();
16932
16933 if (ch === 0x3C) {
16934 this.nextChar();
16935 return _primitives.Cmd.get('<<');
16936 }
16937
16938 return this.getHexString();
16939
16940 case 0x3E:
16941 ch = this.nextChar();
16942
16943 if (ch === 0x3E) {
16944 this.nextChar();
16945 return _primitives.Cmd.get('>>');
16946 }
16947
16948 return _primitives.Cmd.get('>');
16949
16950 case 0x7B:
16951 this.nextChar();
16952 return _primitives.Cmd.get('{');
16953
16954 case 0x7D:
16955 this.nextChar();
16956 return _primitives.Cmd.get('}');
16957
16958 case 0x29:
16959 this.nextChar();
16960 throw new _util.FormatError("Illegal character: ".concat(ch));
16961 }
16962
16963 var str = String.fromCharCode(ch);
16964 var knownCommands = this.knownCommands;
16965 var knownCommandFound = knownCommands && knownCommands[str] !== undefined;
16966
16967 while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
16968 var possibleCommand = str + String.fromCharCode(ch);
16969
16970 if (knownCommandFound && knownCommands[possibleCommand] === undefined) {
16971 break;
16972 }
16973
16974 if (str.length === 128) {
16975 throw new _util.FormatError("Command token too long: ".concat(str.length));
16976 }
16977
16978 str = possibleCommand;
16979 knownCommandFound = knownCommands && knownCommands[str] !== undefined;
16980 }
16981
16982 if (str === 'true') {
16983 return true;
16984 }
16985
16986 if (str === 'false') {
16987 return false;
16988 }
16989
16990 if (str === 'null') {
16991 return null;
16992 }
16993
16994 if (str === 'BI') {
16995 this.beginInlineImagePos = this.stream.pos;
16996 }
16997
16998 return _primitives.Cmd.get(str);
16999 }
17000 }, {
17001 key: "skipToNextLine",
17002 value: function skipToNextLine() {
17003 var ch = this.currentChar;
17004
17005 while (ch >= 0) {
17006 if (ch === 0x0D) {
17007 ch = this.nextChar();
17008
17009 if (ch === 0x0A) {
17010 this.nextChar();
17011 }
17012
17013 break;
17014 } else if (ch === 0x0A) {
17015 this.nextChar();
17016 break;
17017 }
17018
17019 ch = this.nextChar();
17020 }
17021 }
17022 }]);
17023
17024 return Lexer;
17025}();
17026
17027exports.Lexer = Lexer;
17028
17029var Linearization =
17030/*#__PURE__*/
17031function () {
17032 function Linearization() {
17033 _classCallCheck(this, Linearization);
17034 }
17035
17036 _createClass(Linearization, null, [{
17037 key: "create",
17038 value: function create(stream) {
17039 function getInt(linDict, name) {
17040 var allowZeroValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
17041 var obj = linDict.get(name);
17042
17043 if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {
17044 return obj;
17045 }
17046
17047 throw new Error("The \"".concat(name, "\" parameter in the linearization ") + 'dictionary is invalid.');
17048 }
17049
17050 function getHints(linDict) {
17051 var hints = linDict.get('H');
17052 var hintsLength;
17053
17054 if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {
17055 for (var index = 0; index < hintsLength; index++) {
17056 var hint = hints[index];
17057
17058 if (!(Number.isInteger(hint) && hint > 0)) {
17059 throw new Error("Hint (".concat(index, ") in the linearization dictionary ") + 'is invalid.');
17060 }
17061 }
17062
17063 return hints;
17064 }
17065
17066 throw new Error('Hint array in the linearization dictionary is invalid.');
17067 }
17068
17069 var parser = new Parser({
17070 lexer: new Lexer(stream),
17071 xref: null
17072 });
17073 var obj1 = parser.getObj();
17074 var obj2 = parser.getObj();
17075 var obj3 = parser.getObj();
17076 var linDict = parser.getObj();
17077 var obj, length;
17078
17079 if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, 'obj') && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get('Linearized')) && obj > 0)) {
17080 return null;
17081 } else if ((length = getInt(linDict, 'L')) !== stream.length) {
17082 throw new Error('The "L" parameter in the linearization dictionary ' + 'does not equal the stream length.');
17083 }
17084
17085 return {
17086 length: length,
17087 hints: getHints(linDict),
17088 objectNumberFirst: getInt(linDict, 'O'),
17089 endFirst: getInt(linDict, 'E'),
17090 numPages: getInt(linDict, 'N'),
17091 mainXRefEntriesOffset: getInt(linDict, 'T'),
17092 pageFirst: linDict.has('P') ? getInt(linDict, 'P', true) : 0
17093 };
17094 }
17095 }]);
17096
17097 return Linearization;
17098}();
17099
17100exports.Linearization = Linearization;
17101
17102/***/ }),
17103/* 158 */
17104/***/ (function(module, exports, __w_pdfjs_require__) {
17105
17106"use strict";
17107
17108
17109Object.defineProperty(exports, "__esModule", {
17110 value: true
17111});
17112exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = void 0;
17113
17114var _util = __w_pdfjs_require__(5);
17115
17116var _primitives = __w_pdfjs_require__(151);
17117
17118function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
17119
17120function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
17121
17122function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
17123
17124function _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; } }
17125
17126var Stream = function StreamClosure() {
17127 function Stream(arrayBuffer, start, length, dict) {
17128 this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);
17129 this.start = start || 0;
17130 this.pos = this.start;
17131 this.end = start + length || this.bytes.length;
17132 this.dict = dict;
17133 }
17134
17135 Stream.prototype = {
17136 get length() {
17137 return this.end - this.start;
17138 },
17139
17140 get isEmpty() {
17141 return this.length === 0;
17142 },
17143
17144 getByte: function Stream_getByte() {
17145 if (this.pos >= this.end) {
17146 return -1;
17147 }
17148
17149 return this.bytes[this.pos++];
17150 },
17151 getUint16: function Stream_getUint16() {
17152 var b0 = this.getByte();
17153 var b1 = this.getByte();
17154
17155 if (b0 === -1 || b1 === -1) {
17156 return -1;
17157 }
17158
17159 return (b0 << 8) + b1;
17160 },
17161 getInt32: function Stream_getInt32() {
17162 var b0 = this.getByte();
17163 var b1 = this.getByte();
17164 var b2 = this.getByte();
17165 var b3 = this.getByte();
17166 return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
17167 },
17168 getBytes: function getBytes(length) {
17169 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17170 var bytes = this.bytes;
17171 var pos = this.pos;
17172 var strEnd = this.end;
17173
17174 if (!length) {
17175 var _subarray = bytes.subarray(pos, strEnd);
17176
17177 return forceClamped ? new Uint8ClampedArray(_subarray) : _subarray;
17178 }
17179
17180 var end = pos + length;
17181
17182 if (end > strEnd) {
17183 end = strEnd;
17184 }
17185
17186 this.pos = end;
17187 var subarray = bytes.subarray(pos, end);
17188 return forceClamped ? new Uint8ClampedArray(subarray) : subarray;
17189 },
17190 peekByte: function Stream_peekByte() {
17191 var peekedByte = this.getByte();
17192 this.pos--;
17193 return peekedByte;
17194 },
17195 peekBytes: function peekBytes(length) {
17196 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17197 var bytes = this.getBytes(length, forceClamped);
17198 this.pos -= bytes.length;
17199 return bytes;
17200 },
17201 skip: function Stream_skip(n) {
17202 if (!n) {
17203 n = 1;
17204 }
17205
17206 this.pos += n;
17207 },
17208 reset: function Stream_reset() {
17209 this.pos = this.start;
17210 },
17211 moveStart: function Stream_moveStart() {
17212 this.start = this.pos;
17213 },
17214 makeSubStream: function Stream_makeSubStream(start, length, dict) {
17215 return new Stream(this.bytes.buffer, start, length, dict);
17216 }
17217 };
17218 return Stream;
17219}();
17220
17221exports.Stream = Stream;
17222
17223var StringStream = function StringStreamClosure() {
17224 function StringStream(str) {
17225 var bytes = (0, _util.stringToBytes)(str);
17226 Stream.call(this, bytes);
17227 }
17228
17229 StringStream.prototype = Stream.prototype;
17230 return StringStream;
17231}();
17232
17233exports.StringStream = StringStream;
17234
17235var DecodeStream = function DecodeStreamClosure() {
17236 var emptyBuffer = new Uint8Array(0);
17237
17238 function DecodeStream(maybeMinBufferLength) {
17239 this._rawMinBufferLength = maybeMinBufferLength || 0;
17240 this.pos = 0;
17241 this.bufferLength = 0;
17242 this.eof = false;
17243 this.buffer = emptyBuffer;
17244 this.minBufferLength = 512;
17245
17246 if (maybeMinBufferLength) {
17247 while (this.minBufferLength < maybeMinBufferLength) {
17248 this.minBufferLength *= 2;
17249 }
17250 }
17251 }
17252
17253 DecodeStream.prototype = {
17254 get isEmpty() {
17255 while (!this.eof && this.bufferLength === 0) {
17256 this.readBlock();
17257 }
17258
17259 return this.bufferLength === 0;
17260 },
17261
17262 ensureBuffer: function DecodeStream_ensureBuffer(requested) {
17263 var buffer = this.buffer;
17264
17265 if (requested <= buffer.byteLength) {
17266 return buffer;
17267 }
17268
17269 var size = this.minBufferLength;
17270
17271 while (size < requested) {
17272 size *= 2;
17273 }
17274
17275 var buffer2 = new Uint8Array(size);
17276 buffer2.set(buffer);
17277 return this.buffer = buffer2;
17278 },
17279 getByte: function DecodeStream_getByte() {
17280 var pos = this.pos;
17281
17282 while (this.bufferLength <= pos) {
17283 if (this.eof) {
17284 return -1;
17285 }
17286
17287 this.readBlock();
17288 }
17289
17290 return this.buffer[this.pos++];
17291 },
17292 getUint16: function DecodeStream_getUint16() {
17293 var b0 = this.getByte();
17294 var b1 = this.getByte();
17295
17296 if (b0 === -1 || b1 === -1) {
17297 return -1;
17298 }
17299
17300 return (b0 << 8) + b1;
17301 },
17302 getInt32: function DecodeStream_getInt32() {
17303 var b0 = this.getByte();
17304 var b1 = this.getByte();
17305 var b2 = this.getByte();
17306 var b3 = this.getByte();
17307 return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
17308 },
17309 getBytes: function getBytes(length) {
17310 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17311 var end,
17312 pos = this.pos;
17313
17314 if (length) {
17315 this.ensureBuffer(pos + length);
17316 end = pos + length;
17317
17318 while (!this.eof && this.bufferLength < end) {
17319 this.readBlock();
17320 }
17321
17322 var bufEnd = this.bufferLength;
17323
17324 if (end > bufEnd) {
17325 end = bufEnd;
17326 }
17327 } else {
17328 while (!this.eof) {
17329 this.readBlock();
17330 }
17331
17332 end = this.bufferLength;
17333 }
17334
17335 this.pos = end;
17336 var subarray = this.buffer.subarray(pos, end);
17337 return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;
17338 },
17339 peekByte: function DecodeStream_peekByte() {
17340 var peekedByte = this.getByte();
17341 this.pos--;
17342 return peekedByte;
17343 },
17344 peekBytes: function peekBytes(length) {
17345 var forceClamped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17346 var bytes = this.getBytes(length, forceClamped);
17347 this.pos -= bytes.length;
17348 return bytes;
17349 },
17350 makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
17351 var end = start + length;
17352
17353 while (this.bufferLength <= end && !this.eof) {
17354 this.readBlock();
17355 }
17356
17357 return new Stream(this.buffer, start, length, dict);
17358 },
17359 skip: function DecodeStream_skip(n) {
17360 if (!n) {
17361 n = 1;
17362 }
17363
17364 this.pos += n;
17365 },
17366 reset: function DecodeStream_reset() {
17367 this.pos = 0;
17368 },
17369 getBaseStreams: function DecodeStream_getBaseStreams() {
17370 if (this.str && this.str.getBaseStreams) {
17371 return this.str.getBaseStreams();
17372 }
17373
17374 return [];
17375 }
17376 };
17377 return DecodeStream;
17378}();
17379
17380exports.DecodeStream = DecodeStream;
17381
17382var StreamsSequenceStream = function StreamsSequenceStreamClosure() {
17383 function StreamsSequenceStream(streams) {
17384 this.streams = streams;
17385 var maybeLength = 0;
17386
17387 for (var i = 0, ii = streams.length; i < ii; i++) {
17388 var stream = streams[i];
17389
17390 if (stream instanceof DecodeStream) {
17391 maybeLength += stream._rawMinBufferLength;
17392 } else {
17393 maybeLength += stream.length;
17394 }
17395 }
17396
17397 DecodeStream.call(this, maybeLength);
17398 }
17399
17400 StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);
17401
17402 StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() {
17403 var streams = this.streams;
17404
17405 if (streams.length === 0) {
17406 this.eof = true;
17407 return;
17408 }
17409
17410 var stream = streams.shift();
17411 var chunk = stream.getBytes();
17412 var bufferLength = this.bufferLength;
17413 var newLength = bufferLength + chunk.length;
17414 var buffer = this.ensureBuffer(newLength);
17415 buffer.set(chunk, bufferLength);
17416 this.bufferLength = newLength;
17417 };
17418
17419 StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() {
17420 var baseStreams = [];
17421
17422 for (var i = 0, ii = this.streams.length; i < ii; i++) {
17423 var stream = this.streams[i];
17424
17425 if (stream.getBaseStreams) {
17426 baseStreams.push.apply(baseStreams, _toConsumableArray(stream.getBaseStreams()));
17427 }
17428 }
17429
17430 return baseStreams;
17431 };
17432
17433 return StreamsSequenceStream;
17434}();
17435
17436exports.StreamsSequenceStream = StreamsSequenceStream;
17437
17438var FlateStream = function FlateStreamClosure() {
17439 var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
17440 var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);
17441 var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);
17442 var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];
17443 var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];
17444
17445 function FlateStream(str, maybeLength) {
17446 this.str = str;
17447 this.dict = str.dict;
17448 var cmf = str.getByte();
17449 var flg = str.getByte();
17450
17451 if (cmf === -1 || flg === -1) {
17452 throw new _util.FormatError("Invalid header in flate stream: ".concat(cmf, ", ").concat(flg));
17453 }
17454
17455 if ((cmf & 0x0f) !== 0x08) {
17456 throw new _util.FormatError("Unknown compression method in flate stream: ".concat(cmf, ", ").concat(flg));
17457 }
17458
17459 if (((cmf << 8) + flg) % 31 !== 0) {
17460 throw new _util.FormatError("Bad FCHECK in flate stream: ".concat(cmf, ", ").concat(flg));
17461 }
17462
17463 if (flg & 0x20) {
17464 throw new _util.FormatError("FDICT bit set in flate stream: ".concat(cmf, ", ").concat(flg));
17465 }
17466
17467 this.codeSize = 0;
17468 this.codeBuf = 0;
17469 DecodeStream.call(this, maybeLength);
17470 }
17471
17472 FlateStream.prototype = Object.create(DecodeStream.prototype);
17473
17474 FlateStream.prototype.getBits = function FlateStream_getBits(bits) {
17475 var str = this.str;
17476 var codeSize = this.codeSize;
17477 var codeBuf = this.codeBuf;
17478 var b;
17479
17480 while (codeSize < bits) {
17481 if ((b = str.getByte()) === -1) {
17482 throw new _util.FormatError('Bad encoding in flate stream');
17483 }
17484
17485 codeBuf |= b << codeSize;
17486 codeSize += 8;
17487 }
17488
17489 b = codeBuf & (1 << bits) - 1;
17490 this.codeBuf = codeBuf >> bits;
17491 this.codeSize = codeSize -= bits;
17492 return b;
17493 };
17494
17495 FlateStream.prototype.getCode = function FlateStream_getCode(table) {
17496 var str = this.str;
17497 var codes = table[0];
17498 var maxLen = table[1];
17499 var codeSize = this.codeSize;
17500 var codeBuf = this.codeBuf;
17501 var b;
17502
17503 while (codeSize < maxLen) {
17504 if ((b = str.getByte()) === -1) {
17505 break;
17506 }
17507
17508 codeBuf |= b << codeSize;
17509 codeSize += 8;
17510 }
17511
17512 var code = codes[codeBuf & (1 << maxLen) - 1];
17513 var codeLen = code >> 16;
17514 var codeVal = code & 0xffff;
17515
17516 if (codeLen < 1 || codeSize < codeLen) {
17517 throw new _util.FormatError('Bad encoding in flate stream');
17518 }
17519
17520 this.codeBuf = codeBuf >> codeLen;
17521 this.codeSize = codeSize - codeLen;
17522 return codeVal;
17523 };
17524
17525 FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) {
17526 var n = lengths.length;
17527 var maxLen = 0;
17528 var i;
17529
17530 for (i = 0; i < n; ++i) {
17531 if (lengths[i] > maxLen) {
17532 maxLen = lengths[i];
17533 }
17534 }
17535
17536 var size = 1 << maxLen;
17537 var codes = new Int32Array(size);
17538
17539 for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {
17540 for (var val = 0; val < n; ++val) {
17541 if (lengths[val] === len) {
17542 var code2 = 0;
17543 var t = code;
17544
17545 for (i = 0; i < len; ++i) {
17546 code2 = code2 << 1 | t & 1;
17547 t >>= 1;
17548 }
17549
17550 for (i = code2; i < size; i += skip) {
17551 codes[i] = len << 16 | val;
17552 }
17553
17554 ++code;
17555 }
17556 }
17557 }
17558
17559 return [codes, maxLen];
17560 };
17561
17562 FlateStream.prototype.readBlock = function FlateStream_readBlock() {
17563 var buffer, len;
17564 var str = this.str;
17565 var hdr = this.getBits(3);
17566
17567 if (hdr & 1) {
17568 this.eof = true;
17569 }
17570
17571 hdr >>= 1;
17572
17573 if (hdr === 0) {
17574 var b;
17575
17576 if ((b = str.getByte()) === -1) {
17577 throw new _util.FormatError('Bad block header in flate stream');
17578 }
17579
17580 var blockLen = b;
17581
17582 if ((b = str.getByte()) === -1) {
17583 throw new _util.FormatError('Bad block header in flate stream');
17584 }
17585
17586 blockLen |= b << 8;
17587
17588 if ((b = str.getByte()) === -1) {
17589 throw new _util.FormatError('Bad block header in flate stream');
17590 }
17591
17592 var check = b;
17593
17594 if ((b = str.getByte()) === -1) {
17595 throw new _util.FormatError('Bad block header in flate stream');
17596 }
17597
17598 check |= b << 8;
17599
17600 if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {
17601 throw new _util.FormatError('Bad uncompressed block length in flate stream');
17602 }
17603
17604 this.codeBuf = 0;
17605 this.codeSize = 0;
17606 var bufferLength = this.bufferLength;
17607 buffer = this.ensureBuffer(bufferLength + blockLen);
17608 var end = bufferLength + blockLen;
17609 this.bufferLength = end;
17610
17611 if (blockLen === 0) {
17612 if (str.peekByte() === -1) {
17613 this.eof = true;
17614 }
17615 } else {
17616 for (var n = bufferLength; n < end; ++n) {
17617 if ((b = str.getByte()) === -1) {
17618 this.eof = true;
17619 break;
17620 }
17621
17622 buffer[n] = b;
17623 }
17624 }
17625
17626 return;
17627 }
17628
17629 var litCodeTable;
17630 var distCodeTable;
17631
17632 if (hdr === 1) {
17633 litCodeTable = fixedLitCodeTab;
17634 distCodeTable = fixedDistCodeTab;
17635 } else if (hdr === 2) {
17636 var numLitCodes = this.getBits(5) + 257;
17637 var numDistCodes = this.getBits(5) + 1;
17638 var numCodeLenCodes = this.getBits(4) + 4;
17639 var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
17640 var i;
17641
17642 for (i = 0; i < numCodeLenCodes; ++i) {
17643 codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
17644 }
17645
17646 var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
17647 len = 0;
17648 i = 0;
17649 var codes = numLitCodes + numDistCodes;
17650 var codeLengths = new Uint8Array(codes);
17651 var bitsLength, bitsOffset, what;
17652
17653 while (i < codes) {
17654 var code = this.getCode(codeLenCodeTab);
17655
17656 if (code === 16) {
17657 bitsLength = 2;
17658 bitsOffset = 3;
17659 what = len;
17660 } else if (code === 17) {
17661 bitsLength = 3;
17662 bitsOffset = 3;
17663 what = len = 0;
17664 } else if (code === 18) {
17665 bitsLength = 7;
17666 bitsOffset = 11;
17667 what = len = 0;
17668 } else {
17669 codeLengths[i++] = len = code;
17670 continue;
17671 }
17672
17673 var repeatLength = this.getBits(bitsLength) + bitsOffset;
17674
17675 while (repeatLength-- > 0) {
17676 codeLengths[i++] = what;
17677 }
17678 }
17679
17680 litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
17681 distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
17682 } else {
17683 throw new _util.FormatError('Unknown block type in flate stream');
17684 }
17685
17686 buffer = this.buffer;
17687 var limit = buffer ? buffer.length : 0;
17688 var pos = this.bufferLength;
17689
17690 while (true) {
17691 var code1 = this.getCode(litCodeTable);
17692
17693 if (code1 < 256) {
17694 if (pos + 1 >= limit) {
17695 buffer = this.ensureBuffer(pos + 1);
17696 limit = buffer.length;
17697 }
17698
17699 buffer[pos++] = code1;
17700 continue;
17701 }
17702
17703 if (code1 === 256) {
17704 this.bufferLength = pos;
17705 return;
17706 }
17707
17708 code1 -= 257;
17709 code1 = lengthDecode[code1];
17710 var code2 = code1 >> 16;
17711
17712 if (code2 > 0) {
17713 code2 = this.getBits(code2);
17714 }
17715
17716 len = (code1 & 0xffff) + code2;
17717 code1 = this.getCode(distCodeTable);
17718 code1 = distDecode[code1];
17719 code2 = code1 >> 16;
17720
17721 if (code2 > 0) {
17722 code2 = this.getBits(code2);
17723 }
17724
17725 var dist = (code1 & 0xffff) + code2;
17726
17727 if (pos + len >= limit) {
17728 buffer = this.ensureBuffer(pos + len);
17729 limit = buffer.length;
17730 }
17731
17732 for (var k = 0; k < len; ++k, ++pos) {
17733 buffer[pos] = buffer[pos - dist];
17734 }
17735 }
17736 };
17737
17738 return FlateStream;
17739}();
17740
17741exports.FlateStream = FlateStream;
17742
17743var PredictorStream = function PredictorStreamClosure() {
17744 function PredictorStream(str, maybeLength, params) {
17745 if (!(0, _primitives.isDict)(params)) {
17746 return str;
17747 }
17748
17749 var predictor = this.predictor = params.get('Predictor') || 1;
17750
17751 if (predictor <= 1) {
17752 return str;
17753 }
17754
17755 if (predictor !== 2 && (predictor < 10 || predictor > 15)) {
17756 throw new _util.FormatError("Unsupported predictor: ".concat(predictor));
17757 }
17758
17759 if (predictor === 2) {
17760 this.readBlock = this.readBlockTiff;
17761 } else {
17762 this.readBlock = this.readBlockPng;
17763 }
17764
17765 this.str = str;
17766 this.dict = str.dict;
17767 var colors = this.colors = params.get('Colors') || 1;
17768 var bits = this.bits = params.get('BitsPerComponent') || 8;
17769 var columns = this.columns = params.get('Columns') || 1;
17770 this.pixBytes = colors * bits + 7 >> 3;
17771 this.rowBytes = columns * colors * bits + 7 >> 3;
17772 DecodeStream.call(this, maybeLength);
17773 return this;
17774 }
17775
17776 PredictorStream.prototype = Object.create(DecodeStream.prototype);
17777
17778 PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() {
17779 var rowBytes = this.rowBytes;
17780 var bufferLength = this.bufferLength;
17781 var buffer = this.ensureBuffer(bufferLength + rowBytes);
17782 var bits = this.bits;
17783 var colors = this.colors;
17784 var rawBytes = this.str.getBytes(rowBytes);
17785 this.eof = !rawBytes.length;
17786
17787 if (this.eof) {
17788 return;
17789 }
17790
17791 var inbuf = 0,
17792 outbuf = 0;
17793 var inbits = 0,
17794 outbits = 0;
17795 var pos = bufferLength;
17796 var i;
17797
17798 if (bits === 1 && colors === 1) {
17799 for (i = 0; i < rowBytes; ++i) {
17800 var c = rawBytes[i] ^ inbuf;
17801 c ^= c >> 1;
17802 c ^= c >> 2;
17803 c ^= c >> 4;
17804 inbuf = (c & 1) << 7;
17805 buffer[pos++] = c;
17806 }
17807 } else if (bits === 8) {
17808 for (i = 0; i < colors; ++i) {
17809 buffer[pos++] = rawBytes[i];
17810 }
17811
17812 for (; i < rowBytes; ++i) {
17813 buffer[pos] = buffer[pos - colors] + rawBytes[i];
17814 pos++;
17815 }
17816 } else if (bits === 16) {
17817 var bytesPerPixel = colors * 2;
17818
17819 for (i = 0; i < bytesPerPixel; ++i) {
17820 buffer[pos++] = rawBytes[i];
17821 }
17822
17823 for (; i < rowBytes; i += 2) {
17824 var sum = ((rawBytes[i] & 0xFF) << 8) + (rawBytes[i + 1] & 0xFF) + ((buffer[pos - bytesPerPixel] & 0xFF) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xFF);
17825 buffer[pos++] = sum >> 8 & 0xFF;
17826 buffer[pos++] = sum & 0xFF;
17827 }
17828 } else {
17829 var compArray = new Uint8Array(colors + 1);
17830 var bitMask = (1 << bits) - 1;
17831 var j = 0,
17832 k = bufferLength;
17833 var columns = this.columns;
17834
17835 for (i = 0; i < columns; ++i) {
17836 for (var kk = 0; kk < colors; ++kk) {
17837 if (inbits < bits) {
17838 inbuf = inbuf << 8 | rawBytes[j++] & 0xFF;
17839 inbits += 8;
17840 }
17841
17842 compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;
17843 inbits -= bits;
17844 outbuf = outbuf << bits | compArray[kk];
17845 outbits += bits;
17846
17847 if (outbits >= 8) {
17848 buffer[k++] = outbuf >> outbits - 8 & 0xFF;
17849 outbits -= 8;
17850 }
17851 }
17852 }
17853
17854 if (outbits > 0) {
17855 buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);
17856 }
17857 }
17858
17859 this.bufferLength += rowBytes;
17860 };
17861
17862 PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() {
17863 var rowBytes = this.rowBytes;
17864 var pixBytes = this.pixBytes;
17865 var predictor = this.str.getByte();
17866 var rawBytes = this.str.getBytes(rowBytes);
17867 this.eof = !rawBytes.length;
17868
17869 if (this.eof) {
17870 return;
17871 }
17872
17873 var bufferLength = this.bufferLength;
17874 var buffer = this.ensureBuffer(bufferLength + rowBytes);
17875 var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
17876
17877 if (prevRow.length === 0) {
17878 prevRow = new Uint8Array(rowBytes);
17879 }
17880
17881 var i,
17882 j = bufferLength,
17883 up,
17884 c;
17885
17886 switch (predictor) {
17887 case 0:
17888 for (i = 0; i < rowBytes; ++i) {
17889 buffer[j++] = rawBytes[i];
17890 }
17891
17892 break;
17893
17894 case 1:
17895 for (i = 0; i < pixBytes; ++i) {
17896 buffer[j++] = rawBytes[i];
17897 }
17898
17899 for (; i < rowBytes; ++i) {
17900 buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xFF;
17901 j++;
17902 }
17903
17904 break;
17905
17906 case 2:
17907 for (i = 0; i < rowBytes; ++i) {
17908 buffer[j++] = prevRow[i] + rawBytes[i] & 0xFF;
17909 }
17910
17911 break;
17912
17913 case 3:
17914 for (i = 0; i < pixBytes; ++i) {
17915 buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
17916 }
17917
17918 for (; i < rowBytes; ++i) {
17919 buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xFF;
17920 j++;
17921 }
17922
17923 break;
17924
17925 case 4:
17926 for (i = 0; i < pixBytes; ++i) {
17927 up = prevRow[i];
17928 c = rawBytes[i];
17929 buffer[j++] = up + c;
17930 }
17931
17932 for (; i < rowBytes; ++i) {
17933 up = prevRow[i];
17934 var upLeft = prevRow[i - pixBytes];
17935 var left = buffer[j - pixBytes];
17936 var p = left + up - upLeft;
17937 var pa = p - left;
17938
17939 if (pa < 0) {
17940 pa = -pa;
17941 }
17942
17943 var pb = p - up;
17944
17945 if (pb < 0) {
17946 pb = -pb;
17947 }
17948
17949 var pc = p - upLeft;
17950
17951 if (pc < 0) {
17952 pc = -pc;
17953 }
17954
17955 c = rawBytes[i];
17956
17957 if (pa <= pb && pa <= pc) {
17958 buffer[j++] = left + c;
17959 } else if (pb <= pc) {
17960 buffer[j++] = up + c;
17961 } else {
17962 buffer[j++] = upLeft + c;
17963 }
17964 }
17965
17966 break;
17967
17968 default:
17969 throw new _util.FormatError("Unsupported predictor: ".concat(predictor));
17970 }
17971
17972 this.bufferLength += rowBytes;
17973 };
17974
17975 return PredictorStream;
17976}();
17977
17978exports.PredictorStream = PredictorStream;
17979
17980var DecryptStream = function DecryptStreamClosure() {
17981 function DecryptStream(str, maybeLength, decrypt) {
17982 this.str = str;
17983 this.dict = str.dict;
17984 this.decrypt = decrypt;
17985 this.nextChunk = null;
17986 this.initialized = false;
17987 DecodeStream.call(this, maybeLength);
17988 }
17989
17990 var chunkSize = 512;
17991 DecryptStream.prototype = Object.create(DecodeStream.prototype);
17992
17993 DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {
17994 var chunk;
17995
17996 if (this.initialized) {
17997 chunk = this.nextChunk;
17998 } else {
17999 chunk = this.str.getBytes(chunkSize);
18000 this.initialized = true;
18001 }
18002
18003 if (!chunk || chunk.length === 0) {
18004 this.eof = true;
18005 return;
18006 }
18007
18008 this.nextChunk = this.str.getBytes(chunkSize);
18009 var hasMoreData = this.nextChunk && this.nextChunk.length > 0;
18010 var decrypt = this.decrypt;
18011 chunk = decrypt(chunk, !hasMoreData);
18012 var bufferLength = this.bufferLength;
18013 var i,
18014 n = chunk.length;
18015 var buffer = this.ensureBuffer(bufferLength + n);
18016
18017 for (i = 0; i < n; i++) {
18018 buffer[bufferLength++] = chunk[i];
18019 }
18020
18021 this.bufferLength = bufferLength;
18022 };
18023
18024 return DecryptStream;
18025}();
18026
18027exports.DecryptStream = DecryptStream;
18028
18029var Ascii85Stream = function Ascii85StreamClosure() {
18030 function Ascii85Stream(str, maybeLength) {
18031 this.str = str;
18032 this.dict = str.dict;
18033 this.input = new Uint8Array(5);
18034
18035 if (maybeLength) {
18036 maybeLength = 0.8 * maybeLength;
18037 }
18038
18039 DecodeStream.call(this, maybeLength);
18040 }
18041
18042 Ascii85Stream.prototype = Object.create(DecodeStream.prototype);
18043
18044 Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {
18045 var TILDA_CHAR = 0x7E;
18046 var Z_LOWER_CHAR = 0x7A;
18047 var EOF = -1;
18048 var str = this.str;
18049 var c = str.getByte();
18050
18051 while ((0, _util.isSpace)(c)) {
18052 c = str.getByte();
18053 }
18054
18055 if (c === EOF || c === TILDA_CHAR) {
18056 this.eof = true;
18057 return;
18058 }
18059
18060 var bufferLength = this.bufferLength,
18061 buffer;
18062 var i;
18063
18064 if (c === Z_LOWER_CHAR) {
18065 buffer = this.ensureBuffer(bufferLength + 4);
18066
18067 for (i = 0; i < 4; ++i) {
18068 buffer[bufferLength + i] = 0;
18069 }
18070
18071 this.bufferLength += 4;
18072 } else {
18073 var input = this.input;
18074 input[0] = c;
18075
18076 for (i = 1; i < 5; ++i) {
18077 c = str.getByte();
18078
18079 while ((0, _util.isSpace)(c)) {
18080 c = str.getByte();
18081 }
18082
18083 input[i] = c;
18084
18085 if (c === EOF || c === TILDA_CHAR) {
18086 break;
18087 }
18088 }
18089
18090 buffer = this.ensureBuffer(bufferLength + i - 1);
18091 this.bufferLength += i - 1;
18092
18093 if (i < 5) {
18094 for (; i < 5; ++i) {
18095 input[i] = 0x21 + 84;
18096 }
18097
18098 this.eof = true;
18099 }
18100
18101 var t = 0;
18102
18103 for (i = 0; i < 5; ++i) {
18104 t = t * 85 + (input[i] - 0x21);
18105 }
18106
18107 for (i = 3; i >= 0; --i) {
18108 buffer[bufferLength + i] = t & 0xFF;
18109 t >>= 8;
18110 }
18111 }
18112 };
18113
18114 return Ascii85Stream;
18115}();
18116
18117exports.Ascii85Stream = Ascii85Stream;
18118
18119var AsciiHexStream = function AsciiHexStreamClosure() {
18120 function AsciiHexStream(str, maybeLength) {
18121 this.str = str;
18122 this.dict = str.dict;
18123 this.firstDigit = -1;
18124
18125 if (maybeLength) {
18126 maybeLength = 0.5 * maybeLength;
18127 }
18128
18129 DecodeStream.call(this, maybeLength);
18130 }
18131
18132 AsciiHexStream.prototype = Object.create(DecodeStream.prototype);
18133
18134 AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {
18135 var UPSTREAM_BLOCK_SIZE = 8000;
18136 var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
18137
18138 if (!bytes.length) {
18139 this.eof = true;
18140 return;
18141 }
18142
18143 var maxDecodeLength = bytes.length + 1 >> 1;
18144 var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
18145 var bufferLength = this.bufferLength;
18146 var firstDigit = this.firstDigit;
18147
18148 for (var i = 0, ii = bytes.length; i < ii; i++) {
18149 var ch = bytes[i],
18150 digit;
18151
18152 if (ch >= 0x30 && ch <= 0x39) {
18153 digit = ch & 0x0F;
18154 } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
18155 digit = (ch & 0x0F) + 9;
18156 } else if (ch === 0x3E) {
18157 this.eof = true;
18158 break;
18159 } else {
18160 continue;
18161 }
18162
18163 if (firstDigit < 0) {
18164 firstDigit = digit;
18165 } else {
18166 buffer[bufferLength++] = firstDigit << 4 | digit;
18167 firstDigit = -1;
18168 }
18169 }
18170
18171 if (firstDigit >= 0 && this.eof) {
18172 buffer[bufferLength++] = firstDigit << 4;
18173 firstDigit = -1;
18174 }
18175
18176 this.firstDigit = firstDigit;
18177 this.bufferLength = bufferLength;
18178 };
18179
18180 return AsciiHexStream;
18181}();
18182
18183exports.AsciiHexStream = AsciiHexStream;
18184
18185var RunLengthStream = function RunLengthStreamClosure() {
18186 function RunLengthStream(str, maybeLength) {
18187 this.str = str;
18188 this.dict = str.dict;
18189 DecodeStream.call(this, maybeLength);
18190 }
18191
18192 RunLengthStream.prototype = Object.create(DecodeStream.prototype);
18193
18194 RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {
18195 var repeatHeader = this.str.getBytes(2);
18196
18197 if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {
18198 this.eof = true;
18199 return;
18200 }
18201
18202 var buffer;
18203 var bufferLength = this.bufferLength;
18204 var n = repeatHeader[0];
18205
18206 if (n < 128) {
18207 buffer = this.ensureBuffer(bufferLength + n + 1);
18208 buffer[bufferLength++] = repeatHeader[1];
18209
18210 if (n > 0) {
18211 var source = this.str.getBytes(n);
18212 buffer.set(source, bufferLength);
18213 bufferLength += n;
18214 }
18215 } else {
18216 n = 257 - n;
18217 var b = repeatHeader[1];
18218 buffer = this.ensureBuffer(bufferLength + n + 1);
18219
18220 for (var i = 0; i < n; i++) {
18221 buffer[bufferLength++] = b;
18222 }
18223 }
18224
18225 this.bufferLength = bufferLength;
18226 };
18227
18228 return RunLengthStream;
18229}();
18230
18231exports.RunLengthStream = RunLengthStream;
18232
18233var LZWStream = function LZWStreamClosure() {
18234 function LZWStream(str, maybeLength, earlyChange) {
18235 this.str = str;
18236 this.dict = str.dict;
18237 this.cachedData = 0;
18238 this.bitsCached = 0;
18239 var maxLzwDictionarySize = 4096;
18240 var lzwState = {
18241 earlyChange: earlyChange,
18242 codeLength: 9,
18243 nextCode: 258,
18244 dictionaryValues: new Uint8Array(maxLzwDictionarySize),
18245 dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
18246 dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
18247 currentSequence: new Uint8Array(maxLzwDictionarySize),
18248 currentSequenceLength: 0
18249 };
18250
18251 for (var i = 0; i < 256; ++i) {
18252 lzwState.dictionaryValues[i] = i;
18253 lzwState.dictionaryLengths[i] = 1;
18254 }
18255
18256 this.lzwState = lzwState;
18257 DecodeStream.call(this, maybeLength);
18258 }
18259
18260 LZWStream.prototype = Object.create(DecodeStream.prototype);
18261
18262 LZWStream.prototype.readBits = function LZWStream_readBits(n) {
18263 var bitsCached = this.bitsCached;
18264 var cachedData = this.cachedData;
18265
18266 while (bitsCached < n) {
18267 var c = this.str.getByte();
18268
18269 if (c === -1) {
18270 this.eof = true;
18271 return null;
18272 }
18273
18274 cachedData = cachedData << 8 | c;
18275 bitsCached += 8;
18276 }
18277
18278 this.bitsCached = bitsCached -= n;
18279 this.cachedData = cachedData;
18280 this.lastCode = null;
18281 return cachedData >>> bitsCached & (1 << n) - 1;
18282 };
18283
18284 LZWStream.prototype.readBlock = function LZWStream_readBlock() {
18285 var blockSize = 512;
18286 var estimatedDecodedSize = blockSize * 2,
18287 decodedSizeDelta = blockSize;
18288 var i, j, q;
18289 var lzwState = this.lzwState;
18290
18291 if (!lzwState) {
18292 return;
18293 }
18294
18295 var earlyChange = lzwState.earlyChange;
18296 var nextCode = lzwState.nextCode;
18297 var dictionaryValues = lzwState.dictionaryValues;
18298 var dictionaryLengths = lzwState.dictionaryLengths;
18299 var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
18300 var codeLength = lzwState.codeLength;
18301 var prevCode = lzwState.prevCode;
18302 var currentSequence = lzwState.currentSequence;
18303 var currentSequenceLength = lzwState.currentSequenceLength;
18304 var decodedLength = 0;
18305 var currentBufferLength = this.bufferLength;
18306 var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
18307
18308 for (i = 0; i < blockSize; i++) {
18309 var code = this.readBits(codeLength);
18310 var hasPrev = currentSequenceLength > 0;
18311
18312 if (code < 256) {
18313 currentSequence[0] = code;
18314 currentSequenceLength = 1;
18315 } else if (code >= 258) {
18316 if (code < nextCode) {
18317 currentSequenceLength = dictionaryLengths[code];
18318
18319 for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
18320 currentSequence[j] = dictionaryValues[q];
18321 q = dictionaryPrevCodes[q];
18322 }
18323 } else {
18324 currentSequence[currentSequenceLength++] = currentSequence[0];
18325 }
18326 } else if (code === 256) {
18327 codeLength = 9;
18328 nextCode = 258;
18329 currentSequenceLength = 0;
18330 continue;
18331 } else {
18332 this.eof = true;
18333 delete this.lzwState;
18334 break;
18335 }
18336
18337 if (hasPrev) {
18338 dictionaryPrevCodes[nextCode] = prevCode;
18339 dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
18340 dictionaryValues[nextCode] = currentSequence[0];
18341 nextCode++;
18342 codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;
18343 }
18344
18345 prevCode = code;
18346 decodedLength += currentSequenceLength;
18347
18348 if (estimatedDecodedSize < decodedLength) {
18349 do {
18350 estimatedDecodedSize += decodedSizeDelta;
18351 } while (estimatedDecodedSize < decodedLength);
18352
18353 buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
18354 }
18355
18356 for (j = 0; j < currentSequenceLength; j++) {
18357 buffer[currentBufferLength++] = currentSequence[j];
18358 }
18359 }
18360
18361 lzwState.nextCode = nextCode;
18362 lzwState.codeLength = codeLength;
18363 lzwState.prevCode = prevCode;
18364 lzwState.currentSequenceLength = currentSequenceLength;
18365 this.bufferLength = currentBufferLength;
18366 };
18367
18368 return LZWStream;
18369}();
18370
18371exports.LZWStream = LZWStream;
18372
18373var NullStream = function NullStreamClosure() {
18374 function NullStream() {
18375 Stream.call(this, new Uint8Array(0));
18376 }
18377
18378 NullStream.prototype = Stream.prototype;
18379 return NullStream;
18380}();
18381
18382exports.NullStream = NullStream;
18383
18384/***/ }),
18385/* 159 */
18386/***/ (function(module, exports, __w_pdfjs_require__) {
18387
18388"use strict";
18389
18390
18391Object.defineProperty(exports, "__esModule", {
18392 value: true
18393});
18394exports.CCITTFaxStream = void 0;
18395
18396var _primitives = __w_pdfjs_require__(151);
18397
18398var _ccitt = __w_pdfjs_require__(160);
18399
18400var _stream = __w_pdfjs_require__(158);
18401
18402var CCITTFaxStream = function CCITTFaxStreamClosure() {
18403 function CCITTFaxStream(str, maybeLength, params) {
18404 this.str = str;
18405 this.dict = str.dict;
18406
18407 if (!(0, _primitives.isDict)(params)) {
18408 params = _primitives.Dict.empty;
18409 }
18410
18411 var source = {
18412 next: function next() {
18413 return str.getByte();
18414 }
18415 };
18416 this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {
18417 K: params.get('K'),
18418 EndOfLine: params.get('EndOfLine'),
18419 EncodedByteAlign: params.get('EncodedByteAlign'),
18420 Columns: params.get('Columns'),
18421 Rows: params.get('Rows'),
18422 EndOfBlock: params.get('EndOfBlock'),
18423 BlackIs1: params.get('BlackIs1')
18424 });
18425
18426 _stream.DecodeStream.call(this, maybeLength);
18427 }
18428
18429 CCITTFaxStream.prototype = Object.create(_stream.DecodeStream.prototype);
18430
18431 CCITTFaxStream.prototype.readBlock = function () {
18432 while (!this.eof) {
18433 var c = this.ccittFaxDecoder.readNextChar();
18434
18435 if (c === -1) {
18436 this.eof = true;
18437 return;
18438 }
18439
18440 this.ensureBuffer(this.bufferLength + 1);
18441 this.buffer[this.bufferLength++] = c;
18442 }
18443 };
18444
18445 return CCITTFaxStream;
18446}();
18447
18448exports.CCITTFaxStream = CCITTFaxStream;
18449
18450/***/ }),
18451/* 160 */
18452/***/ (function(module, exports, __w_pdfjs_require__) {
18453
18454"use strict";
18455
18456
18457Object.defineProperty(exports, "__esModule", {
18458 value: true
18459});
18460exports.CCITTFaxDecoder = void 0;
18461
18462var _util = __w_pdfjs_require__(5);
18463
18464var CCITTFaxDecoder = function CCITTFaxDecoder() {
18465 var ccittEOL = -2;
18466 var ccittEOF = -1;
18467 var twoDimPass = 0;
18468 var twoDimHoriz = 1;
18469 var twoDimVert0 = 2;
18470 var twoDimVertR1 = 3;
18471 var twoDimVertL1 = 4;
18472 var twoDimVertR2 = 5;
18473 var twoDimVertL2 = 6;
18474 var twoDimVertR3 = 7;
18475 var twoDimVertL3 = 8;
18476 var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];
18477 var whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];
18478 var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];
18479 var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];
18480 var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];
18481 var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];
18482
18483 function CCITTFaxDecoder(source) {
18484 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
18485
18486 if (!source || typeof source.next !== 'function') {
18487 throw new Error('CCITTFaxDecoder - invalid "source" parameter.');
18488 }
18489
18490 this.source = source;
18491 this.eof = false;
18492 this.encoding = options['K'] || 0;
18493 this.eoline = options['EndOfLine'] || false;
18494 this.byteAlign = options['EncodedByteAlign'] || false;
18495 this.columns = options['Columns'] || 1728;
18496 this.rows = options['Rows'] || 0;
18497 var eoblock = options['EndOfBlock'];
18498
18499 if (eoblock === null || eoblock === undefined) {
18500 eoblock = true;
18501 }
18502
18503 this.eoblock = eoblock;
18504 this.black = options['BlackIs1'] || false;
18505 this.codingLine = new Uint32Array(this.columns + 1);
18506 this.refLine = new Uint32Array(this.columns + 2);
18507 this.codingLine[0] = this.columns;
18508 this.codingPos = 0;
18509 this.row = 0;
18510 this.nextLine2D = this.encoding < 0;
18511 this.inputBits = 0;
18512 this.inputBuf = 0;
18513 this.outputBits = 0;
18514 this.rowsDone = false;
18515 var code1;
18516
18517 while ((code1 = this._lookBits(12)) === 0) {
18518 this._eatBits(1);
18519 }
18520
18521 if (code1 === 1) {
18522 this._eatBits(12);
18523 }
18524
18525 if (this.encoding > 0) {
18526 this.nextLine2D = !this._lookBits(1);
18527
18528 this._eatBits(1);
18529 }
18530 }
18531
18532 CCITTFaxDecoder.prototype = {
18533 readNextChar: function readNextChar() {
18534 if (this.eof) {
18535 return -1;
18536 }
18537
18538 var refLine = this.refLine;
18539 var codingLine = this.codingLine;
18540 var columns = this.columns;
18541 var refPos, blackPixels, bits, i;
18542
18543 if (this.outputBits === 0) {
18544 if (this.rowsDone) {
18545 this.eof = true;
18546 }
18547
18548 if (this.eof) {
18549 return -1;
18550 }
18551
18552 this.err = false;
18553 var code1, code2, code3;
18554
18555 if (this.nextLine2D) {
18556 for (i = 0; codingLine[i] < columns; ++i) {
18557 refLine[i] = codingLine[i];
18558 }
18559
18560 refLine[i++] = columns;
18561 refLine[i] = columns;
18562 codingLine[0] = 0;
18563 this.codingPos = 0;
18564 refPos = 0;
18565 blackPixels = 0;
18566
18567 while (codingLine[this.codingPos] < columns) {
18568 code1 = this._getTwoDimCode();
18569
18570 switch (code1) {
18571 case twoDimPass:
18572 this._addPixels(refLine[refPos + 1], blackPixels);
18573
18574 if (refLine[refPos + 1] < columns) {
18575 refPos += 2;
18576 }
18577
18578 break;
18579
18580 case twoDimHoriz:
18581 code1 = code2 = 0;
18582
18583 if (blackPixels) {
18584 do {
18585 code1 += code3 = this._getBlackCode();
18586 } while (code3 >= 64);
18587
18588 do {
18589 code2 += code3 = this._getWhiteCode();
18590 } while (code3 >= 64);
18591 } else {
18592 do {
18593 code1 += code3 = this._getWhiteCode();
18594 } while (code3 >= 64);
18595
18596 do {
18597 code2 += code3 = this._getBlackCode();
18598 } while (code3 >= 64);
18599 }
18600
18601 this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
18602
18603 if (codingLine[this.codingPos] < columns) {
18604 this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);
18605 }
18606
18607 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18608 refPos += 2;
18609 }
18610
18611 break;
18612
18613 case twoDimVertR3:
18614 this._addPixels(refLine[refPos] + 3, blackPixels);
18615
18616 blackPixels ^= 1;
18617
18618 if (codingLine[this.codingPos] < columns) {
18619 ++refPos;
18620
18621 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18622 refPos += 2;
18623 }
18624 }
18625
18626 break;
18627
18628 case twoDimVertR2:
18629 this._addPixels(refLine[refPos] + 2, blackPixels);
18630
18631 blackPixels ^= 1;
18632
18633 if (codingLine[this.codingPos] < columns) {
18634 ++refPos;
18635
18636 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18637 refPos += 2;
18638 }
18639 }
18640
18641 break;
18642
18643 case twoDimVertR1:
18644 this._addPixels(refLine[refPos] + 1, blackPixels);
18645
18646 blackPixels ^= 1;
18647
18648 if (codingLine[this.codingPos] < columns) {
18649 ++refPos;
18650
18651 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18652 refPos += 2;
18653 }
18654 }
18655
18656 break;
18657
18658 case twoDimVert0:
18659 this._addPixels(refLine[refPos], blackPixels);
18660
18661 blackPixels ^= 1;
18662
18663 if (codingLine[this.codingPos] < columns) {
18664 ++refPos;
18665
18666 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18667 refPos += 2;
18668 }
18669 }
18670
18671 break;
18672
18673 case twoDimVertL3:
18674 this._addPixelsNeg(refLine[refPos] - 3, blackPixels);
18675
18676 blackPixels ^= 1;
18677
18678 if (codingLine[this.codingPos] < columns) {
18679 if (refPos > 0) {
18680 --refPos;
18681 } else {
18682 ++refPos;
18683 }
18684
18685 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18686 refPos += 2;
18687 }
18688 }
18689
18690 break;
18691
18692 case twoDimVertL2:
18693 this._addPixelsNeg(refLine[refPos] - 2, blackPixels);
18694
18695 blackPixels ^= 1;
18696
18697 if (codingLine[this.codingPos] < columns) {
18698 if (refPos > 0) {
18699 --refPos;
18700 } else {
18701 ++refPos;
18702 }
18703
18704 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18705 refPos += 2;
18706 }
18707 }
18708
18709 break;
18710
18711 case twoDimVertL1:
18712 this._addPixelsNeg(refLine[refPos] - 1, blackPixels);
18713
18714 blackPixels ^= 1;
18715
18716 if (codingLine[this.codingPos] < columns) {
18717 if (refPos > 0) {
18718 --refPos;
18719 } else {
18720 ++refPos;
18721 }
18722
18723 while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
18724 refPos += 2;
18725 }
18726 }
18727
18728 break;
18729
18730 case ccittEOF:
18731 this._addPixels(columns, 0);
18732
18733 this.eof = true;
18734 break;
18735
18736 default:
18737 (0, _util.info)('bad 2d code');
18738
18739 this._addPixels(columns, 0);
18740
18741 this.err = true;
18742 }
18743 }
18744 } else {
18745 codingLine[0] = 0;
18746 this.codingPos = 0;
18747 blackPixels = 0;
18748
18749 while (codingLine[this.codingPos] < columns) {
18750 code1 = 0;
18751
18752 if (blackPixels) {
18753 do {
18754 code1 += code3 = this._getBlackCode();
18755 } while (code3 >= 64);
18756 } else {
18757 do {
18758 code1 += code3 = this._getWhiteCode();
18759 } while (code3 >= 64);
18760 }
18761
18762 this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
18763
18764 blackPixels ^= 1;
18765 }
18766 }
18767
18768 var gotEOL = false;
18769
18770 if (this.byteAlign) {
18771 this.inputBits &= ~7;
18772 }
18773
18774 if (!this.eoblock && this.row === this.rows - 1) {
18775 this.rowsDone = true;
18776 } else {
18777 code1 = this._lookBits(12);
18778
18779 if (this.eoline) {
18780 while (code1 !== ccittEOF && code1 !== 1) {
18781 this._eatBits(1);
18782
18783 code1 = this._lookBits(12);
18784 }
18785 } else {
18786 while (code1 === 0) {
18787 this._eatBits(1);
18788
18789 code1 = this._lookBits(12);
18790 }
18791 }
18792
18793 if (code1 === 1) {
18794 this._eatBits(12);
18795
18796 gotEOL = true;
18797 } else if (code1 === ccittEOF) {
18798 this.eof = true;
18799 }
18800 }
18801
18802 if (!this.eof && this.encoding > 0 && !this.rowsDone) {
18803 this.nextLine2D = !this._lookBits(1);
18804
18805 this._eatBits(1);
18806 }
18807
18808 if (this.eoblock && gotEOL && this.byteAlign) {
18809 code1 = this._lookBits(12);
18810
18811 if (code1 === 1) {
18812 this._eatBits(12);
18813
18814 if (this.encoding > 0) {
18815 this._lookBits(1);
18816
18817 this._eatBits(1);
18818 }
18819
18820 if (this.encoding >= 0) {
18821 for (i = 0; i < 4; ++i) {
18822 code1 = this._lookBits(12);
18823
18824 if (code1 !== 1) {
18825 (0, _util.info)('bad rtc code: ' + code1);
18826 }
18827
18828 this._eatBits(12);
18829
18830 if (this.encoding > 0) {
18831 this._lookBits(1);
18832
18833 this._eatBits(1);
18834 }
18835 }
18836 }
18837
18838 this.eof = true;
18839 }
18840 } else if (this.err && this.eoline) {
18841 while (true) {
18842 code1 = this._lookBits(13);
18843
18844 if (code1 === ccittEOF) {
18845 this.eof = true;
18846 return -1;
18847 }
18848
18849 if (code1 >> 1 === 1) {
18850 break;
18851 }
18852
18853 this._eatBits(1);
18854 }
18855
18856 this._eatBits(12);
18857
18858 if (this.encoding > 0) {
18859 this._eatBits(1);
18860
18861 this.nextLine2D = !(code1 & 1);
18862 }
18863 }
18864
18865 if (codingLine[0] > 0) {
18866 this.outputBits = codingLine[this.codingPos = 0];
18867 } else {
18868 this.outputBits = codingLine[this.codingPos = 1];
18869 }
18870
18871 this.row++;
18872 }
18873
18874 var c;
18875
18876 if (this.outputBits >= 8) {
18877 c = this.codingPos & 1 ? 0 : 0xFF;
18878 this.outputBits -= 8;
18879
18880 if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {
18881 this.codingPos++;
18882 this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
18883 }
18884 } else {
18885 bits = 8;
18886 c = 0;
18887
18888 do {
18889 if (this.outputBits > bits) {
18890 c <<= bits;
18891
18892 if (!(this.codingPos & 1)) {
18893 c |= 0xFF >> 8 - bits;
18894 }
18895
18896 this.outputBits -= bits;
18897 bits = 0;
18898 } else {
18899 c <<= this.outputBits;
18900
18901 if (!(this.codingPos & 1)) {
18902 c |= 0xFF >> 8 - this.outputBits;
18903 }
18904
18905 bits -= this.outputBits;
18906 this.outputBits = 0;
18907
18908 if (codingLine[this.codingPos] < columns) {
18909 this.codingPos++;
18910 this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
18911 } else if (bits > 0) {
18912 c <<= bits;
18913 bits = 0;
18914 }
18915 }
18916 } while (bits);
18917 }
18918
18919 if (this.black) {
18920 c ^= 0xFF;
18921 }
18922
18923 return c;
18924 },
18925 _addPixels: function _addPixels(a1, blackPixels) {
18926 var codingLine = this.codingLine;
18927 var codingPos = this.codingPos;
18928
18929 if (a1 > codingLine[codingPos]) {
18930 if (a1 > this.columns) {
18931 (0, _util.info)('row is wrong length');
18932 this.err = true;
18933 a1 = this.columns;
18934 }
18935
18936 if (codingPos & 1 ^ blackPixels) {
18937 ++codingPos;
18938 }
18939
18940 codingLine[codingPos] = a1;
18941 }
18942
18943 this.codingPos = codingPos;
18944 },
18945 _addPixelsNeg: function _addPixelsNeg(a1, blackPixels) {
18946 var codingLine = this.codingLine;
18947 var codingPos = this.codingPos;
18948
18949 if (a1 > codingLine[codingPos]) {
18950 if (a1 > this.columns) {
18951 (0, _util.info)('row is wrong length');
18952 this.err = true;
18953 a1 = this.columns;
18954 }
18955
18956 if (codingPos & 1 ^ blackPixels) {
18957 ++codingPos;
18958 }
18959
18960 codingLine[codingPos] = a1;
18961 } else if (a1 < codingLine[codingPos]) {
18962 if (a1 < 0) {
18963 (0, _util.info)('invalid code');
18964 this.err = true;
18965 a1 = 0;
18966 }
18967
18968 while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {
18969 --codingPos;
18970 }
18971
18972 codingLine[codingPos] = a1;
18973 }
18974
18975 this.codingPos = codingPos;
18976 },
18977 _findTableCode: function _findTableCode(start, end, table, limit) {
18978 var limitValue = limit || 0;
18979
18980 for (var i = start; i <= end; ++i) {
18981 var code = this._lookBits(i);
18982
18983 if (code === ccittEOF) {
18984 return [true, 1, false];
18985 }
18986
18987 if (i < end) {
18988 code <<= end - i;
18989 }
18990
18991 if (!limitValue || code >= limitValue) {
18992 var p = table[code - limitValue];
18993
18994 if (p[0] === i) {
18995 this._eatBits(i);
18996
18997 return [true, p[1], true];
18998 }
18999 }
19000 }
19001
19002 return [false, 0, false];
19003 },
19004 _getTwoDimCode: function _getTwoDimCode() {
19005 var code = 0;
19006 var p;
19007
19008 if (this.eoblock) {
19009 code = this._lookBits(7);
19010 p = twoDimTable[code];
19011
19012 if (p && p[0] > 0) {
19013 this._eatBits(p[0]);
19014
19015 return p[1];
19016 }
19017 } else {
19018 var result = this._findTableCode(1, 7, twoDimTable);
19019
19020 if (result[0] && result[2]) {
19021 return result[1];
19022 }
19023 }
19024
19025 (0, _util.info)('Bad two dim code');
19026 return ccittEOF;
19027 },
19028 _getWhiteCode: function _getWhiteCode() {
19029 var code = 0;
19030 var p;
19031
19032 if (this.eoblock) {
19033 code = this._lookBits(12);
19034
19035 if (code === ccittEOF) {
19036 return 1;
19037 }
19038
19039 if (code >> 5 === 0) {
19040 p = whiteTable1[code];
19041 } else {
19042 p = whiteTable2[code >> 3];
19043 }
19044
19045 if (p[0] > 0) {
19046 this._eatBits(p[0]);
19047
19048 return p[1];
19049 }
19050 } else {
19051 var result = this._findTableCode(1, 9, whiteTable2);
19052
19053 if (result[0]) {
19054 return result[1];
19055 }
19056
19057 result = this._findTableCode(11, 12, whiteTable1);
19058
19059 if (result[0]) {
19060 return result[1];
19061 }
19062 }
19063
19064 (0, _util.info)('bad white code');
19065
19066 this._eatBits(1);
19067
19068 return 1;
19069 },
19070 _getBlackCode: function _getBlackCode() {
19071 var code, p;
19072
19073 if (this.eoblock) {
19074 code = this._lookBits(13);
19075
19076 if (code === ccittEOF) {
19077 return 1;
19078 }
19079
19080 if (code >> 7 === 0) {
19081 p = blackTable1[code];
19082 } else if (code >> 9 === 0 && code >> 7 !== 0) {
19083 p = blackTable2[(code >> 1) - 64];
19084 } else {
19085 p = blackTable3[code >> 7];
19086 }
19087
19088 if (p[0] > 0) {
19089 this._eatBits(p[0]);
19090
19091 return p[1];
19092 }
19093 } else {
19094 var result = this._findTableCode(2, 6, blackTable3);
19095
19096 if (result[0]) {
19097 return result[1];
19098 }
19099
19100 result = this._findTableCode(7, 12, blackTable2, 64);
19101
19102 if (result[0]) {
19103 return result[1];
19104 }
19105
19106 result = this._findTableCode(10, 13, blackTable1);
19107
19108 if (result[0]) {
19109 return result[1];
19110 }
19111 }
19112
19113 (0, _util.info)('bad black code');
19114
19115 this._eatBits(1);
19116
19117 return 1;
19118 },
19119 _lookBits: function _lookBits(n) {
19120 var c;
19121
19122 while (this.inputBits < n) {
19123 if ((c = this.source.next()) === -1) {
19124 if (this.inputBits === 0) {
19125 return ccittEOF;
19126 }
19127
19128 return this.inputBuf << n - this.inputBits & 0xFFFF >> 16 - n;
19129 }
19130
19131 this.inputBuf = this.inputBuf << 8 | c;
19132 this.inputBits += 8;
19133 }
19134
19135 return this.inputBuf >> this.inputBits - n & 0xFFFF >> 16 - n;
19136 },
19137 _eatBits: function _eatBits(n) {
19138 if ((this.inputBits -= n) < 0) {
19139 this.inputBits = 0;
19140 }
19141 }
19142 };
19143 return CCITTFaxDecoder;
19144}();
19145
19146exports.CCITTFaxDecoder = CCITTFaxDecoder;
19147
19148/***/ }),
19149/* 161 */
19150/***/ (function(module, exports, __w_pdfjs_require__) {
19151
19152"use strict";
19153
19154
19155Object.defineProperty(exports, "__esModule", {
19156 value: true
19157});
19158exports.Jbig2Stream = void 0;
19159
19160var _primitives = __w_pdfjs_require__(151);
19161
19162var _stream = __w_pdfjs_require__(158);
19163
19164var _jbig = __w_pdfjs_require__(162);
19165
19166var _util = __w_pdfjs_require__(5);
19167
19168var Jbig2Stream = function Jbig2StreamClosure() {
19169 function Jbig2Stream(stream, maybeLength, dict, params) {
19170 this.stream = stream;
19171 this.maybeLength = maybeLength;
19172 this.dict = dict;
19173 this.params = params;
19174
19175 _stream.DecodeStream.call(this, maybeLength);
19176 }
19177
19178 Jbig2Stream.prototype = Object.create(_stream.DecodeStream.prototype);
19179 Object.defineProperty(Jbig2Stream.prototype, 'bytes', {
19180 get: function get() {
19181 return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
19182 },
19183 configurable: true
19184 });
19185
19186 Jbig2Stream.prototype.ensureBuffer = function (requested) {};
19187
19188 Jbig2Stream.prototype.readBlock = function () {
19189 if (this.eof) {
19190 return;
19191 }
19192
19193 var jbig2Image = new _jbig.Jbig2Image();
19194 var chunks = [];
19195
19196 if ((0, _primitives.isDict)(this.params)) {
19197 var globalsStream = this.params.get('JBIG2Globals');
19198
19199 if ((0, _primitives.isStream)(globalsStream)) {
19200 var globals = globalsStream.getBytes();
19201 chunks.push({
19202 data: globals,
19203 start: 0,
19204 end: globals.length
19205 });
19206 }
19207 }
19208
19209 chunks.push({
19210 data: this.bytes,
19211 start: 0,
19212 end: this.bytes.length
19213 });
19214 var data = jbig2Image.parseChunks(chunks);
19215 var dataLength = data.length;
19216
19217 for (var i = 0; i < dataLength; i++) {
19218 data[i] ^= 0xFF;
19219 }
19220
19221 this.buffer = data;
19222 this.bufferLength = dataLength;
19223 this.eof = true;
19224 };
19225
19226 return Jbig2Stream;
19227}();
19228
19229exports.Jbig2Stream = Jbig2Stream;
19230
19231/***/ }),
19232/* 162 */
19233/***/ (function(module, exports, __w_pdfjs_require__) {
19234
19235"use strict";
19236
19237
19238Object.defineProperty(exports, "__esModule", {
19239 value: true
19240});
19241exports.Jbig2Image = void 0;
19242
19243var _util = __w_pdfjs_require__(5);
19244
19245var _arithmetic_decoder = __w_pdfjs_require__(163);
19246
19247var _ccitt = __w_pdfjs_require__(160);
19248
19249var Jbig2Error = function Jbig2ErrorClosure() {
19250 function Jbig2Error(msg) {
19251 this.message = 'JBIG2 error: ' + msg;
19252 }
19253
19254 Jbig2Error.prototype = new Error();
19255 Jbig2Error.prototype.name = 'Jbig2Error';
19256 Jbig2Error.constructor = Jbig2Error;
19257 return Jbig2Error;
19258}();
19259
19260var Jbig2Image = function Jbig2ImageClosure() {
19261 function ContextCache() {}
19262
19263 ContextCache.prototype = {
19264 getContexts: function getContexts(id) {
19265 if (id in this) {
19266 return this[id];
19267 }
19268
19269 return this[id] = new Int8Array(1 << 16);
19270 }
19271 };
19272
19273 function DecodingContext(data, start, end) {
19274 this.data = data;
19275 this.start = start;
19276 this.end = end;
19277 }
19278
19279 DecodingContext.prototype = {
19280 get decoder() {
19281 var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);
19282 return (0, _util.shadow)(this, 'decoder', decoder);
19283 },
19284
19285 get contextCache() {
19286 var cache = new ContextCache();
19287 return (0, _util.shadow)(this, 'contextCache', cache);
19288 }
19289
19290 };
19291
19292 function decodeInteger(contextCache, procedure, decoder) {
19293 var contexts = contextCache.getContexts(procedure);
19294 var prev = 1;
19295
19296 function readBits(length) {
19297 var v = 0;
19298
19299 for (var i = 0; i < length; i++) {
19300 var bit = decoder.readBit(contexts, prev);
19301 prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;
19302 v = v << 1 | bit;
19303 }
19304
19305 return v >>> 0;
19306 }
19307
19308 var sign = readBits(1);
19309 var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);
19310 return sign === 0 ? value : value > 0 ? -value : null;
19311 }
19312
19313 function decodeIAID(contextCache, decoder, codeLength) {
19314 var contexts = contextCache.getContexts('IAID');
19315 var prev = 1;
19316
19317 for (var i = 0; i < codeLength; i++) {
19318 var bit = decoder.readBit(contexts, prev);
19319 prev = prev << 1 | bit;
19320 }
19321
19322 if (codeLength < 31) {
19323 return prev & (1 << codeLength) - 1;
19324 }
19325
19326 return prev & 0x7FFFFFFF;
19327 }
19328
19329 var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'PatternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension'];
19330 var CodingTemplates = [[{
19331 x: -1,
19332 y: -2
19333 }, {
19334 x: 0,
19335 y: -2
19336 }, {
19337 x: 1,
19338 y: -2
19339 }, {
19340 x: -2,
19341 y: -1
19342 }, {
19343 x: -1,
19344 y: -1
19345 }, {
19346 x: 0,
19347 y: -1
19348 }, {
19349 x: 1,
19350 y: -1
19351 }, {
19352 x: 2,
19353 y: -1
19354 }, {
19355 x: -4,
19356 y: 0
19357 }, {
19358 x: -3,
19359 y: 0
19360 }, {
19361 x: -2,
19362 y: 0
19363 }, {
19364 x: -1,
19365 y: 0
19366 }], [{
19367 x: -1,
19368 y: -2
19369 }, {
19370 x: 0,
19371 y: -2
19372 }, {
19373 x: 1,
19374 y: -2
19375 }, {
19376 x: 2,
19377 y: -2
19378 }, {
19379 x: -2,
19380 y: -1
19381 }, {
19382 x: -1,
19383 y: -1
19384 }, {
19385 x: 0,
19386 y: -1
19387 }, {
19388 x: 1,
19389 y: -1
19390 }, {
19391 x: 2,
19392 y: -1
19393 }, {
19394 x: -3,
19395 y: 0
19396 }, {
19397 x: -2,
19398 y: 0
19399 }, {
19400 x: -1,
19401 y: 0
19402 }], [{
19403 x: -1,
19404 y: -2
19405 }, {
19406 x: 0,
19407 y: -2
19408 }, {
19409 x: 1,
19410 y: -2
19411 }, {
19412 x: -2,
19413 y: -1
19414 }, {
19415 x: -1,
19416 y: -1
19417 }, {
19418 x: 0,
19419 y: -1
19420 }, {
19421 x: 1,
19422 y: -1
19423 }, {
19424 x: -2,
19425 y: 0
19426 }, {
19427 x: -1,
19428 y: 0
19429 }], [{
19430 x: -3,
19431 y: -1
19432 }, {
19433 x: -2,
19434 y: -1
19435 }, {
19436 x: -1,
19437 y: -1
19438 }, {
19439 x: 0,
19440 y: -1
19441 }, {
19442 x: 1,
19443 y: -1
19444 }, {
19445 x: -4,
19446 y: 0
19447 }, {
19448 x: -3,
19449 y: 0
19450 }, {
19451 x: -2,
19452 y: 0
19453 }, {
19454 x: -1,
19455 y: 0
19456 }]];
19457 var RefinementTemplates = [{
19458 coding: [{
19459 x: 0,
19460 y: -1
19461 }, {
19462 x: 1,
19463 y: -1
19464 }, {
19465 x: -1,
19466 y: 0
19467 }],
19468 reference: [{
19469 x: 0,
19470 y: -1
19471 }, {
19472 x: 1,
19473 y: -1
19474 }, {
19475 x: -1,
19476 y: 0
19477 }, {
19478 x: 0,
19479 y: 0
19480 }, {
19481 x: 1,
19482 y: 0
19483 }, {
19484 x: -1,
19485 y: 1
19486 }, {
19487 x: 0,
19488 y: 1
19489 }, {
19490 x: 1,
19491 y: 1
19492 }]
19493 }, {
19494 coding: [{
19495 x: -1,
19496 y: -1
19497 }, {
19498 x: 0,
19499 y: -1
19500 }, {
19501 x: 1,
19502 y: -1
19503 }, {
19504 x: -1,
19505 y: 0
19506 }],
19507 reference: [{
19508 x: 0,
19509 y: -1
19510 }, {
19511 x: -1,
19512 y: 0
19513 }, {
19514 x: 0,
19515 y: 0
19516 }, {
19517 x: 1,
19518 y: 0
19519 }, {
19520 x: 0,
19521 y: 1
19522 }, {
19523 x: 1,
19524 y: 1
19525 }]
19526 }];
19527 var ReusedContexts = [0x9B25, 0x0795, 0x00E5, 0x0195];
19528 var RefinementReusedContexts = [0x0020, 0x0008];
19529
19530 function decodeBitmapTemplate0(width, height, decodingContext) {
19531 var decoder = decodingContext.decoder;
19532 var contexts = decodingContext.contextCache.getContexts('GB');
19533 var contextLabel,
19534 i,
19535 j,
19536 pixel,
19537 row,
19538 row1,
19539 row2,
19540 bitmap = [];
19541 var OLD_PIXEL_MASK = 0x7BF7;
19542
19543 for (i = 0; i < height; i++) {
19544 row = bitmap[i] = new Uint8Array(width);
19545 row1 = i < 1 ? row : bitmap[i - 1];
19546 row2 = i < 2 ? row : bitmap[i - 2];
19547 contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;
19548
19549 for (j = 0; j < width; j++) {
19550 row[j] = pixel = decoder.readBit(contexts, contextLabel);
19551 contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;
19552 }
19553 }
19554
19555 return bitmap;
19556 }
19557
19558 function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {
19559 if (mmr) {
19560 var input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
19561 return decodeMMRBitmap(input, width, height, false);
19562 }
19563
19564 if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {
19565 return decodeBitmapTemplate0(width, height, decodingContext);
19566 }
19567
19568 var useskip = !!skip;
19569 var template = CodingTemplates[templateIndex].concat(at);
19570 template.sort(function (a, b) {
19571 return a.y - b.y || a.x - b.x;
19572 });
19573 var templateLength = template.length;
19574 var templateX = new Int8Array(templateLength);
19575 var templateY = new Int8Array(templateLength);
19576 var changingTemplateEntries = [];
19577 var reuseMask = 0,
19578 minX = 0,
19579 maxX = 0,
19580 minY = 0;
19581 var c, k;
19582
19583 for (k = 0; k < templateLength; k++) {
19584 templateX[k] = template[k].x;
19585 templateY[k] = template[k].y;
19586 minX = Math.min(minX, template[k].x);
19587 maxX = Math.max(maxX, template[k].x);
19588 minY = Math.min(minY, template[k].y);
19589
19590 if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {
19591 reuseMask |= 1 << templateLength - 1 - k;
19592 } else {
19593 changingTemplateEntries.push(k);
19594 }
19595 }
19596
19597 var changingEntriesLength = changingTemplateEntries.length;
19598 var changingTemplateX = new Int8Array(changingEntriesLength);
19599 var changingTemplateY = new Int8Array(changingEntriesLength);
19600 var changingTemplateBit = new Uint16Array(changingEntriesLength);
19601
19602 for (c = 0; c < changingEntriesLength; c++) {
19603 k = changingTemplateEntries[c];
19604 changingTemplateX[c] = template[k].x;
19605 changingTemplateY[c] = template[k].y;
19606 changingTemplateBit[c] = 1 << templateLength - 1 - k;
19607 }
19608
19609 var sbb_left = -minX;
19610 var sbb_top = -minY;
19611 var sbb_right = width - maxX;
19612 var pseudoPixelContext = ReusedContexts[templateIndex];
19613 var row = new Uint8Array(width);
19614 var bitmap = [];
19615 var decoder = decodingContext.decoder;
19616 var contexts = decodingContext.contextCache.getContexts('GB');
19617 var ltp = 0,
19618 j,
19619 i0,
19620 j0,
19621 contextLabel = 0,
19622 bit,
19623 shift;
19624
19625 for (var i = 0; i < height; i++) {
19626 if (prediction) {
19627 var sltp = decoder.readBit(contexts, pseudoPixelContext);
19628 ltp ^= sltp;
19629
19630 if (ltp) {
19631 bitmap.push(row);
19632 continue;
19633 }
19634 }
19635
19636 row = new Uint8Array(row);
19637 bitmap.push(row);
19638
19639 for (j = 0; j < width; j++) {
19640 if (useskip && skip[i][j]) {
19641 row[j] = 0;
19642 continue;
19643 }
19644
19645 if (j >= sbb_left && j < sbb_right && i >= sbb_top) {
19646 contextLabel = contextLabel << 1 & reuseMask;
19647
19648 for (k = 0; k < changingEntriesLength; k++) {
19649 i0 = i + changingTemplateY[k];
19650 j0 = j + changingTemplateX[k];
19651 bit = bitmap[i0][j0];
19652
19653 if (bit) {
19654 bit = changingTemplateBit[k];
19655 contextLabel |= bit;
19656 }
19657 }
19658 } else {
19659 contextLabel = 0;
19660 shift = templateLength - 1;
19661
19662 for (k = 0; k < templateLength; k++, shift--) {
19663 j0 = j + templateX[k];
19664
19665 if (j0 >= 0 && j0 < width) {
19666 i0 = i + templateY[k];
19667
19668 if (i0 >= 0) {
19669 bit = bitmap[i0][j0];
19670
19671 if (bit) {
19672 contextLabel |= bit << shift;
19673 }
19674 }
19675 }
19676 }
19677 }
19678
19679 var pixel = decoder.readBit(contexts, contextLabel);
19680 row[j] = pixel;
19681 }
19682 }
19683
19684 return bitmap;
19685 }
19686
19687 function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {
19688 var codingTemplate = RefinementTemplates[templateIndex].coding;
19689
19690 if (templateIndex === 0) {
19691 codingTemplate = codingTemplate.concat([at[0]]);
19692 }
19693
19694 var codingTemplateLength = codingTemplate.length;
19695 var codingTemplateX = new Int32Array(codingTemplateLength);
19696 var codingTemplateY = new Int32Array(codingTemplateLength);
19697 var k;
19698
19699 for (k = 0; k < codingTemplateLength; k++) {
19700 codingTemplateX[k] = codingTemplate[k].x;
19701 codingTemplateY[k] = codingTemplate[k].y;
19702 }
19703
19704 var referenceTemplate = RefinementTemplates[templateIndex].reference;
19705
19706 if (templateIndex === 0) {
19707 referenceTemplate = referenceTemplate.concat([at[1]]);
19708 }
19709
19710 var referenceTemplateLength = referenceTemplate.length;
19711 var referenceTemplateX = new Int32Array(referenceTemplateLength);
19712 var referenceTemplateY = new Int32Array(referenceTemplateLength);
19713
19714 for (k = 0; k < referenceTemplateLength; k++) {
19715 referenceTemplateX[k] = referenceTemplate[k].x;
19716 referenceTemplateY[k] = referenceTemplate[k].y;
19717 }
19718
19719 var referenceWidth = referenceBitmap[0].length;
19720 var referenceHeight = referenceBitmap.length;
19721 var pseudoPixelContext = RefinementReusedContexts[templateIndex];
19722 var bitmap = [];
19723 var decoder = decodingContext.decoder;
19724 var contexts = decodingContext.contextCache.getContexts('GR');
19725 var ltp = 0;
19726
19727 for (var i = 0; i < height; i++) {
19728 if (prediction) {
19729 var sltp = decoder.readBit(contexts, pseudoPixelContext);
19730 ltp ^= sltp;
19731
19732 if (ltp) {
19733 throw new Jbig2Error('prediction is not supported');
19734 }
19735 }
19736
19737 var row = new Uint8Array(width);
19738 bitmap.push(row);
19739
19740 for (var j = 0; j < width; j++) {
19741 var i0, j0;
19742 var contextLabel = 0;
19743
19744 for (k = 0; k < codingTemplateLength; k++) {
19745 i0 = i + codingTemplateY[k];
19746 j0 = j + codingTemplateX[k];
19747
19748 if (i0 < 0 || j0 < 0 || j0 >= width) {
19749 contextLabel <<= 1;
19750 } else {
19751 contextLabel = contextLabel << 1 | bitmap[i0][j0];
19752 }
19753 }
19754
19755 for (k = 0; k < referenceTemplateLength; k++) {
19756 i0 = i + referenceTemplateY[k] - offsetY;
19757 j0 = j + referenceTemplateX[k] - offsetX;
19758
19759 if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {
19760 contextLabel <<= 1;
19761 } else {
19762 contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];
19763 }
19764 }
19765
19766 var pixel = decoder.readBit(contexts, contextLabel);
19767 row[j] = pixel;
19768 }
19769 }
19770
19771 return bitmap;
19772 }
19773
19774 function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {
19775 if (huffman && refinement) {
19776 throw new Jbig2Error('symbol refinement with Huffman is not supported');
19777 }
19778
19779 var newSymbols = [];
19780 var currentHeight = 0;
19781 var symbolCodeLength = (0, _util.log2)(symbols.length + numberOfNewSymbols);
19782 var decoder = decodingContext.decoder;
19783 var contextCache = decodingContext.contextCache;
19784 var tableB1, symbolWidths;
19785
19786 if (huffman) {
19787 tableB1 = getStandardTable(1);
19788 symbolWidths = [];
19789 symbolCodeLength = Math.max(symbolCodeLength, 1);
19790 }
19791
19792 while (newSymbols.length < numberOfNewSymbols) {
19793 var deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, 'IADH', decoder);
19794 currentHeight += deltaHeight;
19795 var currentWidth = 0,
19796 totalWidth = 0;
19797 var firstSymbol = huffman ? symbolWidths.length : 0;
19798
19799 while (true) {
19800 var deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, 'IADW', decoder);
19801
19802 if (deltaWidth === null) {
19803 break;
19804 }
19805
19806 currentWidth += deltaWidth;
19807 totalWidth += currentWidth;
19808 var bitmap;
19809
19810 if (refinement) {
19811 var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);
19812
19813 if (numberOfInstances > 1) {
19814 bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);
19815 } else {
19816 var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
19817 var rdx = decodeInteger(contextCache, 'IARDX', decoder);
19818 var rdy = decodeInteger(contextCache, 'IARDY', decoder);
19819 var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];
19820 bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);
19821 }
19822
19823 newSymbols.push(bitmap);
19824 } else if (huffman) {
19825 symbolWidths.push(currentWidth);
19826 } else {
19827 bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);
19828 newSymbols.push(bitmap);
19829 }
19830 }
19831
19832 if (huffman && !refinement) {
19833 var bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);
19834 huffmanInput.byteAlign();
19835 var collectiveBitmap = void 0;
19836
19837 if (bitmapSize === 0) {
19838 collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);
19839 } else {
19840 var originalEnd = huffmanInput.end;
19841 var bitmapEnd = huffmanInput.position + bitmapSize;
19842 huffmanInput.end = bitmapEnd;
19843 collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);
19844 huffmanInput.end = originalEnd;
19845 huffmanInput.position = bitmapEnd;
19846 }
19847
19848 var numberOfSymbolsDecoded = symbolWidths.length;
19849
19850 if (firstSymbol === numberOfSymbolsDecoded - 1) {
19851 newSymbols.push(collectiveBitmap);
19852 } else {
19853 var _i = void 0,
19854 y = void 0,
19855 xMin = 0,
19856 xMax = void 0,
19857 bitmapWidth = void 0,
19858 symbolBitmap = void 0;
19859
19860 for (_i = firstSymbol; _i < numberOfSymbolsDecoded; _i++) {
19861 bitmapWidth = symbolWidths[_i];
19862 xMax = xMin + bitmapWidth;
19863 symbolBitmap = [];
19864
19865 for (y = 0; y < currentHeight; y++) {
19866 symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
19867 }
19868
19869 newSymbols.push(symbolBitmap);
19870 xMin = xMax;
19871 }
19872 }
19873 }
19874 }
19875
19876 var exportedSymbols = [];
19877 var flags = [],
19878 currentFlag = false;
19879 var totalSymbolsLength = symbols.length + numberOfNewSymbols;
19880
19881 while (flags.length < totalSymbolsLength) {
19882 var runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, 'IAEX', decoder);
19883
19884 while (runLength--) {
19885 flags.push(currentFlag);
19886 }
19887
19888 currentFlag = !currentFlag;
19889 }
19890
19891 for (var i = 0, ii = symbols.length; i < ii; i++) {
19892 if (flags[i]) {
19893 exportedSymbols.push(symbols[i]);
19894 }
19895 }
19896
19897 for (var j = 0; j < numberOfNewSymbols; i++, j++) {
19898 if (flags[i]) {
19899 exportedSymbols.push(newSymbols[j]);
19900 }
19901 }
19902
19903 return exportedSymbols;
19904 }
19905
19906 function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {
19907 if (huffman && refinement) {
19908 throw new Jbig2Error('refinement with Huffman is not supported');
19909 }
19910
19911 var bitmap = [];
19912 var i, row;
19913
19914 for (i = 0; i < height; i++) {
19915 row = new Uint8Array(width);
19916
19917 if (defaultPixelValue) {
19918 for (var j = 0; j < width; j++) {
19919 row[j] = defaultPixelValue;
19920 }
19921 }
19922
19923 bitmap.push(row);
19924 }
19925
19926 var decoder = decodingContext.decoder;
19927 var contextCache = decodingContext.contextCache;
19928 var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 'IADT', decoder);
19929 var firstS = 0;
19930 i = 0;
19931
19932 while (i < numberOfSymbolInstances) {
19933 var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 'IADT', decoder);
19934 stripT += deltaT;
19935 var deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, 'IAFS', decoder);
19936 firstS += deltaFirstS;
19937 var currentS = firstS;
19938
19939 do {
19940 var currentT = 0;
19941
19942 if (stripSize > 1) {
19943 currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, 'IAIT', decoder);
19944 }
19945
19946 var t = stripSize * stripT + currentT;
19947 var symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);
19948 var applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 'IARI', decoder));
19949 var symbolBitmap = inputSymbols[symbolId];
19950 var symbolWidth = symbolBitmap[0].length;
19951 var symbolHeight = symbolBitmap.length;
19952
19953 if (applyRefinement) {
19954 var rdw = decodeInteger(contextCache, 'IARDW', decoder);
19955 var rdh = decodeInteger(contextCache, 'IARDH', decoder);
19956 var rdx = decodeInteger(contextCache, 'IARDX', decoder);
19957 var rdy = decodeInteger(contextCache, 'IARDY', decoder);
19958 symbolWidth += rdw;
19959 symbolHeight += rdh;
19960 symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);
19961 }
19962
19963 var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
19964 var offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
19965 var s2, t2, symbolRow;
19966
19967 if (transposed) {
19968 for (s2 = 0; s2 < symbolHeight; s2++) {
19969 row = bitmap[offsetS + s2];
19970
19971 if (!row) {
19972 continue;
19973 }
19974
19975 symbolRow = symbolBitmap[s2];
19976 var maxWidth = Math.min(width - offsetT, symbolWidth);
19977
19978 switch (combinationOperator) {
19979 case 0:
19980 for (t2 = 0; t2 < maxWidth; t2++) {
19981 row[offsetT + t2] |= symbolRow[t2];
19982 }
19983
19984 break;
19985
19986 case 2:
19987 for (t2 = 0; t2 < maxWidth; t2++) {
19988 row[offsetT + t2] ^= symbolRow[t2];
19989 }
19990
19991 break;
19992
19993 default:
19994 throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported"));
19995 }
19996 }
19997
19998 currentS += symbolHeight - 1;
19999 } else {
20000 for (t2 = 0; t2 < symbolHeight; t2++) {
20001 row = bitmap[offsetT + t2];
20002
20003 if (!row) {
20004 continue;
20005 }
20006
20007 symbolRow = symbolBitmap[t2];
20008
20009 switch (combinationOperator) {
20010 case 0:
20011 for (s2 = 0; s2 < symbolWidth; s2++) {
20012 row[offsetS + s2] |= symbolRow[s2];
20013 }
20014
20015 break;
20016
20017 case 2:
20018 for (s2 = 0; s2 < symbolWidth; s2++) {
20019 row[offsetS + s2] ^= symbolRow[s2];
20020 }
20021
20022 break;
20023
20024 default:
20025 throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported"));
20026 }
20027 }
20028
20029 currentS += symbolWidth - 1;
20030 }
20031
20032 i++;
20033 var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 'IADS', decoder);
20034
20035 if (deltaS === null) {
20036 break;
20037 }
20038
20039 currentS += deltaS + dsOffset;
20040 } while (true);
20041 }
20042
20043 return bitmap;
20044 }
20045
20046 function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {
20047 var at = [];
20048
20049 if (!mmr) {
20050 at.push({
20051 x: -patternWidth,
20052 y: 0
20053 });
20054
20055 if (template === 0) {
20056 at.push({
20057 x: -3,
20058 y: -1
20059 });
20060 at.push({
20061 x: 2,
20062 y: -2
20063 });
20064 at.push({
20065 x: -2,
20066 y: -2
20067 });
20068 }
20069 }
20070
20071 var collectiveWidth = (maxPatternIndex + 1) * patternWidth;
20072 var collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);
20073 var patterns = [],
20074 i = 0,
20075 patternBitmap,
20076 xMin,
20077 xMax,
20078 y;
20079
20080 while (i <= maxPatternIndex) {
20081 patternBitmap = [];
20082 xMin = patternWidth * i;
20083 xMax = xMin + patternWidth;
20084
20085 for (y = 0; y < patternHeight; y++) {
20086 patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
20087 }
20088
20089 patterns.push(patternBitmap);
20090 i++;
20091 }
20092
20093 return patterns;
20094 }
20095
20096 function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {
20097 var skip = null;
20098
20099 if (enableSkip) {
20100 throw new Jbig2Error('skip is not supported');
20101 }
20102
20103 if (combinationOperator !== 0) {
20104 throw new Jbig2Error('operator ' + combinationOperator + ' is not supported in halftone region');
20105 }
20106
20107 var regionBitmap = [];
20108 var i, j, row;
20109
20110 for (i = 0; i < regionHeight; i++) {
20111 row = new Uint8Array(regionWidth);
20112
20113 if (defaultPixelValue) {
20114 for (j = 0; j < regionWidth; j++) {
20115 row[j] = defaultPixelValue;
20116 }
20117 }
20118
20119 regionBitmap.push(row);
20120 }
20121
20122 var numberOfPatterns = patterns.length;
20123 var pattern0 = patterns[0];
20124 var patternWidth = pattern0[0].length,
20125 patternHeight = pattern0.length;
20126 var bitsPerValue = (0, _util.log2)(numberOfPatterns);
20127 var at = [];
20128
20129 if (!mmr) {
20130 at.push({
20131 x: template <= 1 ? 3 : 2,
20132 y: -1
20133 });
20134
20135 if (template === 0) {
20136 at.push({
20137 x: -3,
20138 y: -1
20139 });
20140 at.push({
20141 x: 2,
20142 y: -2
20143 });
20144 at.push({
20145 x: -2,
20146 y: -2
20147 });
20148 }
20149 }
20150
20151 var grayScaleBitPlanes = [],
20152 mmrInput,
20153 bitmap;
20154
20155 if (mmr) {
20156 mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
20157 }
20158
20159 for (i = bitsPerValue - 1; i >= 0; i--) {
20160 if (mmr) {
20161 bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);
20162 } else {
20163 bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);
20164 }
20165
20166 grayScaleBitPlanes[i] = bitmap;
20167 }
20168
20169 var mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;
20170
20171 for (mg = 0; mg < gridHeight; mg++) {
20172 for (ng = 0; ng < gridWidth; ng++) {
20173 bit = 0;
20174 patternIndex = 0;
20175
20176 for (j = bitsPerValue - 1; j >= 0; j--) {
20177 bit = grayScaleBitPlanes[j][mg][ng] ^ bit;
20178 patternIndex |= bit << j;
20179 }
20180
20181 patternBitmap = patterns[patternIndex];
20182 x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;
20183 y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;
20184
20185 if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {
20186 for (i = 0; i < patternHeight; i++) {
20187 regionRow = regionBitmap[y + i];
20188 patternRow = patternBitmap[i];
20189
20190 for (j = 0; j < patternWidth; j++) {
20191 regionRow[x + j] |= patternRow[j];
20192 }
20193 }
20194 } else {
20195 var regionX = void 0,
20196 regionY = void 0;
20197
20198 for (i = 0; i < patternHeight; i++) {
20199 regionY = y + i;
20200
20201 if (regionY < 0 || regionY >= regionHeight) {
20202 continue;
20203 }
20204
20205 regionRow = regionBitmap[regionY];
20206 patternRow = patternBitmap[i];
20207
20208 for (j = 0; j < patternWidth; j++) {
20209 regionX = x + j;
20210
20211 if (regionX >= 0 && regionX < regionWidth) {
20212 regionRow[regionX] |= patternRow[j];
20213 }
20214 }
20215 }
20216 }
20217 }
20218 }
20219
20220 return regionBitmap;
20221 }
20222
20223 function readSegmentHeader(data, start) {
20224 var segmentHeader = {};
20225 segmentHeader.number = (0, _util.readUint32)(data, start);
20226 var flags = data[start + 4];
20227 var segmentType = flags & 0x3F;
20228
20229 if (!SegmentTypes[segmentType]) {
20230 throw new Jbig2Error('invalid segment type: ' + segmentType);
20231 }
20232
20233 segmentHeader.type = segmentType;
20234 segmentHeader.typeName = SegmentTypes[segmentType];
20235 segmentHeader.deferredNonRetain = !!(flags & 0x80);
20236 var pageAssociationFieldSize = !!(flags & 0x40);
20237 var referredFlags = data[start + 5];
20238 var referredToCount = referredFlags >> 5 & 7;
20239 var retainBits = [referredFlags & 31];
20240 var position = start + 6;
20241
20242 if (referredFlags === 7) {
20243 referredToCount = (0, _util.readUint32)(data, position - 1) & 0x1FFFFFFF;
20244 position += 3;
20245 var bytes = referredToCount + 7 >> 3;
20246 retainBits[0] = data[position++];
20247
20248 while (--bytes > 0) {
20249 retainBits.push(data[position++]);
20250 }
20251 } else if (referredFlags === 5 || referredFlags === 6) {
20252 throw new Jbig2Error('invalid referred-to flags');
20253 }
20254
20255 segmentHeader.retainBits = retainBits;
20256 var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 : segmentHeader.number <= 65536 ? 2 : 4;
20257 var referredTo = [];
20258 var i, ii;
20259
20260 for (i = 0; i < referredToCount; i++) {
20261 var number = referredToSegmentNumberSize === 1 ? data[position] : referredToSegmentNumberSize === 2 ? (0, _util.readUint16)(data, position) : (0, _util.readUint32)(data, position);
20262 referredTo.push(number);
20263 position += referredToSegmentNumberSize;
20264 }
20265
20266 segmentHeader.referredTo = referredTo;
20267
20268 if (!pageAssociationFieldSize) {
20269 segmentHeader.pageAssociation = data[position++];
20270 } else {
20271 segmentHeader.pageAssociation = (0, _util.readUint32)(data, position);
20272 position += 4;
20273 }
20274
20275 segmentHeader.length = (0, _util.readUint32)(data, position);
20276 position += 4;
20277
20278 if (segmentHeader.length === 0xFFFFFFFF) {
20279 if (segmentType === 38) {
20280 var genericRegionInfo = readRegionSegmentInformation(data, position);
20281 var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];
20282 var genericRegionMmr = !!(genericRegionSegmentFlags & 1);
20283 var searchPatternLength = 6;
20284 var searchPattern = new Uint8Array(searchPatternLength);
20285
20286 if (!genericRegionMmr) {
20287 searchPattern[0] = 0xFF;
20288 searchPattern[1] = 0xAC;
20289 }
20290
20291 searchPattern[2] = genericRegionInfo.height >>> 24 & 0xFF;
20292 searchPattern[3] = genericRegionInfo.height >> 16 & 0xFF;
20293 searchPattern[4] = genericRegionInfo.height >> 8 & 0xFF;
20294 searchPattern[5] = genericRegionInfo.height & 0xFF;
20295
20296 for (i = position, ii = data.length; i < ii; i++) {
20297 var j = 0;
20298
20299 while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
20300 j++;
20301 }
20302
20303 if (j === searchPatternLength) {
20304 segmentHeader.length = i + searchPatternLength;
20305 break;
20306 }
20307 }
20308
20309 if (segmentHeader.length === 0xFFFFFFFF) {
20310 throw new Jbig2Error('segment end was not found');
20311 }
20312 } else {
20313 throw new Jbig2Error('invalid unknown segment length');
20314 }
20315 }
20316
20317 segmentHeader.headerEnd = position;
20318 return segmentHeader;
20319 }
20320
20321 function readSegments(header, data, start, end) {
20322 var segments = [];
20323 var position = start;
20324
20325 while (position < end) {
20326 var segmentHeader = readSegmentHeader(data, position);
20327 position = segmentHeader.headerEnd;
20328 var segment = {
20329 header: segmentHeader,
20330 data: data
20331 };
20332
20333 if (!header.randomAccess) {
20334 segment.start = position;
20335 position += segmentHeader.length;
20336 segment.end = position;
20337 }
20338
20339 segments.push(segment);
20340
20341 if (segmentHeader.type === 51) {
20342 break;
20343 }
20344 }
20345
20346 if (header.randomAccess) {
20347 for (var i = 0, ii = segments.length; i < ii; i++) {
20348 segments[i].start = position;
20349 position += segments[i].header.length;
20350 segments[i].end = position;
20351 }
20352 }
20353
20354 return segments;
20355 }
20356
20357 function readRegionSegmentInformation(data, start) {
20358 return {
20359 width: (0, _util.readUint32)(data, start),
20360 height: (0, _util.readUint32)(data, start + 4),
20361 x: (0, _util.readUint32)(data, start + 8),
20362 y: (0, _util.readUint32)(data, start + 12),
20363 combinationOperator: data[start + 16] & 7
20364 };
20365 }
20366
20367 var RegionSegmentInformationFieldLength = 17;
20368
20369 function processSegment(segment, visitor) {
20370 var header = segment.header;
20371 var data = segment.data,
20372 position = segment.start,
20373 end = segment.end;
20374 var args, at, i, atLength;
20375
20376 switch (header.type) {
20377 case 0:
20378 var dictionary = {};
20379 var dictionaryFlags = (0, _util.readUint16)(data, position);
20380 dictionary.huffman = !!(dictionaryFlags & 1);
20381 dictionary.refinement = !!(dictionaryFlags & 2);
20382 dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;
20383 dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;
20384 dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;
20385 dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;
20386 dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);
20387 dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);
20388 dictionary.template = dictionaryFlags >> 10 & 3;
20389 dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;
20390 position += 2;
20391
20392 if (!dictionary.huffman) {
20393 atLength = dictionary.template === 0 ? 4 : 1;
20394 at = [];
20395
20396 for (i = 0; i < atLength; i++) {
20397 at.push({
20398 x: (0, _util.readInt8)(data, position),
20399 y: (0, _util.readInt8)(data, position + 1)
20400 });
20401 position += 2;
20402 }
20403
20404 dictionary.at = at;
20405 }
20406
20407 if (dictionary.refinement && !dictionary.refinementTemplate) {
20408 at = [];
20409
20410 for (i = 0; i < 2; i++) {
20411 at.push({
20412 x: (0, _util.readInt8)(data, position),
20413 y: (0, _util.readInt8)(data, position + 1)
20414 });
20415 position += 2;
20416 }
20417
20418 dictionary.refinementAt = at;
20419 }
20420
20421 dictionary.numberOfExportedSymbols = (0, _util.readUint32)(data, position);
20422 position += 4;
20423 dictionary.numberOfNewSymbols = (0, _util.readUint32)(data, position);
20424 position += 4;
20425 args = [dictionary, header.number, header.referredTo, data, position, end];
20426 break;
20427
20428 case 6:
20429 case 7:
20430 var textRegion = {};
20431 textRegion.info = readRegionSegmentInformation(data, position);
20432 position += RegionSegmentInformationFieldLength;
20433 var textRegionSegmentFlags = (0, _util.readUint16)(data, position);
20434 position += 2;
20435 textRegion.huffman = !!(textRegionSegmentFlags & 1);
20436 textRegion.refinement = !!(textRegionSegmentFlags & 2);
20437 textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;
20438 textRegion.stripSize = 1 << textRegion.logStripSize;
20439 textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;
20440 textRegion.transposed = !!(textRegionSegmentFlags & 64);
20441 textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;
20442 textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;
20443 textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;
20444 textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;
20445
20446 if (textRegion.huffman) {
20447 var textRegionHuffmanFlags = (0, _util.readUint16)(data, position);
20448 position += 2;
20449 textRegion.huffmanFS = textRegionHuffmanFlags & 3;
20450 textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;
20451 textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;
20452 textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;
20453 textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;
20454 textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;
20455 textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;
20456 textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);
20457 }
20458
20459 if (textRegion.refinement && !textRegion.refinementTemplate) {
20460 at = [];
20461
20462 for (i = 0; i < 2; i++) {
20463 at.push({
20464 x: (0, _util.readInt8)(data, position),
20465 y: (0, _util.readInt8)(data, position + 1)
20466 });
20467 position += 2;
20468 }
20469
20470 textRegion.refinementAt = at;
20471 }
20472
20473 textRegion.numberOfSymbolInstances = (0, _util.readUint32)(data, position);
20474 position += 4;
20475 args = [textRegion, header.referredTo, data, position, end];
20476 break;
20477
20478 case 16:
20479 var patternDictionary = {};
20480 var patternDictionaryFlags = data[position++];
20481 patternDictionary.mmr = !!(patternDictionaryFlags & 1);
20482 patternDictionary.template = patternDictionaryFlags >> 1 & 3;
20483 patternDictionary.patternWidth = data[position++];
20484 patternDictionary.patternHeight = data[position++];
20485 patternDictionary.maxPatternIndex = (0, _util.readUint32)(data, position);
20486 position += 4;
20487 args = [patternDictionary, header.number, data, position, end];
20488 break;
20489
20490 case 22:
20491 case 23:
20492 var halftoneRegion = {};
20493 halftoneRegion.info = readRegionSegmentInformation(data, position);
20494 position += RegionSegmentInformationFieldLength;
20495 var halftoneRegionFlags = data[position++];
20496 halftoneRegion.mmr = !!(halftoneRegionFlags & 1);
20497 halftoneRegion.template = halftoneRegionFlags >> 1 & 3;
20498 halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);
20499 halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;
20500 halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;
20501 halftoneRegion.gridWidth = (0, _util.readUint32)(data, position);
20502 position += 4;
20503 halftoneRegion.gridHeight = (0, _util.readUint32)(data, position);
20504 position += 4;
20505 halftoneRegion.gridOffsetX = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
20506 position += 4;
20507 halftoneRegion.gridOffsetY = (0, _util.readUint32)(data, position) & 0xFFFFFFFF;
20508 position += 4;
20509 halftoneRegion.gridVectorX = (0, _util.readUint16)(data, position);
20510 position += 2;
20511 halftoneRegion.gridVectorY = (0, _util.readUint16)(data, position);
20512 position += 2;
20513 args = [halftoneRegion, header.referredTo, data, position, end];
20514 break;
20515
20516 case 38:
20517 case 39:
20518 var genericRegion = {};
20519 genericRegion.info = readRegionSegmentInformation(data, position);
20520 position += RegionSegmentInformationFieldLength;
20521 var genericRegionSegmentFlags = data[position++];
20522 genericRegion.mmr = !!(genericRegionSegmentFlags & 1);
20523 genericRegion.template = genericRegionSegmentFlags >> 1 & 3;
20524 genericRegion.prediction = !!(genericRegionSegmentFlags & 8);
20525
20526 if (!genericRegion.mmr) {
20527 atLength = genericRegion.template === 0 ? 4 : 1;
20528 at = [];
20529
20530 for (i = 0; i < atLength; i++) {
20531 at.push({
20532 x: (0, _util.readInt8)(data, position),
20533 y: (0, _util.readInt8)(data, position + 1)
20534 });
20535 position += 2;
20536 }
20537
20538 genericRegion.at = at;
20539 }
20540
20541 args = [genericRegion, data, position, end];
20542 break;
20543
20544 case 48:
20545 var pageInfo = {
20546 width: (0, _util.readUint32)(data, position),
20547 height: (0, _util.readUint32)(data, position + 4),
20548 resolutionX: (0, _util.readUint32)(data, position + 8),
20549 resolutionY: (0, _util.readUint32)(data, position + 12)
20550 };
20551
20552 if (pageInfo.height === 0xFFFFFFFF) {
20553 delete pageInfo.height;
20554 }
20555
20556 var pageSegmentFlags = data[position + 16];
20557 (0, _util.readUint16)(data, position + 17);
20558 pageInfo.lossless = !!(pageSegmentFlags & 1);
20559 pageInfo.refinement = !!(pageSegmentFlags & 2);
20560 pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;
20561 pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;
20562 pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);
20563 pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);
20564 args = [pageInfo];
20565 break;
20566
20567 case 49:
20568 break;
20569
20570 case 50:
20571 break;
20572
20573 case 51:
20574 break;
20575
20576 case 53:
20577 args = [header.number, data, position, end];
20578 break;
20579
20580 case 62:
20581 break;
20582
20583 default:
20584 throw new Jbig2Error("segment type ".concat(header.typeName, "(").concat(header.type, ")") + ' is not implemented');
20585 }
20586
20587 var callbackName = 'on' + header.typeName;
20588
20589 if (callbackName in visitor) {
20590 visitor[callbackName].apply(visitor, args);
20591 }
20592 }
20593
20594 function processSegments(segments, visitor) {
20595 for (var i = 0, ii = segments.length; i < ii; i++) {
20596 processSegment(segments[i], visitor);
20597 }
20598 }
20599
20600 function parseJbig2Chunks(chunks) {
20601 var visitor = new SimpleSegmentVisitor();
20602
20603 for (var i = 0, ii = chunks.length; i < ii; i++) {
20604 var chunk = chunks[i];
20605 var segments = readSegments({}, chunk.data, chunk.start, chunk.end);
20606 processSegments(segments, visitor);
20607 }
20608
20609 return visitor.buffer;
20610 }
20611
20612 function parseJbig2(data) {
20613 var position = 0,
20614 end = data.length;
20615
20616 if (data[position] !== 0x97 || data[position + 1] !== 0x4A || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {
20617 throw new Jbig2Error('parseJbig2 - invalid header.');
20618 }
20619
20620 var header = Object.create(null);
20621 position += 8;
20622 var flags = data[position++];
20623 header.randomAccess = !(flags & 1);
20624
20625 if (!(flags & 2)) {
20626 header.numberOfPages = (0, _util.readUint32)(data, position);
20627 position += 4;
20628 }
20629
20630 var segments = readSegments(header, data, position, end);
20631 var visitor = new SimpleSegmentVisitor();
20632 processSegments(segments, visitor);
20633 var _visitor$currentPageI = visitor.currentPageInfo,
20634 width = _visitor$currentPageI.width,
20635 height = _visitor$currentPageI.height;
20636 var bitPacked = visitor.buffer;
20637 var imgData = new Uint8ClampedArray(width * height);
20638 var q = 0,
20639 k = 0;
20640
20641 for (var i = 0; i < height; i++) {
20642 var mask = 0,
20643 buffer = void 0;
20644
20645 for (var j = 0; j < width; j++) {
20646 if (!mask) {
20647 mask = 128;
20648 buffer = bitPacked[k++];
20649 }
20650
20651 imgData[q++] = buffer & mask ? 0 : 255;
20652 mask >>= 1;
20653 }
20654 }
20655
20656 return {
20657 imgData: imgData,
20658 width: width,
20659 height: height
20660 };
20661 }
20662
20663 function SimpleSegmentVisitor() {}
20664
20665 SimpleSegmentVisitor.prototype = {
20666 onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {
20667 this.currentPageInfo = info;
20668 var rowSize = info.width + 7 >> 3;
20669 var buffer = new Uint8ClampedArray(rowSize * info.height);
20670
20671 if (info.defaultPixelValue) {
20672 for (var i = 0, ii = buffer.length; i < ii; i++) {
20673 buffer[i] = 0xFF;
20674 }
20675 }
20676
20677 this.buffer = buffer;
20678 },
20679 drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {
20680 var pageInfo = this.currentPageInfo;
20681 var width = regionInfo.width,
20682 height = regionInfo.height;
20683 var rowSize = pageInfo.width + 7 >> 3;
20684 var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;
20685 var buffer = this.buffer;
20686 var mask0 = 128 >> (regionInfo.x & 7);
20687 var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
20688 var i, j, mask, offset;
20689
20690 switch (combinationOperator) {
20691 case 0:
20692 for (i = 0; i < height; i++) {
20693 mask = mask0;
20694 offset = offset0;
20695
20696 for (j = 0; j < width; j++) {
20697 if (bitmap[i][j]) {
20698 buffer[offset] |= mask;
20699 }
20700
20701 mask >>= 1;
20702
20703 if (!mask) {
20704 mask = 128;
20705 offset++;
20706 }
20707 }
20708
20709 offset0 += rowSize;
20710 }
20711
20712 break;
20713
20714 case 2:
20715 for (i = 0; i < height; i++) {
20716 mask = mask0;
20717 offset = offset0;
20718
20719 for (j = 0; j < width; j++) {
20720 if (bitmap[i][j]) {
20721 buffer[offset] ^= mask;
20722 }
20723
20724 mask >>= 1;
20725
20726 if (!mask) {
20727 mask = 128;
20728 offset++;
20729 }
20730 }
20731
20732 offset0 += rowSize;
20733 }
20734
20735 break;
20736
20737 default:
20738 throw new Jbig2Error("operator ".concat(combinationOperator, " is not supported"));
20739 }
20740 },
20741 onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) {
20742 var regionInfo = region.info;
20743 var decodingContext = new DecodingContext(data, start, end);
20744 var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);
20745 this.drawBitmap(regionInfo, bitmap);
20746 },
20747 onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {
20748 this.onImmediateGenericRegion.apply(this, arguments);
20749 },
20750 onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {
20751 var huffmanTables, huffmanInput;
20752
20753 if (dictionary.huffman) {
20754 huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);
20755 huffmanInput = new Reader(data, start, end);
20756 }
20757
20758 var symbols = this.symbols;
20759
20760 if (!symbols) {
20761 this.symbols = symbols = {};
20762 }
20763
20764 var inputSymbols = [];
20765
20766 for (var i = 0, ii = referredSegments.length; i < ii; i++) {
20767 var referredSymbols = symbols[referredSegments[i]];
20768
20769 if (referredSymbols) {
20770 inputSymbols = inputSymbols.concat(referredSymbols);
20771 }
20772 }
20773
20774 var decodingContext = new DecodingContext(data, start, end);
20775 symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);
20776 },
20777 onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) {
20778 var regionInfo = region.info;
20779 var huffmanTables, huffmanInput;
20780 var symbols = this.symbols;
20781 var inputSymbols = [];
20782
20783 for (var i = 0, ii = referredSegments.length; i < ii; i++) {
20784 var referredSymbols = symbols[referredSegments[i]];
20785
20786 if (referredSymbols) {
20787 inputSymbols = inputSymbols.concat(referredSymbols);
20788 }
20789 }
20790
20791 var symbolCodeLength = (0, _util.log2)(inputSymbols.length);
20792
20793 if (region.huffman) {
20794 huffmanInput = new Reader(data, start, end);
20795 huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);
20796 }
20797
20798 var decodingContext = new DecodingContext(data, start, end);
20799 var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);
20800 this.drawBitmap(regionInfo, bitmap);
20801 },
20802 onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {
20803 this.onImmediateTextRegion.apply(this, arguments);
20804 },
20805 onPatternDictionary: function onPatternDictionary(dictionary, currentSegment, data, start, end) {
20806 var patterns = this.patterns;
20807
20808 if (!patterns) {
20809 this.patterns = patterns = {};
20810 }
20811
20812 var decodingContext = new DecodingContext(data, start, end);
20813 patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);
20814 },
20815 onImmediateHalftoneRegion: function onImmediateHalftoneRegion(region, referredSegments, data, start, end) {
20816 var patterns = this.patterns[referredSegments[0]];
20817 var regionInfo = region.info;
20818 var decodingContext = new DecodingContext(data, start, end);
20819 var bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);
20820 this.drawBitmap(regionInfo, bitmap);
20821 },
20822 onImmediateLosslessHalftoneRegion: function onImmediateLosslessHalftoneRegion() {
20823 this.onImmediateHalftoneRegion.apply(this, arguments);
20824 },
20825 onTables: function onTables(currentSegment, data, start, end) {
20826 var customTables = this.customTables;
20827
20828 if (!customTables) {
20829 this.customTables = customTables = {};
20830 }
20831
20832 customTables[currentSegment] = decodeTablesSegment(data, start, end);
20833 }
20834 };
20835
20836 function HuffmanLine(lineData) {
20837 if (lineData.length === 2) {
20838 this.isOOB = true;
20839 this.rangeLow = 0;
20840 this.prefixLength = lineData[0];
20841 this.rangeLength = 0;
20842 this.prefixCode = lineData[1];
20843 this.isLowerRange = false;
20844 } else {
20845 this.isOOB = false;
20846 this.rangeLow = lineData[0];
20847 this.prefixLength = lineData[1];
20848 this.rangeLength = lineData[2];
20849 this.prefixCode = lineData[3];
20850 this.isLowerRange = lineData[4] === 'lower';
20851 }
20852 }
20853
20854 function HuffmanTreeNode(line) {
20855 this.children = [];
20856
20857 if (line) {
20858 this.isLeaf = true;
20859 this.rangeLength = line.rangeLength;
20860 this.rangeLow = line.rangeLow;
20861 this.isLowerRange = line.isLowerRange;
20862 this.isOOB = line.isOOB;
20863 } else {
20864 this.isLeaf = false;
20865 }
20866 }
20867
20868 HuffmanTreeNode.prototype = {
20869 buildTree: function buildTree(line, shift) {
20870 var bit = line.prefixCode >> shift & 1;
20871
20872 if (shift <= 0) {
20873 this.children[bit] = new HuffmanTreeNode(line);
20874 } else {
20875 var node = this.children[bit];
20876
20877 if (!node) {
20878 this.children[bit] = node = new HuffmanTreeNode(null);
20879 }
20880
20881 node.buildTree(line, shift - 1);
20882 }
20883 },
20884 decodeNode: function decodeNode(reader) {
20885 if (this.isLeaf) {
20886 if (this.isOOB) {
20887 return null;
20888 }
20889
20890 var htOffset = reader.readBits(this.rangeLength);
20891 return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);
20892 }
20893
20894 var node = this.children[reader.readBit()];
20895
20896 if (!node) {
20897 throw new Jbig2Error('invalid Huffman data');
20898 }
20899
20900 return node.decodeNode(reader);
20901 }
20902 };
20903
20904 function HuffmanTable(lines, prefixCodesDone) {
20905 if (!prefixCodesDone) {
20906 this.assignPrefixCodes(lines);
20907 }
20908
20909 this.rootNode = new HuffmanTreeNode(null);
20910 var i,
20911 ii = lines.length,
20912 line;
20913
20914 for (i = 0; i < ii; i++) {
20915 line = lines[i];
20916
20917 if (line.prefixLength > 0) {
20918 this.rootNode.buildTree(line, line.prefixLength - 1);
20919 }
20920 }
20921 }
20922
20923 HuffmanTable.prototype = {
20924 decode: function decode(reader) {
20925 return this.rootNode.decodeNode(reader);
20926 },
20927 assignPrefixCodes: function assignPrefixCodes(lines) {
20928 var linesLength = lines.length,
20929 prefixLengthMax = 0,
20930 i;
20931
20932 for (i = 0; i < linesLength; i++) {
20933 prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);
20934 }
20935
20936 var histogram = new Uint32Array(prefixLengthMax + 1);
20937
20938 for (i = 0; i < linesLength; i++) {
20939 histogram[lines[i].prefixLength]++;
20940 }
20941
20942 var currentLength = 1,
20943 firstCode = 0,
20944 currentCode,
20945 currentTemp,
20946 line;
20947 histogram[0] = 0;
20948
20949 while (currentLength <= prefixLengthMax) {
20950 firstCode = firstCode + histogram[currentLength - 1] << 1;
20951 currentCode = firstCode;
20952 currentTemp = 0;
20953
20954 while (currentTemp < linesLength) {
20955 line = lines[currentTemp];
20956
20957 if (line.prefixLength === currentLength) {
20958 line.prefixCode = currentCode;
20959 currentCode++;
20960 }
20961
20962 currentTemp++;
20963 }
20964
20965 currentLength++;
20966 }
20967 }
20968 };
20969
20970 function decodeTablesSegment(data, start, end) {
20971 var flags = data[start];
20972 var lowestValue = (0, _util.readUint32)(data, start + 1) & 0xFFFFFFFF;
20973 var highestValue = (0, _util.readUint32)(data, start + 5) & 0xFFFFFFFF;
20974 var reader = new Reader(data, start + 9, end);
20975 var prefixSizeBits = (flags >> 1 & 7) + 1;
20976 var rangeSizeBits = (flags >> 4 & 7) + 1;
20977 var lines = [];
20978 var prefixLength,
20979 rangeLength,
20980 currentRangeLow = lowestValue;
20981
20982 do {
20983 prefixLength = reader.readBits(prefixSizeBits);
20984 rangeLength = reader.readBits(rangeSizeBits);
20985 lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));
20986 currentRangeLow += 1 << rangeLength;
20987 } while (currentRangeLow < highestValue);
20988
20989 prefixLength = reader.readBits(prefixSizeBits);
20990 lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, 'lower']));
20991 prefixLength = reader.readBits(prefixSizeBits);
20992 lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));
20993
20994 if (flags & 1) {
20995 prefixLength = reader.readBits(prefixSizeBits);
20996 lines.push(new HuffmanLine([prefixLength, 0]));
20997 }
20998
20999 return new HuffmanTable(lines, false);
21000 }
21001
21002 var standardTablesCache = {};
21003
21004 function getStandardTable(number) {
21005 var table = standardTablesCache[number];
21006
21007 if (table) {
21008 return table;
21009 }
21010
21011 var lines;
21012
21013 switch (number) {
21014 case 1:
21015 lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];
21016 break;
21017
21018 case 2:
21019 lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [75, 6, 32, 0x3E], [6, 0x3F]];
21020 break;
21021
21022 case 3:
21023 lines = [[-256, 8, 8, 0xFE], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xE], [11, 5, 6, 0x1E], [-257, 8, 32, 0xFF, 'lower'], [75, 7, 32, 0x7E], [6, 0x3E]];
21024 break;
21025
21026 case 4:
21027 lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [76, 5, 32, 0x1F]];
21028 break;
21029
21030 case 5:
21031 lines = [[-255, 7, 8, 0x7E], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xE], [12, 5, 6, 0x1E], [-256, 7, 32, 0x7F, 'lower'], [76, 6, 32, 0x3E]];
21032 break;
21033
21034 case 6:
21035 lines = [[-2048, 5, 10, 0x1C], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xA], [-128, 5, 6, 0x1D], [-64, 5, 5, 0x1E], [-32, 4, 5, 0xB], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xC], [1024, 4, 10, 0xD], [-2049, 6, 32, 0x3E, 'lower'], [2048, 6, 32, 0x3F]];
21036 break;
21037
21038 case 7:
21039 lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1A], [-64, 5, 5, 0x1B], [-32, 4, 5, 0xA], [0, 4, 5, 0xB], [32, 5, 5, 0x1C], [64, 5, 6, 0x1D], [128, 4, 7, 0xC], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1E, 'lower'], [2048, 5, 32, 0x1F]];
21040 break;
21041
21042 case 8:
21043 lines = [[-15, 8, 3, 0xFC], [-7, 9, 1, 0x1FC], [-5, 8, 1, 0xFD], [-3, 9, 0, 0x1FD], [-2, 7, 0, 0x7C], [-1, 4, 0, 0xA], [0, 2, 1, 0x0], [2, 5, 0, 0x1A], [3, 6, 0, 0x3A], [4, 3, 4, 0x4], [20, 6, 1, 0x3B], [22, 4, 4, 0xB], [38, 4, 5, 0xC], [70, 5, 6, 0x1B], [134, 5, 7, 0x1C], [262, 6, 7, 0x3C], [390, 7, 8, 0x7D], [646, 6, 10, 0x3D], [-16, 9, 32, 0x1FE, 'lower'], [1670, 9, 32, 0x1FF], [2, 0x1]];
21044 break;
21045
21046 case 9:
21047 lines = [[-31, 8, 4, 0xFC], [-15, 9, 2, 0x1FC], [-11, 8, 2, 0xFD], [-7, 9, 1, 0x1FD], [-5, 7, 1, 0x7C], [-3, 4, 1, 0xA], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1A], [5, 6, 1, 0x3A], [7, 3, 5, 0x4], [39, 6, 2, 0x3B], [43, 4, 5, 0xB], [75, 4, 6, 0xC], [139, 5, 7, 0x1B], [267, 5, 8, 0x1C], [523, 6, 8, 0x3C], [779, 7, 9, 0x7D], [1291, 6, 11, 0x3D], [-32, 9, 32, 0x1FE, 'lower'], [3339, 9, 32, 0x1FF], [2, 0x0]];
21048 break;
21049
21050 case 10:
21051 lines = [[-21, 7, 4, 0x7A], [-5, 8, 0, 0xFC], [-4, 7, 0, 0x7B], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7C], [5, 8, 0, 0xFD], [6, 2, 6, 0x1], [70, 5, 5, 0x1A], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3A], [582, 6, 9, 0x3B], [1094, 6, 10, 0x3C], [2118, 7, 11, 0x7D], [-22, 8, 32, 0xFE, 'lower'], [4166, 8, 32, 0xFF], [2, 0x2]];
21052 break;
21053
21054 case 11:
21055 lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xC], [5, 4, 1, 0xD], [7, 5, 1, 0x1C], [9, 5, 2, 0x1D], [13, 6, 2, 0x3C], [17, 7, 2, 0x7A], [21, 7, 3, 0x7B], [29, 7, 4, 0x7C], [45, 7, 5, 0x7D], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];
21056 break;
21057
21058 case 12:
21059 lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1C], [6, 5, 1, 0x1D], [8, 6, 1, 0x3C], [10, 7, 0, 0x7A], [11, 7, 1, 0x7B], [13, 7, 2, 0x7C], [17, 7, 3, 0x7D], [25, 7, 4, 0x7E], [41, 8, 5, 0xFE], [73, 8, 32, 0xFF]];
21060 break;
21061
21062 case 13:
21063 lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xC], [4, 5, 0, 0x1C], [5, 4, 1, 0xD], [7, 3, 3, 0x5], [15, 6, 1, 0x3A], [17, 6, 2, 0x3B], [21, 6, 3, 0x3C], [29, 6, 4, 0x3D], [45, 6, 5, 0x3E], [77, 7, 6, 0x7E], [141, 7, 32, 0x7F]];
21064 break;
21065
21066 case 14:
21067 lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];
21068 break;
21069
21070 case 15:
21071 lines = [[-24, 7, 4, 0x7C], [-8, 6, 2, 0x3C], [-4, 5, 1, 0x1C], [-2, 4, 0, 0xC], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xD], [3, 5, 1, 0x1D], [5, 6, 2, 0x3D], [9, 7, 4, 0x7D], [-25, 7, 32, 0x7E, 'lower'], [25, 7, 32, 0x7F]];
21072 break;
21073
21074 default:
21075 throw new Jbig2Error("standard table B.".concat(number, " does not exist"));
21076 }
21077
21078 var length = lines.length,
21079 i;
21080
21081 for (i = 0; i < length; i++) {
21082 lines[i] = new HuffmanLine(lines[i]);
21083 }
21084
21085 table = new HuffmanTable(lines, true);
21086 standardTablesCache[number] = table;
21087 return table;
21088 }
21089
21090 function Reader(data, start, end) {
21091 this.data = data;
21092 this.start = start;
21093 this.end = end;
21094 this.position = start;
21095 this.shift = -1;
21096 this.currentByte = 0;
21097 }
21098
21099 Reader.prototype = {
21100 readBit: function readBit() {
21101 if (this.shift < 0) {
21102 if (this.position >= this.end) {
21103 throw new Jbig2Error('end of data while reading bit');
21104 }
21105
21106 this.currentByte = this.data[this.position++];
21107 this.shift = 7;
21108 }
21109
21110 var bit = this.currentByte >> this.shift & 1;
21111 this.shift--;
21112 return bit;
21113 },
21114 readBits: function readBits(numBits) {
21115 var result = 0,
21116 i;
21117
21118 for (i = numBits - 1; i >= 0; i--) {
21119 result |= this.readBit() << i;
21120 }
21121
21122 return result;
21123 },
21124 byteAlign: function byteAlign() {
21125 this.shift = -1;
21126 },
21127 next: function next() {
21128 if (this.position >= this.end) {
21129 return -1;
21130 }
21131
21132 return this.data[this.position++];
21133 }
21134 };
21135
21136 function getCustomHuffmanTable(index, referredTo, customTables) {
21137 var currentIndex = 0,
21138 i,
21139 ii = referredTo.length,
21140 table;
21141
21142 for (i = 0; i < ii; i++) {
21143 table = customTables[referredTo[i]];
21144
21145 if (table) {
21146 if (index === currentIndex) {
21147 return table;
21148 }
21149
21150 currentIndex++;
21151 }
21152 }
21153
21154 throw new Jbig2Error('can\'t find custom Huffman table');
21155 }
21156
21157 function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {
21158 var codes = [],
21159 i,
21160 codeLength;
21161
21162 for (i = 0; i <= 34; i++) {
21163 codeLength = reader.readBits(4);
21164 codes.push(new HuffmanLine([i, codeLength, 0, 0]));
21165 }
21166
21167 var runCodesTable = new HuffmanTable(codes, false);
21168 codes.length = 0;
21169
21170 for (i = 0; i < numberOfSymbols;) {
21171 codeLength = runCodesTable.decode(reader);
21172
21173 if (codeLength >= 32) {
21174 var repeatedLength = void 0,
21175 numberOfRepeats = void 0,
21176 j = void 0;
21177
21178 switch (codeLength) {
21179 case 32:
21180 if (i === 0) {
21181 throw new Jbig2Error('no previous value in symbol ID table');
21182 }
21183
21184 numberOfRepeats = reader.readBits(2) + 3;
21185 repeatedLength = codes[i - 1].prefixLength;
21186 break;
21187
21188 case 33:
21189 numberOfRepeats = reader.readBits(3) + 3;
21190 repeatedLength = 0;
21191 break;
21192
21193 case 34:
21194 numberOfRepeats = reader.readBits(7) + 11;
21195 repeatedLength = 0;
21196 break;
21197
21198 default:
21199 throw new Jbig2Error('invalid code length in symbol ID table');
21200 }
21201
21202 for (j = 0; j < numberOfRepeats; j++) {
21203 codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));
21204 i++;
21205 }
21206 } else {
21207 codes.push(new HuffmanLine([i, codeLength, 0, 0]));
21208 i++;
21209 }
21210 }
21211
21212 reader.byteAlign();
21213 var symbolIDTable = new HuffmanTable(codes, false);
21214 var customIndex = 0,
21215 tableFirstS,
21216 tableDeltaS,
21217 tableDeltaT;
21218
21219 switch (textRegion.huffmanFS) {
21220 case 0:
21221 case 1:
21222 tableFirstS = getStandardTable(textRegion.huffmanFS + 6);
21223 break;
21224
21225 case 3:
21226 tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);
21227 customIndex++;
21228 break;
21229
21230 default:
21231 throw new Jbig2Error('invalid Huffman FS selector');
21232 }
21233
21234 switch (textRegion.huffmanDS) {
21235 case 0:
21236 case 1:
21237 case 2:
21238 tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);
21239 break;
21240
21241 case 3:
21242 tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);
21243 customIndex++;
21244 break;
21245
21246 default:
21247 throw new Jbig2Error('invalid Huffman DS selector');
21248 }
21249
21250 switch (textRegion.huffmanDT) {
21251 case 0:
21252 case 1:
21253 case 2:
21254 tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);
21255 break;
21256
21257 case 3:
21258 tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);
21259 customIndex++;
21260 break;
21261
21262 default:
21263 throw new Jbig2Error('invalid Huffman DT selector');
21264 }
21265
21266 if (textRegion.refinement) {
21267 throw new Jbig2Error('refinement with Huffman is not supported');
21268 }
21269
21270 return {
21271 symbolIDTable: symbolIDTable,
21272 tableFirstS: tableFirstS,
21273 tableDeltaS: tableDeltaS,
21274 tableDeltaT: tableDeltaT
21275 };
21276 }
21277
21278 function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {
21279 var customIndex = 0,
21280 tableDeltaHeight,
21281 tableDeltaWidth;
21282
21283 switch (dictionary.huffmanDHSelector) {
21284 case 0:
21285 case 1:
21286 tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);
21287 break;
21288
21289 case 3:
21290 tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);
21291 customIndex++;
21292 break;
21293
21294 default:
21295 throw new Jbig2Error('invalid Huffman DH selector');
21296 }
21297
21298 switch (dictionary.huffmanDWSelector) {
21299 case 0:
21300 case 1:
21301 tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);
21302 break;
21303
21304 case 3:
21305 tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);
21306 customIndex++;
21307 break;
21308
21309 default:
21310 throw new Jbig2Error('invalid Huffman DW selector');
21311 }
21312
21313 var tableBitmapSize, tableAggregateInstances;
21314
21315 if (dictionary.bitmapSizeSelector) {
21316 tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);
21317 customIndex++;
21318 } else {
21319 tableBitmapSize = getStandardTable(1);
21320 }
21321
21322 if (dictionary.aggregationInstancesSelector) {
21323 tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);
21324 } else {
21325 tableAggregateInstances = getStandardTable(1);
21326 }
21327
21328 return {
21329 tableDeltaHeight: tableDeltaHeight,
21330 tableDeltaWidth: tableDeltaWidth,
21331 tableBitmapSize: tableBitmapSize,
21332 tableAggregateInstances: tableAggregateInstances
21333 };
21334 }
21335
21336 function readUncompressedBitmap(reader, width, height) {
21337 var bitmap = [],
21338 x,
21339 y,
21340 row;
21341
21342 for (y = 0; y < height; y++) {
21343 row = new Uint8Array(width);
21344 bitmap.push(row);
21345
21346 for (x = 0; x < width; x++) {
21347 row[x] = reader.readBit();
21348 }
21349
21350 reader.byteAlign();
21351 }
21352
21353 return bitmap;
21354 }
21355
21356 function decodeMMRBitmap(input, width, height, endOfBlock) {
21357 var params = {
21358 K: -1,
21359 Columns: width,
21360 Rows: height,
21361 BlackIs1: true,
21362 EndOfBlock: endOfBlock
21363 };
21364 var decoder = new _ccitt.CCITTFaxDecoder(input, params);
21365 var bitmap = [],
21366 x,
21367 y,
21368 row,
21369 currentByte,
21370 shift,
21371 eof = false;
21372
21373 for (y = 0; y < height; y++) {
21374 row = new Uint8Array(width);
21375 bitmap.push(row);
21376 shift = -1;
21377
21378 for (x = 0; x < width; x++) {
21379 if (shift < 0) {
21380 currentByte = decoder.readNextChar();
21381
21382 if (currentByte === -1) {
21383 currentByte = 0;
21384 eof = true;
21385 }
21386
21387 shift = 7;
21388 }
21389
21390 row[x] = currentByte >> shift & 1;
21391 shift--;
21392 }
21393 }
21394
21395 if (endOfBlock && !eof) {
21396 var lookForEOFLimit = 5;
21397
21398 for (var i = 0; i < lookForEOFLimit; i++) {
21399 if (decoder.readNextChar() === -1) {
21400 break;
21401 }
21402 }
21403 }
21404
21405 return bitmap;
21406 }
21407
21408 function Jbig2Image() {}
21409
21410 Jbig2Image.prototype = {
21411 parseChunks: function parseChunks(chunks) {
21412 return parseJbig2Chunks(chunks);
21413 },
21414 parse: function parse(data) {
21415 var _parseJbig = parseJbig2(data),
21416 imgData = _parseJbig.imgData,
21417 width = _parseJbig.width,
21418 height = _parseJbig.height;
21419
21420 this.width = width;
21421 this.height = height;
21422 return imgData;
21423 }
21424 };
21425 return Jbig2Image;
21426}();
21427
21428exports.Jbig2Image = Jbig2Image;
21429
21430/***/ }),
21431/* 163 */
21432/***/ (function(module, exports, __w_pdfjs_require__) {
21433
21434"use strict";
21435
21436
21437Object.defineProperty(exports, "__esModule", {
21438 value: true
21439});
21440exports.ArithmeticDecoder = void 0;
21441
21442function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21443
21444function _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); } }
21445
21446function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
21447
21448var QeTable = [{
21449 qe: 0x5601,
21450 nmps: 1,
21451 nlps: 1,
21452 switchFlag: 1
21453}, {
21454 qe: 0x3401,
21455 nmps: 2,
21456 nlps: 6,
21457 switchFlag: 0
21458}, {
21459 qe: 0x1801,
21460 nmps: 3,
21461 nlps: 9,
21462 switchFlag: 0
21463}, {
21464 qe: 0x0AC1,
21465 nmps: 4,
21466 nlps: 12,
21467 switchFlag: 0
21468}, {
21469 qe: 0x0521,
21470 nmps: 5,
21471 nlps: 29,
21472 switchFlag: 0
21473}, {
21474 qe: 0x0221,
21475 nmps: 38,
21476 nlps: 33,
21477 switchFlag: 0
21478}, {
21479 qe: 0x5601,
21480 nmps: 7,
21481 nlps: 6,
21482 switchFlag: 1
21483}, {
21484 qe: 0x5401,
21485 nmps: 8,
21486 nlps: 14,
21487 switchFlag: 0
21488}, {
21489 qe: 0x4801,
21490 nmps: 9,
21491 nlps: 14,
21492 switchFlag: 0
21493}, {
21494 qe: 0x3801,
21495 nmps: 10,
21496 nlps: 14,
21497 switchFlag: 0
21498}, {
21499 qe: 0x3001,
21500 nmps: 11,
21501 nlps: 17,
21502 switchFlag: 0
21503}, {
21504 qe: 0x2401,
21505 nmps: 12,
21506 nlps: 18,
21507 switchFlag: 0
21508}, {
21509 qe: 0x1C01,
21510 nmps: 13,
21511 nlps: 20,
21512 switchFlag: 0
21513}, {
21514 qe: 0x1601,
21515 nmps: 29,
21516 nlps: 21,
21517 switchFlag: 0
21518}, {
21519 qe: 0x5601,
21520 nmps: 15,
21521 nlps: 14,
21522 switchFlag: 1
21523}, {
21524 qe: 0x5401,
21525 nmps: 16,
21526 nlps: 14,
21527 switchFlag: 0
21528}, {
21529 qe: 0x5101,
21530 nmps: 17,
21531 nlps: 15,
21532 switchFlag: 0
21533}, {
21534 qe: 0x4801,
21535 nmps: 18,
21536 nlps: 16,
21537 switchFlag: 0
21538}, {
21539 qe: 0x3801,
21540 nmps: 19,
21541 nlps: 17,
21542 switchFlag: 0
21543}, {
21544 qe: 0x3401,
21545 nmps: 20,
21546 nlps: 18,
21547 switchFlag: 0
21548}, {
21549 qe: 0x3001,
21550 nmps: 21,
21551 nlps: 19,
21552 switchFlag: 0
21553}, {
21554 qe: 0x2801,
21555 nmps: 22,
21556 nlps: 19,
21557 switchFlag: 0
21558}, {
21559 qe: 0x2401,
21560 nmps: 23,
21561 nlps: 20,
21562 switchFlag: 0
21563}, {
21564 qe: 0x2201,
21565 nmps: 24,
21566 nlps: 21,
21567 switchFlag: 0
21568}, {
21569 qe: 0x1C01,
21570 nmps: 25,
21571 nlps: 22,
21572 switchFlag: 0
21573}, {
21574 qe: 0x1801,
21575 nmps: 26,
21576 nlps: 23,
21577 switchFlag: 0
21578}, {
21579 qe: 0x1601,
21580 nmps: 27,
21581 nlps: 24,
21582 switchFlag: 0
21583}, {
21584 qe: 0x1401,
21585 nmps: 28,
21586 nlps: 25,
21587 switchFlag: 0
21588}, {
21589 qe: 0x1201,
21590 nmps: 29,
21591 nlps: 26,
21592 switchFlag: 0
21593}, {
21594 qe: 0x1101,
21595 nmps: 30,
21596 nlps: 27,
21597 switchFlag: 0
21598}, {
21599 qe: 0x0AC1,
21600 nmps: 31,
21601 nlps: 28,
21602 switchFlag: 0
21603}, {
21604 qe: 0x09C1,
21605 nmps: 32,
21606 nlps: 29,
21607 switchFlag: 0
21608}, {
21609 qe: 0x08A1,
21610 nmps: 33,
21611 nlps: 30,
21612 switchFlag: 0
21613}, {
21614 qe: 0x0521,
21615 nmps: 34,
21616 nlps: 31,
21617 switchFlag: 0
21618}, {
21619 qe: 0x0441,
21620 nmps: 35,
21621 nlps: 32,
21622 switchFlag: 0
21623}, {
21624 qe: 0x02A1,
21625 nmps: 36,
21626 nlps: 33,
21627 switchFlag: 0
21628}, {
21629 qe: 0x0221,
21630 nmps: 37,
21631 nlps: 34,
21632 switchFlag: 0
21633}, {
21634 qe: 0x0141,
21635 nmps: 38,
21636 nlps: 35,
21637 switchFlag: 0
21638}, {
21639 qe: 0x0111,
21640 nmps: 39,
21641 nlps: 36,
21642 switchFlag: 0
21643}, {
21644 qe: 0x0085,
21645 nmps: 40,
21646 nlps: 37,
21647 switchFlag: 0
21648}, {
21649 qe: 0x0049,
21650 nmps: 41,
21651 nlps: 38,
21652 switchFlag: 0
21653}, {
21654 qe: 0x0025,
21655 nmps: 42,
21656 nlps: 39,
21657 switchFlag: 0
21658}, {
21659 qe: 0x0015,
21660 nmps: 43,
21661 nlps: 40,
21662 switchFlag: 0
21663}, {
21664 qe: 0x0009,
21665 nmps: 44,
21666 nlps: 41,
21667 switchFlag: 0
21668}, {
21669 qe: 0x0005,
21670 nmps: 45,
21671 nlps: 42,
21672 switchFlag: 0
21673}, {
21674 qe: 0x0001,
21675 nmps: 45,
21676 nlps: 43,
21677 switchFlag: 0
21678}, {
21679 qe: 0x5601,
21680 nmps: 46,
21681 nlps: 46,
21682 switchFlag: 0
21683}];
21684
21685var ArithmeticDecoder =
21686/*#__PURE__*/
21687function () {
21688 function ArithmeticDecoder(data, start, end) {
21689 _classCallCheck(this, ArithmeticDecoder);
21690
21691 this.data = data;
21692 this.bp = start;
21693 this.dataEnd = end;
21694 this.chigh = data[start];
21695 this.clow = 0;
21696 this.byteIn();
21697 this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F;
21698 this.clow = this.clow << 7 & 0xFFFF;
21699 this.ct -= 7;
21700 this.a = 0x8000;
21701 }
21702
21703 _createClass(ArithmeticDecoder, [{
21704 key: "byteIn",
21705 value: function byteIn() {
21706 var data = this.data;
21707 var bp = this.bp;
21708
21709 if (data[bp] === 0xFF) {
21710 if (data[bp + 1] > 0x8F) {
21711 this.clow += 0xFF00;
21712 this.ct = 8;
21713 } else {
21714 bp++;
21715 this.clow += data[bp] << 9;
21716 this.ct = 7;
21717 this.bp = bp;
21718 }
21719 } else {
21720 bp++;
21721 this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00;
21722 this.ct = 8;
21723 this.bp = bp;
21724 }
21725
21726 if (this.clow > 0xFFFF) {
21727 this.chigh += this.clow >> 16;
21728 this.clow &= 0xFFFF;
21729 }
21730 }
21731 }, {
21732 key: "readBit",
21733 value: function readBit(contexts, pos) {
21734 var cx_index = contexts[pos] >> 1,
21735 cx_mps = contexts[pos] & 1;
21736 var qeTableIcx = QeTable[cx_index];
21737 var qeIcx = qeTableIcx.qe;
21738 var d;
21739 var a = this.a - qeIcx;
21740
21741 if (this.chigh < qeIcx) {
21742 if (a < qeIcx) {
21743 a = qeIcx;
21744 d = cx_mps;
21745 cx_index = qeTableIcx.nmps;
21746 } else {
21747 a = qeIcx;
21748 d = 1 ^ cx_mps;
21749
21750 if (qeTableIcx.switchFlag === 1) {
21751 cx_mps = d;
21752 }
21753
21754 cx_index = qeTableIcx.nlps;
21755 }
21756 } else {
21757 this.chigh -= qeIcx;
21758
21759 if ((a & 0x8000) !== 0) {
21760 this.a = a;
21761 return cx_mps;
21762 }
21763
21764 if (a < qeIcx) {
21765 d = 1 ^ cx_mps;
21766
21767 if (qeTableIcx.switchFlag === 1) {
21768 cx_mps = d;
21769 }
21770
21771 cx_index = qeTableIcx.nlps;
21772 } else {
21773 d = cx_mps;
21774 cx_index = qeTableIcx.nmps;
21775 }
21776 }
21777
21778 do {
21779 if (this.ct === 0) {
21780 this.byteIn();
21781 }
21782
21783 a <<= 1;
21784 this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1;
21785 this.clow = this.clow << 1 & 0xFFFF;
21786 this.ct--;
21787 } while ((a & 0x8000) === 0);
21788
21789 this.a = a;
21790 contexts[pos] = cx_index << 1 | cx_mps;
21791 return d;
21792 }
21793 }]);
21794
21795 return ArithmeticDecoder;
21796}();
21797
21798exports.ArithmeticDecoder = ArithmeticDecoder;
21799
21800/***/ }),
21801/* 164 */
21802/***/ (function(module, exports, __w_pdfjs_require__) {
21803
21804"use strict";
21805
21806
21807Object.defineProperty(exports, "__esModule", {
21808 value: true
21809});
21810exports.JpegStream = void 0;
21811
21812var _util = __w_pdfjs_require__(5);
21813
21814var _stream = __w_pdfjs_require__(158);
21815
21816var _primitives = __w_pdfjs_require__(151);
21817
21818var _jpg = __w_pdfjs_require__(165);
21819
21820var JpegStream = function JpegStreamClosure() {
21821 function JpegStream(stream, maybeLength, dict, params) {
21822 var ch;
21823
21824 while ((ch = stream.getByte()) !== -1) {
21825 if (ch === 0xFF) {
21826 stream.skip(-1);
21827 break;
21828 }
21829 }
21830
21831 this.stream = stream;
21832 this.maybeLength = maybeLength;
21833 this.dict = dict;
21834 this.params = params;
21835
21836 _stream.DecodeStream.call(this, maybeLength);
21837 }
21838
21839 JpegStream.prototype = Object.create(_stream.DecodeStream.prototype);
21840 Object.defineProperty(JpegStream.prototype, 'bytes', {
21841 get: function JpegStream_bytes() {
21842 return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
21843 },
21844 configurable: true
21845 });
21846
21847 JpegStream.prototype.ensureBuffer = function (requested) {};
21848
21849 JpegStream.prototype.readBlock = function () {
21850 if (this.eof) {
21851 return;
21852 }
21853
21854 var jpegOptions = {
21855 decodeTransform: undefined,
21856 colorTransform: undefined
21857 };
21858 var decodeArr = this.dict.getArray('Decode', 'D');
21859
21860 if (this.forceRGB && Array.isArray(decodeArr)) {
21861 var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
21862 var decodeArrLength = decodeArr.length;
21863 var transform = new Int32Array(decodeArrLength);
21864 var transformNeeded = false;
21865 var maxValue = (1 << bitsPerComponent) - 1;
21866
21867 for (var i = 0; i < decodeArrLength; i += 2) {
21868 transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;
21869 transform[i + 1] = decodeArr[i] * maxValue | 0;
21870
21871 if (transform[i] !== 256 || transform[i + 1] !== 0) {
21872 transformNeeded = true;
21873 }
21874 }
21875
21876 if (transformNeeded) {
21877 jpegOptions.decodeTransform = transform;
21878 }
21879 }
21880
21881 if ((0, _primitives.isDict)(this.params)) {
21882 var colorTransform = this.params.get('ColorTransform');
21883
21884 if (Number.isInteger(colorTransform)) {
21885 jpegOptions.colorTransform = colorTransform;
21886 }
21887 }
21888
21889 var jpegImage = new _jpg.JpegImage(jpegOptions);
21890 jpegImage.parse(this.bytes);
21891 var data = jpegImage.getData({
21892 width: this.drawWidth,
21893 height: this.drawHeight,
21894 forceRGB: this.forceRGB,
21895 isSourcePDF: true
21896 });
21897 this.buffer = data;
21898 this.bufferLength = data.length;
21899 this.eof = true;
21900 };
21901
21902 JpegStream.prototype.getIR = function () {
21903 var forceDataSchema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
21904 return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema);
21905 };
21906
21907 return JpegStream;
21908}();
21909
21910exports.JpegStream = JpegStream;
21911
21912/***/ }),
21913/* 165 */
21914/***/ (function(module, exports, __w_pdfjs_require__) {
21915
21916"use strict";
21917
21918
21919Object.defineProperty(exports, "__esModule", {
21920 value: true
21921});
21922exports.JpegImage = void 0;
21923
21924var _util = __w_pdfjs_require__(5);
21925
21926function _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); }
21927
21928var JpegError = function JpegErrorClosure() {
21929 function JpegError(msg) {
21930 this.message = 'JPEG error: ' + msg;
21931 }
21932
21933 JpegError.prototype = new Error();
21934 JpegError.prototype.name = 'JpegError';
21935 JpegError.constructor = JpegError;
21936 return JpegError;
21937}();
21938
21939var DNLMarkerError = function DNLMarkerErrorClosure() {
21940 function DNLMarkerError(message, scanLines) {
21941 this.message = message;
21942 this.scanLines = scanLines;
21943 }
21944
21945 DNLMarkerError.prototype = new Error();
21946 DNLMarkerError.prototype.name = 'DNLMarkerError';
21947 DNLMarkerError.constructor = DNLMarkerError;
21948 return DNLMarkerError;
21949}();
21950
21951var EOIMarkerError = function EOIMarkerErrorClosure() {
21952 function EOIMarkerError(message) {
21953 this.message = message;
21954 }
21955
21956 EOIMarkerError.prototype = new Error();
21957 EOIMarkerError.prototype.name = 'EOIMarkerError';
21958 EOIMarkerError.constructor = EOIMarkerError;
21959 return EOIMarkerError;
21960}();
21961
21962var JpegImage = function JpegImageClosure() {
21963 var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);
21964 var dctCos1 = 4017;
21965 var dctSin1 = 799;
21966 var dctCos3 = 3406;
21967 var dctSin3 = 2276;
21968 var dctCos6 = 1567;
21969 var dctSin6 = 3784;
21970 var dctSqrt2 = 5793;
21971 var dctSqrt1d2 = 2896;
21972
21973 function JpegImage() {
21974 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
21975 _ref$decodeTransform = _ref.decodeTransform,
21976 decodeTransform = _ref$decodeTransform === void 0 ? null : _ref$decodeTransform,
21977 _ref$colorTransform = _ref.colorTransform,
21978 colorTransform = _ref$colorTransform === void 0 ? -1 : _ref$colorTransform;
21979
21980 this._decodeTransform = decodeTransform;
21981 this._colorTransform = colorTransform;
21982 }
21983
21984 function buildHuffmanTable(codeLengths, values) {
21985 var k = 0,
21986 code = [],
21987 i,
21988 j,
21989 length = 16;
21990
21991 while (length > 0 && !codeLengths[length - 1]) {
21992 length--;
21993 }
21994
21995 code.push({
21996 children: [],
21997 index: 0
21998 });
21999 var p = code[0],
22000 q;
22001
22002 for (i = 0; i < length; i++) {
22003 for (j = 0; j < codeLengths[i]; j++) {
22004 p = code.pop();
22005 p.children[p.index] = values[k];
22006
22007 while (p.index > 0) {
22008 p = code.pop();
22009 }
22010
22011 p.index++;
22012 code.push(p);
22013
22014 while (code.length <= i) {
22015 code.push(q = {
22016 children: [],
22017 index: 0
22018 });
22019 p.children[p.index] = q.children;
22020 p = q;
22021 }
22022
22023 k++;
22024 }
22025
22026 if (i + 1 < length) {
22027 code.push(q = {
22028 children: [],
22029 index: 0
22030 });
22031 p.children[p.index] = q.children;
22032 p = q;
22033 }
22034 }
22035
22036 return code[0].children;
22037 }
22038
22039 function getBlockBufferOffset(component, row, col) {
22040 return 64 * ((component.blocksPerLine + 1) * row + col);
22041 }
22042
22043 function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) {
22044 var parseDNLMarker = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
22045 var mcusPerLine = frame.mcusPerLine;
22046 var progressive = frame.progressive;
22047 var startOffset = offset,
22048 bitsData = 0,
22049 bitsCount = 0;
22050
22051 function readBit() {
22052 if (bitsCount > 0) {
22053 bitsCount--;
22054 return bitsData >> bitsCount & 1;
22055 }
22056
22057 bitsData = data[offset++];
22058
22059 if (bitsData === 0xFF) {
22060 var nextByte = data[offset++];
22061
22062 if (nextByte) {
22063 if (nextByte === 0xDC && parseDNLMarker) {
22064 offset += 2;
22065 var scanLines = data[offset++] << 8 | data[offset++];
22066
22067 if (scanLines > 0 && scanLines !== frame.scanLines) {
22068 throw new DNLMarkerError('Found DNL marker (0xFFDC) while parsing scan data', scanLines);
22069 }
22070 } else if (nextByte === 0xD9) {
22071 throw new EOIMarkerError('Found EOI marker (0xFFD9) while parsing scan data');
22072 }
22073
22074 throw new JpegError("unexpected marker ".concat((bitsData << 8 | nextByte).toString(16)));
22075 }
22076 }
22077
22078 bitsCount = 7;
22079 return bitsData >>> 7;
22080 }
22081
22082 function decodeHuffman(tree) {
22083 var node = tree;
22084
22085 while (true) {
22086 node = node[readBit()];
22087
22088 if (typeof node === 'number') {
22089 return node;
22090 }
22091
22092 if (_typeof(node) !== 'object') {
22093 throw new JpegError('invalid huffman sequence');
22094 }
22095 }
22096 }
22097
22098 function receive(length) {
22099 var n = 0;
22100
22101 while (length > 0) {
22102 n = n << 1 | readBit();
22103 length--;
22104 }
22105
22106 return n;
22107 }
22108
22109 function receiveAndExtend(length) {
22110 if (length === 1) {
22111 return readBit() === 1 ? 1 : -1;
22112 }
22113
22114 var n = receive(length);
22115
22116 if (n >= 1 << length - 1) {
22117 return n;
22118 }
22119
22120 return n + (-1 << length) + 1;
22121 }
22122
22123 function decodeBaseline(component, offset) {
22124 var t = decodeHuffman(component.huffmanTableDC);
22125 var diff = t === 0 ? 0 : receiveAndExtend(t);
22126 component.blockData[offset] = component.pred += diff;
22127 var k = 1;
22128
22129 while (k < 64) {
22130 var rs = decodeHuffman(component.huffmanTableAC);
22131 var s = rs & 15,
22132 r = rs >> 4;
22133
22134 if (s === 0) {
22135 if (r < 15) {
22136 break;
22137 }
22138
22139 k += 16;
22140 continue;
22141 }
22142
22143 k += r;
22144 var z = dctZigZag[k];
22145 component.blockData[offset + z] = receiveAndExtend(s);
22146 k++;
22147 }
22148 }
22149
22150 function decodeDCFirst(component, offset) {
22151 var t = decodeHuffman(component.huffmanTableDC);
22152 var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
22153 component.blockData[offset] = component.pred += diff;
22154 }
22155
22156 function decodeDCSuccessive(component, offset) {
22157 component.blockData[offset] |= readBit() << successive;
22158 }
22159
22160 var eobrun = 0;
22161
22162 function decodeACFirst(component, offset) {
22163 if (eobrun > 0) {
22164 eobrun--;
22165 return;
22166 }
22167
22168 var k = spectralStart,
22169 e = spectralEnd;
22170
22171 while (k <= e) {
22172 var rs = decodeHuffman(component.huffmanTableAC);
22173 var s = rs & 15,
22174 r = rs >> 4;
22175
22176 if (s === 0) {
22177 if (r < 15) {
22178 eobrun = receive(r) + (1 << r) - 1;
22179 break;
22180 }
22181
22182 k += 16;
22183 continue;
22184 }
22185
22186 k += r;
22187 var z = dctZigZag[k];
22188 component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive);
22189 k++;
22190 }
22191 }
22192
22193 var successiveACState = 0,
22194 successiveACNextValue;
22195
22196 function decodeACSuccessive(component, offset) {
22197 var k = spectralStart;
22198 var e = spectralEnd;
22199 var r = 0;
22200 var s;
22201 var rs;
22202
22203 while (k <= e) {
22204 var offsetZ = offset + dctZigZag[k];
22205 var sign = component.blockData[offsetZ] < 0 ? -1 : 1;
22206
22207 switch (successiveACState) {
22208 case 0:
22209 rs = decodeHuffman(component.huffmanTableAC);
22210 s = rs & 15;
22211 r = rs >> 4;
22212
22213 if (s === 0) {
22214 if (r < 15) {
22215 eobrun = receive(r) + (1 << r);
22216 successiveACState = 4;
22217 } else {
22218 r = 16;
22219 successiveACState = 1;
22220 }
22221 } else {
22222 if (s !== 1) {
22223 throw new JpegError('invalid ACn encoding');
22224 }
22225
22226 successiveACNextValue = receiveAndExtend(s);
22227 successiveACState = r ? 2 : 3;
22228 }
22229
22230 continue;
22231
22232 case 1:
22233 case 2:
22234 if (component.blockData[offsetZ]) {
22235 component.blockData[offsetZ] += sign * (readBit() << successive);
22236 } else {
22237 r--;
22238
22239 if (r === 0) {
22240 successiveACState = successiveACState === 2 ? 3 : 0;
22241 }
22242 }
22243
22244 break;
22245
22246 case 3:
22247 if (component.blockData[offsetZ]) {
22248 component.blockData[offsetZ] += sign * (readBit() << successive);
22249 } else {
22250 component.blockData[offsetZ] = successiveACNextValue << successive;
22251 successiveACState = 0;
22252 }
22253
22254 break;
22255
22256 case 4:
22257 if (component.blockData[offsetZ]) {
22258 component.blockData[offsetZ] += sign * (readBit() << successive);
22259 }
22260
22261 break;
22262 }
22263
22264 k++;
22265 }
22266
22267 if (successiveACState === 4) {
22268 eobrun--;
22269
22270 if (eobrun === 0) {
22271 successiveACState = 0;
22272 }
22273 }
22274 }
22275
22276 function decodeMcu(component, decode, mcu, row, col) {
22277 var mcuRow = mcu / mcusPerLine | 0;
22278 var mcuCol = mcu % mcusPerLine;
22279 var blockRow = mcuRow * component.v + row;
22280 var blockCol = mcuCol * component.h + col;
22281 var offset = getBlockBufferOffset(component, blockRow, blockCol);
22282 decode(component, offset);
22283 }
22284
22285 function decodeBlock(component, decode, mcu) {
22286 var blockRow = mcu / component.blocksPerLine | 0;
22287 var blockCol = mcu % component.blocksPerLine;
22288 var offset = getBlockBufferOffset(component, blockRow, blockCol);
22289 decode(component, offset);
22290 }
22291
22292 var componentsLength = components.length;
22293 var component, i, j, k, n;
22294 var decodeFn;
22295
22296 if (progressive) {
22297 if (spectralStart === 0) {
22298 decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
22299 } else {
22300 decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
22301 }
22302 } else {
22303 decodeFn = decodeBaseline;
22304 }
22305
22306 var mcu = 0,
22307 fileMarker;
22308 var mcuExpected;
22309
22310 if (componentsLength === 1) {
22311 mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
22312 } else {
22313 mcuExpected = mcusPerLine * frame.mcusPerColumn;
22314 }
22315
22316 var h, v;
22317
22318 while (mcu < mcuExpected) {
22319 var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
22320
22321 for (i = 0; i < componentsLength; i++) {
22322 components[i].pred = 0;
22323 }
22324
22325 eobrun = 0;
22326
22327 if (componentsLength === 1) {
22328 component = components[0];
22329
22330 for (n = 0; n < mcuToRead; n++) {
22331 decodeBlock(component, decodeFn, mcu);
22332 mcu++;
22333 }
22334 } else {
22335 for (n = 0; n < mcuToRead; n++) {
22336 for (i = 0; i < componentsLength; i++) {
22337 component = components[i];
22338 h = component.h;
22339 v = component.v;
22340
22341 for (j = 0; j < v; j++) {
22342 for (k = 0; k < h; k++) {
22343 decodeMcu(component, decodeFn, mcu, j, k);
22344 }
22345 }
22346 }
22347
22348 mcu++;
22349 }
22350 }
22351
22352 bitsCount = 0;
22353 fileMarker = findNextFileMarker(data, offset);
22354
22355 if (fileMarker && fileMarker.invalid) {
22356 (0, _util.warn)('decodeScan - unexpected MCU data, current marker is: ' + fileMarker.invalid);
22357 offset = fileMarker.offset;
22358 }
22359
22360 var marker = fileMarker && fileMarker.marker;
22361
22362 if (!marker || marker <= 0xFF00) {
22363 throw new JpegError('marker was not found');
22364 }
22365
22366 if (marker >= 0xFFD0 && marker <= 0xFFD7) {
22367 offset += 2;
22368 } else {
22369 break;
22370 }
22371 }
22372
22373 fileMarker = findNextFileMarker(data, offset);
22374
22375 if (fileMarker && fileMarker.invalid) {
22376 (0, _util.warn)('decodeScan - unexpected Scan data, current marker is: ' + fileMarker.invalid);
22377 offset = fileMarker.offset;
22378 }
22379
22380 return offset - startOffset;
22381 }
22382
22383 function quantizeAndInverse(component, blockBufferOffset, p) {
22384 var qt = component.quantizationTable,
22385 blockData = component.blockData;
22386 var v0, v1, v2, v3, v4, v5, v6, v7;
22387 var p0, p1, p2, p3, p4, p5, p6, p7;
22388 var t;
22389
22390 if (!qt) {
22391 throw new JpegError('missing required Quantization Table.');
22392 }
22393
22394 for (var row = 0; row < 64; row += 8) {
22395 p0 = blockData[blockBufferOffset + row];
22396 p1 = blockData[blockBufferOffset + row + 1];
22397 p2 = blockData[blockBufferOffset + row + 2];
22398 p3 = blockData[blockBufferOffset + row + 3];
22399 p4 = blockData[blockBufferOffset + row + 4];
22400 p5 = blockData[blockBufferOffset + row + 5];
22401 p6 = blockData[blockBufferOffset + row + 6];
22402 p7 = blockData[blockBufferOffset + row + 7];
22403 p0 *= qt[row];
22404
22405 if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
22406 t = dctSqrt2 * p0 + 512 >> 10;
22407 p[row] = t;
22408 p[row + 1] = t;
22409 p[row + 2] = t;
22410 p[row + 3] = t;
22411 p[row + 4] = t;
22412 p[row + 5] = t;
22413 p[row + 6] = t;
22414 p[row + 7] = t;
22415 continue;
22416 }
22417
22418 p1 *= qt[row + 1];
22419 p2 *= qt[row + 2];
22420 p3 *= qt[row + 3];
22421 p4 *= qt[row + 4];
22422 p5 *= qt[row + 5];
22423 p6 *= qt[row + 6];
22424 p7 *= qt[row + 7];
22425 v0 = dctSqrt2 * p0 + 128 >> 8;
22426 v1 = dctSqrt2 * p4 + 128 >> 8;
22427 v2 = p2;
22428 v3 = p6;
22429 v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;
22430 v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;
22431 v5 = p3 << 4;
22432 v6 = p5 << 4;
22433 v0 = v0 + v1 + 1 >> 1;
22434 v1 = v0 - v1;
22435 t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;
22436 v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;
22437 v3 = t;
22438 v4 = v4 + v6 + 1 >> 1;
22439 v6 = v4 - v6;
22440 v7 = v7 + v5 + 1 >> 1;
22441 v5 = v7 - v5;
22442 v0 = v0 + v3 + 1 >> 1;
22443 v3 = v0 - v3;
22444 v1 = v1 + v2 + 1 >> 1;
22445 v2 = v1 - v2;
22446 t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
22447 v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
22448 v7 = t;
22449 t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
22450 v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
22451 v6 = t;
22452 p[row] = v0 + v7;
22453 p[row + 7] = v0 - v7;
22454 p[row + 1] = v1 + v6;
22455 p[row + 6] = v1 - v6;
22456 p[row + 2] = v2 + v5;
22457 p[row + 5] = v2 - v5;
22458 p[row + 3] = v3 + v4;
22459 p[row + 4] = v3 - v4;
22460 }
22461
22462 for (var col = 0; col < 8; ++col) {
22463 p0 = p[col];
22464 p1 = p[col + 8];
22465 p2 = p[col + 16];
22466 p3 = p[col + 24];
22467 p4 = p[col + 32];
22468 p5 = p[col + 40];
22469 p6 = p[col + 48];
22470 p7 = p[col + 56];
22471
22472 if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
22473 t = dctSqrt2 * p0 + 8192 >> 14;
22474 t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4;
22475 blockData[blockBufferOffset + col] = t;
22476 blockData[blockBufferOffset + col + 8] = t;
22477 blockData[blockBufferOffset + col + 16] = t;
22478 blockData[blockBufferOffset + col + 24] = t;
22479 blockData[blockBufferOffset + col + 32] = t;
22480 blockData[blockBufferOffset + col + 40] = t;
22481 blockData[blockBufferOffset + col + 48] = t;
22482 blockData[blockBufferOffset + col + 56] = t;
22483 continue;
22484 }
22485
22486 v0 = dctSqrt2 * p0 + 2048 >> 12;
22487 v1 = dctSqrt2 * p4 + 2048 >> 12;
22488 v2 = p2;
22489 v3 = p6;
22490 v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;
22491 v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;
22492 v5 = p3;
22493 v6 = p5;
22494 v0 = (v0 + v1 + 1 >> 1) + 4112;
22495 v1 = v0 - v1;
22496 t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
22497 v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
22498 v3 = t;
22499 v4 = v4 + v6 + 1 >> 1;
22500 v6 = v4 - v6;
22501 v7 = v7 + v5 + 1 >> 1;
22502 v5 = v7 - v5;
22503 v0 = v0 + v3 + 1 >> 1;
22504 v3 = v0 - v3;
22505 v1 = v1 + v2 + 1 >> 1;
22506 v2 = v1 - v2;
22507 t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
22508 v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
22509 v7 = t;
22510 t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
22511 v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
22512 v6 = t;
22513 p0 = v0 + v7;
22514 p7 = v0 - v7;
22515 p1 = v1 + v6;
22516 p6 = v1 - v6;
22517 p2 = v2 + v5;
22518 p5 = v2 - v5;
22519 p3 = v3 + v4;
22520 p4 = v3 - v4;
22521 p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4;
22522 p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4;
22523 p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4;
22524 p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4;
22525 p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4;
22526 p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4;
22527 p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4;
22528 p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4;
22529 blockData[blockBufferOffset + col] = p0;
22530 blockData[blockBufferOffset + col + 8] = p1;
22531 blockData[blockBufferOffset + col + 16] = p2;
22532 blockData[blockBufferOffset + col + 24] = p3;
22533 blockData[blockBufferOffset + col + 32] = p4;
22534 blockData[blockBufferOffset + col + 40] = p5;
22535 blockData[blockBufferOffset + col + 48] = p6;
22536 blockData[blockBufferOffset + col + 56] = p7;
22537 }
22538 }
22539
22540 function buildComponentData(frame, component) {
22541 var blocksPerLine = component.blocksPerLine;
22542 var blocksPerColumn = component.blocksPerColumn;
22543 var computationBuffer = new Int16Array(64);
22544
22545 for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
22546 for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {
22547 var offset = getBlockBufferOffset(component, blockRow, blockCol);
22548 quantizeAndInverse(component, offset, computationBuffer);
22549 }
22550 }
22551
22552 return component.blockData;
22553 }
22554
22555 function findNextFileMarker(data, currentPos) {
22556 var startPos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentPos;
22557
22558 function peekUint16(pos) {
22559 return data[pos] << 8 | data[pos + 1];
22560 }
22561
22562 var maxPos = data.length - 1;
22563 var newPos = startPos < currentPos ? startPos : currentPos;
22564
22565 if (currentPos >= maxPos) {
22566 return null;
22567 }
22568
22569 var currentMarker = peekUint16(currentPos);
22570
22571 if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {
22572 return {
22573 invalid: null,
22574 marker: currentMarker,
22575 offset: currentPos
22576 };
22577 }
22578
22579 var newMarker = peekUint16(newPos);
22580
22581 while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {
22582 if (++newPos >= maxPos) {
22583 return null;
22584 }
22585
22586 newMarker = peekUint16(newPos);
22587 }
22588
22589 return {
22590 invalid: currentMarker.toString(16),
22591 marker: newMarker,
22592 offset: newPos
22593 };
22594 }
22595
22596 JpegImage.prototype = {
22597 parse: function parse(data) {
22598 var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
22599 _ref2$dnlScanLines = _ref2.dnlScanLines,
22600 dnlScanLines = _ref2$dnlScanLines === void 0 ? null : _ref2$dnlScanLines;
22601
22602 function readUint16() {
22603 var value = data[offset] << 8 | data[offset + 1];
22604 offset += 2;
22605 return value;
22606 }
22607
22608 function readDataBlock() {
22609 var length = readUint16();
22610 var endOffset = offset + length - 2;
22611 var fileMarker = findNextFileMarker(data, endOffset, offset);
22612
22613 if (fileMarker && fileMarker.invalid) {
22614 (0, _util.warn)('readDataBlock - incorrect length, current marker is: ' + fileMarker.invalid);
22615 endOffset = fileMarker.offset;
22616 }
22617
22618 var array = data.subarray(offset, endOffset);
22619 offset += array.length;
22620 return array;
22621 }
22622
22623 function prepareComponents(frame) {
22624 var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
22625 var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
22626
22627 for (var i = 0; i < frame.components.length; i++) {
22628 component = frame.components[i];
22629 var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
22630 var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);
22631 var blocksPerLineForMcu = mcusPerLine * component.h;
22632 var blocksPerColumnForMcu = mcusPerColumn * component.v;
22633 var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
22634 component.blockData = new Int16Array(blocksBufferSize);
22635 component.blocksPerLine = blocksPerLine;
22636 component.blocksPerColumn = blocksPerColumn;
22637 }
22638
22639 frame.mcusPerLine = mcusPerLine;
22640 frame.mcusPerColumn = mcusPerColumn;
22641 }
22642
22643 var offset = 0;
22644 var jfif = null;
22645 var adobe = null;
22646 var frame, resetInterval;
22647 var numSOSMarkers = 0;
22648 var quantizationTables = [];
22649 var huffmanTablesAC = [],
22650 huffmanTablesDC = [];
22651 var fileMarker = readUint16();
22652
22653 if (fileMarker !== 0xFFD8) {
22654 throw new JpegError('SOI not found');
22655 }
22656
22657 fileMarker = readUint16();
22658
22659 markerLoop: while (fileMarker !== 0xFFD9) {
22660 var i, j, l;
22661
22662 switch (fileMarker) {
22663 case 0xFFE0:
22664 case 0xFFE1:
22665 case 0xFFE2:
22666 case 0xFFE3:
22667 case 0xFFE4:
22668 case 0xFFE5:
22669 case 0xFFE6:
22670 case 0xFFE7:
22671 case 0xFFE8:
22672 case 0xFFE9:
22673 case 0xFFEA:
22674 case 0xFFEB:
22675 case 0xFFEC:
22676 case 0xFFED:
22677 case 0xFFEE:
22678 case 0xFFEF:
22679 case 0xFFFE:
22680 var appData = readDataBlock();
22681
22682 if (fileMarker === 0xFFE0) {
22683 if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
22684 jfif = {
22685 version: {
22686 major: appData[5],
22687 minor: appData[6]
22688 },
22689 densityUnits: appData[7],
22690 xDensity: appData[8] << 8 | appData[9],
22691 yDensity: appData[10] << 8 | appData[11],
22692 thumbWidth: appData[12],
22693 thumbHeight: appData[13],
22694 thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
22695 };
22696 }
22697 }
22698
22699 if (fileMarker === 0xFFEE) {
22700 if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) {
22701 adobe = {
22702 version: appData[5] << 8 | appData[6],
22703 flags0: appData[7] << 8 | appData[8],
22704 flags1: appData[9] << 8 | appData[10],
22705 transformCode: appData[11]
22706 };
22707 }
22708 }
22709
22710 break;
22711
22712 case 0xFFDB:
22713 var quantizationTablesLength = readUint16();
22714 var quantizationTablesEnd = quantizationTablesLength + offset - 2;
22715 var z;
22716
22717 while (offset < quantizationTablesEnd) {
22718 var quantizationTableSpec = data[offset++];
22719 var tableData = new Uint16Array(64);
22720
22721 if (quantizationTableSpec >> 4 === 0) {
22722 for (j = 0; j < 64; j++) {
22723 z = dctZigZag[j];
22724 tableData[z] = data[offset++];
22725 }
22726 } else if (quantizationTableSpec >> 4 === 1) {
22727 for (j = 0; j < 64; j++) {
22728 z = dctZigZag[j];
22729 tableData[z] = readUint16();
22730 }
22731 } else {
22732 throw new JpegError('DQT - invalid table spec');
22733 }
22734
22735 quantizationTables[quantizationTableSpec & 15] = tableData;
22736 }
22737
22738 break;
22739
22740 case 0xFFC0:
22741 case 0xFFC1:
22742 case 0xFFC2:
22743 if (frame) {
22744 throw new JpegError('Only single frame JPEGs supported');
22745 }
22746
22747 readUint16();
22748 frame = {};
22749 frame.extended = fileMarker === 0xFFC1;
22750 frame.progressive = fileMarker === 0xFFC2;
22751 frame.precision = data[offset++];
22752 var sofScanLines = readUint16();
22753 frame.scanLines = dnlScanLines || sofScanLines;
22754 frame.samplesPerLine = readUint16();
22755 frame.components = [];
22756 frame.componentIds = {};
22757 var componentsCount = data[offset++],
22758 componentId;
22759 var maxH = 0,
22760 maxV = 0;
22761
22762 for (i = 0; i < componentsCount; i++) {
22763 componentId = data[offset];
22764 var h = data[offset + 1] >> 4;
22765 var v = data[offset + 1] & 15;
22766
22767 if (maxH < h) {
22768 maxH = h;
22769 }
22770
22771 if (maxV < v) {
22772 maxV = v;
22773 }
22774
22775 var qId = data[offset + 2];
22776 l = frame.components.push({
22777 h: h,
22778 v: v,
22779 quantizationId: qId,
22780 quantizationTable: null
22781 });
22782 frame.componentIds[componentId] = l - 1;
22783 offset += 3;
22784 }
22785
22786 frame.maxH = maxH;
22787 frame.maxV = maxV;
22788 prepareComponents(frame);
22789 break;
22790
22791 case 0xFFC4:
22792 var huffmanLength = readUint16();
22793
22794 for (i = 2; i < huffmanLength;) {
22795 var huffmanTableSpec = data[offset++];
22796 var codeLengths = new Uint8Array(16);
22797 var codeLengthSum = 0;
22798
22799 for (j = 0; j < 16; j++, offset++) {
22800 codeLengthSum += codeLengths[j] = data[offset];
22801 }
22802
22803 var huffmanValues = new Uint8Array(codeLengthSum);
22804
22805 for (j = 0; j < codeLengthSum; j++, offset++) {
22806 huffmanValues[j] = data[offset];
22807 }
22808
22809 i += 17 + codeLengthSum;
22810 (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);
22811 }
22812
22813 break;
22814
22815 case 0xFFDD:
22816 readUint16();
22817 resetInterval = readUint16();
22818 break;
22819
22820 case 0xFFDA:
22821 var parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
22822 readUint16();
22823 var selectorsCount = data[offset++];
22824 var components = [],
22825 component;
22826
22827 for (i = 0; i < selectorsCount; i++) {
22828 var componentIndex = frame.componentIds[data[offset++]];
22829 component = frame.components[componentIndex];
22830 var tableSpec = data[offset++];
22831 component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
22832 component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
22833 components.push(component);
22834 }
22835
22836 var spectralStart = data[offset++];
22837 var spectralEnd = data[offset++];
22838 var successiveApproximation = data[offset++];
22839
22840 try {
22841 var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
22842 offset += processed;
22843 } catch (ex) {
22844 if (ex instanceof DNLMarkerError) {
22845 (0, _util.warn)("".concat(ex.message, " -- attempting to re-parse the JPEG image."));
22846 return this.parse(data, {
22847 dnlScanLines: ex.scanLines
22848 });
22849 } else if (ex instanceof EOIMarkerError) {
22850 (0, _util.warn)("".concat(ex.message, " -- ignoring the rest of the image data."));
22851 break markerLoop;
22852 }
22853
22854 throw ex;
22855 }
22856
22857 break;
22858
22859 case 0xFFDC:
22860 offset += 4;
22861 break;
22862
22863 case 0xFFFF:
22864 if (data[offset] !== 0xFF) {
22865 offset--;
22866 }
22867
22868 break;
22869
22870 default:
22871 if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {
22872 offset -= 3;
22873 break;
22874 }
22875
22876 var nextFileMarker = findNextFileMarker(data, offset - 2);
22877
22878 if (nextFileMarker && nextFileMarker.invalid) {
22879 (0, _util.warn)('JpegImage.parse - unexpected data, current marker is: ' + nextFileMarker.invalid);
22880 offset = nextFileMarker.offset;
22881 break;
22882 }
22883
22884 throw new JpegError('unknown marker ' + fileMarker.toString(16));
22885 }
22886
22887 fileMarker = readUint16();
22888 }
22889
22890 this.width = frame.samplesPerLine;
22891 this.height = frame.scanLines;
22892 this.jfif = jfif;
22893 this.adobe = adobe;
22894 this.components = [];
22895
22896 for (i = 0; i < frame.components.length; i++) {
22897 component = frame.components[i];
22898 var quantizationTable = quantizationTables[component.quantizationId];
22899
22900 if (quantizationTable) {
22901 component.quantizationTable = quantizationTable;
22902 }
22903
22904 this.components.push({
22905 output: buildComponentData(frame, component),
22906 scaleX: component.h / frame.maxH,
22907 scaleY: component.v / frame.maxV,
22908 blocksPerLine: component.blocksPerLine,
22909 blocksPerColumn: component.blocksPerColumn
22910 });
22911 }
22912
22913 this.numComponents = this.components.length;
22914 return undefined;
22915 },
22916 _getLinearizedBlockData: function _getLinearizedBlockData(width, height) {
22917 var isSourcePDF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
22918 var scaleX = this.width / width,
22919 scaleY = this.height / height;
22920 var component, componentScaleX, componentScaleY, blocksPerScanline;
22921 var x, y, i, j, k;
22922 var index;
22923 var offset = 0;
22924 var output;
22925 var numComponents = this.components.length;
22926 var dataLength = width * height * numComponents;
22927 var data = new Uint8ClampedArray(dataLength);
22928 var xScaleBlockOffset = new Uint32Array(width);
22929 var mask3LSB = 0xfffffff8;
22930
22931 for (i = 0; i < numComponents; i++) {
22932 component = this.components[i];
22933 componentScaleX = component.scaleX * scaleX;
22934 componentScaleY = component.scaleY * scaleY;
22935 offset = i;
22936 output = component.output;
22937 blocksPerScanline = component.blocksPerLine + 1 << 3;
22938
22939 for (x = 0; x < width; x++) {
22940 j = 0 | x * componentScaleX;
22941 xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
22942 }
22943
22944 for (y = 0; y < height; y++) {
22945 j = 0 | y * componentScaleY;
22946 index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
22947
22948 for (x = 0; x < width; x++) {
22949 data[offset] = output[index + xScaleBlockOffset[x]];
22950 offset += numComponents;
22951 }
22952 }
22953 }
22954
22955 var transform = this._decodeTransform;
22956
22957 if (!isSourcePDF && numComponents === 4 && !transform) {
22958 transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
22959 }
22960
22961 if (transform) {
22962 for (i = 0; i < dataLength;) {
22963 for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
22964 data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];
22965 }
22966 }
22967 }
22968
22969 return data;
22970 },
22971
22972 get _isColorConversionNeeded() {
22973 if (this.adobe) {
22974 return !!this.adobe.transformCode;
22975 }
22976
22977 if (this.numComponents === 3) {
22978 if (this._colorTransform === 0) {
22979 return false;
22980 }
22981
22982 return true;
22983 }
22984
22985 if (this._colorTransform === 1) {
22986 return true;
22987 }
22988
22989 return false;
22990 },
22991
22992 _convertYccToRgb: function convertYccToRgb(data) {
22993 var Y, Cb, Cr;
22994
22995 for (var i = 0, length = data.length; i < length; i += 3) {
22996 Y = data[i];
22997 Cb = data[i + 1];
22998 Cr = data[i + 2];
22999 data[i] = Y - 179.456 + 1.402 * Cr;
23000 data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
23001 data[i + 2] = Y - 226.816 + 1.772 * Cb;
23002 }
23003
23004 return data;
23005 },
23006 _convertYcckToRgb: function convertYcckToRgb(data) {
23007 var Y, Cb, Cr, k;
23008 var offset = 0;
23009
23010 for (var i = 0, length = data.length; i < length; i += 4) {
23011 Y = data[i];
23012 Cb = data[i + 1];
23013 Cr = data[i + 2];
23014 k = data[i + 3];
23015 data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);
23016 data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);
23017 data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);
23018 }
23019
23020 return data.subarray(0, offset);
23021 },
23022 _convertYcckToCmyk: function convertYcckToCmyk(data) {
23023 var Y, Cb, Cr;
23024
23025 for (var i = 0, length = data.length; i < length; i += 4) {
23026 Y = data[i];
23027 Cb = data[i + 1];
23028 Cr = data[i + 2];
23029 data[i] = 434.456 - Y - 1.402 * Cr;
23030 data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;
23031 data[i + 2] = 481.816 - Y - 1.772 * Cb;
23032 }
23033
23034 return data;
23035 },
23036 _convertCmykToRgb: function convertCmykToRgb(data) {
23037 var c, m, y, k;
23038 var offset = 0;
23039 var scale = 1 / 255;
23040
23041 for (var i = 0, length = data.length; i < length; i += 4) {
23042 c = data[i] * scale;
23043 m = data[i + 1] * scale;
23044 y = data[i + 2] * scale;
23045 k = data[i + 3] * scale;
23046 data[offset++] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) - k * (21.86122147463605 * k + 189.48180835922747);
23047 data[offset++] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) - k * (20.737325471181034 * k + 187.80453709719578);
23048 data[offset++] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 193.58209356861505) - k * (22.33816807309886 * k + 180.12613974708367);
23049 }
23050
23051 return data.subarray(0, offset);
23052 },
23053 getData: function getData(_ref3) {
23054 var width = _ref3.width,
23055 height = _ref3.height,
23056 _ref3$forceRGB = _ref3.forceRGB,
23057 forceRGB = _ref3$forceRGB === void 0 ? false : _ref3$forceRGB,
23058 _ref3$isSourcePDF = _ref3.isSourcePDF,
23059 isSourcePDF = _ref3$isSourcePDF === void 0 ? false : _ref3$isSourcePDF;
23060
23061 if (this.numComponents > 4) {
23062 throw new JpegError('Unsupported color mode');
23063 }
23064
23065 var data = this._getLinearizedBlockData(width, height, isSourcePDF);
23066
23067 if (this.numComponents === 1 && forceRGB) {
23068 var dataLength = data.length;
23069 var rgbData = new Uint8ClampedArray(dataLength * 3);
23070 var offset = 0;
23071
23072 for (var i = 0; i < dataLength; i++) {
23073 var grayColor = data[i];
23074 rgbData[offset++] = grayColor;
23075 rgbData[offset++] = grayColor;
23076 rgbData[offset++] = grayColor;
23077 }
23078
23079 return rgbData;
23080 } else if (this.numComponents === 3 && this._isColorConversionNeeded) {
23081 return this._convertYccToRgb(data);
23082 } else if (this.numComponents === 4) {
23083 if (this._isColorConversionNeeded) {
23084 if (forceRGB) {
23085 return this._convertYcckToRgb(data);
23086 }
23087
23088 return this._convertYcckToCmyk(data);
23089 } else if (forceRGB) {
23090 return this._convertCmykToRgb(data);
23091 }
23092 }
23093
23094 return data;
23095 }
23096 };
23097 return JpegImage;
23098}();
23099
23100exports.JpegImage = JpegImage;
23101
23102/***/ }),
23103/* 166 */
23104/***/ (function(module, exports, __w_pdfjs_require__) {
23105
23106"use strict";
23107
23108
23109Object.defineProperty(exports, "__esModule", {
23110 value: true
23111});
23112exports.JpxStream = void 0;
23113
23114var _stream = __w_pdfjs_require__(158);
23115
23116var _jpx = __w_pdfjs_require__(167);
23117
23118var _util = __w_pdfjs_require__(5);
23119
23120var JpxStream = function JpxStreamClosure() {
23121 function JpxStream(stream, maybeLength, dict, params) {
23122 this.stream = stream;
23123 this.maybeLength = maybeLength;
23124 this.dict = dict;
23125 this.params = params;
23126
23127 _stream.DecodeStream.call(this, maybeLength);
23128 }
23129
23130 JpxStream.prototype = Object.create(_stream.DecodeStream.prototype);
23131 Object.defineProperty(JpxStream.prototype, 'bytes', {
23132 get: function JpxStream_bytes() {
23133 return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
23134 },
23135 configurable: true
23136 });
23137
23138 JpxStream.prototype.ensureBuffer = function (requested) {};
23139
23140 JpxStream.prototype.readBlock = function () {
23141 if (this.eof) {
23142 return;
23143 }
23144
23145 var jpxImage = new _jpx.JpxImage();
23146 jpxImage.parse(this.bytes);
23147 var width = jpxImage.width;
23148 var height = jpxImage.height;
23149 var componentsCount = jpxImage.componentsCount;
23150 var tileCount = jpxImage.tiles.length;
23151
23152 if (tileCount === 1) {
23153 this.buffer = jpxImage.tiles[0].items;
23154 } else {
23155 var data = new Uint8ClampedArray(width * height * componentsCount);
23156
23157 for (var k = 0; k < tileCount; k++) {
23158 var tileComponents = jpxImage.tiles[k];
23159 var tileWidth = tileComponents.width;
23160 var tileHeight = tileComponents.height;
23161 var tileLeft = tileComponents.left;
23162 var tileTop = tileComponents.top;
23163 var src = tileComponents.items;
23164 var srcPosition = 0;
23165 var dataPosition = (width * tileTop + tileLeft) * componentsCount;
23166 var imgRowSize = width * componentsCount;
23167 var tileRowSize = tileWidth * componentsCount;
23168
23169 for (var j = 0; j < tileHeight; j++) {
23170 var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
23171 data.set(rowBytes, dataPosition);
23172 srcPosition += tileRowSize;
23173 dataPosition += imgRowSize;
23174 }
23175 }
23176
23177 this.buffer = data;
23178 }
23179
23180 this.bufferLength = this.buffer.length;
23181 this.eof = true;
23182 };
23183
23184 return JpxStream;
23185}();
23186
23187exports.JpxStream = JpxStream;
23188
23189/***/ }),
23190/* 167 */
23191/***/ (function(module, exports, __w_pdfjs_require__) {
23192
23193"use strict";
23194
23195
23196Object.defineProperty(exports, "__esModule", {
23197 value: true
23198});
23199exports.JpxImage = void 0;
23200
23201var _util = __w_pdfjs_require__(5);
23202
23203var _arithmetic_decoder = __w_pdfjs_require__(163);
23204
23205var JpxError = function JpxErrorClosure() {
23206 function JpxError(msg) {
23207 this.message = 'JPX error: ' + msg;
23208 }
23209
23210 JpxError.prototype = new Error();
23211 JpxError.prototype.name = 'JpxError';
23212 JpxError.constructor = JpxError;
23213 return JpxError;
23214}();
23215
23216var JpxImage = function JpxImageClosure() {
23217 var SubbandsGainLog2 = {
23218 'LL': 0,
23219 'LH': 1,
23220 'HL': 1,
23221 'HH': 2
23222 };
23223
23224 function JpxImage() {
23225 this.failOnCorruptedImage = false;
23226 }
23227
23228 JpxImage.prototype = {
23229 parse: function JpxImage_parse(data) {
23230 var head = (0, _util.readUint16)(data, 0);
23231
23232 if (head === 0xFF4F) {
23233 this.parseCodestream(data, 0, data.length);
23234 return;
23235 }
23236
23237 var position = 0,
23238 length = data.length;
23239
23240 while (position < length) {
23241 var headerSize = 8;
23242 var lbox = (0, _util.readUint32)(data, position);
23243 var tbox = (0, _util.readUint32)(data, position + 4);
23244 position += headerSize;
23245
23246 if (lbox === 1) {
23247 lbox = (0, _util.readUint32)(data, position) * 4294967296 + (0, _util.readUint32)(data, position + 4);
23248 position += 8;
23249 headerSize += 8;
23250 }
23251
23252 if (lbox === 0) {
23253 lbox = length - position + headerSize;
23254 }
23255
23256 if (lbox < headerSize) {
23257 throw new JpxError('Invalid box field size');
23258 }
23259
23260 var dataLength = lbox - headerSize;
23261 var jumpDataLength = true;
23262
23263 switch (tbox) {
23264 case 0x6A703268:
23265 jumpDataLength = false;
23266 break;
23267
23268 case 0x636F6C72:
23269 var method = data[position];
23270
23271 if (method === 1) {
23272 var colorspace = (0, _util.readUint32)(data, position + 3);
23273
23274 switch (colorspace) {
23275 case 16:
23276 case 17:
23277 case 18:
23278 break;
23279
23280 default:
23281 (0, _util.warn)('Unknown colorspace ' + colorspace);
23282 break;
23283 }
23284 } else if (method === 2) {
23285 (0, _util.info)('ICC profile not supported');
23286 }
23287
23288 break;
23289
23290 case 0x6A703263:
23291 this.parseCodestream(data, position, position + dataLength);
23292 break;
23293
23294 case 0x6A502020:
23295 if ((0, _util.readUint32)(data, position) !== 0x0d0a870a) {
23296 (0, _util.warn)('Invalid JP2 signature');
23297 }
23298
23299 break;
23300
23301 case 0x6A501A1A:
23302 case 0x66747970:
23303 case 0x72726571:
23304 case 0x72657320:
23305 case 0x69686472:
23306 break;
23307
23308 default:
23309 var headerType = String.fromCharCode(tbox >> 24 & 0xFF, tbox >> 16 & 0xFF, tbox >> 8 & 0xFF, tbox & 0xFF);
23310 (0, _util.warn)('Unsupported header type ' + tbox + ' (' + headerType + ')');
23311 break;
23312 }
23313
23314 if (jumpDataLength) {
23315 position += dataLength;
23316 }
23317 }
23318 },
23319 parseImageProperties: function JpxImage_parseImageProperties(stream) {
23320 var newByte = stream.getByte();
23321
23322 while (newByte >= 0) {
23323 var oldByte = newByte;
23324 newByte = stream.getByte();
23325 var code = oldByte << 8 | newByte;
23326
23327 if (code === 0xFF51) {
23328 stream.skip(4);
23329 var Xsiz = stream.getInt32() >>> 0;
23330 var Ysiz = stream.getInt32() >>> 0;
23331 var XOsiz = stream.getInt32() >>> 0;
23332 var YOsiz = stream.getInt32() >>> 0;
23333 stream.skip(16);
23334 var Csiz = stream.getUint16();
23335 this.width = Xsiz - XOsiz;
23336 this.height = Ysiz - YOsiz;
23337 this.componentsCount = Csiz;
23338 this.bitsPerComponent = 8;
23339 return;
23340 }
23341 }
23342
23343 throw new JpxError('No size marker found in JPX stream');
23344 },
23345 parseCodestream: function JpxImage_parseCodestream(data, start, end) {
23346 var context = {};
23347 var doNotRecover = false;
23348
23349 try {
23350 var position = start;
23351
23352 while (position + 1 < end) {
23353 var code = (0, _util.readUint16)(data, position);
23354 position += 2;
23355 var length = 0,
23356 j,
23357 sqcd,
23358 spqcds,
23359 spqcdSize,
23360 scalarExpounded,
23361 tile;
23362
23363 switch (code) {
23364 case 0xFF4F:
23365 context.mainHeader = true;
23366 break;
23367
23368 case 0xFFD9:
23369 break;
23370
23371 case 0xFF51:
23372 length = (0, _util.readUint16)(data, position);
23373 var siz = {};
23374 siz.Xsiz = (0, _util.readUint32)(data, position + 4);
23375 siz.Ysiz = (0, _util.readUint32)(data, position + 8);
23376 siz.XOsiz = (0, _util.readUint32)(data, position + 12);
23377 siz.YOsiz = (0, _util.readUint32)(data, position + 16);
23378 siz.XTsiz = (0, _util.readUint32)(data, position + 20);
23379 siz.YTsiz = (0, _util.readUint32)(data, position + 24);
23380 siz.XTOsiz = (0, _util.readUint32)(data, position + 28);
23381 siz.YTOsiz = (0, _util.readUint32)(data, position + 32);
23382 var componentsCount = (0, _util.readUint16)(data, position + 36);
23383 siz.Csiz = componentsCount;
23384 var components = [];
23385 j = position + 38;
23386
23387 for (var i = 0; i < componentsCount; i++) {
23388 var component = {
23389 precision: (data[j] & 0x7F) + 1,
23390 isSigned: !!(data[j] & 0x80),
23391 XRsiz: data[j + 1],
23392 YRsiz: data[j + 2]
23393 };
23394 j += 3;
23395 calculateComponentDimensions(component, siz);
23396 components.push(component);
23397 }
23398
23399 context.SIZ = siz;
23400 context.components = components;
23401 calculateTileGrids(context, components);
23402 context.QCC = [];
23403 context.COC = [];
23404 break;
23405
23406 case 0xFF5C:
23407 length = (0, _util.readUint16)(data, position);
23408 var qcd = {};
23409 j = position + 2;
23410 sqcd = data[j++];
23411
23412 switch (sqcd & 0x1F) {
23413 case 0:
23414 spqcdSize = 8;
23415 scalarExpounded = true;
23416 break;
23417
23418 case 1:
23419 spqcdSize = 16;
23420 scalarExpounded = false;
23421 break;
23422
23423 case 2:
23424 spqcdSize = 16;
23425 scalarExpounded = true;
23426 break;
23427
23428 default:
23429 throw new Error('Invalid SQcd value ' + sqcd);
23430 }
23431
23432 qcd.noQuantization = spqcdSize === 8;
23433 qcd.scalarExpounded = scalarExpounded;
23434 qcd.guardBits = sqcd >> 5;
23435 spqcds = [];
23436
23437 while (j < length + position) {
23438 var spqcd = {};
23439
23440 if (spqcdSize === 8) {
23441 spqcd.epsilon = data[j++] >> 3;
23442 spqcd.mu = 0;
23443 } else {
23444 spqcd.epsilon = data[j] >> 3;
23445 spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
23446 j += 2;
23447 }
23448
23449 spqcds.push(spqcd);
23450 }
23451
23452 qcd.SPqcds = spqcds;
23453
23454 if (context.mainHeader) {
23455 context.QCD = qcd;
23456 } else {
23457 context.currentTile.QCD = qcd;
23458 context.currentTile.QCC = [];
23459 }
23460
23461 break;
23462
23463 case 0xFF5D:
23464 length = (0, _util.readUint16)(data, position);
23465 var qcc = {};
23466 j = position + 2;
23467 var cqcc;
23468
23469 if (context.SIZ.Csiz < 257) {
23470 cqcc = data[j++];
23471 } else {
23472 cqcc = (0, _util.readUint16)(data, j);
23473 j += 2;
23474 }
23475
23476 sqcd = data[j++];
23477
23478 switch (sqcd & 0x1F) {
23479 case 0:
23480 spqcdSize = 8;
23481 scalarExpounded = true;
23482 break;
23483
23484 case 1:
23485 spqcdSize = 16;
23486 scalarExpounded = false;
23487 break;
23488
23489 case 2:
23490 spqcdSize = 16;
23491 scalarExpounded = true;
23492 break;
23493
23494 default:
23495 throw new Error('Invalid SQcd value ' + sqcd);
23496 }
23497
23498 qcc.noQuantization = spqcdSize === 8;
23499 qcc.scalarExpounded = scalarExpounded;
23500 qcc.guardBits = sqcd >> 5;
23501 spqcds = [];
23502
23503 while (j < length + position) {
23504 spqcd = {};
23505
23506 if (spqcdSize === 8) {
23507 spqcd.epsilon = data[j++] >> 3;
23508 spqcd.mu = 0;
23509 } else {
23510 spqcd.epsilon = data[j] >> 3;
23511 spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
23512 j += 2;
23513 }
23514
23515 spqcds.push(spqcd);
23516 }
23517
23518 qcc.SPqcds = spqcds;
23519
23520 if (context.mainHeader) {
23521 context.QCC[cqcc] = qcc;
23522 } else {
23523 context.currentTile.QCC[cqcc] = qcc;
23524 }
23525
23526 break;
23527
23528 case 0xFF52:
23529 length = (0, _util.readUint16)(data, position);
23530 var cod = {};
23531 j = position + 2;
23532 var scod = data[j++];
23533 cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
23534 cod.sopMarkerUsed = !!(scod & 2);
23535 cod.ephMarkerUsed = !!(scod & 4);
23536 cod.progressionOrder = data[j++];
23537 cod.layersCount = (0, _util.readUint16)(data, j);
23538 j += 2;
23539 cod.multipleComponentTransform = data[j++];
23540 cod.decompositionLevelsCount = data[j++];
23541 cod.xcb = (data[j++] & 0xF) + 2;
23542 cod.ycb = (data[j++] & 0xF) + 2;
23543 var blockStyle = data[j++];
23544 cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
23545 cod.resetContextProbabilities = !!(blockStyle & 2);
23546 cod.terminationOnEachCodingPass = !!(blockStyle & 4);
23547 cod.verticallyStripe = !!(blockStyle & 8);
23548 cod.predictableTermination = !!(blockStyle & 16);
23549 cod.segmentationSymbolUsed = !!(blockStyle & 32);
23550 cod.reversibleTransformation = data[j++];
23551
23552 if (cod.entropyCoderWithCustomPrecincts) {
23553 var precinctsSizes = [];
23554
23555 while (j < length + position) {
23556 var precinctsSize = data[j++];
23557 precinctsSizes.push({
23558 PPx: precinctsSize & 0xF,
23559 PPy: precinctsSize >> 4
23560 });
23561 }
23562
23563 cod.precinctsSizes = precinctsSizes;
23564 }
23565
23566 var unsupported = [];
23567
23568 if (cod.selectiveArithmeticCodingBypass) {
23569 unsupported.push('selectiveArithmeticCodingBypass');
23570 }
23571
23572 if (cod.resetContextProbabilities) {
23573 unsupported.push('resetContextProbabilities');
23574 }
23575
23576 if (cod.terminationOnEachCodingPass) {
23577 unsupported.push('terminationOnEachCodingPass');
23578 }
23579
23580 if (cod.verticallyStripe) {
23581 unsupported.push('verticallyStripe');
23582 }
23583
23584 if (cod.predictableTermination) {
23585 unsupported.push('predictableTermination');
23586 }
23587
23588 if (unsupported.length > 0) {
23589 doNotRecover = true;
23590 throw new Error('Unsupported COD options (' + unsupported.join(', ') + ')');
23591 }
23592
23593 if (context.mainHeader) {
23594 context.COD = cod;
23595 } else {
23596 context.currentTile.COD = cod;
23597 context.currentTile.COC = [];
23598 }
23599
23600 break;
23601
23602 case 0xFF90:
23603 length = (0, _util.readUint16)(data, position);
23604 tile = {};
23605 tile.index = (0, _util.readUint16)(data, position + 2);
23606 tile.length = (0, _util.readUint32)(data, position + 4);
23607 tile.dataEnd = tile.length + position - 2;
23608 tile.partIndex = data[position + 8];
23609 tile.partsCount = data[position + 9];
23610 context.mainHeader = false;
23611
23612 if (tile.partIndex === 0) {
23613 tile.COD = context.COD;
23614 tile.COC = context.COC.slice(0);
23615 tile.QCD = context.QCD;
23616 tile.QCC = context.QCC.slice(0);
23617 }
23618
23619 context.currentTile = tile;
23620 break;
23621
23622 case 0xFF93:
23623 tile = context.currentTile;
23624
23625 if (tile.partIndex === 0) {
23626 initializeTile(context, tile.index);
23627 buildPackets(context);
23628 }
23629
23630 length = tile.dataEnd - position;
23631 parseTilePackets(context, data, position, length);
23632 break;
23633
23634 case 0xFF55:
23635 case 0xFF57:
23636 case 0xFF58:
23637 case 0xFF64:
23638 length = (0, _util.readUint16)(data, position);
23639 break;
23640
23641 case 0xFF53:
23642 throw new Error('Codestream code 0xFF53 (COC) is ' + 'not implemented');
23643
23644 default:
23645 throw new Error('Unknown codestream code: ' + code.toString(16));
23646 }
23647
23648 position += length;
23649 }
23650 } catch (e) {
23651 if (doNotRecover || this.failOnCorruptedImage) {
23652 throw new JpxError(e.message);
23653 } else {
23654 (0, _util.warn)('JPX: Trying to recover from: ' + e.message);
23655 }
23656 }
23657
23658 this.tiles = transformComponents(context);
23659 this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
23660 this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
23661 this.componentsCount = context.SIZ.Csiz;
23662 }
23663 };
23664
23665 function calculateComponentDimensions(component, siz) {
23666 component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
23667 component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
23668 component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
23669 component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
23670 component.width = component.x1 - component.x0;
23671 component.height = component.y1 - component.y0;
23672 }
23673
23674 function calculateTileGrids(context, components) {
23675 var siz = context.SIZ;
23676 var tile,
23677 tiles = [];
23678 var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
23679 var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
23680
23681 for (var q = 0; q < numYtiles; q++) {
23682 for (var p = 0; p < numXtiles; p++) {
23683 tile = {};
23684 tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
23685 tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
23686 tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
23687 tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
23688 tile.width = tile.tx1 - tile.tx0;
23689 tile.height = tile.ty1 - tile.ty0;
23690 tile.components = [];
23691 tiles.push(tile);
23692 }
23693 }
23694
23695 context.tiles = tiles;
23696 var componentsCount = siz.Csiz;
23697
23698 for (var i = 0, ii = componentsCount; i < ii; i++) {
23699 var component = components[i];
23700
23701 for (var j = 0, jj = tiles.length; j < jj; j++) {
23702 var tileComponent = {};
23703 tile = tiles[j];
23704 tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
23705 tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
23706 tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
23707 tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
23708 tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
23709 tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
23710 tile.components[i] = tileComponent;
23711 }
23712 }
23713 }
23714
23715 function getBlocksDimensions(context, component, r) {
23716 var codOrCoc = component.codingStyleParameters;
23717 var result = {};
23718
23719 if (!codOrCoc.entropyCoderWithCustomPrecincts) {
23720 result.PPx = 15;
23721 result.PPy = 15;
23722 } else {
23723 result.PPx = codOrCoc.precinctsSizes[r].PPx;
23724 result.PPy = codOrCoc.precinctsSizes[r].PPy;
23725 }
23726
23727 result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);
23728 result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);
23729 return result;
23730 }
23731
23732 function buildPrecincts(context, resolution, dimensions) {
23733 var precinctWidth = 1 << dimensions.PPx;
23734 var precinctHeight = 1 << dimensions.PPy;
23735 var isZeroRes = resolution.resLevel === 0;
23736 var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);
23737 var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);
23738 var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;
23739 var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;
23740 var numprecincts = numprecinctswide * numprecinctshigh;
23741 resolution.precinctParameters = {
23742 precinctWidth: precinctWidth,
23743 precinctHeight: precinctHeight,
23744 numprecinctswide: numprecinctswide,
23745 numprecinctshigh: numprecinctshigh,
23746 numprecincts: numprecincts,
23747 precinctWidthInSubband: precinctWidthInSubband,
23748 precinctHeightInSubband: precinctHeightInSubband
23749 };
23750 }
23751
23752 function buildCodeblocks(context, subband, dimensions) {
23753 var xcb_ = dimensions.xcb_;
23754 var ycb_ = dimensions.ycb_;
23755 var codeblockWidth = 1 << xcb_;
23756 var codeblockHeight = 1 << ycb_;
23757 var cbx0 = subband.tbx0 >> xcb_;
23758 var cby0 = subband.tby0 >> ycb_;
23759 var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;
23760 var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;
23761 var precinctParameters = subband.resolution.precinctParameters;
23762 var codeblocks = [];
23763 var precincts = [];
23764 var i, j, codeblock, precinctNumber;
23765
23766 for (j = cby0; j < cby1; j++) {
23767 for (i = cbx0; i < cbx1; i++) {
23768 codeblock = {
23769 cbx: i,
23770 cby: j,
23771 tbx0: codeblockWidth * i,
23772 tby0: codeblockHeight * j,
23773 tbx1: codeblockWidth * (i + 1),
23774 tby1: codeblockHeight * (j + 1)
23775 };
23776 codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
23777 codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
23778 codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
23779 codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
23780 var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);
23781 var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);
23782 precinctNumber = pi + pj * precinctParameters.numprecinctswide;
23783 codeblock.precinctNumber = precinctNumber;
23784 codeblock.subbandType = subband.type;
23785 codeblock.Lblock = 3;
23786
23787 if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {
23788 continue;
23789 }
23790
23791 codeblocks.push(codeblock);
23792 var precinct = precincts[precinctNumber];
23793
23794 if (precinct !== undefined) {
23795 if (i < precinct.cbxMin) {
23796 precinct.cbxMin = i;
23797 } else if (i > precinct.cbxMax) {
23798 precinct.cbxMax = i;
23799 }
23800
23801 if (j < precinct.cbyMin) {
23802 precinct.cbxMin = j;
23803 } else if (j > precinct.cbyMax) {
23804 precinct.cbyMax = j;
23805 }
23806 } else {
23807 precincts[precinctNumber] = precinct = {
23808 cbxMin: i,
23809 cbyMin: j,
23810 cbxMax: i,
23811 cbyMax: j
23812 };
23813 }
23814
23815 codeblock.precinct = precinct;
23816 }
23817 }
23818
23819 subband.codeblockParameters = {
23820 codeblockWidth: xcb_,
23821 codeblockHeight: ycb_,
23822 numcodeblockwide: cbx1 - cbx0 + 1,
23823 numcodeblockhigh: cby1 - cby0 + 1
23824 };
23825 subband.codeblocks = codeblocks;
23826 subband.precincts = precincts;
23827 }
23828
23829 function createPacket(resolution, precinctNumber, layerNumber) {
23830 var precinctCodeblocks = [];
23831 var subbands = resolution.subbands;
23832
23833 for (var i = 0, ii = subbands.length; i < ii; i++) {
23834 var subband = subbands[i];
23835 var codeblocks = subband.codeblocks;
23836
23837 for (var j = 0, jj = codeblocks.length; j < jj; j++) {
23838 var codeblock = codeblocks[j];
23839
23840 if (codeblock.precinctNumber !== precinctNumber) {
23841 continue;
23842 }
23843
23844 precinctCodeblocks.push(codeblock);
23845 }
23846 }
23847
23848 return {
23849 layerNumber: layerNumber,
23850 codeblocks: precinctCodeblocks
23851 };
23852 }
23853
23854 function LayerResolutionComponentPositionIterator(context) {
23855 var siz = context.SIZ;
23856 var tileIndex = context.currentTile.index;
23857 var tile = context.tiles[tileIndex];
23858 var layersCount = tile.codingStyleDefaultParameters.layersCount;
23859 var componentsCount = siz.Csiz;
23860 var maxDecompositionLevelsCount = 0;
23861
23862 for (var q = 0; q < componentsCount; q++) {
23863 maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);
23864 }
23865
23866 var l = 0,
23867 r = 0,
23868 i = 0,
23869 k = 0;
23870
23871 this.nextPacket = function JpxImage_nextPacket() {
23872 for (; l < layersCount; l++) {
23873 for (; r <= maxDecompositionLevelsCount; r++) {
23874 for (; i < componentsCount; i++) {
23875 var component = tile.components[i];
23876
23877 if (r > component.codingStyleParameters.decompositionLevelsCount) {
23878 continue;
23879 }
23880
23881 var resolution = component.resolutions[r];
23882 var numprecincts = resolution.precinctParameters.numprecincts;
23883
23884 for (; k < numprecincts;) {
23885 var packet = createPacket(resolution, k, l);
23886 k++;
23887 return packet;
23888 }
23889
23890 k = 0;
23891 }
23892
23893 i = 0;
23894 }
23895
23896 r = 0;
23897 }
23898
23899 throw new JpxError('Out of packets');
23900 };
23901 }
23902
23903 function ResolutionLayerComponentPositionIterator(context) {
23904 var siz = context.SIZ;
23905 var tileIndex = context.currentTile.index;
23906 var tile = context.tiles[tileIndex];
23907 var layersCount = tile.codingStyleDefaultParameters.layersCount;
23908 var componentsCount = siz.Csiz;
23909 var maxDecompositionLevelsCount = 0;
23910
23911 for (var q = 0; q < componentsCount; q++) {
23912 maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);
23913 }
23914
23915 var r = 0,
23916 l = 0,
23917 i = 0,
23918 k = 0;
23919
23920 this.nextPacket = function JpxImage_nextPacket() {
23921 for (; r <= maxDecompositionLevelsCount; r++) {
23922 for (; l < layersCount; l++) {
23923 for (; i < componentsCount; i++) {
23924 var component = tile.components[i];
23925
23926 if (r > component.codingStyleParameters.decompositionLevelsCount) {
23927 continue;
23928 }
23929
23930 var resolution = component.resolutions[r];
23931 var numprecincts = resolution.precinctParameters.numprecincts;
23932
23933 for (; k < numprecincts;) {
23934 var packet = createPacket(resolution, k, l);
23935 k++;
23936 return packet;
23937 }
23938
23939 k = 0;
23940 }
23941
23942 i = 0;
23943 }
23944
23945 l = 0;
23946 }
23947
23948 throw new JpxError('Out of packets');
23949 };
23950 }
23951
23952 function ResolutionPositionComponentLayerIterator(context) {
23953 var siz = context.SIZ;
23954 var tileIndex = context.currentTile.index;
23955 var tile = context.tiles[tileIndex];
23956 var layersCount = tile.codingStyleDefaultParameters.layersCount;
23957 var componentsCount = siz.Csiz;
23958 var l, r, c, p;
23959 var maxDecompositionLevelsCount = 0;
23960
23961 for (c = 0; c < componentsCount; c++) {
23962 var component = tile.components[c];
23963 maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);
23964 }
23965
23966 var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);
23967
23968 for (r = 0; r <= maxDecompositionLevelsCount; ++r) {
23969 var maxNumPrecincts = 0;
23970
23971 for (c = 0; c < componentsCount; ++c) {
23972 var resolutions = tile.components[c].resolutions;
23973
23974 if (r < resolutions.length) {
23975 maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);
23976 }
23977 }
23978
23979 maxNumPrecinctsInLevel[r] = maxNumPrecincts;
23980 }
23981
23982 l = 0;
23983 r = 0;
23984 c = 0;
23985 p = 0;
23986
23987 this.nextPacket = function JpxImage_nextPacket() {
23988 for (; r <= maxDecompositionLevelsCount; r++) {
23989 for (; p < maxNumPrecinctsInLevel[r]; p++) {
23990 for (; c < componentsCount; c++) {
23991 var component = tile.components[c];
23992
23993 if (r > component.codingStyleParameters.decompositionLevelsCount) {
23994 continue;
23995 }
23996
23997 var resolution = component.resolutions[r];
23998 var numprecincts = resolution.precinctParameters.numprecincts;
23999
24000 if (p >= numprecincts) {
24001 continue;
24002 }
24003
24004 for (; l < layersCount;) {
24005 var packet = createPacket(resolution, p, l);
24006 l++;
24007 return packet;
24008 }
24009
24010 l = 0;
24011 }
24012
24013 c = 0;
24014 }
24015
24016 p = 0;
24017 }
24018
24019 throw new JpxError('Out of packets');
24020 };
24021 }
24022
24023 function PositionComponentResolutionLayerIterator(context) {
24024 var siz = context.SIZ;
24025 var tileIndex = context.currentTile.index;
24026 var tile = context.tiles[tileIndex];
24027 var layersCount = tile.codingStyleDefaultParameters.layersCount;
24028 var componentsCount = siz.Csiz;
24029 var precinctsSizes = getPrecinctSizesInImageScale(tile);
24030 var precinctsIterationSizes = precinctsSizes;
24031 var l = 0,
24032 r = 0,
24033 c = 0,
24034 px = 0,
24035 py = 0;
24036
24037 this.nextPacket = function JpxImage_nextPacket() {
24038 for (; py < precinctsIterationSizes.maxNumHigh; py++) {
24039 for (; px < precinctsIterationSizes.maxNumWide; px++) {
24040 for (; c < componentsCount; c++) {
24041 var component = tile.components[c];
24042 var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
24043
24044 for (; r <= decompositionLevelsCount; r++) {
24045 var resolution = component.resolutions[r];
24046 var sizeInImageScale = precinctsSizes.components[c].resolutions[r];
24047 var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
24048
24049 if (k === null) {
24050 continue;
24051 }
24052
24053 for (; l < layersCount;) {
24054 var packet = createPacket(resolution, k, l);
24055 l++;
24056 return packet;
24057 }
24058
24059 l = 0;
24060 }
24061
24062 r = 0;
24063 }
24064
24065 c = 0;
24066 }
24067
24068 px = 0;
24069 }
24070
24071 throw new JpxError('Out of packets');
24072 };
24073 }
24074
24075 function ComponentPositionResolutionLayerIterator(context) {
24076 var siz = context.SIZ;
24077 var tileIndex = context.currentTile.index;
24078 var tile = context.tiles[tileIndex];
24079 var layersCount = tile.codingStyleDefaultParameters.layersCount;
24080 var componentsCount = siz.Csiz;
24081 var precinctsSizes = getPrecinctSizesInImageScale(tile);
24082 var l = 0,
24083 r = 0,
24084 c = 0,
24085 px = 0,
24086 py = 0;
24087
24088 this.nextPacket = function JpxImage_nextPacket() {
24089 for (; c < componentsCount; ++c) {
24090 var component = tile.components[c];
24091 var precinctsIterationSizes = precinctsSizes.components[c];
24092 var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
24093
24094 for (; py < precinctsIterationSizes.maxNumHigh; py++) {
24095 for (; px < precinctsIterationSizes.maxNumWide; px++) {
24096 for (; r <= decompositionLevelsCount; r++) {
24097 var resolution = component.resolutions[r];
24098 var sizeInImageScale = precinctsIterationSizes.resolutions[r];
24099 var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
24100
24101 if (k === null) {
24102 continue;
24103 }
24104
24105 for (; l < layersCount;) {
24106 var packet = createPacket(resolution, k, l);
24107 l++;
24108 return packet;
24109 }
24110
24111 l = 0;
24112 }
24113
24114 r = 0;
24115 }
24116
24117 px = 0;
24118 }
24119
24120 py = 0;
24121 }
24122
24123 throw new JpxError('Out of packets');
24124 };
24125 }
24126
24127 function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {
24128 var posX = pxIndex * precinctIterationSizes.minWidth;
24129 var posY = pyIndex * precinctIterationSizes.minHeight;
24130
24131 if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {
24132 return null;
24133 }
24134
24135 var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;
24136 return posX / sizeInImageScale.height + startPrecinctRowIndex;
24137 }
24138
24139 function getPrecinctSizesInImageScale(tile) {
24140 var componentsCount = tile.components.length;
24141 var minWidth = Number.MAX_VALUE;
24142 var minHeight = Number.MAX_VALUE;
24143 var maxNumWide = 0;
24144 var maxNumHigh = 0;
24145 var sizePerComponent = new Array(componentsCount);
24146
24147 for (var c = 0; c < componentsCount; c++) {
24148 var component = tile.components[c];
24149 var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
24150 var sizePerResolution = new Array(decompositionLevelsCount + 1);
24151 var minWidthCurrentComponent = Number.MAX_VALUE;
24152 var minHeightCurrentComponent = Number.MAX_VALUE;
24153 var maxNumWideCurrentComponent = 0;
24154 var maxNumHighCurrentComponent = 0;
24155 var scale = 1;
24156
24157 for (var r = decompositionLevelsCount; r >= 0; --r) {
24158 var resolution = component.resolutions[r];
24159 var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;
24160 var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;
24161 minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);
24162 minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);
24163 maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);
24164 maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);
24165 sizePerResolution[r] = {
24166 width: widthCurrentResolution,
24167 height: heightCurrentResolution
24168 };
24169 scale <<= 1;
24170 }
24171
24172 minWidth = Math.min(minWidth, minWidthCurrentComponent);
24173 minHeight = Math.min(minHeight, minHeightCurrentComponent);
24174 maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);
24175 maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);
24176 sizePerComponent[c] = {
24177 resolutions: sizePerResolution,
24178 minWidth: minWidthCurrentComponent,
24179 minHeight: minHeightCurrentComponent,
24180 maxNumWide: maxNumWideCurrentComponent,
24181 maxNumHigh: maxNumHighCurrentComponent
24182 };
24183 }
24184
24185 return {
24186 components: sizePerComponent,
24187 minWidth: minWidth,
24188 minHeight: minHeight,
24189 maxNumWide: maxNumWide,
24190 maxNumHigh: maxNumHigh
24191 };
24192 }
24193
24194 function buildPackets(context) {
24195 var siz = context.SIZ;
24196 var tileIndex = context.currentTile.index;
24197 var tile = context.tiles[tileIndex];
24198 var componentsCount = siz.Csiz;
24199
24200 for (var c = 0; c < componentsCount; c++) {
24201 var component = tile.components[c];
24202 var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
24203 var resolutions = [];
24204 var subbands = [];
24205
24206 for (var r = 0; r <= decompositionLevelsCount; r++) {
24207 var blocksDimensions = getBlocksDimensions(context, component, r);
24208 var resolution = {};
24209 var scale = 1 << decompositionLevelsCount - r;
24210 resolution.trx0 = Math.ceil(component.tcx0 / scale);
24211 resolution.try0 = Math.ceil(component.tcy0 / scale);
24212 resolution.trx1 = Math.ceil(component.tcx1 / scale);
24213 resolution.try1 = Math.ceil(component.tcy1 / scale);
24214 resolution.resLevel = r;
24215 buildPrecincts(context, resolution, blocksDimensions);
24216 resolutions.push(resolution);
24217 var subband;
24218
24219 if (r === 0) {
24220 subband = {};
24221 subband.type = 'LL';
24222 subband.tbx0 = Math.ceil(component.tcx0 / scale);
24223 subband.tby0 = Math.ceil(component.tcy0 / scale);
24224 subband.tbx1 = Math.ceil(component.tcx1 / scale);
24225 subband.tby1 = Math.ceil(component.tcy1 / scale);
24226 subband.resolution = resolution;
24227 buildCodeblocks(context, subband, blocksDimensions);
24228 subbands.push(subband);
24229 resolution.subbands = [subband];
24230 } else {
24231 var bscale = 1 << decompositionLevelsCount - r + 1;
24232 var resolutionSubbands = [];
24233 subband = {};
24234 subband.type = 'HL';
24235 subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
24236 subband.tby0 = Math.ceil(component.tcy0 / bscale);
24237 subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
24238 subband.tby1 = Math.ceil(component.tcy1 / bscale);
24239 subband.resolution = resolution;
24240 buildCodeblocks(context, subband, blocksDimensions);
24241 subbands.push(subband);
24242 resolutionSubbands.push(subband);
24243 subband = {};
24244 subband.type = 'LH';
24245 subband.tbx0 = Math.ceil(component.tcx0 / bscale);
24246 subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
24247 subband.tbx1 = Math.ceil(component.tcx1 / bscale);
24248 subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
24249 subband.resolution = resolution;
24250 buildCodeblocks(context, subband, blocksDimensions);
24251 subbands.push(subband);
24252 resolutionSubbands.push(subband);
24253 subband = {};
24254 subband.type = 'HH';
24255 subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
24256 subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
24257 subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
24258 subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
24259 subband.resolution = resolution;
24260 buildCodeblocks(context, subband, blocksDimensions);
24261 subbands.push(subband);
24262 resolutionSubbands.push(subband);
24263 resolution.subbands = resolutionSubbands;
24264 }
24265 }
24266
24267 component.resolutions = resolutions;
24268 component.subbands = subbands;
24269 }
24270
24271 var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
24272
24273 switch (progressionOrder) {
24274 case 0:
24275 tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);
24276 break;
24277
24278 case 1:
24279 tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);
24280 break;
24281
24282 case 2:
24283 tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);
24284 break;
24285
24286 case 3:
24287 tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);
24288 break;
24289
24290 case 4:
24291 tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);
24292 break;
24293
24294 default:
24295 throw new JpxError("Unsupported progression order ".concat(progressionOrder));
24296 }
24297 }
24298
24299 function parseTilePackets(context, data, offset, dataLength) {
24300 var position = 0;
24301 var buffer,
24302 bufferSize = 0,
24303 skipNextBit = false;
24304
24305 function readBits(count) {
24306 while (bufferSize < count) {
24307 var b = data[offset + position];
24308 position++;
24309
24310 if (skipNextBit) {
24311 buffer = buffer << 7 | b;
24312 bufferSize += 7;
24313 skipNextBit = false;
24314 } else {
24315 buffer = buffer << 8 | b;
24316 bufferSize += 8;
24317 }
24318
24319 if (b === 0xFF) {
24320 skipNextBit = true;
24321 }
24322 }
24323
24324 bufferSize -= count;
24325 return buffer >>> bufferSize & (1 << count) - 1;
24326 }
24327
24328 function skipMarkerIfEqual(value) {
24329 if (data[offset + position - 1] === 0xFF && data[offset + position] === value) {
24330 skipBytes(1);
24331 return true;
24332 } else if (data[offset + position] === 0xFF && data[offset + position + 1] === value) {
24333 skipBytes(2);
24334 return true;
24335 }
24336
24337 return false;
24338 }
24339
24340 function skipBytes(count) {
24341 position += count;
24342 }
24343
24344 function alignToByte() {
24345 bufferSize = 0;
24346
24347 if (skipNextBit) {
24348 position++;
24349 skipNextBit = false;
24350 }
24351 }
24352
24353 function readCodingpasses() {
24354 if (readBits(1) === 0) {
24355 return 1;
24356 }
24357
24358 if (readBits(1) === 0) {
24359 return 2;
24360 }
24361
24362 var value = readBits(2);
24363
24364 if (value < 3) {
24365 return value + 3;
24366 }
24367
24368 value = readBits(5);
24369
24370 if (value < 31) {
24371 return value + 6;
24372 }
24373
24374 value = readBits(7);
24375 return value + 37;
24376 }
24377
24378 var tileIndex = context.currentTile.index;
24379 var tile = context.tiles[tileIndex];
24380 var sopMarkerUsed = context.COD.sopMarkerUsed;
24381 var ephMarkerUsed = context.COD.ephMarkerUsed;
24382 var packetsIterator = tile.packetsIterator;
24383
24384 while (position < dataLength) {
24385 alignToByte();
24386
24387 if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
24388 skipBytes(4);
24389 }
24390
24391 var packet = packetsIterator.nextPacket();
24392
24393 if (!readBits(1)) {
24394 continue;
24395 }
24396
24397 var layerNumber = packet.layerNumber;
24398 var queue = [],
24399 codeblock;
24400
24401 for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {
24402 codeblock = packet.codeblocks[i];
24403 var precinct = codeblock.precinct;
24404 var codeblockColumn = codeblock.cbx - precinct.cbxMin;
24405 var codeblockRow = codeblock.cby - precinct.cbyMin;
24406 var codeblockIncluded = false;
24407 var firstTimeInclusion = false;
24408 var valueReady;
24409
24410 if (codeblock['included'] !== undefined) {
24411 codeblockIncluded = !!readBits(1);
24412 } else {
24413 precinct = codeblock.precinct;
24414 var inclusionTree, zeroBitPlanesTree;
24415
24416 if (precinct['inclusionTree'] !== undefined) {
24417 inclusionTree = precinct.inclusionTree;
24418 } else {
24419 var width = precinct.cbxMax - precinct.cbxMin + 1;
24420 var height = precinct.cbyMax - precinct.cbyMin + 1;
24421 inclusionTree = new InclusionTree(width, height, layerNumber);
24422 zeroBitPlanesTree = new TagTree(width, height);
24423 precinct.inclusionTree = inclusionTree;
24424 precinct.zeroBitPlanesTree = zeroBitPlanesTree;
24425 }
24426
24427 if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
24428 while (true) {
24429 if (readBits(1)) {
24430 valueReady = !inclusionTree.nextLevel();
24431
24432 if (valueReady) {
24433 codeblock.included = true;
24434 codeblockIncluded = firstTimeInclusion = true;
24435 break;
24436 }
24437 } else {
24438 inclusionTree.incrementValue(layerNumber);
24439 break;
24440 }
24441 }
24442 }
24443 }
24444
24445 if (!codeblockIncluded) {
24446 continue;
24447 }
24448
24449 if (firstTimeInclusion) {
24450 zeroBitPlanesTree = precinct.zeroBitPlanesTree;
24451 zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
24452
24453 while (true) {
24454 if (readBits(1)) {
24455 valueReady = !zeroBitPlanesTree.nextLevel();
24456
24457 if (valueReady) {
24458 break;
24459 }
24460 } else {
24461 zeroBitPlanesTree.incrementValue();
24462 }
24463 }
24464
24465 codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
24466 }
24467
24468 var codingpasses = readCodingpasses();
24469
24470 while (readBits(1)) {
24471 codeblock.Lblock++;
24472 }
24473
24474 var codingpassesLog2 = (0, _util.log2)(codingpasses);
24475 var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;
24476 var codedDataLength = readBits(bits);
24477 queue.push({
24478 codeblock: codeblock,
24479 codingpasses: codingpasses,
24480 dataLength: codedDataLength
24481 });
24482 }
24483
24484 alignToByte();
24485
24486 if (ephMarkerUsed) {
24487 skipMarkerIfEqual(0x92);
24488 }
24489
24490 while (queue.length > 0) {
24491 var packetItem = queue.shift();
24492 codeblock = packetItem.codeblock;
24493
24494 if (codeblock['data'] === undefined) {
24495 codeblock.data = [];
24496 }
24497
24498 codeblock.data.push({
24499 data: data,
24500 start: offset + position,
24501 end: offset + position + packetItem.dataLength,
24502 codingpasses: packetItem.codingpasses
24503 });
24504 position += packetItem.dataLength;
24505 }
24506 }
24507
24508 return position;
24509 }
24510
24511 function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) {
24512 var x0 = subband.tbx0;
24513 var y0 = subband.tby0;
24514 var width = subband.tbx1 - subband.tbx0;
24515 var codeblocks = subband.codeblocks;
24516 var right = subband.type.charAt(0) === 'H' ? 1 : 0;
24517 var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;
24518
24519 for (var i = 0, ii = codeblocks.length; i < ii; ++i) {
24520 var codeblock = codeblocks[i];
24521 var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
24522 var blockHeight = codeblock.tby1_ - codeblock.tby0_;
24523
24524 if (blockWidth === 0 || blockHeight === 0) {
24525 continue;
24526 }
24527
24528 if (codeblock['data'] === undefined) {
24529 continue;
24530 }
24531
24532 var bitModel, currentCodingpassType;
24533 bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);
24534 currentCodingpassType = 2;
24535 var data = codeblock.data,
24536 totalLength = 0,
24537 codingpasses = 0;
24538 var j, jj, dataItem;
24539
24540 for (j = 0, jj = data.length; j < jj; j++) {
24541 dataItem = data[j];
24542 totalLength += dataItem.end - dataItem.start;
24543 codingpasses += dataItem.codingpasses;
24544 }
24545
24546 var encodedData = new Uint8Array(totalLength);
24547 var position = 0;
24548
24549 for (j = 0, jj = data.length; j < jj; j++) {
24550 dataItem = data[j];
24551 var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
24552 encodedData.set(chunk, position);
24553 position += chunk.length;
24554 }
24555
24556 var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);
24557 bitModel.setDecoder(decoder);
24558
24559 for (j = 0; j < codingpasses; j++) {
24560 switch (currentCodingpassType) {
24561 case 0:
24562 bitModel.runSignificancePropagationPass();
24563 break;
24564
24565 case 1:
24566 bitModel.runMagnitudeRefinementPass();
24567 break;
24568
24569 case 2:
24570 bitModel.runCleanupPass();
24571
24572 if (segmentationSymbolUsed) {
24573 bitModel.checkSegmentationSymbol();
24574 }
24575
24576 break;
24577 }
24578
24579 currentCodingpassType = (currentCodingpassType + 1) % 3;
24580 }
24581
24582 var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;
24583 var sign = bitModel.coefficentsSign;
24584 var magnitude = bitModel.coefficentsMagnitude;
24585 var bitsDecoded = bitModel.bitsDecoded;
24586 var magnitudeCorrection = reversible ? 0 : 0.5;
24587 var k, n, nb;
24588 position = 0;
24589 var interleave = subband.type !== 'LL';
24590
24591 for (j = 0; j < blockHeight; j++) {
24592 var row = offset / width | 0;
24593 var levelOffset = 2 * row * (levelWidth - width) + right + bottom;
24594
24595 for (k = 0; k < blockWidth; k++) {
24596 n = magnitude[position];
24597
24598 if (n !== 0) {
24599 n = (n + magnitudeCorrection) * delta;
24600
24601 if (sign[position] !== 0) {
24602 n = -n;
24603 }
24604
24605 nb = bitsDecoded[position];
24606 var pos = interleave ? levelOffset + (offset << 1) : offset;
24607
24608 if (reversible && nb >= mb) {
24609 coefficients[pos] = n;
24610 } else {
24611 coefficients[pos] = n * (1 << mb - nb);
24612 }
24613 }
24614
24615 offset++;
24616 position++;
24617 }
24618
24619 offset += width - blockWidth;
24620 }
24621 }
24622 }
24623
24624 function transformTile(context, tile, c) {
24625 var component = tile.components[c];
24626 var codingStyleParameters = component.codingStyleParameters;
24627 var quantizationParameters = component.quantizationParameters;
24628 var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;
24629 var spqcds = quantizationParameters.SPqcds;
24630 var scalarExpounded = quantizationParameters.scalarExpounded;
24631 var guardBits = quantizationParameters.guardBits;
24632 var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
24633 var precision = context.components[c].precision;
24634 var reversible = codingStyleParameters.reversibleTransformation;
24635 var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();
24636 var subbandCoefficients = [];
24637 var b = 0;
24638
24639 for (var i = 0; i <= decompositionLevelsCount; i++) {
24640 var resolution = component.resolutions[i];
24641 var width = resolution.trx1 - resolution.trx0;
24642 var height = resolution.try1 - resolution.try0;
24643 var coefficients = new Float32Array(width * height);
24644
24645 for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {
24646 var mu, epsilon;
24647
24648 if (!scalarExpounded) {
24649 mu = spqcds[0].mu;
24650 epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
24651 } else {
24652 mu = spqcds[b].mu;
24653 epsilon = spqcds[b].epsilon;
24654 b++;
24655 }
24656
24657 var subband = resolution.subbands[j];
24658 var gainLog2 = SubbandsGainLog2[subband.type];
24659 var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048);
24660 var mb = guardBits + epsilon - 1;
24661 copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
24662 }
24663
24664 subbandCoefficients.push({
24665 width: width,
24666 height: height,
24667 items: coefficients
24668 });
24669 }
24670
24671 var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);
24672 return {
24673 left: component.tcx0,
24674 top: component.tcy0,
24675 width: result.width,
24676 height: result.height,
24677 items: result.items
24678 };
24679 }
24680
24681 function transformComponents(context) {
24682 var siz = context.SIZ;
24683 var components = context.components;
24684 var componentsCount = siz.Csiz;
24685 var resultImages = [];
24686
24687 for (var i = 0, ii = context.tiles.length; i < ii; i++) {
24688 var tile = context.tiles[i];
24689 var transformedTiles = [];
24690 var c;
24691
24692 for (c = 0; c < componentsCount; c++) {
24693 transformedTiles[c] = transformTile(context, tile, c);
24694 }
24695
24696 var tile0 = transformedTiles[0];
24697 var out = new Uint8ClampedArray(tile0.items.length * componentsCount);
24698 var result = {
24699 left: tile0.left,
24700 top: tile0.top,
24701 width: tile0.width,
24702 height: tile0.height,
24703 items: out
24704 };
24705 var shift, offset;
24706 var pos = 0,
24707 j,
24708 jj,
24709 y0,
24710 y1,
24711 y2;
24712
24713 if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
24714 var fourComponents = componentsCount === 4;
24715 var y0items = transformedTiles[0].items;
24716 var y1items = transformedTiles[1].items;
24717 var y2items = transformedTiles[2].items;
24718 var y3items = fourComponents ? transformedTiles[3].items : null;
24719 shift = components[0].precision - 8;
24720 offset = (128 << shift) + 0.5;
24721 var component0 = tile.components[0];
24722 var alpha01 = componentsCount - 3;
24723 jj = y0items.length;
24724
24725 if (!component0.codingStyleParameters.reversibleTransformation) {
24726 for (j = 0; j < jj; j++, pos += alpha01) {
24727 y0 = y0items[j] + offset;
24728 y1 = y1items[j];
24729 y2 = y2items[j];
24730 out[pos++] = y0 + 1.402 * y2 >> shift;
24731 out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;
24732 out[pos++] = y0 + 1.772 * y1 >> shift;
24733 }
24734 } else {
24735 for (j = 0; j < jj; j++, pos += alpha01) {
24736 y0 = y0items[j] + offset;
24737 y1 = y1items[j];
24738 y2 = y2items[j];
24739 var g = y0 - (y2 + y1 >> 2);
24740 out[pos++] = g + y2 >> shift;
24741 out[pos++] = g >> shift;
24742 out[pos++] = g + y1 >> shift;
24743 }
24744 }
24745
24746 if (fourComponents) {
24747 for (j = 0, pos = 3; j < jj; j++, pos += 4) {
24748 out[pos] = y3items[j] + offset >> shift;
24749 }
24750 }
24751 } else {
24752 for (c = 0; c < componentsCount; c++) {
24753 var items = transformedTiles[c].items;
24754 shift = components[c].precision - 8;
24755 offset = (128 << shift) + 0.5;
24756
24757 for (pos = c, j = 0, jj = items.length; j < jj; j++) {
24758 out[pos] = items[j] + offset >> shift;
24759 pos += componentsCount;
24760 }
24761 }
24762 }
24763
24764 resultImages.push(result);
24765 }
24766
24767 return resultImages;
24768 }
24769
24770 function initializeTile(context, tileIndex) {
24771 var siz = context.SIZ;
24772 var componentsCount = siz.Csiz;
24773 var tile = context.tiles[tileIndex];
24774
24775 for (var c = 0; c < componentsCount; c++) {
24776 var component = tile.components[c];
24777 var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;
24778 component.quantizationParameters = qcdOrQcc;
24779 var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;
24780 component.codingStyleParameters = codOrCoc;
24781 }
24782
24783 tile.codingStyleDefaultParameters = context.currentTile.COD;
24784 }
24785
24786 var TagTree = function TagTreeClosure() {
24787 function TagTree(width, height) {
24788 var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;
24789 this.levels = [];
24790
24791 for (var i = 0; i < levelsLength; i++) {
24792 var level = {
24793 width: width,
24794 height: height,
24795 items: []
24796 };
24797 this.levels.push(level);
24798 width = Math.ceil(width / 2);
24799 height = Math.ceil(height / 2);
24800 }
24801 }
24802
24803 TagTree.prototype = {
24804 reset: function TagTree_reset(i, j) {
24805 var currentLevel = 0,
24806 value = 0,
24807 level;
24808
24809 while (currentLevel < this.levels.length) {
24810 level = this.levels[currentLevel];
24811 var index = i + j * level.width;
24812
24813 if (level.items[index] !== undefined) {
24814 value = level.items[index];
24815 break;
24816 }
24817
24818 level.index = index;
24819 i >>= 1;
24820 j >>= 1;
24821 currentLevel++;
24822 }
24823
24824 currentLevel--;
24825 level = this.levels[currentLevel];
24826 level.items[level.index] = value;
24827 this.currentLevel = currentLevel;
24828 delete this.value;
24829 },
24830 incrementValue: function TagTree_incrementValue() {
24831 var level = this.levels[this.currentLevel];
24832 level.items[level.index]++;
24833 },
24834 nextLevel: function TagTree_nextLevel() {
24835 var currentLevel = this.currentLevel;
24836 var level = this.levels[currentLevel];
24837 var value = level.items[level.index];
24838 currentLevel--;
24839
24840 if (currentLevel < 0) {
24841 this.value = value;
24842 return false;
24843 }
24844
24845 this.currentLevel = currentLevel;
24846 level = this.levels[currentLevel];
24847 level.items[level.index] = value;
24848 return true;
24849 }
24850 };
24851 return TagTree;
24852 }();
24853
24854 var InclusionTree = function InclusionTreeClosure() {
24855 function InclusionTree(width, height, defaultValue) {
24856 var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1;
24857 this.levels = [];
24858
24859 for (var i = 0; i < levelsLength; i++) {
24860 var items = new Uint8Array(width * height);
24861
24862 for (var j = 0, jj = items.length; j < jj; j++) {
24863 items[j] = defaultValue;
24864 }
24865
24866 var level = {
24867 width: width,
24868 height: height,
24869 items: items
24870 };
24871 this.levels.push(level);
24872 width = Math.ceil(width / 2);
24873 height = Math.ceil(height / 2);
24874 }
24875 }
24876
24877 InclusionTree.prototype = {
24878 reset: function InclusionTree_reset(i, j, stopValue) {
24879 var currentLevel = 0;
24880
24881 while (currentLevel < this.levels.length) {
24882 var level = this.levels[currentLevel];
24883 var index = i + j * level.width;
24884 level.index = index;
24885 var value = level.items[index];
24886
24887 if (value === 0xFF) {
24888 break;
24889 }
24890
24891 if (value > stopValue) {
24892 this.currentLevel = currentLevel;
24893 this.propagateValues();
24894 return false;
24895 }
24896
24897 i >>= 1;
24898 j >>= 1;
24899 currentLevel++;
24900 }
24901
24902 this.currentLevel = currentLevel - 1;
24903 return true;
24904 },
24905 incrementValue: function InclusionTree_incrementValue(stopValue) {
24906 var level = this.levels[this.currentLevel];
24907 level.items[level.index] = stopValue + 1;
24908 this.propagateValues();
24909 },
24910 propagateValues: function InclusionTree_propagateValues() {
24911 var levelIndex = this.currentLevel;
24912 var level = this.levels[levelIndex];
24913 var currentValue = level.items[level.index];
24914
24915 while (--levelIndex >= 0) {
24916 level = this.levels[levelIndex];
24917 level.items[level.index] = currentValue;
24918 }
24919 },
24920 nextLevel: function InclusionTree_nextLevel() {
24921 var currentLevel = this.currentLevel;
24922 var level = this.levels[currentLevel];
24923 var value = level.items[level.index];
24924 level.items[level.index] = 0xFF;
24925 currentLevel--;
24926
24927 if (currentLevel < 0) {
24928 return false;
24929 }
24930
24931 this.currentLevel = currentLevel;
24932 level = this.levels[currentLevel];
24933 level.items[level.index] = value;
24934 return true;
24935 }
24936 };
24937 return InclusionTree;
24938 }();
24939
24940 var BitModel = function BitModelClosure() {
24941 var UNIFORM_CONTEXT = 17;
24942 var RUNLENGTH_CONTEXT = 18;
24943 var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]);
24944 var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]);
24945 var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]);
24946
24947 function BitModel(width, height, subband, zeroBitPlanes, mb) {
24948 this.width = width;
24949 this.height = height;
24950 this.contextLabelTable = subband === 'HH' ? HHContextLabel : subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel;
24951 var coefficientCount = width * height;
24952 this.neighborsSignificance = new Uint8Array(coefficientCount);
24953 this.coefficentsSign = new Uint8Array(coefficientCount);
24954 this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : mb > 6 ? new Uint16Array(coefficientCount) : new Uint8Array(coefficientCount);
24955 this.processingFlags = new Uint8Array(coefficientCount);
24956 var bitsDecoded = new Uint8Array(coefficientCount);
24957
24958 if (zeroBitPlanes !== 0) {
24959 for (var i = 0; i < coefficientCount; i++) {
24960 bitsDecoded[i] = zeroBitPlanes;
24961 }
24962 }
24963
24964 this.bitsDecoded = bitsDecoded;
24965 this.reset();
24966 }
24967
24968 BitModel.prototype = {
24969 setDecoder: function BitModel_setDecoder(decoder) {
24970 this.decoder = decoder;
24971 },
24972 reset: function BitModel_reset() {
24973 this.contexts = new Int8Array(19);
24974 this.contexts[0] = 4 << 1 | 0;
24975 this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;
24976 this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;
24977 },
24978 setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) {
24979 var neighborsSignificance = this.neighborsSignificance;
24980 var width = this.width,
24981 height = this.height;
24982 var left = column > 0;
24983 var right = column + 1 < width;
24984 var i;
24985
24986 if (row > 0) {
24987 i = index - width;
24988
24989 if (left) {
24990 neighborsSignificance[i - 1] += 0x10;
24991 }
24992
24993 if (right) {
24994 neighborsSignificance[i + 1] += 0x10;
24995 }
24996
24997 neighborsSignificance[i] += 0x04;
24998 }
24999
25000 if (row + 1 < height) {
25001 i = index + width;
25002
25003 if (left) {
25004 neighborsSignificance[i - 1] += 0x10;
25005 }
25006
25007 if (right) {
25008 neighborsSignificance[i + 1] += 0x10;
25009 }
25010
25011 neighborsSignificance[i] += 0x04;
25012 }
25013
25014 if (left) {
25015 neighborsSignificance[index - 1] += 0x01;
25016 }
25017
25018 if (right) {
25019 neighborsSignificance[index + 1] += 0x01;
25020 }
25021
25022 neighborsSignificance[index] |= 0x80;
25023 },
25024 runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() {
25025 var decoder = this.decoder;
25026 var width = this.width,
25027 height = this.height;
25028 var coefficentsMagnitude = this.coefficentsMagnitude;
25029 var coefficentsSign = this.coefficentsSign;
25030 var neighborsSignificance = this.neighborsSignificance;
25031 var processingFlags = this.processingFlags;
25032 var contexts = this.contexts;
25033 var labels = this.contextLabelTable;
25034 var bitsDecoded = this.bitsDecoded;
25035 var processedInverseMask = ~1;
25036 var processedMask = 1;
25037 var firstMagnitudeBitMask = 2;
25038
25039 for (var i0 = 0; i0 < height; i0 += 4) {
25040 for (var j = 0; j < width; j++) {
25041 var index = i0 * width + j;
25042
25043 for (var i1 = 0; i1 < 4; i1++, index += width) {
25044 var i = i0 + i1;
25045
25046 if (i >= height) {
25047 break;
25048 }
25049
25050 processingFlags[index] &= processedInverseMask;
25051
25052 if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {
25053 continue;
25054 }
25055
25056 var contextLabel = labels[neighborsSignificance[index]];
25057 var decision = decoder.readBit(contexts, contextLabel);
25058
25059 if (decision) {
25060 var sign = this.decodeSignBit(i, j, index);
25061 coefficentsSign[index] = sign;
25062 coefficentsMagnitude[index] = 1;
25063 this.setNeighborsSignificance(i, j, index);
25064 processingFlags[index] |= firstMagnitudeBitMask;
25065 }
25066
25067 bitsDecoded[index]++;
25068 processingFlags[index] |= processedMask;
25069 }
25070 }
25071 }
25072 },
25073 decodeSignBit: function BitModel_decodeSignBit(row, column, index) {
25074 var width = this.width,
25075 height = this.height;
25076 var coefficentsMagnitude = this.coefficentsMagnitude;
25077 var coefficentsSign = this.coefficentsSign;
25078 var contribution, sign0, sign1, significance1;
25079 var contextLabel, decoded;
25080 significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;
25081
25082 if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {
25083 sign1 = coefficentsSign[index + 1];
25084
25085 if (significance1) {
25086 sign0 = coefficentsSign[index - 1];
25087 contribution = 1 - sign1 - sign0;
25088 } else {
25089 contribution = 1 - sign1 - sign1;
25090 }
25091 } else if (significance1) {
25092 sign0 = coefficentsSign[index - 1];
25093 contribution = 1 - sign0 - sign0;
25094 } else {
25095 contribution = 0;
25096 }
25097
25098 var horizontalContribution = 3 * contribution;
25099 significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;
25100
25101 if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {
25102 sign1 = coefficentsSign[index + width];
25103
25104 if (significance1) {
25105 sign0 = coefficentsSign[index - width];
25106 contribution = 1 - sign1 - sign0 + horizontalContribution;
25107 } else {
25108 contribution = 1 - sign1 - sign1 + horizontalContribution;
25109 }
25110 } else if (significance1) {
25111 sign0 = coefficentsSign[index - width];
25112 contribution = 1 - sign0 - sign0 + horizontalContribution;
25113 } else {
25114 contribution = horizontalContribution;
25115 }
25116
25117 if (contribution >= 0) {
25118 contextLabel = 9 + contribution;
25119 decoded = this.decoder.readBit(this.contexts, contextLabel);
25120 } else {
25121 contextLabel = 9 - contribution;
25122 decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;
25123 }
25124
25125 return decoded;
25126 },
25127 runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() {
25128 var decoder = this.decoder;
25129 var width = this.width,
25130 height = this.height;
25131 var coefficentsMagnitude = this.coefficentsMagnitude;
25132 var neighborsSignificance = this.neighborsSignificance;
25133 var contexts = this.contexts;
25134 var bitsDecoded = this.bitsDecoded;
25135 var processingFlags = this.processingFlags;
25136 var processedMask = 1;
25137 var firstMagnitudeBitMask = 2;
25138 var length = width * height;
25139 var width4 = width * 4;
25140
25141 for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {
25142 indexNext = Math.min(length, index0 + width4);
25143
25144 for (var j = 0; j < width; j++) {
25145 for (var index = index0 + j; index < indexNext; index += width) {
25146 if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
25147 continue;
25148 }
25149
25150 var contextLabel = 16;
25151
25152 if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {
25153 processingFlags[index] ^= firstMagnitudeBitMask;
25154 var significance = neighborsSignificance[index] & 127;
25155 contextLabel = significance === 0 ? 15 : 14;
25156 }
25157
25158 var bit = decoder.readBit(contexts, contextLabel);
25159 coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;
25160 bitsDecoded[index]++;
25161 processingFlags[index] |= processedMask;
25162 }
25163 }
25164 }
25165 },
25166 runCleanupPass: function BitModel_runCleanupPass() {
25167 var decoder = this.decoder;
25168 var width = this.width,
25169 height = this.height;
25170 var neighborsSignificance = this.neighborsSignificance;
25171 var coefficentsMagnitude = this.coefficentsMagnitude;
25172 var coefficentsSign = this.coefficentsSign;
25173 var contexts = this.contexts;
25174 var labels = this.contextLabelTable;
25175 var bitsDecoded = this.bitsDecoded;
25176 var processingFlags = this.processingFlags;
25177 var processedMask = 1;
25178 var firstMagnitudeBitMask = 2;
25179 var oneRowDown = width;
25180 var twoRowsDown = width * 2;
25181 var threeRowsDown = width * 3;
25182 var iNext;
25183
25184 for (var i0 = 0; i0 < height; i0 = iNext) {
25185 iNext = Math.min(i0 + 4, height);
25186 var indexBase = i0 * width;
25187 var checkAllEmpty = i0 + 3 < height;
25188
25189 for (var j = 0; j < width; j++) {
25190 var index0 = indexBase + j;
25191 var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;
25192 var i1 = 0,
25193 index = index0;
25194 var i = i0,
25195 sign;
25196
25197 if (allEmpty) {
25198 var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);
25199
25200 if (!hasSignificantCoefficent) {
25201 bitsDecoded[index0]++;
25202 bitsDecoded[index0 + oneRowDown]++;
25203 bitsDecoded[index0 + twoRowsDown]++;
25204 bitsDecoded[index0 + threeRowsDown]++;
25205 continue;
25206 }
25207
25208 i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);
25209
25210 if (i1 !== 0) {
25211 i = i0 + i1;
25212 index += i1 * width;
25213 }
25214
25215 sign = this.decodeSignBit(i, j, index);
25216 coefficentsSign[index] = sign;
25217 coefficentsMagnitude[index] = 1;
25218 this.setNeighborsSignificance(i, j, index);
25219 processingFlags[index] |= firstMagnitudeBitMask;
25220 index = index0;
25221
25222 for (var i2 = i0; i2 <= i; i2++, index += width) {
25223 bitsDecoded[index]++;
25224 }
25225
25226 i1++;
25227 }
25228
25229 for (i = i0 + i1; i < iNext; i++, index += width) {
25230 if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
25231 continue;
25232 }
25233
25234 var contextLabel = labels[neighborsSignificance[index]];
25235 var decision = decoder.readBit(contexts, contextLabel);
25236
25237 if (decision === 1) {
25238 sign = this.decodeSignBit(i, j, index);
25239 coefficentsSign[index] = sign;
25240 coefficentsMagnitude[index] = 1;
25241 this.setNeighborsSignificance(i, j, index);
25242 processingFlags[index] |= firstMagnitudeBitMask;
25243 }
25244
25245 bitsDecoded[index]++;
25246 }
25247 }
25248 }
25249 },
25250 checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {
25251 var decoder = this.decoder;
25252 var contexts = this.contexts;
25253 var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);
25254
25255 if (symbol !== 0xA) {
25256 throw new JpxError('Invalid segmentation symbol');
25257 }
25258 }
25259 };
25260 return BitModel;
25261 }();
25262
25263 var Transform = function TransformClosure() {
25264 function Transform() {}
25265
25266 Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) {
25267 var ll = subbands[0];
25268
25269 for (var i = 1, ii = subbands.length; i < ii; i++) {
25270 ll = this.iterate(ll, subbands[i], u0, v0);
25271 }
25272
25273 return ll;
25274 };
25275
25276 Transform.prototype.extend = function extend(buffer, offset, size) {
25277 var i1 = offset - 1,
25278 j1 = offset + 1;
25279 var i2 = offset + size - 2,
25280 j2 = offset + size;
25281 buffer[i1--] = buffer[j1++];
25282 buffer[j2++] = buffer[i2--];
25283 buffer[i1--] = buffer[j1++];
25284 buffer[j2++] = buffer[i2--];
25285 buffer[i1--] = buffer[j1++];
25286 buffer[j2++] = buffer[i2--];
25287 buffer[i1] = buffer[j1];
25288 buffer[j2] = buffer[i2];
25289 };
25290
25291 Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) {
25292 var llWidth = ll.width,
25293 llHeight = ll.height,
25294 llItems = ll.items;
25295 var width = hl_lh_hh.width;
25296 var height = hl_lh_hh.height;
25297 var items = hl_lh_hh.items;
25298 var i, j, k, l, u, v;
25299
25300 for (k = 0, i = 0; i < llHeight; i++) {
25301 l = i * 2 * width;
25302
25303 for (j = 0; j < llWidth; j++, k++, l += 2) {
25304 items[l] = llItems[k];
25305 }
25306 }
25307
25308 llItems = ll.items = null;
25309 var bufferPadding = 4;
25310 var rowBuffer = new Float32Array(width + 2 * bufferPadding);
25311
25312 if (width === 1) {
25313 if ((u0 & 1) !== 0) {
25314 for (v = 0, k = 0; v < height; v++, k += width) {
25315 items[k] *= 0.5;
25316 }
25317 }
25318 } else {
25319 for (v = 0, k = 0; v < height; v++, k += width) {
25320 rowBuffer.set(items.subarray(k, k + width), bufferPadding);
25321 this.extend(rowBuffer, bufferPadding, width);
25322 this.filter(rowBuffer, bufferPadding, width);
25323 items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);
25324 }
25325 }
25326
25327 var numBuffers = 16;
25328 var colBuffers = [];
25329
25330 for (i = 0; i < numBuffers; i++) {
25331 colBuffers.push(new Float32Array(height + 2 * bufferPadding));
25332 }
25333
25334 var b,
25335 currentBuffer = 0;
25336 ll = bufferPadding + height;
25337
25338 if (height === 1) {
25339 if ((v0 & 1) !== 0) {
25340 for (u = 0; u < width; u++) {
25341 items[u] *= 0.5;
25342 }
25343 }
25344 } else {
25345 for (u = 0; u < width; u++) {
25346 if (currentBuffer === 0) {
25347 numBuffers = Math.min(width - u, numBuffers);
25348
25349 for (k = u, l = bufferPadding; l < ll; k += width, l++) {
25350 for (b = 0; b < numBuffers; b++) {
25351 colBuffers[b][l] = items[k + b];
25352 }
25353 }
25354
25355 currentBuffer = numBuffers;
25356 }
25357
25358 currentBuffer--;
25359 var buffer = colBuffers[currentBuffer];
25360 this.extend(buffer, bufferPadding, height);
25361 this.filter(buffer, bufferPadding, height);
25362
25363 if (currentBuffer === 0) {
25364 k = u - numBuffers + 1;
25365
25366 for (l = bufferPadding; l < ll; k += width, l++) {
25367 for (b = 0; b < numBuffers; b++) {
25368 items[k + b] = colBuffers[b][l];
25369 }
25370 }
25371 }
25372 }
25373 }
25374
25375 return {
25376 width: width,
25377 height: height,
25378 items: items
25379 };
25380 };
25381
25382 return Transform;
25383 }();
25384
25385 var IrreversibleTransform = function IrreversibleTransformClosure() {
25386 function IrreversibleTransform() {
25387 Transform.call(this);
25388 }
25389
25390 IrreversibleTransform.prototype = Object.create(Transform.prototype);
25391
25392 IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) {
25393 var len = length >> 1;
25394 offset = offset | 0;
25395 var j, n, current, next;
25396 var alpha = -1.586134342059924;
25397 var beta = -0.052980118572961;
25398 var gamma = 0.882911075530934;
25399 var delta = 0.443506852043971;
25400 var K = 1.230174104914001;
25401 var K_ = 1 / K;
25402 j = offset - 3;
25403
25404 for (n = len + 4; n--; j += 2) {
25405 x[j] *= K_;
25406 }
25407
25408 j = offset - 2;
25409 current = delta * x[j - 1];
25410
25411 for (n = len + 3; n--; j += 2) {
25412 next = delta * x[j + 1];
25413 x[j] = K * x[j] - current - next;
25414
25415 if (n--) {
25416 j += 2;
25417 current = delta * x[j + 1];
25418 x[j] = K * x[j] - current - next;
25419 } else {
25420 break;
25421 }
25422 }
25423
25424 j = offset - 1;
25425 current = gamma * x[j - 1];
25426
25427 for (n = len + 2; n--; j += 2) {
25428 next = gamma * x[j + 1];
25429 x[j] -= current + next;
25430
25431 if (n--) {
25432 j += 2;
25433 current = gamma * x[j + 1];
25434 x[j] -= current + next;
25435 } else {
25436 break;
25437 }
25438 }
25439
25440 j = offset;
25441 current = beta * x[j - 1];
25442
25443 for (n = len + 1; n--; j += 2) {
25444 next = beta * x[j + 1];
25445 x[j] -= current + next;
25446
25447 if (n--) {
25448 j += 2;
25449 current = beta * x[j + 1];
25450 x[j] -= current + next;
25451 } else {
25452 break;
25453 }
25454 }
25455
25456 if (len !== 0) {
25457 j = offset + 1;
25458 current = alpha * x[j - 1];
25459
25460 for (n = len; n--; j += 2) {
25461 next = alpha * x[j + 1];
25462 x[j] -= current + next;
25463
25464 if (n--) {
25465 j += 2;
25466 current = alpha * x[j + 1];
25467 x[j] -= current + next;
25468 } else {
25469 break;
25470 }
25471 }
25472 }
25473 };
25474
25475 return IrreversibleTransform;
25476 }();
25477
25478 var ReversibleTransform = function ReversibleTransformClosure() {
25479 function ReversibleTransform() {
25480 Transform.call(this);
25481 }
25482
25483 ReversibleTransform.prototype = Object.create(Transform.prototype);
25484
25485 ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) {
25486 var len = length >> 1;
25487 offset = offset | 0;
25488 var j, n;
25489
25490 for (j = offset, n = len + 1; n--; j += 2) {
25491 x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;
25492 }
25493
25494 for (j = offset + 1, n = len; n--; j += 2) {
25495 x[j] += x[j - 1] + x[j + 1] >> 1;
25496 }
25497 };
25498
25499 return ReversibleTransform;
25500 }();
25501
25502 return JpxImage;
25503}();
25504
25505exports.JpxImage = JpxImage;
25506
25507/***/ }),
25508/* 168 */
25509/***/ (function(module, exports, __w_pdfjs_require__) {
25510
25511"use strict";
25512
25513
25514Object.defineProperty(exports, "__esModule", {
25515 value: true
25516});
25517exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0;
25518
25519var _util = __w_pdfjs_require__(5);
25520
25521var _primitives = __w_pdfjs_require__(151);
25522
25523var _stream = __w_pdfjs_require__(158);
25524
25525function _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); }
25526
25527function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
25528
25529function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
25530
25531function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
25532
25533function _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); }
25534
25535function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
25536
25537function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
25538
25539function _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); } }
25540
25541function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25542
25543var ARCFourCipher = function ARCFourCipherClosure() {
25544 function ARCFourCipher(key) {
25545 this.a = 0;
25546 this.b = 0;
25547 var s = new Uint8Array(256);
25548 var i,
25549 j = 0,
25550 tmp,
25551 keyLength = key.length;
25552
25553 for (i = 0; i < 256; ++i) {
25554 s[i] = i;
25555 }
25556
25557 for (i = 0; i < 256; ++i) {
25558 tmp = s[i];
25559 j = j + tmp + key[i % keyLength] & 0xFF;
25560 s[i] = s[j];
25561 s[j] = tmp;
25562 }
25563
25564 this.s = s;
25565 }
25566
25567 ARCFourCipher.prototype = {
25568 encryptBlock: function ARCFourCipher_encryptBlock(data) {
25569 var i,
25570 n = data.length,
25571 tmp,
25572 tmp2;
25573 var a = this.a,
25574 b = this.b,
25575 s = this.s;
25576 var output = new Uint8Array(n);
25577
25578 for (i = 0; i < n; ++i) {
25579 a = a + 1 & 0xFF;
25580 tmp = s[a];
25581 b = b + tmp & 0xFF;
25582 tmp2 = s[b];
25583 s[a] = tmp2;
25584 s[b] = tmp;
25585 output[i] = data[i] ^ s[tmp + tmp2 & 0xFF];
25586 }
25587
25588 this.a = a;
25589 this.b = b;
25590 return output;
25591 }
25592 };
25593 ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
25594 return ARCFourCipher;
25595}();
25596
25597exports.ARCFourCipher = ARCFourCipher;
25598
25599var calculateMD5 = function calculateMD5Closure() {
25600 var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
25601 var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);
25602
25603 function hash(data, offset, length) {
25604 var h0 = 1732584193,
25605 h1 = -271733879,
25606 h2 = -1732584194,
25607 h3 = 271733878;
25608 var paddedLength = length + 72 & ~63;
25609 var padded = new Uint8Array(paddedLength);
25610 var i, j, n;
25611
25612 for (i = 0; i < length; ++i) {
25613 padded[i] = data[offset++];
25614 }
25615
25616 padded[i++] = 0x80;
25617 n = paddedLength - 8;
25618
25619 while (i < n) {
25620 padded[i++] = 0;
25621 }
25622
25623 padded[i++] = length << 3 & 0xFF;
25624 padded[i++] = length >> 5 & 0xFF;
25625 padded[i++] = length >> 13 & 0xFF;
25626 padded[i++] = length >> 21 & 0xFF;
25627 padded[i++] = length >>> 29 & 0xFF;
25628 padded[i++] = 0;
25629 padded[i++] = 0;
25630 padded[i++] = 0;
25631 var w = new Int32Array(16);
25632
25633 for (i = 0; i < paddedLength;) {
25634 for (j = 0; j < 16; ++j, i += 4) {
25635 w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;
25636 }
25637
25638 var a = h0,
25639 b = h1,
25640 c = h2,
25641 d = h3,
25642 f,
25643 g;
25644
25645 for (j = 0; j < 64; ++j) {
25646 if (j < 16) {
25647 f = b & c | ~b & d;
25648 g = j;
25649 } else if (j < 32) {
25650 f = d & b | ~d & c;
25651 g = 5 * j + 1 & 15;
25652 } else if (j < 48) {
25653 f = b ^ c ^ d;
25654 g = 3 * j + 5 & 15;
25655 } else {
25656 f = c ^ (b | ~d);
25657 g = 7 * j & 15;
25658 }
25659
25660 var tmp = d,
25661 rotateArg = a + f + k[j] + w[g] | 0,
25662 rotate = r[j];
25663 d = c;
25664 c = b;
25665 b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;
25666 a = tmp;
25667 }
25668
25669 h0 = h0 + a | 0;
25670 h1 = h1 + b | 0;
25671 h2 = h2 + c | 0;
25672 h3 = h3 + d | 0;
25673 }
25674
25675 return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);
25676 }
25677
25678 return hash;
25679}();
25680
25681exports.calculateMD5 = calculateMD5;
25682
25683var Word64 = function Word64Closure() {
25684 function Word64(highInteger, lowInteger) {
25685 this.high = highInteger | 0;
25686 this.low = lowInteger | 0;
25687 }
25688
25689 Word64.prototype = {
25690 and: function Word64_and(word) {
25691 this.high &= word.high;
25692 this.low &= word.low;
25693 },
25694 xor: function Word64_xor(word) {
25695 this.high ^= word.high;
25696 this.low ^= word.low;
25697 },
25698 or: function Word64_or(word) {
25699 this.high |= word.high;
25700 this.low |= word.low;
25701 },
25702 shiftRight: function Word64_shiftRight(places) {
25703 if (places >= 32) {
25704 this.low = this.high >>> places - 32 | 0;
25705 this.high = 0;
25706 } else {
25707 this.low = this.low >>> places | this.high << 32 - places;
25708 this.high = this.high >>> places | 0;
25709 }
25710 },
25711 shiftLeft: function Word64_shiftLeft(places) {
25712 if (places >= 32) {
25713 this.high = this.low << places - 32;
25714 this.low = 0;
25715 } else {
25716 this.high = this.high << places | this.low >>> 32 - places;
25717 this.low = this.low << places;
25718 }
25719 },
25720 rotateRight: function Word64_rotateRight(places) {
25721 var low, high;
25722
25723 if (places & 32) {
25724 high = this.low;
25725 low = this.high;
25726 } else {
25727 low = this.low;
25728 high = this.high;
25729 }
25730
25731 places &= 31;
25732 this.low = low >>> places | high << 32 - places;
25733 this.high = high >>> places | low << 32 - places;
25734 },
25735 not: function Word64_not() {
25736 this.high = ~this.high;
25737 this.low = ~this.low;
25738 },
25739 add: function Word64_add(word) {
25740 var lowAdd = (this.low >>> 0) + (word.low >>> 0);
25741 var highAdd = (this.high >>> 0) + (word.high >>> 0);
25742
25743 if (lowAdd > 0xFFFFFFFF) {
25744 highAdd += 1;
25745 }
25746
25747 this.low = lowAdd | 0;
25748 this.high = highAdd | 0;
25749 },
25750 copyTo: function Word64_copyTo(bytes, offset) {
25751 bytes[offset] = this.high >>> 24 & 0xFF;
25752 bytes[offset + 1] = this.high >> 16 & 0xFF;
25753 bytes[offset + 2] = this.high >> 8 & 0xFF;
25754 bytes[offset + 3] = this.high & 0xFF;
25755 bytes[offset + 4] = this.low >>> 24 & 0xFF;
25756 bytes[offset + 5] = this.low >> 16 & 0xFF;
25757 bytes[offset + 6] = this.low >> 8 & 0xFF;
25758 bytes[offset + 7] = this.low & 0xFF;
25759 },
25760 assign: function Word64_assign(word) {
25761 this.high = word.high;
25762 this.low = word.low;
25763 }
25764 };
25765 return Word64;
25766}();
25767
25768var calculateSHA256 = function calculateSHA256Closure() {
25769 function rotr(x, n) {
25770 return x >>> n | x << 32 - n;
25771 }
25772
25773 function ch(x, y, z) {
25774 return x & y ^ ~x & z;
25775 }
25776
25777 function maj(x, y, z) {
25778 return x & y ^ x & z ^ y & z;
25779 }
25780
25781 function sigma(x) {
25782 return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);
25783 }
25784
25785 function sigmaPrime(x) {
25786 return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);
25787 }
25788
25789 function littleSigma(x) {
25790 return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;
25791 }
25792
25793 function littleSigmaPrime(x) {
25794 return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;
25795 }
25796
25797 var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
25798
25799 function hash(data, offset, length) {
25800 var h0 = 0x6a09e667,
25801 h1 = 0xbb67ae85,
25802 h2 = 0x3c6ef372,
25803 h3 = 0xa54ff53a,
25804 h4 = 0x510e527f,
25805 h5 = 0x9b05688c,
25806 h6 = 0x1f83d9ab,
25807 h7 = 0x5be0cd19;
25808 var paddedLength = Math.ceil((length + 9) / 64) * 64;
25809 var padded = new Uint8Array(paddedLength);
25810 var i, j, n;
25811
25812 for (i = 0; i < length; ++i) {
25813 padded[i] = data[offset++];
25814 }
25815
25816 padded[i++] = 0x80;
25817 n = paddedLength - 8;
25818
25819 while (i < n) {
25820 padded[i++] = 0;
25821 }
25822
25823 padded[i++] = 0;
25824 padded[i++] = 0;
25825 padded[i++] = 0;
25826 padded[i++] = length >>> 29 & 0xFF;
25827 padded[i++] = length >> 21 & 0xFF;
25828 padded[i++] = length >> 13 & 0xFF;
25829 padded[i++] = length >> 5 & 0xFF;
25830 padded[i++] = length << 3 & 0xFF;
25831 var w = new Uint32Array(64);
25832
25833 for (i = 0; i < paddedLength;) {
25834 for (j = 0; j < 16; ++j) {
25835 w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
25836 i += 4;
25837 }
25838
25839 for (j = 16; j < 64; ++j) {
25840 w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;
25841 }
25842
25843 var a = h0,
25844 b = h1,
25845 c = h2,
25846 d = h3,
25847 e = h4,
25848 f = h5,
25849 g = h6,
25850 h = h7,
25851 t1,
25852 t2;
25853
25854 for (j = 0; j < 64; ++j) {
25855 t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];
25856 t2 = sigma(a) + maj(a, b, c);
25857 h = g;
25858 g = f;
25859 f = e;
25860 e = d + t1 | 0;
25861 d = c;
25862 c = b;
25863 b = a;
25864 a = t1 + t2 | 0;
25865 }
25866
25867 h0 = h0 + a | 0;
25868 h1 = h1 + b | 0;
25869 h2 = h2 + c | 0;
25870 h3 = h3 + d | 0;
25871 h4 = h4 + e | 0;
25872 h5 = h5 + f | 0;
25873 h6 = h6 + g | 0;
25874 h7 = h7 + h | 0;
25875 }
25876
25877 return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);
25878 }
25879
25880 return hash;
25881}();
25882
25883exports.calculateSHA256 = calculateSHA256;
25884
25885var calculateSHA512 = function calculateSHA512Closure() {
25886 function ch(result, x, y, z, tmp) {
25887 result.assign(x);
25888 result.and(y);
25889 tmp.assign(x);
25890 tmp.not();
25891 tmp.and(z);
25892 result.xor(tmp);
25893 }
25894
25895 function maj(result, x, y, z, tmp) {
25896 result.assign(x);
25897 result.and(y);
25898 tmp.assign(x);
25899 tmp.and(z);
25900 result.xor(tmp);
25901 tmp.assign(y);
25902 tmp.and(z);
25903 result.xor(tmp);
25904 }
25905
25906 function sigma(result, x, tmp) {
25907 result.assign(x);
25908 result.rotateRight(28);
25909 tmp.assign(x);
25910 tmp.rotateRight(34);
25911 result.xor(tmp);
25912 tmp.assign(x);
25913 tmp.rotateRight(39);
25914 result.xor(tmp);
25915 }
25916
25917 function sigmaPrime(result, x, tmp) {
25918 result.assign(x);
25919 result.rotateRight(14);
25920 tmp.assign(x);
25921 tmp.rotateRight(18);
25922 result.xor(tmp);
25923 tmp.assign(x);
25924 tmp.rotateRight(41);
25925 result.xor(tmp);
25926 }
25927
25928 function littleSigma(result, x, tmp) {
25929 result.assign(x);
25930 result.rotateRight(1);
25931 tmp.assign(x);
25932 tmp.rotateRight(8);
25933 result.xor(tmp);
25934 tmp.assign(x);
25935 tmp.shiftRight(7);
25936 result.xor(tmp);
25937 }
25938
25939 function littleSigmaPrime(result, x, tmp) {
25940 result.assign(x);
25941 result.rotateRight(19);
25942 tmp.assign(x);
25943 tmp.rotateRight(61);
25944 result.xor(tmp);
25945 tmp.assign(x);
25946 tmp.shiftRight(6);
25947 result.xor(tmp);
25948 }
25949
25950 var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];
25951
25952 function hash(data, offset, length, mode384) {
25953 mode384 = !!mode384;
25954 var h0, h1, h2, h3, h4, h5, h6, h7;
25955
25956 if (!mode384) {
25957 h0 = new Word64(0x6a09e667, 0xf3bcc908);
25958 h1 = new Word64(0xbb67ae85, 0x84caa73b);
25959 h2 = new Word64(0x3c6ef372, 0xfe94f82b);
25960 h3 = new Word64(0xa54ff53a, 0x5f1d36f1);
25961 h4 = new Word64(0x510e527f, 0xade682d1);
25962 h5 = new Word64(0x9b05688c, 0x2b3e6c1f);
25963 h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);
25964 h7 = new Word64(0x5be0cd19, 0x137e2179);
25965 } else {
25966 h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);
25967 h1 = new Word64(0x629a292a, 0x367cd507);
25968 h2 = new Word64(0x9159015a, 0x3070dd17);
25969 h3 = new Word64(0x152fecd8, 0xf70e5939);
25970 h4 = new Word64(0x67332667, 0xffc00b31);
25971 h5 = new Word64(0x8eb44a87, 0x68581511);
25972 h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);
25973 h7 = new Word64(0x47b5481d, 0xbefa4fa4);
25974 }
25975
25976 var paddedLength = Math.ceil((length + 17) / 128) * 128;
25977 var padded = new Uint8Array(paddedLength);
25978 var i, j, n;
25979
25980 for (i = 0; i < length; ++i) {
25981 padded[i] = data[offset++];
25982 }
25983
25984 padded[i++] = 0x80;
25985 n = paddedLength - 16;
25986
25987 while (i < n) {
25988 padded[i++] = 0;
25989 }
25990
25991 padded[i++] = 0;
25992 padded[i++] = 0;
25993 padded[i++] = 0;
25994 padded[i++] = 0;
25995 padded[i++] = 0;
25996 padded[i++] = 0;
25997 padded[i++] = 0;
25998 padded[i++] = 0;
25999 padded[i++] = 0;
26000 padded[i++] = 0;
26001 padded[i++] = 0;
26002 padded[i++] = length >>> 29 & 0xFF;
26003 padded[i++] = length >> 21 & 0xFF;
26004 padded[i++] = length >> 13 & 0xFF;
26005 padded[i++] = length >> 5 & 0xFF;
26006 padded[i++] = length << 3 & 0xFF;
26007 var w = new Array(80);
26008
26009 for (i = 0; i < 80; i++) {
26010 w[i] = new Word64(0, 0);
26011 }
26012
26013 var a = new Word64(0, 0),
26014 b = new Word64(0, 0),
26015 c = new Word64(0, 0);
26016 var d = new Word64(0, 0),
26017 e = new Word64(0, 0),
26018 f = new Word64(0, 0);
26019 var g = new Word64(0, 0),
26020 h = new Word64(0, 0);
26021 var t1 = new Word64(0, 0),
26022 t2 = new Word64(0, 0);
26023 var tmp1 = new Word64(0, 0),
26024 tmp2 = new Word64(0, 0),
26025 tmp3;
26026
26027 for (i = 0; i < paddedLength;) {
26028 for (j = 0; j < 16; ++j) {
26029 w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
26030 w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];
26031 i += 8;
26032 }
26033
26034 for (j = 16; j < 80; ++j) {
26035 tmp3 = w[j];
26036 littleSigmaPrime(tmp3, w[j - 2], tmp2);
26037 tmp3.add(w[j - 7]);
26038 littleSigma(tmp1, w[j - 15], tmp2);
26039 tmp3.add(tmp1);
26040 tmp3.add(w[j - 16]);
26041 }
26042
26043 a.assign(h0);
26044 b.assign(h1);
26045 c.assign(h2);
26046 d.assign(h3);
26047 e.assign(h4);
26048 f.assign(h5);
26049 g.assign(h6);
26050 h.assign(h7);
26051
26052 for (j = 0; j < 80; ++j) {
26053 t1.assign(h);
26054 sigmaPrime(tmp1, e, tmp2);
26055 t1.add(tmp1);
26056 ch(tmp1, e, f, g, tmp2);
26057 t1.add(tmp1);
26058 t1.add(k[j]);
26059 t1.add(w[j]);
26060 sigma(t2, a, tmp2);
26061 maj(tmp1, a, b, c, tmp2);
26062 t2.add(tmp1);
26063 tmp3 = h;
26064 h = g;
26065 g = f;
26066 f = e;
26067 d.add(t1);
26068 e = d;
26069 d = c;
26070 c = b;
26071 b = a;
26072 tmp3.assign(t1);
26073 tmp3.add(t2);
26074 a = tmp3;
26075 }
26076
26077 h0.add(a);
26078 h1.add(b);
26079 h2.add(c);
26080 h3.add(d);
26081 h4.add(e);
26082 h5.add(f);
26083 h6.add(g);
26084 h7.add(h);
26085 }
26086
26087 var result;
26088
26089 if (!mode384) {
26090 result = new Uint8Array(64);
26091 h0.copyTo(result, 0);
26092 h1.copyTo(result, 8);
26093 h2.copyTo(result, 16);
26094 h3.copyTo(result, 24);
26095 h4.copyTo(result, 32);
26096 h5.copyTo(result, 40);
26097 h6.copyTo(result, 48);
26098 h7.copyTo(result, 56);
26099 } else {
26100 result = new Uint8Array(48);
26101 h0.copyTo(result, 0);
26102 h1.copyTo(result, 8);
26103 h2.copyTo(result, 16);
26104 h3.copyTo(result, 24);
26105 h4.copyTo(result, 32);
26106 h5.copyTo(result, 40);
26107 }
26108
26109 return result;
26110 }
26111
26112 return hash;
26113}();
26114
26115exports.calculateSHA512 = calculateSHA512;
26116
26117var calculateSHA384 = function calculateSHA384Closure() {
26118 function hash(data, offset, length) {
26119 return calculateSHA512(data, offset, length, true);
26120 }
26121
26122 return hash;
26123}();
26124
26125exports.calculateSHA384 = calculateSHA384;
26126
26127var NullCipher = function NullCipherClosure() {
26128 function NullCipher() {}
26129
26130 NullCipher.prototype = {
26131 decryptBlock: function NullCipher_decryptBlock(data) {
26132 return data;
26133 }
26134 };
26135 return NullCipher;
26136}();
26137
26138var AESBaseCipher =
26139/*#__PURE__*/
26140function () {
26141 function AESBaseCipher() {
26142 _classCallCheck(this, AESBaseCipher);
26143
26144 if (this.constructor === AESBaseCipher) {
26145 (0, _util.unreachable)('Cannot initialize AESBaseCipher.');
26146 }
26147
26148 this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);
26149 this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);
26150 this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
26151 this._mixCol = new Uint8Array(256);
26152
26153 for (var i = 0; i < 256; i++) {
26154 if (i < 128) {
26155 this._mixCol[i] = i << 1;
26156 } else {
26157 this._mixCol[i] = i << 1 ^ 0x1b;
26158 }
26159 }
26160
26161 this.buffer = new Uint8Array(16);
26162 this.bufferPosition = 0;
26163 }
26164
26165 _createClass(AESBaseCipher, [{
26166 key: "_expandKey",
26167 value: function _expandKey(cipherKey) {
26168 (0, _util.unreachable)('Cannot call `_expandKey` on the base class');
26169 }
26170 }, {
26171 key: "_decrypt",
26172 value: function _decrypt(input, key) {
26173 var t, u, v;
26174 var state = new Uint8Array(16);
26175 state.set(input);
26176
26177 for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {
26178 state[j] ^= key[k];
26179 }
26180
26181 for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {
26182 t = state[13];
26183 state[13] = state[9];
26184 state[9] = state[5];
26185 state[5] = state[1];
26186 state[1] = t;
26187 t = state[14];
26188 u = state[10];
26189 state[14] = state[6];
26190 state[10] = state[2];
26191 state[6] = t;
26192 state[2] = u;
26193 t = state[15];
26194 u = state[11];
26195 v = state[7];
26196 state[15] = state[3];
26197 state[11] = t;
26198 state[7] = u;
26199 state[3] = v;
26200
26201 for (var _j = 0; _j < 16; ++_j) {
26202 state[_j] = this._inv_s[state[_j]];
26203 }
26204
26205 for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) {
26206 state[_j2] ^= key[_k];
26207 }
26208
26209 for (var _j3 = 0; _j3 < 16; _j3 += 4) {
26210 var s0 = this._mix[state[_j3]];
26211 var s1 = this._mix[state[_j3 + 1]];
26212 var s2 = this._mix[state[_j3 + 2]];
26213 var s3 = this._mix[state[_j3 + 3]];
26214 t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;
26215 state[_j3] = t >>> 24 & 0xFF;
26216 state[_j3 + 1] = t >> 16 & 0xFF;
26217 state[_j3 + 2] = t >> 8 & 0xFF;
26218 state[_j3 + 3] = t & 0xFF;
26219 }
26220 }
26221
26222 t = state[13];
26223 state[13] = state[9];
26224 state[9] = state[5];
26225 state[5] = state[1];
26226 state[1] = t;
26227 t = state[14];
26228 u = state[10];
26229 state[14] = state[6];
26230 state[10] = state[2];
26231 state[6] = t;
26232 state[2] = u;
26233 t = state[15];
26234 u = state[11];
26235 v = state[7];
26236 state[15] = state[3];
26237 state[11] = t;
26238 state[7] = u;
26239 state[3] = v;
26240
26241 for (var _j4 = 0; _j4 < 16; ++_j4) {
26242 state[_j4] = this._inv_s[state[_j4]];
26243 state[_j4] ^= key[_j4];
26244 }
26245
26246 return state;
26247 }
26248 }, {
26249 key: "_encrypt",
26250 value: function _encrypt(input, key) {
26251 var s = this._s;
26252 var t, u, v;
26253 var state = new Uint8Array(16);
26254 state.set(input);
26255
26256 for (var j = 0; j < 16; ++j) {
26257 state[j] ^= key[j];
26258 }
26259
26260 for (var i = 1; i < this._cyclesOfRepetition; i++) {
26261 for (var _j5 = 0; _j5 < 16; ++_j5) {
26262 state[_j5] = s[state[_j5]];
26263 }
26264
26265 v = state[1];
26266 state[1] = state[5];
26267 state[5] = state[9];
26268 state[9] = state[13];
26269 state[13] = v;
26270 v = state[2];
26271 u = state[6];
26272 state[2] = state[10];
26273 state[6] = state[14];
26274 state[10] = v;
26275 state[14] = u;
26276 v = state[3];
26277 u = state[7];
26278 t = state[11];
26279 state[3] = state[15];
26280 state[7] = v;
26281 state[11] = u;
26282 state[15] = t;
26283
26284 for (var _j6 = 0; _j6 < 16; _j6 += 4) {
26285 var s0 = state[_j6 + 0];
26286 var s1 = state[_j6 + 1];
26287 var s2 = state[_j6 + 2];
26288 var s3 = state[_j6 + 3];
26289 t = s0 ^ s1 ^ s2 ^ s3;
26290 state[_j6 + 0] ^= t ^ this._mixCol[s0 ^ s1];
26291 state[_j6 + 1] ^= t ^ this._mixCol[s1 ^ s2];
26292 state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3];
26293 state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0];
26294 }
26295
26296 for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) {
26297 state[_j7] ^= key[k];
26298 }
26299 }
26300
26301 for (var _j8 = 0; _j8 < 16; ++_j8) {
26302 state[_j8] = s[state[_j8]];
26303 }
26304
26305 v = state[1];
26306 state[1] = state[5];
26307 state[5] = state[9];
26308 state[9] = state[13];
26309 state[13] = v;
26310 v = state[2];
26311 u = state[6];
26312 state[2] = state[10];
26313 state[6] = state[14];
26314 state[10] = v;
26315 state[14] = u;
26316 v = state[3];
26317 u = state[7];
26318 t = state[11];
26319 state[3] = state[15];
26320 state[7] = v;
26321 state[11] = u;
26322 state[15] = t;
26323
26324 for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) {
26325 state[_j9] ^= key[_k2];
26326 }
26327
26328 return state;
26329 }
26330 }, {
26331 key: "_decryptBlock2",
26332 value: function _decryptBlock2(data, finalize) {
26333 var sourceLength = data.length;
26334 var buffer = this.buffer,
26335 bufferLength = this.bufferPosition;
26336 var result = [],
26337 iv = this.iv;
26338
26339 for (var i = 0; i < sourceLength; ++i) {
26340 buffer[bufferLength] = data[i];
26341 ++bufferLength;
26342
26343 if (bufferLength < 16) {
26344 continue;
26345 }
26346
26347 var plain = this._decrypt(buffer, this._key);
26348
26349 for (var j = 0; j < 16; ++j) {
26350 plain[j] ^= iv[j];
26351 }
26352
26353 iv = buffer;
26354 result.push(plain);
26355 buffer = new Uint8Array(16);
26356 bufferLength = 0;
26357 }
26358
26359 this.buffer = buffer;
26360 this.bufferLength = bufferLength;
26361 this.iv = iv;
26362
26363 if (result.length === 0) {
26364 return new Uint8Array(0);
26365 }
26366
26367 var outputLength = 16 * result.length;
26368
26369 if (finalize) {
26370 var lastBlock = result[result.length - 1];
26371 var psLen = lastBlock[15];
26372
26373 if (psLen <= 16) {
26374 for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) {
26375 if (lastBlock[_i] !== psLen) {
26376 psLen = 0;
26377 break;
26378 }
26379 }
26380
26381 outputLength -= psLen;
26382 result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);
26383 }
26384 }
26385
26386 var output = new Uint8Array(outputLength);
26387
26388 for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) {
26389 output.set(result[_i2], _j10);
26390 }
26391
26392 return output;
26393 }
26394 }, {
26395 key: "decryptBlock",
26396 value: function decryptBlock(data, finalize) {
26397 var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
26398 var sourceLength = data.length;
26399 var buffer = this.buffer,
26400 bufferLength = this.bufferPosition;
26401
26402 if (iv) {
26403 this.iv = iv;
26404 } else {
26405 for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {
26406 buffer[bufferLength] = data[i];
26407 }
26408
26409 if (bufferLength < 16) {
26410 this.bufferLength = bufferLength;
26411 return new Uint8Array(0);
26412 }
26413
26414 this.iv = buffer;
26415 data = data.subarray(16);
26416 }
26417
26418 this.buffer = new Uint8Array(16);
26419 this.bufferLength = 0;
26420 this.decryptBlock = this._decryptBlock2;
26421 return this.decryptBlock(data, finalize);
26422 }
26423 }, {
26424 key: "encrypt",
26425 value: function encrypt(data, iv) {
26426 var sourceLength = data.length;
26427 var buffer = this.buffer,
26428 bufferLength = this.bufferPosition;
26429 var result = [];
26430
26431 if (!iv) {
26432 iv = new Uint8Array(16);
26433 }
26434
26435 for (var i = 0; i < sourceLength; ++i) {
26436 buffer[bufferLength] = data[i];
26437 ++bufferLength;
26438
26439 if (bufferLength < 16) {
26440 continue;
26441 }
26442
26443 for (var j = 0; j < 16; ++j) {
26444 buffer[j] ^= iv[j];
26445 }
26446
26447 var cipher = this._encrypt(buffer, this._key);
26448
26449 iv = cipher;
26450 result.push(cipher);
26451 buffer = new Uint8Array(16);
26452 bufferLength = 0;
26453 }
26454
26455 this.buffer = buffer;
26456 this.bufferLength = bufferLength;
26457 this.iv = iv;
26458
26459 if (result.length === 0) {
26460 return new Uint8Array(0);
26461 }
26462
26463 var outputLength = 16 * result.length;
26464 var output = new Uint8Array(outputLength);
26465
26466 for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) {
26467 output.set(result[_i3], _j11);
26468 }
26469
26470 return output;
26471 }
26472 }]);
26473
26474 return AESBaseCipher;
26475}();
26476
26477var AES128Cipher =
26478/*#__PURE__*/
26479function (_AESBaseCipher) {
26480 _inherits(AES128Cipher, _AESBaseCipher);
26481
26482 function AES128Cipher(key) {
26483 var _this;
26484
26485 _classCallCheck(this, AES128Cipher);
26486
26487 _this = _possibleConstructorReturn(this, _getPrototypeOf(AES128Cipher).call(this));
26488 _this._cyclesOfRepetition = 10;
26489 _this._keySize = 160;
26490 _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);
26491 _this._key = _this._expandKey(key);
26492 return _this;
26493 }
26494
26495 _createClass(AES128Cipher, [{
26496 key: "_expandKey",
26497 value: function _expandKey(cipherKey) {
26498 var b = 176;
26499 var s = this._s;
26500 var rcon = this._rcon;
26501 var result = new Uint8Array(b);
26502 result.set(cipherKey);
26503
26504 for (var j = 16, i = 1; j < b; ++i) {
26505 var t1 = result[j - 3];
26506 var t2 = result[j - 2];
26507 var t3 = result[j - 1];
26508 var t4 = result[j - 4];
26509 t1 = s[t1];
26510 t2 = s[t2];
26511 t3 = s[t3];
26512 t4 = s[t4];
26513 t1 = t1 ^ rcon[i];
26514
26515 for (var n = 0; n < 4; ++n) {
26516 result[j] = t1 ^= result[j - 16];
26517 j++;
26518 result[j] = t2 ^= result[j - 16];
26519 j++;
26520 result[j] = t3 ^= result[j - 16];
26521 j++;
26522 result[j] = t4 ^= result[j - 16];
26523 j++;
26524 }
26525 }
26526
26527 return result;
26528 }
26529 }]);
26530
26531 return AES128Cipher;
26532}(AESBaseCipher);
26533
26534exports.AES128Cipher = AES128Cipher;
26535
26536var AES256Cipher =
26537/*#__PURE__*/
26538function (_AESBaseCipher2) {
26539 _inherits(AES256Cipher, _AESBaseCipher2);
26540
26541 function AES256Cipher(key) {
26542 var _this2;
26543
26544 _classCallCheck(this, AES256Cipher);
26545
26546 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(AES256Cipher).call(this));
26547 _this2._cyclesOfRepetition = 14;
26548 _this2._keySize = 224;
26549 _this2._key = _this2._expandKey(key);
26550 return _this2;
26551 }
26552
26553 _createClass(AES256Cipher, [{
26554 key: "_expandKey",
26555 value: function _expandKey(cipherKey) {
26556 var b = 240;
26557 var s = this._s;
26558 var result = new Uint8Array(b);
26559 result.set(cipherKey);
26560 var r = 1;
26561 var t1, t2, t3, t4;
26562
26563 for (var j = 32, i = 1; j < b; ++i) {
26564 if (j % 32 === 16) {
26565 t1 = s[t1];
26566 t2 = s[t2];
26567 t3 = s[t3];
26568 t4 = s[t4];
26569 } else if (j % 32 === 0) {
26570 t1 = result[j - 3];
26571 t2 = result[j - 2];
26572 t3 = result[j - 1];
26573 t4 = result[j - 4];
26574 t1 = s[t1];
26575 t2 = s[t2];
26576 t3 = s[t3];
26577 t4 = s[t4];
26578 t1 = t1 ^ r;
26579
26580 if ((r <<= 1) >= 256) {
26581 r = (r ^ 0x1b) & 0xFF;
26582 }
26583 }
26584
26585 for (var n = 0; n < 4; ++n) {
26586 result[j] = t1 ^= result[j - 32];
26587 j++;
26588 result[j] = t2 ^= result[j - 32];
26589 j++;
26590 result[j] = t3 ^= result[j - 32];
26591 j++;
26592 result[j] = t4 ^= result[j - 32];
26593 j++;
26594 }
26595 }
26596
26597 return result;
26598 }
26599 }]);
26600
26601 return AES256Cipher;
26602}(AESBaseCipher);
26603
26604exports.AES256Cipher = AES256Cipher;
26605
26606var PDF17 = function PDF17Closure() {
26607 function compareByteArrays(array1, array2) {
26608 if (array1.length !== array2.length) {
26609 return false;
26610 }
26611
26612 for (var i = 0; i < array1.length; i++) {
26613 if (array1[i] !== array2[i]) {
26614 return false;
26615 }
26616 }
26617
26618 return true;
26619 }
26620
26621 function PDF17() {}
26622
26623 PDF17.prototype = {
26624 checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
26625 var hashData = new Uint8Array(password.length + 56);
26626 hashData.set(password, 0);
26627 hashData.set(ownerValidationSalt, password.length);
26628 hashData.set(userBytes, password.length + ownerValidationSalt.length);
26629 var result = calculateSHA256(hashData, 0, hashData.length);
26630 return compareByteArrays(result, ownerPassword);
26631 },
26632 checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) {
26633 var hashData = new Uint8Array(password.length + 8);
26634 hashData.set(password, 0);
26635 hashData.set(userValidationSalt, password.length);
26636 var result = calculateSHA256(hashData, 0, hashData.length);
26637 return compareByteArrays(result, userPassword);
26638 },
26639 getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {
26640 var hashData = new Uint8Array(password.length + 56);
26641 hashData.set(password, 0);
26642 hashData.set(ownerKeySalt, password.length);
26643 hashData.set(userBytes, password.length + ownerKeySalt.length);
26644 var key = calculateSHA256(hashData, 0, hashData.length);
26645 var cipher = new AES256Cipher(key);
26646 return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));
26647 },
26648 getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) {
26649 var hashData = new Uint8Array(password.length + 8);
26650 hashData.set(password, 0);
26651 hashData.set(userKeySalt, password.length);
26652 var key = calculateSHA256(hashData, 0, hashData.length);
26653 var cipher = new AES256Cipher(key);
26654 return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));
26655 }
26656 };
26657 return PDF17;
26658}();
26659
26660exports.PDF17 = PDF17;
26661
26662var PDF20 = function PDF20Closure() {
26663 function concatArrays(array1, array2) {
26664 var t = new Uint8Array(array1.length + array2.length);
26665 t.set(array1, 0);
26666 t.set(array2, array1.length);
26667 return t;
26668 }
26669
26670 function calculatePDF20Hash(password, input, userBytes) {
26671 var k = calculateSHA256(input, 0, input.length).subarray(0, 32);
26672 var e = [0];
26673 var i = 0;
26674
26675 while (i < 64 || e[e.length - 1] > i - 32) {
26676 var arrayLength = password.length + k.length + userBytes.length;
26677 var k1 = new Uint8Array(arrayLength * 64);
26678 var array = concatArrays(password, k);
26679 array = concatArrays(array, userBytes);
26680
26681 for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {
26682 k1.set(array, pos);
26683 }
26684
26685 var cipher = new AES128Cipher(k.subarray(0, 16));
26686 e = cipher.encrypt(k1, k.subarray(16, 32));
26687 var remainder = 0;
26688
26689 for (var z = 0; z < 16; z++) {
26690 remainder *= 256 % 3;
26691 remainder %= 3;
26692 remainder += (e[z] >>> 0) % 3;
26693 remainder %= 3;
26694 }
26695
26696 if (remainder === 0) {
26697 k = calculateSHA256(e, 0, e.length);
26698 } else if (remainder === 1) {
26699 k = calculateSHA384(e, 0, e.length);
26700 } else if (remainder === 2) {
26701 k = calculateSHA512(e, 0, e.length);
26702 }
26703
26704 i++;
26705 }
26706
26707 return k.subarray(0, 32);
26708 }
26709
26710 function PDF20() {}
26711
26712 function compareByteArrays(array1, array2) {
26713 if (array1.length !== array2.length) {
26714 return false;
26715 }
26716
26717 for (var i = 0; i < array1.length; i++) {
26718 if (array1[i] !== array2[i]) {
26719 return false;
26720 }
26721 }
26722
26723 return true;
26724 }
26725
26726 PDF20.prototype = {
26727 hash: function PDF20_hash(password, concatBytes, userBytes) {
26728 return calculatePDF20Hash(password, concatBytes, userBytes);
26729 },
26730 checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
26731 var hashData = new Uint8Array(password.length + 56);
26732 hashData.set(password, 0);
26733 hashData.set(ownerValidationSalt, password.length);
26734 hashData.set(userBytes, password.length + ownerValidationSalt.length);
26735 var result = calculatePDF20Hash(password, hashData, userBytes);
26736 return compareByteArrays(result, ownerPassword);
26737 },
26738 checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) {
26739 var hashData = new Uint8Array(password.length + 8);
26740 hashData.set(password, 0);
26741 hashData.set(userValidationSalt, password.length);
26742 var result = calculatePDF20Hash(password, hashData, []);
26743 return compareByteArrays(result, userPassword);
26744 },
26745 getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {
26746 var hashData = new Uint8Array(password.length + 56);
26747 hashData.set(password, 0);
26748 hashData.set(ownerKeySalt, password.length);
26749 hashData.set(userBytes, password.length + ownerKeySalt.length);
26750 var key = calculatePDF20Hash(password, hashData, userBytes);
26751 var cipher = new AES256Cipher(key);
26752 return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));
26753 },
26754 getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {
26755 var hashData = new Uint8Array(password.length + 8);
26756 hashData.set(password, 0);
26757 hashData.set(userKeySalt, password.length);
26758 var key = calculatePDF20Hash(password, hashData, []);
26759 var cipher = new AES256Cipher(key);
26760 return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));
26761 }
26762 };
26763 return PDF20;
26764}();
26765
26766exports.PDF20 = PDF20;
26767
26768var CipherTransform = function CipherTransformClosure() {
26769 function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
26770 this.StringCipherConstructor = stringCipherConstructor;
26771 this.StreamCipherConstructor = streamCipherConstructor;
26772 }
26773
26774 CipherTransform.prototype = {
26775 createStream: function CipherTransform_createStream(stream, length) {
26776 var cipher = new this.StreamCipherConstructor();
26777 return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {
26778 return cipher.decryptBlock(data, finalize);
26779 });
26780 },
26781 decryptString: function CipherTransform_decryptString(s) {
26782 var cipher = new this.StringCipherConstructor();
26783 var data = (0, _util.stringToBytes)(s);
26784 data = cipher.decryptBlock(data, true);
26785 return (0, _util.bytesToString)(data);
26786 }
26787 };
26788 return CipherTransform;
26789}();
26790
26791var CipherTransformFactory = function CipherTransformFactoryClosure() {
26792 var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
26793
26794 function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {
26795 if (password) {
26796 var passwordLength = Math.min(127, password.length);
26797 password = password.subarray(0, passwordLength);
26798 } else {
26799 password = [];
26800 }
26801
26802 var pdfAlgorithm;
26803
26804 if (revision === 6) {
26805 pdfAlgorithm = new PDF20();
26806 } else {
26807 pdfAlgorithm = new PDF17();
26808 }
26809
26810 if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {
26811 return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);
26812 } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {
26813 return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);
26814 }
26815
26816 return null;
26817 }
26818
26819 function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {
26820 var hashDataSize = 40 + ownerPassword.length + fileId.length;
26821 var hashData = new Uint8Array(hashDataSize),
26822 i = 0,
26823 j,
26824 n;
26825
26826 if (password) {
26827 n = Math.min(32, password.length);
26828
26829 for (; i < n; ++i) {
26830 hashData[i] = password[i];
26831 }
26832 }
26833
26834 j = 0;
26835
26836 while (i < 32) {
26837 hashData[i++] = defaultPasswordBytes[j++];
26838 }
26839
26840 for (j = 0, n = ownerPassword.length; j < n; ++j) {
26841 hashData[i++] = ownerPassword[j];
26842 }
26843
26844 hashData[i++] = flags & 0xFF;
26845 hashData[i++] = flags >> 8 & 0xFF;
26846 hashData[i++] = flags >> 16 & 0xFF;
26847 hashData[i++] = flags >>> 24 & 0xFF;
26848
26849 for (j = 0, n = fileId.length; j < n; ++j) {
26850 hashData[i++] = fileId[j];
26851 }
26852
26853 if (revision >= 4 && !encryptMetadata) {
26854 hashData[i++] = 0xFF;
26855 hashData[i++] = 0xFF;
26856 hashData[i++] = 0xFF;
26857 hashData[i++] = 0xFF;
26858 }
26859
26860 var hash = calculateMD5(hashData, 0, i);
26861 var keyLengthInBytes = keyLength >> 3;
26862
26863 if (revision >= 3) {
26864 for (j = 0; j < 50; ++j) {
26865 hash = calculateMD5(hash, 0, keyLengthInBytes);
26866 }
26867 }
26868
26869 var encryptionKey = hash.subarray(0, keyLengthInBytes);
26870 var cipher, checkData;
26871
26872 if (revision >= 3) {
26873 for (i = 0; i < 32; ++i) {
26874 hashData[i] = defaultPasswordBytes[i];
26875 }
26876
26877 for (j = 0, n = fileId.length; j < n; ++j) {
26878 hashData[i++] = fileId[j];
26879 }
26880
26881 cipher = new ARCFourCipher(encryptionKey);
26882 checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
26883 n = encryptionKey.length;
26884 var derivedKey = new Uint8Array(n),
26885 k;
26886
26887 for (j = 1; j <= 19; ++j) {
26888 for (k = 0; k < n; ++k) {
26889 derivedKey[k] = encryptionKey[k] ^ j;
26890 }
26891
26892 cipher = new ARCFourCipher(derivedKey);
26893 checkData = cipher.encryptBlock(checkData);
26894 }
26895
26896 for (j = 0, n = checkData.length; j < n; ++j) {
26897 if (userPassword[j] !== checkData[j]) {
26898 return null;
26899 }
26900 }
26901 } else {
26902 cipher = new ARCFourCipher(encryptionKey);
26903 checkData = cipher.encryptBlock(defaultPasswordBytes);
26904
26905 for (j = 0, n = checkData.length; j < n; ++j) {
26906 if (userPassword[j] !== checkData[j]) {
26907 return null;
26908 }
26909 }
26910 }
26911
26912 return encryptionKey;
26913 }
26914
26915 function decodeUserPassword(password, ownerPassword, revision, keyLength) {
26916 var hashData = new Uint8Array(32),
26917 i = 0,
26918 j,
26919 n;
26920 n = Math.min(32, password.length);
26921
26922 for (; i < n; ++i) {
26923 hashData[i] = password[i];
26924 }
26925
26926 j = 0;
26927
26928 while (i < 32) {
26929 hashData[i++] = defaultPasswordBytes[j++];
26930 }
26931
26932 var hash = calculateMD5(hashData, 0, i);
26933 var keyLengthInBytes = keyLength >> 3;
26934
26935 if (revision >= 3) {
26936 for (j = 0; j < 50; ++j) {
26937 hash = calculateMD5(hash, 0, hash.length);
26938 }
26939 }
26940
26941 var cipher, userPassword;
26942
26943 if (revision >= 3) {
26944 userPassword = ownerPassword;
26945 var derivedKey = new Uint8Array(keyLengthInBytes),
26946 k;
26947
26948 for (j = 19; j >= 0; j--) {
26949 for (k = 0; k < keyLengthInBytes; ++k) {
26950 derivedKey[k] = hash[k] ^ j;
26951 }
26952
26953 cipher = new ARCFourCipher(derivedKey);
26954 userPassword = cipher.encryptBlock(userPassword);
26955 }
26956 } else {
26957 cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));
26958 userPassword = cipher.encryptBlock(ownerPassword);
26959 }
26960
26961 return userPassword;
26962 }
26963
26964 var identityName = _primitives.Name.get('Identity');
26965
26966 function CipherTransformFactory(dict, fileId, password) {
26967 var filter = dict.get('Filter');
26968
26969 if (!(0, _primitives.isName)(filter, 'Standard')) {
26970 throw new _util.FormatError('unknown encryption method');
26971 }
26972
26973 this.dict = dict;
26974 var algorithm = dict.get('V');
26975
26976 if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {
26977 throw new _util.FormatError('unsupported encryption algorithm');
26978 }
26979
26980 this.algorithm = algorithm;
26981 var keyLength = dict.get('Length');
26982
26983 if (!keyLength) {
26984 if (algorithm <= 3) {
26985 keyLength = 40;
26986 } else {
26987 var cfDict = dict.get('CF');
26988 var streamCryptoName = dict.get('StmF');
26989
26990 if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {
26991 cfDict.suppressEncryption = true;
26992 var handlerDict = cfDict.get(streamCryptoName.name);
26993 keyLength = handlerDict && handlerDict.get('Length') || 128;
26994
26995 if (keyLength < 40) {
26996 keyLength <<= 3;
26997 }
26998 }
26999 }
27000 }
27001
27002 if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {
27003 throw new _util.FormatError('invalid key length');
27004 }
27005
27006 var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32);
27007 var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32);
27008 var flags = dict.get('P');
27009 var revision = dict.get('R');
27010 var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get('EncryptMetadata') !== false;
27011 this.encryptMetadata = encryptMetadata;
27012 var fileIdBytes = (0, _util.stringToBytes)(fileId);
27013 var passwordBytes;
27014
27015 if (password) {
27016 if (revision === 6) {
27017 try {
27018 password = (0, _util.utf8StringToString)(password);
27019 } catch (ex) {
27020 (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.');
27021 }
27022 }
27023
27024 passwordBytes = (0, _util.stringToBytes)(password);
27025 }
27026
27027 var encryptionKey;
27028
27029 if (algorithm !== 5) {
27030 encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
27031 } else {
27032 var ownerValidationSalt = (0, _util.stringToBytes)(dict.get('O')).subarray(32, 40);
27033 var ownerKeySalt = (0, _util.stringToBytes)(dict.get('O')).subarray(40, 48);
27034 var uBytes = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 48);
27035 var userValidationSalt = (0, _util.stringToBytes)(dict.get('U')).subarray(32, 40);
27036 var userKeySalt = (0, _util.stringToBytes)(dict.get('U')).subarray(40, 48);
27037 var ownerEncryption = (0, _util.stringToBytes)(dict.get('OE'));
27038 var userEncryption = (0, _util.stringToBytes)(dict.get('UE'));
27039 var perms = (0, _util.stringToBytes)(dict.get('Perms'));
27040 encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);
27041 }
27042
27043 if (!encryptionKey && !password) {
27044 throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD);
27045 } else if (!encryptionKey && password) {
27046 var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);
27047 encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
27048 }
27049
27050 if (!encryptionKey) {
27051 throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD);
27052 }
27053
27054 this.encryptionKey = encryptionKey;
27055
27056 if (algorithm >= 4) {
27057 var cf = dict.get('CF');
27058
27059 if ((0, _primitives.isDict)(cf)) {
27060 cf.suppressEncryption = true;
27061 }
27062
27063 this.cf = cf;
27064 this.stmf = dict.get('StmF') || identityName;
27065 this.strf = dict.get('StrF') || identityName;
27066 this.eff = dict.get('EFF') || this.stmf;
27067 }
27068 }
27069
27070 function buildObjectKey(num, gen, encryptionKey, isAes) {
27071 var key = new Uint8Array(encryptionKey.length + 9),
27072 i,
27073 n;
27074
27075 for (i = 0, n = encryptionKey.length; i < n; ++i) {
27076 key[i] = encryptionKey[i];
27077 }
27078
27079 key[i++] = num & 0xFF;
27080 key[i++] = num >> 8 & 0xFF;
27081 key[i++] = num >> 16 & 0xFF;
27082 key[i++] = gen & 0xFF;
27083 key[i++] = gen >> 8 & 0xFF;
27084
27085 if (isAes) {
27086 key[i++] = 0x73;
27087 key[i++] = 0x41;
27088 key[i++] = 0x6C;
27089 key[i++] = 0x54;
27090 }
27091
27092 var hash = calculateMD5(key, 0, i);
27093 return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
27094 }
27095
27096 function buildCipherConstructor(cf, name, num, gen, key) {
27097 if (!(0, _primitives.isName)(name)) {
27098 throw new _util.FormatError('Invalid crypt filter name.');
27099 }
27100
27101 var cryptFilter = cf.get(name.name);
27102 var cfm;
27103
27104 if (cryptFilter !== null && cryptFilter !== undefined) {
27105 cfm = cryptFilter.get('CFM');
27106 }
27107
27108 if (!cfm || cfm.name === 'None') {
27109 return function cipherTransformFactoryBuildCipherConstructorNone() {
27110 return new NullCipher();
27111 };
27112 }
27113
27114 if (cfm.name === 'V2') {
27115 return function cipherTransformFactoryBuildCipherConstructorV2() {
27116 return new ARCFourCipher(buildObjectKey(num, gen, key, false));
27117 };
27118 }
27119
27120 if (cfm.name === 'AESV2') {
27121 return function cipherTransformFactoryBuildCipherConstructorAESV2() {
27122 return new AES128Cipher(buildObjectKey(num, gen, key, true));
27123 };
27124 }
27125
27126 if (cfm.name === 'AESV3') {
27127 return function cipherTransformFactoryBuildCipherConstructorAESV3() {
27128 return new AES256Cipher(key);
27129 };
27130 }
27131
27132 throw new _util.FormatError('Unknown crypto method');
27133 }
27134
27135 CipherTransformFactory.prototype = {
27136 createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {
27137 if (this.algorithm === 4 || this.algorithm === 5) {
27138 return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));
27139 }
27140
27141 var key = buildObjectKey(num, gen, this.encryptionKey, false);
27142
27143 var cipherConstructor = function buildCipherCipherConstructor() {
27144 return new ARCFourCipher(key);
27145 };
27146
27147 return new CipherTransform(cipherConstructor, cipherConstructor);
27148 }
27149 };
27150 return CipherTransformFactory;
27151}();
27152
27153exports.CipherTransformFactory = CipherTransformFactory;
27154
27155/***/ }),
27156/* 169 */
27157/***/ (function(module, exports, __w_pdfjs_require__) {
27158
27159"use strict";
27160
27161
27162Object.defineProperty(exports, "__esModule", {
27163 value: true
27164});
27165exports.ColorSpace = void 0;
27166
27167var _util = __w_pdfjs_require__(5);
27168
27169var _primitives = __w_pdfjs_require__(151);
27170
27171function _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); }
27172
27173function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
27174
27175function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
27176
27177function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
27178
27179function _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); }
27180
27181function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
27182
27183function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27184
27185function _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); } }
27186
27187function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
27188
27189function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {
27190 var COMPONENTS = 3;
27191 alpha01 = alpha01 !== 1 ? 0 : alpha01;
27192 var xRatio = w1 / w2;
27193 var yRatio = h1 / h2;
27194 var newIndex = 0,
27195 oldIndex;
27196 var xScaled = new Uint16Array(w2);
27197 var w1Scanline = w1 * COMPONENTS;
27198
27199 for (var i = 0; i < w2; i++) {
27200 xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;
27201 }
27202
27203 for (var _i = 0; _i < h2; _i++) {
27204 var py = Math.floor(_i * yRatio) * w1Scanline;
27205
27206 for (var j = 0; j < w2; j++) {
27207 oldIndex = py + xScaled[j];
27208 dest[newIndex++] = src[oldIndex++];
27209 dest[newIndex++] = src[oldIndex++];
27210 dest[newIndex++] = src[oldIndex++];
27211 newIndex += alpha01;
27212 }
27213 }
27214}
27215
27216var ColorSpace =
27217/*#__PURE__*/
27218function () {
27219 function ColorSpace(name, numComps) {
27220 _classCallCheck(this, ColorSpace);
27221
27222 if (this.constructor === ColorSpace) {
27223 (0, _util.unreachable)('Cannot initialize ColorSpace.');
27224 }
27225
27226 this.name = name;
27227 this.numComps = numComps;
27228 }
27229
27230 _createClass(ColorSpace, [{
27231 key: "getRgb",
27232 value: function getRgb(src, srcOffset) {
27233 var rgb = new Uint8ClampedArray(3);
27234 this.getRgbItem(src, srcOffset, rgb, 0);
27235 return rgb;
27236 }
27237 }, {
27238 key: "getRgbItem",
27239 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27240 (0, _util.unreachable)('Should not call ColorSpace.getRgbItem');
27241 }
27242 }, {
27243 key: "getRgbBuffer",
27244 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27245 (0, _util.unreachable)('Should not call ColorSpace.getRgbBuffer');
27246 }
27247 }, {
27248 key: "getOutputLength",
27249 value: function getOutputLength(inputLength, alpha01) {
27250 (0, _util.unreachable)('Should not call ColorSpace.getOutputLength');
27251 }
27252 }, {
27253 key: "isPassthrough",
27254 value: function isPassthrough(bits) {
27255 return false;
27256 }
27257 }, {
27258 key: "isDefaultDecode",
27259 value: function isDefaultDecode(decodeMap, bpc) {
27260 return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
27261 }
27262 }, {
27263 key: "fillRgb",
27264 value: function fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {
27265 var count = originalWidth * originalHeight;
27266 var rgbBuf = null;
27267 var numComponentColors = 1 << bpc;
27268 var needsResizing = originalHeight !== height || originalWidth !== width;
27269
27270 if (this.isPassthrough(bpc)) {
27271 rgbBuf = comps;
27272 } else if (this.numComps === 1 && count > numComponentColors && this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {
27273 var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);
27274
27275 for (var i = 0; i < numComponentColors; i++) {
27276 allColors[i] = i;
27277 }
27278
27279 var colorMap = new Uint8ClampedArray(numComponentColors * 3);
27280 this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);
27281
27282 if (!needsResizing) {
27283 var destPos = 0;
27284
27285 for (var _i2 = 0; _i2 < count; ++_i2) {
27286 var key = comps[_i2] * 3;
27287 dest[destPos++] = colorMap[key];
27288 dest[destPos++] = colorMap[key + 1];
27289 dest[destPos++] = colorMap[key + 2];
27290 destPos += alpha01;
27291 }
27292 } else {
27293 rgbBuf = new Uint8Array(count * 3);
27294 var rgbPos = 0;
27295
27296 for (var _i3 = 0; _i3 < count; ++_i3) {
27297 var _key = comps[_i3] * 3;
27298
27299 rgbBuf[rgbPos++] = colorMap[_key];
27300 rgbBuf[rgbPos++] = colorMap[_key + 1];
27301 rgbBuf[rgbPos++] = colorMap[_key + 2];
27302 }
27303 }
27304 } else {
27305 if (!needsResizing) {
27306 this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);
27307 } else {
27308 rgbBuf = new Uint8ClampedArray(count * 3);
27309 this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);
27310 }
27311 }
27312
27313 if (rgbBuf) {
27314 if (needsResizing) {
27315 resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);
27316 } else {
27317 var _destPos = 0,
27318 _rgbPos = 0;
27319
27320 for (var _i4 = 0, ii = width * actualHeight; _i4 < ii; _i4++) {
27321 dest[_destPos++] = rgbBuf[_rgbPos++];
27322 dest[_destPos++] = rgbBuf[_rgbPos++];
27323 dest[_destPos++] = rgbBuf[_rgbPos++];
27324 _destPos += alpha01;
27325 }
27326 }
27327 }
27328 }
27329 }, {
27330 key: "usesZeroToOneRange",
27331 get: function get() {
27332 return (0, _util.shadow)(this, 'usesZeroToOneRange', true);
27333 }
27334 }], [{
27335 key: "parse",
27336 value: function parse(cs, xref, res, pdfFunctionFactory) {
27337 var IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);
27338 return this.fromIR(IR);
27339 }
27340 }, {
27341 key: "fromIR",
27342 value: function fromIR(IR) {
27343 var name = Array.isArray(IR) ? IR[0] : IR;
27344 var whitePoint, blackPoint, gamma;
27345
27346 switch (name) {
27347 case 'DeviceGrayCS':
27348 return this.singletons.gray;
27349
27350 case 'DeviceRgbCS':
27351 return this.singletons.rgb;
27352
27353 case 'DeviceCmykCS':
27354 return this.singletons.cmyk;
27355
27356 case 'CalGrayCS':
27357 whitePoint = IR[1];
27358 blackPoint = IR[2];
27359 gamma = IR[3];
27360 return new CalGrayCS(whitePoint, blackPoint, gamma);
27361
27362 case 'CalRGBCS':
27363 whitePoint = IR[1];
27364 blackPoint = IR[2];
27365 gamma = IR[3];
27366 var matrix = IR[4];
27367 return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);
27368
27369 case 'PatternCS':
27370 var basePatternCS = IR[1];
27371
27372 if (basePatternCS) {
27373 basePatternCS = this.fromIR(basePatternCS);
27374 }
27375
27376 return new PatternCS(basePatternCS);
27377
27378 case 'IndexedCS':
27379 var baseIndexedCS = IR[1];
27380 var hiVal = IR[2];
27381 var lookup = IR[3];
27382 return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);
27383
27384 case 'AlternateCS':
27385 var numComps = IR[1];
27386 var alt = IR[2];
27387 var tintFn = IR[3];
27388 return new AlternateCS(numComps, this.fromIR(alt), tintFn);
27389
27390 case 'LabCS':
27391 whitePoint = IR[1];
27392 blackPoint = IR[2];
27393 var range = IR[3];
27394 return new LabCS(whitePoint, blackPoint, range);
27395
27396 default:
27397 throw new _util.FormatError("Unknown colorspace name: ".concat(name));
27398 }
27399 }
27400 }, {
27401 key: "parseToIR",
27402 value: function parseToIR(cs, xref) {
27403 var res = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
27404 var pdfFunctionFactory = arguments.length > 3 ? arguments[3] : undefined;
27405 cs = xref.fetchIfRef(cs);
27406
27407 if ((0, _primitives.isName)(cs)) {
27408 switch (cs.name) {
27409 case 'DeviceGray':
27410 case 'G':
27411 return 'DeviceGrayCS';
27412
27413 case 'DeviceRGB':
27414 case 'RGB':
27415 return 'DeviceRgbCS';
27416
27417 case 'DeviceCMYK':
27418 case 'CMYK':
27419 return 'DeviceCmykCS';
27420
27421 case 'Pattern':
27422 return ['PatternCS', null];
27423
27424 default:
27425 if ((0, _primitives.isDict)(res)) {
27426 var colorSpaces = res.get('ColorSpace');
27427
27428 if ((0, _primitives.isDict)(colorSpaces)) {
27429 var resCS = colorSpaces.get(cs.name);
27430
27431 if (resCS) {
27432 if ((0, _primitives.isName)(resCS)) {
27433 return this.parseToIR(resCS, xref, res, pdfFunctionFactory);
27434 }
27435
27436 cs = resCS;
27437 break;
27438 }
27439 }
27440 }
27441
27442 throw new _util.FormatError("unrecognized colorspace ".concat(cs.name));
27443 }
27444 }
27445
27446 if (Array.isArray(cs)) {
27447 var mode = xref.fetchIfRef(cs[0]).name;
27448 var numComps, params, alt, whitePoint, blackPoint, gamma;
27449
27450 switch (mode) {
27451 case 'DeviceGray':
27452 case 'G':
27453 return 'DeviceGrayCS';
27454
27455 case 'DeviceRGB':
27456 case 'RGB':
27457 return 'DeviceRgbCS';
27458
27459 case 'DeviceCMYK':
27460 case 'CMYK':
27461 return 'DeviceCmykCS';
27462
27463 case 'CalGray':
27464 params = xref.fetchIfRef(cs[1]);
27465 whitePoint = params.getArray('WhitePoint');
27466 blackPoint = params.getArray('BlackPoint');
27467 gamma = params.get('Gamma');
27468 return ['CalGrayCS', whitePoint, blackPoint, gamma];
27469
27470 case 'CalRGB':
27471 params = xref.fetchIfRef(cs[1]);
27472 whitePoint = params.getArray('WhitePoint');
27473 blackPoint = params.getArray('BlackPoint');
27474 gamma = params.getArray('Gamma');
27475 var matrix = params.getArray('Matrix');
27476 return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix];
27477
27478 case 'ICCBased':
27479 var stream = xref.fetchIfRef(cs[1]);
27480 var dict = stream.dict;
27481 numComps = dict.get('N');
27482 alt = dict.get('Alternate');
27483
27484 if (alt) {
27485 var altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);
27486 var altCS = this.fromIR(altIR, pdfFunctionFactory);
27487
27488 if (altCS.numComps === numComps) {
27489 return altIR;
27490 }
27491
27492 (0, _util.warn)('ICCBased color space: Ignoring incorrect /Alternate entry.');
27493 }
27494
27495 if (numComps === 1) {
27496 return 'DeviceGrayCS';
27497 } else if (numComps === 3) {
27498 return 'DeviceRgbCS';
27499 } else if (numComps === 4) {
27500 return 'DeviceCmykCS';
27501 }
27502
27503 break;
27504
27505 case 'Pattern':
27506 var basePatternCS = cs[1] || null;
27507
27508 if (basePatternCS) {
27509 basePatternCS = this.parseToIR(basePatternCS, xref, res, pdfFunctionFactory);
27510 }
27511
27512 return ['PatternCS', basePatternCS];
27513
27514 case 'Indexed':
27515 case 'I':
27516 var baseIndexedCS = this.parseToIR(cs[1], xref, res, pdfFunctionFactory);
27517 var hiVal = xref.fetchIfRef(cs[2]) + 1;
27518 var lookup = xref.fetchIfRef(cs[3]);
27519
27520 if ((0, _primitives.isStream)(lookup)) {
27521 lookup = lookup.getBytes();
27522 }
27523
27524 return ['IndexedCS', baseIndexedCS, hiVal, lookup];
27525
27526 case 'Separation':
27527 case 'DeviceN':
27528 var name = xref.fetchIfRef(cs[1]);
27529 numComps = Array.isArray(name) ? name.length : 1;
27530 alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);
27531 var tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));
27532 return ['AlternateCS', numComps, alt, tintFn];
27533
27534 case 'Lab':
27535 params = xref.fetchIfRef(cs[1]);
27536 whitePoint = params.getArray('WhitePoint');
27537 blackPoint = params.getArray('BlackPoint');
27538 var range = params.getArray('Range');
27539 return ['LabCS', whitePoint, blackPoint, range];
27540
27541 default:
27542 throw new _util.FormatError("unimplemented color space object \"".concat(mode, "\""));
27543 }
27544 }
27545
27546 throw new _util.FormatError("unrecognized color space object: \"".concat(cs, "\""));
27547 }
27548 }, {
27549 key: "isDefaultDecode",
27550 value: function isDefaultDecode(decode, numComps) {
27551 if (!Array.isArray(decode)) {
27552 return true;
27553 }
27554
27555 if (numComps * 2 !== decode.length) {
27556 (0, _util.warn)('The decode map is not the correct length');
27557 return true;
27558 }
27559
27560 for (var i = 0, ii = decode.length; i < ii; i += 2) {
27561 if (decode[i] !== 0 || decode[i + 1] !== 1) {
27562 return false;
27563 }
27564 }
27565
27566 return true;
27567 }
27568 }, {
27569 key: "singletons",
27570 get: function get() {
27571 return (0, _util.shadow)(this, 'singletons', {
27572 get gray() {
27573 return (0, _util.shadow)(this, 'gray', new DeviceGrayCS());
27574 },
27575
27576 get rgb() {
27577 return (0, _util.shadow)(this, 'rgb', new DeviceRgbCS());
27578 },
27579
27580 get cmyk() {
27581 return (0, _util.shadow)(this, 'cmyk', new DeviceCmykCS());
27582 }
27583
27584 });
27585 }
27586 }]);
27587
27588 return ColorSpace;
27589}();
27590
27591exports.ColorSpace = ColorSpace;
27592
27593var AlternateCS =
27594/*#__PURE__*/
27595function (_ColorSpace) {
27596 _inherits(AlternateCS, _ColorSpace);
27597
27598 function AlternateCS(numComps, base, tintFn) {
27599 var _this;
27600
27601 _classCallCheck(this, AlternateCS);
27602
27603 _this = _possibleConstructorReturn(this, _getPrototypeOf(AlternateCS).call(this, 'Alternate', numComps));
27604 _this.base = base;
27605 _this.tintFn = tintFn;
27606 _this.tmpBuf = new Float32Array(base.numComps);
27607 return _this;
27608 }
27609
27610 _createClass(AlternateCS, [{
27611 key: "getRgbItem",
27612 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27613 var tmpBuf = this.tmpBuf;
27614 this.tintFn(src, srcOffset, tmpBuf, 0);
27615 this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
27616 }
27617 }, {
27618 key: "getRgbBuffer",
27619 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27620 var tintFn = this.tintFn;
27621 var base = this.base;
27622 var scale = 1 / ((1 << bits) - 1);
27623 var baseNumComps = base.numComps;
27624 var usesZeroToOneRange = base.usesZeroToOneRange;
27625 var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;
27626 var pos = isPassthrough ? destOffset : 0;
27627 var baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);
27628 var numComps = this.numComps;
27629 var scaled = new Float32Array(numComps);
27630 var tinted = new Float32Array(baseNumComps);
27631 var i, j;
27632
27633 for (i = 0; i < count; i++) {
27634 for (j = 0; j < numComps; j++) {
27635 scaled[j] = src[srcOffset++] * scale;
27636 }
27637
27638 tintFn(scaled, 0, tinted, 0);
27639
27640 if (usesZeroToOneRange) {
27641 for (j = 0; j < baseNumComps; j++) {
27642 baseBuf[pos++] = tinted[j] * 255;
27643 }
27644 } else {
27645 base.getRgbItem(tinted, 0, baseBuf, pos);
27646 pos += baseNumComps;
27647 }
27648 }
27649
27650 if (!isPassthrough) {
27651 base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);
27652 }
27653 }
27654 }, {
27655 key: "getOutputLength",
27656 value: function getOutputLength(inputLength, alpha01) {
27657 return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);
27658 }
27659 }]);
27660
27661 return AlternateCS;
27662}(ColorSpace);
27663
27664var PatternCS =
27665/*#__PURE__*/
27666function (_ColorSpace2) {
27667 _inherits(PatternCS, _ColorSpace2);
27668
27669 function PatternCS(baseCS) {
27670 var _this2;
27671
27672 _classCallCheck(this, PatternCS);
27673
27674 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(PatternCS).call(this, 'Pattern', null));
27675 _this2.base = baseCS;
27676 return _this2;
27677 }
27678
27679 _createClass(PatternCS, [{
27680 key: "isDefaultDecode",
27681 value: function isDefaultDecode(decodeMap, bpc) {
27682 (0, _util.unreachable)('Should not call PatternCS.isDefaultDecode');
27683 }
27684 }]);
27685
27686 return PatternCS;
27687}(ColorSpace);
27688
27689var IndexedCS =
27690/*#__PURE__*/
27691function (_ColorSpace3) {
27692 _inherits(IndexedCS, _ColorSpace3);
27693
27694 function IndexedCS(base, highVal, lookup) {
27695 var _this3;
27696
27697 _classCallCheck(this, IndexedCS);
27698
27699 _this3 = _possibleConstructorReturn(this, _getPrototypeOf(IndexedCS).call(this, 'Indexed', 1));
27700 _this3.base = base;
27701 _this3.highVal = highVal;
27702 var baseNumComps = base.numComps;
27703 var length = baseNumComps * highVal;
27704
27705 if ((0, _primitives.isStream)(lookup)) {
27706 _this3.lookup = new Uint8Array(length);
27707 var bytes = lookup.getBytes(length);
27708
27709 _this3.lookup.set(bytes);
27710 } else if ((0, _util.isString)(lookup)) {
27711 _this3.lookup = new Uint8Array(length);
27712
27713 for (var i = 0; i < length; ++i) {
27714 _this3.lookup[i] = lookup.charCodeAt(i);
27715 }
27716 } else if (lookup instanceof Uint8Array) {
27717 _this3.lookup = lookup;
27718 } else {
27719 throw new _util.FormatError("Unrecognized lookup table: ".concat(lookup));
27720 }
27721
27722 return _this3;
27723 }
27724
27725 _createClass(IndexedCS, [{
27726 key: "getRgbItem",
27727 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27728 var numComps = this.base.numComps;
27729 var start = src[srcOffset] * numComps;
27730 this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);
27731 }
27732 }, {
27733 key: "getRgbBuffer",
27734 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27735 var base = this.base;
27736 var numComps = base.numComps;
27737 var outputDelta = base.getOutputLength(numComps, alpha01);
27738 var lookup = this.lookup;
27739
27740 for (var i = 0; i < count; ++i) {
27741 var lookupPos = src[srcOffset++] * numComps;
27742 base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
27743 destOffset += outputDelta;
27744 }
27745 }
27746 }, {
27747 key: "getOutputLength",
27748 value: function getOutputLength(inputLength, alpha01) {
27749 return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
27750 }
27751 }, {
27752 key: "isDefaultDecode",
27753 value: function isDefaultDecode(decodeMap, bpc) {
27754 if (!Array.isArray(decodeMap)) {
27755 return true;
27756 }
27757
27758 if (decodeMap.length !== 2) {
27759 (0, _util.warn)('Decode map length is not correct');
27760 return true;
27761 }
27762
27763 if (!Number.isInteger(bpc) || bpc < 1) {
27764 (0, _util.warn)('Bits per component is not correct');
27765 return true;
27766 }
27767
27768 return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;
27769 }
27770 }]);
27771
27772 return IndexedCS;
27773}(ColorSpace);
27774
27775var DeviceGrayCS =
27776/*#__PURE__*/
27777function (_ColorSpace4) {
27778 _inherits(DeviceGrayCS, _ColorSpace4);
27779
27780 function DeviceGrayCS() {
27781 _classCallCheck(this, DeviceGrayCS);
27782
27783 return _possibleConstructorReturn(this, _getPrototypeOf(DeviceGrayCS).call(this, 'DeviceGray', 1));
27784 }
27785
27786 _createClass(DeviceGrayCS, [{
27787 key: "getRgbItem",
27788 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27789 var c = src[srcOffset] * 255;
27790 dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;
27791 }
27792 }, {
27793 key: "getRgbBuffer",
27794 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27795 var scale = 255 / ((1 << bits) - 1);
27796 var j = srcOffset,
27797 q = destOffset;
27798
27799 for (var i = 0; i < count; ++i) {
27800 var c = scale * src[j++];
27801 dest[q++] = c;
27802 dest[q++] = c;
27803 dest[q++] = c;
27804 q += alpha01;
27805 }
27806 }
27807 }, {
27808 key: "getOutputLength",
27809 value: function getOutputLength(inputLength, alpha01) {
27810 return inputLength * (3 + alpha01);
27811 }
27812 }]);
27813
27814 return DeviceGrayCS;
27815}(ColorSpace);
27816
27817var DeviceRgbCS =
27818/*#__PURE__*/
27819function (_ColorSpace5) {
27820 _inherits(DeviceRgbCS, _ColorSpace5);
27821
27822 function DeviceRgbCS() {
27823 _classCallCheck(this, DeviceRgbCS);
27824
27825 return _possibleConstructorReturn(this, _getPrototypeOf(DeviceRgbCS).call(this, 'DeviceRGB', 3));
27826 }
27827
27828 _createClass(DeviceRgbCS, [{
27829 key: "getRgbItem",
27830 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27831 dest[destOffset] = src[srcOffset] * 255;
27832 dest[destOffset + 1] = src[srcOffset + 1] * 255;
27833 dest[destOffset + 2] = src[srcOffset + 2] * 255;
27834 }
27835 }, {
27836 key: "getRgbBuffer",
27837 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27838 if (bits === 8 && alpha01 === 0) {
27839 dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);
27840 return;
27841 }
27842
27843 var scale = 255 / ((1 << bits) - 1);
27844 var j = srcOffset,
27845 q = destOffset;
27846
27847 for (var i = 0; i < count; ++i) {
27848 dest[q++] = scale * src[j++];
27849 dest[q++] = scale * src[j++];
27850 dest[q++] = scale * src[j++];
27851 q += alpha01;
27852 }
27853 }
27854 }, {
27855 key: "getOutputLength",
27856 value: function getOutputLength(inputLength, alpha01) {
27857 return inputLength * (3 + alpha01) / 3 | 0;
27858 }
27859 }, {
27860 key: "isPassthrough",
27861 value: function isPassthrough(bits) {
27862 return bits === 8;
27863 }
27864 }]);
27865
27866 return DeviceRgbCS;
27867}(ColorSpace);
27868
27869var DeviceCmykCS = function DeviceCmykCSClosure() {
27870 function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {
27871 var c = src[srcOffset] * srcScale;
27872 var m = src[srcOffset + 1] * srcScale;
27873 var y = src[srcOffset + 2] * srcScale;
27874 var k = src[srcOffset + 3] * srcScale;
27875 dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);
27876 dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);
27877 dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);
27878 }
27879
27880 var DeviceCmykCS =
27881 /*#__PURE__*/
27882 function (_ColorSpace6) {
27883 _inherits(DeviceCmykCS, _ColorSpace6);
27884
27885 function DeviceCmykCS() {
27886 _classCallCheck(this, DeviceCmykCS);
27887
27888 return _possibleConstructorReturn(this, _getPrototypeOf(DeviceCmykCS).call(this, 'DeviceCMYK', 4));
27889 }
27890
27891 _createClass(DeviceCmykCS, [{
27892 key: "getRgbItem",
27893 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27894 convertToRgb(src, srcOffset, 1, dest, destOffset);
27895 }
27896 }, {
27897 key: "getRgbBuffer",
27898 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27899 var scale = 1 / ((1 << bits) - 1);
27900
27901 for (var i = 0; i < count; i++) {
27902 convertToRgb(src, srcOffset, scale, dest, destOffset);
27903 srcOffset += 4;
27904 destOffset += 3 + alpha01;
27905 }
27906 }
27907 }, {
27908 key: "getOutputLength",
27909 value: function getOutputLength(inputLength, alpha01) {
27910 return inputLength / 4 * (3 + alpha01) | 0;
27911 }
27912 }]);
27913
27914 return DeviceCmykCS;
27915 }(ColorSpace);
27916
27917 return DeviceCmykCS;
27918}();
27919
27920var CalGrayCS = function CalGrayCSClosure() {
27921 function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
27922 var A = src[srcOffset] * scale;
27923 var AG = Math.pow(A, cs.G);
27924 var L = cs.YW * AG;
27925 var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0);
27926 dest[destOffset] = val;
27927 dest[destOffset + 1] = val;
27928 dest[destOffset + 2] = val;
27929 }
27930
27931 var CalGrayCS =
27932 /*#__PURE__*/
27933 function (_ColorSpace7) {
27934 _inherits(CalGrayCS, _ColorSpace7);
27935
27936 function CalGrayCS(whitePoint, blackPoint, gamma) {
27937 var _this4;
27938
27939 _classCallCheck(this, CalGrayCS);
27940
27941 _this4 = _possibleConstructorReturn(this, _getPrototypeOf(CalGrayCS).call(this, 'CalGray', 1));
27942
27943 if (!whitePoint) {
27944 throw new _util.FormatError('WhitePoint missing - required for color space CalGray');
27945 }
27946
27947 blackPoint = blackPoint || [0, 0, 0];
27948 gamma = gamma || 1;
27949 _this4.XW = whitePoint[0];
27950 _this4.YW = whitePoint[1];
27951 _this4.ZW = whitePoint[2];
27952 _this4.XB = blackPoint[0];
27953 _this4.YB = blackPoint[1];
27954 _this4.ZB = blackPoint[2];
27955 _this4.G = gamma;
27956
27957 if (_this4.XW < 0 || _this4.ZW < 0 || _this4.YW !== 1) {
27958 throw new _util.FormatError("Invalid WhitePoint components for ".concat(_this4.name) + ', no fallback available');
27959 }
27960
27961 if (_this4.XB < 0 || _this4.YB < 0 || _this4.ZB < 0) {
27962 (0, _util.info)("Invalid BlackPoint for ".concat(_this4.name, ", falling back to default."));
27963 _this4.XB = _this4.YB = _this4.ZB = 0;
27964 }
27965
27966 if (_this4.XB !== 0 || _this4.YB !== 0 || _this4.ZB !== 0) {
27967 (0, _util.warn)("".concat(_this4.name, ", BlackPoint: XB: ").concat(_this4.XB, ", YB: ").concat(_this4.YB, ", ") + "ZB: ".concat(_this4.ZB, ", only default values are supported."));
27968 }
27969
27970 if (_this4.G < 1) {
27971 (0, _util.info)("Invalid Gamma: ".concat(_this4.G, " for ").concat(_this4.name, ", ") + 'falling back to default.');
27972 _this4.G = 1;
27973 }
27974
27975 return _this4;
27976 }
27977
27978 _createClass(CalGrayCS, [{
27979 key: "getRgbItem",
27980 value: function getRgbItem(src, srcOffset, dest, destOffset) {
27981 convertToRgb(this, src, srcOffset, dest, destOffset, 1);
27982 }
27983 }, {
27984 key: "getRgbBuffer",
27985 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
27986 var scale = 1 / ((1 << bits) - 1);
27987
27988 for (var i = 0; i < count; ++i) {
27989 convertToRgb(this, src, srcOffset, dest, destOffset, scale);
27990 srcOffset += 1;
27991 destOffset += 3 + alpha01;
27992 }
27993 }
27994 }, {
27995 key: "getOutputLength",
27996 value: function getOutputLength(inputLength, alpha01) {
27997 return inputLength * (3 + alpha01);
27998 }
27999 }]);
28000
28001 return CalGrayCS;
28002 }(ColorSpace);
28003
28004 return CalGrayCS;
28005}();
28006
28007var CalRGBCS = function CalRGBCSClosure() {
28008 var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);
28009 var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);
28010 var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);
28011 var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);
28012 var tempNormalizeMatrix = new Float32Array(3);
28013 var tempConvertMatrix1 = new Float32Array(3);
28014 var tempConvertMatrix2 = new Float32Array(3);
28015 var DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0;
28016
28017 function matrixProduct(a, b, result) {
28018 result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
28019 result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];
28020 result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];
28021 }
28022
28023 function convertToFlat(sourceWhitePoint, LMS, result) {
28024 result[0] = LMS[0] * 1 / sourceWhitePoint[0];
28025 result[1] = LMS[1] * 1 / sourceWhitePoint[1];
28026 result[2] = LMS[2] * 1 / sourceWhitePoint[2];
28027 }
28028
28029 function convertToD65(sourceWhitePoint, LMS, result) {
28030 var D65X = 0.95047;
28031 var D65Y = 1;
28032 var D65Z = 1.08883;
28033 result[0] = LMS[0] * D65X / sourceWhitePoint[0];
28034 result[1] = LMS[1] * D65Y / sourceWhitePoint[1];
28035 result[2] = LMS[2] * D65Z / sourceWhitePoint[2];
28036 }
28037
28038 function sRGBTransferFunction(color) {
28039 if (color <= 0.0031308) {
28040 return adjustToRange(0, 1, 12.92 * color);
28041 }
28042
28043 return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);
28044 }
28045
28046 function adjustToRange(min, max, value) {
28047 return Math.max(min, Math.min(max, value));
28048 }
28049
28050 function decodeL(L) {
28051 if (L < 0) {
28052 return -decodeL(-L);
28053 }
28054
28055 if (L > 8.0) {
28056 return Math.pow((L + 16) / 116, 3);
28057 }
28058
28059 return L * DECODE_L_CONSTANT;
28060 }
28061
28062 function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {
28063 if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {
28064 result[0] = XYZ_Flat[0];
28065 result[1] = XYZ_Flat[1];
28066 result[2] = XYZ_Flat[2];
28067 return;
28068 }
28069
28070 var zeroDecodeL = decodeL(0);
28071 var X_DST = zeroDecodeL;
28072 var X_SRC = decodeL(sourceBlackPoint[0]);
28073 var Y_DST = zeroDecodeL;
28074 var Y_SRC = decodeL(sourceBlackPoint[1]);
28075 var Z_DST = zeroDecodeL;
28076 var Z_SRC = decodeL(sourceBlackPoint[2]);
28077 var X_Scale = (1 - X_DST) / (1 - X_SRC);
28078 var X_Offset = 1 - X_Scale;
28079 var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);
28080 var Y_Offset = 1 - Y_Scale;
28081 var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);
28082 var Z_Offset = 1 - Z_Scale;
28083 result[0] = XYZ_Flat[0] * X_Scale + X_Offset;
28084 result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;
28085 result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;
28086 }
28087
28088 function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {
28089 if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {
28090 result[0] = XYZ_In[0];
28091 result[1] = XYZ_In[1];
28092 result[2] = XYZ_In[2];
28093 return;
28094 }
28095
28096 var LMS = result;
28097 matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
28098 var LMS_Flat = tempNormalizeMatrix;
28099 convertToFlat(sourceWhitePoint, LMS, LMS_Flat);
28100 matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);
28101 }
28102
28103 function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {
28104 var LMS = result;
28105 matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
28106 var LMS_D65 = tempNormalizeMatrix;
28107 convertToD65(sourceWhitePoint, LMS, LMS_D65);
28108 matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);
28109 }
28110
28111 function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
28112 var A = adjustToRange(0, 1, src[srcOffset] * scale);
28113 var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);
28114 var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);
28115 var AGR = Math.pow(A, cs.GR);
28116 var BGG = Math.pow(B, cs.GG);
28117 var CGB = Math.pow(C, cs.GB);
28118 var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;
28119 var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;
28120 var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;
28121 var XYZ = tempConvertMatrix1;
28122 XYZ[0] = X;
28123 XYZ[1] = Y;
28124 XYZ[2] = Z;
28125 var XYZ_Flat = tempConvertMatrix2;
28126 normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);
28127 var XYZ_Black = tempConvertMatrix1;
28128 compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);
28129 var XYZ_D65 = tempConvertMatrix2;
28130 normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);
28131 var SRGB = tempConvertMatrix1;
28132 matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);
28133 dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;
28134 dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;
28135 dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;
28136 }
28137
28138 var CalRGBCS =
28139 /*#__PURE__*/
28140 function (_ColorSpace8) {
28141 _inherits(CalRGBCS, _ColorSpace8);
28142
28143 function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {
28144 var _this5;
28145
28146 _classCallCheck(this, CalRGBCS);
28147
28148 _this5 = _possibleConstructorReturn(this, _getPrototypeOf(CalRGBCS).call(this, 'CalRGB', 3));
28149
28150 if (!whitePoint) {
28151 throw new _util.FormatError('WhitePoint missing - required for color space CalRGB');
28152 }
28153
28154 blackPoint = blackPoint || new Float32Array(3);
28155 gamma = gamma || new Float32Array([1, 1, 1]);
28156 matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
28157 var XW = whitePoint[0];
28158 var YW = whitePoint[1];
28159 var ZW = whitePoint[2];
28160 _this5.whitePoint = whitePoint;
28161 var XB = blackPoint[0];
28162 var YB = blackPoint[1];
28163 var ZB = blackPoint[2];
28164 _this5.blackPoint = blackPoint;
28165 _this5.GR = gamma[0];
28166 _this5.GG = gamma[1];
28167 _this5.GB = gamma[2];
28168 _this5.MXA = matrix[0];
28169 _this5.MYA = matrix[1];
28170 _this5.MZA = matrix[2];
28171 _this5.MXB = matrix[3];
28172 _this5.MYB = matrix[4];
28173 _this5.MZB = matrix[5];
28174 _this5.MXC = matrix[6];
28175 _this5.MYC = matrix[7];
28176 _this5.MZC = matrix[8];
28177
28178 if (XW < 0 || ZW < 0 || YW !== 1) {
28179 throw new _util.FormatError("Invalid WhitePoint components for ".concat(_this5.name) + ', no fallback available');
28180 }
28181
28182 if (XB < 0 || YB < 0 || ZB < 0) {
28183 (0, _util.info)("Invalid BlackPoint for ".concat(_this5.name, " [").concat(XB, ", ").concat(YB, ", ").concat(ZB, "], ") + 'falling back to default.');
28184 _this5.blackPoint = new Float32Array(3);
28185 }
28186
28187 if (_this5.GR < 0 || _this5.GG < 0 || _this5.GB < 0) {
28188 (0, _util.info)("Invalid Gamma [".concat(_this5.GR, ", ").concat(_this5.GG, ", ").concat(_this5.GB, "] for ") + "".concat(_this5.name, ", falling back to default."));
28189 _this5.GR = _this5.GG = _this5.GB = 1;
28190 }
28191
28192 return _this5;
28193 }
28194
28195 _createClass(CalRGBCS, [{
28196 key: "getRgbItem",
28197 value: function getRgbItem(src, srcOffset, dest, destOffset) {
28198 convertToRgb(this, src, srcOffset, dest, destOffset, 1);
28199 }
28200 }, {
28201 key: "getRgbBuffer",
28202 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
28203 var scale = 1 / ((1 << bits) - 1);
28204
28205 for (var i = 0; i < count; ++i) {
28206 convertToRgb(this, src, srcOffset, dest, destOffset, scale);
28207 srcOffset += 3;
28208 destOffset += 3 + alpha01;
28209 }
28210 }
28211 }, {
28212 key: "getOutputLength",
28213 value: function getOutputLength(inputLength, alpha01) {
28214 return inputLength * (3 + alpha01) / 3 | 0;
28215 }
28216 }]);
28217
28218 return CalRGBCS;
28219 }(ColorSpace);
28220
28221 return CalRGBCS;
28222}();
28223
28224var LabCS = function LabCSClosure() {
28225 function fn_g(x) {
28226 var result;
28227
28228 if (x >= 6 / 29) {
28229 result = x * x * x;
28230 } else {
28231 result = 108 / 841 * (x - 4 / 29);
28232 }
28233
28234 return result;
28235 }
28236
28237 function decode(value, high1, low2, high2) {
28238 return low2 + value * (high2 - low2) / high1;
28239 }
28240
28241 function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {
28242 var Ls = src[srcOffset];
28243 var as = src[srcOffset + 1];
28244 var bs = src[srcOffset + 2];
28245
28246 if (maxVal !== false) {
28247 Ls = decode(Ls, maxVal, 0, 100);
28248 as = decode(as, maxVal, cs.amin, cs.amax);
28249 bs = decode(bs, maxVal, cs.bmin, cs.bmax);
28250 }
28251
28252 as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;
28253 bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;
28254 var M = (Ls + 16) / 116;
28255 var L = M + as / 500;
28256 var N = M - bs / 200;
28257 var X = cs.XW * fn_g(L);
28258 var Y = cs.YW * fn_g(M);
28259 var Z = cs.ZW * fn_g(N);
28260 var r, g, b;
28261
28262 if (cs.ZW < 1) {
28263 r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;
28264 g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;
28265 b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;
28266 } else {
28267 r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
28268 g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
28269 b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;
28270 }
28271
28272 dest[destOffset] = Math.sqrt(r) * 255;
28273 dest[destOffset + 1] = Math.sqrt(g) * 255;
28274 dest[destOffset + 2] = Math.sqrt(b) * 255;
28275 }
28276
28277 var LabCS =
28278 /*#__PURE__*/
28279 function (_ColorSpace9) {
28280 _inherits(LabCS, _ColorSpace9);
28281
28282 function LabCS(whitePoint, blackPoint, range) {
28283 var _this6;
28284
28285 _classCallCheck(this, LabCS);
28286
28287 _this6 = _possibleConstructorReturn(this, _getPrototypeOf(LabCS).call(this, 'Lab', 3));
28288
28289 if (!whitePoint) {
28290 throw new _util.FormatError('WhitePoint missing - required for color space Lab');
28291 }
28292
28293 blackPoint = blackPoint || [0, 0, 0];
28294 range = range || [-100, 100, -100, 100];
28295 _this6.XW = whitePoint[0];
28296 _this6.YW = whitePoint[1];
28297 _this6.ZW = whitePoint[2];
28298 _this6.amin = range[0];
28299 _this6.amax = range[1];
28300 _this6.bmin = range[2];
28301 _this6.bmax = range[3];
28302 _this6.XB = blackPoint[0];
28303 _this6.YB = blackPoint[1];
28304 _this6.ZB = blackPoint[2];
28305
28306 if (_this6.XW < 0 || _this6.ZW < 0 || _this6.YW !== 1) {
28307 throw new _util.FormatError('Invalid WhitePoint components, no fallback available');
28308 }
28309
28310 if (_this6.XB < 0 || _this6.YB < 0 || _this6.ZB < 0) {
28311 (0, _util.info)('Invalid BlackPoint, falling back to default');
28312 _this6.XB = _this6.YB = _this6.ZB = 0;
28313 }
28314
28315 if (_this6.amin > _this6.amax || _this6.bmin > _this6.bmax) {
28316 (0, _util.info)('Invalid Range, falling back to defaults');
28317 _this6.amin = -100;
28318 _this6.amax = 100;
28319 _this6.bmin = -100;
28320 _this6.bmax = 100;
28321 }
28322
28323 return _this6;
28324 }
28325
28326 _createClass(LabCS, [{
28327 key: "getRgbItem",
28328 value: function getRgbItem(src, srcOffset, dest, destOffset) {
28329 convertToRgb(this, src, srcOffset, false, dest, destOffset);
28330 }
28331 }, {
28332 key: "getRgbBuffer",
28333 value: function getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
28334 var maxVal = (1 << bits) - 1;
28335
28336 for (var i = 0; i < count; i++) {
28337 convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);
28338 srcOffset += 3;
28339 destOffset += 3 + alpha01;
28340 }
28341 }
28342 }, {
28343 key: "getOutputLength",
28344 value: function getOutputLength(inputLength, alpha01) {
28345 return inputLength * (3 + alpha01) / 3 | 0;
28346 }
28347 }, {
28348 key: "isDefaultDecode",
28349 value: function isDefaultDecode(decodeMap, bpc) {
28350 return true;
28351 }
28352 }, {
28353 key: "usesZeroToOneRange",
28354 get: function get() {
28355 return (0, _util.shadow)(this, 'usesZeroToOneRange', false);
28356 }
28357 }]);
28358
28359 return LabCS;
28360 }(ColorSpace);
28361
28362 return LabCS;
28363}();
28364
28365/***/ }),
28366/* 170 */
28367/***/ (function(module, exports, __w_pdfjs_require__) {
28368
28369"use strict";
28370
28371
28372Object.defineProperty(exports, "__esModule", {
28373 value: true
28374});
28375exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0;
28376
28377var _util = __w_pdfjs_require__(5);
28378
28379var _obj = __w_pdfjs_require__(156);
28380
28381var _primitives = __w_pdfjs_require__(151);
28382
28383var _colorspace = __w_pdfjs_require__(169);
28384
28385var _core_utils = __w_pdfjs_require__(154);
28386
28387var _operator_list = __w_pdfjs_require__(171);
28388
28389var _stream = __w_pdfjs_require__(158);
28390
28391function _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); }
28392
28393function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
28394
28395function _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); }
28396
28397function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
28398
28399function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
28400
28401function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
28402
28403function _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); }
28404
28405function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28406
28407function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28408
28409function _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); } }
28410
28411function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
28412
28413var AnnotationFactory =
28414/*#__PURE__*/
28415function () {
28416 function AnnotationFactory() {
28417 _classCallCheck(this, AnnotationFactory);
28418 }
28419
28420 _createClass(AnnotationFactory, null, [{
28421 key: "create",
28422 value: function create(xref, ref, pdfManager, idFactory) {
28423 return pdfManager.ensure(this, '_create', [xref, ref, pdfManager, idFactory]);
28424 }
28425 }, {
28426 key: "_create",
28427 value: function _create(xref, ref, pdfManager, idFactory) {
28428 var dict = xref.fetchIfRef(ref);
28429
28430 if (!(0, _primitives.isDict)(dict)) {
28431 return undefined;
28432 }
28433
28434 var id = (0, _primitives.isRef)(ref) ? ref.toString() : "annot_".concat(idFactory.createObjId());
28435 var subtype = dict.get('Subtype');
28436 subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
28437 var parameters = {
28438 xref: xref,
28439 dict: dict,
28440 subtype: subtype,
28441 id: id,
28442 pdfManager: pdfManager
28443 };
28444
28445 switch (subtype) {
28446 case 'Link':
28447 return new LinkAnnotation(parameters);
28448
28449 case 'Text':
28450 return new TextAnnotation(parameters);
28451
28452 case 'Widget':
28453 var fieldType = (0, _core_utils.getInheritableProperty)({
28454 dict: dict,
28455 key: 'FT'
28456 });
28457 fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
28458
28459 switch (fieldType) {
28460 case 'Tx':
28461 return new TextWidgetAnnotation(parameters);
28462
28463 case 'Btn':
28464 return new ButtonWidgetAnnotation(parameters);
28465
28466 case 'Ch':
28467 return new ChoiceWidgetAnnotation(parameters);
28468 }
28469
28470 (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + 'falling back to base field type.');
28471 return new WidgetAnnotation(parameters);
28472
28473 case 'Popup':
28474 return new PopupAnnotation(parameters);
28475
28476 case 'FreeText':
28477 return new FreeTextAnnotation(parameters);
28478
28479 case 'Line':
28480 return new LineAnnotation(parameters);
28481
28482 case 'Square':
28483 return new SquareAnnotation(parameters);
28484
28485 case 'Circle':
28486 return new CircleAnnotation(parameters);
28487
28488 case 'PolyLine':
28489 return new PolylineAnnotation(parameters);
28490
28491 case 'Polygon':
28492 return new PolygonAnnotation(parameters);
28493
28494 case 'Caret':
28495 return new CaretAnnotation(parameters);
28496
28497 case 'Ink':
28498 return new InkAnnotation(parameters);
28499
28500 case 'Highlight':
28501 return new HighlightAnnotation(parameters);
28502
28503 case 'Underline':
28504 return new UnderlineAnnotation(parameters);
28505
28506 case 'Squiggly':
28507 return new SquigglyAnnotation(parameters);
28508
28509 case 'StrikeOut':
28510 return new StrikeOutAnnotation(parameters);
28511
28512 case 'Stamp':
28513 return new StampAnnotation(parameters);
28514
28515 case 'FileAttachment':
28516 return new FileAttachmentAnnotation(parameters);
28517
28518 default:
28519 if (!subtype) {
28520 (0, _util.warn)('Annotation is missing the required /Subtype.');
28521 } else {
28522 (0, _util.warn)('Unimplemented annotation type "' + subtype + '", ' + 'falling back to base annotation.');
28523 }
28524
28525 return new Annotation(parameters);
28526 }
28527 }
28528 }]);
28529
28530 return AnnotationFactory;
28531}();
28532
28533exports.AnnotationFactory = AnnotationFactory;
28534
28535function getTransformMatrix(rect, bbox, matrix) {
28536 var bounds = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
28537
28538 var minX = bounds[0];
28539 var minY = bounds[1];
28540 var maxX = bounds[2];
28541 var maxY = bounds[3];
28542
28543 if (minX === maxX || minY === maxY) {
28544 return [1, 0, 0, 1, rect[0], rect[1]];
28545 }
28546
28547 var xRatio = (rect[2] - rect[0]) / (maxX - minX);
28548 var yRatio = (rect[3] - rect[1]) / (maxY - minY);
28549 return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
28550}
28551
28552var Annotation =
28553/*#__PURE__*/
28554function () {
28555 function Annotation(params) {
28556 _classCallCheck(this, Annotation);
28557
28558 var dict = params.dict;
28559 this.setContents(dict.get('Contents'));
28560 this.setModificationDate(dict.get('M'));
28561 this.setFlags(dict.get('F'));
28562 this.setRectangle(dict.getArray('Rect'));
28563 this.setColor(dict.getArray('C'));
28564 this.setBorderStyle(dict);
28565 this.setAppearance(dict);
28566 this.data = {
28567 annotationFlags: this.flags,
28568 borderStyle: this.borderStyle,
28569 color: this.color,
28570 contents: this.contents,
28571 hasAppearance: !!this.appearance,
28572 id: params.id,
28573 modificationDate: this.modificationDate,
28574 rect: this.rectangle,
28575 subtype: params.subtype
28576 };
28577 }
28578
28579 _createClass(Annotation, [{
28580 key: "_hasFlag",
28581 value: function _hasFlag(flags, flag) {
28582 return !!(flags & flag);
28583 }
28584 }, {
28585 key: "_isViewable",
28586 value: function _isViewable(flags) {
28587 return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);
28588 }
28589 }, {
28590 key: "_isPrintable",
28591 value: function _isPrintable(flags) {
28592 return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN);
28593 }
28594 }, {
28595 key: "setContents",
28596 value: function setContents(contents) {
28597 this.contents = (0, _util.stringToPDFString)(contents || '');
28598 }
28599 }, {
28600 key: "setModificationDate",
28601 value: function setModificationDate(modificationDate) {
28602 this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
28603 }
28604 }, {
28605 key: "setFlags",
28606 value: function setFlags(flags) {
28607 this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
28608 }
28609 }, {
28610 key: "hasFlag",
28611 value: function hasFlag(flag) {
28612 return this._hasFlag(this.flags, flag);
28613 }
28614 }, {
28615 key: "setRectangle",
28616 value: function setRectangle(rectangle) {
28617 if (Array.isArray(rectangle) && rectangle.length === 4) {
28618 this.rectangle = _util.Util.normalizeRect(rectangle);
28619 } else {
28620 this.rectangle = [0, 0, 0, 0];
28621 }
28622 }
28623 }, {
28624 key: "setColor",
28625 value: function setColor(color) {
28626 var rgbColor = new Uint8ClampedArray(3);
28627
28628 if (!Array.isArray(color)) {
28629 this.color = rgbColor;
28630 return;
28631 }
28632
28633 switch (color.length) {
28634 case 0:
28635 this.color = null;
28636 break;
28637
28638 case 1:
28639 _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
28640
28641 this.color = rgbColor;
28642 break;
28643
28644 case 3:
28645 _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
28646
28647 this.color = rgbColor;
28648 break;
28649
28650 case 4:
28651 _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
28652
28653 this.color = rgbColor;
28654 break;
28655
28656 default:
28657 this.color = rgbColor;
28658 break;
28659 }
28660 }
28661 }, {
28662 key: "setBorderStyle",
28663 value: function setBorderStyle(borderStyle) {
28664 this.borderStyle = new AnnotationBorderStyle();
28665
28666 if (!(0, _primitives.isDict)(borderStyle)) {
28667 return;
28668 }
28669
28670 if (borderStyle.has('BS')) {
28671 var dict = borderStyle.get('BS');
28672 var dictType = dict.get('Type');
28673
28674 if (!dictType || (0, _primitives.isName)(dictType, 'Border')) {
28675 this.borderStyle.setWidth(dict.get('W'), this.rectangle);
28676 this.borderStyle.setStyle(dict.get('S'));
28677 this.borderStyle.setDashArray(dict.getArray('D'));
28678 }
28679 } else if (borderStyle.has('Border')) {
28680 var array = borderStyle.getArray('Border');
28681
28682 if (Array.isArray(array) && array.length >= 3) {
28683 this.borderStyle.setHorizontalCornerRadius(array[0]);
28684 this.borderStyle.setVerticalCornerRadius(array[1]);
28685 this.borderStyle.setWidth(array[2], this.rectangle);
28686
28687 if (array.length === 4) {
28688 this.borderStyle.setDashArray(array[3]);
28689 }
28690 }
28691 } else {
28692 this.borderStyle.setWidth(0);
28693 }
28694 }
28695 }, {
28696 key: "setAppearance",
28697 value: function setAppearance(dict) {
28698 this.appearance = null;
28699 var appearanceStates = dict.get('AP');
28700
28701 if (!(0, _primitives.isDict)(appearanceStates)) {
28702 return;
28703 }
28704
28705 var normalAppearanceState = appearanceStates.get('N');
28706
28707 if ((0, _primitives.isStream)(normalAppearanceState)) {
28708 this.appearance = normalAppearanceState;
28709 return;
28710 }
28711
28712 if (!(0, _primitives.isDict)(normalAppearanceState)) {
28713 return;
28714 }
28715
28716 var as = dict.get('AS');
28717
28718 if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
28719 return;
28720 }
28721
28722 this.appearance = normalAppearanceState.get(as.name);
28723 }
28724 }, {
28725 key: "loadResources",
28726 value: function loadResources(keys) {
28727 return this.appearance.dict.getAsync('Resources').then(function (resources) {
28728 if (!resources) {
28729 return undefined;
28730 }
28731
28732 var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);
28733 return objectLoader.load().then(function () {
28734 return resources;
28735 });
28736 });
28737 }
28738 }, {
28739 key: "getOperatorList",
28740 value: function getOperatorList(evaluator, task, renderForms) {
28741 var _this = this;
28742
28743 if (!this.appearance) {
28744 return Promise.resolve(new _operator_list.OperatorList());
28745 }
28746
28747 var data = this.data;
28748 var appearanceDict = this.appearance.dict;
28749 var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']);
28750 var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1];
28751 var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0];
28752 var transform = getTransformMatrix(data.rect, bbox, matrix);
28753 return resourcesPromise.then(function (resources) {
28754 var opList = new _operator_list.OperatorList();
28755 opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);
28756 return evaluator.getOperatorList({
28757 stream: _this.appearance,
28758 task: task,
28759 resources: resources,
28760 operatorList: opList
28761 }).then(function () {
28762 opList.addOp(_util.OPS.endAnnotation, []);
28763
28764 _this.appearance.reset();
28765
28766 return opList;
28767 });
28768 });
28769 }
28770 }, {
28771 key: "viewable",
28772 get: function get() {
28773 if (this.flags === 0) {
28774 return true;
28775 }
28776
28777 return this._isViewable(this.flags);
28778 }
28779 }, {
28780 key: "printable",
28781 get: function get() {
28782 if (this.flags === 0) {
28783 return false;
28784 }
28785
28786 return this._isPrintable(this.flags);
28787 }
28788 }]);
28789
28790 return Annotation;
28791}();
28792
28793exports.Annotation = Annotation;
28794
28795var AnnotationBorderStyle =
28796/*#__PURE__*/
28797function () {
28798 function AnnotationBorderStyle() {
28799 _classCallCheck(this, AnnotationBorderStyle);
28800
28801 this.width = 1;
28802 this.style = _util.AnnotationBorderStyleType.SOLID;
28803 this.dashArray = [3];
28804 this.horizontalCornerRadius = 0;
28805 this.verticalCornerRadius = 0;
28806 }
28807
28808 _createClass(AnnotationBorderStyle, [{
28809 key: "setWidth",
28810 value: function setWidth(width) {
28811 var rect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0, 0, 0];
28812
28813 if ((0, _primitives.isName)(width)) {
28814 this.width = 0;
28815 return;
28816 }
28817
28818 if (Number.isInteger(width)) {
28819 if (width > 0) {
28820 var maxWidth = (rect[2] - rect[0]) / 2;
28821 var maxHeight = (rect[3] - rect[1]) / 2;
28822
28823 if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {
28824 (0, _util.warn)("AnnotationBorderStyle.setWidth - ignoring width: ".concat(width));
28825 width = 1;
28826 }
28827 }
28828
28829 this.width = width;
28830 }
28831 }
28832 }, {
28833 key: "setStyle",
28834 value: function setStyle(style) {
28835 if (!(0, _primitives.isName)(style)) {
28836 return;
28837 }
28838
28839 switch (style.name) {
28840 case 'S':
28841 this.style = _util.AnnotationBorderStyleType.SOLID;
28842 break;
28843
28844 case 'D':
28845 this.style = _util.AnnotationBorderStyleType.DASHED;
28846 break;
28847
28848 case 'B':
28849 this.style = _util.AnnotationBorderStyleType.BEVELED;
28850 break;
28851
28852 case 'I':
28853 this.style = _util.AnnotationBorderStyleType.INSET;
28854 break;
28855
28856 case 'U':
28857 this.style = _util.AnnotationBorderStyleType.UNDERLINE;
28858 break;
28859
28860 default:
28861 break;
28862 }
28863 }
28864 }, {
28865 key: "setDashArray",
28866 value: function setDashArray(dashArray) {
28867 if (Array.isArray(dashArray) && dashArray.length > 0) {
28868 var isValid = true;
28869 var allZeros = true;
28870
28871 for (var i = 0, len = dashArray.length; i < len; i++) {
28872 var element = dashArray[i];
28873 var validNumber = +element >= 0;
28874
28875 if (!validNumber) {
28876 isValid = false;
28877 break;
28878 } else if (element > 0) {
28879 allZeros = false;
28880 }
28881 }
28882
28883 if (isValid && !allZeros) {
28884 this.dashArray = dashArray;
28885 } else {
28886 this.width = 0;
28887 }
28888 } else if (dashArray) {
28889 this.width = 0;
28890 }
28891 }
28892 }, {
28893 key: "setHorizontalCornerRadius",
28894 value: function setHorizontalCornerRadius(radius) {
28895 if (Number.isInteger(radius)) {
28896 this.horizontalCornerRadius = radius;
28897 }
28898 }
28899 }, {
28900 key: "setVerticalCornerRadius",
28901 value: function setVerticalCornerRadius(radius) {
28902 if (Number.isInteger(radius)) {
28903 this.verticalCornerRadius = radius;
28904 }
28905 }
28906 }]);
28907
28908 return AnnotationBorderStyle;
28909}();
28910
28911exports.AnnotationBorderStyle = AnnotationBorderStyle;
28912
28913var MarkupAnnotation =
28914/*#__PURE__*/
28915function (_Annotation) {
28916 _inherits(MarkupAnnotation, _Annotation);
28917
28918 function MarkupAnnotation(parameters) {
28919 var _this2;
28920
28921 _classCallCheck(this, MarkupAnnotation);
28922
28923 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(MarkupAnnotation).call(this, parameters));
28924 var dict = parameters.dict;
28925
28926 if (!dict.has('C')) {
28927 _this2.data.color = null;
28928 }
28929
28930 _this2.setCreationDate(dict.get('CreationDate'));
28931
28932 _this2.data.creationDate = _this2.creationDate;
28933 _this2.data.hasPopup = dict.has('Popup');
28934 _this2.data.title = (0, _util.stringToPDFString)(dict.get('T') || '');
28935 return _this2;
28936 }
28937
28938 _createClass(MarkupAnnotation, [{
28939 key: "setCreationDate",
28940 value: function setCreationDate(creationDate) {
28941 this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
28942 }
28943 }]);
28944
28945 return MarkupAnnotation;
28946}(Annotation);
28947
28948exports.MarkupAnnotation = MarkupAnnotation;
28949
28950var WidgetAnnotation =
28951/*#__PURE__*/
28952function (_Annotation2) {
28953 _inherits(WidgetAnnotation, _Annotation2);
28954
28955 function WidgetAnnotation(params) {
28956 var _this3;
28957
28958 _classCallCheck(this, WidgetAnnotation);
28959
28960 _this3 = _possibleConstructorReturn(this, _getPrototypeOf(WidgetAnnotation).call(this, params));
28961 var dict = params.dict;
28962 var data = _this3.data;
28963 data.annotationType = _util.AnnotationType.WIDGET;
28964 data.fieldName = _this3._constructFieldName(dict);
28965 data.fieldValue = (0, _core_utils.getInheritableProperty)({
28966 dict: dict,
28967 key: 'V',
28968 getArray: true
28969 });
28970 data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || '');
28971 data.defaultAppearance = (0, _core_utils.getInheritableProperty)({
28972 dict: dict,
28973 key: 'DA'
28974 }) || '';
28975 var fieldType = (0, _core_utils.getInheritableProperty)({
28976 dict: dict,
28977 key: 'FT'
28978 });
28979 data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
28980 _this3.fieldResources = (0, _core_utils.getInheritableProperty)({
28981 dict: dict,
28982 key: 'DR'
28983 }) || _primitives.Dict.empty;
28984 data.fieldFlags = (0, _core_utils.getInheritableProperty)({
28985 dict: dict,
28986 key: 'Ff'
28987 });
28988
28989 if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
28990 data.fieldFlags = 0;
28991 }
28992
28993 data.readOnly = _this3.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
28994
28995 if (data.fieldType === 'Sig') {
28996 data.fieldValue = null;
28997
28998 _this3.setFlags(_util.AnnotationFlag.HIDDEN);
28999 }
29000
29001 return _this3;
29002 }
29003
29004 _createClass(WidgetAnnotation, [{
29005 key: "_constructFieldName",
29006 value: function _constructFieldName(dict) {
29007 if (!dict.has('T') && !dict.has('Parent')) {
29008 (0, _util.warn)('Unknown field name, falling back to empty field name.');
29009 return '';
29010 }
29011
29012 if (!dict.has('Parent')) {
29013 return (0, _util.stringToPDFString)(dict.get('T'));
29014 }
29015
29016 var fieldName = [];
29017
29018 if (dict.has('T')) {
29019 fieldName.unshift((0, _util.stringToPDFString)(dict.get('T')));
29020 }
29021
29022 var loopDict = dict;
29023
29024 while (loopDict.has('Parent')) {
29025 loopDict = loopDict.get('Parent');
29026
29027 if (!(0, _primitives.isDict)(loopDict)) {
29028 break;
29029 }
29030
29031 if (loopDict.has('T')) {
29032 fieldName.unshift((0, _util.stringToPDFString)(loopDict.get('T')));
29033 }
29034 }
29035
29036 return fieldName.join('.');
29037 }
29038 }, {
29039 key: "hasFieldFlag",
29040 value: function hasFieldFlag(flag) {
29041 return !!(this.data.fieldFlags & flag);
29042 }
29043 }, {
29044 key: "getOperatorList",
29045 value: function getOperatorList(evaluator, task, renderForms) {
29046 if (renderForms) {
29047 return Promise.resolve(new _operator_list.OperatorList());
29048 }
29049
29050 return _get(_getPrototypeOf(WidgetAnnotation.prototype), "getOperatorList", this).call(this, evaluator, task, renderForms);
29051 }
29052 }]);
29053
29054 return WidgetAnnotation;
29055}(Annotation);
29056
29057var TextWidgetAnnotation =
29058/*#__PURE__*/
29059function (_WidgetAnnotation) {
29060 _inherits(TextWidgetAnnotation, _WidgetAnnotation);
29061
29062 function TextWidgetAnnotation(params) {
29063 var _this4;
29064
29065 _classCallCheck(this, TextWidgetAnnotation);
29066
29067 _this4 = _possibleConstructorReturn(this, _getPrototypeOf(TextWidgetAnnotation).call(this, params));
29068 var dict = params.dict;
29069 _this4.data.fieldValue = (0, _util.stringToPDFString)(_this4.data.fieldValue || '');
29070 var alignment = (0, _core_utils.getInheritableProperty)({
29071 dict: dict,
29072 key: 'Q'
29073 });
29074
29075 if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
29076 alignment = null;
29077 }
29078
29079 _this4.data.textAlignment = alignment;
29080 var maximumLength = (0, _core_utils.getInheritableProperty)({
29081 dict: dict,
29082 key: 'MaxLen'
29083 });
29084
29085 if (!Number.isInteger(maximumLength) || maximumLength < 0) {
29086 maximumLength = null;
29087 }
29088
29089 _this4.data.maxLen = maximumLength;
29090 _this4.data.multiLine = _this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);
29091 _this4.data.comb = _this4.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !_this4.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && _this4.data.maxLen !== null;
29092 return _this4;
29093 }
29094
29095 _createClass(TextWidgetAnnotation, [{
29096 key: "getOperatorList",
29097 value: function getOperatorList(evaluator, task, renderForms) {
29098 if (renderForms || this.appearance) {
29099 return _get(_getPrototypeOf(TextWidgetAnnotation.prototype), "getOperatorList", this).call(this, evaluator, task, renderForms);
29100 }
29101
29102 var operatorList = new _operator_list.OperatorList();
29103
29104 if (!this.data.defaultAppearance) {
29105 return Promise.resolve(operatorList);
29106 }
29107
29108 var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance));
29109 return evaluator.getOperatorList({
29110 stream: stream,
29111 task: task,
29112 resources: this.fieldResources,
29113 operatorList: operatorList
29114 }).then(function () {
29115 return operatorList;
29116 });
29117 }
29118 }]);
29119
29120 return TextWidgetAnnotation;
29121}(WidgetAnnotation);
29122
29123var ButtonWidgetAnnotation =
29124/*#__PURE__*/
29125function (_WidgetAnnotation2) {
29126 _inherits(ButtonWidgetAnnotation, _WidgetAnnotation2);
29127
29128 function ButtonWidgetAnnotation(params) {
29129 var _this5;
29130
29131 _classCallCheck(this, ButtonWidgetAnnotation);
29132
29133 _this5 = _possibleConstructorReturn(this, _getPrototypeOf(ButtonWidgetAnnotation).call(this, params));
29134 _this5.data.checkBox = !_this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
29135 _this5.data.radioButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !_this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
29136 _this5.data.pushButton = _this5.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
29137
29138 if (_this5.data.checkBox) {
29139 _this5._processCheckBox(params);
29140 } else if (_this5.data.radioButton) {
29141 _this5._processRadioButton(params);
29142 } else if (_this5.data.pushButton) {
29143 _this5._processPushButton(params);
29144 } else {
29145 (0, _util.warn)('Invalid field flags for button widget annotation');
29146 }
29147
29148 return _this5;
29149 }
29150
29151 _createClass(ButtonWidgetAnnotation, [{
29152 key: "_processCheckBox",
29153 value: function _processCheckBox(params) {
29154 if ((0, _primitives.isName)(this.data.fieldValue)) {
29155 this.data.fieldValue = this.data.fieldValue.name;
29156 }
29157
29158 var customAppearance = params.dict.get('AP');
29159
29160 if (!(0, _primitives.isDict)(customAppearance)) {
29161 return;
29162 }
29163
29164 var exportValueOptionsDict = customAppearance.get('D');
29165
29166 if (!(0, _primitives.isDict)(exportValueOptionsDict)) {
29167 return;
29168 }
29169
29170 var exportValues = exportValueOptionsDict.getKeys();
29171 var hasCorrectOptionCount = exportValues.length === 2;
29172
29173 if (!hasCorrectOptionCount) {
29174 return;
29175 }
29176
29177 this.data.exportValue = exportValues[0] === 'Off' ? exportValues[1] : exportValues[0];
29178 }
29179 }, {
29180 key: "_processRadioButton",
29181 value: function _processRadioButton(params) {
29182 this.data.fieldValue = this.data.buttonValue = null;
29183 var fieldParent = params.dict.get('Parent');
29184
29185 if ((0, _primitives.isDict)(fieldParent) && fieldParent.has('V')) {
29186 var fieldParentValue = fieldParent.get('V');
29187
29188 if ((0, _primitives.isName)(fieldParentValue)) {
29189 this.data.fieldValue = fieldParentValue.name;
29190 }
29191 }
29192
29193 var appearanceStates = params.dict.get('AP');
29194
29195 if (!(0, _primitives.isDict)(appearanceStates)) {
29196 return;
29197 }
29198
29199 var normalAppearanceState = appearanceStates.get('N');
29200
29201 if (!(0, _primitives.isDict)(normalAppearanceState)) {
29202 return;
29203 }
29204
29205 var keys = normalAppearanceState.getKeys();
29206
29207 for (var i = 0, ii = keys.length; i < ii; i++) {
29208 if (keys[i] !== 'Off') {
29209 this.data.buttonValue = keys[i];
29210 break;
29211 }
29212 }
29213 }
29214 }, {
29215 key: "_processPushButton",
29216 value: function _processPushButton(params) {
29217 if (!params.dict.has('A')) {
29218 (0, _util.warn)('Push buttons without action dictionaries are not supported');
29219 return;
29220 }
29221
29222 _obj.Catalog.parseDestDictionary({
29223 destDict: params.dict,
29224 resultObj: this.data,
29225 docBaseUrl: params.pdfManager.docBaseUrl
29226 });
29227 }
29228 }]);
29229
29230 return ButtonWidgetAnnotation;
29231}(WidgetAnnotation);
29232
29233var ChoiceWidgetAnnotation =
29234/*#__PURE__*/
29235function (_WidgetAnnotation3) {
29236 _inherits(ChoiceWidgetAnnotation, _WidgetAnnotation3);
29237
29238 function ChoiceWidgetAnnotation(params) {
29239 var _this6;
29240
29241 _classCallCheck(this, ChoiceWidgetAnnotation);
29242
29243 _this6 = _possibleConstructorReturn(this, _getPrototypeOf(ChoiceWidgetAnnotation).call(this, params));
29244 _this6.data.options = [];
29245 var options = (0, _core_utils.getInheritableProperty)({
29246 dict: params.dict,
29247 key: 'Opt'
29248 });
29249
29250 if (Array.isArray(options)) {
29251 var xref = params.xref;
29252
29253 for (var i = 0, ii = options.length; i < ii; i++) {
29254 var option = xref.fetchIfRef(options[i]);
29255 var isOptionArray = Array.isArray(option);
29256 _this6.data.options[i] = {
29257 exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,
29258 displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option)
29259 };
29260 }
29261 }
29262
29263 if (!Array.isArray(_this6.data.fieldValue)) {
29264 _this6.data.fieldValue = [_this6.data.fieldValue];
29265 }
29266
29267 _this6.data.combo = _this6.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
29268 _this6.data.multiSelect = _this6.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
29269 return _this6;
29270 }
29271
29272 return ChoiceWidgetAnnotation;
29273}(WidgetAnnotation);
29274
29275var TextAnnotation =
29276/*#__PURE__*/
29277function (_MarkupAnnotation) {
29278 _inherits(TextAnnotation, _MarkupAnnotation);
29279
29280 function TextAnnotation(parameters) {
29281 var _this7;
29282
29283 _classCallCheck(this, TextAnnotation);
29284
29285 var DEFAULT_ICON_SIZE = 22;
29286 _this7 = _possibleConstructorReturn(this, _getPrototypeOf(TextAnnotation).call(this, parameters));
29287 _this7.data.annotationType = _util.AnnotationType.TEXT;
29288
29289 if (_this7.data.hasAppearance) {
29290 _this7.data.name = 'NoIcon';
29291 } else {
29292 _this7.data.rect[1] = _this7.data.rect[3] - DEFAULT_ICON_SIZE;
29293 _this7.data.rect[2] = _this7.data.rect[0] + DEFAULT_ICON_SIZE;
29294 _this7.data.name = parameters.dict.has('Name') ? parameters.dict.get('Name').name : 'Note';
29295 }
29296
29297 return _this7;
29298 }
29299
29300 return TextAnnotation;
29301}(MarkupAnnotation);
29302
29303var LinkAnnotation =
29304/*#__PURE__*/
29305function (_Annotation3) {
29306 _inherits(LinkAnnotation, _Annotation3);
29307
29308 function LinkAnnotation(params) {
29309 var _this8;
29310
29311 _classCallCheck(this, LinkAnnotation);
29312
29313 _this8 = _possibleConstructorReturn(this, _getPrototypeOf(LinkAnnotation).call(this, params));
29314 _this8.data.annotationType = _util.AnnotationType.LINK;
29315
29316 _obj.Catalog.parseDestDictionary({
29317 destDict: params.dict,
29318 resultObj: _this8.data,
29319 docBaseUrl: params.pdfManager.docBaseUrl
29320 });
29321
29322 return _this8;
29323 }
29324
29325 return LinkAnnotation;
29326}(Annotation);
29327
29328var PopupAnnotation =
29329/*#__PURE__*/
29330function (_Annotation4) {
29331 _inherits(PopupAnnotation, _Annotation4);
29332
29333 function PopupAnnotation(parameters) {
29334 var _this9;
29335
29336 _classCallCheck(this, PopupAnnotation);
29337
29338 _this9 = _possibleConstructorReturn(this, _getPrototypeOf(PopupAnnotation).call(this, parameters));
29339 _this9.data.annotationType = _util.AnnotationType.POPUP;
29340 var dict = parameters.dict;
29341 var parentItem = dict.get('Parent');
29342
29343 if (!parentItem) {
29344 (0, _util.warn)('Popup annotation has a missing or invalid parent annotation.');
29345 return _possibleConstructorReturn(_this9);
29346 }
29347
29348 var parentSubtype = parentItem.get('Subtype');
29349 _this9.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
29350 _this9.data.parentId = dict.getRaw('Parent').toString();
29351 _this9.data.title = (0, _util.stringToPDFString)(parentItem.get('T') || '');
29352 _this9.data.contents = (0, _util.stringToPDFString)(parentItem.get('Contents') || '');
29353
29354 if (!parentItem.has('M')) {
29355 _this9.data.modificationDate = null;
29356 } else {
29357 _this9.setModificationDate(parentItem.get('M'));
29358
29359 _this9.data.modificationDate = _this9.modificationDate;
29360 }
29361
29362 if (!parentItem.has('C')) {
29363 _this9.data.color = null;
29364 } else {
29365 _this9.setColor(parentItem.getArray('C'));
29366
29367 _this9.data.color = _this9.color;
29368 }
29369
29370 if (!_this9.viewable) {
29371 var parentFlags = parentItem.get('F');
29372
29373 if (_this9._isViewable(parentFlags)) {
29374 _this9.setFlags(parentFlags);
29375 }
29376 }
29377
29378 return _this9;
29379 }
29380
29381 return PopupAnnotation;
29382}(Annotation);
29383
29384var FreeTextAnnotation =
29385/*#__PURE__*/
29386function (_MarkupAnnotation2) {
29387 _inherits(FreeTextAnnotation, _MarkupAnnotation2);
29388
29389 function FreeTextAnnotation(parameters) {
29390 var _this10;
29391
29392 _classCallCheck(this, FreeTextAnnotation);
29393
29394 _this10 = _possibleConstructorReturn(this, _getPrototypeOf(FreeTextAnnotation).call(this, parameters));
29395 _this10.data.annotationType = _util.AnnotationType.FREETEXT;
29396 return _this10;
29397 }
29398
29399 return FreeTextAnnotation;
29400}(MarkupAnnotation);
29401
29402var LineAnnotation =
29403/*#__PURE__*/
29404function (_MarkupAnnotation3) {
29405 _inherits(LineAnnotation, _MarkupAnnotation3);
29406
29407 function LineAnnotation(parameters) {
29408 var _this11;
29409
29410 _classCallCheck(this, LineAnnotation);
29411
29412 _this11 = _possibleConstructorReturn(this, _getPrototypeOf(LineAnnotation).call(this, parameters));
29413 _this11.data.annotationType = _util.AnnotationType.LINE;
29414 var dict = parameters.dict;
29415 _this11.data.lineCoordinates = _util.Util.normalizeRect(dict.getArray('L'));
29416 return _this11;
29417 }
29418
29419 return LineAnnotation;
29420}(MarkupAnnotation);
29421
29422var SquareAnnotation =
29423/*#__PURE__*/
29424function (_MarkupAnnotation4) {
29425 _inherits(SquareAnnotation, _MarkupAnnotation4);
29426
29427 function SquareAnnotation(parameters) {
29428 var _this12;
29429
29430 _classCallCheck(this, SquareAnnotation);
29431
29432 _this12 = _possibleConstructorReturn(this, _getPrototypeOf(SquareAnnotation).call(this, parameters));
29433 _this12.data.annotationType = _util.AnnotationType.SQUARE;
29434 return _this12;
29435 }
29436
29437 return SquareAnnotation;
29438}(MarkupAnnotation);
29439
29440var CircleAnnotation =
29441/*#__PURE__*/
29442function (_MarkupAnnotation5) {
29443 _inherits(CircleAnnotation, _MarkupAnnotation5);
29444
29445 function CircleAnnotation(parameters) {
29446 var _this13;
29447
29448 _classCallCheck(this, CircleAnnotation);
29449
29450 _this13 = _possibleConstructorReturn(this, _getPrototypeOf(CircleAnnotation).call(this, parameters));
29451 _this13.data.annotationType = _util.AnnotationType.CIRCLE;
29452 return _this13;
29453 }
29454
29455 return CircleAnnotation;
29456}(MarkupAnnotation);
29457
29458var PolylineAnnotation =
29459/*#__PURE__*/
29460function (_MarkupAnnotation6) {
29461 _inherits(PolylineAnnotation, _MarkupAnnotation6);
29462
29463 function PolylineAnnotation(parameters) {
29464 var _this14;
29465
29466 _classCallCheck(this, PolylineAnnotation);
29467
29468 _this14 = _possibleConstructorReturn(this, _getPrototypeOf(PolylineAnnotation).call(this, parameters));
29469 _this14.data.annotationType = _util.AnnotationType.POLYLINE;
29470 var dict = parameters.dict;
29471 var rawVertices = dict.getArray('Vertices');
29472 _this14.data.vertices = [];
29473
29474 for (var i = 0, ii = rawVertices.length; i < ii; i += 2) {
29475 _this14.data.vertices.push({
29476 x: rawVertices[i],
29477 y: rawVertices[i + 1]
29478 });
29479 }
29480
29481 return _this14;
29482 }
29483
29484 return PolylineAnnotation;
29485}(MarkupAnnotation);
29486
29487var PolygonAnnotation =
29488/*#__PURE__*/
29489function (_PolylineAnnotation) {
29490 _inherits(PolygonAnnotation, _PolylineAnnotation);
29491
29492 function PolygonAnnotation(parameters) {
29493 var _this15;
29494
29495 _classCallCheck(this, PolygonAnnotation);
29496
29497 _this15 = _possibleConstructorReturn(this, _getPrototypeOf(PolygonAnnotation).call(this, parameters));
29498 _this15.data.annotationType = _util.AnnotationType.POLYGON;
29499 return _this15;
29500 }
29501
29502 return PolygonAnnotation;
29503}(PolylineAnnotation);
29504
29505var CaretAnnotation =
29506/*#__PURE__*/
29507function (_MarkupAnnotation7) {
29508 _inherits(CaretAnnotation, _MarkupAnnotation7);
29509
29510 function CaretAnnotation(parameters) {
29511 var _this16;
29512
29513 _classCallCheck(this, CaretAnnotation);
29514
29515 _this16 = _possibleConstructorReturn(this, _getPrototypeOf(CaretAnnotation).call(this, parameters));
29516 _this16.data.annotationType = _util.AnnotationType.CARET;
29517 return _this16;
29518 }
29519
29520 return CaretAnnotation;
29521}(MarkupAnnotation);
29522
29523var InkAnnotation =
29524/*#__PURE__*/
29525function (_MarkupAnnotation8) {
29526 _inherits(InkAnnotation, _MarkupAnnotation8);
29527
29528 function InkAnnotation(parameters) {
29529 var _this17;
29530
29531 _classCallCheck(this, InkAnnotation);
29532
29533 _this17 = _possibleConstructorReturn(this, _getPrototypeOf(InkAnnotation).call(this, parameters));
29534 _this17.data.annotationType = _util.AnnotationType.INK;
29535 var dict = parameters.dict;
29536 var xref = parameters.xref;
29537 var originalInkLists = dict.getArray('InkList');
29538 _this17.data.inkLists = [];
29539
29540 for (var i = 0, ii = originalInkLists.length; i < ii; ++i) {
29541 _this17.data.inkLists.push([]);
29542
29543 for (var j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {
29544 _this17.data.inkLists[i].push({
29545 x: xref.fetchIfRef(originalInkLists[i][j]),
29546 y: xref.fetchIfRef(originalInkLists[i][j + 1])
29547 });
29548 }
29549 }
29550
29551 return _this17;
29552 }
29553
29554 return InkAnnotation;
29555}(MarkupAnnotation);
29556
29557var HighlightAnnotation =
29558/*#__PURE__*/
29559function (_MarkupAnnotation9) {
29560 _inherits(HighlightAnnotation, _MarkupAnnotation9);
29561
29562 function HighlightAnnotation(parameters) {
29563 var _this18;
29564
29565 _classCallCheck(this, HighlightAnnotation);
29566
29567 _this18 = _possibleConstructorReturn(this, _getPrototypeOf(HighlightAnnotation).call(this, parameters));
29568 _this18.data.annotationType = _util.AnnotationType.HIGHLIGHT;
29569 return _this18;
29570 }
29571
29572 return HighlightAnnotation;
29573}(MarkupAnnotation);
29574
29575var UnderlineAnnotation =
29576/*#__PURE__*/
29577function (_MarkupAnnotation10) {
29578 _inherits(UnderlineAnnotation, _MarkupAnnotation10);
29579
29580 function UnderlineAnnotation(parameters) {
29581 var _this19;
29582
29583 _classCallCheck(this, UnderlineAnnotation);
29584
29585 _this19 = _possibleConstructorReturn(this, _getPrototypeOf(UnderlineAnnotation).call(this, parameters));
29586 _this19.data.annotationType = _util.AnnotationType.UNDERLINE;
29587 return _this19;
29588 }
29589
29590 return UnderlineAnnotation;
29591}(MarkupAnnotation);
29592
29593var SquigglyAnnotation =
29594/*#__PURE__*/
29595function (_MarkupAnnotation11) {
29596 _inherits(SquigglyAnnotation, _MarkupAnnotation11);
29597
29598 function SquigglyAnnotation(parameters) {
29599 var _this20;
29600
29601 _classCallCheck(this, SquigglyAnnotation);
29602
29603 _this20 = _possibleConstructorReturn(this, _getPrototypeOf(SquigglyAnnotation).call(this, parameters));
29604 _this20.data.annotationType = _util.AnnotationType.SQUIGGLY;
29605 return _this20;
29606 }
29607
29608 return SquigglyAnnotation;
29609}(MarkupAnnotation);
29610
29611var StrikeOutAnnotation =
29612/*#__PURE__*/
29613function (_MarkupAnnotation12) {
29614 _inherits(StrikeOutAnnotation, _MarkupAnnotation12);
29615
29616 function StrikeOutAnnotation(parameters) {
29617 var _this21;
29618
29619 _classCallCheck(this, StrikeOutAnnotation);
29620
29621 _this21 = _possibleConstructorReturn(this, _getPrototypeOf(StrikeOutAnnotation).call(this, parameters));
29622 _this21.data.annotationType = _util.AnnotationType.STRIKEOUT;
29623 return _this21;
29624 }
29625
29626 return StrikeOutAnnotation;
29627}(MarkupAnnotation);
29628
29629var StampAnnotation =
29630/*#__PURE__*/
29631function (_MarkupAnnotation13) {
29632 _inherits(StampAnnotation, _MarkupAnnotation13);
29633
29634 function StampAnnotation(parameters) {
29635 var _this22;
29636
29637 _classCallCheck(this, StampAnnotation);
29638
29639 _this22 = _possibleConstructorReturn(this, _getPrototypeOf(StampAnnotation).call(this, parameters));
29640 _this22.data.annotationType = _util.AnnotationType.STAMP;
29641 return _this22;
29642 }
29643
29644 return StampAnnotation;
29645}(MarkupAnnotation);
29646
29647var FileAttachmentAnnotation =
29648/*#__PURE__*/
29649function (_MarkupAnnotation14) {
29650 _inherits(FileAttachmentAnnotation, _MarkupAnnotation14);
29651
29652 function FileAttachmentAnnotation(parameters) {
29653 var _this23;
29654
29655 _classCallCheck(this, FileAttachmentAnnotation);
29656
29657 _this23 = _possibleConstructorReturn(this, _getPrototypeOf(FileAttachmentAnnotation).call(this, parameters));
29658 var file = new _obj.FileSpec(parameters.dict.get('FS'), parameters.xref);
29659 _this23.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
29660 _this23.data.file = file.serializable;
29661 return _this23;
29662 }
29663
29664 return FileAttachmentAnnotation;
29665}(MarkupAnnotation);
29666
29667/***/ }),
29668/* 171 */
29669/***/ (function(module, exports, __w_pdfjs_require__) {
29670
29671"use strict";
29672
29673
29674Object.defineProperty(exports, "__esModule", {
29675 value: true
29676});
29677exports.OperatorList = void 0;
29678
29679var _util = __w_pdfjs_require__(5);
29680
29681var QueueOptimizer = function QueueOptimizerClosure() {
29682 function addState(parentState, pattern, checkFn, iterateFn, processFn) {
29683 var state = parentState;
29684
29685 for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
29686 var item = pattern[i];
29687 state = state[item] || (state[item] = []);
29688 }
29689
29690 state[pattern[pattern.length - 1]] = {
29691 checkFn: checkFn,
29692 iterateFn: iterateFn,
29693 processFn: processFn
29694 };
29695 }
29696
29697 function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
29698 var iFirstPIMXO = iFirstSave + 2;
29699
29700 for (var i = 0; i < count; i++) {
29701 var arg = argsArray[iFirstPIMXO + 4 * i];
29702 var imageMask = arg.length === 1 && arg[0];
29703
29704 if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {
29705 fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
29706 continue;
29707 }
29708
29709 break;
29710 }
29711
29712 return count - i;
29713 }
29714
29715 var InitialState = [];
29716 addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
29717 var fnArray = context.fnArray;
29718 var iFirstSave = context.iCurr - 3;
29719 var pos = (i - iFirstSave) % 4;
29720
29721 switch (pos) {
29722 case 0:
29723 return fnArray[i] === _util.OPS.save;
29724
29725 case 1:
29726 return fnArray[i] === _util.OPS.transform;
29727
29728 case 2:
29729 return fnArray[i] === _util.OPS.paintInlineImageXObject;
29730
29731 case 3:
29732 return fnArray[i] === _util.OPS.restore;
29733 }
29734
29735 throw new Error("iterateInlineImageGroup - invalid pos: ".concat(pos));
29736 }, function foundInlineImageGroup(context, i) {
29737 var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
29738 var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
29739 var MAX_WIDTH = 1000;
29740 var IMAGE_PADDING = 1;
29741 var fnArray = context.fnArray,
29742 argsArray = context.argsArray;
29743 var curr = context.iCurr;
29744 var iFirstSave = curr - 3;
29745 var iFirstTransform = curr - 2;
29746 var iFirstPIIXO = curr - 1;
29747 var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
29748
29749 if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
29750 return i - (i - iFirstSave) % 4;
29751 }
29752
29753 var maxX = 0;
29754 var map = [],
29755 maxLineHeight = 0;
29756 var currentX = IMAGE_PADDING,
29757 currentY = IMAGE_PADDING;
29758 var q;
29759
29760 for (q = 0; q < count; q++) {
29761 var transform = argsArray[iFirstTransform + (q << 2)];
29762 var img = argsArray[iFirstPIIXO + (q << 2)][0];
29763
29764 if (currentX + img.width > MAX_WIDTH) {
29765 maxX = Math.max(maxX, currentX);
29766 currentY += maxLineHeight + 2 * IMAGE_PADDING;
29767 currentX = 0;
29768 maxLineHeight = 0;
29769 }
29770
29771 map.push({
29772 transform: transform,
29773 x: currentX,
29774 y: currentY,
29775 w: img.width,
29776 h: img.height
29777 });
29778 currentX += img.width + 2 * IMAGE_PADDING;
29779 maxLineHeight = Math.max(maxLineHeight, img.height);
29780 }
29781
29782 var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
29783 var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
29784 var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
29785 var imgRowSize = imgWidth << 2;
29786
29787 for (q = 0; q < count; q++) {
29788 var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
29789 var rowSize = map[q].w << 2;
29790 var dataOffset = 0;
29791 var offset = map[q].x + map[q].y * imgWidth << 2;
29792 imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
29793
29794 for (var k = 0, kk = map[q].h; k < kk; k++) {
29795 imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
29796 dataOffset += rowSize;
29797 offset += imgRowSize;
29798 }
29799
29800 imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
29801
29802 while (offset >= 0) {
29803 data[offset - 4] = data[offset];
29804 data[offset - 3] = data[offset + 1];
29805 data[offset - 2] = data[offset + 2];
29806 data[offset - 1] = data[offset + 3];
29807 data[offset + rowSize] = data[offset + rowSize - 4];
29808 data[offset + rowSize + 1] = data[offset + rowSize - 3];
29809 data[offset + rowSize + 2] = data[offset + rowSize - 2];
29810 data[offset + rowSize + 3] = data[offset + rowSize - 1];
29811 offset -= imgRowSize;
29812 }
29813 }
29814
29815 fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);
29816 argsArray.splice(iFirstSave, count * 4, [{
29817 width: imgWidth,
29818 height: imgHeight,
29819 kind: _util.ImageKind.RGBA_32BPP,
29820 data: imgData
29821 }, map]);
29822 return iFirstSave + 1;
29823 });
29824 addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {
29825 var fnArray = context.fnArray;
29826 var iFirstSave = context.iCurr - 3;
29827 var pos = (i - iFirstSave) % 4;
29828
29829 switch (pos) {
29830 case 0:
29831 return fnArray[i] === _util.OPS.save;
29832
29833 case 1:
29834 return fnArray[i] === _util.OPS.transform;
29835
29836 case 2:
29837 return fnArray[i] === _util.OPS.paintImageMaskXObject;
29838
29839 case 3:
29840 return fnArray[i] === _util.OPS.restore;
29841 }
29842
29843 throw new Error("iterateImageMaskGroup - invalid pos: ".concat(pos));
29844 }, function foundImageMaskGroup(context, i) {
29845 var MIN_IMAGES_IN_MASKS_BLOCK = 10;
29846 var MAX_IMAGES_IN_MASKS_BLOCK = 100;
29847 var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
29848 var fnArray = context.fnArray,
29849 argsArray = context.argsArray;
29850 var curr = context.iCurr;
29851 var iFirstSave = curr - 3;
29852 var iFirstTransform = curr - 2;
29853 var iFirstPIMXO = curr - 1;
29854 var count = Math.floor((i - iFirstSave) / 4);
29855 count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
29856
29857 if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
29858 return i - (i - iFirstSave) % 4;
29859 }
29860
29861 var q;
29862 var isSameImage = false;
29863 var iTransform, transformArgs;
29864 var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
29865
29866 if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {
29867 isSameImage = true;
29868 var firstTransformArg0 = argsArray[iFirstTransform][0];
29869 var firstTransformArg3 = argsArray[iFirstTransform][3];
29870 iTransform = iFirstTransform + 4;
29871 var iPIMXO = iFirstPIMXO + 4;
29872
29873 for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
29874 transformArgs = argsArray[iTransform];
29875
29876 if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {
29877 if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
29878 isSameImage = false;
29879 } else {
29880 count = q;
29881 }
29882
29883 break;
29884 }
29885 }
29886 }
29887
29888 if (isSameImage) {
29889 count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
29890 var positions = new Float32Array(count * 2);
29891 iTransform = iFirstTransform;
29892
29893 for (q = 0; q < count; q++, iTransform += 4) {
29894 transformArgs = argsArray[iTransform];
29895 positions[q << 1] = transformArgs[4];
29896 positions[(q << 1) + 1] = transformArgs[5];
29897 }
29898
29899 fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
29900 argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);
29901 } else {
29902 count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
29903 var images = [];
29904
29905 for (q = 0; q < count; q++) {
29906 transformArgs = argsArray[iFirstTransform + (q << 2)];
29907 var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
29908 images.push({
29909 data: maskParams.data,
29910 width: maskParams.width,
29911 height: maskParams.height,
29912 transform: transformArgs
29913 });
29914 }
29915
29916 fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
29917 argsArray.splice(iFirstSave, count * 4, [images]);
29918 }
29919
29920 return iFirstSave + 1;
29921 });
29922 addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {
29923 var argsArray = context.argsArray;
29924 var iFirstTransform = context.iCurr - 2;
29925 return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
29926 }, function iterateImageGroup(context, i) {
29927 var fnArray = context.fnArray,
29928 argsArray = context.argsArray;
29929 var iFirstSave = context.iCurr - 3;
29930 var pos = (i - iFirstSave) % 4;
29931
29932 switch (pos) {
29933 case 0:
29934 return fnArray[i] === _util.OPS.save;
29935
29936 case 1:
29937 if (fnArray[i] !== _util.OPS.transform) {
29938 return false;
29939 }
29940
29941 var iFirstTransform = context.iCurr - 2;
29942 var firstTransformArg0 = argsArray[iFirstTransform][0];
29943 var firstTransformArg3 = argsArray[iFirstTransform][3];
29944
29945 if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {
29946 return false;
29947 }
29948
29949 return true;
29950
29951 case 2:
29952 if (fnArray[i] !== _util.OPS.paintImageXObject) {
29953 return false;
29954 }
29955
29956 var iFirstPIXO = context.iCurr - 1;
29957 var firstPIXOArg0 = argsArray[iFirstPIXO][0];
29958
29959 if (argsArray[i][0] !== firstPIXOArg0) {
29960 return false;
29961 }
29962
29963 return true;
29964
29965 case 3:
29966 return fnArray[i] === _util.OPS.restore;
29967 }
29968
29969 throw new Error("iterateImageGroup - invalid pos: ".concat(pos));
29970 }, function (context, i) {
29971 var MIN_IMAGES_IN_BLOCK = 3;
29972 var MAX_IMAGES_IN_BLOCK = 1000;
29973 var fnArray = context.fnArray,
29974 argsArray = context.argsArray;
29975 var curr = context.iCurr;
29976 var iFirstSave = curr - 3;
29977 var iFirstTransform = curr - 2;
29978 var iFirstPIXO = curr - 1;
29979 var firstPIXOArg0 = argsArray[iFirstPIXO][0];
29980 var firstTransformArg0 = argsArray[iFirstTransform][0];
29981 var firstTransformArg3 = argsArray[iFirstTransform][3];
29982 var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
29983
29984 if (count < MIN_IMAGES_IN_BLOCK) {
29985 return i - (i - iFirstSave) % 4;
29986 }
29987
29988 var positions = new Float32Array(count * 2);
29989 var iTransform = iFirstTransform;
29990
29991 for (var q = 0; q < count; q++, iTransform += 4) {
29992 var transformArgs = argsArray[iTransform];
29993 positions[q << 1] = transformArgs[4];
29994 positions[(q << 1) + 1] = transformArgs[5];
29995 }
29996
29997 var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];
29998 fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);
29999 argsArray.splice(iFirstSave, count * 4, args);
30000 return iFirstSave + 1;
30001 });
30002 addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {
30003 var fnArray = context.fnArray,
30004 argsArray = context.argsArray;
30005 var iFirstSave = context.iCurr - 4;
30006 var pos = (i - iFirstSave) % 5;
30007
30008 switch (pos) {
30009 case 0:
30010 return fnArray[i] === _util.OPS.beginText;
30011
30012 case 1:
30013 return fnArray[i] === _util.OPS.setFont;
30014
30015 case 2:
30016 return fnArray[i] === _util.OPS.setTextMatrix;
30017
30018 case 3:
30019 if (fnArray[i] !== _util.OPS.showText) {
30020 return false;
30021 }
30022
30023 var iFirstSetFont = context.iCurr - 3;
30024 var firstSetFontArg0 = argsArray[iFirstSetFont][0];
30025 var firstSetFontArg1 = argsArray[iFirstSetFont][1];
30026
30027 if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
30028 return false;
30029 }
30030
30031 return true;
30032
30033 case 4:
30034 return fnArray[i] === _util.OPS.endText;
30035 }
30036
30037 throw new Error("iterateShowTextGroup - invalid pos: ".concat(pos));
30038 }, function (context, i) {
30039 var MIN_CHARS_IN_BLOCK = 3;
30040 var MAX_CHARS_IN_BLOCK = 1000;
30041 var fnArray = context.fnArray,
30042 argsArray = context.argsArray;
30043 var curr = context.iCurr;
30044 var iFirstBeginText = curr - 4;
30045 var iFirstSetFont = curr - 3;
30046 var iFirstSetTextMatrix = curr - 2;
30047 var iFirstShowText = curr - 1;
30048 var iFirstEndText = curr;
30049 var firstSetFontArg0 = argsArray[iFirstSetFont][0];
30050 var firstSetFontArg1 = argsArray[iFirstSetFont][1];
30051 var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
30052
30053 if (count < MIN_CHARS_IN_BLOCK) {
30054 return i - (i - iFirstBeginText) % 5;
30055 }
30056
30057 var iFirst = iFirstBeginText;
30058
30059 if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {
30060 count++;
30061 iFirst -= 5;
30062 }
30063
30064 var iEndText = iFirst + 4;
30065
30066 for (var q = 1; q < count; q++) {
30067 fnArray.splice(iEndText, 3);
30068 argsArray.splice(iEndText, 3);
30069 iEndText += 2;
30070 }
30071
30072 return iEndText + 1;
30073 });
30074
30075 function QueueOptimizer(queue) {
30076 this.queue = queue;
30077 this.state = null;
30078 this.context = {
30079 iCurr: 0,
30080 fnArray: queue.fnArray,
30081 argsArray: queue.argsArray
30082 };
30083 this.match = null;
30084 this.lastProcessed = 0;
30085 }
30086
30087 QueueOptimizer.prototype = {
30088 _optimize: function _optimize() {
30089 var fnArray = this.queue.fnArray;
30090 var i = this.lastProcessed,
30091 ii = fnArray.length;
30092 var state = this.state;
30093 var match = this.match;
30094
30095 if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
30096 this.lastProcessed = ii;
30097 return;
30098 }
30099
30100 var context = this.context;
30101
30102 while (i < ii) {
30103 if (match) {
30104 var iterate = (0, match.iterateFn)(context, i);
30105
30106 if (iterate) {
30107 i++;
30108 continue;
30109 }
30110
30111 i = (0, match.processFn)(context, i + 1);
30112 ii = fnArray.length;
30113 match = null;
30114 state = null;
30115
30116 if (i >= ii) {
30117 break;
30118 }
30119 }
30120
30121 state = (state || InitialState)[fnArray[i]];
30122
30123 if (!state || Array.isArray(state)) {
30124 i++;
30125 continue;
30126 }
30127
30128 context.iCurr = i;
30129 i++;
30130
30131 if (state.checkFn && !(0, state.checkFn)(context)) {
30132 state = null;
30133 continue;
30134 }
30135
30136 match = state;
30137 state = null;
30138 }
30139
30140 this.state = state;
30141 this.match = match;
30142 this.lastProcessed = i;
30143 },
30144 push: function push(fn, args) {
30145 this.queue.fnArray.push(fn);
30146 this.queue.argsArray.push(args);
30147
30148 this._optimize();
30149 },
30150 flush: function flush() {
30151 while (this.match) {
30152 var length = this.queue.fnArray.length;
30153 this.lastProcessed = (0, this.match.processFn)(this.context, length);
30154 this.match = null;
30155 this.state = null;
30156
30157 this._optimize();
30158 }
30159 },
30160 reset: function reset() {
30161 this.state = null;
30162 this.match = null;
30163 this.lastProcessed = 0;
30164 }
30165 };
30166 return QueueOptimizer;
30167}();
30168
30169var NullOptimizer = function NullOptimizerClosure() {
30170 function NullOptimizer(queue) {
30171 this.queue = queue;
30172 }
30173
30174 NullOptimizer.prototype = {
30175 push: function push(fn, args) {
30176 this.queue.fnArray.push(fn);
30177 this.queue.argsArray.push(args);
30178 },
30179 flush: function flush() {},
30180 reset: function reset() {}
30181 };
30182 return NullOptimizer;
30183}();
30184
30185var OperatorList = function OperatorListClosure() {
30186 var CHUNK_SIZE = 1000;
30187 var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
30188
30189 function OperatorList(intent, messageHandler, pageIndex) {
30190 this.messageHandler = messageHandler;
30191 this.fnArray = [];
30192 this.argsArray = [];
30193
30194 if (messageHandler && intent !== 'oplist') {
30195 this.optimizer = new QueueOptimizer(this);
30196 } else {
30197 this.optimizer = new NullOptimizer(this);
30198 }
30199
30200 this.dependencies = Object.create(null);
30201 this._totalLength = 0;
30202 this.pageIndex = pageIndex;
30203 this.intent = intent;
30204 this.weight = 0;
30205 }
30206
30207 OperatorList.prototype = {
30208 get length() {
30209 return this.argsArray.length;
30210 },
30211
30212 get totalLength() {
30213 return this._totalLength + this.length;
30214 },
30215
30216 addOp: function addOp(fn, args) {
30217 this.optimizer.push(fn, args);
30218 this.weight++;
30219
30220 if (this.messageHandler) {
30221 if (this.weight >= CHUNK_SIZE) {
30222 this.flush();
30223 } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {
30224 this.flush();
30225 }
30226 }
30227 },
30228 addDependency: function addDependency(dependency) {
30229 if (dependency in this.dependencies) {
30230 return;
30231 }
30232
30233 this.dependencies[dependency] = true;
30234 this.addOp(_util.OPS.dependency, [dependency]);
30235 },
30236 addDependencies: function addDependencies(dependencies) {
30237 for (var key in dependencies) {
30238 this.addDependency(key);
30239 }
30240 },
30241 addOpList: function addOpList(opList) {
30242 Object.assign(this.dependencies, opList.dependencies);
30243
30244 for (var i = 0, ii = opList.length; i < ii; i++) {
30245 this.addOp(opList.fnArray[i], opList.argsArray[i]);
30246 }
30247 },
30248 getIR: function getIR() {
30249 return {
30250 fnArray: this.fnArray,
30251 argsArray: this.argsArray,
30252 length: this.length
30253 };
30254 },
30255
30256 get _transfers() {
30257 var transfers = [];
30258 var fnArray = this.fnArray,
30259 argsArray = this.argsArray,
30260 length = this.length;
30261
30262 for (var i = 0; i < length; i++) {
30263 switch (fnArray[i]) {
30264 case _util.OPS.paintInlineImageXObject:
30265 case _util.OPS.paintInlineImageXObjectGroup:
30266 case _util.OPS.paintImageMaskXObject:
30267 var arg = argsArray[i][0];
30268 ;
30269
30270 if (!arg.cached) {
30271 transfers.push(arg.data.buffer);
30272 }
30273
30274 break;
30275 }
30276 }
30277
30278 return transfers;
30279 },
30280
30281 flush: function flush() {
30282 var lastChunk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
30283 this.optimizer.flush();
30284 var length = this.length;
30285 this._totalLength += length;
30286 this.messageHandler.send('RenderPageChunk', {
30287 operatorList: {
30288 fnArray: this.fnArray,
30289 argsArray: this.argsArray,
30290 lastChunk: lastChunk,
30291 length: length
30292 },
30293 pageIndex: this.pageIndex,
30294 intent: this.intent
30295 }, this._transfers);
30296 this.dependencies = Object.create(null);
30297 this.fnArray.length = 0;
30298 this.argsArray.length = 0;
30299 this.weight = 0;
30300 this.optimizer.reset();
30301 }
30302 };
30303 return OperatorList;
30304}();
30305
30306exports.OperatorList = OperatorList;
30307
30308/***/ }),
30309/* 172 */
30310/***/ (function(module, exports, __w_pdfjs_require__) {
30311
30312"use strict";
30313
30314
30315Object.defineProperty(exports, "__esModule", {
30316 value: true
30317});
30318exports.PartialEvaluator = void 0;
30319
30320var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
30321
30322var _util = __w_pdfjs_require__(5);
30323
30324var _cmap = __w_pdfjs_require__(173);
30325
30326var _primitives = __w_pdfjs_require__(151);
30327
30328var _fonts = __w_pdfjs_require__(174);
30329
30330var _encodings = __w_pdfjs_require__(177);
30331
30332var _unicode = __w_pdfjs_require__(180);
30333
30334var _standard_fonts = __w_pdfjs_require__(179);
30335
30336var _pattern = __w_pdfjs_require__(183);
30337
30338var _parser = __w_pdfjs_require__(157);
30339
30340var _bidi = __w_pdfjs_require__(184);
30341
30342var _colorspace = __w_pdfjs_require__(169);
30343
30344var _stream = __w_pdfjs_require__(158);
30345
30346var _glyphlist = __w_pdfjs_require__(178);
30347
30348var _core_utils = __w_pdfjs_require__(154);
30349
30350var _metrics = __w_pdfjs_require__(185);
30351
30352var _function = __w_pdfjs_require__(186);
30353
30354var _jpeg_stream = __w_pdfjs_require__(164);
30355
30356var _murmurhash = __w_pdfjs_require__(188);
30357
30358var _image_utils = __w_pdfjs_require__(189);
30359
30360var _operator_list = __w_pdfjs_require__(171);
30361
30362var _image = __w_pdfjs_require__(190);
30363
30364function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30365
30366function 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); } }
30367
30368function _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); }); }; }
30369
30370var PartialEvaluator = function PartialEvaluatorClosure() {
30371 var DefaultPartialEvaluatorOptions = {
30372 forceDataSchema: false,
30373 maxImageSize: -1,
30374 disableFontFace: false,
30375 nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE,
30376 ignoreErrors: false,
30377 isEvalSupported: true
30378 };
30379
30380 function PartialEvaluator(_ref) {
30381 var _this = this;
30382
30383 var xref = _ref.xref,
30384 handler = _ref.handler,
30385 pageIndex = _ref.pageIndex,
30386 idFactory = _ref.idFactory,
30387 fontCache = _ref.fontCache,
30388 builtInCMapCache = _ref.builtInCMapCache,
30389 _ref$options = _ref.options,
30390 options = _ref$options === void 0 ? null : _ref$options,
30391 pdfFunctionFactory = _ref.pdfFunctionFactory;
30392 this.xref = xref;
30393 this.handler = handler;
30394 this.pageIndex = pageIndex;
30395 this.idFactory = idFactory;
30396 this.fontCache = fontCache;
30397 this.builtInCMapCache = builtInCMapCache;
30398 this.options = options || DefaultPartialEvaluatorOptions;
30399 this.pdfFunctionFactory = pdfFunctionFactory;
30400 this.parsingType3Font = false;
30401
30402 this.fetchBuiltInCMap =
30403 /*#__PURE__*/
30404 function () {
30405 var _ref2 = _asyncToGenerator(
30406 /*#__PURE__*/
30407 _regenerator["default"].mark(function _callee(name) {
30408 var data;
30409 return _regenerator["default"].wrap(function _callee$(_context) {
30410 while (1) {
30411 switch (_context.prev = _context.next) {
30412 case 0:
30413 if (!_this.builtInCMapCache.has(name)) {
30414 _context.next = 2;
30415 break;
30416 }
30417
30418 return _context.abrupt("return", _this.builtInCMapCache.get(name));
30419
30420 case 2:
30421 _context.next = 4;
30422 return _this.handler.sendWithPromise('FetchBuiltInCMap', {
30423 name: name
30424 });
30425
30426 case 4:
30427 data = _context.sent;
30428
30429 if (data.compressionType !== _util.CMapCompressionType.NONE) {
30430 _this.builtInCMapCache.set(name, data);
30431 }
30432
30433 return _context.abrupt("return", data);
30434
30435 case 7:
30436 case "end":
30437 return _context.stop();
30438 }
30439 }
30440 }, _callee);
30441 }));
30442
30443 return function (_x) {
30444 return _ref2.apply(this, arguments);
30445 };
30446 }();
30447 }
30448
30449 var TIME_SLOT_DURATION_MS = 20;
30450 var CHECK_TIME_EVERY = 100;
30451
30452 function TimeSlotManager() {
30453 this.reset();
30454 }
30455
30456 TimeSlotManager.prototype = {
30457 check: function TimeSlotManager_check() {
30458 if (++this.checked < CHECK_TIME_EVERY) {
30459 return false;
30460 }
30461
30462 this.checked = 0;
30463 return this.endTime <= Date.now();
30464 },
30465 reset: function TimeSlotManager_reset() {
30466 this.endTime = Date.now() + TIME_SLOT_DURATION_MS;
30467 this.checked = 0;
30468 }
30469 };
30470
30471 function normalizeBlendMode(value) {
30472 if (!(0, _primitives.isName)(value)) {
30473 return 'source-over';
30474 }
30475
30476 switch (value.name) {
30477 case 'Normal':
30478 case 'Compatible':
30479 return 'source-over';
30480
30481 case 'Multiply':
30482 return 'multiply';
30483
30484 case 'Screen':
30485 return 'screen';
30486
30487 case 'Overlay':
30488 return 'overlay';
30489
30490 case 'Darken':
30491 return 'darken';
30492
30493 case 'Lighten':
30494 return 'lighten';
30495
30496 case 'ColorDodge':
30497 return 'color-dodge';
30498
30499 case 'ColorBurn':
30500 return 'color-burn';
30501
30502 case 'HardLight':
30503 return 'hard-light';
30504
30505 case 'SoftLight':
30506 return 'soft-light';
30507
30508 case 'Difference':
30509 return 'difference';
30510
30511 case 'Exclusion':
30512 return 'exclusion';
30513
30514 case 'Hue':
30515 return 'hue';
30516
30517 case 'Saturation':
30518 return 'saturation';
30519
30520 case 'Color':
30521 return 'color';
30522
30523 case 'Luminosity':
30524 return 'luminosity';
30525 }
30526
30527 (0, _util.warn)('Unsupported blend mode: ' + value.name);
30528 return 'source-over';
30529 }
30530
30531 var deferred = Promise.resolve();
30532 var TILING_PATTERN = 1,
30533 SHADING_PATTERN = 2;
30534 PartialEvaluator.prototype = {
30535 clone: function clone() {
30536 var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions;
30537 var newEvaluator = Object.create(this);
30538 newEvaluator.options = newOptions;
30539 return newEvaluator;
30540 },
30541 hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {
30542 if (!(0, _primitives.isDict)(resources)) {
30543 return false;
30544 }
30545
30546 var processed = Object.create(null);
30547
30548 if (resources.objId) {
30549 processed[resources.objId] = true;
30550 }
30551
30552 var nodes = [resources],
30553 xref = this.xref;
30554
30555 while (nodes.length) {
30556 var key, i, ii;
30557 var node = nodes.shift();
30558 var graphicStates = node.get('ExtGState');
30559
30560 if ((0, _primitives.isDict)(graphicStates)) {
30561 var graphicStatesKeys = graphicStates.getKeys();
30562
30563 for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) {
30564 key = graphicStatesKeys[i];
30565 var graphicState = graphicStates.get(key);
30566 var bm = graphicState.get('BM');
30567
30568 if ((0, _primitives.isName)(bm) && bm.name !== 'Normal') {
30569 return true;
30570 }
30571 }
30572 }
30573
30574 var xObjects = node.get('XObject');
30575
30576 if (!(0, _primitives.isDict)(xObjects)) {
30577 continue;
30578 }
30579
30580 var xObjectsKeys = xObjects.getKeys();
30581
30582 for (i = 0, ii = xObjectsKeys.length; i < ii; i++) {
30583 key = xObjectsKeys[i];
30584 var xObject = xObjects.getRaw(key);
30585
30586 if ((0, _primitives.isRef)(xObject)) {
30587 if (processed[xObject.toString()]) {
30588 continue;
30589 }
30590
30591 xObject = xref.fetch(xObject);
30592 }
30593
30594 if (!(0, _primitives.isStream)(xObject)) {
30595 continue;
30596 }
30597
30598 if (xObject.dict.objId) {
30599 if (processed[xObject.dict.objId]) {
30600 continue;
30601 }
30602
30603 processed[xObject.dict.objId] = true;
30604 }
30605
30606 var xResources = xObject.dict.get('Resources');
30607
30608 if ((0, _primitives.isDict)(xResources) && (!xResources.objId || !processed[xResources.objId])) {
30609 nodes.push(xResources);
30610
30611 if (xResources.objId) {
30612 processed[xResources.objId] = true;
30613 }
30614 }
30615 }
30616 }
30617
30618 return false;
30619 },
30620 buildFormXObject: function PartialEvaluator_buildFormXObject(resources, xobj, smask, operatorList, task, initialState) {
30621 var dict = xobj.dict;
30622 var matrix = dict.getArray('Matrix');
30623 var bbox = dict.getArray('BBox');
30624
30625 if (Array.isArray(bbox) && bbox.length === 4) {
30626 bbox = _util.Util.normalizeRect(bbox);
30627 } else {
30628 bbox = null;
30629 }
30630
30631 var group = dict.get('Group');
30632
30633 if (group) {
30634 var groupOptions = {
30635 matrix: matrix,
30636 bbox: bbox,
30637 smask: smask,
30638 isolated: false,
30639 knockout: false
30640 };
30641 var groupSubtype = group.get('S');
30642 var colorSpace = null;
30643
30644 if ((0, _primitives.isName)(groupSubtype, 'Transparency')) {
30645 groupOptions.isolated = group.get('I') || false;
30646 groupOptions.knockout = group.get('K') || false;
30647
30648 if (group.has('CS')) {
30649 colorSpace = _colorspace.ColorSpace.parse(group.get('CS'), this.xref, resources, this.pdfFunctionFactory);
30650 }
30651 }
30652
30653 if (smask && smask.backdrop) {
30654 colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
30655 smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
30656 }
30657
30658 operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
30659 }
30660
30661 operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
30662 return this.getOperatorList({
30663 stream: xobj,
30664 task: task,
30665 resources: dict.get('Resources') || resources,
30666 operatorList: operatorList,
30667 initialState: initialState
30668 }).then(function () {
30669 operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
30670
30671 if (group) {
30672 operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
30673 }
30674 });
30675 },
30676 buildPaintImageXObject: function () {
30677 var _buildPaintImageXObject = _asyncToGenerator(
30678 /*#__PURE__*/
30679 _regenerator["default"].mark(function _callee2(_ref3) {
30680 var _this2 = this;
30681
30682 var resources, image, _ref3$isInline, isInline, operatorList, cacheKey, imageCache, _ref3$forceDisableNat, forceDisableNativeImageDecoder, dict, w, h, maxImageSize, imageMask, imgData, args, width, height, bitStrideLength, imgArray, decode, softMask, mask, SMALL_IMAGE_DIMENSIONS, imageObj, nativeImageDecoderSupport, objId, nativeImageDecoder, imgPromise;
30683
30684 return _regenerator["default"].wrap(function _callee2$(_context2) {
30685 while (1) {
30686 switch (_context2.prev = _context2.next) {
30687 case 0:
30688 resources = _ref3.resources, image = _ref3.image, _ref3$isInline = _ref3.isInline, isInline = _ref3$isInline === void 0 ? false : _ref3$isInline, operatorList = _ref3.operatorList, cacheKey = _ref3.cacheKey, imageCache = _ref3.imageCache, _ref3$forceDisableNat = _ref3.forceDisableNativeImageDecoder, forceDisableNativeImageDecoder = _ref3$forceDisableNat === void 0 ? false : _ref3$forceDisableNat;
30689 dict = image.dict;
30690 w = dict.get('Width', 'W');
30691 h = dict.get('Height', 'H');
30692
30693 if (!(!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h)))) {
30694 _context2.next = 7;
30695 break;
30696 }
30697
30698 (0, _util.warn)('Image dimensions are missing, or not numbers.');
30699 return _context2.abrupt("return", undefined);
30700
30701 case 7:
30702 maxImageSize = this.options.maxImageSize;
30703
30704 if (!(maxImageSize !== -1 && w * h > maxImageSize)) {
30705 _context2.next = 11;
30706 break;
30707 }
30708
30709 (0, _util.warn)('Image exceeded maximum allowed size and was removed.');
30710 return _context2.abrupt("return", undefined);
30711
30712 case 11:
30713 imageMask = dict.get('ImageMask', 'IM') || false;
30714
30715 if (!imageMask) {
30716 _context2.next = 24;
30717 break;
30718 }
30719
30720 width = dict.get('Width', 'W');
30721 height = dict.get('Height', 'H');
30722 bitStrideLength = width + 7 >> 3;
30723 imgArray = image.getBytes(bitStrideLength * height, true);
30724 decode = dict.getArray('Decode', 'D');
30725 imgData = _image.PDFImage.createMask({
30726 imgArray: imgArray,
30727 width: width,
30728 height: height,
30729 imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
30730 inverseDecode: !!decode && decode[0] > 0
30731 });
30732 imgData.cached = !!cacheKey;
30733 args = [imgData];
30734 operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
30735
30736 if (cacheKey) {
30737 imageCache[cacheKey] = {
30738 fn: _util.OPS.paintImageMaskXObject,
30739 args: args
30740 };
30741 }
30742
30743 return _context2.abrupt("return", undefined);
30744
30745 case 24:
30746 softMask = dict.get('SMask', 'SM') || false;
30747 mask = dict.get('Mask') || false;
30748 SMALL_IMAGE_DIMENSIONS = 200;
30749
30750 if (!(isInline && !softMask && !mask && !(image instanceof _jpeg_stream.JpegStream) && w + h < SMALL_IMAGE_DIMENSIONS)) {
30751 _context2.next = 32;
30752 break;
30753 }
30754
30755 imageObj = new _image.PDFImage({
30756 xref: this.xref,
30757 res: resources,
30758 image: image,
30759 isInline: isInline,
30760 pdfFunctionFactory: this.pdfFunctionFactory
30761 });
30762 imgData = imageObj.createImageData(true);
30763 operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
30764 return _context2.abrupt("return", undefined);
30765
30766 case 32:
30767 nativeImageDecoderSupport = forceDisableNativeImageDecoder ? _util.NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport;
30768 objId = "img_".concat(this.idFactory.createObjId());
30769
30770 if (this.parsingType3Font) {
30771 (0, _util.assert)(nativeImageDecoderSupport === _util.NativeImageDecoding.NONE, 'Type3 image resources should be completely decoded in the worker.');
30772 objId = "".concat(this.idFactory.getDocId(), "_type3res_").concat(objId);
30773 }
30774
30775 if (!(nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _jpeg_stream.JpegStream && _image_utils.NativeImageDecoder.isSupported(image, this.xref, resources, this.pdfFunctionFactory))) {
30776 _context2.next = 37;
30777 break;
30778 }
30779
30780 return _context2.abrupt("return", this.handler.sendWithPromise('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]).then(function () {
30781 operatorList.addDependency(objId);
30782 args = [objId, w, h];
30783 operatorList.addOp(_util.OPS.paintJpegXObject, args);
30784
30785 if (cacheKey) {
30786 imageCache[cacheKey] = {
30787 fn: _util.OPS.paintJpegXObject,
30788 args: args
30789 };
30790 }
30791 }, function (reason) {
30792 (0, _util.warn)('Native JPEG decoding failed -- trying to recover: ' + (reason && reason.message));
30793 return _this2.buildPaintImageXObject({
30794 resources: resources,
30795 image: image,
30796 isInline: isInline,
30797 operatorList: operatorList,
30798 cacheKey: cacheKey,
30799 imageCache: imageCache,
30800 forceDisableNativeImageDecoder: true
30801 });
30802 }));
30803
30804 case 37:
30805 nativeImageDecoder = null;
30806
30807 if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _jpeg_stream.JpegStream || mask instanceof _jpeg_stream.JpegStream || softMask instanceof _jpeg_stream.JpegStream)) {
30808 nativeImageDecoder = new _image_utils.NativeImageDecoder({
30809 xref: this.xref,
30810 resources: resources,
30811 handler: this.handler,
30812 forceDataSchema: this.options.forceDataSchema,
30813 pdfFunctionFactory: this.pdfFunctionFactory
30814 });
30815 }
30816
30817 operatorList.addDependency(objId);
30818 args = [objId, w, h];
30819 imgPromise = _image.PDFImage.buildImage({
30820 handler: this.handler,
30821 xref: this.xref,
30822 res: resources,
30823 image: image,
30824 isInline: isInline,
30825 nativeDecoder: nativeImageDecoder,
30826 pdfFunctionFactory: this.pdfFunctionFactory
30827 }).then(function (imageObj) {
30828 var imgData = imageObj.createImageData(false);
30829
30830 if (_this2.parsingType3Font) {
30831 return _this2.handler.sendWithPromise('commonobj', [objId, 'FontType3Res', imgData], [imgData.data.buffer]);
30832 }
30833
30834 _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', imgData], [imgData.data.buffer]);
30835
30836 return undefined;
30837 })["catch"](function (reason) {
30838 (0, _util.warn)('Unable to decode image: ' + reason);
30839
30840 if (_this2.parsingType3Font) {
30841 return _this2.handler.sendWithPromise('commonobj', [objId, 'FontType3Res', null]);
30842 }
30843
30844 _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', null]);
30845
30846 return undefined;
30847 });
30848
30849 if (!this.parsingType3Font) {
30850 _context2.next = 45;
30851 break;
30852 }
30853
30854 _context2.next = 45;
30855 return imgPromise;
30856
30857 case 45:
30858 operatorList.addOp(_util.OPS.paintImageXObject, args);
30859
30860 if (cacheKey) {
30861 imageCache[cacheKey] = {
30862 fn: _util.OPS.paintImageXObject,
30863 args: args
30864 };
30865 }
30866
30867 return _context2.abrupt("return", undefined);
30868
30869 case 48:
30870 case "end":
30871 return _context2.stop();
30872 }
30873 }
30874 }, _callee2, this);
30875 }));
30876
30877 function buildPaintImageXObject(_x2) {
30878 return _buildPaintImageXObject.apply(this, arguments);
30879 }
30880
30881 return buildPaintImageXObject;
30882 }(),
30883 handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) {
30884 var smaskContent = smask.get('G');
30885 var smaskOptions = {
30886 subtype: smask.get('S').name,
30887 backdrop: smask.get('BC')
30888 };
30889 var transferObj = smask.get('TR');
30890
30891 if ((0, _function.isPDFFunction)(transferObj)) {
30892 var transferFn = this.pdfFunctionFactory.create(transferObj);
30893 var transferMap = new Uint8Array(256);
30894 var tmp = new Float32Array(1);
30895
30896 for (var i = 0; i < 256; i++) {
30897 tmp[0] = i / 255;
30898 transferFn(tmp, 0, tmp, 0);
30899 transferMap[i] = tmp[0] * 255 | 0;
30900 }
30901
30902 smaskOptions.transferMap = transferMap;
30903 }
30904
30905 return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone());
30906 },
30907 handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) {
30908 var _this3 = this;
30909
30910 var tilingOpList = new _operator_list.OperatorList();
30911 var resourcesArray = [patternDict.get('Resources'), resources];
30912
30913 var patternResources = _primitives.Dict.merge(this.xref, resourcesArray);
30914
30915 return this.getOperatorList({
30916 stream: pattern,
30917 task: task,
30918 resources: patternResources,
30919 operatorList: tilingOpList
30920 }).then(function () {
30921 return (0, _pattern.getTilingPatternIR)({
30922 fnArray: tilingOpList.fnArray,
30923 argsArray: tilingOpList.argsArray
30924 }, patternDict, args);
30925 }).then(function (tilingPatternIR) {
30926 operatorList.addDependencies(tilingOpList.dependencies);
30927 operatorList.addOp(fn, tilingPatternIR);
30928 }, function (reason) {
30929 if (_this3.options.ignoreErrors) {
30930 _this3.handler.send('UnsupportedFeature', {
30931 featureId: _util.UNSUPPORTED_FEATURES.unknown
30932 });
30933
30934 (0, _util.warn)("handleTilingType - ignoring pattern: \"".concat(reason, "\"."));
30935 return;
30936 }
30937
30938 throw reason;
30939 });
30940 },
30941 handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) {
30942 var _this4 = this;
30943
30944 var fontName;
30945
30946 if (fontArgs) {
30947 fontArgs = fontArgs.slice();
30948 fontName = fontArgs[0].name;
30949 }
30950
30951 return this.loadFont(fontName, fontRef, resources).then(function (translated) {
30952 if (!translated.font.isType3Font) {
30953 return translated;
30954 }
30955
30956 return translated.loadType3Data(_this4, resources, operatorList, task).then(function () {
30957 return translated;
30958 })["catch"](function (reason) {
30959 _this4.handler.send('UnsupportedFeature', {
30960 featureId: _util.UNSUPPORTED_FEATURES.font
30961 });
30962
30963 return new TranslatedFont('g_font_error', new _fonts.ErrorFont('Type3 font load error: ' + reason), translated.font);
30964 });
30965 }).then(function (translated) {
30966 state.font = translated.font;
30967 translated.send(_this4.handler);
30968 return translated.loadedName;
30969 });
30970 },
30971 handleText: function handleText(chars, state) {
30972 var font = state.font;
30973 var glyphs = font.charsToGlyphs(chars);
30974
30975 if (font.data) {
30976 var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
30977
30978 if (isAddToPathSet || state.fillColorSpace.name === 'Pattern' || font.disableFontFace || this.options.disableFontFace) {
30979 PartialEvaluator.buildFontPaths(font, glyphs, this.handler);
30980 }
30981 }
30982
30983 return glyphs;
30984 },
30985 setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) {
30986 var _this5 = this;
30987
30988 var gStateObj = [];
30989 var gStateKeys = gState.getKeys();
30990 var promise = Promise.resolve();
30991
30992 var _loop = function _loop() {
30993 var key = gStateKeys[i];
30994 var value = gState.get(key);
30995
30996 switch (key) {
30997 case 'Type':
30998 break;
30999
31000 case 'LW':
31001 case 'LC':
31002 case 'LJ':
31003 case 'ML':
31004 case 'D':
31005 case 'RI':
31006 case 'FL':
31007 case 'CA':
31008 case 'ca':
31009 gStateObj.push([key, value]);
31010 break;
31011
31012 case 'Font':
31013 promise = promise.then(function () {
31014 return _this5.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {
31015 operatorList.addDependency(loadedName);
31016 gStateObj.push([key, [loadedName, value[1]]]);
31017 });
31018 });
31019 break;
31020
31021 case 'BM':
31022 gStateObj.push([key, normalizeBlendMode(value)]);
31023 break;
31024
31025 case 'SMask':
31026 if ((0, _primitives.isName)(value, 'None')) {
31027 gStateObj.push([key, false]);
31028 break;
31029 }
31030
31031 if ((0, _primitives.isDict)(value)) {
31032 promise = promise.then(function () {
31033 return _this5.handleSMask(value, resources, operatorList, task, stateManager);
31034 });
31035 gStateObj.push([key, true]);
31036 } else {
31037 (0, _util.warn)('Unsupported SMask type');
31038 }
31039
31040 break;
31041
31042 case 'OP':
31043 case 'op':
31044 case 'OPM':
31045 case 'BG':
31046 case 'BG2':
31047 case 'UCR':
31048 case 'UCR2':
31049 case 'TR':
31050 case 'TR2':
31051 case 'HT':
31052 case 'SM':
31053 case 'SA':
31054 case 'AIS':
31055 case 'TK':
31056 (0, _util.info)('graphic state operator ' + key);
31057 break;
31058
31059 default:
31060 (0, _util.info)('Unknown graphic state operator ' + key);
31061 break;
31062 }
31063 };
31064
31065 for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
31066 _loop();
31067 }
31068
31069 return promise.then(function () {
31070 if (gStateObj.length > 0) {
31071 operatorList.addOp(_util.OPS.setGState, [gStateObj]);
31072 }
31073 });
31074 },
31075 loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {
31076 var _this6 = this;
31077
31078 function errorFont() {
31079 return Promise.resolve(new TranslatedFont('g_font_error', new _fonts.ErrorFont('Font ' + fontName + ' is not available'), font));
31080 }
31081
31082 var fontRef,
31083 xref = this.xref;
31084
31085 if (font) {
31086 if (!(0, _primitives.isRef)(font)) {
31087 throw new Error('The "font" object should be a reference.');
31088 }
31089
31090 fontRef = font;
31091 } else {
31092 var fontRes = resources.get('Font');
31093
31094 if (fontRes) {
31095 fontRef = fontRes.getRaw(fontName);
31096 } else {
31097 (0, _util.warn)('fontRes not available');
31098 return errorFont();
31099 }
31100 }
31101
31102 if (!fontRef) {
31103 (0, _util.warn)('fontRef not available');
31104 return errorFont();
31105 }
31106
31107 if (this.fontCache.has(fontRef)) {
31108 return this.fontCache.get(fontRef);
31109 }
31110
31111 font = xref.fetchIfRef(fontRef);
31112
31113 if (!(0, _primitives.isDict)(font)) {
31114 return errorFont();
31115 }
31116
31117 if (font.translated) {
31118 return font.translated;
31119 }
31120
31121 var fontCapability = (0, _util.createPromiseCapability)();
31122 var preEvaluatedFont = this.preEvaluateFont(font);
31123 var descriptor = preEvaluatedFont.descriptor,
31124 hash = preEvaluatedFont.hash;
31125 var fontRefIsRef = (0, _primitives.isRef)(fontRef),
31126 fontID;
31127
31128 if (fontRefIsRef) {
31129 fontID = fontRef.toString();
31130 }
31131
31132 if (hash && (0, _primitives.isDict)(descriptor)) {
31133 if (!descriptor.fontAliases) {
31134 descriptor.fontAliases = Object.create(null);
31135 }
31136
31137 var fontAliases = descriptor.fontAliases;
31138
31139 if (fontAliases[hash]) {
31140 var aliasFontRef = fontAliases[hash].aliasRef;
31141
31142 if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
31143 this.fontCache.putAlias(fontRef, aliasFontRef);
31144 return this.fontCache.get(fontRef);
31145 }
31146 } else {
31147 fontAliases[hash] = {
31148 fontID: _fonts.Font.getFontID()
31149 };
31150 }
31151
31152 if (fontRefIsRef) {
31153 fontAliases[hash].aliasRef = fontRef;
31154 }
31155
31156 fontID = fontAliases[hash].fontID;
31157 }
31158
31159 if (fontRefIsRef) {
31160 this.fontCache.put(fontRef, fontCapability.promise);
31161 } else {
31162 if (!fontID) {
31163 fontID = this.idFactory.createObjId();
31164 }
31165
31166 this.fontCache.put("id_".concat(fontID), fontCapability.promise);
31167 }
31168
31169 (0, _util.assert)(fontID, 'The "fontID" must be defined.');
31170 font.loadedName = "".concat(this.idFactory.getDocId(), "_f").concat(fontID);
31171 font.translated = fontCapability.promise;
31172 var translatedPromise;
31173
31174 try {
31175 translatedPromise = this.translateFont(preEvaluatedFont);
31176 } catch (e) {
31177 translatedPromise = Promise.reject(e);
31178 }
31179
31180 translatedPromise.then(function (translatedFont) {
31181 if (translatedFont.fontType !== undefined) {
31182 var xrefFontStats = xref.stats.fontTypes;
31183 xrefFontStats[translatedFont.fontType] = true;
31184 }
31185
31186 fontCapability.resolve(new TranslatedFont(font.loadedName, translatedFont, font));
31187 })["catch"](function (reason) {
31188 _this6.handler.send('UnsupportedFeature', {
31189 featureId: _util.UNSUPPORTED_FEATURES.font
31190 });
31191
31192 try {
31193 var fontFile3 = descriptor && descriptor.get('FontFile3');
31194 var subtype = fontFile3 && fontFile3.get('Subtype');
31195 var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
31196 var xrefFontStats = xref.stats.fontTypes;
31197 xrefFontStats[fontType] = true;
31198 } catch (ex) {}
31199
31200 fontCapability.resolve(new TranslatedFont(font.loadedName, new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), font));
31201 });
31202 return fontCapability.promise;
31203 },
31204 buildPath: function buildPath(operatorList, fn, args) {
31205 var parsingText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
31206 var lastIndex = operatorList.length - 1;
31207
31208 if (!args) {
31209 args = [];
31210 }
31211
31212 if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
31213 if (parsingText) {
31214 (0, _util.warn)("Encountered path operator \"".concat(fn, "\" inside of a text object."));
31215 operatorList.addOp(_util.OPS.save, null);
31216 }
31217
31218 operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
31219
31220 if (parsingText) {
31221 operatorList.addOp(_util.OPS.restore, null);
31222 }
31223 } else {
31224 var opArgs = operatorList.argsArray[lastIndex];
31225 opArgs[0].push(fn);
31226 Array.prototype.push.apply(opArgs[1], args);
31227 }
31228 },
31229 handleColorN: function () {
31230 var _handleColorN = _asyncToGenerator(
31231 /*#__PURE__*/
31232 _regenerator["default"].mark(function _callee3(operatorList, fn, args, cs, patterns, resources, task) {
31233 var patternName, pattern, dict, typeNum, color, shading, matrix;
31234 return _regenerator["default"].wrap(function _callee3$(_context3) {
31235 while (1) {
31236 switch (_context3.prev = _context3.next) {
31237 case 0:
31238 patternName = args[args.length - 1];
31239
31240 if (!((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name)))) {
31241 _context3.next = 16;
31242 break;
31243 }
31244
31245 dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
31246 typeNum = dict.get('PatternType');
31247
31248 if (!(typeNum === TILING_PATTERN)) {
31249 _context3.next = 9;
31250 break;
31251 }
31252
31253 color = cs.base ? cs.base.getRgb(args, 0) : null;
31254 return _context3.abrupt("return", this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task));
31255
31256 case 9:
31257 if (!(typeNum === SHADING_PATTERN)) {
31258 _context3.next = 15;
31259 break;
31260 }
31261
31262 shading = dict.get('Shading');
31263 matrix = dict.getArray('Matrix');
31264 pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, this.pdfFunctionFactory);
31265 operatorList.addOp(fn, pattern.getIR());
31266 return _context3.abrupt("return", undefined);
31267
31268 case 15:
31269 throw new _util.FormatError("Unknown PatternType: ".concat(typeNum));
31270
31271 case 16:
31272 throw new _util.FormatError("Unknown PatternName: ".concat(patternName));
31273
31274 case 17:
31275 case "end":
31276 return _context3.stop();
31277 }
31278 }
31279 }, _callee3, this);
31280 }));
31281
31282 function handleColorN(_x3, _x4, _x5, _x6, _x7, _x8, _x9) {
31283 return _handleColorN.apply(this, arguments);
31284 }
31285
31286 return handleColorN;
31287 }(),
31288 getOperatorList: function getOperatorList(_ref4) {
31289 var _this7 = this;
31290
31291 var stream = _ref4.stream,
31292 task = _ref4.task,
31293 resources = _ref4.resources,
31294 operatorList = _ref4.operatorList,
31295 _ref4$initialState = _ref4.initialState,
31296 initialState = _ref4$initialState === void 0 ? null : _ref4$initialState;
31297 resources = resources || _primitives.Dict.empty;
31298 initialState = initialState || new EvalState();
31299
31300 if (!operatorList) {
31301 throw new Error('getOperatorList: missing "operatorList" parameter');
31302 }
31303
31304 var self = this;
31305 var xref = this.xref;
31306 var parsingText = false;
31307 var imageCache = Object.create(null);
31308
31309 var xobjs = resources.get('XObject') || _primitives.Dict.empty;
31310
31311 var patterns = resources.get('Pattern') || _primitives.Dict.empty;
31312
31313 var stateManager = new StateManager(initialState);
31314 var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
31315 var timeSlotManager = new TimeSlotManager();
31316
31317 function closePendingRestoreOPS(argument) {
31318 for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
31319 operatorList.addOp(_util.OPS.restore, []);
31320 }
31321 }
31322
31323 return new Promise(function promiseBody(resolve, reject) {
31324 var next = function next(promise) {
31325 promise.then(function () {
31326 try {
31327 promiseBody(resolve, reject);
31328 } catch (ex) {
31329 reject(ex);
31330 }
31331 }, reject);
31332 };
31333
31334 task.ensureNotTerminated();
31335 timeSlotManager.reset();
31336 var stop,
31337 operation = {},
31338 i,
31339 ii,
31340 cs;
31341
31342 while (!(stop = timeSlotManager.check())) {
31343 operation.args = null;
31344
31345 if (!preprocessor.read(operation)) {
31346 break;
31347 }
31348
31349 var args = operation.args;
31350 var fn = operation.fn;
31351
31352 switch (fn | 0) {
31353 case _util.OPS.paintXObject:
31354 var name = args[0].name;
31355
31356 if (name && imageCache[name] !== undefined) {
31357 operatorList.addOp(imageCache[name].fn, imageCache[name].args);
31358 args = null;
31359 continue;
31360 }
31361
31362 next(new Promise(function (resolveXObject, rejectXObject) {
31363 if (!name) {
31364 throw new _util.FormatError('XObject must be referred to by name.');
31365 }
31366
31367 var xobj = xobjs.get(name);
31368
31369 if (!xobj) {
31370 operatorList.addOp(fn, args);
31371 resolveXObject();
31372 return;
31373 }
31374
31375 if (!(0, _primitives.isStream)(xobj)) {
31376 throw new _util.FormatError('XObject should be a stream');
31377 }
31378
31379 var type = xobj.dict.get('Subtype');
31380
31381 if (!(0, _primitives.isName)(type)) {
31382 throw new _util.FormatError('XObject should have a Name subtype');
31383 }
31384
31385 if (type.name === 'Form') {
31386 stateManager.save();
31387 self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () {
31388 stateManager.restore();
31389 resolveXObject();
31390 }, rejectXObject);
31391 return;
31392 } else if (type.name === 'Image') {
31393 self.buildPaintImageXObject({
31394 resources: resources,
31395 image: xobj,
31396 operatorList: operatorList,
31397 cacheKey: name,
31398 imageCache: imageCache
31399 }).then(resolveXObject, rejectXObject);
31400 return;
31401 } else if (type.name === 'PS') {
31402 (0, _util.info)('Ignored XObject subtype PS');
31403 } else {
31404 throw new _util.FormatError("Unhandled XObject subtype ".concat(type.name));
31405 }
31406
31407 resolveXObject();
31408 })["catch"](function (reason) {
31409 if (self.options.ignoreErrors) {
31410 self.handler.send('UnsupportedFeature', {
31411 featureId: _util.UNSUPPORTED_FEATURES.unknown
31412 });
31413 (0, _util.warn)("getOperatorList - ignoring XObject: \"".concat(reason, "\"."));
31414 return;
31415 }
31416
31417 throw reason;
31418 }));
31419 return;
31420
31421 case _util.OPS.setFont:
31422 var fontSize = args[1];
31423 next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) {
31424 operatorList.addDependency(loadedName);
31425 operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
31426 }));
31427 return;
31428
31429 case _util.OPS.beginText:
31430 parsingText = true;
31431 break;
31432
31433 case _util.OPS.endText:
31434 parsingText = false;
31435 break;
31436
31437 case _util.OPS.endInlineImage:
31438 var cacheKey = args[0].cacheKey;
31439
31440 if (cacheKey) {
31441 var cacheEntry = imageCache[cacheKey];
31442
31443 if (cacheEntry !== undefined) {
31444 operatorList.addOp(cacheEntry.fn, cacheEntry.args);
31445 args = null;
31446 continue;
31447 }
31448 }
31449
31450 next(self.buildPaintImageXObject({
31451 resources: resources,
31452 image: args[0],
31453 isInline: true,
31454 operatorList: operatorList,
31455 cacheKey: cacheKey,
31456 imageCache: imageCache
31457 }));
31458 return;
31459
31460 case _util.OPS.showText:
31461 args[0] = self.handleText(args[0], stateManager.state);
31462 break;
31463
31464 case _util.OPS.showSpacedText:
31465 var arr = args[0];
31466 var combinedGlyphs = [];
31467 var arrLength = arr.length;
31468 var state = stateManager.state;
31469
31470 for (i = 0; i < arrLength; ++i) {
31471 var arrItem = arr[i];
31472
31473 if ((0, _util.isString)(arrItem)) {
31474 Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
31475 } else if ((0, _util.isNum)(arrItem)) {
31476 combinedGlyphs.push(arrItem);
31477 }
31478 }
31479
31480 args[0] = combinedGlyphs;
31481 fn = _util.OPS.showText;
31482 break;
31483
31484 case _util.OPS.nextLineShowText:
31485 operatorList.addOp(_util.OPS.nextLine);
31486 args[0] = self.handleText(args[0], stateManager.state);
31487 fn = _util.OPS.showText;
31488 break;
31489
31490 case _util.OPS.nextLineSetSpacingShowText:
31491 operatorList.addOp(_util.OPS.nextLine);
31492 operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
31493 operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
31494 args[0] = self.handleText(args[0], stateManager.state);
31495 fn = _util.OPS.showText;
31496 break;
31497
31498 case _util.OPS.setTextRenderingMode:
31499 stateManager.state.textRenderingMode = args[0];
31500 break;
31501
31502 case _util.OPS.setFillColorSpace:
31503 stateManager.state.fillColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);
31504 continue;
31505
31506 case _util.OPS.setStrokeColorSpace:
31507 stateManager.state.strokeColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources, self.pdfFunctionFactory);
31508 continue;
31509
31510 case _util.OPS.setFillColor:
31511 cs = stateManager.state.fillColorSpace;
31512 args = cs.getRgb(args, 0);
31513 fn = _util.OPS.setFillRGBColor;
31514 break;
31515
31516 case _util.OPS.setStrokeColor:
31517 cs = stateManager.state.strokeColorSpace;
31518 args = cs.getRgb(args, 0);
31519 fn = _util.OPS.setStrokeRGBColor;
31520 break;
31521
31522 case _util.OPS.setFillGray:
31523 stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
31524 args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
31525 fn = _util.OPS.setFillRGBColor;
31526 break;
31527
31528 case _util.OPS.setStrokeGray:
31529 stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
31530 args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
31531 fn = _util.OPS.setStrokeRGBColor;
31532 break;
31533
31534 case _util.OPS.setFillCMYKColor:
31535 stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
31536 args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
31537 fn = _util.OPS.setFillRGBColor;
31538 break;
31539
31540 case _util.OPS.setStrokeCMYKColor:
31541 stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
31542 args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
31543 fn = _util.OPS.setStrokeRGBColor;
31544 break;
31545
31546 case _util.OPS.setFillRGBColor:
31547 stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
31548 args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
31549 break;
31550
31551 case _util.OPS.setStrokeRGBColor:
31552 stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
31553 args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
31554 break;
31555
31556 case _util.OPS.setFillColorN:
31557 cs = stateManager.state.fillColorSpace;
31558
31559 if (cs.name === 'Pattern') {
31560 next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task));
31561 return;
31562 }
31563
31564 args = cs.getRgb(args, 0);
31565 fn = _util.OPS.setFillRGBColor;
31566 break;
31567
31568 case _util.OPS.setStrokeColorN:
31569 cs = stateManager.state.strokeColorSpace;
31570
31571 if (cs.name === 'Pattern') {
31572 next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task));
31573 return;
31574 }
31575
31576 args = cs.getRgb(args, 0);
31577 fn = _util.OPS.setStrokeRGBColor;
31578 break;
31579
31580 case _util.OPS.shadingFill:
31581 var shadingRes = resources.get('Shading');
31582
31583 if (!shadingRes) {
31584 throw new _util.FormatError('No shading resource found');
31585 }
31586
31587 var shading = shadingRes.get(args[0].name);
31588
31589 if (!shading) {
31590 throw new _util.FormatError('No shading object found');
31591 }
31592
31593 var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, self.pdfFunctionFactory);
31594
31595 var patternIR = shadingFill.getIR();
31596 args = [patternIR];
31597 fn = _util.OPS.shadingFill;
31598 break;
31599
31600 case _util.OPS.setGState:
31601 var dictName = args[0];
31602 var extGState = resources.get('ExtGState');
31603
31604 if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) {
31605 break;
31606 }
31607
31608 var gState = extGState.get(dictName.name);
31609 next(self.setGState(resources, gState, operatorList, task, stateManager));
31610 return;
31611
31612 case _util.OPS.moveTo:
31613 case _util.OPS.lineTo:
31614 case _util.OPS.curveTo:
31615 case _util.OPS.curveTo2:
31616 case _util.OPS.curveTo3:
31617 case _util.OPS.closePath:
31618 case _util.OPS.rectangle:
31619 self.buildPath(operatorList, fn, args, parsingText);
31620 continue;
31621
31622 case _util.OPS.markPoint:
31623 case _util.OPS.markPointProps:
31624 case _util.OPS.beginMarkedContent:
31625 case _util.OPS.beginMarkedContentProps:
31626 case _util.OPS.endMarkedContent:
31627 case _util.OPS.beginCompat:
31628 case _util.OPS.endCompat:
31629 continue;
31630
31631 default:
31632 if (args !== null) {
31633 for (i = 0, ii = args.length; i < ii; i++) {
31634 if (args[i] instanceof _primitives.Dict) {
31635 break;
31636 }
31637 }
31638
31639 if (i < ii) {
31640 (0, _util.warn)('getOperatorList - ignoring operator: ' + fn);
31641 continue;
31642 }
31643 }
31644
31645 }
31646
31647 operatorList.addOp(fn, args);
31648 }
31649
31650 if (stop) {
31651 next(deferred);
31652 return;
31653 }
31654
31655 closePendingRestoreOPS();
31656 resolve();
31657 })["catch"](function (reason) {
31658 if (_this7.options.ignoreErrors) {
31659 _this7.handler.send('UnsupportedFeature', {
31660 featureId: _util.UNSUPPORTED_FEATURES.unknown
31661 });
31662
31663 (0, _util.warn)("getOperatorList - ignoring errors during \"".concat(task.name, "\" ") + "task: \"".concat(reason, "\"."));
31664 closePendingRestoreOPS();
31665 return;
31666 }
31667
31668 throw reason;
31669 });
31670 },
31671 getTextContent: function getTextContent(_ref5) {
31672 var _this8 = this;
31673
31674 var stream = _ref5.stream,
31675 task = _ref5.task,
31676 resources = _ref5.resources,
31677 _ref5$stateManager = _ref5.stateManager,
31678 stateManager = _ref5$stateManager === void 0 ? null : _ref5$stateManager,
31679 _ref5$normalizeWhites = _ref5.normalizeWhitespace,
31680 normalizeWhitespace = _ref5$normalizeWhites === void 0 ? false : _ref5$normalizeWhites,
31681 _ref5$combineTextItem = _ref5.combineTextItems,
31682 combineTextItems = _ref5$combineTextItem === void 0 ? false : _ref5$combineTextItem,
31683 sink = _ref5.sink,
31684 _ref5$seenStyles = _ref5.seenStyles,
31685 seenStyles = _ref5$seenStyles === void 0 ? Object.create(null) : _ref5$seenStyles;
31686 resources = resources || _primitives.Dict.empty;
31687 stateManager = stateManager || new StateManager(new TextState());
31688 var WhitespaceRegexp = /\s/g;
31689 var textContent = {
31690 items: [],
31691 styles: Object.create(null)
31692 };
31693 var textContentItem = {
31694 initialized: false,
31695 str: [],
31696 width: 0,
31697 height: 0,
31698 vertical: false,
31699 lastAdvanceWidth: 0,
31700 lastAdvanceHeight: 0,
31701 textAdvanceScale: 0,
31702 spaceWidth: 0,
31703 fakeSpaceMin: Infinity,
31704 fakeMultiSpaceMin: Infinity,
31705 fakeMultiSpaceMax: -0,
31706 textRunBreakAllowed: false,
31707 transform: null,
31708 fontName: null
31709 };
31710 var SPACE_FACTOR = 0.3;
31711 var MULTI_SPACE_FACTOR = 1.5;
31712 var MULTI_SPACE_FACTOR_MAX = 4;
31713 var self = this;
31714 var xref = this.xref;
31715 var xobjs = null;
31716 var skipEmptyXObjs = Object.create(null);
31717 var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
31718 var textState;
31719
31720 function ensureTextContentItem() {
31721 if (textContentItem.initialized) {
31722 return textContentItem;
31723 }
31724
31725 var font = textState.font;
31726
31727 if (!(font.loadedName in seenStyles)) {
31728 seenStyles[font.loadedName] = true;
31729 textContent.styles[font.loadedName] = {
31730 fontFamily: font.fallbackName,
31731 ascent: font.ascent,
31732 descent: font.descent,
31733 vertical: !!font.vertical
31734 };
31735 }
31736
31737 textContentItem.fontName = font.loadedName;
31738 var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
31739
31740 if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {
31741 var glyphHeight = font.bbox[3] - font.bbox[1];
31742
31743 if (glyphHeight > 0) {
31744 tsm[3] *= glyphHeight * textState.fontMatrix[3];
31745 }
31746 }
31747
31748 var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
31749
31750 textContentItem.transform = trm;
31751
31752 if (!font.vertical) {
31753 textContentItem.width = 0;
31754 textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
31755 textContentItem.vertical = false;
31756 } else {
31757 textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
31758 textContentItem.height = 0;
31759 textContentItem.vertical = true;
31760 }
31761
31762 var a = textState.textLineMatrix[0];
31763 var b = textState.textLineMatrix[1];
31764 var scaleLineX = Math.sqrt(a * a + b * b);
31765 a = textState.ctm[0];
31766 b = textState.ctm[1];
31767 var scaleCtmX = Math.sqrt(a * a + b * b);
31768 textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
31769 textContentItem.lastAdvanceWidth = 0;
31770 textContentItem.lastAdvanceHeight = 0;
31771 var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
31772
31773 if (spaceWidth) {
31774 textContentItem.spaceWidth = spaceWidth;
31775 textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;
31776 textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;
31777 textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX;
31778 textContentItem.textRunBreakAllowed = !font.isMonospace;
31779 } else {
31780 textContentItem.spaceWidth = 0;
31781 textContentItem.fakeSpaceMin = Infinity;
31782 textContentItem.fakeMultiSpaceMin = Infinity;
31783 textContentItem.fakeMultiSpaceMax = 0;
31784 textContentItem.textRunBreakAllowed = false;
31785 }
31786
31787 textContentItem.initialized = true;
31788 return textContentItem;
31789 }
31790
31791 function replaceWhitespace(str) {
31792 var i = 0,
31793 ii = str.length,
31794 code;
31795
31796 while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) {
31797 i++;
31798 }
31799
31800 return i < ii ? str.replace(WhitespaceRegexp, ' ') : str;
31801 }
31802
31803 function runBidiTransform(textChunk) {
31804 var str = textChunk.str.join('');
31805 var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical);
31806 return {
31807 str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str,
31808 dir: bidiResult.dir,
31809 width: textChunk.width,
31810 height: textChunk.height,
31811 transform: textChunk.transform,
31812 fontName: textChunk.fontName
31813 };
31814 }
31815
31816 function handleSetFont(fontName, fontRef) {
31817 return self.loadFont(fontName, fontRef, resources).then(function (translated) {
31818 textState.font = translated.font;
31819 textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
31820 });
31821 }
31822
31823 function buildTextContentItem(chars) {
31824 var font = textState.font;
31825 var textChunk = ensureTextContentItem();
31826 var width = 0;
31827 var height = 0;
31828 var glyphs = font.charsToGlyphs(chars);
31829
31830 for (var i = 0; i < glyphs.length; i++) {
31831 var glyph = glyphs[i];
31832 var glyphWidth = null;
31833
31834 if (font.vertical && glyph.vmetric) {
31835 glyphWidth = glyph.vmetric[0];
31836 } else {
31837 glyphWidth = glyph.width;
31838 }
31839
31840 var glyphUnicode = glyph.unicode;
31841 var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
31842
31843 if (NormalizedUnicodes[glyphUnicode] !== undefined) {
31844 glyphUnicode = NormalizedUnicodes[glyphUnicode];
31845 }
31846
31847 glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
31848 var charSpacing = textState.charSpacing;
31849
31850 if (glyph.isSpace) {
31851 var wordSpacing = textState.wordSpacing;
31852 charSpacing += wordSpacing;
31853
31854 if (wordSpacing > 0) {
31855 addFakeSpaces(wordSpacing, textChunk.str);
31856 }
31857 }
31858
31859 var tx = 0;
31860 var ty = 0;
31861
31862 if (!font.vertical) {
31863 var w0 = glyphWidth * textState.fontMatrix[0];
31864 tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale;
31865 width += tx;
31866 } else {
31867 var w1 = glyphWidth * textState.fontMatrix[0];
31868 ty = w1 * textState.fontSize + charSpacing;
31869 height += ty;
31870 }
31871
31872 textState.translateTextMatrix(tx, ty);
31873 textChunk.str.push(glyphUnicode);
31874 }
31875
31876 if (!font.vertical) {
31877 textChunk.lastAdvanceWidth = width;
31878 textChunk.width += width;
31879 } else {
31880 textChunk.lastAdvanceHeight = height;
31881 textChunk.height += Math.abs(height);
31882 }
31883
31884 return textChunk;
31885 }
31886
31887 function addFakeSpaces(width, strBuf) {
31888 if (width < textContentItem.fakeSpaceMin) {
31889 return;
31890 }
31891
31892 if (width < textContentItem.fakeMultiSpaceMin) {
31893 strBuf.push(' ');
31894 return;
31895 }
31896
31897 var fakeSpaces = Math.round(width / textContentItem.spaceWidth);
31898
31899 while (fakeSpaces-- > 0) {
31900 strBuf.push(' ');
31901 }
31902 }
31903
31904 function flushTextContentItem() {
31905 if (!textContentItem.initialized) {
31906 return;
31907 }
31908
31909 if (!textContentItem.vertical) {
31910 textContentItem.width *= textContentItem.textAdvanceScale;
31911 } else {
31912 textContentItem.height *= textContentItem.textAdvanceScale;
31913 }
31914
31915 textContent.items.push(runBidiTransform(textContentItem));
31916 textContentItem.initialized = false;
31917 textContentItem.str.length = 0;
31918 }
31919
31920 function enqueueChunk() {
31921 var length = textContent.items.length;
31922
31923 if (length > 0) {
31924 sink.enqueue(textContent, length);
31925 textContent.items = [];
31926 textContent.styles = Object.create(null);
31927 }
31928 }
31929
31930 var timeSlotManager = new TimeSlotManager();
31931 return new Promise(function promiseBody(resolve, reject) {
31932 var next = function next(promise) {
31933 enqueueChunk();
31934 Promise.all([promise, sink.ready]).then(function () {
31935 try {
31936 promiseBody(resolve, reject);
31937 } catch (ex) {
31938 reject(ex);
31939 }
31940 }, reject);
31941 };
31942
31943 task.ensureNotTerminated();
31944 timeSlotManager.reset();
31945 var stop,
31946 operation = {},
31947 args = [];
31948
31949 while (!(stop = timeSlotManager.check())) {
31950 args.length = 0;
31951 operation.args = args;
31952
31953 if (!preprocessor.read(operation)) {
31954 break;
31955 }
31956
31957 textState = stateManager.state;
31958 var fn = operation.fn;
31959 args = operation.args;
31960 var advance, diff;
31961
31962 switch (fn | 0) {
31963 case _util.OPS.setFont:
31964 var fontNameArg = args[0].name,
31965 fontSizeArg = args[1];
31966
31967 if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
31968 break;
31969 }
31970
31971 flushTextContentItem();
31972 textState.fontName = fontNameArg;
31973 textState.fontSize = fontSizeArg;
31974 next(handleSetFont(fontNameArg, null));
31975 return;
31976
31977 case _util.OPS.setTextRise:
31978 flushTextContentItem();
31979 textState.textRise = args[0];
31980 break;
31981
31982 case _util.OPS.setHScale:
31983 flushTextContentItem();
31984 textState.textHScale = args[0] / 100;
31985 break;
31986
31987 case _util.OPS.setLeading:
31988 flushTextContentItem();
31989 textState.leading = args[0];
31990 break;
31991
31992 case _util.OPS.moveText:
31993 var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0;
31994 advance = args[0] - args[1];
31995
31996 if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) {
31997 textState.translateTextLineMatrix(args[0], args[1]);
31998 textContentItem.width += args[0] - textContentItem.lastAdvanceWidth;
31999 textContentItem.height += args[1] - textContentItem.lastAdvanceHeight;
32000 diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight);
32001 addFakeSpaces(diff, textContentItem.str);
32002 break;
32003 }
32004
32005 flushTextContentItem();
32006 textState.translateTextLineMatrix(args[0], args[1]);
32007 textState.textMatrix = textState.textLineMatrix.slice();
32008 break;
32009
32010 case _util.OPS.setLeadingMoveText:
32011 flushTextContentItem();
32012 textState.leading = -args[1];
32013 textState.translateTextLineMatrix(args[0], args[1]);
32014 textState.textMatrix = textState.textLineMatrix.slice();
32015 break;
32016
32017 case _util.OPS.nextLine:
32018 flushTextContentItem();
32019 textState.carriageReturn();
32020 break;
32021
32022 case _util.OPS.setTextMatrix:
32023 advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]);
32024
32025 if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) {
32026 textState.translateTextLineMatrix(advance.width, advance.height);
32027 textContentItem.width += advance.width - textContentItem.lastAdvanceWidth;
32028 textContentItem.height += advance.height - textContentItem.lastAdvanceHeight;
32029 diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight);
32030 addFakeSpaces(diff, textContentItem.str);
32031 break;
32032 }
32033
32034 flushTextContentItem();
32035 textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
32036 textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
32037 break;
32038
32039 case _util.OPS.setCharSpacing:
32040 textState.charSpacing = args[0];
32041 break;
32042
32043 case _util.OPS.setWordSpacing:
32044 textState.wordSpacing = args[0];
32045 break;
32046
32047 case _util.OPS.beginText:
32048 flushTextContentItem();
32049 textState.textMatrix = _util.IDENTITY_MATRIX.slice();
32050 textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
32051 break;
32052
32053 case _util.OPS.showSpacedText:
32054 var items = args[0];
32055 var offset;
32056
32057 for (var j = 0, jj = items.length; j < jj; j++) {
32058 if (typeof items[j] === 'string') {
32059 buildTextContentItem(items[j]);
32060 } else if ((0, _util.isNum)(items[j])) {
32061 ensureTextContentItem();
32062 advance = items[j] * textState.fontSize / 1000;
32063 var breakTextRun = false;
32064
32065 if (textState.font.vertical) {
32066 offset = advance;
32067 textState.translateTextMatrix(0, offset);
32068 breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;
32069
32070 if (!breakTextRun) {
32071 textContentItem.height += offset;
32072 }
32073 } else {
32074 advance = -advance;
32075 offset = advance * textState.textHScale;
32076 textState.translateTextMatrix(offset, 0);
32077 breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax;
32078
32079 if (!breakTextRun) {
32080 textContentItem.width += offset;
32081 }
32082 }
32083
32084 if (breakTextRun) {
32085 flushTextContentItem();
32086 } else if (advance > 0) {
32087 addFakeSpaces(advance, textContentItem.str);
32088 }
32089 }
32090 }
32091
32092 break;
32093
32094 case _util.OPS.showText:
32095 buildTextContentItem(args[0]);
32096 break;
32097
32098 case _util.OPS.nextLineShowText:
32099 flushTextContentItem();
32100 textState.carriageReturn();
32101 buildTextContentItem(args[0]);
32102 break;
32103
32104 case _util.OPS.nextLineSetSpacingShowText:
32105 flushTextContentItem();
32106 textState.wordSpacing = args[0];
32107 textState.charSpacing = args[1];
32108 textState.carriageReturn();
32109 buildTextContentItem(args[2]);
32110 break;
32111
32112 case _util.OPS.paintXObject:
32113 flushTextContentItem();
32114
32115 if (!xobjs) {
32116 xobjs = resources.get('XObject') || _primitives.Dict.empty;
32117 }
32118
32119 var name = args[0].name;
32120
32121 if (name && skipEmptyXObjs[name] !== undefined) {
32122 break;
32123 }
32124
32125 next(new Promise(function (resolveXObject, rejectXObject) {
32126 if (!name) {
32127 throw new _util.FormatError('XObject must be referred to by name.');
32128 }
32129
32130 var xobj = xobjs.get(name);
32131
32132 if (!xobj) {
32133 resolveXObject();
32134 return;
32135 }
32136
32137 if (!(0, _primitives.isStream)(xobj)) {
32138 throw new _util.FormatError('XObject should be a stream');
32139 }
32140
32141 var type = xobj.dict.get('Subtype');
32142
32143 if (!(0, _primitives.isName)(type)) {
32144 throw new _util.FormatError('XObject should have a Name subtype');
32145 }
32146
32147 if (type.name !== 'Form') {
32148 skipEmptyXObjs[name] = true;
32149 resolveXObject();
32150 return;
32151 }
32152
32153 var currentState = stateManager.state.clone();
32154 var xObjStateManager = new StateManager(currentState);
32155 var matrix = xobj.dict.getArray('Matrix');
32156
32157 if (Array.isArray(matrix) && matrix.length === 6) {
32158 xObjStateManager.transform(matrix);
32159 }
32160
32161 enqueueChunk();
32162 var sinkWrapper = {
32163 enqueueInvoked: false,
32164 enqueue: function enqueue(chunk, size) {
32165 this.enqueueInvoked = true;
32166 sink.enqueue(chunk, size);
32167 },
32168
32169 get desiredSize() {
32170 return sink.desiredSize;
32171 },
32172
32173 get ready() {
32174 return sink.ready;
32175 }
32176
32177 };
32178 self.getTextContent({
32179 stream: xobj,
32180 task: task,
32181 resources: xobj.dict.get('Resources') || resources,
32182 stateManager: xObjStateManager,
32183 normalizeWhitespace: normalizeWhitespace,
32184 combineTextItems: combineTextItems,
32185 sink: sinkWrapper,
32186 seenStyles: seenStyles
32187 }).then(function () {
32188 if (!sinkWrapper.enqueueInvoked) {
32189 skipEmptyXObjs[name] = true;
32190 }
32191
32192 resolveXObject();
32193 }, rejectXObject);
32194 })["catch"](function (reason) {
32195 if (reason instanceof _util.AbortException) {
32196 return;
32197 }
32198
32199 if (self.options.ignoreErrors) {
32200 (0, _util.warn)("getTextContent - ignoring XObject: \"".concat(reason, "\"."));
32201 return;
32202 }
32203
32204 throw reason;
32205 }));
32206 return;
32207
32208 case _util.OPS.setGState:
32209 flushTextContentItem();
32210 var dictName = args[0];
32211 var extGState = resources.get('ExtGState');
32212
32213 if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) {
32214 break;
32215 }
32216
32217 var gState = extGState.get(dictName.name);
32218
32219 if (!(0, _primitives.isDict)(gState)) {
32220 break;
32221 }
32222
32223 var gStateFont = gState.get('Font');
32224
32225 if (gStateFont) {
32226 textState.fontName = null;
32227 textState.fontSize = gStateFont[1];
32228 next(handleSetFont(null, gStateFont[0]));
32229 return;
32230 }
32231
32232 break;
32233 }
32234
32235 if (textContent.items.length >= sink.desiredSize) {
32236 stop = true;
32237 break;
32238 }
32239 }
32240
32241 if (stop) {
32242 next(deferred);
32243 return;
32244 }
32245
32246 flushTextContentItem();
32247 enqueueChunk();
32248 resolve();
32249 })["catch"](function (reason) {
32250 if (reason instanceof _util.AbortException) {
32251 return;
32252 }
32253
32254 if (_this8.options.ignoreErrors) {
32255 (0, _util.warn)("getTextContent - ignoring errors during \"".concat(task.name, "\" ") + "task: \"".concat(reason, "\"."));
32256 flushTextContentItem();
32257 enqueueChunk();
32258 return;
32259 }
32260
32261 throw reason;
32262 });
32263 },
32264 extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) {
32265 var _this9 = this;
32266
32267 var xref = this.xref,
32268 cidToGidBytes;
32269 var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');
32270 var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);
32271
32272 if (properties.composite) {
32273 var cidSystemInfo = dict.get('CIDSystemInfo');
32274
32275 if ((0, _primitives.isDict)(cidSystemInfo)) {
32276 properties.cidSystemInfo = {
32277 registry: (0, _util.stringToPDFString)(cidSystemInfo.get('Registry')),
32278 ordering: (0, _util.stringToPDFString)(cidSystemInfo.get('Ordering')),
32279 supplement: cidSystemInfo.get('Supplement')
32280 };
32281 }
32282
32283 var cidToGidMap = dict.get('CIDToGIDMap');
32284
32285 if ((0, _primitives.isStream)(cidToGidMap)) {
32286 cidToGidBytes = cidToGidMap.getBytes();
32287 }
32288 }
32289
32290 var differences = [];
32291 var baseEncodingName = null;
32292 var encoding;
32293
32294 if (dict.has('Encoding')) {
32295 encoding = dict.get('Encoding');
32296
32297 if ((0, _primitives.isDict)(encoding)) {
32298 baseEncodingName = encoding.get('BaseEncoding');
32299 baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
32300
32301 if (encoding.has('Differences')) {
32302 var diffEncoding = encoding.get('Differences');
32303 var index = 0;
32304
32305 for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
32306 var data = xref.fetchIfRef(diffEncoding[j]);
32307
32308 if ((0, _util.isNum)(data)) {
32309 index = data;
32310 } else if ((0, _primitives.isName)(data)) {
32311 differences[index++] = data.name;
32312 } else {
32313 throw new _util.FormatError("Invalid entry in 'Differences' array: ".concat(data));
32314 }
32315 }
32316 }
32317 } else if ((0, _primitives.isName)(encoding)) {
32318 baseEncodingName = encoding.name;
32319 } else {
32320 throw new _util.FormatError('Encoding is not a Name nor a Dict');
32321 }
32322
32323 if (baseEncodingName !== 'MacRomanEncoding' && baseEncodingName !== 'MacExpertEncoding' && baseEncodingName !== 'WinAnsiEncoding') {
32324 baseEncodingName = null;
32325 }
32326 }
32327
32328 if (baseEncodingName) {
32329 properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice();
32330 } else {
32331 var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic);
32332 var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic);
32333 encoding = _encodings.StandardEncoding;
32334
32335 if (properties.type === 'TrueType' && !isNonsymbolicFont) {
32336 encoding = _encodings.WinAnsiEncoding;
32337 }
32338
32339 if (isSymbolicFont) {
32340 encoding = _encodings.MacRomanEncoding;
32341
32342 if (!properties.file) {
32343 if (/Symbol/i.test(properties.name)) {
32344 encoding = _encodings.SymbolSetEncoding;
32345 } else if (/Dingbats/i.test(properties.name)) {
32346 encoding = _encodings.ZapfDingbatsEncoding;
32347 }
32348 }
32349 }
32350
32351 properties.defaultEncoding = encoding;
32352 }
32353
32354 properties.differences = differences;
32355 properties.baseEncodingName = baseEncodingName;
32356 properties.hasEncoding = !!baseEncodingName || differences.length > 0;
32357 properties.dict = dict;
32358 return toUnicodePromise.then(function (toUnicode) {
32359 properties.toUnicode = toUnicode;
32360 return _this9.buildToUnicode(properties);
32361 }).then(function (toUnicode) {
32362 properties.toUnicode = toUnicode;
32363
32364 if (cidToGidBytes) {
32365 properties.cidToGidMap = _this9.readCidToGidMap(cidToGidBytes, toUnicode);
32366 }
32367
32368 return properties;
32369 });
32370 },
32371 _buildSimpleFontToUnicode: function _buildSimpleFontToUnicode(properties) {
32372 (0, _util.assert)(!properties.composite, 'Must be a simple font.');
32373 var toUnicode = [],
32374 charcode,
32375 glyphName;
32376 var encoding = properties.defaultEncoding.slice();
32377 var baseEncodingName = properties.baseEncodingName;
32378 var differences = properties.differences;
32379
32380 for (charcode in differences) {
32381 glyphName = differences[charcode];
32382
32383 if (glyphName === '.notdef') {
32384 continue;
32385 }
32386
32387 encoding[charcode] = glyphName;
32388 }
32389
32390 var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
32391
32392 for (charcode in encoding) {
32393 glyphName = encoding[charcode];
32394
32395 if (glyphName === '') {
32396 continue;
32397 } else if (glyphsUnicodeMap[glyphName] === undefined) {
32398 var code = 0;
32399
32400 switch (glyphName[0]) {
32401 case 'G':
32402 if (glyphName.length === 3) {
32403 code = parseInt(glyphName.substring(1), 16);
32404 }
32405
32406 break;
32407
32408 case 'g':
32409 if (glyphName.length === 5) {
32410 code = parseInt(glyphName.substring(1), 16);
32411 }
32412
32413 break;
32414
32415 case 'C':
32416 case 'c':
32417 if (glyphName.length >= 3) {
32418 code = +glyphName.substring(1);
32419 }
32420
32421 break;
32422
32423 default:
32424 var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
32425
32426 if (unicode !== -1) {
32427 code = unicode;
32428 }
32429
32430 }
32431
32432 if (code) {
32433 if (baseEncodingName && code === +charcode) {
32434 var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
32435
32436 if (baseEncoding && (glyphName = baseEncoding[charcode])) {
32437 toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
32438 continue;
32439 }
32440 }
32441
32442 toUnicode[charcode] = String.fromCodePoint(code);
32443 }
32444
32445 continue;
32446 }
32447
32448 toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
32449 }
32450
32451 return new _fonts.ToUnicodeMap(toUnicode);
32452 },
32453 buildToUnicode: function buildToUnicode(properties) {
32454 properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
32455
32456 if (properties.hasIncludedToUnicodeMap) {
32457 if (!properties.composite && properties.hasEncoding) {
32458 properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
32459 }
32460
32461 return Promise.resolve(properties.toUnicode);
32462 }
32463
32464 if (!properties.composite) {
32465 return Promise.resolve(this._buildSimpleFontToUnicode(properties));
32466 }
32467
32468 if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === 'Adobe' && (properties.cidSystemInfo.ordering === 'GB1' || properties.cidSystemInfo.ordering === 'CNS1' || properties.cidSystemInfo.ordering === 'Japan1' || properties.cidSystemInfo.ordering === 'Korea1'))) {
32469 var registry = properties.cidSystemInfo.registry;
32470 var ordering = properties.cidSystemInfo.ordering;
32471
32472 var ucs2CMapName = _primitives.Name.get(registry + '-' + ordering + '-UCS2');
32473
32474 return _cmap.CMapFactory.create({
32475 encoding: ucs2CMapName,
32476 fetchBuiltInCMap: this.fetchBuiltInCMap,
32477 useCMap: null
32478 }).then(function (ucs2CMap) {
32479 var cMap = properties.cMap;
32480 var toUnicode = [];
32481 cMap.forEach(function (charcode, cid) {
32482 if (cid > 0xffff) {
32483 throw new _util.FormatError('Max size of CID is 65,535');
32484 }
32485
32486 var ucs2 = ucs2CMap.lookup(cid);
32487
32488 if (ucs2) {
32489 toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
32490 }
32491 });
32492 return new _fonts.ToUnicodeMap(toUnicode);
32493 });
32494 }
32495
32496 return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));
32497 },
32498 readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {
32499 var cmapObj = toUnicode;
32500
32501 if ((0, _primitives.isName)(cmapObj)) {
32502 return _cmap.CMapFactory.create({
32503 encoding: cmapObj,
32504 fetchBuiltInCMap: this.fetchBuiltInCMap,
32505 useCMap: null
32506 }).then(function (cmap) {
32507 if (cmap instanceof _cmap.IdentityCMap) {
32508 return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);
32509 }
32510
32511 return new _fonts.ToUnicodeMap(cmap.getMap());
32512 });
32513 } else if ((0, _primitives.isStream)(cmapObj)) {
32514 return _cmap.CMapFactory.create({
32515 encoding: cmapObj,
32516 fetchBuiltInCMap: this.fetchBuiltInCMap,
32517 useCMap: null
32518 }).then(function (cmap) {
32519 if (cmap instanceof _cmap.IdentityCMap) {
32520 return new _fonts.IdentityToUnicodeMap(0, 0xFFFF);
32521 }
32522
32523 var map = new Array(cmap.length);
32524 cmap.forEach(function (charCode, token) {
32525 var str = [];
32526
32527 for (var k = 0; k < token.length; k += 2) {
32528 var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
32529
32530 if ((w1 & 0xF800) !== 0xD800) {
32531 str.push(w1);
32532 continue;
32533 }
32534
32535 k += 2;
32536 var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
32537 str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
32538 }
32539
32540 map[charCode] = String.fromCodePoint.apply(String, str);
32541 });
32542 return new _fonts.ToUnicodeMap(map);
32543 });
32544 }
32545
32546 return Promise.resolve(null);
32547 },
32548 readCidToGidMap: function readCidToGidMap(glyphsData, toUnicode) {
32549 var result = [];
32550
32551 for (var j = 0, jj = glyphsData.length; j < jj; j++) {
32552 var glyphID = glyphsData[j++] << 8 | glyphsData[j];
32553 var code = j >> 1;
32554
32555 if (glyphID === 0 && !toUnicode.has(code)) {
32556 continue;
32557 }
32558
32559 result[code] = glyphID;
32560 }
32561
32562 return result;
32563 },
32564 extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) {
32565 var xref = this.xref;
32566 var glyphsWidths = [];
32567 var defaultWidth = 0;
32568 var glyphsVMetrics = [];
32569 var defaultVMetrics;
32570 var i, ii, j, jj, start, code, widths;
32571
32572 if (properties.composite) {
32573 defaultWidth = dict.has('DW') ? dict.get('DW') : 1000;
32574 widths = dict.get('W');
32575
32576 if (widths) {
32577 for (i = 0, ii = widths.length; i < ii; i++) {
32578 start = xref.fetchIfRef(widths[i++]);
32579 code = xref.fetchIfRef(widths[i]);
32580
32581 if (Array.isArray(code)) {
32582 for (j = 0, jj = code.length; j < jj; j++) {
32583 glyphsWidths[start++] = xref.fetchIfRef(code[j]);
32584 }
32585 } else {
32586 var width = xref.fetchIfRef(widths[++i]);
32587
32588 for (j = start; j <= code; j++) {
32589 glyphsWidths[j] = width;
32590 }
32591 }
32592 }
32593 }
32594
32595 if (properties.vertical) {
32596 var vmetrics = dict.getArray('DW2') || [880, -1000];
32597 defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
32598 vmetrics = dict.get('W2');
32599
32600 if (vmetrics) {
32601 for (i = 0, ii = vmetrics.length; i < ii; i++) {
32602 start = xref.fetchIfRef(vmetrics[i++]);
32603 code = xref.fetchIfRef(vmetrics[i]);
32604
32605 if (Array.isArray(code)) {
32606 for (j = 0, jj = code.length; j < jj; j++) {
32607 glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];
32608 }
32609 } else {
32610 var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];
32611
32612 for (j = start; j <= code; j++) {
32613 glyphsVMetrics[j] = vmetric;
32614 }
32615 }
32616 }
32617 }
32618 }
32619 } else {
32620 var firstChar = properties.firstChar;
32621 widths = dict.get('Widths');
32622
32623 if (widths) {
32624 j = firstChar;
32625
32626 for (i = 0, ii = widths.length; i < ii; i++) {
32627 glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
32628 }
32629
32630 defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0;
32631 } else {
32632 var baseFontName = dict.get('BaseFont');
32633
32634 if ((0, _primitives.isName)(baseFontName)) {
32635 var metrics = this.getBaseFontMetrics(baseFontName.name);
32636 glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
32637 defaultWidth = metrics.defaultWidth;
32638 }
32639 }
32640 }
32641
32642 var isMonospace = true;
32643 var firstWidth = defaultWidth;
32644
32645 for (var glyph in glyphsWidths) {
32646 var glyphWidth = glyphsWidths[glyph];
32647
32648 if (!glyphWidth) {
32649 continue;
32650 }
32651
32652 if (!firstWidth) {
32653 firstWidth = glyphWidth;
32654 continue;
32655 }
32656
32657 if (firstWidth !== glyphWidth) {
32658 isMonospace = false;
32659 break;
32660 }
32661 }
32662
32663 if (isMonospace) {
32664 properties.flags |= _fonts.FontFlags.FixedPitch;
32665 }
32666
32667 properties.defaultWidth = defaultWidth;
32668 properties.widths = glyphsWidths;
32669 properties.defaultVMetrics = defaultVMetrics;
32670 properties.vmetrics = glyphsVMetrics;
32671 },
32672 isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {
32673 var fontNameWoStyle = baseFontName.split('-')[0];
32674 return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;
32675 },
32676 getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
32677 var defaultWidth = 0;
32678 var widths = [];
32679 var monospace = false;
32680 var stdFontMap = (0, _standard_fonts.getStdFontMap)();
32681 var lookupName = stdFontMap[name] || name;
32682 var Metrics = (0, _metrics.getMetrics)();
32683
32684 if (!(lookupName in Metrics)) {
32685 if (this.isSerifFont(name)) {
32686 lookupName = 'Times-Roman';
32687 } else {
32688 lookupName = 'Helvetica';
32689 }
32690 }
32691
32692 var glyphWidths = Metrics[lookupName];
32693
32694 if ((0, _util.isNum)(glyphWidths)) {
32695 defaultWidth = glyphWidths;
32696 monospace = true;
32697 } else {
32698 widths = glyphWidths();
32699 }
32700
32701 return {
32702 defaultWidth: defaultWidth,
32703 monospace: monospace,
32704 widths: widths
32705 };
32706 },
32707 buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) {
32708 var widths = Object.create(null);
32709 var differences = properties.differences;
32710 var encoding = properties.defaultEncoding;
32711
32712 for (var charCode = 0; charCode < 256; charCode++) {
32713 if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
32714 widths[charCode] = widthsByGlyphName[differences[charCode]];
32715 continue;
32716 }
32717
32718 if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
32719 widths[charCode] = widthsByGlyphName[encoding[charCode]];
32720 continue;
32721 }
32722 }
32723
32724 return widths;
32725 },
32726 preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {
32727 var baseDict = dict;
32728 var type = dict.get('Subtype');
32729
32730 if (!(0, _primitives.isName)(type)) {
32731 throw new _util.FormatError('invalid font Subtype');
32732 }
32733
32734 var composite = false;
32735 var uint8array;
32736
32737 if (type.name === 'Type0') {
32738 var df = dict.get('DescendantFonts');
32739
32740 if (!df) {
32741 throw new _util.FormatError('Descendant fonts are not specified');
32742 }
32743
32744 dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
32745 type = dict.get('Subtype');
32746
32747 if (!(0, _primitives.isName)(type)) {
32748 throw new _util.FormatError('invalid font Subtype');
32749 }
32750
32751 composite = true;
32752 }
32753
32754 var descriptor = dict.get('FontDescriptor');
32755
32756 if (descriptor) {
32757 var hash = new _murmurhash.MurmurHash3_64();
32758 var encoding = baseDict.getRaw('Encoding');
32759
32760 if ((0, _primitives.isName)(encoding)) {
32761 hash.update(encoding.name);
32762 } else if ((0, _primitives.isRef)(encoding)) {
32763 hash.update(encoding.toString());
32764 } else if ((0, _primitives.isDict)(encoding)) {
32765 var keys = encoding.getKeys();
32766
32767 for (var i = 0, ii = keys.length; i < ii; i++) {
32768 var entry = encoding.getRaw(keys[i]);
32769
32770 if ((0, _primitives.isName)(entry)) {
32771 hash.update(entry.name);
32772 } else if ((0, _primitives.isRef)(entry)) {
32773 hash.update(entry.toString());
32774 } else if (Array.isArray(entry)) {
32775 var diffLength = entry.length,
32776 diffBuf = new Array(diffLength);
32777
32778 for (var j = 0; j < diffLength; j++) {
32779 var diffEntry = entry[j];
32780
32781 if ((0, _primitives.isName)(diffEntry)) {
32782 diffBuf[j] = diffEntry.name;
32783 } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
32784 diffBuf[j] = diffEntry.toString();
32785 }
32786 }
32787
32788 hash.update(diffBuf.join());
32789 }
32790 }
32791 }
32792
32793 var firstChar = dict.get('FirstChar') || 0;
32794 var lastChar = dict.get('LastChar') || (composite ? 0xFFFF : 0xFF);
32795 hash.update("".concat(firstChar, "-").concat(lastChar));
32796 var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');
32797
32798 if ((0, _primitives.isStream)(toUnicode)) {
32799 var stream = toUnicode.str || toUnicode;
32800 uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
32801 hash.update(uint8array);
32802 } else if ((0, _primitives.isName)(toUnicode)) {
32803 hash.update(toUnicode.name);
32804 }
32805
32806 var widths = dict.get('Widths') || baseDict.get('Widths');
32807
32808 if (widths) {
32809 uint8array = new Uint8Array(new Uint32Array(widths).buffer);
32810 hash.update(uint8array);
32811 }
32812 }
32813
32814 return {
32815 descriptor: descriptor,
32816 dict: dict,
32817 baseDict: baseDict,
32818 composite: composite,
32819 type: type.name,
32820 hash: hash ? hash.hexdigest() : ''
32821 };
32822 },
32823 translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {
32824 var _this10 = this;
32825
32826 var baseDict = preEvaluatedFont.baseDict;
32827 var dict = preEvaluatedFont.dict;
32828 var composite = preEvaluatedFont.composite;
32829 var descriptor = preEvaluatedFont.descriptor;
32830 var type = preEvaluatedFont.type;
32831 var maxCharIndex = composite ? 0xFFFF : 0xFF;
32832 var properties;
32833
32834 if (!descriptor) {
32835 if (type === 'Type3') {
32836 descriptor = new _primitives.Dict(null);
32837 descriptor.set('FontName', _primitives.Name.get(type));
32838 descriptor.set('FontBBox', dict.getArray('FontBBox'));
32839 } else {
32840 var baseFontName = dict.get('BaseFont');
32841
32842 if (!(0, _primitives.isName)(baseFontName)) {
32843 throw new _util.FormatError('Base font is not specified');
32844 }
32845
32846 baseFontName = baseFontName.name.replace(/[,_]/g, '-');
32847 var metrics = this.getBaseFontMetrics(baseFontName);
32848 var fontNameWoStyle = baseFontName.split('-')[0];
32849 var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic);
32850 properties = {
32851 type: type,
32852 name: baseFontName,
32853 widths: metrics.widths,
32854 defaultWidth: metrics.defaultWidth,
32855 flags: flags,
32856 firstChar: 0,
32857 lastChar: maxCharIndex
32858 };
32859 return this.extractDataStructures(dict, dict, properties).then(function (properties) {
32860 properties.widths = _this10.buildCharCodeToWidth(metrics.widths, properties);
32861 return new _fonts.Font(baseFontName, null, properties);
32862 });
32863 }
32864 }
32865
32866 var firstChar = dict.get('FirstChar') || 0;
32867 var lastChar = dict.get('LastChar') || maxCharIndex;
32868 var fontName = descriptor.get('FontName');
32869 var baseFont = dict.get('BaseFont');
32870
32871 if ((0, _util.isString)(fontName)) {
32872 fontName = _primitives.Name.get(fontName);
32873 }
32874
32875 if ((0, _util.isString)(baseFont)) {
32876 baseFont = _primitives.Name.get(baseFont);
32877 }
32878
32879 if (type !== 'Type3') {
32880 var fontNameStr = fontName && fontName.name;
32881 var baseFontStr = baseFont && baseFont.name;
32882
32883 if (fontNameStr !== baseFontStr) {
32884 (0, _util.info)("The FontDescriptor's FontName is \"".concat(fontNameStr, "\" but ") + "should be the same as the Font's BaseFont \"".concat(baseFontStr, "\"."));
32885
32886 if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
32887 fontName = baseFont;
32888 }
32889 }
32890 }
32891
32892 fontName = fontName || baseFont;
32893
32894 if (!(0, _primitives.isName)(fontName)) {
32895 throw new _util.FormatError('invalid font name');
32896 }
32897
32898 var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');
32899
32900 if (fontFile) {
32901 if (fontFile.dict) {
32902 var subtype = fontFile.dict.get('Subtype');
32903
32904 if (subtype) {
32905 subtype = subtype.name;
32906 }
32907
32908 var length1 = fontFile.dict.get('Length1');
32909 var length2 = fontFile.dict.get('Length2');
32910 var length3 = fontFile.dict.get('Length3');
32911 }
32912 }
32913
32914 properties = {
32915 type: type,
32916 name: fontName.name,
32917 subtype: subtype,
32918 file: fontFile,
32919 length1: length1,
32920 length2: length2,
32921 length3: length3,
32922 loadedName: baseDict.loadedName,
32923 composite: composite,
32924 wideChars: composite,
32925 fixedPitch: false,
32926 fontMatrix: dict.getArray('FontMatrix') || _util.FONT_IDENTITY_MATRIX,
32927 firstChar: firstChar || 0,
32928 lastChar: lastChar || maxCharIndex,
32929 bbox: descriptor.getArray('FontBBox'),
32930 ascent: descriptor.get('Ascent'),
32931 descent: descriptor.get('Descent'),
32932 xHeight: descriptor.get('XHeight'),
32933 capHeight: descriptor.get('CapHeight'),
32934 flags: descriptor.get('Flags'),
32935 italicAngle: descriptor.get('ItalicAngle'),
32936 isType3Font: false
32937 };
32938 var cMapPromise;
32939
32940 if (composite) {
32941 var cidEncoding = baseDict.get('Encoding');
32942
32943 if ((0, _primitives.isName)(cidEncoding)) {
32944 properties.cidEncoding = cidEncoding.name;
32945 }
32946
32947 cMapPromise = _cmap.CMapFactory.create({
32948 encoding: cidEncoding,
32949 fetchBuiltInCMap: this.fetchBuiltInCMap,
32950 useCMap: null
32951 }).then(function (cMap) {
32952 properties.cMap = cMap;
32953 properties.vertical = properties.cMap.vertical;
32954 });
32955 } else {
32956 cMapPromise = Promise.resolve(undefined);
32957 }
32958
32959 return cMapPromise.then(function () {
32960 return _this10.extractDataStructures(dict, baseDict, properties);
32961 }).then(function (properties) {
32962 _this10.extractWidths(dict, descriptor, properties);
32963
32964 if (type === 'Type3') {
32965 properties.isType3Font = true;
32966 }
32967
32968 return new _fonts.Font(fontName.name, fontFile, properties);
32969 });
32970 }
32971 };
32972
32973 PartialEvaluator.buildFontPaths = function (font, glyphs, handler) {
32974 function buildPath(fontChar) {
32975 if (font.renderer.hasBuiltPath(fontChar)) {
32976 return;
32977 }
32978
32979 handler.send('commonobj', ["".concat(font.loadedName, "_path_").concat(fontChar), 'FontPath', font.renderer.getPathJs(fontChar)]);
32980 }
32981
32982 var _iteratorNormalCompletion = true;
32983 var _didIteratorError = false;
32984 var _iteratorError = undefined;
32985
32986 try {
32987 for (var _iterator = glyphs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
32988 var glyph = _step.value;
32989 buildPath(glyph.fontChar);
32990 var accent = glyph.accent;
32991
32992 if (accent && accent.fontChar) {
32993 buildPath(accent.fontChar);
32994 }
32995 }
32996 } catch (err) {
32997 _didIteratorError = true;
32998 _iteratorError = err;
32999 } finally {
33000 try {
33001 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
33002 _iterator["return"]();
33003 }
33004 } finally {
33005 if (_didIteratorError) {
33006 throw _iteratorError;
33007 }
33008 }
33009 }
33010 };
33011
33012 return PartialEvaluator;
33013}();
33014
33015exports.PartialEvaluator = PartialEvaluator;
33016
33017var TranslatedFont = function TranslatedFontClosure() {
33018 function TranslatedFont(loadedName, font, dict) {
33019 this.loadedName = loadedName;
33020 this.font = font;
33021 this.dict = dict;
33022 this.type3Loaded = null;
33023 this.sent = false;
33024 }
33025
33026 TranslatedFont.prototype = {
33027 send: function send(handler) {
33028 if (this.sent) {
33029 return;
33030 }
33031
33032 this.sent = true;
33033 handler.send('commonobj', [this.loadedName, 'Font', this.font.exportData()]);
33034 },
33035 fallback: function fallback(handler) {
33036 if (!this.font.data) {
33037 return;
33038 }
33039
33040 this.font.disableFontFace = true;
33041 var glyphs = this.font.glyphCacheValues;
33042 PartialEvaluator.buildFontPaths(this.font, glyphs, handler);
33043 },
33044 loadType3Data: function loadType3Data(evaluator, resources, parentOperatorList, task) {
33045 if (!this.font.isType3Font) {
33046 throw new Error('Must be a Type3 font.');
33047 }
33048
33049 if (this.type3Loaded) {
33050 return this.type3Loaded;
33051 }
33052
33053 var type3Options = Object.create(evaluator.options);
33054 type3Options.ignoreErrors = false;
33055 type3Options.nativeImageDecoderSupport = _util.NativeImageDecoding.NONE;
33056 var type3Evaluator = evaluator.clone(type3Options);
33057 type3Evaluator.parsingType3Font = true;
33058 var translatedFont = this.font;
33059 var loadCharProcsPromise = Promise.resolve();
33060 var charProcs = this.dict.get('CharProcs');
33061 var fontResources = this.dict.get('Resources') || resources;
33062 var charProcKeys = charProcs.getKeys();
33063 var charProcOperatorList = Object.create(null);
33064
33065 var _loop2 = function _loop2() {
33066 var key = charProcKeys[i];
33067 loadCharProcsPromise = loadCharProcsPromise.then(function () {
33068 var glyphStream = charProcs.get(key);
33069 var operatorList = new _operator_list.OperatorList();
33070 return type3Evaluator.getOperatorList({
33071 stream: glyphStream,
33072 task: task,
33073 resources: fontResources,
33074 operatorList: operatorList
33075 }).then(function () {
33076 charProcOperatorList[key] = operatorList.getIR();
33077 parentOperatorList.addDependencies(operatorList.dependencies);
33078 })["catch"](function (reason) {
33079 (0, _util.warn)("Type3 font resource \"".concat(key, "\" is not available."));
33080 var operatorList = new _operator_list.OperatorList();
33081 charProcOperatorList[key] = operatorList.getIR();
33082 });
33083 });
33084 };
33085
33086 for (var i = 0, n = charProcKeys.length; i < n; ++i) {
33087 _loop2();
33088 }
33089
33090 this.type3Loaded = loadCharProcsPromise.then(function () {
33091 translatedFont.charProcOperatorList = charProcOperatorList;
33092 });
33093 return this.type3Loaded;
33094 }
33095 };
33096 return TranslatedFont;
33097}();
33098
33099var StateManager = function StateManagerClosure() {
33100 function StateManager(initialState) {
33101 this.state = initialState;
33102 this.stateStack = [];
33103 }
33104
33105 StateManager.prototype = {
33106 save: function save() {
33107 var old = this.state;
33108 this.stateStack.push(this.state);
33109 this.state = old.clone();
33110 },
33111 restore: function restore() {
33112 var prev = this.stateStack.pop();
33113
33114 if (prev) {
33115 this.state = prev;
33116 }
33117 },
33118 transform: function transform(args) {
33119 this.state.ctm = _util.Util.transform(this.state.ctm, args);
33120 }
33121 };
33122 return StateManager;
33123}();
33124
33125var TextState = function TextStateClosure() {
33126 function TextState() {
33127 this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
33128 this.fontName = null;
33129 this.fontSize = 0;
33130 this.font = null;
33131 this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
33132 this.textMatrix = _util.IDENTITY_MATRIX.slice();
33133 this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
33134 this.charSpacing = 0;
33135 this.wordSpacing = 0;
33136 this.leading = 0;
33137 this.textHScale = 1;
33138 this.textRise = 0;
33139 }
33140
33141 TextState.prototype = {
33142 setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
33143 var m = this.textMatrix;
33144 m[0] = a;
33145 m[1] = b;
33146 m[2] = c;
33147 m[3] = d;
33148 m[4] = e;
33149 m[5] = f;
33150 },
33151 setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {
33152 var m = this.textLineMatrix;
33153 m[0] = a;
33154 m[1] = b;
33155 m[2] = c;
33156 m[3] = d;
33157 m[4] = e;
33158 m[5] = f;
33159 },
33160 translateTextMatrix: function TextState_translateTextMatrix(x, y) {
33161 var m = this.textMatrix;
33162 m[4] = m[0] * x + m[2] * y + m[4];
33163 m[5] = m[1] * x + m[3] * y + m[5];
33164 },
33165 translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {
33166 var m = this.textLineMatrix;
33167 m[4] = m[0] * x + m[2] * y + m[4];
33168 m[5] = m[1] * x + m[3] * y + m[5];
33169 },
33170 calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {
33171 var font = this.font;
33172
33173 if (!font) {
33174 return null;
33175 }
33176
33177 var m = this.textLineMatrix;
33178
33179 if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {
33180 return null;
33181 }
33182
33183 var txDiff = e - m[4],
33184 tyDiff = f - m[5];
33185
33186 if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) {
33187 return null;
33188 }
33189
33190 var tx,
33191 ty,
33192 denominator = a * d - b * c;
33193
33194 if (font.vertical) {
33195 tx = -tyDiff * c / denominator;
33196 ty = tyDiff * a / denominator;
33197 } else {
33198 tx = txDiff * d / denominator;
33199 ty = -txDiff * b / denominator;
33200 }
33201
33202 return {
33203 width: tx,
33204 height: ty,
33205 value: font.vertical ? ty : tx
33206 };
33207 },
33208 calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {
33209 var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise];
33210 return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm));
33211 },
33212 carriageReturn: function TextState_carriageReturn() {
33213 this.translateTextLineMatrix(0, -this.leading);
33214 this.textMatrix = this.textLineMatrix.slice();
33215 },
33216 clone: function TextState_clone() {
33217 var clone = Object.create(this);
33218 clone.textMatrix = this.textMatrix.slice();
33219 clone.textLineMatrix = this.textLineMatrix.slice();
33220 clone.fontMatrix = this.fontMatrix.slice();
33221 return clone;
33222 }
33223 };
33224 return TextState;
33225}();
33226
33227var EvalState = function EvalStateClosure() {
33228 function EvalState() {
33229 this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
33230 this.font = null;
33231 this.textRenderingMode = _util.TextRenderingMode.FILL;
33232 this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
33233 this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
33234 }
33235
33236 EvalState.prototype = {
33237 clone: function CanvasExtraState_clone() {
33238 return Object.create(this);
33239 }
33240 };
33241 return EvalState;
33242}();
33243
33244var EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() {
33245 var getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {
33246 t['w'] = {
33247 id: _util.OPS.setLineWidth,
33248 numArgs: 1,
33249 variableArgs: false
33250 };
33251 t['J'] = {
33252 id: _util.OPS.setLineCap,
33253 numArgs: 1,
33254 variableArgs: false
33255 };
33256 t['j'] = {
33257 id: _util.OPS.setLineJoin,
33258 numArgs: 1,
33259 variableArgs: false
33260 };
33261 t['M'] = {
33262 id: _util.OPS.setMiterLimit,
33263 numArgs: 1,
33264 variableArgs: false
33265 };
33266 t['d'] = {
33267 id: _util.OPS.setDash,
33268 numArgs: 2,
33269 variableArgs: false
33270 };
33271 t['ri'] = {
33272 id: _util.OPS.setRenderingIntent,
33273 numArgs: 1,
33274 variableArgs: false
33275 };
33276 t['i'] = {
33277 id: _util.OPS.setFlatness,
33278 numArgs: 1,
33279 variableArgs: false
33280 };
33281 t['gs'] = {
33282 id: _util.OPS.setGState,
33283 numArgs: 1,
33284 variableArgs: false
33285 };
33286 t['q'] = {
33287 id: _util.OPS.save,
33288 numArgs: 0,
33289 variableArgs: false
33290 };
33291 t['Q'] = {
33292 id: _util.OPS.restore,
33293 numArgs: 0,
33294 variableArgs: false
33295 };
33296 t['cm'] = {
33297 id: _util.OPS.transform,
33298 numArgs: 6,
33299 variableArgs: false
33300 };
33301 t['m'] = {
33302 id: _util.OPS.moveTo,
33303 numArgs: 2,
33304 variableArgs: false
33305 };
33306 t['l'] = {
33307 id: _util.OPS.lineTo,
33308 numArgs: 2,
33309 variableArgs: false
33310 };
33311 t['c'] = {
33312 id: _util.OPS.curveTo,
33313 numArgs: 6,
33314 variableArgs: false
33315 };
33316 t['v'] = {
33317 id: _util.OPS.curveTo2,
33318 numArgs: 4,
33319 variableArgs: false
33320 };
33321 t['y'] = {
33322 id: _util.OPS.curveTo3,
33323 numArgs: 4,
33324 variableArgs: false
33325 };
33326 t['h'] = {
33327 id: _util.OPS.closePath,
33328 numArgs: 0,
33329 variableArgs: false
33330 };
33331 t['re'] = {
33332 id: _util.OPS.rectangle,
33333 numArgs: 4,
33334 variableArgs: false
33335 };
33336 t['S'] = {
33337 id: _util.OPS.stroke,
33338 numArgs: 0,
33339 variableArgs: false
33340 };
33341 t['s'] = {
33342 id: _util.OPS.closeStroke,
33343 numArgs: 0,
33344 variableArgs: false
33345 };
33346 t['f'] = {
33347 id: _util.OPS.fill,
33348 numArgs: 0,
33349 variableArgs: false
33350 };
33351 t['F'] = {
33352 id: _util.OPS.fill,
33353 numArgs: 0,
33354 variableArgs: false
33355 };
33356 t['f*'] = {
33357 id: _util.OPS.eoFill,
33358 numArgs: 0,
33359 variableArgs: false
33360 };
33361 t['B'] = {
33362 id: _util.OPS.fillStroke,
33363 numArgs: 0,
33364 variableArgs: false
33365 };
33366 t['B*'] = {
33367 id: _util.OPS.eoFillStroke,
33368 numArgs: 0,
33369 variableArgs: false
33370 };
33371 t['b'] = {
33372 id: _util.OPS.closeFillStroke,
33373 numArgs: 0,
33374 variableArgs: false
33375 };
33376 t['b*'] = {
33377 id: _util.OPS.closeEOFillStroke,
33378 numArgs: 0,
33379 variableArgs: false
33380 };
33381 t['n'] = {
33382 id: _util.OPS.endPath,
33383 numArgs: 0,
33384 variableArgs: false
33385 };
33386 t['W'] = {
33387 id: _util.OPS.clip,
33388 numArgs: 0,
33389 variableArgs: false
33390 };
33391 t['W*'] = {
33392 id: _util.OPS.eoClip,
33393 numArgs: 0,
33394 variableArgs: false
33395 };
33396 t['BT'] = {
33397 id: _util.OPS.beginText,
33398 numArgs: 0,
33399 variableArgs: false
33400 };
33401 t['ET'] = {
33402 id: _util.OPS.endText,
33403 numArgs: 0,
33404 variableArgs: false
33405 };
33406 t['Tc'] = {
33407 id: _util.OPS.setCharSpacing,
33408 numArgs: 1,
33409 variableArgs: false
33410 };
33411 t['Tw'] = {
33412 id: _util.OPS.setWordSpacing,
33413 numArgs: 1,
33414 variableArgs: false
33415 };
33416 t['Tz'] = {
33417 id: _util.OPS.setHScale,
33418 numArgs: 1,
33419 variableArgs: false
33420 };
33421 t['TL'] = {
33422 id: _util.OPS.setLeading,
33423 numArgs: 1,
33424 variableArgs: false
33425 };
33426 t['Tf'] = {
33427 id: _util.OPS.setFont,
33428 numArgs: 2,
33429 variableArgs: false
33430 };
33431 t['Tr'] = {
33432 id: _util.OPS.setTextRenderingMode,
33433 numArgs: 1,
33434 variableArgs: false
33435 };
33436 t['Ts'] = {
33437 id: _util.OPS.setTextRise,
33438 numArgs: 1,
33439 variableArgs: false
33440 };
33441 t['Td'] = {
33442 id: _util.OPS.moveText,
33443 numArgs: 2,
33444 variableArgs: false
33445 };
33446 t['TD'] = {
33447 id: _util.OPS.setLeadingMoveText,
33448 numArgs: 2,
33449 variableArgs: false
33450 };
33451 t['Tm'] = {
33452 id: _util.OPS.setTextMatrix,
33453 numArgs: 6,
33454 variableArgs: false
33455 };
33456 t['T*'] = {
33457 id: _util.OPS.nextLine,
33458 numArgs: 0,
33459 variableArgs: false
33460 };
33461 t['Tj'] = {
33462 id: _util.OPS.showText,
33463 numArgs: 1,
33464 variableArgs: false
33465 };
33466 t['TJ'] = {
33467 id: _util.OPS.showSpacedText,
33468 numArgs: 1,
33469 variableArgs: false
33470 };
33471 t['\''] = {
33472 id: _util.OPS.nextLineShowText,
33473 numArgs: 1,
33474 variableArgs: false
33475 };
33476 t['"'] = {
33477 id: _util.OPS.nextLineSetSpacingShowText,
33478 numArgs: 3,
33479 variableArgs: false
33480 };
33481 t['d0'] = {
33482 id: _util.OPS.setCharWidth,
33483 numArgs: 2,
33484 variableArgs: false
33485 };
33486 t['d1'] = {
33487 id: _util.OPS.setCharWidthAndBounds,
33488 numArgs: 6,
33489 variableArgs: false
33490 };
33491 t['CS'] = {
33492 id: _util.OPS.setStrokeColorSpace,
33493 numArgs: 1,
33494 variableArgs: false
33495 };
33496 t['cs'] = {
33497 id: _util.OPS.setFillColorSpace,
33498 numArgs: 1,
33499 variableArgs: false
33500 };
33501 t['SC'] = {
33502 id: _util.OPS.setStrokeColor,
33503 numArgs: 4,
33504 variableArgs: true
33505 };
33506 t['SCN'] = {
33507 id: _util.OPS.setStrokeColorN,
33508 numArgs: 33,
33509 variableArgs: true
33510 };
33511 t['sc'] = {
33512 id: _util.OPS.setFillColor,
33513 numArgs: 4,
33514 variableArgs: true
33515 };
33516 t['scn'] = {
33517 id: _util.OPS.setFillColorN,
33518 numArgs: 33,
33519 variableArgs: true
33520 };
33521 t['G'] = {
33522 id: _util.OPS.setStrokeGray,
33523 numArgs: 1,
33524 variableArgs: false
33525 };
33526 t['g'] = {
33527 id: _util.OPS.setFillGray,
33528 numArgs: 1,
33529 variableArgs: false
33530 };
33531 t['RG'] = {
33532 id: _util.OPS.setStrokeRGBColor,
33533 numArgs: 3,
33534 variableArgs: false
33535 };
33536 t['rg'] = {
33537 id: _util.OPS.setFillRGBColor,
33538 numArgs: 3,
33539 variableArgs: false
33540 };
33541 t['K'] = {
33542 id: _util.OPS.setStrokeCMYKColor,
33543 numArgs: 4,
33544 variableArgs: false
33545 };
33546 t['k'] = {
33547 id: _util.OPS.setFillCMYKColor,
33548 numArgs: 4,
33549 variableArgs: false
33550 };
33551 t['sh'] = {
33552 id: _util.OPS.shadingFill,
33553 numArgs: 1,
33554 variableArgs: false
33555 };
33556 t['BI'] = {
33557 id: _util.OPS.beginInlineImage,
33558 numArgs: 0,
33559 variableArgs: false
33560 };
33561 t['ID'] = {
33562 id: _util.OPS.beginImageData,
33563 numArgs: 0,
33564 variableArgs: false
33565 };
33566 t['EI'] = {
33567 id: _util.OPS.endInlineImage,
33568 numArgs: 1,
33569 variableArgs: false
33570 };
33571 t['Do'] = {
33572 id: _util.OPS.paintXObject,
33573 numArgs: 1,
33574 variableArgs: false
33575 };
33576 t['MP'] = {
33577 id: _util.OPS.markPoint,
33578 numArgs: 1,
33579 variableArgs: false
33580 };
33581 t['DP'] = {
33582 id: _util.OPS.markPointProps,
33583 numArgs: 2,
33584 variableArgs: false
33585 };
33586 t['BMC'] = {
33587 id: _util.OPS.beginMarkedContent,
33588 numArgs: 1,
33589 variableArgs: false
33590 };
33591 t['BDC'] = {
33592 id: _util.OPS.beginMarkedContentProps,
33593 numArgs: 2,
33594 variableArgs: false
33595 };
33596 t['EMC'] = {
33597 id: _util.OPS.endMarkedContent,
33598 numArgs: 0,
33599 variableArgs: false
33600 };
33601 t['BX'] = {
33602 id: _util.OPS.beginCompat,
33603 numArgs: 0,
33604 variableArgs: false
33605 };
33606 t['EX'] = {
33607 id: _util.OPS.endCompat,
33608 numArgs: 0,
33609 variableArgs: false
33610 };
33611 t['BM'] = null;
33612 t['BD'] = null;
33613 t['true'] = null;
33614 t['fa'] = null;
33615 t['fal'] = null;
33616 t['fals'] = null;
33617 t['false'] = null;
33618 t['nu'] = null;
33619 t['nul'] = null;
33620 t['null'] = null;
33621 });
33622 var MAX_INVALID_PATH_OPS = 20;
33623
33624 function EvaluatorPreprocessor(stream, xref, stateManager) {
33625 this.opMap = getOPMap();
33626 this.parser = new _parser.Parser({
33627 lexer: new _parser.Lexer(stream, this.opMap),
33628 xref: xref
33629 });
33630 this.stateManager = stateManager;
33631 this.nonProcessedArgs = [];
33632 this._numInvalidPathOPS = 0;
33633 }
33634
33635 EvaluatorPreprocessor.prototype = {
33636 get savedStatesDepth() {
33637 return this.stateManager.stateStack.length;
33638 },
33639
33640 read: function EvaluatorPreprocessor_read(operation) {
33641 var args = operation.args;
33642
33643 while (true) {
33644 var obj = this.parser.getObj();
33645
33646 if ((0, _primitives.isCmd)(obj)) {
33647 var cmd = obj.cmd;
33648 var opSpec = this.opMap[cmd];
33649
33650 if (!opSpec) {
33651 (0, _util.warn)("Unknown command \"".concat(cmd, "\"."));
33652 continue;
33653 }
33654
33655 var fn = opSpec.id;
33656 var numArgs = opSpec.numArgs;
33657 var argsLength = args !== null ? args.length : 0;
33658
33659 if (!opSpec.variableArgs) {
33660 if (argsLength !== numArgs) {
33661 var nonProcessedArgs = this.nonProcessedArgs;
33662
33663 while (argsLength > numArgs) {
33664 nonProcessedArgs.push(args.shift());
33665 argsLength--;
33666 }
33667
33668 while (argsLength < numArgs && nonProcessedArgs.length !== 0) {
33669 if (args === null) {
33670 args = [];
33671 }
33672
33673 args.unshift(nonProcessedArgs.pop());
33674 argsLength++;
33675 }
33676 }
33677
33678 if (argsLength < numArgs) {
33679 var partialMsg = "command ".concat(cmd, ": expected ").concat(numArgs, " args, ") + "but received ".concat(argsLength, " args.");
33680
33681 if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS) {
33682 throw new _util.FormatError("Invalid ".concat(partialMsg));
33683 }
33684
33685 (0, _util.warn)("Skipping ".concat(partialMsg));
33686
33687 if (args !== null) {
33688 args.length = 0;
33689 }
33690
33691 continue;
33692 }
33693 } else if (argsLength > numArgs) {
33694 (0, _util.info)("Command ".concat(cmd, ": expected [0, ").concat(numArgs, "] args, ") + "but received ".concat(argsLength, " args."));
33695 }
33696
33697 this.preprocessCommand(fn, args);
33698 operation.fn = fn;
33699 operation.args = args;
33700 return true;
33701 }
33702
33703 if ((0, _primitives.isEOF)(obj)) {
33704 return false;
33705 }
33706
33707 if (obj !== null) {
33708 if (args === null) {
33709 args = [];
33710 }
33711
33712 args.push(obj);
33713
33714 if (args.length > 33) {
33715 throw new _util.FormatError('Too many arguments');
33716 }
33717 }
33718 }
33719 },
33720 preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) {
33721 switch (fn | 0) {
33722 case _util.OPS.save:
33723 this.stateManager.save();
33724 break;
33725
33726 case _util.OPS.restore:
33727 this.stateManager.restore();
33728 break;
33729
33730 case _util.OPS.transform:
33731 this.stateManager.transform(args);
33732 break;
33733 }
33734 }
33735 };
33736 return EvaluatorPreprocessor;
33737}();
33738
33739/***/ }),
33740/* 173 */
33741/***/ (function(module, exports, __w_pdfjs_require__) {
33742
33743"use strict";
33744
33745
33746Object.defineProperty(exports, "__esModule", {
33747 value: true
33748});
33749exports.CMapFactory = exports.IdentityCMap = exports.CMap = void 0;
33750
33751var _util = __w_pdfjs_require__(5);
33752
33753var _primitives = __w_pdfjs_require__(151);
33754
33755var _parser = __w_pdfjs_require__(157);
33756
33757var _core_utils = __w_pdfjs_require__(154);
33758
33759var _stream = __w_pdfjs_require__(158);
33760
33761function _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); }
33762
33763function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
33764
33765function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
33766
33767function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33768
33769function _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); }
33770
33771function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
33772
33773function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33774
33775function _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); } }
33776
33777function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
33778
33779var BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol'];
33780
33781var CMap =
33782/*#__PURE__*/
33783function () {
33784 function CMap() {
33785 var builtInCMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
33786
33787 _classCallCheck(this, CMap);
33788
33789 this.codespaceRanges = [[], [], [], []];
33790 this.numCodespaceRanges = 0;
33791 this._map = [];
33792 this.name = '';
33793 this.vertical = false;
33794 this.useCMap = null;
33795 this.builtInCMap = builtInCMap;
33796 }
33797
33798 _createClass(CMap, [{
33799 key: "addCodespaceRange",
33800 value: function addCodespaceRange(n, low, high) {
33801 this.codespaceRanges[n - 1].push(low, high);
33802 this.numCodespaceRanges++;
33803 }
33804 }, {
33805 key: "mapCidRange",
33806 value: function mapCidRange(low, high, dstLow) {
33807 while (low <= high) {
33808 this._map[low++] = dstLow++;
33809 }
33810 }
33811 }, {
33812 key: "mapBfRange",
33813 value: function mapBfRange(low, high, dstLow) {
33814 var lastByte = dstLow.length - 1;
33815
33816 while (low <= high) {
33817 this._map[low++] = dstLow;
33818 dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
33819 }
33820 }
33821 }, {
33822 key: "mapBfRangeToArray",
33823 value: function mapBfRangeToArray(low, high, array) {
33824 var i = 0,
33825 ii = array.length;
33826
33827 while (low <= high && i < ii) {
33828 this._map[low] = array[i++];
33829 ++low;
33830 }
33831 }
33832 }, {
33833 key: "mapOne",
33834 value: function mapOne(src, dst) {
33835 this._map[src] = dst;
33836 }
33837 }, {
33838 key: "lookup",
33839 value: function lookup(code) {
33840 return this._map[code];
33841 }
33842 }, {
33843 key: "contains",
33844 value: function contains(code) {
33845 return this._map[code] !== undefined;
33846 }
33847 }, {
33848 key: "forEach",
33849 value: function forEach(callback) {
33850 var map = this._map;
33851 var length = map.length;
33852
33853 if (length <= 0x10000) {
33854 for (var i = 0; i < length; i++) {
33855 if (map[i] !== undefined) {
33856 callback(i, map[i]);
33857 }
33858 }
33859 } else {
33860 for (var _i in map) {
33861 callback(_i, map[_i]);
33862 }
33863 }
33864 }
33865 }, {
33866 key: "charCodeOf",
33867 value: function charCodeOf(value) {
33868 var map = this._map;
33869
33870 if (map.length <= 0x10000) {
33871 return map.indexOf(value);
33872 }
33873
33874 for (var charCode in map) {
33875 if (map[charCode] === value) {
33876 return charCode | 0;
33877 }
33878 }
33879
33880 return -1;
33881 }
33882 }, {
33883 key: "getMap",
33884 value: function getMap() {
33885 return this._map;
33886 }
33887 }, {
33888 key: "readCharCode",
33889 value: function readCharCode(str, offset, out) {
33890 var c = 0;
33891 var codespaceRanges = this.codespaceRanges;
33892
33893 for (var n = 0, nn = codespaceRanges.length; n < nn; n++) {
33894 c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;
33895 var codespaceRange = codespaceRanges[n];
33896
33897 for (var k = 0, kk = codespaceRange.length; k < kk;) {
33898 var low = codespaceRange[k++];
33899 var high = codespaceRange[k++];
33900
33901 if (c >= low && c <= high) {
33902 out.charcode = c;
33903 out.length = n + 1;
33904 return;
33905 }
33906 }
33907 }
33908
33909 out.charcode = 0;
33910 out.length = 1;
33911 }
33912 }, {
33913 key: "length",
33914 get: function get() {
33915 return this._map.length;
33916 }
33917 }, {
33918 key: "isIdentityCMap",
33919 get: function get() {
33920 if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {
33921 return false;
33922 }
33923
33924 if (this._map.length !== 0x10000) {
33925 return false;
33926 }
33927
33928 for (var i = 0; i < 0x10000; i++) {
33929 if (this._map[i] !== i) {
33930 return false;
33931 }
33932 }
33933
33934 return true;
33935 }
33936 }]);
33937
33938 return CMap;
33939}();
33940
33941exports.CMap = CMap;
33942
33943var IdentityCMap =
33944/*#__PURE__*/
33945function (_CMap) {
33946 _inherits(IdentityCMap, _CMap);
33947
33948 function IdentityCMap(vertical, n) {
33949 var _this;
33950
33951 _classCallCheck(this, IdentityCMap);
33952
33953 _this = _possibleConstructorReturn(this, _getPrototypeOf(IdentityCMap).call(this));
33954 _this.vertical = vertical;
33955
33956 _this.addCodespaceRange(n, 0, 0xffff);
33957
33958 return _this;
33959 }
33960
33961 _createClass(IdentityCMap, [{
33962 key: "mapCidRange",
33963 value: function mapCidRange(low, high, dstLow) {
33964 (0, _util.unreachable)('should not call mapCidRange');
33965 }
33966 }, {
33967 key: "mapBfRange",
33968 value: function mapBfRange(low, high, dstLow) {
33969 (0, _util.unreachable)('should not call mapBfRange');
33970 }
33971 }, {
33972 key: "mapBfRangeToArray",
33973 value: function mapBfRangeToArray(low, high, array) {
33974 (0, _util.unreachable)('should not call mapBfRangeToArray');
33975 }
33976 }, {
33977 key: "mapOne",
33978 value: function mapOne(src, dst) {
33979 (0, _util.unreachable)('should not call mapCidOne');
33980 }
33981 }, {
33982 key: "lookup",
33983 value: function lookup(code) {
33984 return Number.isInteger(code) && code <= 0xffff ? code : undefined;
33985 }
33986 }, {
33987 key: "contains",
33988 value: function contains(code) {
33989 return Number.isInteger(code) && code <= 0xffff;
33990 }
33991 }, {
33992 key: "forEach",
33993 value: function forEach(callback) {
33994 for (var i = 0; i <= 0xffff; i++) {
33995 callback(i, i);
33996 }
33997 }
33998 }, {
33999 key: "charCodeOf",
34000 value: function charCodeOf(value) {
34001 return Number.isInteger(value) && value <= 0xffff ? value : -1;
34002 }
34003 }, {
34004 key: "getMap",
34005 value: function getMap() {
34006 var map = new Array(0x10000);
34007
34008 for (var i = 0; i <= 0xffff; i++) {
34009 map[i] = i;
34010 }
34011
34012 return map;
34013 }
34014 }, {
34015 key: "length",
34016 get: function get() {
34017 return 0x10000;
34018 }
34019 }, {
34020 key: "isIdentityCMap",
34021 get: function get() {
34022 (0, _util.unreachable)('should not access .isIdentityCMap');
34023 }
34024 }]);
34025
34026 return IdentityCMap;
34027}(CMap);
34028
34029exports.IdentityCMap = IdentityCMap;
34030
34031var BinaryCMapReader = function BinaryCMapReaderClosure() {
34032 function hexToInt(a, size) {
34033 var n = 0;
34034
34035 for (var i = 0; i <= size; i++) {
34036 n = n << 8 | a[i];
34037 }
34038
34039 return n >>> 0;
34040 }
34041
34042 function hexToStr(a, size) {
34043 if (size === 1) {
34044 return String.fromCharCode(a[0], a[1]);
34045 }
34046
34047 if (size === 3) {
34048 return String.fromCharCode(a[0], a[1], a[2], a[3]);
34049 }
34050
34051 return String.fromCharCode.apply(null, a.subarray(0, size + 1));
34052 }
34053
34054 function addHex(a, b, size) {
34055 var c = 0;
34056
34057 for (var i = size; i >= 0; i--) {
34058 c += a[i] + b[i];
34059 a[i] = c & 255;
34060 c >>= 8;
34061 }
34062 }
34063
34064 function incHex(a, size) {
34065 var c = 1;
34066
34067 for (var i = size; i >= 0 && c > 0; i--) {
34068 c += a[i];
34069 a[i] = c & 255;
34070 c >>= 8;
34071 }
34072 }
34073
34074 var MAX_NUM_SIZE = 16;
34075 var MAX_ENCODED_NUM_SIZE = 19;
34076
34077 function BinaryCMapStream(data) {
34078 this.buffer = data;
34079 this.pos = 0;
34080 this.end = data.length;
34081 this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
34082 }
34083
34084 BinaryCMapStream.prototype = {
34085 readByte: function readByte() {
34086 if (this.pos >= this.end) {
34087 return -1;
34088 }
34089
34090 return this.buffer[this.pos++];
34091 },
34092 readNumber: function readNumber() {
34093 var n = 0;
34094 var last;
34095
34096 do {
34097 var b = this.readByte();
34098
34099 if (b < 0) {
34100 throw new _util.FormatError('unexpected EOF in bcmap');
34101 }
34102
34103 last = !(b & 0x80);
34104 n = n << 7 | b & 0x7F;
34105 } while (!last);
34106
34107 return n;
34108 },
34109 readSigned: function readSigned() {
34110 var n = this.readNumber();
34111 return n & 1 ? ~(n >>> 1) : n >>> 1;
34112 },
34113 readHex: function readHex(num, size) {
34114 num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
34115 this.pos += size + 1;
34116 },
34117 readHexNumber: function readHexNumber(num, size) {
34118 var last;
34119 var stack = this.tmpBuf,
34120 sp = 0;
34121
34122 do {
34123 var b = this.readByte();
34124
34125 if (b < 0) {
34126 throw new _util.FormatError('unexpected EOF in bcmap');
34127 }
34128
34129 last = !(b & 0x80);
34130 stack[sp++] = b & 0x7F;
34131 } while (!last);
34132
34133 var i = size,
34134 buffer = 0,
34135 bufferSize = 0;
34136
34137 while (i >= 0) {
34138 while (bufferSize < 8 && stack.length > 0) {
34139 buffer = stack[--sp] << bufferSize | buffer;
34140 bufferSize += 7;
34141 }
34142
34143 num[i] = buffer & 255;
34144 i--;
34145 buffer >>= 8;
34146 bufferSize -= 8;
34147 }
34148 },
34149 readHexSigned: function readHexSigned(num, size) {
34150 this.readHexNumber(num, size);
34151 var sign = num[size] & 1 ? 255 : 0;
34152 var c = 0;
34153
34154 for (var i = 0; i <= size; i++) {
34155 c = (c & 1) << 8 | num[i];
34156 num[i] = c >> 1 ^ sign;
34157 }
34158 },
34159 readString: function readString() {
34160 var len = this.readNumber();
34161 var s = '';
34162
34163 for (var i = 0; i < len; i++) {
34164 s += String.fromCharCode(this.readNumber());
34165 }
34166
34167 return s;
34168 }
34169 };
34170
34171 function processBinaryCMap(data, cMap, extend) {
34172 return new Promise(function (resolve, reject) {
34173 var stream = new BinaryCMapStream(data);
34174 var header = stream.readByte();
34175 cMap.vertical = !!(header & 1);
34176 var useCMap = null;
34177 var start = new Uint8Array(MAX_NUM_SIZE);
34178 var end = new Uint8Array(MAX_NUM_SIZE);
34179
34180 var _char = new Uint8Array(MAX_NUM_SIZE);
34181
34182 var charCode = new Uint8Array(MAX_NUM_SIZE);
34183 var tmp = new Uint8Array(MAX_NUM_SIZE);
34184 var code;
34185 var b;
34186
34187 while ((b = stream.readByte()) >= 0) {
34188 var type = b >> 5;
34189
34190 if (type === 7) {
34191 switch (b & 0x1F) {
34192 case 0:
34193 stream.readString();
34194 break;
34195
34196 case 1:
34197 useCMap = stream.readString();
34198 break;
34199 }
34200
34201 continue;
34202 }
34203
34204 var sequence = !!(b & 0x10);
34205 var dataSize = b & 15;
34206
34207 if (dataSize + 1 > MAX_NUM_SIZE) {
34208 throw new Error('processBinaryCMap: Invalid dataSize.');
34209 }
34210
34211 var ucs2DataSize = 1;
34212 var subitemsCount = stream.readNumber();
34213 var i;
34214
34215 switch (type) {
34216 case 0:
34217 stream.readHex(start, dataSize);
34218 stream.readHexNumber(end, dataSize);
34219 addHex(end, start, dataSize);
34220 cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
34221
34222 for (i = 1; i < subitemsCount; i++) {
34223 incHex(end, dataSize);
34224 stream.readHexNumber(start, dataSize);
34225 addHex(start, end, dataSize);
34226 stream.readHexNumber(end, dataSize);
34227 addHex(end, start, dataSize);
34228 cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
34229 }
34230
34231 break;
34232
34233 case 1:
34234 stream.readHex(start, dataSize);
34235 stream.readHexNumber(end, dataSize);
34236 addHex(end, start, dataSize);
34237 stream.readNumber();
34238
34239 for (i = 1; i < subitemsCount; i++) {
34240 incHex(end, dataSize);
34241 stream.readHexNumber(start, dataSize);
34242 addHex(start, end, dataSize);
34243 stream.readHexNumber(end, dataSize);
34244 addHex(end, start, dataSize);
34245 stream.readNumber();
34246 }
34247
34248 break;
34249
34250 case 2:
34251 stream.readHex(_char, dataSize);
34252 code = stream.readNumber();
34253 cMap.mapOne(hexToInt(_char, dataSize), code);
34254
34255 for (i = 1; i < subitemsCount; i++) {
34256 incHex(_char, dataSize);
34257
34258 if (!sequence) {
34259 stream.readHexNumber(tmp, dataSize);
34260 addHex(_char, tmp, dataSize);
34261 }
34262
34263 code = stream.readSigned() + (code + 1);
34264 cMap.mapOne(hexToInt(_char, dataSize), code);
34265 }
34266
34267 break;
34268
34269 case 3:
34270 stream.readHex(start, dataSize);
34271 stream.readHexNumber(end, dataSize);
34272 addHex(end, start, dataSize);
34273 code = stream.readNumber();
34274 cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
34275
34276 for (i = 1; i < subitemsCount; i++) {
34277 incHex(end, dataSize);
34278
34279 if (!sequence) {
34280 stream.readHexNumber(start, dataSize);
34281 addHex(start, end, dataSize);
34282 } else {
34283 start.set(end);
34284 }
34285
34286 stream.readHexNumber(end, dataSize);
34287 addHex(end, start, dataSize);
34288 code = stream.readNumber();
34289 cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
34290 }
34291
34292 break;
34293
34294 case 4:
34295 stream.readHex(_char, ucs2DataSize);
34296 stream.readHex(charCode, dataSize);
34297 cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize));
34298
34299 for (i = 1; i < subitemsCount; i++) {
34300 incHex(_char, ucs2DataSize);
34301
34302 if (!sequence) {
34303 stream.readHexNumber(tmp, ucs2DataSize);
34304 addHex(_char, tmp, ucs2DataSize);
34305 }
34306
34307 incHex(charCode, dataSize);
34308 stream.readHexSigned(tmp, dataSize);
34309 addHex(charCode, tmp, dataSize);
34310 cMap.mapOne(hexToInt(_char, ucs2DataSize), hexToStr(charCode, dataSize));
34311 }
34312
34313 break;
34314
34315 case 5:
34316 stream.readHex(start, ucs2DataSize);
34317 stream.readHexNumber(end, ucs2DataSize);
34318 addHex(end, start, ucs2DataSize);
34319 stream.readHex(charCode, dataSize);
34320 cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
34321
34322 for (i = 1; i < subitemsCount; i++) {
34323 incHex(end, ucs2DataSize);
34324
34325 if (!sequence) {
34326 stream.readHexNumber(start, ucs2DataSize);
34327 addHex(start, end, ucs2DataSize);
34328 } else {
34329 start.set(end);
34330 }
34331
34332 stream.readHexNumber(end, ucs2DataSize);
34333 addHex(end, start, ucs2DataSize);
34334 stream.readHex(charCode, dataSize);
34335 cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));
34336 }
34337
34338 break;
34339
34340 default:
34341 reject(new Error('processBinaryCMap: Unknown type: ' + type));
34342 return;
34343 }
34344 }
34345
34346 if (useCMap) {
34347 resolve(extend(useCMap));
34348 return;
34349 }
34350
34351 resolve(cMap);
34352 });
34353 }
34354
34355 function BinaryCMapReader() {}
34356
34357 BinaryCMapReader.prototype = {
34358 process: processBinaryCMap
34359 };
34360 return BinaryCMapReader;
34361}();
34362
34363var CMapFactory = function CMapFactoryClosure() {
34364 function strToInt(str) {
34365 var a = 0;
34366
34367 for (var i = 0; i < str.length; i++) {
34368 a = a << 8 | str.charCodeAt(i);
34369 }
34370
34371 return a >>> 0;
34372 }
34373
34374 function expectString(obj) {
34375 if (!(0, _util.isString)(obj)) {
34376 throw new _util.FormatError('Malformed CMap: expected string.');
34377 }
34378 }
34379
34380 function expectInt(obj) {
34381 if (!Number.isInteger(obj)) {
34382 throw new _util.FormatError('Malformed CMap: expected int.');
34383 }
34384 }
34385
34386 function parseBfChar(cMap, lexer) {
34387 while (true) {
34388 var obj = lexer.getObj();
34389
34390 if ((0, _primitives.isEOF)(obj)) {
34391 break;
34392 }
34393
34394 if ((0, _primitives.isCmd)(obj, 'endbfchar')) {
34395 return;
34396 }
34397
34398 expectString(obj);
34399 var src = strToInt(obj);
34400 obj = lexer.getObj();
34401 expectString(obj);
34402 var dst = obj;
34403 cMap.mapOne(src, dst);
34404 }
34405 }
34406
34407 function parseBfRange(cMap, lexer) {
34408 while (true) {
34409 var obj = lexer.getObj();
34410
34411 if ((0, _primitives.isEOF)(obj)) {
34412 break;
34413 }
34414
34415 if ((0, _primitives.isCmd)(obj, 'endbfrange')) {
34416 return;
34417 }
34418
34419 expectString(obj);
34420 var low = strToInt(obj);
34421 obj = lexer.getObj();
34422 expectString(obj);
34423 var high = strToInt(obj);
34424 obj = lexer.getObj();
34425
34426 if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
34427 var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
34428 cMap.mapBfRange(low, high, dstLow);
34429 } else if ((0, _primitives.isCmd)(obj, '[')) {
34430 obj = lexer.getObj();
34431 var array = [];
34432
34433 while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) {
34434 array.push(obj);
34435 obj = lexer.getObj();
34436 }
34437
34438 cMap.mapBfRangeToArray(low, high, array);
34439 } else {
34440 break;
34441 }
34442 }
34443
34444 throw new _util.FormatError('Invalid bf range.');
34445 }
34446
34447 function parseCidChar(cMap, lexer) {
34448 while (true) {
34449 var obj = lexer.getObj();
34450
34451 if ((0, _primitives.isEOF)(obj)) {
34452 break;
34453 }
34454
34455 if ((0, _primitives.isCmd)(obj, 'endcidchar')) {
34456 return;
34457 }
34458
34459 expectString(obj);
34460 var src = strToInt(obj);
34461 obj = lexer.getObj();
34462 expectInt(obj);
34463 var dst = obj;
34464 cMap.mapOne(src, dst);
34465 }
34466 }
34467
34468 function parseCidRange(cMap, lexer) {
34469 while (true) {
34470 var obj = lexer.getObj();
34471
34472 if ((0, _primitives.isEOF)(obj)) {
34473 break;
34474 }
34475
34476 if ((0, _primitives.isCmd)(obj, 'endcidrange')) {
34477 return;
34478 }
34479
34480 expectString(obj);
34481 var low = strToInt(obj);
34482 obj = lexer.getObj();
34483 expectString(obj);
34484 var high = strToInt(obj);
34485 obj = lexer.getObj();
34486 expectInt(obj);
34487 var dstLow = obj;
34488 cMap.mapCidRange(low, high, dstLow);
34489 }
34490 }
34491
34492 function parseCodespaceRange(cMap, lexer) {
34493 while (true) {
34494 var obj = lexer.getObj();
34495
34496 if ((0, _primitives.isEOF)(obj)) {
34497 break;
34498 }
34499
34500 if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) {
34501 return;
34502 }
34503
34504 if (!(0, _util.isString)(obj)) {
34505 break;
34506 }
34507
34508 var low = strToInt(obj);
34509 obj = lexer.getObj();
34510
34511 if (!(0, _util.isString)(obj)) {
34512 break;
34513 }
34514
34515 var high = strToInt(obj);
34516 cMap.addCodespaceRange(obj.length, low, high);
34517 }
34518
34519 throw new _util.FormatError('Invalid codespace range.');
34520 }
34521
34522 function parseWMode(cMap, lexer) {
34523 var obj = lexer.getObj();
34524
34525 if (Number.isInteger(obj)) {
34526 cMap.vertical = !!obj;
34527 }
34528 }
34529
34530 function parseCMapName(cMap, lexer) {
34531 var obj = lexer.getObj();
34532
34533 if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
34534 cMap.name = obj.name;
34535 }
34536 }
34537
34538 function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
34539 var previous;
34540 var embeddedUseCMap;
34541
34542 objLoop: while (true) {
34543 try {
34544 var obj = lexer.getObj();
34545
34546 if ((0, _primitives.isEOF)(obj)) {
34547 break;
34548 } else if ((0, _primitives.isName)(obj)) {
34549 if (obj.name === 'WMode') {
34550 parseWMode(cMap, lexer);
34551 } else if (obj.name === 'CMapName') {
34552 parseCMapName(cMap, lexer);
34553 }
34554
34555 previous = obj;
34556 } else if ((0, _primitives.isCmd)(obj)) {
34557 switch (obj.cmd) {
34558 case 'endcmap':
34559 break objLoop;
34560
34561 case 'usecmap':
34562 if ((0, _primitives.isName)(previous)) {
34563 embeddedUseCMap = previous.name;
34564 }
34565
34566 break;
34567
34568 case 'begincodespacerange':
34569 parseCodespaceRange(cMap, lexer);
34570 break;
34571
34572 case 'beginbfchar':
34573 parseBfChar(cMap, lexer);
34574 break;
34575
34576 case 'begincidchar':
34577 parseCidChar(cMap, lexer);
34578 break;
34579
34580 case 'beginbfrange':
34581 parseBfRange(cMap, lexer);
34582 break;
34583
34584 case 'begincidrange':
34585 parseCidRange(cMap, lexer);
34586 break;
34587 }
34588 }
34589 } catch (ex) {
34590 if (ex instanceof _core_utils.MissingDataException) {
34591 throw ex;
34592 }
34593
34594 (0, _util.warn)('Invalid cMap data: ' + ex);
34595 continue;
34596 }
34597 }
34598
34599 if (!useCMap && embeddedUseCMap) {
34600 useCMap = embeddedUseCMap;
34601 }
34602
34603 if (useCMap) {
34604 return extendCMap(cMap, fetchBuiltInCMap, useCMap);
34605 }
34606
34607 return Promise.resolve(cMap);
34608 }
34609
34610 function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
34611 return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {
34612 cMap.useCMap = newCMap;
34613
34614 if (cMap.numCodespaceRanges === 0) {
34615 var useCodespaceRanges = cMap.useCMap.codespaceRanges;
34616
34617 for (var i = 0; i < useCodespaceRanges.length; i++) {
34618 cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
34619 }
34620
34621 cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
34622 }
34623
34624 cMap.useCMap.forEach(function (key, value) {
34625 if (!cMap.contains(key)) {
34626 cMap.mapOne(key, cMap.useCMap.lookup(key));
34627 }
34628 });
34629 return cMap;
34630 });
34631 }
34632
34633 function createBuiltInCMap(name, fetchBuiltInCMap) {
34634 if (name === 'Identity-H') {
34635 return Promise.resolve(new IdentityCMap(false, 2));
34636 } else if (name === 'Identity-V') {
34637 return Promise.resolve(new IdentityCMap(true, 2));
34638 }
34639
34640 if (!BUILT_IN_CMAPS.includes(name)) {
34641 return Promise.reject(new Error('Unknown CMap name: ' + name));
34642 }
34643
34644 if (!fetchBuiltInCMap) {
34645 return Promise.reject(new Error('Built-in CMap parameters are not provided.'));
34646 }
34647
34648 return fetchBuiltInCMap(name).then(function (data) {
34649 var cMapData = data.cMapData,
34650 compressionType = data.compressionType;
34651 var cMap = new CMap(true);
34652
34653 if (compressionType === _util.CMapCompressionType.BINARY) {
34654 return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) {
34655 return extendCMap(cMap, fetchBuiltInCMap, useCMap);
34656 });
34657 }
34658
34659 if (compressionType === _util.CMapCompressionType.NONE) {
34660 var lexer = new _parser.Lexer(new _stream.Stream(cMapData));
34661 return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
34662 }
34663
34664 return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.'));
34665 });
34666 }
34667
34668 return {
34669 create: function create(params) {
34670 var encoding = params.encoding;
34671 var fetchBuiltInCMap = params.fetchBuiltInCMap;
34672 var useCMap = params.useCMap;
34673
34674 if ((0, _primitives.isName)(encoding)) {
34675 return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
34676 } else if ((0, _primitives.isStream)(encoding)) {
34677 var cMap = new CMap();
34678 var lexer = new _parser.Lexer(encoding);
34679 return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) {
34680 if (parsedCMap.isIdentityCMap) {
34681 return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
34682 }
34683
34684 return parsedCMap;
34685 });
34686 }
34687
34688 return Promise.reject(new Error('Encoding required.'));
34689 }
34690 };
34691}();
34692
34693exports.CMapFactory = CMapFactory;
34694
34695/***/ }),
34696/* 174 */
34697/***/ (function(module, exports, __w_pdfjs_require__) {
34698
34699"use strict";
34700
34701
34702Object.defineProperty(exports, "__esModule", {
34703 value: true
34704});
34705exports.getFontType = getFontType;
34706exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.SEAC_ANALYSIS_ENABLED = void 0;
34707
34708var _util = __w_pdfjs_require__(5);
34709
34710var _cff_parser = __w_pdfjs_require__(175);
34711
34712var _glyphlist = __w_pdfjs_require__(178);
34713
34714var _encodings = __w_pdfjs_require__(177);
34715
34716var _standard_fonts = __w_pdfjs_require__(179);
34717
34718var _unicode = __w_pdfjs_require__(180);
34719
34720var _font_renderer = __w_pdfjs_require__(181);
34721
34722var _cmap = __w_pdfjs_require__(173);
34723
34724var _core_utils = __w_pdfjs_require__(154);
34725
34726var _stream = __w_pdfjs_require__(158);
34727
34728var _type1_parser = __w_pdfjs_require__(182);
34729
34730function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
34731
34732function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
34733
34734function _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; }
34735
34736function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
34737
34738var PRIVATE_USE_AREAS = [[0xE000, 0xF8FF], [0x100000, 0x10FFFD]];
34739var PDF_GLYPH_SPACE_UNITS = 1000;
34740var SEAC_ANALYSIS_ENABLED = true;
34741exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;
34742var FontFlags = {
34743 FixedPitch: 1,
34744 Serif: 2,
34745 Symbolic: 4,
34746 Script: 8,
34747 Nonsymbolic: 32,
34748 Italic: 64,
34749 AllCap: 65536,
34750 SmallCap: 131072,
34751 ForceBold: 262144
34752};
34753exports.FontFlags = FontFlags;
34754var MacStandardGlyphOrdering = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];
34755
34756function adjustWidths(properties) {
34757 if (!properties.fontMatrix) {
34758 return;
34759 }
34760
34761 if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {
34762 return;
34763 }
34764
34765 var scale = 0.001 / properties.fontMatrix[0];
34766 var glyphsWidths = properties.widths;
34767
34768 for (var glyph in glyphsWidths) {
34769 glyphsWidths[glyph] *= scale;
34770 }
34771
34772 properties.defaultWidth *= scale;
34773}
34774
34775function adjustToUnicode(properties, builtInEncoding) {
34776 if (properties.hasIncludedToUnicodeMap) {
34777 return;
34778 }
34779
34780 if (properties.hasEncoding) {
34781 return;
34782 }
34783
34784 if (builtInEncoding === properties.defaultEncoding) {
34785 return;
34786 }
34787
34788 if (properties.toUnicode instanceof IdentityToUnicodeMap) {
34789 return;
34790 }
34791
34792 var toUnicode = [],
34793 glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
34794
34795 for (var charCode in builtInEncoding) {
34796 var glyphName = builtInEncoding[charCode];
34797 var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
34798
34799 if (unicode !== -1) {
34800 toUnicode[charCode] = String.fromCharCode(unicode);
34801 }
34802 }
34803
34804 properties.toUnicode.amend(toUnicode);
34805}
34806
34807function getFontType(type, subtype) {
34808 switch (type) {
34809 case 'Type1':
34810 return subtype === 'Type1C' ? _util.FontType.TYPE1C : _util.FontType.TYPE1;
34811
34812 case 'CIDFontType0':
34813 return subtype === 'CIDFontType0C' ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;
34814
34815 case 'OpenType':
34816 return _util.FontType.OPENTYPE;
34817
34818 case 'TrueType':
34819 return _util.FontType.TRUETYPE;
34820
34821 case 'CIDFontType2':
34822 return _util.FontType.CIDFONTTYPE2;
34823
34824 case 'MMType1':
34825 return _util.FontType.MMTYPE1;
34826
34827 case 'Type0':
34828 return _util.FontType.TYPE0;
34829
34830 default:
34831 return _util.FontType.UNKNOWN;
34832 }
34833}
34834
34835function recoverGlyphName(name, glyphsUnicodeMap) {
34836 if (glyphsUnicodeMap[name] !== undefined) {
34837 return name;
34838 }
34839
34840 var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);
34841
34842 if (unicode !== -1) {
34843 for (var key in glyphsUnicodeMap) {
34844 if (glyphsUnicodeMap[key] === unicode) {
34845 return key;
34846 }
34847 }
34848 }
34849
34850 (0, _util.info)('Unable to recover a standard glyph name for: ' + name);
34851 return name;
34852}
34853
34854var Glyph = function GlyphClosure() {
34855 function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
34856 this.fontChar = fontChar;
34857 this.unicode = unicode;
34858 this.accent = accent;
34859 this.width = width;
34860 this.vmetric = vmetric;
34861 this.operatorListId = operatorListId;
34862 this.isSpace = isSpace;
34863 this.isInFont = isInFont;
34864 }
34865
34866 Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
34867 return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;
34868 };
34869
34870 return Glyph;
34871}();
34872
34873var ToUnicodeMap = function ToUnicodeMapClosure() {
34874 function ToUnicodeMap() {
34875 var cmap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
34876 this._map = cmap;
34877 }
34878
34879 ToUnicodeMap.prototype = {
34880 get length() {
34881 return this._map.length;
34882 },
34883
34884 forEach: function forEach(callback) {
34885 for (var charCode in this._map) {
34886 callback(charCode, this._map[charCode].charCodeAt(0));
34887 }
34888 },
34889 has: function has(i) {
34890 return this._map[i] !== undefined;
34891 },
34892 get: function get(i) {
34893 return this._map[i];
34894 },
34895 charCodeOf: function charCodeOf(value) {
34896 var map = this._map;
34897
34898 if (map.length <= 0x10000) {
34899 return map.indexOf(value);
34900 }
34901
34902 for (var charCode in map) {
34903 if (map[charCode] === value) {
34904 return charCode | 0;
34905 }
34906 }
34907
34908 return -1;
34909 },
34910 amend: function amend(map) {
34911 for (var charCode in map) {
34912 this._map[charCode] = map[charCode];
34913 }
34914 }
34915 };
34916 return ToUnicodeMap;
34917}();
34918
34919exports.ToUnicodeMap = ToUnicodeMap;
34920
34921var IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() {
34922 function IdentityToUnicodeMap(firstChar, lastChar) {
34923 this.firstChar = firstChar;
34924 this.lastChar = lastChar;
34925 }
34926
34927 IdentityToUnicodeMap.prototype = {
34928 get length() {
34929 return this.lastChar + 1 - this.firstChar;
34930 },
34931
34932 forEach: function forEach(callback) {
34933 for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {
34934 callback(i, i);
34935 }
34936 },
34937 has: function has(i) {
34938 return this.firstChar <= i && i <= this.lastChar;
34939 },
34940 get: function get(i) {
34941 if (this.firstChar <= i && i <= this.lastChar) {
34942 return String.fromCharCode(i);
34943 }
34944
34945 return undefined;
34946 },
34947 charCodeOf: function charCodeOf(v) {
34948 return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;
34949 },
34950 amend: function amend(map) {
34951 (0, _util.unreachable)('Should not call amend()');
34952 }
34953 };
34954 return IdentityToUnicodeMap;
34955}();
34956
34957exports.IdentityToUnicodeMap = IdentityToUnicodeMap;
34958
34959var OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() {
34960 function writeInt16(dest, offset, num) {
34961 dest[offset] = num >> 8 & 0xFF;
34962 dest[offset + 1] = num & 0xFF;
34963 }
34964
34965 function writeInt32(dest, offset, num) {
34966 dest[offset] = num >> 24 & 0xFF;
34967 dest[offset + 1] = num >> 16 & 0xFF;
34968 dest[offset + 2] = num >> 8 & 0xFF;
34969 dest[offset + 3] = num & 0xFF;
34970 }
34971
34972 function writeData(dest, offset, data) {
34973 var i, ii;
34974
34975 if (data instanceof Uint8Array) {
34976 dest.set(data, offset);
34977 } else if (typeof data === 'string') {
34978 for (i = 0, ii = data.length; i < ii; i++) {
34979 dest[offset++] = data.charCodeAt(i) & 0xFF;
34980 }
34981 } else {
34982 for (i = 0, ii = data.length; i < ii; i++) {
34983 dest[offset++] = data[i] & 0xFF;
34984 }
34985 }
34986 }
34987
34988 function OpenTypeFileBuilder(sfnt) {
34989 this.sfnt = sfnt;
34990 this.tables = Object.create(null);
34991 }
34992
34993 OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {
34994 var maxPower2 = 1,
34995 log2 = 0;
34996
34997 while ((maxPower2 ^ entriesCount) > maxPower2) {
34998 maxPower2 <<= 1;
34999 log2++;
35000 }
35001
35002 var searchRange = maxPower2 * entrySize;
35003 return {
35004 range: searchRange,
35005 entry: log2,
35006 rangeShift: entrySize * entriesCount - searchRange
35007 };
35008 };
35009
35010 var OTF_HEADER_SIZE = 12;
35011 var OTF_TABLE_ENTRY_SIZE = 16;
35012 OpenTypeFileBuilder.prototype = {
35013 toArray: function OpenTypeFileBuilder_toArray() {
35014 var sfnt = this.sfnt;
35015 var tables = this.tables;
35016 var tablesNames = Object.keys(tables);
35017 tablesNames.sort();
35018 var numTables = tablesNames.length;
35019 var i, j, jj, table, tableName;
35020 var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;
35021 var tableOffsets = [offset];
35022
35023 for (i = 0; i < numTables; i++) {
35024 table = tables[tablesNames[i]];
35025 var paddedLength = (table.length + 3 & ~3) >>> 0;
35026 offset += paddedLength;
35027 tableOffsets.push(offset);
35028 }
35029
35030 var file = new Uint8Array(offset);
35031
35032 for (i = 0; i < numTables; i++) {
35033 table = tables[tablesNames[i]];
35034 writeData(file, tableOffsets[i], table);
35035 }
35036
35037 if (sfnt === 'true') {
35038 sfnt = (0, _util.string32)(0x00010000);
35039 }
35040
35041 file[0] = sfnt.charCodeAt(0) & 0xFF;
35042 file[1] = sfnt.charCodeAt(1) & 0xFF;
35043 file[2] = sfnt.charCodeAt(2) & 0xFF;
35044 file[3] = sfnt.charCodeAt(3) & 0xFF;
35045 writeInt16(file, 4, numTables);
35046 var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);
35047 writeInt16(file, 6, searchParams.range);
35048 writeInt16(file, 8, searchParams.entry);
35049 writeInt16(file, 10, searchParams.rangeShift);
35050 offset = OTF_HEADER_SIZE;
35051
35052 for (i = 0; i < numTables; i++) {
35053 tableName = tablesNames[i];
35054 file[offset] = tableName.charCodeAt(0) & 0xFF;
35055 file[offset + 1] = tableName.charCodeAt(1) & 0xFF;
35056 file[offset + 2] = tableName.charCodeAt(2) & 0xFF;
35057 file[offset + 3] = tableName.charCodeAt(3) & 0xFF;
35058 var checksum = 0;
35059
35060 for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {
35061 var quad = (0, _util.readUint32)(file, j);
35062 checksum = checksum + quad >>> 0;
35063 }
35064
35065 writeInt32(file, offset + 4, checksum);
35066 writeInt32(file, offset + 8, tableOffsets[i]);
35067 writeInt32(file, offset + 12, tables[tableName].length);
35068 offset += OTF_TABLE_ENTRY_SIZE;
35069 }
35070
35071 return file;
35072 },
35073 addTable: function OpenTypeFileBuilder_addTable(tag, data) {
35074 if (tag in this.tables) {
35075 throw new Error('Table ' + tag + ' already exists');
35076 }
35077
35078 this.tables[tag] = data;
35079 }
35080 };
35081 return OpenTypeFileBuilder;
35082}();
35083
35084var Font = function FontClosure() {
35085 function Font(name, file, properties) {
35086 var charCode;
35087 this.name = name;
35088 this.loadedName = properties.loadedName;
35089 this.isType3Font = properties.isType3Font;
35090 this.sizes = [];
35091 this.missingFile = false;
35092 this.glyphCache = Object.create(null);
35093 this.isSerifFont = !!(properties.flags & FontFlags.Serif);
35094 this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
35095 this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);
35096 var type = properties.type;
35097 var subtype = properties.subtype;
35098 this.type = type;
35099 this.subtype = subtype;
35100 this.fallbackName = this.isMonospace ? 'monospace' : this.isSerifFont ? 'serif' : 'sans-serif';
35101 this.differences = properties.differences;
35102 this.widths = properties.widths;
35103 this.defaultWidth = properties.defaultWidth;
35104 this.composite = properties.composite;
35105 this.wideChars = properties.wideChars;
35106 this.cMap = properties.cMap;
35107 this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
35108 this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
35109 this.fontMatrix = properties.fontMatrix;
35110 this.bbox = properties.bbox;
35111 this.defaultEncoding = properties.defaultEncoding;
35112 this.toUnicode = properties.toUnicode;
35113 this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();
35114 this.toFontChar = [];
35115
35116 if (properties.type === 'Type3') {
35117 for (charCode = 0; charCode < 256; charCode++) {
35118 this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];
35119 }
35120
35121 this.fontType = _util.FontType.TYPE3;
35122 return;
35123 }
35124
35125 this.cidEncoding = properties.cidEncoding;
35126 this.vertical = properties.vertical;
35127
35128 if (this.vertical) {
35129 this.vmetrics = properties.vmetrics;
35130 this.defaultVMetrics = properties.defaultVMetrics;
35131 }
35132
35133 if (!file || file.isEmpty) {
35134 if (file) {
35135 (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ')');
35136 }
35137
35138 this.fallbackToSystemFont();
35139 return;
35140 }
35141
35142 var _getFontFileType = getFontFileType(file, properties);
35143
35144 var _getFontFileType2 = _slicedToArray(_getFontFileType, 2);
35145
35146 type = _getFontFileType2[0];
35147 subtype = _getFontFileType2[1];
35148
35149 if (type !== this.type || subtype !== this.subtype) {
35150 (0, _util.info)('Inconsistent font file Type/SubType, expected: ' + "".concat(this.type, "/").concat(this.subtype, " but found: ").concat(type, "/").concat(subtype, "."));
35151 }
35152
35153 try {
35154 var data;
35155
35156 switch (type) {
35157 case 'MMType1':
35158 (0, _util.info)('MMType1 font (' + name + '), falling back to Type1.');
35159
35160 case 'Type1':
35161 case 'CIDFontType0':
35162 this.mimetype = 'font/opentype';
35163 var cff = subtype === 'Type1C' || subtype === 'CIDFontType0C' ? new CFFFont(file, properties) : new Type1Font(name, file, properties);
35164 adjustWidths(properties);
35165 data = this.convert(name, cff, properties);
35166 break;
35167
35168 case 'OpenType':
35169 case 'TrueType':
35170 case 'CIDFontType2':
35171 this.mimetype = 'font/opentype';
35172 data = this.checkAndRepair(name, file, properties);
35173
35174 if (this.isOpenType) {
35175 adjustWidths(properties);
35176 type = 'OpenType';
35177 }
35178
35179 break;
35180
35181 default:
35182 throw new _util.FormatError("Font ".concat(type, " is not supported"));
35183 }
35184 } catch (e) {
35185 (0, _util.warn)(e);
35186 this.fallbackToSystemFont();
35187 return;
35188 }
35189
35190 this.data = data;
35191 this.fontType = getFontType(type, subtype);
35192 this.fontMatrix = properties.fontMatrix;
35193 this.widths = properties.widths;
35194 this.defaultWidth = properties.defaultWidth;
35195 this.toUnicode = properties.toUnicode;
35196 this.encoding = properties.baseEncoding;
35197 this.seacMap = properties.seacMap;
35198 }
35199
35200 Font.getFontID = function () {
35201 var ID = 1;
35202 return function Font_getFontID() {
35203 return String(ID++);
35204 };
35205 }();
35206
35207 function int16(b0, b1) {
35208 return (b0 << 8) + b1;
35209 }
35210
35211 function writeSignedInt16(bytes, index, value) {
35212 bytes[index + 1] = value;
35213 bytes[index] = value >>> 8;
35214 }
35215
35216 function signedInt16(b0, b1) {
35217 var value = (b0 << 8) + b1;
35218 return value & 1 << 15 ? value - 0x10000 : value;
35219 }
35220
35221 function int32(b0, b1, b2, b3) {
35222 return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
35223 }
35224
35225 function string16(value) {
35226 return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
35227 }
35228
35229 function safeString16(value) {
35230 value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value;
35231 return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
35232 }
35233
35234 function isTrueTypeFile(file) {
35235 var header = file.peekBytes(4);
35236 return (0, _util.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 'true';
35237 }
35238
35239 function isTrueTypeCollectionFile(file) {
35240 var header = file.peekBytes(4);
35241 return (0, _util.bytesToString)(header) === 'ttcf';
35242 }
35243
35244 function isOpenTypeFile(file) {
35245 var header = file.peekBytes(4);
35246 return (0, _util.bytesToString)(header) === 'OTTO';
35247 }
35248
35249 function isType1File(file) {
35250 var header = file.peekBytes(2);
35251
35252 if (header[0] === 0x25 && header[1] === 0x21) {
35253 return true;
35254 }
35255
35256 if (header[0] === 0x80 && header[1] === 0x01) {
35257 return true;
35258 }
35259
35260 return false;
35261 }
35262
35263 function isCFFFile(file) {
35264 var header = file.peekBytes(4);
35265
35266 if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {
35267 return true;
35268 }
35269
35270 return false;
35271 }
35272
35273 function getFontFileType(file, _ref) {
35274 var type = _ref.type,
35275 subtype = _ref.subtype,
35276 composite = _ref.composite;
35277 var fileType, fileSubtype;
35278
35279 if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {
35280 if (composite) {
35281 fileType = 'CIDFontType2';
35282 } else {
35283 fileType = 'TrueType';
35284 }
35285 } else if (isOpenTypeFile(file)) {
35286 if (composite) {
35287 fileType = 'CIDFontType2';
35288 } else {
35289 fileType = 'OpenType';
35290 }
35291 } else if (isType1File(file)) {
35292 if (composite) {
35293 fileType = 'CIDFontType0';
35294 } else {
35295 fileType = type === 'MMType1' ? 'MMType1' : 'Type1';
35296 }
35297 } else if (isCFFFile(file)) {
35298 if (composite) {
35299 fileType = 'CIDFontType0';
35300 fileSubtype = 'CIDFontType0C';
35301 } else {
35302 fileType = type === 'MMType1' ? 'MMType1' : 'Type1';
35303 fileSubtype = 'Type1C';
35304 }
35305 } else {
35306 (0, _util.warn)('getFontFileType: Unable to detect correct font file Type/Subtype.');
35307 fileType = type;
35308 fileSubtype = subtype;
35309 }
35310
35311 return [fileType, fileSubtype];
35312 }
35313
35314 function buildToFontChar(encoding, glyphsUnicodeMap, differences) {
35315 var toFontChar = [],
35316 unicode;
35317
35318 for (var i = 0, ii = encoding.length; i < ii; i++) {
35319 unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);
35320
35321 if (unicode !== -1) {
35322 toFontChar[i] = unicode;
35323 }
35324 }
35325
35326 for (var charCode in differences) {
35327 unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);
35328
35329 if (unicode !== -1) {
35330 toFontChar[+charCode] = unicode;
35331 }
35332 }
35333
35334 return toFontChar;
35335 }
35336
35337 function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {
35338 var newMap = Object.create(null);
35339 var toFontChar = [];
35340 var privateUseAreaIndex = 0;
35341 var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
35342 var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
35343
35344 for (var originalCharCode in charCodeToGlyphId) {
35345 originalCharCode |= 0;
35346 var glyphId = charCodeToGlyphId[originalCharCode];
35347
35348 if (!hasGlyph(glyphId)) {
35349 continue;
35350 }
35351
35352 if (nextAvailableFontCharCode > privateUseOffetEnd) {
35353 privateUseAreaIndex++;
35354
35355 if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {
35356 (0, _util.warn)('Ran out of space in font private use area.');
35357 break;
35358 }
35359
35360 nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
35361 privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
35362 }
35363
35364 var fontCharCode = nextAvailableFontCharCode++;
35365
35366 if (glyphId === 0) {
35367 glyphId = newGlyphZeroId;
35368 }
35369
35370 newMap[fontCharCode] = glyphId;
35371 toFontChar[originalCharCode] = fontCharCode;
35372 }
35373
35374 return {
35375 toFontChar: toFontChar,
35376 charCodeToGlyphId: newMap,
35377 nextAvailableFontCharCode: nextAvailableFontCharCode
35378 };
35379 }
35380
35381 function getRanges(glyphs, numGlyphs) {
35382 var codes = [];
35383
35384 for (var charCode in glyphs) {
35385 if (glyphs[charCode] >= numGlyphs) {
35386 continue;
35387 }
35388
35389 codes.push({
35390 fontCharCode: charCode | 0,
35391 glyphId: glyphs[charCode]
35392 });
35393 }
35394
35395 if (codes.length === 0) {
35396 codes.push({
35397 fontCharCode: 0,
35398 glyphId: 0
35399 });
35400 }
35401
35402 codes.sort(function fontGetRangesSort(a, b) {
35403 return a.fontCharCode - b.fontCharCode;
35404 });
35405 var ranges = [];
35406 var length = codes.length;
35407
35408 for (var n = 0; n < length;) {
35409 var start = codes[n].fontCharCode;
35410 var codeIndices = [codes[n].glyphId];
35411 ++n;
35412 var end = start;
35413
35414 while (n < length && end + 1 === codes[n].fontCharCode) {
35415 codeIndices.push(codes[n].glyphId);
35416 ++end;
35417 ++n;
35418
35419 if (end === 0xFFFF) {
35420 break;
35421 }
35422 }
35423
35424 ranges.push([start, end, codeIndices]);
35425 }
35426
35427 return ranges;
35428 }
35429
35430 function createCmapTable(glyphs, numGlyphs) {
35431 var ranges = getRanges(glyphs, numGlyphs);
35432 var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;
35433 var cmap = '\x00\x00' + string16(numTables) + '\x00\x03' + '\x00\x01' + (0, _util.string32)(4 + numTables * 8);
35434 var i, ii, j, jj;
35435
35436 for (i = ranges.length - 1; i >= 0; --i) {
35437 if (ranges[i][0] <= 0xFFFF) {
35438 break;
35439 }
35440 }
35441
35442 var bmpLength = i + 1;
35443
35444 if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {
35445 ranges[i][1] = 0xFFFE;
35446 }
35447
35448 var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;
35449 var segCount = bmpLength + trailingRangesCount;
35450 var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);
35451 var startCount = '';
35452 var endCount = '';
35453 var idDeltas = '';
35454 var idRangeOffsets = '';
35455 var glyphsIds = '';
35456 var bias = 0;
35457 var range, start, end, codes;
35458
35459 for (i = 0, ii = bmpLength; i < ii; i++) {
35460 range = ranges[i];
35461 start = range[0];
35462 end = range[1];
35463 startCount += string16(start);
35464 endCount += string16(end);
35465 codes = range[2];
35466 var contiguous = true;
35467
35468 for (j = 1, jj = codes.length; j < jj; ++j) {
35469 if (codes[j] !== codes[j - 1] + 1) {
35470 contiguous = false;
35471 break;
35472 }
35473 }
35474
35475 if (!contiguous) {
35476 var offset = (segCount - i) * 2 + bias * 2;
35477 bias += end - start + 1;
35478 idDeltas += string16(0);
35479 idRangeOffsets += string16(offset);
35480
35481 for (j = 0, jj = codes.length; j < jj; ++j) {
35482 glyphsIds += string16(codes[j]);
35483 }
35484 } else {
35485 var startCode = codes[0];
35486 idDeltas += string16(startCode - start & 0xFFFF);
35487 idRangeOffsets += string16(0);
35488 }
35489 }
35490
35491 if (trailingRangesCount > 0) {
35492 endCount += '\xFF\xFF';
35493 startCount += '\xFF\xFF';
35494 idDeltas += '\x00\x01';
35495 idRangeOffsets += '\x00\x00';
35496 }
35497
35498 var format314 = '\x00\x00' + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + '\x00\x00' + startCount + idDeltas + idRangeOffsets + glyphsIds;
35499 var format31012 = '';
35500 var header31012 = '';
35501
35502 if (numTables > 1) {
35503 cmap += '\x00\x03' + '\x00\x0A' + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);
35504 format31012 = '';
35505
35506 for (i = 0, ii = ranges.length; i < ii; i++) {
35507 range = ranges[i];
35508 start = range[0];
35509 codes = range[2];
35510 var code = codes[0];
35511
35512 for (j = 1, jj = codes.length; j < jj; ++j) {
35513 if (codes[j] !== codes[j - 1] + 1) {
35514 end = range[0] + j - 1;
35515 format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);
35516 start = end + 1;
35517 code = codes[j];
35518 }
35519 }
35520
35521 format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);
35522 }
35523
35524 header31012 = '\x00\x0C' + '\x00\x00' + (0, _util.string32)(format31012.length + 16) + '\x00\x00\x00\x00' + (0, _util.string32)(format31012.length / 12);
35525 }
35526
35527 return cmap + '\x00\x04' + string16(format314.length + 4) + format314 + header31012 + format31012;
35528 }
35529
35530 function validateOS2Table(os2) {
35531 var stream = new _stream.Stream(os2.data);
35532 var version = stream.getUint16();
35533 stream.getBytes(60);
35534 var selection = stream.getUint16();
35535
35536 if (version < 4 && selection & 0x0300) {
35537 return false;
35538 }
35539
35540 var firstChar = stream.getUint16();
35541 var lastChar = stream.getUint16();
35542
35543 if (firstChar > lastChar) {
35544 return false;
35545 }
35546
35547 stream.getBytes(6);
35548 var usWinAscent = stream.getUint16();
35549
35550 if (usWinAscent === 0) {
35551 return false;
35552 }
35553
35554 os2.data[8] = os2.data[9] = 0;
35555 return true;
35556 }
35557
35558 function createOS2Table(properties, charstrings, override) {
35559 override = override || {
35560 unitsPerEm: 0,
35561 yMax: 0,
35562 yMin: 0,
35563 ascent: 0,
35564 descent: 0
35565 };
35566 var ulUnicodeRange1 = 0;
35567 var ulUnicodeRange2 = 0;
35568 var ulUnicodeRange3 = 0;
35569 var ulUnicodeRange4 = 0;
35570 var firstCharIndex = null;
35571 var lastCharIndex = 0;
35572
35573 if (charstrings) {
35574 for (var code in charstrings) {
35575 code |= 0;
35576
35577 if (firstCharIndex > code || !firstCharIndex) {
35578 firstCharIndex = code;
35579 }
35580
35581 if (lastCharIndex < code) {
35582 lastCharIndex = code;
35583 }
35584
35585 var position = (0, _unicode.getUnicodeRangeFor)(code);
35586
35587 if (position < 32) {
35588 ulUnicodeRange1 |= 1 << position;
35589 } else if (position < 64) {
35590 ulUnicodeRange2 |= 1 << position - 32;
35591 } else if (position < 96) {
35592 ulUnicodeRange3 |= 1 << position - 64;
35593 } else if (position < 123) {
35594 ulUnicodeRange4 |= 1 << position - 96;
35595 } else {
35596 throw new _util.FormatError('Unicode ranges Bits > 123 are reserved for internal usage');
35597 }
35598 }
35599
35600 if (lastCharIndex > 0xFFFF) {
35601 lastCharIndex = 0xFFFF;
35602 }
35603 } else {
35604 firstCharIndex = 0;
35605 lastCharIndex = 255;
35606 }
35607
35608 var bbox = properties.bbox || [0, 0, 0, 0];
35609 var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
35610 var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;
35611 var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));
35612 var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));
35613
35614 if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
35615 typoDescent = -typoDescent;
35616 }
35617
35618 var winAscent = override.yMax || typoAscent;
35619 var winDescent = -override.yMin || -typoDescent;
35620 return '\x00\x03' + '\x02\x24' + '\x01\xF4' + '\x00\x05' + '\x00\x00' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x00\x8C' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x01\xDF' + '\x00\x31' + '\x01\x02' + '\x00\x00' + '\x00\x00\x06' + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + '\x00\x00\x00\x00\x00\x00' + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + '\x2A\x32\x31\x2A' + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + '\x00\x64' + string16(winAscent) + string16(winDescent) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + '\x00\x03';
35621 }
35622
35623 function createPostTable(properties) {
35624 var angle = Math.floor(properties.italicAngle * Math.pow(2, 16));
35625 return '\x00\x03\x00\x00' + (0, _util.string32)(angle) + '\x00\x00' + '\x00\x00' + (0, _util.string32)(properties.fixedPitch) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00';
35626 }
35627
35628 function createNameTable(name, proto) {
35629 if (!proto) {
35630 proto = [[], []];
35631 }
35632
35633 var strings = [proto[0][0] || 'Original licence', proto[0][1] || name, proto[0][2] || 'Unknown', proto[0][3] || 'uniqueID', proto[0][4] || name, proto[0][5] || 'Version 0.11', proto[0][6] || '', proto[0][7] || 'Unknown', proto[0][8] || 'Unknown', proto[0][9] || 'Unknown'];
35634 var stringsUnicode = [];
35635 var i, ii, j, jj, str;
35636
35637 for (i = 0, ii = strings.length; i < ii; i++) {
35638 str = proto[1][i] || strings[i];
35639 var strBufUnicode = [];
35640
35641 for (j = 0, jj = str.length; j < jj; j++) {
35642 strBufUnicode.push(string16(str.charCodeAt(j)));
35643 }
35644
35645 stringsUnicode.push(strBufUnicode.join(''));
35646 }
35647
35648 var names = [strings, stringsUnicode];
35649 var platforms = ['\x00\x01', '\x00\x03'];
35650 var encodings = ['\x00\x00', '\x00\x01'];
35651 var languages = ['\x00\x00', '\x04\x09'];
35652 var namesRecordCount = strings.length * platforms.length;
35653 var nameTable = '\x00\x00' + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);
35654 var strOffset = 0;
35655
35656 for (i = 0, ii = platforms.length; i < ii; i++) {
35657 var strs = names[i];
35658
35659 for (j = 0, jj = strs.length; j < jj; j++) {
35660 str = strs[j];
35661 var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);
35662 nameTable += nameRecord;
35663 strOffset += str.length;
35664 }
35665 }
35666
35667 nameTable += strings.join('') + stringsUnicode.join('');
35668 return nameTable;
35669 }
35670
35671 Font.prototype = {
35672 name: null,
35673 font: null,
35674 mimetype: null,
35675 encoding: null,
35676 disableFontFace: false,
35677
35678 get renderer() {
35679 var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);
35680
35681 return (0, _util.shadow)(this, 'renderer', renderer);
35682 },
35683
35684 exportData: function Font_exportData() {
35685 var data = {};
35686
35687 for (var i in this) {
35688 if (this.hasOwnProperty(i)) {
35689 data[i] = this[i];
35690 }
35691 }
35692
35693 return data;
35694 },
35695 fallbackToSystemFont: function Font_fallbackToSystemFont() {
35696 var _this = this;
35697
35698 this.missingFile = true;
35699 var charCode, unicode;
35700 var name = this.name;
35701 var type = this.type;
35702 var subtype = this.subtype;
35703 var fontName = name.replace(/[,_]/g, '-');
35704 var stdFontMap = (0, _standard_fonts.getStdFontMap)(),
35705 nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
35706 var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
35707 fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
35708 this.bold = fontName.search(/bold/gi) !== -1;
35709 this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
35710 this.black = name.search(/Black/g) !== -1;
35711 this.remeasure = Object.keys(this.widths).length > 0;
35712
35713 if (isStandardFont && type === 'CIDFontType2' && this.cidEncoding.startsWith('Identity-')) {
35714 var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();
35715 var map = [];
35716
35717 for (charCode in GlyphMapForStandardFonts) {
35718 map[+charCode] = GlyphMapForStandardFonts[charCode];
35719 }
35720
35721 if (/Arial-?Black/i.test(name)) {
35722 var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)();
35723
35724 for (charCode in SupplementalGlyphMapForArialBlack) {
35725 map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];
35726 }
35727 } else if (/Calibri/i.test(name)) {
35728 var SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();
35729
35730 for (charCode in SupplementalGlyphMapForCalibri) {
35731 map[+charCode] = SupplementalGlyphMapForCalibri[charCode];
35732 }
35733 }
35734
35735 var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;
35736
35737 if (!isIdentityUnicode) {
35738 this.toUnicode.forEach(function (charCode, unicodeCharCode) {
35739 map[+charCode] = unicodeCharCode;
35740 });
35741 }
35742
35743 this.toFontChar = map;
35744 this.toUnicode = new ToUnicodeMap(map);
35745 } else if (/Symbol/i.test(fontName)) {
35746 this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);
35747 } else if (/Dingbats/i.test(fontName)) {
35748 if (/Wingdings/i.test(name)) {
35749 (0, _util.warn)('Non-embedded Wingdings font, falling back to ZapfDingbats.');
35750 }
35751
35752 this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);
35753 } else if (isStandardFont) {
35754 this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);
35755 } else {
35756 var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
35757 this.toUnicode.forEach(function (charCode, unicodeCharCode) {
35758 if (!_this.composite) {
35759 var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode];
35760 unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
35761
35762 if (unicode !== -1) {
35763 unicodeCharCode = unicode;
35764 }
35765 }
35766
35767 _this.toFontChar[charCode] = unicodeCharCode;
35768 });
35769 }
35770
35771 this.loadedName = fontName.split('-')[0];
35772 this.fontType = getFontType(type, subtype);
35773 },
35774 checkAndRepair: function Font_checkAndRepair(name, font, properties) {
35775 var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];
35776
35777 function readTables(file, numTables) {
35778 var tables = Object.create(null);
35779 tables['OS/2'] = null;
35780 tables['cmap'] = null;
35781 tables['head'] = null;
35782 tables['hhea'] = null;
35783 tables['hmtx'] = null;
35784 tables['maxp'] = null;
35785 tables['name'] = null;
35786 tables['post'] = null;
35787
35788 for (var i = 0; i < numTables; i++) {
35789 var table = readTableEntry(font);
35790
35791 if (!VALID_TABLES.includes(table.tag)) {
35792 continue;
35793 }
35794
35795 if (table.length === 0) {
35796 continue;
35797 }
35798
35799 tables[table.tag] = table;
35800 }
35801
35802 return tables;
35803 }
35804
35805 function readTableEntry(file) {
35806 var tag = (0, _util.bytesToString)(file.getBytes(4));
35807 var checksum = file.getInt32() >>> 0;
35808 var offset = file.getInt32() >>> 0;
35809 var length = file.getInt32() >>> 0;
35810 var previousPosition = file.pos;
35811 file.pos = file.start ? file.start : 0;
35812 file.skip(offset);
35813 var data = file.getBytes(length);
35814 file.pos = previousPosition;
35815
35816 if (tag === 'head') {
35817 data[8] = data[9] = data[10] = data[11] = 0;
35818 data[17] |= 0x20;
35819 }
35820
35821 return {
35822 tag: tag,
35823 checksum: checksum,
35824 length: length,
35825 offset: offset,
35826 data: data
35827 };
35828 }
35829
35830 function readOpenTypeHeader(ttf) {
35831 return {
35832 version: (0, _util.bytesToString)(ttf.getBytes(4)),
35833 numTables: ttf.getUint16(),
35834 searchRange: ttf.getUint16(),
35835 entrySelector: ttf.getUint16(),
35836 rangeShift: ttf.getUint16()
35837 };
35838 }
35839
35840 function readTrueTypeCollectionHeader(ttc) {
35841 var ttcTag = (0, _util.bytesToString)(ttc.getBytes(4));
35842 (0, _util.assert)(ttcTag === 'ttcf', 'Must be a TrueType Collection font.');
35843 var majorVersion = ttc.getUint16();
35844 var minorVersion = ttc.getUint16();
35845 var numFonts = ttc.getInt32() >>> 0;
35846 var offsetTable = [];
35847
35848 for (var i = 0; i < numFonts; i++) {
35849 offsetTable.push(ttc.getInt32() >>> 0);
35850 }
35851
35852 var header = {
35853 ttcTag: ttcTag,
35854 majorVersion: majorVersion,
35855 minorVersion: minorVersion,
35856 numFonts: numFonts,
35857 offsetTable: offsetTable
35858 };
35859
35860 switch (majorVersion) {
35861 case 1:
35862 return header;
35863
35864 case 2:
35865 header.dsigTag = ttc.getInt32() >>> 0;
35866 header.dsigLength = ttc.getInt32() >>> 0;
35867 header.dsigOffset = ttc.getInt32() >>> 0;
35868 return header;
35869 }
35870
35871 throw new _util.FormatError("Invalid TrueType Collection majorVersion: ".concat(majorVersion, "."));
35872 }
35873
35874 function readTrueTypeCollectionData(ttc, fontName) {
35875 var _readTrueTypeCollecti = readTrueTypeCollectionHeader(ttc),
35876 numFonts = _readTrueTypeCollecti.numFonts,
35877 offsetTable = _readTrueTypeCollecti.offsetTable;
35878
35879 for (var i = 0; i < numFonts; i++) {
35880 ttc.pos = (ttc.start || 0) + offsetTable[i];
35881 var potentialHeader = readOpenTypeHeader(ttc);
35882 var potentialTables = readTables(ttc, potentialHeader.numTables);
35883
35884 if (!potentialTables['name']) {
35885 throw new _util.FormatError('TrueType Collection font must contain a "name" table.');
35886 }
35887
35888 var nameTable = readNameTable(potentialTables['name']);
35889
35890 for (var j = 0, jj = nameTable.length; j < jj; j++) {
35891 for (var k = 0, kk = nameTable[j].length; k < kk; k++) {
35892 var nameEntry = nameTable[j][k];
35893
35894 if (nameEntry && nameEntry.replace(/\s/g, '') === fontName) {
35895 return {
35896 header: potentialHeader,
35897 tables: potentialTables
35898 };
35899 }
35900 }
35901 }
35902 }
35903
35904 throw new _util.FormatError("TrueType Collection does not contain \"".concat(fontName, "\" font."));
35905 }
35906
35907 function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {
35908 if (!cmap) {
35909 (0, _util.warn)('No cmap table available.');
35910 return {
35911 platformId: -1,
35912 encodingId: -1,
35913 mappings: [],
35914 hasShortCmap: false
35915 };
35916 }
35917
35918 var segment;
35919 var start = (font.start ? font.start : 0) + cmap.offset;
35920 font.pos = start;
35921 font.getUint16();
35922 var numTables = font.getUint16();
35923 var potentialTable;
35924 var canBreak = false;
35925
35926 for (var i = 0; i < numTables; i++) {
35927 var platformId = font.getUint16();
35928 var encodingId = font.getUint16();
35929 var offset = font.getInt32() >>> 0;
35930 var useTable = false;
35931
35932 if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {
35933 continue;
35934 }
35935
35936 if (platformId === 0 && encodingId === 0) {
35937 useTable = true;
35938 } else if (platformId === 1 && encodingId === 0) {
35939 useTable = true;
35940 } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {
35941 useTable = true;
35942
35943 if (!isSymbolicFont) {
35944 canBreak = true;
35945 }
35946 } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
35947 useTable = true;
35948 canBreak = true;
35949 }
35950
35951 if (useTable) {
35952 potentialTable = {
35953 platformId: platformId,
35954 encodingId: encodingId,
35955 offset: offset
35956 };
35957 }
35958
35959 if (canBreak) {
35960 break;
35961 }
35962 }
35963
35964 if (potentialTable) {
35965 font.pos = start + potentialTable.offset;
35966 }
35967
35968 if (!potentialTable || font.peekByte() === -1) {
35969 (0, _util.warn)('Could not find a preferred cmap table.');
35970 return {
35971 platformId: -1,
35972 encodingId: -1,
35973 mappings: [],
35974 hasShortCmap: false
35975 };
35976 }
35977
35978 var format = font.getUint16();
35979 font.getUint16();
35980 font.getUint16();
35981 var hasShortCmap = false;
35982 var mappings = [];
35983 var j, glyphId;
35984
35985 if (format === 0) {
35986 for (j = 0; j < 256; j++) {
35987 var index = font.getByte();
35988
35989 if (!index) {
35990 continue;
35991 }
35992
35993 mappings.push({
35994 charCode: j,
35995 glyphId: index
35996 });
35997 }
35998
35999 hasShortCmap = true;
36000 } else if (format === 4) {
36001 var segCount = font.getUint16() >> 1;
36002 font.getBytes(6);
36003 var segIndex,
36004 segments = [];
36005
36006 for (segIndex = 0; segIndex < segCount; segIndex++) {
36007 segments.push({
36008 end: font.getUint16()
36009 });
36010 }
36011
36012 font.getUint16();
36013
36014 for (segIndex = 0; segIndex < segCount; segIndex++) {
36015 segments[segIndex].start = font.getUint16();
36016 }
36017
36018 for (segIndex = 0; segIndex < segCount; segIndex++) {
36019 segments[segIndex].delta = font.getUint16();
36020 }
36021
36022 var offsetsCount = 0;
36023
36024 for (segIndex = 0; segIndex < segCount; segIndex++) {
36025 segment = segments[segIndex];
36026 var rangeOffset = font.getUint16();
36027
36028 if (!rangeOffset) {
36029 segment.offsetIndex = -1;
36030 continue;
36031 }
36032
36033 var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
36034 segment.offsetIndex = offsetIndex;
36035 offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);
36036 }
36037
36038 var offsets = [];
36039
36040 for (j = 0; j < offsetsCount; j++) {
36041 offsets.push(font.getUint16());
36042 }
36043
36044 for (segIndex = 0; segIndex < segCount; segIndex++) {
36045 segment = segments[segIndex];
36046 start = segment.start;
36047 var end = segment.end;
36048 var delta = segment.delta;
36049 offsetIndex = segment.offsetIndex;
36050
36051 for (j = start; j <= end; j++) {
36052 if (j === 0xFFFF) {
36053 continue;
36054 }
36055
36056 glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];
36057 glyphId = glyphId + delta & 0xFFFF;
36058 mappings.push({
36059 charCode: j,
36060 glyphId: glyphId
36061 });
36062 }
36063 }
36064 } else if (format === 6) {
36065 var firstCode = font.getUint16();
36066 var entryCount = font.getUint16();
36067
36068 for (j = 0; j < entryCount; j++) {
36069 glyphId = font.getUint16();
36070 var charCode = firstCode + j;
36071 mappings.push({
36072 charCode: charCode,
36073 glyphId: glyphId
36074 });
36075 }
36076 } else {
36077 (0, _util.warn)('cmap table has unsupported format: ' + format);
36078 return {
36079 platformId: -1,
36080 encodingId: -1,
36081 mappings: [],
36082 hasShortCmap: false
36083 };
36084 }
36085
36086 mappings.sort(function (a, b) {
36087 return a.charCode - b.charCode;
36088 });
36089
36090 for (i = 1; i < mappings.length; i++) {
36091 if (mappings[i - 1].charCode === mappings[i].charCode) {
36092 mappings.splice(i, 1);
36093 i--;
36094 }
36095 }
36096
36097 return {
36098 platformId: potentialTable.platformId,
36099 encodingId: potentialTable.encodingId,
36100 mappings: mappings,
36101 hasShortCmap: hasShortCmap
36102 };
36103 }
36104
36105 function sanitizeMetrics(font, header, metrics, numGlyphs, dupFirstEntry) {
36106 if (!header) {
36107 if (metrics) {
36108 metrics.data = null;
36109 }
36110
36111 return;
36112 }
36113
36114 font.pos = (font.start ? font.start : 0) + header.offset;
36115 font.pos += 4;
36116 font.pos += 2;
36117 font.pos += 2;
36118 font.pos += 2;
36119 font.pos += 2;
36120 font.pos += 2;
36121 font.pos += 2;
36122 font.pos += 2;
36123 font.pos += 2;
36124 font.pos += 2;
36125 font.pos += 2;
36126 font.pos += 8;
36127 font.pos += 2;
36128 var numOfMetrics = font.getUint16();
36129
36130 if (numOfMetrics > numGlyphs) {
36131 (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')');
36132 numOfMetrics = numGlyphs;
36133 header.data[34] = (numOfMetrics & 0xff00) >> 8;
36134 header.data[35] = numOfMetrics & 0x00ff;
36135 }
36136
36137 var numOfSidebearings = numGlyphs - numOfMetrics;
36138 var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);
36139
36140 if (numMissing > 0) {
36141 var entries = new Uint8Array(metrics.length + numMissing * 2);
36142 entries.set(metrics.data);
36143
36144 if (dupFirstEntry) {
36145 entries[metrics.length] = metrics.data[2];
36146 entries[metrics.length + 1] = metrics.data[3];
36147 }
36148
36149 metrics.data = entries;
36150 }
36151 }
36152
36153 function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {
36154 var glyphProfile = {
36155 length: 0,
36156 sizeOfInstructions: 0
36157 };
36158
36159 if (sourceEnd - sourceStart <= 12) {
36160 return glyphProfile;
36161 }
36162
36163 var glyf = source.subarray(sourceStart, sourceEnd);
36164 var contoursCount = signedInt16(glyf[0], glyf[1]);
36165
36166 if (contoursCount < 0) {
36167 contoursCount = -1;
36168 writeSignedInt16(glyf, 0, contoursCount);
36169 dest.set(glyf, destStart);
36170 glyphProfile.length = glyf.length;
36171 return glyphProfile;
36172 }
36173
36174 var i,
36175 j = 10,
36176 flagsCount = 0;
36177
36178 for (i = 0; i < contoursCount; i++) {
36179 var endPoint = glyf[j] << 8 | glyf[j + 1];
36180 flagsCount = endPoint + 1;
36181 j += 2;
36182 }
36183
36184 var instructionsStart = j;
36185 var instructionsLength = glyf[j] << 8 | glyf[j + 1];
36186 glyphProfile.sizeOfInstructions = instructionsLength;
36187 j += 2 + instructionsLength;
36188 var instructionsEnd = j;
36189 var coordinatesLength = 0;
36190
36191 for (i = 0; i < flagsCount; i++) {
36192 var flag = glyf[j++];
36193
36194 if (flag & 0xC0) {
36195 glyf[j - 1] = flag & 0x3F;
36196 }
36197
36198 var xyLength = (flag & 2 ? 1 : flag & 16 ? 0 : 2) + (flag & 4 ? 1 : flag & 32 ? 0 : 2);
36199 coordinatesLength += xyLength;
36200
36201 if (flag & 8) {
36202 var repeat = glyf[j++];
36203 i += repeat;
36204 coordinatesLength += repeat * xyLength;
36205 }
36206 }
36207
36208 if (coordinatesLength === 0) {
36209 return glyphProfile;
36210 }
36211
36212 var glyphDataLength = j + coordinatesLength;
36213
36214 if (glyphDataLength > glyf.length) {
36215 return glyphProfile;
36216 }
36217
36218 if (!hintsValid && instructionsLength > 0) {
36219 dest.set(glyf.subarray(0, instructionsStart), destStart);
36220 dest.set([0, 0], destStart + instructionsStart);
36221 dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);
36222 glyphDataLength -= instructionsLength;
36223
36224 if (glyf.length - glyphDataLength > 3) {
36225 glyphDataLength = glyphDataLength + 3 & ~3;
36226 }
36227
36228 glyphProfile.length = glyphDataLength;
36229 return glyphProfile;
36230 }
36231
36232 if (glyf.length - glyphDataLength > 3) {
36233 glyphDataLength = glyphDataLength + 3 & ~3;
36234 dest.set(glyf.subarray(0, glyphDataLength), destStart);
36235 glyphProfile.length = glyphDataLength;
36236 return glyphProfile;
36237 }
36238
36239 dest.set(glyf, destStart);
36240 glyphProfile.length = glyf.length;
36241 return glyphProfile;
36242 }
36243
36244 function sanitizeHead(head, numGlyphs, locaLength) {
36245 var data = head.data;
36246 var version = int32(data[0], data[1], data[2], data[3]);
36247
36248 if (version >> 16 !== 1) {
36249 (0, _util.info)('Attempting to fix invalid version in head table: ' + version);
36250 data[0] = 0;
36251 data[1] = 1;
36252 data[2] = 0;
36253 data[3] = 0;
36254 }
36255
36256 var indexToLocFormat = int16(data[50], data[51]);
36257
36258 if (indexToLocFormat < 0 || indexToLocFormat > 1) {
36259 (0, _util.info)('Attempting to fix invalid indexToLocFormat in head table: ' + indexToLocFormat);
36260 var numGlyphsPlusOne = numGlyphs + 1;
36261
36262 if (locaLength === numGlyphsPlusOne << 1) {
36263 data[50] = 0;
36264 data[51] = 0;
36265 } else if (locaLength === numGlyphsPlusOne << 2) {
36266 data[50] = 0;
36267 data[51] = 1;
36268 } else {
36269 throw new _util.FormatError('Could not fix indexToLocFormat: ' + indexToLocFormat);
36270 }
36271 }
36272 }
36273
36274 function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {
36275 var itemSize, itemDecode, itemEncode;
36276
36277 if (isGlyphLocationsLong) {
36278 itemSize = 4;
36279
36280 itemDecode = function fontItemDecodeLong(data, offset) {
36281 return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
36282 };
36283
36284 itemEncode = function fontItemEncodeLong(data, offset, value) {
36285 data[offset] = value >>> 24 & 0xFF;
36286 data[offset + 1] = value >> 16 & 0xFF;
36287 data[offset + 2] = value >> 8 & 0xFF;
36288 data[offset + 3] = value & 0xFF;
36289 };
36290 } else {
36291 itemSize = 2;
36292
36293 itemDecode = function fontItemDecode(data, offset) {
36294 return data[offset] << 9 | data[offset + 1] << 1;
36295 };
36296
36297 itemEncode = function fontItemEncode(data, offset, value) {
36298 data[offset] = value >> 9 & 0xFF;
36299 data[offset + 1] = value >> 1 & 0xFF;
36300 };
36301 }
36302
36303 var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;
36304 var locaData = loca.data;
36305 var locaDataSize = itemSize * (1 + numGlyphsOut);
36306 locaData = new Uint8Array(locaDataSize);
36307 locaData.set(loca.data.subarray(0, locaDataSize));
36308 loca.data = locaData;
36309 var oldGlyfData = glyf.data;
36310 var oldGlyfDataLength = oldGlyfData.length;
36311 var newGlyfData = new Uint8Array(oldGlyfDataLength);
36312 var startOffset = itemDecode(locaData, 0);
36313 var writeOffset = 0;
36314 var missingGlyphs = Object.create(null);
36315 itemEncode(locaData, 0, writeOffset);
36316 var i, j;
36317
36318 for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
36319 var endOffset = itemDecode(locaData, j);
36320
36321 if (endOffset === 0) {
36322 endOffset = startOffset;
36323 }
36324
36325 if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) {
36326 endOffset = oldGlyfDataLength;
36327 }
36328
36329 if (endOffset > oldGlyfDataLength) {
36330 startOffset = endOffset;
36331 }
36332
36333 var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid);
36334 var newLength = glyphProfile.length;
36335
36336 if (newLength === 0) {
36337 missingGlyphs[i] = true;
36338 }
36339
36340 if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {
36341 maxSizeOfInstructions = glyphProfile.sizeOfInstructions;
36342 }
36343
36344 writeOffset += newLength;
36345 itemEncode(locaData, j, writeOffset);
36346 startOffset = endOffset;
36347 }
36348
36349 if (writeOffset === 0) {
36350 var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
36351
36352 for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {
36353 itemEncode(locaData, j, simpleGlyph.length);
36354 }
36355
36356 glyf.data = simpleGlyph;
36357 } else if (dupFirstEntry) {
36358 var firstEntryLength = itemDecode(locaData, itemSize);
36359
36360 if (newGlyfData.length > firstEntryLength + writeOffset) {
36361 glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);
36362 } else {
36363 glyf.data = new Uint8Array(firstEntryLength + writeOffset);
36364 glyf.data.set(newGlyfData.subarray(0, writeOffset));
36365 }
36366
36367 glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);
36368 itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);
36369 } else {
36370 glyf.data = newGlyfData.subarray(0, writeOffset);
36371 }
36372
36373 return {
36374 missingGlyphs: missingGlyphs,
36375 maxSizeOfInstructions: maxSizeOfInstructions
36376 };
36377 }
36378
36379 function readPostScriptTable(post, properties, maxpNumGlyphs) {
36380 var start = (font.start ? font.start : 0) + post.offset;
36381 font.pos = start;
36382 var length = post.length,
36383 end = start + length;
36384 var version = font.getInt32();
36385 font.getBytes(28);
36386 var glyphNames;
36387 var valid = true;
36388 var i;
36389
36390 switch (version) {
36391 case 0x00010000:
36392 glyphNames = MacStandardGlyphOrdering;
36393 break;
36394
36395 case 0x00020000:
36396 var numGlyphs = font.getUint16();
36397
36398 if (numGlyphs !== maxpNumGlyphs) {
36399 valid = false;
36400 break;
36401 }
36402
36403 var glyphNameIndexes = [];
36404
36405 for (i = 0; i < numGlyphs; ++i) {
36406 var index = font.getUint16();
36407
36408 if (index >= 32768) {
36409 valid = false;
36410 break;
36411 }
36412
36413 glyphNameIndexes.push(index);
36414 }
36415
36416 if (!valid) {
36417 break;
36418 }
36419
36420 var customNames = [];
36421 var strBuf = [];
36422
36423 while (font.pos < end) {
36424 var stringLength = font.getByte();
36425 strBuf.length = stringLength;
36426
36427 for (i = 0; i < stringLength; ++i) {
36428 strBuf[i] = String.fromCharCode(font.getByte());
36429 }
36430
36431 customNames.push(strBuf.join(''));
36432 }
36433
36434 glyphNames = [];
36435
36436 for (i = 0; i < numGlyphs; ++i) {
36437 var j = glyphNameIndexes[i];
36438
36439 if (j < 258) {
36440 glyphNames.push(MacStandardGlyphOrdering[j]);
36441 continue;
36442 }
36443
36444 glyphNames.push(customNames[j - 258]);
36445 }
36446
36447 break;
36448
36449 case 0x00030000:
36450 break;
36451
36452 default:
36453 (0, _util.warn)('Unknown/unsupported post table version ' + version);
36454 valid = false;
36455
36456 if (properties.defaultEncoding) {
36457 glyphNames = properties.defaultEncoding;
36458 }
36459
36460 break;
36461 }
36462
36463 properties.glyphNames = glyphNames;
36464 return valid;
36465 }
36466
36467 function readNameTable(nameTable) {
36468 var start = (font.start ? font.start : 0) + nameTable.offset;
36469 font.pos = start;
36470 var names = [[], []];
36471 var length = nameTable.length,
36472 end = start + length;
36473 var format = font.getUint16();
36474 var FORMAT_0_HEADER_LENGTH = 6;
36475
36476 if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {
36477 return names;
36478 }
36479
36480 var numRecords = font.getUint16();
36481 var stringsStart = font.getUint16();
36482 var records = [];
36483 var NAME_RECORD_LENGTH = 12;
36484 var i, ii;
36485
36486 for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {
36487 var r = {
36488 platform: font.getUint16(),
36489 encoding: font.getUint16(),
36490 language: font.getUint16(),
36491 name: font.getUint16(),
36492 length: font.getUint16(),
36493 offset: font.getUint16()
36494 };
36495
36496 if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {
36497 records.push(r);
36498 }
36499 }
36500
36501 for (i = 0, ii = records.length; i < ii; i++) {
36502 var record = records[i];
36503
36504 if (record.length <= 0) {
36505 continue;
36506 }
36507
36508 var pos = start + stringsStart + record.offset;
36509
36510 if (pos + record.length > end) {
36511 continue;
36512 }
36513
36514 font.pos = pos;
36515 var nameIndex = record.name;
36516
36517 if (record.encoding) {
36518 var str = '';
36519
36520 for (var j = 0, jj = record.length; j < jj; j += 2) {
36521 str += String.fromCharCode(font.getUint16());
36522 }
36523
36524 names[1][nameIndex] = str;
36525 } else {
36526 names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length));
36527 }
36528 }
36529
36530 return names;
36531 }
36532
36533 var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];
36534
36535 function sanitizeTTProgram(table, ttContext) {
36536 var data = table.data;
36537 var i = 0,
36538 j,
36539 n,
36540 b,
36541 funcId,
36542 pc,
36543 lastEndf = 0,
36544 lastDeff = 0;
36545 var stack = [];
36546 var callstack = [];
36547 var functionsCalled = [];
36548 var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;
36549 var inFDEF = false,
36550 ifLevel = 0,
36551 inELSE = 0;
36552
36553 for (var ii = data.length; i < ii;) {
36554 var op = data[i++];
36555
36556 if (op === 0x40) {
36557 n = data[i++];
36558
36559 if (inFDEF || inELSE) {
36560 i += n;
36561 } else {
36562 for (j = 0; j < n; j++) {
36563 stack.push(data[i++]);
36564 }
36565 }
36566 } else if (op === 0x41) {
36567 n = data[i++];
36568
36569 if (inFDEF || inELSE) {
36570 i += n * 2;
36571 } else {
36572 for (j = 0; j < n; j++) {
36573 b = data[i++];
36574 stack.push(b << 8 | data[i++]);
36575 }
36576 }
36577 } else if ((op & 0xF8) === 0xB0) {
36578 n = op - 0xB0 + 1;
36579
36580 if (inFDEF || inELSE) {
36581 i += n;
36582 } else {
36583 for (j = 0; j < n; j++) {
36584 stack.push(data[i++]);
36585 }
36586 }
36587 } else if ((op & 0xF8) === 0xB8) {
36588 n = op - 0xB8 + 1;
36589
36590 if (inFDEF || inELSE) {
36591 i += n * 2;
36592 } else {
36593 for (j = 0; j < n; j++) {
36594 b = data[i++];
36595 stack.push(b << 8 | data[i++]);
36596 }
36597 }
36598 } else if (op === 0x2B && !tooComplexToFollowFunctions) {
36599 if (!inFDEF && !inELSE) {
36600 funcId = stack[stack.length - 1];
36601
36602 if (isNaN(funcId)) {
36603 (0, _util.info)('TT: CALL empty stack (or invalid entry).');
36604 } else {
36605 ttContext.functionsUsed[funcId] = true;
36606
36607 if (funcId in ttContext.functionsStackDeltas) {
36608 var newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];
36609
36610 if (newStackLength < 0) {
36611 (0, _util.warn)('TT: CALL invalid functions stack delta.');
36612 ttContext.hintsValid = false;
36613 return;
36614 }
36615
36616 stack.length = newStackLength;
36617 } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {
36618 callstack.push({
36619 data: data,
36620 i: i,
36621 stackTop: stack.length - 1
36622 });
36623 functionsCalled.push(funcId);
36624 pc = ttContext.functionsDefined[funcId];
36625
36626 if (!pc) {
36627 (0, _util.warn)('TT: CALL non-existent function');
36628 ttContext.hintsValid = false;
36629 return;
36630 }
36631
36632 data = pc.data;
36633 i = pc.i;
36634 }
36635 }
36636 }
36637 } else if (op === 0x2C && !tooComplexToFollowFunctions) {
36638 if (inFDEF || inELSE) {
36639 (0, _util.warn)('TT: nested FDEFs not allowed');
36640 tooComplexToFollowFunctions = true;
36641 }
36642
36643 inFDEF = true;
36644 lastDeff = i;
36645 funcId = stack.pop();
36646 ttContext.functionsDefined[funcId] = {
36647 data: data,
36648 i: i
36649 };
36650 } else if (op === 0x2D) {
36651 if (inFDEF) {
36652 inFDEF = false;
36653 lastEndf = i;
36654 } else {
36655 pc = callstack.pop();
36656
36657 if (!pc) {
36658 (0, _util.warn)('TT: ENDF bad stack');
36659 ttContext.hintsValid = false;
36660 return;
36661 }
36662
36663 funcId = functionsCalled.pop();
36664 data = pc.data;
36665 i = pc.i;
36666 ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;
36667 }
36668 } else if (op === 0x89) {
36669 if (inFDEF || inELSE) {
36670 (0, _util.warn)('TT: nested IDEFs not allowed');
36671 tooComplexToFollowFunctions = true;
36672 }
36673
36674 inFDEF = true;
36675 lastDeff = i;
36676 } else if (op === 0x58) {
36677 ++ifLevel;
36678 } else if (op === 0x1B) {
36679 inELSE = ifLevel;
36680 } else if (op === 0x59) {
36681 if (inELSE === ifLevel) {
36682 inELSE = 0;
36683 }
36684
36685 --ifLevel;
36686 } else if (op === 0x1C) {
36687 if (!inFDEF && !inELSE) {
36688 var offset = stack[stack.length - 1];
36689
36690 if (offset > 0) {
36691 i += offset - 1;
36692 }
36693 }
36694 }
36695
36696 if (!inFDEF && !inELSE) {
36697 var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;
36698
36699 if (op >= 0x71 && op <= 0x75) {
36700 n = stack.pop();
36701
36702 if (!isNaN(n)) {
36703 stackDelta = -n * 2;
36704 }
36705 }
36706
36707 while (stackDelta < 0 && stack.length > 0) {
36708 stack.pop();
36709 stackDelta++;
36710 }
36711
36712 while (stackDelta > 0) {
36713 stack.push(NaN);
36714 stackDelta--;
36715 }
36716 }
36717 }
36718
36719 ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;
36720 var content = [data];
36721
36722 if (i > data.length) {
36723 content.push(new Uint8Array(i - data.length));
36724 }
36725
36726 if (lastDeff > lastEndf) {
36727 (0, _util.warn)('TT: complementing a missing function tail');
36728 content.push(new Uint8Array([0x22, 0x2D]));
36729 }
36730
36731 foldTTTable(table, content);
36732 }
36733
36734 function checkInvalidFunctions(ttContext, maxFunctionDefs) {
36735 if (ttContext.tooComplexToFollowFunctions) {
36736 return;
36737 }
36738
36739 if (ttContext.functionsDefined.length > maxFunctionDefs) {
36740 (0, _util.warn)('TT: more functions defined than expected');
36741 ttContext.hintsValid = false;
36742 return;
36743 }
36744
36745 for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {
36746 if (j > maxFunctionDefs) {
36747 (0, _util.warn)('TT: invalid function id: ' + j);
36748 ttContext.hintsValid = false;
36749 return;
36750 }
36751
36752 if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {
36753 (0, _util.warn)('TT: undefined function: ' + j);
36754 ttContext.hintsValid = false;
36755 return;
36756 }
36757 }
36758 }
36759
36760 function foldTTTable(table, content) {
36761 if (content.length > 1) {
36762 var newLength = 0;
36763 var j, jj;
36764
36765 for (j = 0, jj = content.length; j < jj; j++) {
36766 newLength += content[j].length;
36767 }
36768
36769 newLength = newLength + 3 & ~3;
36770 var result = new Uint8Array(newLength);
36771 var pos = 0;
36772
36773 for (j = 0, jj = content.length; j < jj; j++) {
36774 result.set(content[j], pos);
36775 pos += content[j].length;
36776 }
36777
36778 table.data = result;
36779 table.length = newLength;
36780 }
36781 }
36782
36783 function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {
36784 var ttContext = {
36785 functionsDefined: [],
36786 functionsUsed: [],
36787 functionsStackDeltas: [],
36788 tooComplexToFollowFunctions: false,
36789 hintsValid: true
36790 };
36791
36792 if (fpgm) {
36793 sanitizeTTProgram(fpgm, ttContext);
36794 }
36795
36796 if (prep) {
36797 sanitizeTTProgram(prep, ttContext);
36798 }
36799
36800 if (fpgm) {
36801 checkInvalidFunctions(ttContext, maxFunctionDefs);
36802 }
36803
36804 if (cvt && cvt.length & 1) {
36805 var cvtData = new Uint8Array(cvt.length + 1);
36806 cvtData.set(cvt.data);
36807 cvt.data = cvtData;
36808 }
36809
36810 return ttContext.hintsValid;
36811 }
36812
36813 font = new _stream.Stream(new Uint8Array(font.getBytes()));
36814 var header, tables;
36815
36816 if (isTrueTypeCollectionFile(font)) {
36817 var ttcData = readTrueTypeCollectionData(font, this.name);
36818 header = ttcData.header;
36819 tables = ttcData.tables;
36820 } else {
36821 header = readOpenTypeHeader(font);
36822 tables = readTables(font, header.numTables);
36823 }
36824
36825 var cff, cffFile;
36826 var isTrueType = !tables['CFF '];
36827
36828 if (!isTrueType) {
36829 var isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));
36830
36831 if (header.version === 'OTTO' && !isComposite || !tables['head'] || !tables['hhea'] || !tables['maxp'] || !tables['post']) {
36832 cffFile = new _stream.Stream(tables['CFF '].data);
36833 cff = new CFFFont(cffFile, properties);
36834 adjustWidths(properties);
36835 return this.convert(name, cff, properties);
36836 }
36837
36838 delete tables['glyf'];
36839 delete tables['loca'];
36840 delete tables['fpgm'];
36841 delete tables['prep'];
36842 delete tables['cvt '];
36843 this.isOpenType = true;
36844 } else {
36845 if (!tables['loca']) {
36846 throw new _util.FormatError('Required "loca" table is not found');
36847 }
36848
36849 if (!tables['glyf']) {
36850 (0, _util.warn)('Required "glyf" table is not found -- trying to recover.');
36851 tables['glyf'] = {
36852 tag: 'glyf',
36853 data: new Uint8Array(0)
36854 };
36855 }
36856
36857 this.isOpenType = false;
36858 }
36859
36860 if (!tables['maxp']) {
36861 throw new _util.FormatError('Required "maxp" table is not found');
36862 }
36863
36864 font.pos = (font.start || 0) + tables['maxp'].offset;
36865 var version = font.getInt32();
36866 var numGlyphs = font.getUint16();
36867 var numGlyphsOut = numGlyphs + 1;
36868 var dupFirstEntry = true;
36869
36870 if (numGlyphsOut > 0xFFFF) {
36871 dupFirstEntry = false;
36872 numGlyphsOut = numGlyphs;
36873 (0, _util.warn)('Not enough space in glyfs to duplicate first glyph.');
36874 }
36875
36876 var maxFunctionDefs = 0;
36877 var maxSizeOfInstructions = 0;
36878
36879 if (version >= 0x00010000 && tables['maxp'].length >= 22) {
36880 font.pos += 8;
36881 var maxZones = font.getUint16();
36882
36883 if (maxZones > 2) {
36884 tables['maxp'].data[14] = 0;
36885 tables['maxp'].data[15] = 2;
36886 }
36887
36888 font.pos += 4;
36889 maxFunctionDefs = font.getUint16();
36890 font.pos += 4;
36891 maxSizeOfInstructions = font.getUint16();
36892 }
36893
36894 tables['maxp'].data[4] = numGlyphsOut >> 8;
36895 tables['maxp'].data[5] = numGlyphsOut & 255;
36896 var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'], tables['cvt '], maxFunctionDefs);
36897
36898 if (!hintsValid) {
36899 delete tables['fpgm'];
36900 delete tables['prep'];
36901 delete tables['cvt '];
36902 }
36903
36904 sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphsOut, dupFirstEntry);
36905
36906 if (!tables['head']) {
36907 throw new _util.FormatError('Required "head" table is not found');
36908 }
36909
36910 sanitizeHead(tables['head'], numGlyphs, isTrueType ? tables['loca'].length : 0);
36911 var missingGlyphs = Object.create(null);
36912
36913 if (isTrueType) {
36914 var isGlyphLocationsLong = int16(tables['head'].data[50], tables['head'].data[51]);
36915 var glyphsInfo = sanitizeGlyphLocations(tables['loca'], tables['glyf'], numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);
36916 missingGlyphs = glyphsInfo.missingGlyphs;
36917
36918 if (version >= 0x00010000 && tables['maxp'].length >= 22) {
36919 tables['maxp'].data[26] = glyphsInfo.maxSizeOfInstructions >> 8;
36920 tables['maxp'].data[27] = glyphsInfo.maxSizeOfInstructions & 255;
36921 }
36922 }
36923
36924 if (!tables['hhea']) {
36925 throw new _util.FormatError('Required "hhea" table is not found');
36926 }
36927
36928 if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) {
36929 tables['hhea'].data[10] = 0xFF;
36930 tables['hhea'].data[11] = 0xFF;
36931 }
36932
36933 var metricsOverride = {
36934 unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]),
36935 yMax: int16(tables['head'].data[42], tables['head'].data[43]),
36936 yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]),
36937 ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]),
36938 descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7])
36939 };
36940 this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;
36941 this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;
36942
36943 if (tables['post']) {
36944 readPostScriptTable(tables['post'], properties, numGlyphs);
36945 }
36946
36947 tables['post'] = {
36948 tag: 'post',
36949 data: createPostTable(properties)
36950 };
36951 var charCodeToGlyphId = [],
36952 charCode;
36953
36954 function hasGlyph(glyphId) {
36955 return !missingGlyphs[glyphId];
36956 }
36957
36958 if (properties.composite) {
36959 var cidToGidMap = properties.cidToGidMap || [];
36960 var isCidToGidMapEmpty = cidToGidMap.length === 0;
36961 properties.cMap.forEach(function (charCode, cid) {
36962 if (cid > 0xffff) {
36963 throw new _util.FormatError('Max size of CID is 65,535');
36964 }
36965
36966 var glyphId = -1;
36967
36968 if (isCidToGidMapEmpty) {
36969 glyphId = cid;
36970 } else if (cidToGidMap[cid] !== undefined) {
36971 glyphId = cidToGidMap[cid];
36972 }
36973
36974 if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {
36975 charCodeToGlyphId[charCode] = glyphId;
36976 }
36977 });
36978 } else {
36979 var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont, properties.hasEncoding);
36980 var cmapPlatformId = cmapTable.platformId;
36981 var cmapEncodingId = cmapTable.encodingId;
36982 var cmapMappings = cmapTable.mappings;
36983 var cmapMappingsLength = cmapMappings.length;
36984
36985 if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) {
36986 var baseEncoding = [];
36987
36988 if (properties.baseEncodingName === 'MacRomanEncoding' || properties.baseEncodingName === 'WinAnsiEncoding') {
36989 baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
36990 }
36991
36992 var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
36993
36994 for (charCode = 0; charCode < 256; charCode++) {
36995 var glyphName, standardGlyphName;
36996
36997 if (this.differences && charCode in this.differences) {
36998 glyphName = this.differences[charCode];
36999 } else if (charCode in baseEncoding && baseEncoding[charCode] !== '') {
37000 glyphName = baseEncoding[charCode];
37001 } else {
37002 glyphName = _encodings.StandardEncoding[charCode];
37003 }
37004
37005 if (!glyphName) {
37006 continue;
37007 }
37008
37009 standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
37010 var unicodeOrCharCode;
37011
37012 if (cmapPlatformId === 3 && cmapEncodingId === 1) {
37013 unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];
37014 } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {
37015 unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);
37016 }
37017
37018 var found = false;
37019
37020 for (var i = 0; i < cmapMappingsLength; ++i) {
37021 if (cmapMappings[i].charCode !== unicodeOrCharCode) {
37022 continue;
37023 }
37024
37025 charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
37026 found = true;
37027 break;
37028 }
37029
37030 if (!found && properties.glyphNames) {
37031 var glyphId = properties.glyphNames.indexOf(glyphName);
37032
37033 if (glyphId === -1 && standardGlyphName !== glyphName) {
37034 glyphId = properties.glyphNames.indexOf(standardGlyphName);
37035 }
37036
37037 if (glyphId > 0 && hasGlyph(glyphId)) {
37038 charCodeToGlyphId[charCode] = glyphId;
37039 }
37040 }
37041 }
37042 } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {
37043 for (var _i2 = 0; _i2 < cmapMappingsLength; ++_i2) {
37044 charCodeToGlyphId[cmapMappings[_i2].charCode] = cmapMappings[_i2].glyphId;
37045 }
37046 } else {
37047 for (var _i3 = 0; _i3 < cmapMappingsLength; ++_i3) {
37048 charCode = cmapMappings[_i3].charCode;
37049
37050 if (cmapPlatformId === 3 && charCode >= 0xF000 && charCode <= 0xF0FF) {
37051 charCode &= 0xFF;
37052 }
37053
37054 charCodeToGlyphId[charCode] = cmapMappings[_i3].glyphId;
37055 }
37056 }
37057 }
37058
37059 if (charCodeToGlyphId.length === 0) {
37060 charCodeToGlyphId[0] = 0;
37061 }
37062
37063 var glyphZeroId = numGlyphsOut - 1;
37064
37065 if (!dupFirstEntry) {
37066 glyphZeroId = 0;
37067 }
37068
37069 var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);
37070 this.toFontChar = newMapping.toFontChar;
37071 tables['cmap'] = {
37072 tag: 'cmap',
37073 data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)
37074 };
37075
37076 if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {
37077 tables['OS/2'] = {
37078 tag: 'OS/2',
37079 data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)
37080 };
37081 }
37082
37083 if (!isTrueType) {
37084 try {
37085 cffFile = new _stream.Stream(tables['CFF '].data);
37086 var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);
37087 cff = parser.parse();
37088 cff.duplicateFirstGlyph();
37089 var compiler = new _cff_parser.CFFCompiler(cff);
37090 tables['CFF '].data = compiler.compile();
37091 } catch (e) {
37092 (0, _util.warn)('Failed to compile font ' + properties.loadedName);
37093 }
37094 }
37095
37096 if (!tables['name']) {
37097 tables['name'] = {
37098 tag: 'name',
37099 data: createNameTable(this.name)
37100 };
37101 } else {
37102 var namePrototype = readNameTable(tables['name']);
37103 tables['name'].data = createNameTable(name, namePrototype);
37104 }
37105
37106 var builder = new OpenTypeFileBuilder(header.version);
37107
37108 for (var tableTag in tables) {
37109 builder.addTable(tableTag, tables[tableTag].data);
37110 }
37111
37112 return builder.toArray();
37113 },
37114 convert: function Font_convert(fontName, font, properties) {
37115 properties.fixedPitch = false;
37116
37117 if (properties.builtInEncoding) {
37118 adjustToUnicode(properties, properties.builtInEncoding);
37119 }
37120
37121 var glyphZeroId = 1;
37122
37123 if (font instanceof CFFFont) {
37124 glyphZeroId = font.numGlyphs - 1;
37125 }
37126
37127 var mapping = font.getGlyphMapping(properties);
37128 var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);
37129 this.toFontChar = newMapping.toFontChar;
37130 var numGlyphs = font.numGlyphs;
37131
37132 function getCharCodes(charCodeToGlyphId, glyphId) {
37133 var charCodes = null;
37134
37135 for (var charCode in charCodeToGlyphId) {
37136 if (glyphId === charCodeToGlyphId[charCode]) {
37137 if (!charCodes) {
37138 charCodes = [];
37139 }
37140
37141 charCodes.push(charCode | 0);
37142 }
37143 }
37144
37145 return charCodes;
37146 }
37147
37148 function createCharCode(charCodeToGlyphId, glyphId) {
37149 for (var charCode in charCodeToGlyphId) {
37150 if (glyphId === charCodeToGlyphId[charCode]) {
37151 return charCode | 0;
37152 }
37153 }
37154
37155 newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;
37156 return newMapping.nextAvailableFontCharCode++;
37157 }
37158
37159 var seacs = font.seacs;
37160
37161 if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {
37162 var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;
37163 var charset = font.getCharset();
37164 var seacMap = Object.create(null);
37165
37166 for (var glyphId in seacs) {
37167 glyphId |= 0;
37168 var seac = seacs[glyphId];
37169 var baseGlyphName = _encodings.StandardEncoding[seac[2]];
37170 var accentGlyphName = _encodings.StandardEncoding[seac[3]];
37171 var baseGlyphId = charset.indexOf(baseGlyphName);
37172 var accentGlyphId = charset.indexOf(accentGlyphName);
37173
37174 if (baseGlyphId < 0 || accentGlyphId < 0) {
37175 continue;
37176 }
37177
37178 var accentOffset = {
37179 x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],
37180 y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]
37181 };
37182 var charCodes = getCharCodes(mapping, glyphId);
37183
37184 if (!charCodes) {
37185 continue;
37186 }
37187
37188 for (var i = 0, ii = charCodes.length; i < ii; i++) {
37189 var charCode = charCodes[i];
37190 var charCodeToGlyphId = newMapping.charCodeToGlyphId;
37191 var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);
37192 var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);
37193 seacMap[charCode] = {
37194 baseFontCharCode: baseFontCharCode,
37195 accentFontCharCode: accentFontCharCode,
37196 accentOffset: accentOffset
37197 };
37198 }
37199 }
37200
37201 properties.seacMap = seacMap;
37202 }
37203
37204 var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
37205 var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F');
37206 builder.addTable('CFF ', font.data);
37207 builder.addTable('OS/2', createOS2Table(properties, newMapping.charCodeToGlyphId));
37208 builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, numGlyphs));
37209 builder.addTable('head', '\x00\x01\x00\x00' + '\x00\x00\x10\x00' + '\x00\x00\x00\x00' + '\x5F\x0F\x3C\xF5' + '\x00\x00' + safeString16(unitsPerEm) + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00' + safeString16(properties.descent) + '\x0F\xFF' + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + '\x00\x11' + '\x00\x00' + '\x00\x00' + '\x00\x00');
37210 builder.addTable('hhea', '\x00\x01\x00\x00' + safeString16(properties.ascent) + safeString16(properties.descent) + '\x00\x00' + '\xFF\xFF' + '\x00\x00' + '\x00\x00' + '\x00\x00' + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + string16(numGlyphs));
37211 builder.addTable('hmtx', function fontFieldsHmtx() {
37212 var charstrings = font.charstrings;
37213 var cffWidths = font.cff ? font.cff.widths : null;
37214 var hmtx = '\x00\x00\x00\x00';
37215
37216 for (var i = 1, ii = numGlyphs; i < ii; i++) {
37217 var width = 0;
37218
37219 if (charstrings) {
37220 var charstring = charstrings[i - 1];
37221 width = 'width' in charstring ? charstring.width : 0;
37222 } else if (cffWidths) {
37223 width = Math.ceil(cffWidths[i] || 0);
37224 }
37225
37226 hmtx += string16(width) + string16(0);
37227 }
37228
37229 return hmtx;
37230 }());
37231 builder.addTable('maxp', '\x00\x00\x50\x00' + string16(numGlyphs));
37232 builder.addTable('name', createNameTable(fontName));
37233 builder.addTable('post', createPostTable(properties));
37234 return builder.toArray();
37235 },
37236
37237 get spaceWidth() {
37238 if ('_shadowWidth' in this) {
37239 return this._shadowWidth;
37240 }
37241
37242 var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I'];
37243 var width;
37244
37245 for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
37246 var glyphName = possibleSpaceReplacements[i];
37247
37248 if (glyphName in this.widths) {
37249 width = this.widths[glyphName];
37250 break;
37251 }
37252
37253 var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
37254 var glyphUnicode = glyphsUnicodeMap[glyphName];
37255 var charcode = 0;
37256
37257 if (this.composite) {
37258 if (this.cMap.contains(glyphUnicode)) {
37259 charcode = this.cMap.lookup(glyphUnicode);
37260 }
37261 }
37262
37263 if (!charcode && this.toUnicode) {
37264 charcode = this.toUnicode.charCodeOf(glyphUnicode);
37265 }
37266
37267 if (charcode <= 0) {
37268 charcode = glyphUnicode;
37269 }
37270
37271 width = this.widths[charcode];
37272
37273 if (width) {
37274 break;
37275 }
37276 }
37277
37278 width = width || this.defaultWidth;
37279 this._shadowWidth = width;
37280 return width;
37281 },
37282
37283 charToGlyph: function Font_charToGlyph(charcode, isSpace) {
37284 var fontCharCode, width, operatorListId;
37285 var widthCode = charcode;
37286
37287 if (this.cMap && this.cMap.contains(charcode)) {
37288 widthCode = this.cMap.lookup(charcode);
37289 }
37290
37291 width = this.widths[widthCode];
37292 width = (0, _util.isNum)(width) ? width : this.defaultWidth;
37293 var vmetric = this.vmetrics && this.vmetrics[widthCode];
37294 var unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;
37295
37296 if (typeof unicode === 'number') {
37297 unicode = String.fromCharCode(unicode);
37298 }
37299
37300 var isInFont = charcode in this.toFontChar;
37301 fontCharCode = this.toFontChar[charcode] || charcode;
37302
37303 if (this.missingFile) {
37304 fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);
37305 }
37306
37307 if (this.isType3Font) {
37308 operatorListId = fontCharCode;
37309 }
37310
37311 var accent = null;
37312
37313 if (this.seacMap && this.seacMap[charcode]) {
37314 isInFont = true;
37315 var seac = this.seacMap[charcode];
37316 fontCharCode = seac.baseFontCharCode;
37317 accent = {
37318 fontChar: String.fromCodePoint(seac.accentFontCharCode),
37319 offset: seac.accentOffset
37320 };
37321 }
37322
37323 var fontChar = typeof fontCharCode === 'number' ? String.fromCodePoint(fontCharCode) : '';
37324 var glyph = this.glyphCache[charcode];
37325
37326 if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {
37327 glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);
37328 this.glyphCache[charcode] = glyph;
37329 }
37330
37331 return glyph;
37332 },
37333 charsToGlyphs: function Font_charsToGlyphs(chars) {
37334 var charsCache = this.charsCache;
37335 var glyphs, glyph, charcode;
37336
37337 if (charsCache) {
37338 glyphs = charsCache[chars];
37339
37340 if (glyphs) {
37341 return glyphs;
37342 }
37343 }
37344
37345 if (!charsCache) {
37346 charsCache = this.charsCache = Object.create(null);
37347 }
37348
37349 glyphs = [];
37350 var charsCacheKey = chars;
37351 var i = 0,
37352 ii;
37353
37354 if (this.cMap) {
37355 var c = Object.create(null);
37356
37357 while (i < chars.length) {
37358 this.cMap.readCharCode(chars, i, c);
37359 charcode = c.charcode;
37360 var length = c.length;
37361 i += length;
37362 var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;
37363 glyph = this.charToGlyph(charcode, isSpace);
37364 glyphs.push(glyph);
37365 }
37366 } else {
37367 for (i = 0, ii = chars.length; i < ii; ++i) {
37368 charcode = chars.charCodeAt(i);
37369 glyph = this.charToGlyph(charcode, charcode === 0x20);
37370 glyphs.push(glyph);
37371 }
37372 }
37373
37374 return charsCache[charsCacheKey] = glyphs;
37375 },
37376
37377 get glyphCacheValues() {
37378 return Object.values(this.glyphCache);
37379 }
37380
37381 };
37382 return Font;
37383}();
37384
37385exports.Font = Font;
37386
37387var ErrorFont = function ErrorFontClosure() {
37388 function ErrorFont(error) {
37389 this.error = error;
37390 this.loadedName = 'g_font_error';
37391 this.missingFile = true;
37392 }
37393
37394 ErrorFont.prototype = {
37395 charsToGlyphs: function ErrorFont_charsToGlyphs() {
37396 return [];
37397 },
37398 exportData: function ErrorFont_exportData() {
37399 return {
37400 error: this.error
37401 };
37402 }
37403 };
37404 return ErrorFont;
37405}();
37406
37407exports.ErrorFont = ErrorFont;
37408
37409function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
37410 var charCodeToGlyphId = Object.create(null);
37411 var glyphId, charCode, baseEncoding;
37412 var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
37413
37414 if (properties.baseEncodingName) {
37415 baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
37416
37417 for (charCode = 0; charCode < baseEncoding.length; charCode++) {
37418 glyphId = glyphNames.indexOf(baseEncoding[charCode]);
37419
37420 if (glyphId >= 0) {
37421 charCodeToGlyphId[charCode] = glyphId;
37422 } else {
37423 charCodeToGlyphId[charCode] = 0;
37424 }
37425 }
37426 } else if (isSymbolicFont) {
37427 for (charCode in builtInEncoding) {
37428 charCodeToGlyphId[charCode] = builtInEncoding[charCode];
37429 }
37430 } else {
37431 baseEncoding = _encodings.StandardEncoding;
37432
37433 for (charCode = 0; charCode < baseEncoding.length; charCode++) {
37434 glyphId = glyphNames.indexOf(baseEncoding[charCode]);
37435
37436 if (glyphId >= 0) {
37437 charCodeToGlyphId[charCode] = glyphId;
37438 } else {
37439 charCodeToGlyphId[charCode] = 0;
37440 }
37441 }
37442 }
37443
37444 var differences = properties.differences,
37445 glyphsUnicodeMap;
37446
37447 if (differences) {
37448 for (charCode in differences) {
37449 var glyphName = differences[charCode];
37450 glyphId = glyphNames.indexOf(glyphName);
37451
37452 if (glyphId === -1) {
37453 if (!glyphsUnicodeMap) {
37454 glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
37455 }
37456
37457 var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
37458
37459 if (standardGlyphName !== glyphName) {
37460 glyphId = glyphNames.indexOf(standardGlyphName);
37461 }
37462 }
37463
37464 if (glyphId >= 0) {
37465 charCodeToGlyphId[charCode] = glyphId;
37466 } else {
37467 charCodeToGlyphId[charCode] = 0;
37468 }
37469 }
37470 }
37471
37472 return charCodeToGlyphId;
37473}
37474
37475var Type1Font = function Type1FontClosure() {
37476 function findBlock(streamBytes, signature, startIndex) {
37477 var streamBytesLength = streamBytes.length;
37478 var signatureLength = signature.length;
37479 var scanLength = streamBytesLength - signatureLength;
37480 var i = startIndex,
37481 j,
37482 found = false;
37483
37484 while (i < scanLength) {
37485 j = 0;
37486
37487 while (j < signatureLength && streamBytes[i + j] === signature[j]) {
37488 j++;
37489 }
37490
37491 if (j >= signatureLength) {
37492 i += j;
37493
37494 while (i < streamBytesLength && (0, _util.isSpace)(streamBytes[i])) {
37495 i++;
37496 }
37497
37498 found = true;
37499 break;
37500 }
37501
37502 i++;
37503 }
37504
37505 return {
37506 found: found,
37507 length: i
37508 };
37509 }
37510
37511 function getHeaderBlock(stream, suggestedLength) {
37512 var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];
37513 var streamStartPos = stream.pos;
37514 var headerBytes, headerBytesLength, block;
37515
37516 try {
37517 headerBytes = stream.getBytes(suggestedLength);
37518 headerBytesLength = headerBytes.length;
37519 } catch (ex) {
37520 if (ex instanceof _core_utils.MissingDataException) {
37521 throw ex;
37522 }
37523 }
37524
37525 if (headerBytesLength === suggestedLength) {
37526 block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);
37527
37528 if (block.found && block.length === suggestedLength) {
37529 return {
37530 stream: new _stream.Stream(headerBytes),
37531 length: suggestedLength
37532 };
37533 }
37534 }
37535
37536 (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.');
37537 stream.pos = streamStartPos;
37538 var SCAN_BLOCK_LENGTH = 2048;
37539 var actualLength;
37540
37541 while (true) {
37542 var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
37543 block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);
37544
37545 if (block.length === 0) {
37546 break;
37547 }
37548
37549 stream.pos += block.length;
37550
37551 if (block.found) {
37552 actualLength = stream.pos - streamStartPos;
37553 break;
37554 }
37555 }
37556
37557 stream.pos = streamStartPos;
37558
37559 if (actualLength) {
37560 return {
37561 stream: new _stream.Stream(stream.getBytes(actualLength)),
37562 length: actualLength
37563 };
37564 }
37565
37566 (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.');
37567 return {
37568 stream: new _stream.Stream(stream.getBytes(suggestedLength)),
37569 length: suggestedLength
37570 };
37571 }
37572
37573 function getEexecBlock(stream, suggestedLength) {
37574 var eexecBytes = stream.getBytes();
37575 return {
37576 stream: new _stream.Stream(eexecBytes),
37577 length: eexecBytes.length
37578 };
37579 }
37580
37581 function Type1Font(name, file, properties) {
37582 var PFB_HEADER_SIZE = 6;
37583 var headerBlockLength = properties.length1;
37584 var eexecBlockLength = properties.length2;
37585 var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);
37586 var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;
37587
37588 if (pfbHeaderPresent) {
37589 file.skip(PFB_HEADER_SIZE);
37590 headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];
37591 }
37592
37593 var headerBlock = getHeaderBlock(file, headerBlockLength);
37594 var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);
37595 headerBlockParser.extractFontHeader(properties);
37596
37597 if (pfbHeaderPresent) {
37598 pfbHeader = file.getBytes(PFB_HEADER_SIZE);
37599 eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];
37600 }
37601
37602 var eexecBlock = getEexecBlock(file, eexecBlockLength);
37603 var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);
37604 var data = eexecBlockParser.extractFontProgram();
37605
37606 for (var info in data.properties) {
37607 properties[info] = data.properties[info];
37608 }
37609
37610 var charstrings = data.charstrings;
37611 var type2Charstrings = this.getType2Charstrings(charstrings);
37612 var subrs = this.getType2Subrs(data.subrs);
37613 this.charstrings = charstrings;
37614 this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);
37615 this.seacs = this.getSeacs(data.charstrings);
37616 }
37617
37618 Type1Font.prototype = {
37619 get numGlyphs() {
37620 return this.charstrings.length + 1;
37621 },
37622
37623 getCharset: function Type1Font_getCharset() {
37624 var charset = ['.notdef'];
37625 var charstrings = this.charstrings;
37626
37627 for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {
37628 charset.push(charstrings[glyphId].glyphName);
37629 }
37630
37631 return charset;
37632 },
37633 getGlyphMapping: function Type1Font_getGlyphMapping(properties) {
37634 var charstrings = this.charstrings;
37635 var glyphNames = ['.notdef'],
37636 glyphId;
37637
37638 for (glyphId = 0; glyphId < charstrings.length; glyphId++) {
37639 glyphNames.push(charstrings[glyphId].glyphName);
37640 }
37641
37642 var encoding = properties.builtInEncoding;
37643
37644 if (encoding) {
37645 var builtInEncoding = Object.create(null);
37646
37647 for (var charCode in encoding) {
37648 glyphId = glyphNames.indexOf(encoding[charCode]);
37649
37650 if (glyphId >= 0) {
37651 builtInEncoding[charCode] = glyphId;
37652 }
37653 }
37654 }
37655
37656 return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);
37657 },
37658 hasGlyphId: function Type1Font_hasGlyphID(id) {
37659 if (id < 0 || id >= this.numGlyphs) {
37660 return false;
37661 }
37662
37663 if (id === 0) {
37664 return true;
37665 }
37666
37667 var glyph = this.charstrings[id - 1];
37668 return glyph.charstring.length > 0;
37669 },
37670 getSeacs: function Type1Font_getSeacs(charstrings) {
37671 var i, ii;
37672 var seacMap = [];
37673
37674 for (i = 0, ii = charstrings.length; i < ii; i++) {
37675 var charstring = charstrings[i];
37676
37677 if (charstring.seac) {
37678 seacMap[i + 1] = charstring.seac;
37679 }
37680 }
37681
37682 return seacMap;
37683 },
37684 getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) {
37685 var type2Charstrings = [];
37686
37687 for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {
37688 type2Charstrings.push(type1Charstrings[i].charstring);
37689 }
37690
37691 return type2Charstrings;
37692 },
37693 getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
37694 var bias = 0;
37695 var count = type1Subrs.length;
37696
37697 if (count < 1133) {
37698 bias = 107;
37699 } else if (count < 33769) {
37700 bias = 1131;
37701 } else {
37702 bias = 32768;
37703 }
37704
37705 var type2Subrs = [];
37706 var i;
37707
37708 for (i = 0; i < bias; i++) {
37709 type2Subrs.push([0x0B]);
37710 }
37711
37712 for (i = 0; i < count; i++) {
37713 type2Subrs.push(type1Subrs[i]);
37714 }
37715
37716 return type2Subrs;
37717 },
37718 wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {
37719 var cff = new _cff_parser.CFF();
37720 cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);
37721 cff.names = [name];
37722 var topDict = new _cff_parser.CFFTopDict();
37723 topDict.setByName('version', 391);
37724 topDict.setByName('Notice', 392);
37725 topDict.setByName('FullName', 393);
37726 topDict.setByName('FamilyName', 394);
37727 topDict.setByName('Weight', 395);
37728 topDict.setByName('Encoding', null);
37729 topDict.setByName('FontMatrix', properties.fontMatrix);
37730 topDict.setByName('FontBBox', properties.bbox);
37731 topDict.setByName('charset', null);
37732 topDict.setByName('CharStrings', null);
37733 topDict.setByName('Private', null);
37734 cff.topDict = topDict;
37735 var strings = new _cff_parser.CFFStrings();
37736 strings.add('Version 0.11');
37737 strings.add('See original notice');
37738 strings.add(name);
37739 strings.add(name);
37740 strings.add('Medium');
37741 cff.strings = strings;
37742 cff.globalSubrIndex = new _cff_parser.CFFIndex();
37743 var count = glyphs.length;
37744 var charsetArray = ['.notdef'];
37745 var i, ii;
37746
37747 for (i = 0; i < count; i++) {
37748 var glyphName = charstrings[i].glyphName;
37749
37750 var index = _cff_parser.CFFStandardStrings.indexOf(glyphName);
37751
37752 if (index === -1) {
37753 strings.add(glyphName);
37754 }
37755
37756 charsetArray.push(glyphName);
37757 }
37758
37759 cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray);
37760 var charStringsIndex = new _cff_parser.CFFIndex();
37761 charStringsIndex.add([0x8B, 0x0E]);
37762
37763 for (i = 0; i < count; i++) {
37764 charStringsIndex.add(glyphs[i]);
37765 }
37766
37767 cff.charStrings = charStringsIndex;
37768 var privateDict = new _cff_parser.CFFPrivateDict();
37769 privateDict.setByName('Subrs', null);
37770 var fields = ['BlueValues', 'OtherBlues', 'FamilyBlues', 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV', 'BlueShift', 'BlueFuzz', 'BlueScale', 'LanguageGroup', 'ExpansionFactor', 'ForceBold', 'StdHW', 'StdVW'];
37771
37772 for (i = 0, ii = fields.length; i < ii; i++) {
37773 var field = fields[i];
37774
37775 if (!(field in properties.privateData)) {
37776 continue;
37777 }
37778
37779 var value = properties.privateData[field];
37780
37781 if (Array.isArray(value)) {
37782 for (var j = value.length - 1; j > 0; j--) {
37783 value[j] -= value[j - 1];
37784 }
37785 }
37786
37787 privateDict.setByName(field, value);
37788 }
37789
37790 cff.topDict.privateDict = privateDict;
37791 var subrIndex = new _cff_parser.CFFIndex();
37792
37793 for (i = 0, ii = subrs.length; i < ii; i++) {
37794 subrIndex.add(subrs[i]);
37795 }
37796
37797 privateDict.subrsIndex = subrIndex;
37798 var compiler = new _cff_parser.CFFCompiler(cff);
37799 return compiler.compile();
37800 }
37801 };
37802 return Type1Font;
37803}();
37804
37805var CFFFont = function CFFFontClosure() {
37806 function CFFFont(file, properties) {
37807 this.properties = properties;
37808 var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);
37809 this.cff = parser.parse();
37810 this.cff.duplicateFirstGlyph();
37811 var compiler = new _cff_parser.CFFCompiler(this.cff);
37812 this.seacs = this.cff.seacs;
37813
37814 try {
37815 this.data = compiler.compile();
37816 } catch (e) {
37817 (0, _util.warn)('Failed to compile font ' + properties.loadedName);
37818 this.data = file;
37819 }
37820 }
37821
37822 CFFFont.prototype = {
37823 get numGlyphs() {
37824 return this.cff.charStrings.count;
37825 },
37826
37827 getCharset: function CFFFont_getCharset() {
37828 return this.cff.charset.charset;
37829 },
37830 getGlyphMapping: function CFFFont_getGlyphMapping() {
37831 var cff = this.cff;
37832 var properties = this.properties;
37833 var charsets = cff.charset.charset;
37834 var charCodeToGlyphId;
37835 var glyphId;
37836
37837 if (properties.composite) {
37838 charCodeToGlyphId = Object.create(null);
37839 var charCode;
37840
37841 if (cff.isCIDFont) {
37842 for (glyphId = 0; glyphId < charsets.length; glyphId++) {
37843 var cid = charsets[glyphId];
37844 charCode = properties.cMap.charCodeOf(cid);
37845 charCodeToGlyphId[charCode] = glyphId;
37846 }
37847 } else {
37848 for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {
37849 charCode = properties.cMap.charCodeOf(glyphId);
37850 charCodeToGlyphId[charCode] = glyphId;
37851 }
37852 }
37853
37854 return charCodeToGlyphId;
37855 }
37856
37857 var encoding = cff.encoding ? cff.encoding.encoding : null;
37858 charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);
37859 return charCodeToGlyphId;
37860 },
37861 hasGlyphId: function CFFFont_hasGlyphID(id) {
37862 return this.cff.hasGlyphId(id);
37863 }
37864 };
37865 return CFFFont;
37866}();
37867
37868/***/ }),
37869/* 175 */
37870/***/ (function(module, exports, __w_pdfjs_require__) {
37871
37872"use strict";
37873
37874
37875Object.defineProperty(exports, "__esModule", {
37876 value: true
37877});
37878exports.CFFFDSelect = exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = void 0;
37879
37880var _util = __w_pdfjs_require__(5);
37881
37882var _charsets = __w_pdfjs_require__(176);
37883
37884var _encodings = __w_pdfjs_require__(177);
37885
37886var MAX_SUBR_NESTING = 10;
37887var CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'];
37888exports.CFFStandardStrings = CFFStandardStrings;
37889var NUM_STANDARD_CFF_STRINGS = 391;
37890
37891var CFFParser = function CFFParserClosure() {
37892 var CharstringValidationData = [null, {
37893 id: 'hstem',
37894 min: 2,
37895 stackClearing: true,
37896 stem: true
37897 }, null, {
37898 id: 'vstem',
37899 min: 2,
37900 stackClearing: true,
37901 stem: true
37902 }, {
37903 id: 'vmoveto',
37904 min: 1,
37905 stackClearing: true
37906 }, {
37907 id: 'rlineto',
37908 min: 2,
37909 resetStack: true
37910 }, {
37911 id: 'hlineto',
37912 min: 1,
37913 resetStack: true
37914 }, {
37915 id: 'vlineto',
37916 min: 1,
37917 resetStack: true
37918 }, {
37919 id: 'rrcurveto',
37920 min: 6,
37921 resetStack: true
37922 }, null, {
37923 id: 'callsubr',
37924 min: 1,
37925 undefStack: true
37926 }, {
37927 id: 'return',
37928 min: 0,
37929 undefStack: true
37930 }, null, null, {
37931 id: 'endchar',
37932 min: 0,
37933 stackClearing: true
37934 }, null, null, null, {
37935 id: 'hstemhm',
37936 min: 2,
37937 stackClearing: true,
37938 stem: true
37939 }, {
37940 id: 'hintmask',
37941 min: 0,
37942 stackClearing: true
37943 }, {
37944 id: 'cntrmask',
37945 min: 0,
37946 stackClearing: true
37947 }, {
37948 id: 'rmoveto',
37949 min: 2,
37950 stackClearing: true
37951 }, {
37952 id: 'hmoveto',
37953 min: 1,
37954 stackClearing: true
37955 }, {
37956 id: 'vstemhm',
37957 min: 2,
37958 stackClearing: true,
37959 stem: true
37960 }, {
37961 id: 'rcurveline',
37962 min: 8,
37963 resetStack: true
37964 }, {
37965 id: 'rlinecurve',
37966 min: 8,
37967 resetStack: true
37968 }, {
37969 id: 'vvcurveto',
37970 min: 4,
37971 resetStack: true
37972 }, {
37973 id: 'hhcurveto',
37974 min: 4,
37975 resetStack: true
37976 }, null, {
37977 id: 'callgsubr',
37978 min: 1,
37979 undefStack: true
37980 }, {
37981 id: 'vhcurveto',
37982 min: 4,
37983 resetStack: true
37984 }, {
37985 id: 'hvcurveto',
37986 min: 4,
37987 resetStack: true
37988 }];
37989 var CharstringValidationData12 = [null, null, null, {
37990 id: 'and',
37991 min: 2,
37992 stackDelta: -1
37993 }, {
37994 id: 'or',
37995 min: 2,
37996 stackDelta: -1
37997 }, {
37998 id: 'not',
37999 min: 1,
38000 stackDelta: 0
38001 }, null, null, null, {
38002 id: 'abs',
38003 min: 1,
38004 stackDelta: 0
38005 }, {
38006 id: 'add',
38007 min: 2,
38008 stackDelta: -1,
38009 stackFn: function stack_div(stack, index) {
38010 stack[index - 2] = stack[index - 2] + stack[index - 1];
38011 }
38012 }, {
38013 id: 'sub',
38014 min: 2,
38015 stackDelta: -1,
38016 stackFn: function stack_div(stack, index) {
38017 stack[index - 2] = stack[index - 2] - stack[index - 1];
38018 }
38019 }, {
38020 id: 'div',
38021 min: 2,
38022 stackDelta: -1,
38023 stackFn: function stack_div(stack, index) {
38024 stack[index - 2] = stack[index - 2] / stack[index - 1];
38025 }
38026 }, null, {
38027 id: 'neg',
38028 min: 1,
38029 stackDelta: 0,
38030 stackFn: function stack_div(stack, index) {
38031 stack[index - 1] = -stack[index - 1];
38032 }
38033 }, {
38034 id: 'eq',
38035 min: 2,
38036 stackDelta: -1
38037 }, null, null, {
38038 id: 'drop',
38039 min: 1,
38040 stackDelta: -1
38041 }, null, {
38042 id: 'put',
38043 min: 2,
38044 stackDelta: -2
38045 }, {
38046 id: 'get',
38047 min: 1,
38048 stackDelta: 0
38049 }, {
38050 id: 'ifelse',
38051 min: 4,
38052 stackDelta: -3
38053 }, {
38054 id: 'random',
38055 min: 0,
38056 stackDelta: 1
38057 }, {
38058 id: 'mul',
38059 min: 2,
38060 stackDelta: -1,
38061 stackFn: function stack_div(stack, index) {
38062 stack[index - 2] = stack[index - 2] * stack[index - 1];
38063 }
38064 }, null, {
38065 id: 'sqrt',
38066 min: 1,
38067 stackDelta: 0
38068 }, {
38069 id: 'dup',
38070 min: 1,
38071 stackDelta: 1
38072 }, {
38073 id: 'exch',
38074 min: 2,
38075 stackDelta: 0
38076 }, {
38077 id: 'index',
38078 min: 2,
38079 stackDelta: 0
38080 }, {
38081 id: 'roll',
38082 min: 3,
38083 stackDelta: -2
38084 }, null, null, null, {
38085 id: 'hflex',
38086 min: 7,
38087 resetStack: true
38088 }, {
38089 id: 'flex',
38090 min: 13,
38091 resetStack: true
38092 }, {
38093 id: 'hflex1',
38094 min: 9,
38095 resetStack: true
38096 }, {
38097 id: 'flex1',
38098 min: 11,
38099 resetStack: true
38100 }];
38101
38102 function CFFParser(file, properties, seacAnalysisEnabled) {
38103 this.bytes = file.getBytes();
38104 this.properties = properties;
38105 this.seacAnalysisEnabled = !!seacAnalysisEnabled;
38106 }
38107
38108 CFFParser.prototype = {
38109 parse: function CFFParser_parse() {
38110 var properties = this.properties;
38111 var cff = new CFF();
38112 this.cff = cff;
38113 var header = this.parseHeader();
38114 var nameIndex = this.parseIndex(header.endPos);
38115 var topDictIndex = this.parseIndex(nameIndex.endPos);
38116 var stringIndex = this.parseIndex(topDictIndex.endPos);
38117 var globalSubrIndex = this.parseIndex(stringIndex.endPos);
38118 var topDictParsed = this.parseDict(topDictIndex.obj.get(0));
38119 var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
38120 cff.header = header.obj;
38121 cff.names = this.parseNameIndex(nameIndex.obj);
38122 cff.strings = this.parseStringIndex(stringIndex.obj);
38123 cff.topDict = topDict;
38124 cff.globalSubrIndex = globalSubrIndex.obj;
38125 this.parsePrivateDict(cff.topDict);
38126 cff.isCIDFont = topDict.hasName('ROS');
38127 var charStringOffset = topDict.getByName('CharStrings');
38128 var charStringIndex = this.parseIndex(charStringOffset).obj;
38129 var fontMatrix = topDict.getByName('FontMatrix');
38130
38131 if (fontMatrix) {
38132 properties.fontMatrix = fontMatrix;
38133 }
38134
38135 var fontBBox = topDict.getByName('FontBBox');
38136
38137 if (fontBBox) {
38138 properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
38139 properties.descent = Math.min(fontBBox[1], fontBBox[3]);
38140 properties.ascentScaled = true;
38141 }
38142
38143 var charset, encoding;
38144
38145 if (cff.isCIDFont) {
38146 var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;
38147
38148 for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
38149 var dictRaw = fdArrayIndex.get(i);
38150 var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);
38151 this.parsePrivateDict(fontDict);
38152 cff.fdArray.push(fontDict);
38153 }
38154
38155 encoding = null;
38156 charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, true);
38157 cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), charStringIndex.count);
38158 } else {
38159 charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, false);
38160 encoding = this.parseEncoding(topDict.getByName('Encoding'), properties, cff.strings, charset.charset);
38161 }
38162
38163 cff.charset = charset;
38164 cff.encoding = encoding;
38165 var charStringsAndSeacs = this.parseCharStrings({
38166 charStrings: charStringIndex,
38167 localSubrIndex: topDict.privateDict.subrsIndex,
38168 globalSubrIndex: globalSubrIndex.obj,
38169 fdSelect: cff.fdSelect,
38170 fdArray: cff.fdArray,
38171 privateDict: topDict.privateDict
38172 });
38173 cff.charStrings = charStringsAndSeacs.charStrings;
38174 cff.seacs = charStringsAndSeacs.seacs;
38175 cff.widths = charStringsAndSeacs.widths;
38176 return cff;
38177 },
38178 parseHeader: function CFFParser_parseHeader() {
38179 var bytes = this.bytes;
38180 var bytesLength = bytes.length;
38181 var offset = 0;
38182
38183 while (offset < bytesLength && bytes[offset] !== 1) {
38184 ++offset;
38185 }
38186
38187 if (offset >= bytesLength) {
38188 throw new _util.FormatError('Invalid CFF header');
38189 }
38190
38191 if (offset !== 0) {
38192 (0, _util.info)('cff data is shifted');
38193 bytes = bytes.subarray(offset);
38194 this.bytes = bytes;
38195 }
38196
38197 var major = bytes[0];
38198 var minor = bytes[1];
38199 var hdrSize = bytes[2];
38200 var offSize = bytes[3];
38201 var header = new CFFHeader(major, minor, hdrSize, offSize);
38202 return {
38203 obj: header,
38204 endPos: hdrSize
38205 };
38206 },
38207 parseDict: function CFFParser_parseDict(dict) {
38208 var pos = 0;
38209
38210 function parseOperand() {
38211 var value = dict[pos++];
38212
38213 if (value === 30) {
38214 return parseFloatOperand();
38215 } else if (value === 28) {
38216 value = dict[pos++];
38217 value = (value << 24 | dict[pos++] << 16) >> 16;
38218 return value;
38219 } else if (value === 29) {
38220 value = dict[pos++];
38221 value = value << 8 | dict[pos++];
38222 value = value << 8 | dict[pos++];
38223 value = value << 8 | dict[pos++];
38224 return value;
38225 } else if (value >= 32 && value <= 246) {
38226 return value - 139;
38227 } else if (value >= 247 && value <= 250) {
38228 return (value - 247) * 256 + dict[pos++] + 108;
38229 } else if (value >= 251 && value <= 254) {
38230 return -((value - 251) * 256) - dict[pos++] - 108;
38231 }
38232
38233 (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.');
38234 return NaN;
38235 }
38236
38237 function parseFloatOperand() {
38238 var str = '';
38239 var eof = 15;
38240 var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-'];
38241 var length = dict.length;
38242
38243 while (pos < length) {
38244 var b = dict[pos++];
38245 var b1 = b >> 4;
38246 var b2 = b & 15;
38247
38248 if (b1 === eof) {
38249 break;
38250 }
38251
38252 str += lookup[b1];
38253
38254 if (b2 === eof) {
38255 break;
38256 }
38257
38258 str += lookup[b2];
38259 }
38260
38261 return parseFloat(str);
38262 }
38263
38264 var operands = [];
38265 var entries = [];
38266 pos = 0;
38267 var end = dict.length;
38268
38269 while (pos < end) {
38270 var b = dict[pos];
38271
38272 if (b <= 21) {
38273 if (b === 12) {
38274 b = b << 8 | dict[++pos];
38275 }
38276
38277 entries.push([b, operands]);
38278 operands = [];
38279 ++pos;
38280 } else {
38281 operands.push(parseOperand());
38282 }
38283 }
38284
38285 return entries;
38286 },
38287 parseIndex: function CFFParser_parseIndex(pos) {
38288 var cffIndex = new CFFIndex();
38289 var bytes = this.bytes;
38290 var count = bytes[pos++] << 8 | bytes[pos++];
38291 var offsets = [];
38292 var end = pos;
38293 var i, ii;
38294
38295 if (count !== 0) {
38296 var offsetSize = bytes[pos++];
38297 var startPos = pos + (count + 1) * offsetSize - 1;
38298
38299 for (i = 0, ii = count + 1; i < ii; ++i) {
38300 var offset = 0;
38301
38302 for (var j = 0; j < offsetSize; ++j) {
38303 offset <<= 8;
38304 offset += bytes[pos++];
38305 }
38306
38307 offsets.push(startPos + offset);
38308 }
38309
38310 end = offsets[count];
38311 }
38312
38313 for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
38314 var offsetStart = offsets[i];
38315 var offsetEnd = offsets[i + 1];
38316 cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
38317 }
38318
38319 return {
38320 obj: cffIndex,
38321 endPos: end
38322 };
38323 },
38324 parseNameIndex: function CFFParser_parseNameIndex(index) {
38325 var names = [];
38326
38327 for (var i = 0, ii = index.count; i < ii; ++i) {
38328 var name = index.get(i);
38329 names.push((0, _util.bytesToString)(name));
38330 }
38331
38332 return names;
38333 },
38334 parseStringIndex: function CFFParser_parseStringIndex(index) {
38335 var strings = new CFFStrings();
38336
38337 for (var i = 0, ii = index.count; i < ii; ++i) {
38338 var data = index.get(i);
38339 strings.add((0, _util.bytesToString)(data));
38340 }
38341
38342 return strings;
38343 },
38344 createDict: function CFFParser_createDict(Type, dict, strings) {
38345 var cffDict = new Type(strings);
38346
38347 for (var i = 0, ii = dict.length; i < ii; ++i) {
38348 var pair = dict[i];
38349 var key = pair[0];
38350 var value = pair[1];
38351 cffDict.setByKey(key, value);
38352 }
38353
38354 return cffDict;
38355 },
38356 parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) {
38357 if (!data || state.callDepth > MAX_SUBR_NESTING) {
38358 return false;
38359 }
38360
38361 var stackSize = state.stackSize;
38362 var stack = state.stack;
38363 var length = data.length;
38364
38365 for (var j = 0; j < length;) {
38366 var value = data[j++];
38367 var validationCommand = null;
38368
38369 if (value === 12) {
38370 var q = data[j++];
38371
38372 if (q === 0) {
38373 data[j - 2] = 139;
38374 data[j - 1] = 22;
38375 stackSize = 0;
38376 } else {
38377 validationCommand = CharstringValidationData12[q];
38378 }
38379 } else if (value === 28) {
38380 stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;
38381 j += 2;
38382 stackSize++;
38383 } else if (value === 14) {
38384 if (stackSize >= 4) {
38385 stackSize -= 4;
38386
38387 if (this.seacAnalysisEnabled) {
38388 state.seac = stack.slice(stackSize, stackSize + 4);
38389 return false;
38390 }
38391 }
38392
38393 validationCommand = CharstringValidationData[value];
38394 } else if (value >= 32 && value <= 246) {
38395 stack[stackSize] = value - 139;
38396 stackSize++;
38397 } else if (value >= 247 && value <= 254) {
38398 stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;
38399 j++;
38400 stackSize++;
38401 } else if (value === 255) {
38402 stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;
38403 j += 4;
38404 stackSize++;
38405 } else if (value === 19 || value === 20) {
38406 state.hints += stackSize >> 1;
38407 j += state.hints + 7 >> 3;
38408 stackSize %= 2;
38409 validationCommand = CharstringValidationData[value];
38410 } else if (value === 10 || value === 29) {
38411 var subrsIndex;
38412
38413 if (value === 10) {
38414 subrsIndex = localSubrIndex;
38415 } else {
38416 subrsIndex = globalSubrIndex;
38417 }
38418
38419 if (!subrsIndex) {
38420 validationCommand = CharstringValidationData[value];
38421 (0, _util.warn)('Missing subrsIndex for ' + validationCommand.id);
38422 return false;
38423 }
38424
38425 var bias = 32768;
38426
38427 if (subrsIndex.count < 1240) {
38428 bias = 107;
38429 } else if (subrsIndex.count < 33900) {
38430 bias = 1131;
38431 }
38432
38433 var subrNumber = stack[--stackSize] + bias;
38434
38435 if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {
38436 validationCommand = CharstringValidationData[value];
38437 (0, _util.warn)('Out of bounds subrIndex for ' + validationCommand.id);
38438 return false;
38439 }
38440
38441 state.stackSize = stackSize;
38442 state.callDepth++;
38443 var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);
38444
38445 if (!valid) {
38446 return false;
38447 }
38448
38449 state.callDepth--;
38450 stackSize = state.stackSize;
38451 continue;
38452 } else if (value === 11) {
38453 state.stackSize = stackSize;
38454 return true;
38455 } else {
38456 validationCommand = CharstringValidationData[value];
38457 }
38458
38459 if (validationCommand) {
38460 if (validationCommand.stem) {
38461 state.hints += stackSize >> 1;
38462
38463 if (value === 3 || value === 23) {
38464 state.hasVStems = true;
38465 } else if (state.hasVStems && (value === 1 || value === 18)) {
38466 (0, _util.warn)('CFF stem hints are in wrong order');
38467 data[j - 1] = value === 1 ? 3 : 23;
38468 }
38469 }
38470
38471 if ('min' in validationCommand) {
38472 if (!state.undefStack && stackSize < validationCommand.min) {
38473 (0, _util.warn)('Not enough parameters for ' + validationCommand.id + '; actual: ' + stackSize + ', expected: ' + validationCommand.min);
38474 return false;
38475 }
38476 }
38477
38478 if (state.firstStackClearing && validationCommand.stackClearing) {
38479 state.firstStackClearing = false;
38480 stackSize -= validationCommand.min;
38481
38482 if (stackSize >= 2 && validationCommand.stem) {
38483 stackSize %= 2;
38484 } else if (stackSize > 1) {
38485 (0, _util.warn)('Found too many parameters for stack-clearing command');
38486 }
38487
38488 if (stackSize > 0 && stack[stackSize - 1] >= 0) {
38489 state.width = stack[stackSize - 1];
38490 }
38491 }
38492
38493 if ('stackDelta' in validationCommand) {
38494 if ('stackFn' in validationCommand) {
38495 validationCommand.stackFn(stack, stackSize);
38496 }
38497
38498 stackSize += validationCommand.stackDelta;
38499 } else if (validationCommand.stackClearing) {
38500 stackSize = 0;
38501 } else if (validationCommand.resetStack) {
38502 stackSize = 0;
38503 state.undefStack = false;
38504 } else if (validationCommand.undefStack) {
38505 stackSize = 0;
38506 state.undefStack = true;
38507 state.firstStackClearing = false;
38508 }
38509 }
38510 }
38511
38512 state.stackSize = stackSize;
38513 return true;
38514 },
38515 parseCharStrings: function parseCharStrings(_ref) {
38516 var charStrings = _ref.charStrings,
38517 localSubrIndex = _ref.localSubrIndex,
38518 globalSubrIndex = _ref.globalSubrIndex,
38519 fdSelect = _ref.fdSelect,
38520 fdArray = _ref.fdArray,
38521 privateDict = _ref.privateDict;
38522 var seacs = [];
38523 var widths = [];
38524 var count = charStrings.count;
38525
38526 for (var i = 0; i < count; i++) {
38527 var charstring = charStrings.get(i);
38528 var state = {
38529 callDepth: 0,
38530 stackSize: 0,
38531 stack: [],
38532 undefStack: true,
38533 hints: 0,
38534 firstStackClearing: true,
38535 seac: null,
38536 width: null,
38537 hasVStems: false
38538 };
38539 var valid = true;
38540 var localSubrToUse = null;
38541 var privateDictToUse = privateDict;
38542
38543 if (fdSelect && fdArray.length) {
38544 var fdIndex = fdSelect.getFDIndex(i);
38545
38546 if (fdIndex === -1) {
38547 (0, _util.warn)('Glyph index is not in fd select.');
38548 valid = false;
38549 }
38550
38551 if (fdIndex >= fdArray.length) {
38552 (0, _util.warn)('Invalid fd index for glyph index.');
38553 valid = false;
38554 }
38555
38556 if (valid) {
38557 privateDictToUse = fdArray[fdIndex].privateDict;
38558 localSubrToUse = privateDictToUse.subrsIndex;
38559 }
38560 } else if (localSubrIndex) {
38561 localSubrToUse = localSubrIndex;
38562 }
38563
38564 if (valid) {
38565 valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);
38566 }
38567
38568 if (state.width !== null) {
38569 var nominalWidth = privateDictToUse.getByName('nominalWidthX');
38570 widths[i] = nominalWidth + state.width;
38571 } else {
38572 var defaultWidth = privateDictToUse.getByName('defaultWidthX');
38573 widths[i] = defaultWidth;
38574 }
38575
38576 if (state.seac !== null) {
38577 seacs[i] = state.seac;
38578 }
38579
38580 if (!valid) {
38581 charStrings.set(i, new Uint8Array([14]));
38582 }
38583 }
38584
38585 return {
38586 charStrings: charStrings,
38587 seacs: seacs,
38588 widths: widths
38589 };
38590 },
38591 emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) {
38592 var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
38593 parentDict.setByKey(18, [0, 0]);
38594 parentDict.privateDict = privateDict;
38595 },
38596 parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {
38597 if (!parentDict.hasName('Private')) {
38598 this.emptyPrivateDictionary(parentDict);
38599 return;
38600 }
38601
38602 var privateOffset = parentDict.getByName('Private');
38603
38604 if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {
38605 parentDict.removeByName('Private');
38606 return;
38607 }
38608
38609 var size = privateOffset[0];
38610 var offset = privateOffset[1];
38611
38612 if (size === 0 || offset >= this.bytes.length) {
38613 this.emptyPrivateDictionary(parentDict);
38614 return;
38615 }
38616
38617 var privateDictEnd = offset + size;
38618 var dictData = this.bytes.subarray(offset, privateDictEnd);
38619 var dict = this.parseDict(dictData);
38620 var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);
38621 parentDict.privateDict = privateDict;
38622
38623 if (!privateDict.getByName('Subrs')) {
38624 return;
38625 }
38626
38627 var subrsOffset = privateDict.getByName('Subrs');
38628 var relativeOffset = offset + subrsOffset;
38629
38630 if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
38631 this.emptyPrivateDictionary(parentDict);
38632 return;
38633 }
38634
38635 var subrsIndex = this.parseIndex(relativeOffset);
38636 privateDict.subrsIndex = subrsIndex.obj;
38637 },
38638 parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {
38639 if (pos === 0) {
38640 return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);
38641 } else if (pos === 1) {
38642 return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);
38643 } else if (pos === 2) {
38644 return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);
38645 }
38646
38647 var bytes = this.bytes;
38648 var start = pos;
38649 var format = bytes[pos++];
38650 var charset = ['.notdef'];
38651 var id, count, i;
38652 length -= 1;
38653
38654 switch (format) {
38655 case 0:
38656 for (i = 0; i < length; i++) {
38657 id = bytes[pos++] << 8 | bytes[pos++];
38658 charset.push(cid ? id : strings.get(id));
38659 }
38660
38661 break;
38662
38663 case 1:
38664 while (charset.length <= length) {
38665 id = bytes[pos++] << 8 | bytes[pos++];
38666 count = bytes[pos++];
38667
38668 for (i = 0; i <= count; i++) {
38669 charset.push(cid ? id++ : strings.get(id++));
38670 }
38671 }
38672
38673 break;
38674
38675 case 2:
38676 while (charset.length <= length) {
38677 id = bytes[pos++] << 8 | bytes[pos++];
38678 count = bytes[pos++] << 8 | bytes[pos++];
38679
38680 for (i = 0; i <= count; i++) {
38681 charset.push(cid ? id++ : strings.get(id++));
38682 }
38683 }
38684
38685 break;
38686
38687 default:
38688 throw new _util.FormatError('Unknown charset format');
38689 }
38690
38691 var end = pos;
38692 var raw = bytes.subarray(start, end);
38693 return new CFFCharset(false, format, charset, raw);
38694 },
38695 parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) {
38696 var encoding = Object.create(null);
38697 var bytes = this.bytes;
38698 var predefined = false;
38699 var format, i, ii;
38700 var raw = null;
38701
38702 function readSupplement() {
38703 var supplementsCount = bytes[pos++];
38704
38705 for (i = 0; i < supplementsCount; i++) {
38706 var code = bytes[pos++];
38707 var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
38708 encoding[code] = charset.indexOf(strings.get(sid));
38709 }
38710 }
38711
38712 if (pos === 0 || pos === 1) {
38713 predefined = true;
38714 format = pos;
38715 var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
38716
38717 for (i = 0, ii = charset.length; i < ii; i++) {
38718 var index = baseEncoding.indexOf(charset[i]);
38719
38720 if (index !== -1) {
38721 encoding[index] = i;
38722 }
38723 }
38724 } else {
38725 var dataStart = pos;
38726 format = bytes[pos++];
38727
38728 switch (format & 0x7f) {
38729 case 0:
38730 var glyphsCount = bytes[pos++];
38731
38732 for (i = 1; i <= glyphsCount; i++) {
38733 encoding[bytes[pos++]] = i;
38734 }
38735
38736 break;
38737
38738 case 1:
38739 var rangesCount = bytes[pos++];
38740 var gid = 1;
38741
38742 for (i = 0; i < rangesCount; i++) {
38743 var start = bytes[pos++];
38744 var left = bytes[pos++];
38745
38746 for (var j = start; j <= start + left; j++) {
38747 encoding[j] = gid++;
38748 }
38749 }
38750
38751 break;
38752
38753 default:
38754 throw new _util.FormatError("Unknown encoding format: ".concat(format, " in CFF"));
38755 }
38756
38757 var dataEnd = pos;
38758
38759 if (format & 0x80) {
38760 bytes[dataStart] &= 0x7f;
38761 readSupplement();
38762 }
38763
38764 raw = bytes.subarray(dataStart, dataEnd);
38765 }
38766
38767 format = format & 0x7f;
38768 return new CFFEncoding(predefined, format, encoding, raw);
38769 },
38770 parseFDSelect: function CFFParser_parseFDSelect(pos, length) {
38771 var bytes = this.bytes;
38772 var format = bytes[pos++];
38773 var fdSelect = [];
38774 var i;
38775
38776 switch (format) {
38777 case 0:
38778 for (i = 0; i < length; ++i) {
38779 var id = bytes[pos++];
38780 fdSelect.push(id);
38781 }
38782
38783 break;
38784
38785 case 3:
38786 var rangesCount = bytes[pos++] << 8 | bytes[pos++];
38787
38788 for (i = 0; i < rangesCount; ++i) {
38789 var first = bytes[pos++] << 8 | bytes[pos++];
38790
38791 if (i === 0 && first !== 0) {
38792 (0, _util.warn)('parseFDSelect: The first range must have a first GID of 0' + ' -- trying to recover.');
38793 first = 0;
38794 }
38795
38796 var fdIndex = bytes[pos++];
38797 var next = bytes[pos] << 8 | bytes[pos + 1];
38798
38799 for (var j = first; j < next; ++j) {
38800 fdSelect.push(fdIndex);
38801 }
38802 }
38803
38804 pos += 2;
38805 break;
38806
38807 default:
38808 throw new _util.FormatError("parseFDSelect: Unknown format \"".concat(format, "\"."));
38809 }
38810
38811 if (fdSelect.length !== length) {
38812 throw new _util.FormatError('parseFDSelect: Invalid font data.');
38813 }
38814
38815 return new CFFFDSelect(format, fdSelect);
38816 }
38817 };
38818 return CFFParser;
38819}();
38820
38821exports.CFFParser = CFFParser;
38822
38823var CFF = function CFFClosure() {
38824 function CFF() {
38825 this.header = null;
38826 this.names = [];
38827 this.topDict = null;
38828 this.strings = new CFFStrings();
38829 this.globalSubrIndex = null;
38830 this.encoding = null;
38831 this.charset = null;
38832 this.charStrings = null;
38833 this.fdArray = [];
38834 this.fdSelect = null;
38835 this.isCIDFont = false;
38836 }
38837
38838 CFF.prototype = {
38839 duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {
38840 if (this.charStrings.count >= 65535) {
38841 (0, _util.warn)('Not enough space in charstrings to duplicate first glyph.');
38842 return;
38843 }
38844
38845 var glyphZero = this.charStrings.get(0);
38846 this.charStrings.add(glyphZero);
38847
38848 if (this.isCIDFont) {
38849 this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);
38850 }
38851 },
38852 hasGlyphId: function CFF_hasGlyphID(id) {
38853 if (id < 0 || id >= this.charStrings.count) {
38854 return false;
38855 }
38856
38857 var glyph = this.charStrings.get(id);
38858 return glyph.length > 0;
38859 }
38860 };
38861 return CFF;
38862}();
38863
38864exports.CFF = CFF;
38865
38866var CFFHeader = function CFFHeaderClosure() {
38867 function CFFHeader(major, minor, hdrSize, offSize) {
38868 this.major = major;
38869 this.minor = minor;
38870 this.hdrSize = hdrSize;
38871 this.offSize = offSize;
38872 }
38873
38874 return CFFHeader;
38875}();
38876
38877exports.CFFHeader = CFFHeader;
38878
38879var CFFStrings = function CFFStringsClosure() {
38880 function CFFStrings() {
38881 this.strings = [];
38882 }
38883
38884 CFFStrings.prototype = {
38885 get: function CFFStrings_get(index) {
38886 if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {
38887 return CFFStandardStrings[index];
38888 }
38889
38890 if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {
38891 return this.strings[index - NUM_STANDARD_CFF_STRINGS];
38892 }
38893
38894 return CFFStandardStrings[0];
38895 },
38896 getSID: function CFFStrings_getSID(str) {
38897 var index = CFFStandardStrings.indexOf(str);
38898
38899 if (index !== -1) {
38900 return index;
38901 }
38902
38903 index = this.strings.indexOf(str);
38904
38905 if (index !== -1) {
38906 return index + NUM_STANDARD_CFF_STRINGS;
38907 }
38908
38909 return -1;
38910 },
38911 add: function CFFStrings_add(value) {
38912 this.strings.push(value);
38913 },
38914
38915 get count() {
38916 return this.strings.length;
38917 }
38918
38919 };
38920 return CFFStrings;
38921}();
38922
38923exports.CFFStrings = CFFStrings;
38924
38925var CFFIndex = function CFFIndexClosure() {
38926 function CFFIndex() {
38927 this.objects = [];
38928 this.length = 0;
38929 }
38930
38931 CFFIndex.prototype = {
38932 add: function CFFIndex_add(data) {
38933 this.length += data.length;
38934 this.objects.push(data);
38935 },
38936 set: function CFFIndex_set(index, data) {
38937 this.length += data.length - this.objects[index].length;
38938 this.objects[index] = data;
38939 },
38940 get: function CFFIndex_get(index) {
38941 return this.objects[index];
38942 },
38943
38944 get count() {
38945 return this.objects.length;
38946 }
38947
38948 };
38949 return CFFIndex;
38950}();
38951
38952exports.CFFIndex = CFFIndex;
38953
38954var CFFDict = function CFFDictClosure() {
38955 function CFFDict(tables, strings) {
38956 this.keyToNameMap = tables.keyToNameMap;
38957 this.nameToKeyMap = tables.nameToKeyMap;
38958 this.defaults = tables.defaults;
38959 this.types = tables.types;
38960 this.opcodes = tables.opcodes;
38961 this.order = tables.order;
38962 this.strings = strings;
38963 this.values = Object.create(null);
38964 }
38965
38966 CFFDict.prototype = {
38967 setByKey: function CFFDict_setByKey(key, value) {
38968 if (!(key in this.keyToNameMap)) {
38969 return false;
38970 }
38971
38972 var valueLength = value.length;
38973
38974 if (valueLength === 0) {
38975 return true;
38976 }
38977
38978 for (var i = 0; i < valueLength; i++) {
38979 if (isNaN(value[i])) {
38980 (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".');
38981 return true;
38982 }
38983 }
38984
38985 var type = this.types[key];
38986
38987 if (type === 'num' || type === 'sid' || type === 'offset') {
38988 value = value[0];
38989 }
38990
38991 this.values[key] = value;
38992 return true;
38993 },
38994 setByName: function CFFDict_setByName(name, value) {
38995 if (!(name in this.nameToKeyMap)) {
38996 throw new _util.FormatError("Invalid dictionary name \"".concat(name, "\""));
38997 }
38998
38999 this.values[this.nameToKeyMap[name]] = value;
39000 },
39001 hasName: function CFFDict_hasName(name) {
39002 return this.nameToKeyMap[name] in this.values;
39003 },
39004 getByName: function CFFDict_getByName(name) {
39005 if (!(name in this.nameToKeyMap)) {
39006 throw new _util.FormatError("Invalid dictionary name ".concat(name, "\""));
39007 }
39008
39009 var key = this.nameToKeyMap[name];
39010
39011 if (!(key in this.values)) {
39012 return this.defaults[key];
39013 }
39014
39015 return this.values[key];
39016 },
39017 removeByName: function CFFDict_removeByName(name) {
39018 delete this.values[this.nameToKeyMap[name]];
39019 }
39020 };
39021
39022 CFFDict.createTables = function CFFDict_createTables(layout) {
39023 var tables = {
39024 keyToNameMap: {},
39025 nameToKeyMap: {},
39026 defaults: {},
39027 types: {},
39028 opcodes: {},
39029 order: []
39030 };
39031
39032 for (var i = 0, ii = layout.length; i < ii; ++i) {
39033 var entry = layout[i];
39034 var key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
39035 tables.keyToNameMap[key] = entry[1];
39036 tables.nameToKeyMap[entry[1]] = key;
39037 tables.types[key] = entry[2];
39038 tables.defaults[key] = entry[3];
39039 tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];
39040 tables.order.push(key);
39041 }
39042
39043 return tables;
39044 };
39045
39046 return CFFDict;
39047}();
39048
39049var CFFTopDict = function CFFTopDictClosure() {
39050 var layout = [[[12, 30], 'ROS', ['sid', 'sid', 'num'], null], [[12, 20], 'SyntheticBase', 'num', null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'num', 0], [[12, 2], 'ItalicAngle', 'num', 0], [[12, 3], 'UnderlinePosition', 'num', -100], [[12, 4], 'UnderlineThickness', 'num', 50], [[12, 5], 'PaintType', 'num', 0], [[12, 6], 'CharstringType', 'num', 2], [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'num', null], [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'num', 0], [14, 'XUID', 'array', null], [15, 'charset', 'offset', 0], [16, 'Encoding', 'offset', 0], [17, 'CharStrings', 'offset', 0], [18, 'Private', ['offset', 'offset'], null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null], [[12, 31], 'CIDFontVersion', 'num', 0], [[12, 32], 'CIDFontRevision', 'num', 0], [[12, 33], 'CIDFontType', 'num', 0], [[12, 34], 'CIDCount', 'num', 8720], [[12, 35], 'UIDBase', 'num', null], [[12, 37], 'FDSelect', 'offset', null], [[12, 36], 'FDArray', 'offset', null], [[12, 38], 'FontName', 'sid', null]];
39051 var tables = null;
39052
39053 function CFFTopDict(strings) {
39054 if (tables === null) {
39055 tables = CFFDict.createTables(layout);
39056 }
39057
39058 CFFDict.call(this, tables, strings);
39059 this.privateDict = null;
39060 }
39061
39062 CFFTopDict.prototype = Object.create(CFFDict.prototype);
39063 return CFFTopDict;
39064}();
39065
39066exports.CFFTopDict = CFFTopDict;
39067
39068var CFFPrivateDict = function CFFPrivateDictClosure() {
39069 var layout = [[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'num', 0.039625], [[12, 10], 'BlueShift', 'num', 7], [[12, 11], 'BlueFuzz', 'num', 1], [10, 'StdHW', 'num', null], [11, 'StdVW', 'num', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'num', 0], [[12, 17], 'LanguageGroup', 'num', 0], [[12, 18], 'ExpansionFactor', 'num', 0.06], [[12, 19], 'initialRandomSeed', 'num', 0], [20, 'defaultWidthX', 'num', 0], [21, 'nominalWidthX', 'num', 0], [19, 'Subrs', 'offset', null]];
39070 var tables = null;
39071
39072 function CFFPrivateDict(strings) {
39073 if (tables === null) {
39074 tables = CFFDict.createTables(layout);
39075 }
39076
39077 CFFDict.call(this, tables, strings);
39078 this.subrsIndex = null;
39079 }
39080
39081 CFFPrivateDict.prototype = Object.create(CFFDict.prototype);
39082 return CFFPrivateDict;
39083}();
39084
39085exports.CFFPrivateDict = CFFPrivateDict;
39086var CFFCharsetPredefinedTypes = {
39087 ISO_ADOBE: 0,
39088 EXPERT: 1,
39089 EXPERT_SUBSET: 2
39090};
39091
39092var CFFCharset = function CFFCharsetClosure() {
39093 function CFFCharset(predefined, format, charset, raw) {
39094 this.predefined = predefined;
39095 this.format = format;
39096 this.charset = charset;
39097 this.raw = raw;
39098 }
39099
39100 return CFFCharset;
39101}();
39102
39103exports.CFFCharset = CFFCharset;
39104
39105var CFFEncoding = function CFFEncodingClosure() {
39106 function CFFEncoding(predefined, format, encoding, raw) {
39107 this.predefined = predefined;
39108 this.format = format;
39109 this.encoding = encoding;
39110 this.raw = raw;
39111 }
39112
39113 return CFFEncoding;
39114}();
39115
39116var CFFFDSelect = function CFFFDSelectClosure() {
39117 function CFFFDSelect(format, fdSelect) {
39118 this.format = format;
39119 this.fdSelect = fdSelect;
39120 }
39121
39122 CFFFDSelect.prototype = {
39123 getFDIndex: function CFFFDSelect_get(glyphIndex) {
39124 if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {
39125 return -1;
39126 }
39127
39128 return this.fdSelect[glyphIndex];
39129 }
39130 };
39131 return CFFFDSelect;
39132}();
39133
39134exports.CFFFDSelect = CFFFDSelect;
39135
39136var CFFOffsetTracker = function CFFOffsetTrackerClosure() {
39137 function CFFOffsetTracker() {
39138 this.offsets = Object.create(null);
39139 }
39140
39141 CFFOffsetTracker.prototype = {
39142 isTracking: function CFFOffsetTracker_isTracking(key) {
39143 return key in this.offsets;
39144 },
39145 track: function CFFOffsetTracker_track(key, location) {
39146 if (key in this.offsets) {
39147 throw new _util.FormatError("Already tracking location of ".concat(key));
39148 }
39149
39150 this.offsets[key] = location;
39151 },
39152 offset: function CFFOffsetTracker_offset(value) {
39153 for (var key in this.offsets) {
39154 this.offsets[key] += value;
39155 }
39156 },
39157 setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) {
39158 if (!(key in this.offsets)) {
39159 throw new _util.FormatError("Not tracking location of ".concat(key));
39160 }
39161
39162 var data = output.data;
39163 var dataOffset = this.offsets[key];
39164 var size = 5;
39165
39166 for (var i = 0, ii = values.length; i < ii; ++i) {
39167 var offset0 = i * size + dataOffset;
39168 var offset1 = offset0 + 1;
39169 var offset2 = offset0 + 2;
39170 var offset3 = offset0 + 3;
39171 var offset4 = offset0 + 4;
39172
39173 if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {
39174 throw new _util.FormatError('writing to an offset that is not empty');
39175 }
39176
39177 var value = values[i];
39178 data[offset0] = 0x1d;
39179 data[offset1] = value >> 24 & 0xFF;
39180 data[offset2] = value >> 16 & 0xFF;
39181 data[offset3] = value >> 8 & 0xFF;
39182 data[offset4] = value & 0xFF;
39183 }
39184 }
39185 };
39186 return CFFOffsetTracker;
39187}();
39188
39189var CFFCompiler = function CFFCompilerClosure() {
39190 function CFFCompiler(cff) {
39191 this.cff = cff;
39192 }
39193
39194 CFFCompiler.prototype = {
39195 compile: function CFFCompiler_compile() {
39196 var cff = this.cff;
39197 var output = {
39198 data: [],
39199 length: 0,
39200 add: function CFFCompiler_add(data) {
39201 this.data = this.data.concat(data);
39202 this.length = this.data.length;
39203 }
39204 };
39205 var header = this.compileHeader(cff.header);
39206 output.add(header);
39207 var nameIndex = this.compileNameIndex(cff.names);
39208 output.add(nameIndex);
39209
39210 if (cff.isCIDFont) {
39211 if (cff.topDict.hasName('FontMatrix')) {
39212 var base = cff.topDict.getByName('FontMatrix');
39213 cff.topDict.removeByName('FontMatrix');
39214
39215 for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {
39216 var subDict = cff.fdArray[i];
39217 var matrix = base.slice(0);
39218
39219 if (subDict.hasName('FontMatrix')) {
39220 matrix = _util.Util.transform(matrix, subDict.getByName('FontMatrix'));
39221 }
39222
39223 subDict.setByName('FontMatrix', matrix);
39224 }
39225 }
39226 }
39227
39228 cff.topDict.setByName('charset', 0);
39229 var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
39230 output.add(compiled.output);
39231 var topDictTracker = compiled.trackers[0];
39232 var stringIndex = this.compileStringIndex(cff.strings.strings);
39233 output.add(stringIndex);
39234 var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
39235 output.add(globalSubrIndex);
39236
39237 if (cff.encoding && cff.topDict.hasName('Encoding')) {
39238 if (cff.encoding.predefined) {
39239 topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], output);
39240 } else {
39241 var encoding = this.compileEncoding(cff.encoding);
39242 topDictTracker.setEntryLocation('Encoding', [output.length], output);
39243 output.add(encoding);
39244 }
39245 }
39246
39247 var charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);
39248 topDictTracker.setEntryLocation('charset', [output.length], output);
39249 output.add(charset);
39250 var charStrings = this.compileCharStrings(cff.charStrings);
39251 topDictTracker.setEntryLocation('CharStrings', [output.length], output);
39252 output.add(charStrings);
39253
39254 if (cff.isCIDFont) {
39255 topDictTracker.setEntryLocation('FDSelect', [output.length], output);
39256 var fdSelect = this.compileFDSelect(cff.fdSelect);
39257 output.add(fdSelect);
39258 compiled = this.compileTopDicts(cff.fdArray, output.length, true);
39259 topDictTracker.setEntryLocation('FDArray', [output.length], output);
39260 output.add(compiled.output);
39261 var fontDictTrackers = compiled.trackers;
39262 this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
39263 }
39264
39265 this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
39266 output.add([0]);
39267 return output.data;
39268 },
39269 encodeNumber: function CFFCompiler_encodeNumber(value) {
39270 if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) {
39271 return this.encodeInteger(value);
39272 }
39273
39274 return this.encodeFloat(value);
39275 },
39276 encodeFloat: function CFFCompiler_encodeFloat(num) {
39277 var value = num.toString();
39278 var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value);
39279
39280 if (m) {
39281 var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));
39282 value = (Math.round(num * epsilon) / epsilon).toString();
39283 }
39284
39285 var nibbles = '';
39286 var i, ii;
39287
39288 for (i = 0, ii = value.length; i < ii; ++i) {
39289 var a = value[i];
39290
39291 if (a === 'e') {
39292 nibbles += value[++i] === '-' ? 'c' : 'b';
39293 } else if (a === '.') {
39294 nibbles += 'a';
39295 } else if (a === '-') {
39296 nibbles += 'e';
39297 } else {
39298 nibbles += a;
39299 }
39300 }
39301
39302 nibbles += nibbles.length & 1 ? 'f' : 'ff';
39303 var out = [30];
39304
39305 for (i = 0, ii = nibbles.length; i < ii; i += 2) {
39306 out.push(parseInt(nibbles.substring(i, i + 2), 16));
39307 }
39308
39309 return out;
39310 },
39311 encodeInteger: function CFFCompiler_encodeInteger(value) {
39312 var code;
39313
39314 if (value >= -107 && value <= 107) {
39315 code = [value + 139];
39316 } else if (value >= 108 && value <= 1131) {
39317 value = value - 108;
39318 code = [(value >> 8) + 247, value & 0xFF];
39319 } else if (value >= -1131 && value <= -108) {
39320 value = -value - 108;
39321 code = [(value >> 8) + 251, value & 0xFF];
39322 } else if (value >= -32768 && value <= 32767) {
39323 code = [0x1c, value >> 8 & 0xFF, value & 0xFF];
39324 } else {
39325 code = [0x1d, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF];
39326 }
39327
39328 return code;
39329 },
39330 compileHeader: function CFFCompiler_compileHeader(header) {
39331 return [header.major, header.minor, header.hdrSize, header.offSize];
39332 },
39333 compileNameIndex: function CFFCompiler_compileNameIndex(names) {
39334 var nameIndex = new CFFIndex();
39335
39336 for (var i = 0, ii = names.length; i < ii; ++i) {
39337 var name = names[i];
39338 var length = Math.min(name.length, 127);
39339 var sanitizedName = new Array(length);
39340
39341 for (var j = 0; j < length; j++) {
39342 var _char = name[j];
39343
39344 if (_char < '!' || _char > '~' || _char === '[' || _char === ']' || _char === '(' || _char === ')' || _char === '{' || _char === '}' || _char === '<' || _char === '>' || _char === '/' || _char === '%') {
39345 _char = '_';
39346 }
39347
39348 sanitizedName[j] = _char;
39349 }
39350
39351 sanitizedName = sanitizedName.join('');
39352
39353 if (sanitizedName === '') {
39354 sanitizedName = 'Bad_Font_Name';
39355 }
39356
39357 nameIndex.add((0, _util.stringToBytes)(sanitizedName));
39358 }
39359
39360 return this.compileIndex(nameIndex);
39361 },
39362 compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) {
39363 var fontDictTrackers = [];
39364 var fdArrayIndex = new CFFIndex();
39365
39366 for (var i = 0, ii = dicts.length; i < ii; ++i) {
39367 var fontDict = dicts[i];
39368
39369 if (removeCidKeys) {
39370 fontDict.removeByName('CIDFontVersion');
39371 fontDict.removeByName('CIDFontRevision');
39372 fontDict.removeByName('CIDFontType');
39373 fontDict.removeByName('CIDCount');
39374 fontDict.removeByName('UIDBase');
39375 }
39376
39377 var fontDictTracker = new CFFOffsetTracker();
39378 var fontDictData = this.compileDict(fontDict, fontDictTracker);
39379 fontDictTrackers.push(fontDictTracker);
39380 fdArrayIndex.add(fontDictData);
39381 fontDictTracker.offset(length);
39382 }
39383
39384 fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
39385 return {
39386 trackers: fontDictTrackers,
39387 output: fdArrayIndex
39388 };
39389 },
39390 compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) {
39391 for (var i = 0, ii = dicts.length; i < ii; ++i) {
39392 var fontDict = dicts[i];
39393 var privateDict = fontDict.privateDict;
39394
39395 if (!privateDict || !fontDict.hasName('Private')) {
39396 throw new _util.FormatError('There must be a private dictionary.');
39397 }
39398
39399 var privateDictTracker = new CFFOffsetTracker();
39400 var privateDictData = this.compileDict(privateDict, privateDictTracker);
39401 var outputLength = output.length;
39402 privateDictTracker.offset(outputLength);
39403
39404 if (!privateDictData.length) {
39405 outputLength = 0;
39406 }
39407
39408 trackers[i].setEntryLocation('Private', [privateDictData.length, outputLength], output);
39409 output.add(privateDictData);
39410
39411 if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {
39412 var subrs = this.compileIndex(privateDict.subrsIndex);
39413 privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], output);
39414 output.add(subrs);
39415 }
39416 }
39417 },
39418 compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {
39419 var out = [];
39420 var order = dict.order;
39421
39422 for (var i = 0; i < order.length; ++i) {
39423 var key = order[i];
39424
39425 if (!(key in dict.values)) {
39426 continue;
39427 }
39428
39429 var values = dict.values[key];
39430 var types = dict.types[key];
39431
39432 if (!Array.isArray(types)) {
39433 types = [types];
39434 }
39435
39436 if (!Array.isArray(values)) {
39437 values = [values];
39438 }
39439
39440 if (values.length === 0) {
39441 continue;
39442 }
39443
39444 for (var j = 0, jj = types.length; j < jj; ++j) {
39445 var type = types[j];
39446 var value = values[j];
39447
39448 switch (type) {
39449 case 'num':
39450 case 'sid':
39451 out = out.concat(this.encodeNumber(value));
39452 break;
39453
39454 case 'offset':
39455 var name = dict.keyToNameMap[key];
39456
39457 if (!offsetTracker.isTracking(name)) {
39458 offsetTracker.track(name, out.length);
39459 }
39460
39461 out = out.concat([0x1d, 0, 0, 0, 0]);
39462 break;
39463
39464 case 'array':
39465 case 'delta':
39466 out = out.concat(this.encodeNumber(value));
39467
39468 for (var k = 1, kk = values.length; k < kk; ++k) {
39469 out = out.concat(this.encodeNumber(values[k]));
39470 }
39471
39472 break;
39473
39474 default:
39475 throw new _util.FormatError("Unknown data type of ".concat(type));
39476 }
39477 }
39478
39479 out = out.concat(dict.opcodes[key]);
39480 }
39481
39482 return out;
39483 },
39484 compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
39485 var stringIndex = new CFFIndex();
39486
39487 for (var i = 0, ii = strings.length; i < ii; ++i) {
39488 stringIndex.add((0, _util.stringToBytes)(strings[i]));
39489 }
39490
39491 return this.compileIndex(stringIndex);
39492 },
39493 compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
39494 var globalSubrIndex = this.cff.globalSubrIndex;
39495 this.out.writeByteArray(this.compileIndex(globalSubrIndex));
39496 },
39497 compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {
39498 var charStringsIndex = new CFFIndex();
39499
39500 for (var i = 0; i < charStrings.count; i++) {
39501 var glyph = charStrings.get(i);
39502
39503 if (glyph.length === 0) {
39504 charStringsIndex.add(new Uint8Array([0x8B, 0x0E]));
39505 continue;
39506 }
39507
39508 charStringsIndex.add(glyph);
39509 }
39510
39511 return this.compileIndex(charStringsIndex);
39512 },
39513 compileCharset: function CFFCompiler_compileCharset(charset, numGlyphs, strings, isCIDFont) {
39514 var out;
39515 var numGlyphsLessNotDef = numGlyphs - 1;
39516
39517 if (isCIDFont) {
39518 out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xFF, numGlyphsLessNotDef & 0xFF]);
39519 } else {
39520 var length = 1 + numGlyphsLessNotDef * 2;
39521 out = new Uint8Array(length);
39522 out[0] = 0;
39523 var charsetIndex = 0;
39524 var numCharsets = charset.charset.length;
39525 var warned = false;
39526
39527 for (var i = 1; i < out.length; i += 2) {
39528 var sid = 0;
39529
39530 if (charsetIndex < numCharsets) {
39531 var name = charset.charset[charsetIndex++];
39532 sid = strings.getSID(name);
39533
39534 if (sid === -1) {
39535 sid = 0;
39536
39537 if (!warned) {
39538 warned = true;
39539 (0, _util.warn)("Couldn't find ".concat(name, " in CFF strings"));
39540 }
39541 }
39542 }
39543
39544 out[i] = sid >> 8 & 0xFF;
39545 out[i + 1] = sid & 0xFF;
39546 }
39547 }
39548
39549 return this.compileTypedArray(out);
39550 },
39551 compileEncoding: function CFFCompiler_compileEncoding(encoding) {
39552 return this.compileTypedArray(encoding.raw);
39553 },
39554 compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {
39555 var format = fdSelect.format;
39556 var out, i;
39557
39558 switch (format) {
39559 case 0:
39560 out = new Uint8Array(1 + fdSelect.fdSelect.length);
39561 out[0] = format;
39562
39563 for (i = 0; i < fdSelect.fdSelect.length; i++) {
39564 out[i + 1] = fdSelect.fdSelect[i];
39565 }
39566
39567 break;
39568
39569 case 3:
39570 var start = 0;
39571 var lastFD = fdSelect.fdSelect[0];
39572 var ranges = [format, 0, 0, start >> 8 & 0xFF, start & 0xFF, lastFD];
39573
39574 for (i = 1; i < fdSelect.fdSelect.length; i++) {
39575 var currentFD = fdSelect.fdSelect[i];
39576
39577 if (currentFD !== lastFD) {
39578 ranges.push(i >> 8 & 0xFF, i & 0xFF, currentFD);
39579 lastFD = currentFD;
39580 }
39581 }
39582
39583 var numRanges = (ranges.length - 3) / 3;
39584 ranges[1] = numRanges >> 8 & 0xFF;
39585 ranges[2] = numRanges & 0xFF;
39586 ranges.push(i >> 8 & 0xFF, i & 0xFF);
39587 out = new Uint8Array(ranges);
39588 break;
39589 }
39590
39591 return this.compileTypedArray(out);
39592 },
39593 compileTypedArray: function CFFCompiler_compileTypedArray(data) {
39594 var out = [];
39595
39596 for (var i = 0, ii = data.length; i < ii; ++i) {
39597 out[i] = data[i];
39598 }
39599
39600 return out;
39601 },
39602 compileIndex: function CFFCompiler_compileIndex(index, trackers) {
39603 trackers = trackers || [];
39604 var objects = index.objects;
39605 var count = objects.length;
39606
39607 if (count === 0) {
39608 return [0, 0, 0];
39609 }
39610
39611 var data = [count >> 8 & 0xFF, count & 0xff];
39612 var lastOffset = 1,
39613 i;
39614
39615 for (i = 0; i < count; ++i) {
39616 lastOffset += objects[i].length;
39617 }
39618
39619 var offsetSize;
39620
39621 if (lastOffset < 0x100) {
39622 offsetSize = 1;
39623 } else if (lastOffset < 0x10000) {
39624 offsetSize = 2;
39625 } else if (lastOffset < 0x1000000) {
39626 offsetSize = 3;
39627 } else {
39628 offsetSize = 4;
39629 }
39630
39631 data.push(offsetSize);
39632 var relativeOffset = 1;
39633
39634 for (i = 0; i < count + 1; i++) {
39635 if (offsetSize === 1) {
39636 data.push(relativeOffset & 0xFF);
39637 } else if (offsetSize === 2) {
39638 data.push(relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
39639 } else if (offsetSize === 3) {
39640 data.push(relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
39641 } else {
39642 data.push(relativeOffset >>> 24 & 0xFF, relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF);
39643 }
39644
39645 if (objects[i]) {
39646 relativeOffset += objects[i].length;
39647 }
39648 }
39649
39650 for (i = 0; i < count; i++) {
39651 if (trackers[i]) {
39652 trackers[i].offset(data.length);
39653 }
39654
39655 for (var j = 0, jj = objects[i].length; j < jj; j++) {
39656 data.push(objects[i][j]);
39657 }
39658 }
39659
39660 return data;
39661 }
39662 };
39663 return CFFCompiler;
39664}();
39665
39666exports.CFFCompiler = CFFCompiler;
39667
39668/***/ }),
39669/* 176 */
39670/***/ (function(module, exports, __w_pdfjs_require__) {
39671
39672"use strict";
39673
39674
39675Object.defineProperty(exports, "__esModule", {
39676 value: true
39677});
39678exports.ExpertSubsetCharset = exports.ExpertCharset = exports.ISOAdobeCharset = void 0;
39679var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
39680exports.ISOAdobeCharset = ISOAdobeCharset;
39681var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
39682exports.ExpertCharset = ExpertCharset;
39683var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
39684exports.ExpertSubsetCharset = ExpertSubsetCharset;
39685
39686/***/ }),
39687/* 177 */
39688/***/ (function(module, exports, __w_pdfjs_require__) {
39689
39690"use strict";
39691
39692
39693Object.defineProperty(exports, "__esModule", {
39694 value: true
39695});
39696exports.getEncoding = getEncoding;
39697exports.ExpertEncoding = exports.ZapfDingbatsEncoding = exports.SymbolSetEncoding = exports.MacRomanEncoding = exports.StandardEncoding = exports.WinAnsiEncoding = void 0;
39698var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
39699exports.ExpertEncoding = ExpertEncoding;
39700var MacExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', 'dollarinferior', '', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall', '', '', '', ''];
39701var MacRomanEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron'];
39702exports.MacRomanEncoding = MacRomanEncoding;
39703var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls', '', '', '', ''];
39704exports.StandardEncoding = StandardEncoding;
39705var WinAnsiEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis'];
39706exports.WinAnsiEncoding = WinAnsiEncoding;
39707var SymbolSetEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt', ''];
39708exports.SymbolSetEncoding = SymbolSetEncoding;
39709var ZapfDingbatsEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191', ''];
39710exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;
39711
39712function getEncoding(encodingName) {
39713 switch (encodingName) {
39714 case 'WinAnsiEncoding':
39715 return WinAnsiEncoding;
39716
39717 case 'StandardEncoding':
39718 return StandardEncoding;
39719
39720 case 'MacRomanEncoding':
39721 return MacRomanEncoding;
39722
39723 case 'SymbolSetEncoding':
39724 return SymbolSetEncoding;
39725
39726 case 'ZapfDingbatsEncoding':
39727 return ZapfDingbatsEncoding;
39728
39729 case 'ExpertEncoding':
39730 return ExpertEncoding;
39731
39732 case 'MacExpertEncoding':
39733 return MacExpertEncoding;
39734
39735 default:
39736 return null;
39737 }
39738}
39739
39740/***/ }),
39741/* 178 */
39742/***/ (function(module, exports, __w_pdfjs_require__) {
39743
39744var getLookupTableFactory = __w_pdfjs_require__(154).getLookupTableFactory;
39745var getGlyphsUnicode = getLookupTableFactory(function (t) {
39746 t['A'] = 0x0041;
39747 t['AE'] = 0x00C6;
39748 t['AEacute'] = 0x01FC;
39749 t['AEmacron'] = 0x01E2;
39750 t['AEsmall'] = 0xF7E6;
39751 t['Aacute'] = 0x00C1;
39752 t['Aacutesmall'] = 0xF7E1;
39753 t['Abreve'] = 0x0102;
39754 t['Abreveacute'] = 0x1EAE;
39755 t['Abrevecyrillic'] = 0x04D0;
39756 t['Abrevedotbelow'] = 0x1EB6;
39757 t['Abrevegrave'] = 0x1EB0;
39758 t['Abrevehookabove'] = 0x1EB2;
39759 t['Abrevetilde'] = 0x1EB4;
39760 t['Acaron'] = 0x01CD;
39761 t['Acircle'] = 0x24B6;
39762 t['Acircumflex'] = 0x00C2;
39763 t['Acircumflexacute'] = 0x1EA4;
39764 t['Acircumflexdotbelow'] = 0x1EAC;
39765 t['Acircumflexgrave'] = 0x1EA6;
39766 t['Acircumflexhookabove'] = 0x1EA8;
39767 t['Acircumflexsmall'] = 0xF7E2;
39768 t['Acircumflextilde'] = 0x1EAA;
39769 t['Acute'] = 0xF6C9;
39770 t['Acutesmall'] = 0xF7B4;
39771 t['Acyrillic'] = 0x0410;
39772 t['Adblgrave'] = 0x0200;
39773 t['Adieresis'] = 0x00C4;
39774 t['Adieresiscyrillic'] = 0x04D2;
39775 t['Adieresismacron'] = 0x01DE;
39776 t['Adieresissmall'] = 0xF7E4;
39777 t['Adotbelow'] = 0x1EA0;
39778 t['Adotmacron'] = 0x01E0;
39779 t['Agrave'] = 0x00C0;
39780 t['Agravesmall'] = 0xF7E0;
39781 t['Ahookabove'] = 0x1EA2;
39782 t['Aiecyrillic'] = 0x04D4;
39783 t['Ainvertedbreve'] = 0x0202;
39784 t['Alpha'] = 0x0391;
39785 t['Alphatonos'] = 0x0386;
39786 t['Amacron'] = 0x0100;
39787 t['Amonospace'] = 0xFF21;
39788 t['Aogonek'] = 0x0104;
39789 t['Aring'] = 0x00C5;
39790 t['Aringacute'] = 0x01FA;
39791 t['Aringbelow'] = 0x1E00;
39792 t['Aringsmall'] = 0xF7E5;
39793 t['Asmall'] = 0xF761;
39794 t['Atilde'] = 0x00C3;
39795 t['Atildesmall'] = 0xF7E3;
39796 t['Aybarmenian'] = 0x0531;
39797 t['B'] = 0x0042;
39798 t['Bcircle'] = 0x24B7;
39799 t['Bdotaccent'] = 0x1E02;
39800 t['Bdotbelow'] = 0x1E04;
39801 t['Becyrillic'] = 0x0411;
39802 t['Benarmenian'] = 0x0532;
39803 t['Beta'] = 0x0392;
39804 t['Bhook'] = 0x0181;
39805 t['Blinebelow'] = 0x1E06;
39806 t['Bmonospace'] = 0xFF22;
39807 t['Brevesmall'] = 0xF6F4;
39808 t['Bsmall'] = 0xF762;
39809 t['Btopbar'] = 0x0182;
39810 t['C'] = 0x0043;
39811 t['Caarmenian'] = 0x053E;
39812 t['Cacute'] = 0x0106;
39813 t['Caron'] = 0xF6CA;
39814 t['Caronsmall'] = 0xF6F5;
39815 t['Ccaron'] = 0x010C;
39816 t['Ccedilla'] = 0x00C7;
39817 t['Ccedillaacute'] = 0x1E08;
39818 t['Ccedillasmall'] = 0xF7E7;
39819 t['Ccircle'] = 0x24B8;
39820 t['Ccircumflex'] = 0x0108;
39821 t['Cdot'] = 0x010A;
39822 t['Cdotaccent'] = 0x010A;
39823 t['Cedillasmall'] = 0xF7B8;
39824 t['Chaarmenian'] = 0x0549;
39825 t['Cheabkhasiancyrillic'] = 0x04BC;
39826 t['Checyrillic'] = 0x0427;
39827 t['Chedescenderabkhasiancyrillic'] = 0x04BE;
39828 t['Chedescendercyrillic'] = 0x04B6;
39829 t['Chedieresiscyrillic'] = 0x04F4;
39830 t['Cheharmenian'] = 0x0543;
39831 t['Chekhakassiancyrillic'] = 0x04CB;
39832 t['Cheverticalstrokecyrillic'] = 0x04B8;
39833 t['Chi'] = 0x03A7;
39834 t['Chook'] = 0x0187;
39835 t['Circumflexsmall'] = 0xF6F6;
39836 t['Cmonospace'] = 0xFF23;
39837 t['Coarmenian'] = 0x0551;
39838 t['Csmall'] = 0xF763;
39839 t['D'] = 0x0044;
39840 t['DZ'] = 0x01F1;
39841 t['DZcaron'] = 0x01C4;
39842 t['Daarmenian'] = 0x0534;
39843 t['Dafrican'] = 0x0189;
39844 t['Dcaron'] = 0x010E;
39845 t['Dcedilla'] = 0x1E10;
39846 t['Dcircle'] = 0x24B9;
39847 t['Dcircumflexbelow'] = 0x1E12;
39848 t['Dcroat'] = 0x0110;
39849 t['Ddotaccent'] = 0x1E0A;
39850 t['Ddotbelow'] = 0x1E0C;
39851 t['Decyrillic'] = 0x0414;
39852 t['Deicoptic'] = 0x03EE;
39853 t['Delta'] = 0x2206;
39854 t['Deltagreek'] = 0x0394;
39855 t['Dhook'] = 0x018A;
39856 t['Dieresis'] = 0xF6CB;
39857 t['DieresisAcute'] = 0xF6CC;
39858 t['DieresisGrave'] = 0xF6CD;
39859 t['Dieresissmall'] = 0xF7A8;
39860 t['Digammagreek'] = 0x03DC;
39861 t['Djecyrillic'] = 0x0402;
39862 t['Dlinebelow'] = 0x1E0E;
39863 t['Dmonospace'] = 0xFF24;
39864 t['Dotaccentsmall'] = 0xF6F7;
39865 t['Dslash'] = 0x0110;
39866 t['Dsmall'] = 0xF764;
39867 t['Dtopbar'] = 0x018B;
39868 t['Dz'] = 0x01F2;
39869 t['Dzcaron'] = 0x01C5;
39870 t['Dzeabkhasiancyrillic'] = 0x04E0;
39871 t['Dzecyrillic'] = 0x0405;
39872 t['Dzhecyrillic'] = 0x040F;
39873 t['E'] = 0x0045;
39874 t['Eacute'] = 0x00C9;
39875 t['Eacutesmall'] = 0xF7E9;
39876 t['Ebreve'] = 0x0114;
39877 t['Ecaron'] = 0x011A;
39878 t['Ecedillabreve'] = 0x1E1C;
39879 t['Echarmenian'] = 0x0535;
39880 t['Ecircle'] = 0x24BA;
39881 t['Ecircumflex'] = 0x00CA;
39882 t['Ecircumflexacute'] = 0x1EBE;
39883 t['Ecircumflexbelow'] = 0x1E18;
39884 t['Ecircumflexdotbelow'] = 0x1EC6;
39885 t['Ecircumflexgrave'] = 0x1EC0;
39886 t['Ecircumflexhookabove'] = 0x1EC2;
39887 t['Ecircumflexsmall'] = 0xF7EA;
39888 t['Ecircumflextilde'] = 0x1EC4;
39889 t['Ecyrillic'] = 0x0404;
39890 t['Edblgrave'] = 0x0204;
39891 t['Edieresis'] = 0x00CB;
39892 t['Edieresissmall'] = 0xF7EB;
39893 t['Edot'] = 0x0116;
39894 t['Edotaccent'] = 0x0116;
39895 t['Edotbelow'] = 0x1EB8;
39896 t['Efcyrillic'] = 0x0424;
39897 t['Egrave'] = 0x00C8;
39898 t['Egravesmall'] = 0xF7E8;
39899 t['Eharmenian'] = 0x0537;
39900 t['Ehookabove'] = 0x1EBA;
39901 t['Eightroman'] = 0x2167;
39902 t['Einvertedbreve'] = 0x0206;
39903 t['Eiotifiedcyrillic'] = 0x0464;
39904 t['Elcyrillic'] = 0x041B;
39905 t['Elevenroman'] = 0x216A;
39906 t['Emacron'] = 0x0112;
39907 t['Emacronacute'] = 0x1E16;
39908 t['Emacrongrave'] = 0x1E14;
39909 t['Emcyrillic'] = 0x041C;
39910 t['Emonospace'] = 0xFF25;
39911 t['Encyrillic'] = 0x041D;
39912 t['Endescendercyrillic'] = 0x04A2;
39913 t['Eng'] = 0x014A;
39914 t['Enghecyrillic'] = 0x04A4;
39915 t['Enhookcyrillic'] = 0x04C7;
39916 t['Eogonek'] = 0x0118;
39917 t['Eopen'] = 0x0190;
39918 t['Epsilon'] = 0x0395;
39919 t['Epsilontonos'] = 0x0388;
39920 t['Ercyrillic'] = 0x0420;
39921 t['Ereversed'] = 0x018E;
39922 t['Ereversedcyrillic'] = 0x042D;
39923 t['Escyrillic'] = 0x0421;
39924 t['Esdescendercyrillic'] = 0x04AA;
39925 t['Esh'] = 0x01A9;
39926 t['Esmall'] = 0xF765;
39927 t['Eta'] = 0x0397;
39928 t['Etarmenian'] = 0x0538;
39929 t['Etatonos'] = 0x0389;
39930 t['Eth'] = 0x00D0;
39931 t['Ethsmall'] = 0xF7F0;
39932 t['Etilde'] = 0x1EBC;
39933 t['Etildebelow'] = 0x1E1A;
39934 t['Euro'] = 0x20AC;
39935 t['Ezh'] = 0x01B7;
39936 t['Ezhcaron'] = 0x01EE;
39937 t['Ezhreversed'] = 0x01B8;
39938 t['F'] = 0x0046;
39939 t['Fcircle'] = 0x24BB;
39940 t['Fdotaccent'] = 0x1E1E;
39941 t['Feharmenian'] = 0x0556;
39942 t['Feicoptic'] = 0x03E4;
39943 t['Fhook'] = 0x0191;
39944 t['Fitacyrillic'] = 0x0472;
39945 t['Fiveroman'] = 0x2164;
39946 t['Fmonospace'] = 0xFF26;
39947 t['Fourroman'] = 0x2163;
39948 t['Fsmall'] = 0xF766;
39949 t['G'] = 0x0047;
39950 t['GBsquare'] = 0x3387;
39951 t['Gacute'] = 0x01F4;
39952 t['Gamma'] = 0x0393;
39953 t['Gammaafrican'] = 0x0194;
39954 t['Gangiacoptic'] = 0x03EA;
39955 t['Gbreve'] = 0x011E;
39956 t['Gcaron'] = 0x01E6;
39957 t['Gcedilla'] = 0x0122;
39958 t['Gcircle'] = 0x24BC;
39959 t['Gcircumflex'] = 0x011C;
39960 t['Gcommaaccent'] = 0x0122;
39961 t['Gdot'] = 0x0120;
39962 t['Gdotaccent'] = 0x0120;
39963 t['Gecyrillic'] = 0x0413;
39964 t['Ghadarmenian'] = 0x0542;
39965 t['Ghemiddlehookcyrillic'] = 0x0494;
39966 t['Ghestrokecyrillic'] = 0x0492;
39967 t['Gheupturncyrillic'] = 0x0490;
39968 t['Ghook'] = 0x0193;
39969 t['Gimarmenian'] = 0x0533;
39970 t['Gjecyrillic'] = 0x0403;
39971 t['Gmacron'] = 0x1E20;
39972 t['Gmonospace'] = 0xFF27;
39973 t['Grave'] = 0xF6CE;
39974 t['Gravesmall'] = 0xF760;
39975 t['Gsmall'] = 0xF767;
39976 t['Gsmallhook'] = 0x029B;
39977 t['Gstroke'] = 0x01E4;
39978 t['H'] = 0x0048;
39979 t['H18533'] = 0x25CF;
39980 t['H18543'] = 0x25AA;
39981 t['H18551'] = 0x25AB;
39982 t['H22073'] = 0x25A1;
39983 t['HPsquare'] = 0x33CB;
39984 t['Haabkhasiancyrillic'] = 0x04A8;
39985 t['Hadescendercyrillic'] = 0x04B2;
39986 t['Hardsigncyrillic'] = 0x042A;
39987 t['Hbar'] = 0x0126;
39988 t['Hbrevebelow'] = 0x1E2A;
39989 t['Hcedilla'] = 0x1E28;
39990 t['Hcircle'] = 0x24BD;
39991 t['Hcircumflex'] = 0x0124;
39992 t['Hdieresis'] = 0x1E26;
39993 t['Hdotaccent'] = 0x1E22;
39994 t['Hdotbelow'] = 0x1E24;
39995 t['Hmonospace'] = 0xFF28;
39996 t['Hoarmenian'] = 0x0540;
39997 t['Horicoptic'] = 0x03E8;
39998 t['Hsmall'] = 0xF768;
39999 t['Hungarumlaut'] = 0xF6CF;
40000 t['Hungarumlautsmall'] = 0xF6F8;
40001 t['Hzsquare'] = 0x3390;
40002 t['I'] = 0x0049;
40003 t['IAcyrillic'] = 0x042F;
40004 t['IJ'] = 0x0132;
40005 t['IUcyrillic'] = 0x042E;
40006 t['Iacute'] = 0x00CD;
40007 t['Iacutesmall'] = 0xF7ED;
40008 t['Ibreve'] = 0x012C;
40009 t['Icaron'] = 0x01CF;
40010 t['Icircle'] = 0x24BE;
40011 t['Icircumflex'] = 0x00CE;
40012 t['Icircumflexsmall'] = 0xF7EE;
40013 t['Icyrillic'] = 0x0406;
40014 t['Idblgrave'] = 0x0208;
40015 t['Idieresis'] = 0x00CF;
40016 t['Idieresisacute'] = 0x1E2E;
40017 t['Idieresiscyrillic'] = 0x04E4;
40018 t['Idieresissmall'] = 0xF7EF;
40019 t['Idot'] = 0x0130;
40020 t['Idotaccent'] = 0x0130;
40021 t['Idotbelow'] = 0x1ECA;
40022 t['Iebrevecyrillic'] = 0x04D6;
40023 t['Iecyrillic'] = 0x0415;
40024 t['Ifraktur'] = 0x2111;
40025 t['Igrave'] = 0x00CC;
40026 t['Igravesmall'] = 0xF7EC;
40027 t['Ihookabove'] = 0x1EC8;
40028 t['Iicyrillic'] = 0x0418;
40029 t['Iinvertedbreve'] = 0x020A;
40030 t['Iishortcyrillic'] = 0x0419;
40031 t['Imacron'] = 0x012A;
40032 t['Imacroncyrillic'] = 0x04E2;
40033 t['Imonospace'] = 0xFF29;
40034 t['Iniarmenian'] = 0x053B;
40035 t['Iocyrillic'] = 0x0401;
40036 t['Iogonek'] = 0x012E;
40037 t['Iota'] = 0x0399;
40038 t['Iotaafrican'] = 0x0196;
40039 t['Iotadieresis'] = 0x03AA;
40040 t['Iotatonos'] = 0x038A;
40041 t['Ismall'] = 0xF769;
40042 t['Istroke'] = 0x0197;
40043 t['Itilde'] = 0x0128;
40044 t['Itildebelow'] = 0x1E2C;
40045 t['Izhitsacyrillic'] = 0x0474;
40046 t['Izhitsadblgravecyrillic'] = 0x0476;
40047 t['J'] = 0x004A;
40048 t['Jaarmenian'] = 0x0541;
40049 t['Jcircle'] = 0x24BF;
40050 t['Jcircumflex'] = 0x0134;
40051 t['Jecyrillic'] = 0x0408;
40052 t['Jheharmenian'] = 0x054B;
40053 t['Jmonospace'] = 0xFF2A;
40054 t['Jsmall'] = 0xF76A;
40055 t['K'] = 0x004B;
40056 t['KBsquare'] = 0x3385;
40057 t['KKsquare'] = 0x33CD;
40058 t['Kabashkircyrillic'] = 0x04A0;
40059 t['Kacute'] = 0x1E30;
40060 t['Kacyrillic'] = 0x041A;
40061 t['Kadescendercyrillic'] = 0x049A;
40062 t['Kahookcyrillic'] = 0x04C3;
40063 t['Kappa'] = 0x039A;
40064 t['Kastrokecyrillic'] = 0x049E;
40065 t['Kaverticalstrokecyrillic'] = 0x049C;
40066 t['Kcaron'] = 0x01E8;
40067 t['Kcedilla'] = 0x0136;
40068 t['Kcircle'] = 0x24C0;
40069 t['Kcommaaccent'] = 0x0136;
40070 t['Kdotbelow'] = 0x1E32;
40071 t['Keharmenian'] = 0x0554;
40072 t['Kenarmenian'] = 0x053F;
40073 t['Khacyrillic'] = 0x0425;
40074 t['Kheicoptic'] = 0x03E6;
40075 t['Khook'] = 0x0198;
40076 t['Kjecyrillic'] = 0x040C;
40077 t['Klinebelow'] = 0x1E34;
40078 t['Kmonospace'] = 0xFF2B;
40079 t['Koppacyrillic'] = 0x0480;
40080 t['Koppagreek'] = 0x03DE;
40081 t['Ksicyrillic'] = 0x046E;
40082 t['Ksmall'] = 0xF76B;
40083 t['L'] = 0x004C;
40084 t['LJ'] = 0x01C7;
40085 t['LL'] = 0xF6BF;
40086 t['Lacute'] = 0x0139;
40087 t['Lambda'] = 0x039B;
40088 t['Lcaron'] = 0x013D;
40089 t['Lcedilla'] = 0x013B;
40090 t['Lcircle'] = 0x24C1;
40091 t['Lcircumflexbelow'] = 0x1E3C;
40092 t['Lcommaaccent'] = 0x013B;
40093 t['Ldot'] = 0x013F;
40094 t['Ldotaccent'] = 0x013F;
40095 t['Ldotbelow'] = 0x1E36;
40096 t['Ldotbelowmacron'] = 0x1E38;
40097 t['Liwnarmenian'] = 0x053C;
40098 t['Lj'] = 0x01C8;
40099 t['Ljecyrillic'] = 0x0409;
40100 t['Llinebelow'] = 0x1E3A;
40101 t['Lmonospace'] = 0xFF2C;
40102 t['Lslash'] = 0x0141;
40103 t['Lslashsmall'] = 0xF6F9;
40104 t['Lsmall'] = 0xF76C;
40105 t['M'] = 0x004D;
40106 t['MBsquare'] = 0x3386;
40107 t['Macron'] = 0xF6D0;
40108 t['Macronsmall'] = 0xF7AF;
40109 t['Macute'] = 0x1E3E;
40110 t['Mcircle'] = 0x24C2;
40111 t['Mdotaccent'] = 0x1E40;
40112 t['Mdotbelow'] = 0x1E42;
40113 t['Menarmenian'] = 0x0544;
40114 t['Mmonospace'] = 0xFF2D;
40115 t['Msmall'] = 0xF76D;
40116 t['Mturned'] = 0x019C;
40117 t['Mu'] = 0x039C;
40118 t['N'] = 0x004E;
40119 t['NJ'] = 0x01CA;
40120 t['Nacute'] = 0x0143;
40121 t['Ncaron'] = 0x0147;
40122 t['Ncedilla'] = 0x0145;
40123 t['Ncircle'] = 0x24C3;
40124 t['Ncircumflexbelow'] = 0x1E4A;
40125 t['Ncommaaccent'] = 0x0145;
40126 t['Ndotaccent'] = 0x1E44;
40127 t['Ndotbelow'] = 0x1E46;
40128 t['Nhookleft'] = 0x019D;
40129 t['Nineroman'] = 0x2168;
40130 t['Nj'] = 0x01CB;
40131 t['Njecyrillic'] = 0x040A;
40132 t['Nlinebelow'] = 0x1E48;
40133 t['Nmonospace'] = 0xFF2E;
40134 t['Nowarmenian'] = 0x0546;
40135 t['Nsmall'] = 0xF76E;
40136 t['Ntilde'] = 0x00D1;
40137 t['Ntildesmall'] = 0xF7F1;
40138 t['Nu'] = 0x039D;
40139 t['O'] = 0x004F;
40140 t['OE'] = 0x0152;
40141 t['OEsmall'] = 0xF6FA;
40142 t['Oacute'] = 0x00D3;
40143 t['Oacutesmall'] = 0xF7F3;
40144 t['Obarredcyrillic'] = 0x04E8;
40145 t['Obarreddieresiscyrillic'] = 0x04EA;
40146 t['Obreve'] = 0x014E;
40147 t['Ocaron'] = 0x01D1;
40148 t['Ocenteredtilde'] = 0x019F;
40149 t['Ocircle'] = 0x24C4;
40150 t['Ocircumflex'] = 0x00D4;
40151 t['Ocircumflexacute'] = 0x1ED0;
40152 t['Ocircumflexdotbelow'] = 0x1ED8;
40153 t['Ocircumflexgrave'] = 0x1ED2;
40154 t['Ocircumflexhookabove'] = 0x1ED4;
40155 t['Ocircumflexsmall'] = 0xF7F4;
40156 t['Ocircumflextilde'] = 0x1ED6;
40157 t['Ocyrillic'] = 0x041E;
40158 t['Odblacute'] = 0x0150;
40159 t['Odblgrave'] = 0x020C;
40160 t['Odieresis'] = 0x00D6;
40161 t['Odieresiscyrillic'] = 0x04E6;
40162 t['Odieresissmall'] = 0xF7F6;
40163 t['Odotbelow'] = 0x1ECC;
40164 t['Ogoneksmall'] = 0xF6FB;
40165 t['Ograve'] = 0x00D2;
40166 t['Ogravesmall'] = 0xF7F2;
40167 t['Oharmenian'] = 0x0555;
40168 t['Ohm'] = 0x2126;
40169 t['Ohookabove'] = 0x1ECE;
40170 t['Ohorn'] = 0x01A0;
40171 t['Ohornacute'] = 0x1EDA;
40172 t['Ohorndotbelow'] = 0x1EE2;
40173 t['Ohorngrave'] = 0x1EDC;
40174 t['Ohornhookabove'] = 0x1EDE;
40175 t['Ohorntilde'] = 0x1EE0;
40176 t['Ohungarumlaut'] = 0x0150;
40177 t['Oi'] = 0x01A2;
40178 t['Oinvertedbreve'] = 0x020E;
40179 t['Omacron'] = 0x014C;
40180 t['Omacronacute'] = 0x1E52;
40181 t['Omacrongrave'] = 0x1E50;
40182 t['Omega'] = 0x2126;
40183 t['Omegacyrillic'] = 0x0460;
40184 t['Omegagreek'] = 0x03A9;
40185 t['Omegaroundcyrillic'] = 0x047A;
40186 t['Omegatitlocyrillic'] = 0x047C;
40187 t['Omegatonos'] = 0x038F;
40188 t['Omicron'] = 0x039F;
40189 t['Omicrontonos'] = 0x038C;
40190 t['Omonospace'] = 0xFF2F;
40191 t['Oneroman'] = 0x2160;
40192 t['Oogonek'] = 0x01EA;
40193 t['Oogonekmacron'] = 0x01EC;
40194 t['Oopen'] = 0x0186;
40195 t['Oslash'] = 0x00D8;
40196 t['Oslashacute'] = 0x01FE;
40197 t['Oslashsmall'] = 0xF7F8;
40198 t['Osmall'] = 0xF76F;
40199 t['Ostrokeacute'] = 0x01FE;
40200 t['Otcyrillic'] = 0x047E;
40201 t['Otilde'] = 0x00D5;
40202 t['Otildeacute'] = 0x1E4C;
40203 t['Otildedieresis'] = 0x1E4E;
40204 t['Otildesmall'] = 0xF7F5;
40205 t['P'] = 0x0050;
40206 t['Pacute'] = 0x1E54;
40207 t['Pcircle'] = 0x24C5;
40208 t['Pdotaccent'] = 0x1E56;
40209 t['Pecyrillic'] = 0x041F;
40210 t['Peharmenian'] = 0x054A;
40211 t['Pemiddlehookcyrillic'] = 0x04A6;
40212 t['Phi'] = 0x03A6;
40213 t['Phook'] = 0x01A4;
40214 t['Pi'] = 0x03A0;
40215 t['Piwrarmenian'] = 0x0553;
40216 t['Pmonospace'] = 0xFF30;
40217 t['Psi'] = 0x03A8;
40218 t['Psicyrillic'] = 0x0470;
40219 t['Psmall'] = 0xF770;
40220 t['Q'] = 0x0051;
40221 t['Qcircle'] = 0x24C6;
40222 t['Qmonospace'] = 0xFF31;
40223 t['Qsmall'] = 0xF771;
40224 t['R'] = 0x0052;
40225 t['Raarmenian'] = 0x054C;
40226 t['Racute'] = 0x0154;
40227 t['Rcaron'] = 0x0158;
40228 t['Rcedilla'] = 0x0156;
40229 t['Rcircle'] = 0x24C7;
40230 t['Rcommaaccent'] = 0x0156;
40231 t['Rdblgrave'] = 0x0210;
40232 t['Rdotaccent'] = 0x1E58;
40233 t['Rdotbelow'] = 0x1E5A;
40234 t['Rdotbelowmacron'] = 0x1E5C;
40235 t['Reharmenian'] = 0x0550;
40236 t['Rfraktur'] = 0x211C;
40237 t['Rho'] = 0x03A1;
40238 t['Ringsmall'] = 0xF6FC;
40239 t['Rinvertedbreve'] = 0x0212;
40240 t['Rlinebelow'] = 0x1E5E;
40241 t['Rmonospace'] = 0xFF32;
40242 t['Rsmall'] = 0xF772;
40243 t['Rsmallinverted'] = 0x0281;
40244 t['Rsmallinvertedsuperior'] = 0x02B6;
40245 t['S'] = 0x0053;
40246 t['SF010000'] = 0x250C;
40247 t['SF020000'] = 0x2514;
40248 t['SF030000'] = 0x2510;
40249 t['SF040000'] = 0x2518;
40250 t['SF050000'] = 0x253C;
40251 t['SF060000'] = 0x252C;
40252 t['SF070000'] = 0x2534;
40253 t['SF080000'] = 0x251C;
40254 t['SF090000'] = 0x2524;
40255 t['SF100000'] = 0x2500;
40256 t['SF110000'] = 0x2502;
40257 t['SF190000'] = 0x2561;
40258 t['SF200000'] = 0x2562;
40259 t['SF210000'] = 0x2556;
40260 t['SF220000'] = 0x2555;
40261 t['SF230000'] = 0x2563;
40262 t['SF240000'] = 0x2551;
40263 t['SF250000'] = 0x2557;
40264 t['SF260000'] = 0x255D;
40265 t['SF270000'] = 0x255C;
40266 t['SF280000'] = 0x255B;
40267 t['SF360000'] = 0x255E;
40268 t['SF370000'] = 0x255F;
40269 t['SF380000'] = 0x255A;
40270 t['SF390000'] = 0x2554;
40271 t['SF400000'] = 0x2569;
40272 t['SF410000'] = 0x2566;
40273 t['SF420000'] = 0x2560;
40274 t['SF430000'] = 0x2550;
40275 t['SF440000'] = 0x256C;
40276 t['SF450000'] = 0x2567;
40277 t['SF460000'] = 0x2568;
40278 t['SF470000'] = 0x2564;
40279 t['SF480000'] = 0x2565;
40280 t['SF490000'] = 0x2559;
40281 t['SF500000'] = 0x2558;
40282 t['SF510000'] = 0x2552;
40283 t['SF520000'] = 0x2553;
40284 t['SF530000'] = 0x256B;
40285 t['SF540000'] = 0x256A;
40286 t['Sacute'] = 0x015A;
40287 t['Sacutedotaccent'] = 0x1E64;
40288 t['Sampigreek'] = 0x03E0;
40289 t['Scaron'] = 0x0160;
40290 t['Scarondotaccent'] = 0x1E66;
40291 t['Scaronsmall'] = 0xF6FD;
40292 t['Scedilla'] = 0x015E;
40293 t['Schwa'] = 0x018F;
40294 t['Schwacyrillic'] = 0x04D8;
40295 t['Schwadieresiscyrillic'] = 0x04DA;
40296 t['Scircle'] = 0x24C8;
40297 t['Scircumflex'] = 0x015C;
40298 t['Scommaaccent'] = 0x0218;
40299 t['Sdotaccent'] = 0x1E60;
40300 t['Sdotbelow'] = 0x1E62;
40301 t['Sdotbelowdotaccent'] = 0x1E68;
40302 t['Seharmenian'] = 0x054D;
40303 t['Sevenroman'] = 0x2166;
40304 t['Shaarmenian'] = 0x0547;
40305 t['Shacyrillic'] = 0x0428;
40306 t['Shchacyrillic'] = 0x0429;
40307 t['Sheicoptic'] = 0x03E2;
40308 t['Shhacyrillic'] = 0x04BA;
40309 t['Shimacoptic'] = 0x03EC;
40310 t['Sigma'] = 0x03A3;
40311 t['Sixroman'] = 0x2165;
40312 t['Smonospace'] = 0xFF33;
40313 t['Softsigncyrillic'] = 0x042C;
40314 t['Ssmall'] = 0xF773;
40315 t['Stigmagreek'] = 0x03DA;
40316 t['T'] = 0x0054;
40317 t['Tau'] = 0x03A4;
40318 t['Tbar'] = 0x0166;
40319 t['Tcaron'] = 0x0164;
40320 t['Tcedilla'] = 0x0162;
40321 t['Tcircle'] = 0x24C9;
40322 t['Tcircumflexbelow'] = 0x1E70;
40323 t['Tcommaaccent'] = 0x0162;
40324 t['Tdotaccent'] = 0x1E6A;
40325 t['Tdotbelow'] = 0x1E6C;
40326 t['Tecyrillic'] = 0x0422;
40327 t['Tedescendercyrillic'] = 0x04AC;
40328 t['Tenroman'] = 0x2169;
40329 t['Tetsecyrillic'] = 0x04B4;
40330 t['Theta'] = 0x0398;
40331 t['Thook'] = 0x01AC;
40332 t['Thorn'] = 0x00DE;
40333 t['Thornsmall'] = 0xF7FE;
40334 t['Threeroman'] = 0x2162;
40335 t['Tildesmall'] = 0xF6FE;
40336 t['Tiwnarmenian'] = 0x054F;
40337 t['Tlinebelow'] = 0x1E6E;
40338 t['Tmonospace'] = 0xFF34;
40339 t['Toarmenian'] = 0x0539;
40340 t['Tonefive'] = 0x01BC;
40341 t['Tonesix'] = 0x0184;
40342 t['Tonetwo'] = 0x01A7;
40343 t['Tretroflexhook'] = 0x01AE;
40344 t['Tsecyrillic'] = 0x0426;
40345 t['Tshecyrillic'] = 0x040B;
40346 t['Tsmall'] = 0xF774;
40347 t['Twelveroman'] = 0x216B;
40348 t['Tworoman'] = 0x2161;
40349 t['U'] = 0x0055;
40350 t['Uacute'] = 0x00DA;
40351 t['Uacutesmall'] = 0xF7FA;
40352 t['Ubreve'] = 0x016C;
40353 t['Ucaron'] = 0x01D3;
40354 t['Ucircle'] = 0x24CA;
40355 t['Ucircumflex'] = 0x00DB;
40356 t['Ucircumflexbelow'] = 0x1E76;
40357 t['Ucircumflexsmall'] = 0xF7FB;
40358 t['Ucyrillic'] = 0x0423;
40359 t['Udblacute'] = 0x0170;
40360 t['Udblgrave'] = 0x0214;
40361 t['Udieresis'] = 0x00DC;
40362 t['Udieresisacute'] = 0x01D7;
40363 t['Udieresisbelow'] = 0x1E72;
40364 t['Udieresiscaron'] = 0x01D9;
40365 t['Udieresiscyrillic'] = 0x04F0;
40366 t['Udieresisgrave'] = 0x01DB;
40367 t['Udieresismacron'] = 0x01D5;
40368 t['Udieresissmall'] = 0xF7FC;
40369 t['Udotbelow'] = 0x1EE4;
40370 t['Ugrave'] = 0x00D9;
40371 t['Ugravesmall'] = 0xF7F9;
40372 t['Uhookabove'] = 0x1EE6;
40373 t['Uhorn'] = 0x01AF;
40374 t['Uhornacute'] = 0x1EE8;
40375 t['Uhorndotbelow'] = 0x1EF0;
40376 t['Uhorngrave'] = 0x1EEA;
40377 t['Uhornhookabove'] = 0x1EEC;
40378 t['Uhorntilde'] = 0x1EEE;
40379 t['Uhungarumlaut'] = 0x0170;
40380 t['Uhungarumlautcyrillic'] = 0x04F2;
40381 t['Uinvertedbreve'] = 0x0216;
40382 t['Ukcyrillic'] = 0x0478;
40383 t['Umacron'] = 0x016A;
40384 t['Umacroncyrillic'] = 0x04EE;
40385 t['Umacrondieresis'] = 0x1E7A;
40386 t['Umonospace'] = 0xFF35;
40387 t['Uogonek'] = 0x0172;
40388 t['Upsilon'] = 0x03A5;
40389 t['Upsilon1'] = 0x03D2;
40390 t['Upsilonacutehooksymbolgreek'] = 0x03D3;
40391 t['Upsilonafrican'] = 0x01B1;
40392 t['Upsilondieresis'] = 0x03AB;
40393 t['Upsilondieresishooksymbolgreek'] = 0x03D4;
40394 t['Upsilonhooksymbol'] = 0x03D2;
40395 t['Upsilontonos'] = 0x038E;
40396 t['Uring'] = 0x016E;
40397 t['Ushortcyrillic'] = 0x040E;
40398 t['Usmall'] = 0xF775;
40399 t['Ustraightcyrillic'] = 0x04AE;
40400 t['Ustraightstrokecyrillic'] = 0x04B0;
40401 t['Utilde'] = 0x0168;
40402 t['Utildeacute'] = 0x1E78;
40403 t['Utildebelow'] = 0x1E74;
40404 t['V'] = 0x0056;
40405 t['Vcircle'] = 0x24CB;
40406 t['Vdotbelow'] = 0x1E7E;
40407 t['Vecyrillic'] = 0x0412;
40408 t['Vewarmenian'] = 0x054E;
40409 t['Vhook'] = 0x01B2;
40410 t['Vmonospace'] = 0xFF36;
40411 t['Voarmenian'] = 0x0548;
40412 t['Vsmall'] = 0xF776;
40413 t['Vtilde'] = 0x1E7C;
40414 t['W'] = 0x0057;
40415 t['Wacute'] = 0x1E82;
40416 t['Wcircle'] = 0x24CC;
40417 t['Wcircumflex'] = 0x0174;
40418 t['Wdieresis'] = 0x1E84;
40419 t['Wdotaccent'] = 0x1E86;
40420 t['Wdotbelow'] = 0x1E88;
40421 t['Wgrave'] = 0x1E80;
40422 t['Wmonospace'] = 0xFF37;
40423 t['Wsmall'] = 0xF777;
40424 t['X'] = 0x0058;
40425 t['Xcircle'] = 0x24CD;
40426 t['Xdieresis'] = 0x1E8C;
40427 t['Xdotaccent'] = 0x1E8A;
40428 t['Xeharmenian'] = 0x053D;
40429 t['Xi'] = 0x039E;
40430 t['Xmonospace'] = 0xFF38;
40431 t['Xsmall'] = 0xF778;
40432 t['Y'] = 0x0059;
40433 t['Yacute'] = 0x00DD;
40434 t['Yacutesmall'] = 0xF7FD;
40435 t['Yatcyrillic'] = 0x0462;
40436 t['Ycircle'] = 0x24CE;
40437 t['Ycircumflex'] = 0x0176;
40438 t['Ydieresis'] = 0x0178;
40439 t['Ydieresissmall'] = 0xF7FF;
40440 t['Ydotaccent'] = 0x1E8E;
40441 t['Ydotbelow'] = 0x1EF4;
40442 t['Yericyrillic'] = 0x042B;
40443 t['Yerudieresiscyrillic'] = 0x04F8;
40444 t['Ygrave'] = 0x1EF2;
40445 t['Yhook'] = 0x01B3;
40446 t['Yhookabove'] = 0x1EF6;
40447 t['Yiarmenian'] = 0x0545;
40448 t['Yicyrillic'] = 0x0407;
40449 t['Yiwnarmenian'] = 0x0552;
40450 t['Ymonospace'] = 0xFF39;
40451 t['Ysmall'] = 0xF779;
40452 t['Ytilde'] = 0x1EF8;
40453 t['Yusbigcyrillic'] = 0x046A;
40454 t['Yusbigiotifiedcyrillic'] = 0x046C;
40455 t['Yuslittlecyrillic'] = 0x0466;
40456 t['Yuslittleiotifiedcyrillic'] = 0x0468;
40457 t['Z'] = 0x005A;
40458 t['Zaarmenian'] = 0x0536;
40459 t['Zacute'] = 0x0179;
40460 t['Zcaron'] = 0x017D;
40461 t['Zcaronsmall'] = 0xF6FF;
40462 t['Zcircle'] = 0x24CF;
40463 t['Zcircumflex'] = 0x1E90;
40464 t['Zdot'] = 0x017B;
40465 t['Zdotaccent'] = 0x017B;
40466 t['Zdotbelow'] = 0x1E92;
40467 t['Zecyrillic'] = 0x0417;
40468 t['Zedescendercyrillic'] = 0x0498;
40469 t['Zedieresiscyrillic'] = 0x04DE;
40470 t['Zeta'] = 0x0396;
40471 t['Zhearmenian'] = 0x053A;
40472 t['Zhebrevecyrillic'] = 0x04C1;
40473 t['Zhecyrillic'] = 0x0416;
40474 t['Zhedescendercyrillic'] = 0x0496;
40475 t['Zhedieresiscyrillic'] = 0x04DC;
40476 t['Zlinebelow'] = 0x1E94;
40477 t['Zmonospace'] = 0xFF3A;
40478 t['Zsmall'] = 0xF77A;
40479 t['Zstroke'] = 0x01B5;
40480 t['a'] = 0x0061;
40481 t['aabengali'] = 0x0986;
40482 t['aacute'] = 0x00E1;
40483 t['aadeva'] = 0x0906;
40484 t['aagujarati'] = 0x0A86;
40485 t['aagurmukhi'] = 0x0A06;
40486 t['aamatragurmukhi'] = 0x0A3E;
40487 t['aarusquare'] = 0x3303;
40488 t['aavowelsignbengali'] = 0x09BE;
40489 t['aavowelsigndeva'] = 0x093E;
40490 t['aavowelsigngujarati'] = 0x0ABE;
40491 t['abbreviationmarkarmenian'] = 0x055F;
40492 t['abbreviationsigndeva'] = 0x0970;
40493 t['abengali'] = 0x0985;
40494 t['abopomofo'] = 0x311A;
40495 t['abreve'] = 0x0103;
40496 t['abreveacute'] = 0x1EAF;
40497 t['abrevecyrillic'] = 0x04D1;
40498 t['abrevedotbelow'] = 0x1EB7;
40499 t['abrevegrave'] = 0x1EB1;
40500 t['abrevehookabove'] = 0x1EB3;
40501 t['abrevetilde'] = 0x1EB5;
40502 t['acaron'] = 0x01CE;
40503 t['acircle'] = 0x24D0;
40504 t['acircumflex'] = 0x00E2;
40505 t['acircumflexacute'] = 0x1EA5;
40506 t['acircumflexdotbelow'] = 0x1EAD;
40507 t['acircumflexgrave'] = 0x1EA7;
40508 t['acircumflexhookabove'] = 0x1EA9;
40509 t['acircumflextilde'] = 0x1EAB;
40510 t['acute'] = 0x00B4;
40511 t['acutebelowcmb'] = 0x0317;
40512 t['acutecmb'] = 0x0301;
40513 t['acutecomb'] = 0x0301;
40514 t['acutedeva'] = 0x0954;
40515 t['acutelowmod'] = 0x02CF;
40516 t['acutetonecmb'] = 0x0341;
40517 t['acyrillic'] = 0x0430;
40518 t['adblgrave'] = 0x0201;
40519 t['addakgurmukhi'] = 0x0A71;
40520 t['adeva'] = 0x0905;
40521 t['adieresis'] = 0x00E4;
40522 t['adieresiscyrillic'] = 0x04D3;
40523 t['adieresismacron'] = 0x01DF;
40524 t['adotbelow'] = 0x1EA1;
40525 t['adotmacron'] = 0x01E1;
40526 t['ae'] = 0x00E6;
40527 t['aeacute'] = 0x01FD;
40528 t['aekorean'] = 0x3150;
40529 t['aemacron'] = 0x01E3;
40530 t['afii00208'] = 0x2015;
40531 t['afii08941'] = 0x20A4;
40532 t['afii10017'] = 0x0410;
40533 t['afii10018'] = 0x0411;
40534 t['afii10019'] = 0x0412;
40535 t['afii10020'] = 0x0413;
40536 t['afii10021'] = 0x0414;
40537 t['afii10022'] = 0x0415;
40538 t['afii10023'] = 0x0401;
40539 t['afii10024'] = 0x0416;
40540 t['afii10025'] = 0x0417;
40541 t['afii10026'] = 0x0418;
40542 t['afii10027'] = 0x0419;
40543 t['afii10028'] = 0x041A;
40544 t['afii10029'] = 0x041B;
40545 t['afii10030'] = 0x041C;
40546 t['afii10031'] = 0x041D;
40547 t['afii10032'] = 0x041E;
40548 t['afii10033'] = 0x041F;
40549 t['afii10034'] = 0x0420;
40550 t['afii10035'] = 0x0421;
40551 t['afii10036'] = 0x0422;
40552 t['afii10037'] = 0x0423;
40553 t['afii10038'] = 0x0424;
40554 t['afii10039'] = 0x0425;
40555 t['afii10040'] = 0x0426;
40556 t['afii10041'] = 0x0427;
40557 t['afii10042'] = 0x0428;
40558 t['afii10043'] = 0x0429;
40559 t['afii10044'] = 0x042A;
40560 t['afii10045'] = 0x042B;
40561 t['afii10046'] = 0x042C;
40562 t['afii10047'] = 0x042D;
40563 t['afii10048'] = 0x042E;
40564 t['afii10049'] = 0x042F;
40565 t['afii10050'] = 0x0490;
40566 t['afii10051'] = 0x0402;
40567 t['afii10052'] = 0x0403;
40568 t['afii10053'] = 0x0404;
40569 t['afii10054'] = 0x0405;
40570 t['afii10055'] = 0x0406;
40571 t['afii10056'] = 0x0407;
40572 t['afii10057'] = 0x0408;
40573 t['afii10058'] = 0x0409;
40574 t['afii10059'] = 0x040A;
40575 t['afii10060'] = 0x040B;
40576 t['afii10061'] = 0x040C;
40577 t['afii10062'] = 0x040E;
40578 t['afii10063'] = 0xF6C4;
40579 t['afii10064'] = 0xF6C5;
40580 t['afii10065'] = 0x0430;
40581 t['afii10066'] = 0x0431;
40582 t['afii10067'] = 0x0432;
40583 t['afii10068'] = 0x0433;
40584 t['afii10069'] = 0x0434;
40585 t['afii10070'] = 0x0435;
40586 t['afii10071'] = 0x0451;
40587 t['afii10072'] = 0x0436;
40588 t['afii10073'] = 0x0437;
40589 t['afii10074'] = 0x0438;
40590 t['afii10075'] = 0x0439;
40591 t['afii10076'] = 0x043A;
40592 t['afii10077'] = 0x043B;
40593 t['afii10078'] = 0x043C;
40594 t['afii10079'] = 0x043D;
40595 t['afii10080'] = 0x043E;
40596 t['afii10081'] = 0x043F;
40597 t['afii10082'] = 0x0440;
40598 t['afii10083'] = 0x0441;
40599 t['afii10084'] = 0x0442;
40600 t['afii10085'] = 0x0443;
40601 t['afii10086'] = 0x0444;
40602 t['afii10087'] = 0x0445;
40603 t['afii10088'] = 0x0446;
40604 t['afii10089'] = 0x0447;
40605 t['afii10090'] = 0x0448;
40606 t['afii10091'] = 0x0449;
40607 t['afii10092'] = 0x044A;
40608 t['afii10093'] = 0x044B;
40609 t['afii10094'] = 0x044C;
40610 t['afii10095'] = 0x044D;
40611 t['afii10096'] = 0x044E;
40612 t['afii10097'] = 0x044F;
40613 t['afii10098'] = 0x0491;
40614 t['afii10099'] = 0x0452;
40615 t['afii10100'] = 0x0453;
40616 t['afii10101'] = 0x0454;
40617 t['afii10102'] = 0x0455;
40618 t['afii10103'] = 0x0456;
40619 t['afii10104'] = 0x0457;
40620 t['afii10105'] = 0x0458;
40621 t['afii10106'] = 0x0459;
40622 t['afii10107'] = 0x045A;
40623 t['afii10108'] = 0x045B;
40624 t['afii10109'] = 0x045C;
40625 t['afii10110'] = 0x045E;
40626 t['afii10145'] = 0x040F;
40627 t['afii10146'] = 0x0462;
40628 t['afii10147'] = 0x0472;
40629 t['afii10148'] = 0x0474;
40630 t['afii10192'] = 0xF6C6;
40631 t['afii10193'] = 0x045F;
40632 t['afii10194'] = 0x0463;
40633 t['afii10195'] = 0x0473;
40634 t['afii10196'] = 0x0475;
40635 t['afii10831'] = 0xF6C7;
40636 t['afii10832'] = 0xF6C8;
40637 t['afii10846'] = 0x04D9;
40638 t['afii299'] = 0x200E;
40639 t['afii300'] = 0x200F;
40640 t['afii301'] = 0x200D;
40641 t['afii57381'] = 0x066A;
40642 t['afii57388'] = 0x060C;
40643 t['afii57392'] = 0x0660;
40644 t['afii57393'] = 0x0661;
40645 t['afii57394'] = 0x0662;
40646 t['afii57395'] = 0x0663;
40647 t['afii57396'] = 0x0664;
40648 t['afii57397'] = 0x0665;
40649 t['afii57398'] = 0x0666;
40650 t['afii57399'] = 0x0667;
40651 t['afii57400'] = 0x0668;
40652 t['afii57401'] = 0x0669;
40653 t['afii57403'] = 0x061B;
40654 t['afii57407'] = 0x061F;
40655 t['afii57409'] = 0x0621;
40656 t['afii57410'] = 0x0622;
40657 t['afii57411'] = 0x0623;
40658 t['afii57412'] = 0x0624;
40659 t['afii57413'] = 0x0625;
40660 t['afii57414'] = 0x0626;
40661 t['afii57415'] = 0x0627;
40662 t['afii57416'] = 0x0628;
40663 t['afii57417'] = 0x0629;
40664 t['afii57418'] = 0x062A;
40665 t['afii57419'] = 0x062B;
40666 t['afii57420'] = 0x062C;
40667 t['afii57421'] = 0x062D;
40668 t['afii57422'] = 0x062E;
40669 t['afii57423'] = 0x062F;
40670 t['afii57424'] = 0x0630;
40671 t['afii57425'] = 0x0631;
40672 t['afii57426'] = 0x0632;
40673 t['afii57427'] = 0x0633;
40674 t['afii57428'] = 0x0634;
40675 t['afii57429'] = 0x0635;
40676 t['afii57430'] = 0x0636;
40677 t['afii57431'] = 0x0637;
40678 t['afii57432'] = 0x0638;
40679 t['afii57433'] = 0x0639;
40680 t['afii57434'] = 0x063A;
40681 t['afii57440'] = 0x0640;
40682 t['afii57441'] = 0x0641;
40683 t['afii57442'] = 0x0642;
40684 t['afii57443'] = 0x0643;
40685 t['afii57444'] = 0x0644;
40686 t['afii57445'] = 0x0645;
40687 t['afii57446'] = 0x0646;
40688 t['afii57448'] = 0x0648;
40689 t['afii57449'] = 0x0649;
40690 t['afii57450'] = 0x064A;
40691 t['afii57451'] = 0x064B;
40692 t['afii57452'] = 0x064C;
40693 t['afii57453'] = 0x064D;
40694 t['afii57454'] = 0x064E;
40695 t['afii57455'] = 0x064F;
40696 t['afii57456'] = 0x0650;
40697 t['afii57457'] = 0x0651;
40698 t['afii57458'] = 0x0652;
40699 t['afii57470'] = 0x0647;
40700 t['afii57505'] = 0x06A4;
40701 t['afii57506'] = 0x067E;
40702 t['afii57507'] = 0x0686;
40703 t['afii57508'] = 0x0698;
40704 t['afii57509'] = 0x06AF;
40705 t['afii57511'] = 0x0679;
40706 t['afii57512'] = 0x0688;
40707 t['afii57513'] = 0x0691;
40708 t['afii57514'] = 0x06BA;
40709 t['afii57519'] = 0x06D2;
40710 t['afii57534'] = 0x06D5;
40711 t['afii57636'] = 0x20AA;
40712 t['afii57645'] = 0x05BE;
40713 t['afii57658'] = 0x05C3;
40714 t['afii57664'] = 0x05D0;
40715 t['afii57665'] = 0x05D1;
40716 t['afii57666'] = 0x05D2;
40717 t['afii57667'] = 0x05D3;
40718 t['afii57668'] = 0x05D4;
40719 t['afii57669'] = 0x05D5;
40720 t['afii57670'] = 0x05D6;
40721 t['afii57671'] = 0x05D7;
40722 t['afii57672'] = 0x05D8;
40723 t['afii57673'] = 0x05D9;
40724 t['afii57674'] = 0x05DA;
40725 t['afii57675'] = 0x05DB;
40726 t['afii57676'] = 0x05DC;
40727 t['afii57677'] = 0x05DD;
40728 t['afii57678'] = 0x05DE;
40729 t['afii57679'] = 0x05DF;
40730 t['afii57680'] = 0x05E0;
40731 t['afii57681'] = 0x05E1;
40732 t['afii57682'] = 0x05E2;
40733 t['afii57683'] = 0x05E3;
40734 t['afii57684'] = 0x05E4;
40735 t['afii57685'] = 0x05E5;
40736 t['afii57686'] = 0x05E6;
40737 t['afii57687'] = 0x05E7;
40738 t['afii57688'] = 0x05E8;
40739 t['afii57689'] = 0x05E9;
40740 t['afii57690'] = 0x05EA;
40741 t['afii57694'] = 0xFB2A;
40742 t['afii57695'] = 0xFB2B;
40743 t['afii57700'] = 0xFB4B;
40744 t['afii57705'] = 0xFB1F;
40745 t['afii57716'] = 0x05F0;
40746 t['afii57717'] = 0x05F1;
40747 t['afii57718'] = 0x05F2;
40748 t['afii57723'] = 0xFB35;
40749 t['afii57793'] = 0x05B4;
40750 t['afii57794'] = 0x05B5;
40751 t['afii57795'] = 0x05B6;
40752 t['afii57796'] = 0x05BB;
40753 t['afii57797'] = 0x05B8;
40754 t['afii57798'] = 0x05B7;
40755 t['afii57799'] = 0x05B0;
40756 t['afii57800'] = 0x05B2;
40757 t['afii57801'] = 0x05B1;
40758 t['afii57802'] = 0x05B3;
40759 t['afii57803'] = 0x05C2;
40760 t['afii57804'] = 0x05C1;
40761 t['afii57806'] = 0x05B9;
40762 t['afii57807'] = 0x05BC;
40763 t['afii57839'] = 0x05BD;
40764 t['afii57841'] = 0x05BF;
40765 t['afii57842'] = 0x05C0;
40766 t['afii57929'] = 0x02BC;
40767 t['afii61248'] = 0x2105;
40768 t['afii61289'] = 0x2113;
40769 t['afii61352'] = 0x2116;
40770 t['afii61573'] = 0x202C;
40771 t['afii61574'] = 0x202D;
40772 t['afii61575'] = 0x202E;
40773 t['afii61664'] = 0x200C;
40774 t['afii63167'] = 0x066D;
40775 t['afii64937'] = 0x02BD;
40776 t['agrave'] = 0x00E0;
40777 t['agujarati'] = 0x0A85;
40778 t['agurmukhi'] = 0x0A05;
40779 t['ahiragana'] = 0x3042;
40780 t['ahookabove'] = 0x1EA3;
40781 t['aibengali'] = 0x0990;
40782 t['aibopomofo'] = 0x311E;
40783 t['aideva'] = 0x0910;
40784 t['aiecyrillic'] = 0x04D5;
40785 t['aigujarati'] = 0x0A90;
40786 t['aigurmukhi'] = 0x0A10;
40787 t['aimatragurmukhi'] = 0x0A48;
40788 t['ainarabic'] = 0x0639;
40789 t['ainfinalarabic'] = 0xFECA;
40790 t['aininitialarabic'] = 0xFECB;
40791 t['ainmedialarabic'] = 0xFECC;
40792 t['ainvertedbreve'] = 0x0203;
40793 t['aivowelsignbengali'] = 0x09C8;
40794 t['aivowelsigndeva'] = 0x0948;
40795 t['aivowelsigngujarati'] = 0x0AC8;
40796 t['akatakana'] = 0x30A2;
40797 t['akatakanahalfwidth'] = 0xFF71;
40798 t['akorean'] = 0x314F;
40799 t['alef'] = 0x05D0;
40800 t['alefarabic'] = 0x0627;
40801 t['alefdageshhebrew'] = 0xFB30;
40802 t['aleffinalarabic'] = 0xFE8E;
40803 t['alefhamzaabovearabic'] = 0x0623;
40804 t['alefhamzaabovefinalarabic'] = 0xFE84;
40805 t['alefhamzabelowarabic'] = 0x0625;
40806 t['alefhamzabelowfinalarabic'] = 0xFE88;
40807 t['alefhebrew'] = 0x05D0;
40808 t['aleflamedhebrew'] = 0xFB4F;
40809 t['alefmaddaabovearabic'] = 0x0622;
40810 t['alefmaddaabovefinalarabic'] = 0xFE82;
40811 t['alefmaksuraarabic'] = 0x0649;
40812 t['alefmaksurafinalarabic'] = 0xFEF0;
40813 t['alefmaksurainitialarabic'] = 0xFEF3;
40814 t['alefmaksuramedialarabic'] = 0xFEF4;
40815 t['alefpatahhebrew'] = 0xFB2E;
40816 t['alefqamatshebrew'] = 0xFB2F;
40817 t['aleph'] = 0x2135;
40818 t['allequal'] = 0x224C;
40819 t['alpha'] = 0x03B1;
40820 t['alphatonos'] = 0x03AC;
40821 t['amacron'] = 0x0101;
40822 t['amonospace'] = 0xFF41;
40823 t['ampersand'] = 0x0026;
40824 t['ampersandmonospace'] = 0xFF06;
40825 t['ampersandsmall'] = 0xF726;
40826 t['amsquare'] = 0x33C2;
40827 t['anbopomofo'] = 0x3122;
40828 t['angbopomofo'] = 0x3124;
40829 t['angbracketleft'] = 0x3008;
40830 t['angbracketright'] = 0x3009;
40831 t['angkhankhuthai'] = 0x0E5A;
40832 t['angle'] = 0x2220;
40833 t['anglebracketleft'] = 0x3008;
40834 t['anglebracketleftvertical'] = 0xFE3F;
40835 t['anglebracketright'] = 0x3009;
40836 t['anglebracketrightvertical'] = 0xFE40;
40837 t['angleleft'] = 0x2329;
40838 t['angleright'] = 0x232A;
40839 t['angstrom'] = 0x212B;
40840 t['anoteleia'] = 0x0387;
40841 t['anudattadeva'] = 0x0952;
40842 t['anusvarabengali'] = 0x0982;
40843 t['anusvaradeva'] = 0x0902;
40844 t['anusvaragujarati'] = 0x0A82;
40845 t['aogonek'] = 0x0105;
40846 t['apaatosquare'] = 0x3300;
40847 t['aparen'] = 0x249C;
40848 t['apostrophearmenian'] = 0x055A;
40849 t['apostrophemod'] = 0x02BC;
40850 t['apple'] = 0xF8FF;
40851 t['approaches'] = 0x2250;
40852 t['approxequal'] = 0x2248;
40853 t['approxequalorimage'] = 0x2252;
40854 t['approximatelyequal'] = 0x2245;
40855 t['araeaekorean'] = 0x318E;
40856 t['araeakorean'] = 0x318D;
40857 t['arc'] = 0x2312;
40858 t['arighthalfring'] = 0x1E9A;
40859 t['aring'] = 0x00E5;
40860 t['aringacute'] = 0x01FB;
40861 t['aringbelow'] = 0x1E01;
40862 t['arrowboth'] = 0x2194;
40863 t['arrowdashdown'] = 0x21E3;
40864 t['arrowdashleft'] = 0x21E0;
40865 t['arrowdashright'] = 0x21E2;
40866 t['arrowdashup'] = 0x21E1;
40867 t['arrowdblboth'] = 0x21D4;
40868 t['arrowdbldown'] = 0x21D3;
40869 t['arrowdblleft'] = 0x21D0;
40870 t['arrowdblright'] = 0x21D2;
40871 t['arrowdblup'] = 0x21D1;
40872 t['arrowdown'] = 0x2193;
40873 t['arrowdownleft'] = 0x2199;
40874 t['arrowdownright'] = 0x2198;
40875 t['arrowdownwhite'] = 0x21E9;
40876 t['arrowheaddownmod'] = 0x02C5;
40877 t['arrowheadleftmod'] = 0x02C2;
40878 t['arrowheadrightmod'] = 0x02C3;
40879 t['arrowheadupmod'] = 0x02C4;
40880 t['arrowhorizex'] = 0xF8E7;
40881 t['arrowleft'] = 0x2190;
40882 t['arrowleftdbl'] = 0x21D0;
40883 t['arrowleftdblstroke'] = 0x21CD;
40884 t['arrowleftoverright'] = 0x21C6;
40885 t['arrowleftwhite'] = 0x21E6;
40886 t['arrowright'] = 0x2192;
40887 t['arrowrightdblstroke'] = 0x21CF;
40888 t['arrowrightheavy'] = 0x279E;
40889 t['arrowrightoverleft'] = 0x21C4;
40890 t['arrowrightwhite'] = 0x21E8;
40891 t['arrowtableft'] = 0x21E4;
40892 t['arrowtabright'] = 0x21E5;
40893 t['arrowup'] = 0x2191;
40894 t['arrowupdn'] = 0x2195;
40895 t['arrowupdnbse'] = 0x21A8;
40896 t['arrowupdownbase'] = 0x21A8;
40897 t['arrowupleft'] = 0x2196;
40898 t['arrowupleftofdown'] = 0x21C5;
40899 t['arrowupright'] = 0x2197;
40900 t['arrowupwhite'] = 0x21E7;
40901 t['arrowvertex'] = 0xF8E6;
40902 t['asciicircum'] = 0x005E;
40903 t['asciicircummonospace'] = 0xFF3E;
40904 t['asciitilde'] = 0x007E;
40905 t['asciitildemonospace'] = 0xFF5E;
40906 t['ascript'] = 0x0251;
40907 t['ascriptturned'] = 0x0252;
40908 t['asmallhiragana'] = 0x3041;
40909 t['asmallkatakana'] = 0x30A1;
40910 t['asmallkatakanahalfwidth'] = 0xFF67;
40911 t['asterisk'] = 0x002A;
40912 t['asteriskaltonearabic'] = 0x066D;
40913 t['asteriskarabic'] = 0x066D;
40914 t['asteriskmath'] = 0x2217;
40915 t['asteriskmonospace'] = 0xFF0A;
40916 t['asterisksmall'] = 0xFE61;
40917 t['asterism'] = 0x2042;
40918 t['asuperior'] = 0xF6E9;
40919 t['asymptoticallyequal'] = 0x2243;
40920 t['at'] = 0x0040;
40921 t['atilde'] = 0x00E3;
40922 t['atmonospace'] = 0xFF20;
40923 t['atsmall'] = 0xFE6B;
40924 t['aturned'] = 0x0250;
40925 t['aubengali'] = 0x0994;
40926 t['aubopomofo'] = 0x3120;
40927 t['audeva'] = 0x0914;
40928 t['augujarati'] = 0x0A94;
40929 t['augurmukhi'] = 0x0A14;
40930 t['aulengthmarkbengali'] = 0x09D7;
40931 t['aumatragurmukhi'] = 0x0A4C;
40932 t['auvowelsignbengali'] = 0x09CC;
40933 t['auvowelsigndeva'] = 0x094C;
40934 t['auvowelsigngujarati'] = 0x0ACC;
40935 t['avagrahadeva'] = 0x093D;
40936 t['aybarmenian'] = 0x0561;
40937 t['ayin'] = 0x05E2;
40938 t['ayinaltonehebrew'] = 0xFB20;
40939 t['ayinhebrew'] = 0x05E2;
40940 t['b'] = 0x0062;
40941 t['babengali'] = 0x09AC;
40942 t['backslash'] = 0x005C;
40943 t['backslashmonospace'] = 0xFF3C;
40944 t['badeva'] = 0x092C;
40945 t['bagujarati'] = 0x0AAC;
40946 t['bagurmukhi'] = 0x0A2C;
40947 t['bahiragana'] = 0x3070;
40948 t['bahtthai'] = 0x0E3F;
40949 t['bakatakana'] = 0x30D0;
40950 t['bar'] = 0x007C;
40951 t['barmonospace'] = 0xFF5C;
40952 t['bbopomofo'] = 0x3105;
40953 t['bcircle'] = 0x24D1;
40954 t['bdotaccent'] = 0x1E03;
40955 t['bdotbelow'] = 0x1E05;
40956 t['beamedsixteenthnotes'] = 0x266C;
40957 t['because'] = 0x2235;
40958 t['becyrillic'] = 0x0431;
40959 t['beharabic'] = 0x0628;
40960 t['behfinalarabic'] = 0xFE90;
40961 t['behinitialarabic'] = 0xFE91;
40962 t['behiragana'] = 0x3079;
40963 t['behmedialarabic'] = 0xFE92;
40964 t['behmeeminitialarabic'] = 0xFC9F;
40965 t['behmeemisolatedarabic'] = 0xFC08;
40966 t['behnoonfinalarabic'] = 0xFC6D;
40967 t['bekatakana'] = 0x30D9;
40968 t['benarmenian'] = 0x0562;
40969 t['bet'] = 0x05D1;
40970 t['beta'] = 0x03B2;
40971 t['betasymbolgreek'] = 0x03D0;
40972 t['betdagesh'] = 0xFB31;
40973 t['betdageshhebrew'] = 0xFB31;
40974 t['bethebrew'] = 0x05D1;
40975 t['betrafehebrew'] = 0xFB4C;
40976 t['bhabengali'] = 0x09AD;
40977 t['bhadeva'] = 0x092D;
40978 t['bhagujarati'] = 0x0AAD;
40979 t['bhagurmukhi'] = 0x0A2D;
40980 t['bhook'] = 0x0253;
40981 t['bihiragana'] = 0x3073;
40982 t['bikatakana'] = 0x30D3;
40983 t['bilabialclick'] = 0x0298;
40984 t['bindigurmukhi'] = 0x0A02;
40985 t['birusquare'] = 0x3331;
40986 t['blackcircle'] = 0x25CF;
40987 t['blackdiamond'] = 0x25C6;
40988 t['blackdownpointingtriangle'] = 0x25BC;
40989 t['blackleftpointingpointer'] = 0x25C4;
40990 t['blackleftpointingtriangle'] = 0x25C0;
40991 t['blacklenticularbracketleft'] = 0x3010;
40992 t['blacklenticularbracketleftvertical'] = 0xFE3B;
40993 t['blacklenticularbracketright'] = 0x3011;
40994 t['blacklenticularbracketrightvertical'] = 0xFE3C;
40995 t['blacklowerlefttriangle'] = 0x25E3;
40996 t['blacklowerrighttriangle'] = 0x25E2;
40997 t['blackrectangle'] = 0x25AC;
40998 t['blackrightpointingpointer'] = 0x25BA;
40999 t['blackrightpointingtriangle'] = 0x25B6;
41000 t['blacksmallsquare'] = 0x25AA;
41001 t['blacksmilingface'] = 0x263B;
41002 t['blacksquare'] = 0x25A0;
41003 t['blackstar'] = 0x2605;
41004 t['blackupperlefttriangle'] = 0x25E4;
41005 t['blackupperrighttriangle'] = 0x25E5;
41006 t['blackuppointingsmalltriangle'] = 0x25B4;
41007 t['blackuppointingtriangle'] = 0x25B2;
41008 t['blank'] = 0x2423;
41009 t['blinebelow'] = 0x1E07;
41010 t['block'] = 0x2588;
41011 t['bmonospace'] = 0xFF42;
41012 t['bobaimaithai'] = 0x0E1A;
41013 t['bohiragana'] = 0x307C;
41014 t['bokatakana'] = 0x30DC;
41015 t['bparen'] = 0x249D;
41016 t['bqsquare'] = 0x33C3;
41017 t['braceex'] = 0xF8F4;
41018 t['braceleft'] = 0x007B;
41019 t['braceleftbt'] = 0xF8F3;
41020 t['braceleftmid'] = 0xF8F2;
41021 t['braceleftmonospace'] = 0xFF5B;
41022 t['braceleftsmall'] = 0xFE5B;
41023 t['bracelefttp'] = 0xF8F1;
41024 t['braceleftvertical'] = 0xFE37;
41025 t['braceright'] = 0x007D;
41026 t['bracerightbt'] = 0xF8FE;
41027 t['bracerightmid'] = 0xF8FD;
41028 t['bracerightmonospace'] = 0xFF5D;
41029 t['bracerightsmall'] = 0xFE5C;
41030 t['bracerighttp'] = 0xF8FC;
41031 t['bracerightvertical'] = 0xFE38;
41032 t['bracketleft'] = 0x005B;
41033 t['bracketleftbt'] = 0xF8F0;
41034 t['bracketleftex'] = 0xF8EF;
41035 t['bracketleftmonospace'] = 0xFF3B;
41036 t['bracketlefttp'] = 0xF8EE;
41037 t['bracketright'] = 0x005D;
41038 t['bracketrightbt'] = 0xF8FB;
41039 t['bracketrightex'] = 0xF8FA;
41040 t['bracketrightmonospace'] = 0xFF3D;
41041 t['bracketrighttp'] = 0xF8F9;
41042 t['breve'] = 0x02D8;
41043 t['brevebelowcmb'] = 0x032E;
41044 t['brevecmb'] = 0x0306;
41045 t['breveinvertedbelowcmb'] = 0x032F;
41046 t['breveinvertedcmb'] = 0x0311;
41047 t['breveinverteddoublecmb'] = 0x0361;
41048 t['bridgebelowcmb'] = 0x032A;
41049 t['bridgeinvertedbelowcmb'] = 0x033A;
41050 t['brokenbar'] = 0x00A6;
41051 t['bstroke'] = 0x0180;
41052 t['bsuperior'] = 0xF6EA;
41053 t['btopbar'] = 0x0183;
41054 t['buhiragana'] = 0x3076;
41055 t['bukatakana'] = 0x30D6;
41056 t['bullet'] = 0x2022;
41057 t['bulletinverse'] = 0x25D8;
41058 t['bulletoperator'] = 0x2219;
41059 t['bullseye'] = 0x25CE;
41060 t['c'] = 0x0063;
41061 t['caarmenian'] = 0x056E;
41062 t['cabengali'] = 0x099A;
41063 t['cacute'] = 0x0107;
41064 t['cadeva'] = 0x091A;
41065 t['cagujarati'] = 0x0A9A;
41066 t['cagurmukhi'] = 0x0A1A;
41067 t['calsquare'] = 0x3388;
41068 t['candrabindubengali'] = 0x0981;
41069 t['candrabinducmb'] = 0x0310;
41070 t['candrabindudeva'] = 0x0901;
41071 t['candrabindugujarati'] = 0x0A81;
41072 t['capslock'] = 0x21EA;
41073 t['careof'] = 0x2105;
41074 t['caron'] = 0x02C7;
41075 t['caronbelowcmb'] = 0x032C;
41076 t['caroncmb'] = 0x030C;
41077 t['carriagereturn'] = 0x21B5;
41078 t['cbopomofo'] = 0x3118;
41079 t['ccaron'] = 0x010D;
41080 t['ccedilla'] = 0x00E7;
41081 t['ccedillaacute'] = 0x1E09;
41082 t['ccircle'] = 0x24D2;
41083 t['ccircumflex'] = 0x0109;
41084 t['ccurl'] = 0x0255;
41085 t['cdot'] = 0x010B;
41086 t['cdotaccent'] = 0x010B;
41087 t['cdsquare'] = 0x33C5;
41088 t['cedilla'] = 0x00B8;
41089 t['cedillacmb'] = 0x0327;
41090 t['cent'] = 0x00A2;
41091 t['centigrade'] = 0x2103;
41092 t['centinferior'] = 0xF6DF;
41093 t['centmonospace'] = 0xFFE0;
41094 t['centoldstyle'] = 0xF7A2;
41095 t['centsuperior'] = 0xF6E0;
41096 t['chaarmenian'] = 0x0579;
41097 t['chabengali'] = 0x099B;
41098 t['chadeva'] = 0x091B;
41099 t['chagujarati'] = 0x0A9B;
41100 t['chagurmukhi'] = 0x0A1B;
41101 t['chbopomofo'] = 0x3114;
41102 t['cheabkhasiancyrillic'] = 0x04BD;
41103 t['checkmark'] = 0x2713;
41104 t['checyrillic'] = 0x0447;
41105 t['chedescenderabkhasiancyrillic'] = 0x04BF;
41106 t['chedescendercyrillic'] = 0x04B7;
41107 t['chedieresiscyrillic'] = 0x04F5;
41108 t['cheharmenian'] = 0x0573;
41109 t['chekhakassiancyrillic'] = 0x04CC;
41110 t['cheverticalstrokecyrillic'] = 0x04B9;
41111 t['chi'] = 0x03C7;
41112 t['chieuchacirclekorean'] = 0x3277;
41113 t['chieuchaparenkorean'] = 0x3217;
41114 t['chieuchcirclekorean'] = 0x3269;
41115 t['chieuchkorean'] = 0x314A;
41116 t['chieuchparenkorean'] = 0x3209;
41117 t['chochangthai'] = 0x0E0A;
41118 t['chochanthai'] = 0x0E08;
41119 t['chochingthai'] = 0x0E09;
41120 t['chochoethai'] = 0x0E0C;
41121 t['chook'] = 0x0188;
41122 t['cieucacirclekorean'] = 0x3276;
41123 t['cieucaparenkorean'] = 0x3216;
41124 t['cieuccirclekorean'] = 0x3268;
41125 t['cieuckorean'] = 0x3148;
41126 t['cieucparenkorean'] = 0x3208;
41127 t['cieucuparenkorean'] = 0x321C;
41128 t['circle'] = 0x25CB;
41129 t['circlecopyrt'] = 0x00A9;
41130 t['circlemultiply'] = 0x2297;
41131 t['circleot'] = 0x2299;
41132 t['circleplus'] = 0x2295;
41133 t['circlepostalmark'] = 0x3036;
41134 t['circlewithlefthalfblack'] = 0x25D0;
41135 t['circlewithrighthalfblack'] = 0x25D1;
41136 t['circumflex'] = 0x02C6;
41137 t['circumflexbelowcmb'] = 0x032D;
41138 t['circumflexcmb'] = 0x0302;
41139 t['clear'] = 0x2327;
41140 t['clickalveolar'] = 0x01C2;
41141 t['clickdental'] = 0x01C0;
41142 t['clicklateral'] = 0x01C1;
41143 t['clickretroflex'] = 0x01C3;
41144 t['club'] = 0x2663;
41145 t['clubsuitblack'] = 0x2663;
41146 t['clubsuitwhite'] = 0x2667;
41147 t['cmcubedsquare'] = 0x33A4;
41148 t['cmonospace'] = 0xFF43;
41149 t['cmsquaredsquare'] = 0x33A0;
41150 t['coarmenian'] = 0x0581;
41151 t['colon'] = 0x003A;
41152 t['colonmonetary'] = 0x20A1;
41153 t['colonmonospace'] = 0xFF1A;
41154 t['colonsign'] = 0x20A1;
41155 t['colonsmall'] = 0xFE55;
41156 t['colontriangularhalfmod'] = 0x02D1;
41157 t['colontriangularmod'] = 0x02D0;
41158 t['comma'] = 0x002C;
41159 t['commaabovecmb'] = 0x0313;
41160 t['commaaboverightcmb'] = 0x0315;
41161 t['commaaccent'] = 0xF6C3;
41162 t['commaarabic'] = 0x060C;
41163 t['commaarmenian'] = 0x055D;
41164 t['commainferior'] = 0xF6E1;
41165 t['commamonospace'] = 0xFF0C;
41166 t['commareversedabovecmb'] = 0x0314;
41167 t['commareversedmod'] = 0x02BD;
41168 t['commasmall'] = 0xFE50;
41169 t['commasuperior'] = 0xF6E2;
41170 t['commaturnedabovecmb'] = 0x0312;
41171 t['commaturnedmod'] = 0x02BB;
41172 t['compass'] = 0x263C;
41173 t['congruent'] = 0x2245;
41174 t['contourintegral'] = 0x222E;
41175 t['control'] = 0x2303;
41176 t['controlACK'] = 0x0006;
41177 t['controlBEL'] = 0x0007;
41178 t['controlBS'] = 0x0008;
41179 t['controlCAN'] = 0x0018;
41180 t['controlCR'] = 0x000D;
41181 t['controlDC1'] = 0x0011;
41182 t['controlDC2'] = 0x0012;
41183 t['controlDC3'] = 0x0013;
41184 t['controlDC4'] = 0x0014;
41185 t['controlDEL'] = 0x007F;
41186 t['controlDLE'] = 0x0010;
41187 t['controlEM'] = 0x0019;
41188 t['controlENQ'] = 0x0005;
41189 t['controlEOT'] = 0x0004;
41190 t['controlESC'] = 0x001B;
41191 t['controlETB'] = 0x0017;
41192 t['controlETX'] = 0x0003;
41193 t['controlFF'] = 0x000C;
41194 t['controlFS'] = 0x001C;
41195 t['controlGS'] = 0x001D;
41196 t['controlHT'] = 0x0009;
41197 t['controlLF'] = 0x000A;
41198 t['controlNAK'] = 0x0015;
41199 t['controlNULL'] = 0x0000;
41200 t['controlRS'] = 0x001E;
41201 t['controlSI'] = 0x000F;
41202 t['controlSO'] = 0x000E;
41203 t['controlSOT'] = 0x0002;
41204 t['controlSTX'] = 0x0001;
41205 t['controlSUB'] = 0x001A;
41206 t['controlSYN'] = 0x0016;
41207 t['controlUS'] = 0x001F;
41208 t['controlVT'] = 0x000B;
41209 t['copyright'] = 0x00A9;
41210 t['copyrightsans'] = 0xF8E9;
41211 t['copyrightserif'] = 0xF6D9;
41212 t['cornerbracketleft'] = 0x300C;
41213 t['cornerbracketlefthalfwidth'] = 0xFF62;
41214 t['cornerbracketleftvertical'] = 0xFE41;
41215 t['cornerbracketright'] = 0x300D;
41216 t['cornerbracketrighthalfwidth'] = 0xFF63;
41217 t['cornerbracketrightvertical'] = 0xFE42;
41218 t['corporationsquare'] = 0x337F;
41219 t['cosquare'] = 0x33C7;
41220 t['coverkgsquare'] = 0x33C6;
41221 t['cparen'] = 0x249E;
41222 t['cruzeiro'] = 0x20A2;
41223 t['cstretched'] = 0x0297;
41224 t['curlyand'] = 0x22CF;
41225 t['curlyor'] = 0x22CE;
41226 t['currency'] = 0x00A4;
41227 t['cyrBreve'] = 0xF6D1;
41228 t['cyrFlex'] = 0xF6D2;
41229 t['cyrbreve'] = 0xF6D4;
41230 t['cyrflex'] = 0xF6D5;
41231 t['d'] = 0x0064;
41232 t['daarmenian'] = 0x0564;
41233 t['dabengali'] = 0x09A6;
41234 t['dadarabic'] = 0x0636;
41235 t['dadeva'] = 0x0926;
41236 t['dadfinalarabic'] = 0xFEBE;
41237 t['dadinitialarabic'] = 0xFEBF;
41238 t['dadmedialarabic'] = 0xFEC0;
41239 t['dagesh'] = 0x05BC;
41240 t['dageshhebrew'] = 0x05BC;
41241 t['dagger'] = 0x2020;
41242 t['daggerdbl'] = 0x2021;
41243 t['dagujarati'] = 0x0AA6;
41244 t['dagurmukhi'] = 0x0A26;
41245 t['dahiragana'] = 0x3060;
41246 t['dakatakana'] = 0x30C0;
41247 t['dalarabic'] = 0x062F;
41248 t['dalet'] = 0x05D3;
41249 t['daletdagesh'] = 0xFB33;
41250 t['daletdageshhebrew'] = 0xFB33;
41251 t['dalethebrew'] = 0x05D3;
41252 t['dalfinalarabic'] = 0xFEAA;
41253 t['dammaarabic'] = 0x064F;
41254 t['dammalowarabic'] = 0x064F;
41255 t['dammatanaltonearabic'] = 0x064C;
41256 t['dammatanarabic'] = 0x064C;
41257 t['danda'] = 0x0964;
41258 t['dargahebrew'] = 0x05A7;
41259 t['dargalefthebrew'] = 0x05A7;
41260 t['dasiapneumatacyrilliccmb'] = 0x0485;
41261 t['dblGrave'] = 0xF6D3;
41262 t['dblanglebracketleft'] = 0x300A;
41263 t['dblanglebracketleftvertical'] = 0xFE3D;
41264 t['dblanglebracketright'] = 0x300B;
41265 t['dblanglebracketrightvertical'] = 0xFE3E;
41266 t['dblarchinvertedbelowcmb'] = 0x032B;
41267 t['dblarrowleft'] = 0x21D4;
41268 t['dblarrowright'] = 0x21D2;
41269 t['dbldanda'] = 0x0965;
41270 t['dblgrave'] = 0xF6D6;
41271 t['dblgravecmb'] = 0x030F;
41272 t['dblintegral'] = 0x222C;
41273 t['dbllowline'] = 0x2017;
41274 t['dbllowlinecmb'] = 0x0333;
41275 t['dbloverlinecmb'] = 0x033F;
41276 t['dblprimemod'] = 0x02BA;
41277 t['dblverticalbar'] = 0x2016;
41278 t['dblverticallineabovecmb'] = 0x030E;
41279 t['dbopomofo'] = 0x3109;
41280 t['dbsquare'] = 0x33C8;
41281 t['dcaron'] = 0x010F;
41282 t['dcedilla'] = 0x1E11;
41283 t['dcircle'] = 0x24D3;
41284 t['dcircumflexbelow'] = 0x1E13;
41285 t['dcroat'] = 0x0111;
41286 t['ddabengali'] = 0x09A1;
41287 t['ddadeva'] = 0x0921;
41288 t['ddagujarati'] = 0x0AA1;
41289 t['ddagurmukhi'] = 0x0A21;
41290 t['ddalarabic'] = 0x0688;
41291 t['ddalfinalarabic'] = 0xFB89;
41292 t['dddhadeva'] = 0x095C;
41293 t['ddhabengali'] = 0x09A2;
41294 t['ddhadeva'] = 0x0922;
41295 t['ddhagujarati'] = 0x0AA2;
41296 t['ddhagurmukhi'] = 0x0A22;
41297 t['ddotaccent'] = 0x1E0B;
41298 t['ddotbelow'] = 0x1E0D;
41299 t['decimalseparatorarabic'] = 0x066B;
41300 t['decimalseparatorpersian'] = 0x066B;
41301 t['decyrillic'] = 0x0434;
41302 t['degree'] = 0x00B0;
41303 t['dehihebrew'] = 0x05AD;
41304 t['dehiragana'] = 0x3067;
41305 t['deicoptic'] = 0x03EF;
41306 t['dekatakana'] = 0x30C7;
41307 t['deleteleft'] = 0x232B;
41308 t['deleteright'] = 0x2326;
41309 t['delta'] = 0x03B4;
41310 t['deltaturned'] = 0x018D;
41311 t['denominatorminusonenumeratorbengali'] = 0x09F8;
41312 t['dezh'] = 0x02A4;
41313 t['dhabengali'] = 0x09A7;
41314 t['dhadeva'] = 0x0927;
41315 t['dhagujarati'] = 0x0AA7;
41316 t['dhagurmukhi'] = 0x0A27;
41317 t['dhook'] = 0x0257;
41318 t['dialytikatonos'] = 0x0385;
41319 t['dialytikatonoscmb'] = 0x0344;
41320 t['diamond'] = 0x2666;
41321 t['diamondsuitwhite'] = 0x2662;
41322 t['dieresis'] = 0x00A8;
41323 t['dieresisacute'] = 0xF6D7;
41324 t['dieresisbelowcmb'] = 0x0324;
41325 t['dieresiscmb'] = 0x0308;
41326 t['dieresisgrave'] = 0xF6D8;
41327 t['dieresistonos'] = 0x0385;
41328 t['dihiragana'] = 0x3062;
41329 t['dikatakana'] = 0x30C2;
41330 t['dittomark'] = 0x3003;
41331 t['divide'] = 0x00F7;
41332 t['divides'] = 0x2223;
41333 t['divisionslash'] = 0x2215;
41334 t['djecyrillic'] = 0x0452;
41335 t['dkshade'] = 0x2593;
41336 t['dlinebelow'] = 0x1E0F;
41337 t['dlsquare'] = 0x3397;
41338 t['dmacron'] = 0x0111;
41339 t['dmonospace'] = 0xFF44;
41340 t['dnblock'] = 0x2584;
41341 t['dochadathai'] = 0x0E0E;
41342 t['dodekthai'] = 0x0E14;
41343 t['dohiragana'] = 0x3069;
41344 t['dokatakana'] = 0x30C9;
41345 t['dollar'] = 0x0024;
41346 t['dollarinferior'] = 0xF6E3;
41347 t['dollarmonospace'] = 0xFF04;
41348 t['dollaroldstyle'] = 0xF724;
41349 t['dollarsmall'] = 0xFE69;
41350 t['dollarsuperior'] = 0xF6E4;
41351 t['dong'] = 0x20AB;
41352 t['dorusquare'] = 0x3326;
41353 t['dotaccent'] = 0x02D9;
41354 t['dotaccentcmb'] = 0x0307;
41355 t['dotbelowcmb'] = 0x0323;
41356 t['dotbelowcomb'] = 0x0323;
41357 t['dotkatakana'] = 0x30FB;
41358 t['dotlessi'] = 0x0131;
41359 t['dotlessj'] = 0xF6BE;
41360 t['dotlessjstrokehook'] = 0x0284;
41361 t['dotmath'] = 0x22C5;
41362 t['dottedcircle'] = 0x25CC;
41363 t['doubleyodpatah'] = 0xFB1F;
41364 t['doubleyodpatahhebrew'] = 0xFB1F;
41365 t['downtackbelowcmb'] = 0x031E;
41366 t['downtackmod'] = 0x02D5;
41367 t['dparen'] = 0x249F;
41368 t['dsuperior'] = 0xF6EB;
41369 t['dtail'] = 0x0256;
41370 t['dtopbar'] = 0x018C;
41371 t['duhiragana'] = 0x3065;
41372 t['dukatakana'] = 0x30C5;
41373 t['dz'] = 0x01F3;
41374 t['dzaltone'] = 0x02A3;
41375 t['dzcaron'] = 0x01C6;
41376 t['dzcurl'] = 0x02A5;
41377 t['dzeabkhasiancyrillic'] = 0x04E1;
41378 t['dzecyrillic'] = 0x0455;
41379 t['dzhecyrillic'] = 0x045F;
41380 t['e'] = 0x0065;
41381 t['eacute'] = 0x00E9;
41382 t['earth'] = 0x2641;
41383 t['ebengali'] = 0x098F;
41384 t['ebopomofo'] = 0x311C;
41385 t['ebreve'] = 0x0115;
41386 t['ecandradeva'] = 0x090D;
41387 t['ecandragujarati'] = 0x0A8D;
41388 t['ecandravowelsigndeva'] = 0x0945;
41389 t['ecandravowelsigngujarati'] = 0x0AC5;
41390 t['ecaron'] = 0x011B;
41391 t['ecedillabreve'] = 0x1E1D;
41392 t['echarmenian'] = 0x0565;
41393 t['echyiwnarmenian'] = 0x0587;
41394 t['ecircle'] = 0x24D4;
41395 t['ecircumflex'] = 0x00EA;
41396 t['ecircumflexacute'] = 0x1EBF;
41397 t['ecircumflexbelow'] = 0x1E19;
41398 t['ecircumflexdotbelow'] = 0x1EC7;
41399 t['ecircumflexgrave'] = 0x1EC1;
41400 t['ecircumflexhookabove'] = 0x1EC3;
41401 t['ecircumflextilde'] = 0x1EC5;
41402 t['ecyrillic'] = 0x0454;
41403 t['edblgrave'] = 0x0205;
41404 t['edeva'] = 0x090F;
41405 t['edieresis'] = 0x00EB;
41406 t['edot'] = 0x0117;
41407 t['edotaccent'] = 0x0117;
41408 t['edotbelow'] = 0x1EB9;
41409 t['eegurmukhi'] = 0x0A0F;
41410 t['eematragurmukhi'] = 0x0A47;
41411 t['efcyrillic'] = 0x0444;
41412 t['egrave'] = 0x00E8;
41413 t['egujarati'] = 0x0A8F;
41414 t['eharmenian'] = 0x0567;
41415 t['ehbopomofo'] = 0x311D;
41416 t['ehiragana'] = 0x3048;
41417 t['ehookabove'] = 0x1EBB;
41418 t['eibopomofo'] = 0x311F;
41419 t['eight'] = 0x0038;
41420 t['eightarabic'] = 0x0668;
41421 t['eightbengali'] = 0x09EE;
41422 t['eightcircle'] = 0x2467;
41423 t['eightcircleinversesansserif'] = 0x2791;
41424 t['eightdeva'] = 0x096E;
41425 t['eighteencircle'] = 0x2471;
41426 t['eighteenparen'] = 0x2485;
41427 t['eighteenperiod'] = 0x2499;
41428 t['eightgujarati'] = 0x0AEE;
41429 t['eightgurmukhi'] = 0x0A6E;
41430 t['eighthackarabic'] = 0x0668;
41431 t['eighthangzhou'] = 0x3028;
41432 t['eighthnotebeamed'] = 0x266B;
41433 t['eightideographicparen'] = 0x3227;
41434 t['eightinferior'] = 0x2088;
41435 t['eightmonospace'] = 0xFF18;
41436 t['eightoldstyle'] = 0xF738;
41437 t['eightparen'] = 0x247B;
41438 t['eightperiod'] = 0x248F;
41439 t['eightpersian'] = 0x06F8;
41440 t['eightroman'] = 0x2177;
41441 t['eightsuperior'] = 0x2078;
41442 t['eightthai'] = 0x0E58;
41443 t['einvertedbreve'] = 0x0207;
41444 t['eiotifiedcyrillic'] = 0x0465;
41445 t['ekatakana'] = 0x30A8;
41446 t['ekatakanahalfwidth'] = 0xFF74;
41447 t['ekonkargurmukhi'] = 0x0A74;
41448 t['ekorean'] = 0x3154;
41449 t['elcyrillic'] = 0x043B;
41450 t['element'] = 0x2208;
41451 t['elevencircle'] = 0x246A;
41452 t['elevenparen'] = 0x247E;
41453 t['elevenperiod'] = 0x2492;
41454 t['elevenroman'] = 0x217A;
41455 t['ellipsis'] = 0x2026;
41456 t['ellipsisvertical'] = 0x22EE;
41457 t['emacron'] = 0x0113;
41458 t['emacronacute'] = 0x1E17;
41459 t['emacrongrave'] = 0x1E15;
41460 t['emcyrillic'] = 0x043C;
41461 t['emdash'] = 0x2014;
41462 t['emdashvertical'] = 0xFE31;
41463 t['emonospace'] = 0xFF45;
41464 t['emphasismarkarmenian'] = 0x055B;
41465 t['emptyset'] = 0x2205;
41466 t['enbopomofo'] = 0x3123;
41467 t['encyrillic'] = 0x043D;
41468 t['endash'] = 0x2013;
41469 t['endashvertical'] = 0xFE32;
41470 t['endescendercyrillic'] = 0x04A3;
41471 t['eng'] = 0x014B;
41472 t['engbopomofo'] = 0x3125;
41473 t['enghecyrillic'] = 0x04A5;
41474 t['enhookcyrillic'] = 0x04C8;
41475 t['enspace'] = 0x2002;
41476 t['eogonek'] = 0x0119;
41477 t['eokorean'] = 0x3153;
41478 t['eopen'] = 0x025B;
41479 t['eopenclosed'] = 0x029A;
41480 t['eopenreversed'] = 0x025C;
41481 t['eopenreversedclosed'] = 0x025E;
41482 t['eopenreversedhook'] = 0x025D;
41483 t['eparen'] = 0x24A0;
41484 t['epsilon'] = 0x03B5;
41485 t['epsilontonos'] = 0x03AD;
41486 t['equal'] = 0x003D;
41487 t['equalmonospace'] = 0xFF1D;
41488 t['equalsmall'] = 0xFE66;
41489 t['equalsuperior'] = 0x207C;
41490 t['equivalence'] = 0x2261;
41491 t['erbopomofo'] = 0x3126;
41492 t['ercyrillic'] = 0x0440;
41493 t['ereversed'] = 0x0258;
41494 t['ereversedcyrillic'] = 0x044D;
41495 t['escyrillic'] = 0x0441;
41496 t['esdescendercyrillic'] = 0x04AB;
41497 t['esh'] = 0x0283;
41498 t['eshcurl'] = 0x0286;
41499 t['eshortdeva'] = 0x090E;
41500 t['eshortvowelsigndeva'] = 0x0946;
41501 t['eshreversedloop'] = 0x01AA;
41502 t['eshsquatreversed'] = 0x0285;
41503 t['esmallhiragana'] = 0x3047;
41504 t['esmallkatakana'] = 0x30A7;
41505 t['esmallkatakanahalfwidth'] = 0xFF6A;
41506 t['estimated'] = 0x212E;
41507 t['esuperior'] = 0xF6EC;
41508 t['eta'] = 0x03B7;
41509 t['etarmenian'] = 0x0568;
41510 t['etatonos'] = 0x03AE;
41511 t['eth'] = 0x00F0;
41512 t['etilde'] = 0x1EBD;
41513 t['etildebelow'] = 0x1E1B;
41514 t['etnahtafoukhhebrew'] = 0x0591;
41515 t['etnahtafoukhlefthebrew'] = 0x0591;
41516 t['etnahtahebrew'] = 0x0591;
41517 t['etnahtalefthebrew'] = 0x0591;
41518 t['eturned'] = 0x01DD;
41519 t['eukorean'] = 0x3161;
41520 t['euro'] = 0x20AC;
41521 t['evowelsignbengali'] = 0x09C7;
41522 t['evowelsigndeva'] = 0x0947;
41523 t['evowelsigngujarati'] = 0x0AC7;
41524 t['exclam'] = 0x0021;
41525 t['exclamarmenian'] = 0x055C;
41526 t['exclamdbl'] = 0x203C;
41527 t['exclamdown'] = 0x00A1;
41528 t['exclamdownsmall'] = 0xF7A1;
41529 t['exclammonospace'] = 0xFF01;
41530 t['exclamsmall'] = 0xF721;
41531 t['existential'] = 0x2203;
41532 t['ezh'] = 0x0292;
41533 t['ezhcaron'] = 0x01EF;
41534 t['ezhcurl'] = 0x0293;
41535 t['ezhreversed'] = 0x01B9;
41536 t['ezhtail'] = 0x01BA;
41537 t['f'] = 0x0066;
41538 t['fadeva'] = 0x095E;
41539 t['fagurmukhi'] = 0x0A5E;
41540 t['fahrenheit'] = 0x2109;
41541 t['fathaarabic'] = 0x064E;
41542 t['fathalowarabic'] = 0x064E;
41543 t['fathatanarabic'] = 0x064B;
41544 t['fbopomofo'] = 0x3108;
41545 t['fcircle'] = 0x24D5;
41546 t['fdotaccent'] = 0x1E1F;
41547 t['feharabic'] = 0x0641;
41548 t['feharmenian'] = 0x0586;
41549 t['fehfinalarabic'] = 0xFED2;
41550 t['fehinitialarabic'] = 0xFED3;
41551 t['fehmedialarabic'] = 0xFED4;
41552 t['feicoptic'] = 0x03E5;
41553 t['female'] = 0x2640;
41554 t['ff'] = 0xFB00;
41555 t['ffi'] = 0xFB03;
41556 t['ffl'] = 0xFB04;
41557 t['fi'] = 0xFB01;
41558 t['fifteencircle'] = 0x246E;
41559 t['fifteenparen'] = 0x2482;
41560 t['fifteenperiod'] = 0x2496;
41561 t['figuredash'] = 0x2012;
41562 t['filledbox'] = 0x25A0;
41563 t['filledrect'] = 0x25AC;
41564 t['finalkaf'] = 0x05DA;
41565 t['finalkafdagesh'] = 0xFB3A;
41566 t['finalkafdageshhebrew'] = 0xFB3A;
41567 t['finalkafhebrew'] = 0x05DA;
41568 t['finalmem'] = 0x05DD;
41569 t['finalmemhebrew'] = 0x05DD;
41570 t['finalnun'] = 0x05DF;
41571 t['finalnunhebrew'] = 0x05DF;
41572 t['finalpe'] = 0x05E3;
41573 t['finalpehebrew'] = 0x05E3;
41574 t['finaltsadi'] = 0x05E5;
41575 t['finaltsadihebrew'] = 0x05E5;
41576 t['firsttonechinese'] = 0x02C9;
41577 t['fisheye'] = 0x25C9;
41578 t['fitacyrillic'] = 0x0473;
41579 t['five'] = 0x0035;
41580 t['fivearabic'] = 0x0665;
41581 t['fivebengali'] = 0x09EB;
41582 t['fivecircle'] = 0x2464;
41583 t['fivecircleinversesansserif'] = 0x278E;
41584 t['fivedeva'] = 0x096B;
41585 t['fiveeighths'] = 0x215D;
41586 t['fivegujarati'] = 0x0AEB;
41587 t['fivegurmukhi'] = 0x0A6B;
41588 t['fivehackarabic'] = 0x0665;
41589 t['fivehangzhou'] = 0x3025;
41590 t['fiveideographicparen'] = 0x3224;
41591 t['fiveinferior'] = 0x2085;
41592 t['fivemonospace'] = 0xFF15;
41593 t['fiveoldstyle'] = 0xF735;
41594 t['fiveparen'] = 0x2478;
41595 t['fiveperiod'] = 0x248C;
41596 t['fivepersian'] = 0x06F5;
41597 t['fiveroman'] = 0x2174;
41598 t['fivesuperior'] = 0x2075;
41599 t['fivethai'] = 0x0E55;
41600 t['fl'] = 0xFB02;
41601 t['florin'] = 0x0192;
41602 t['fmonospace'] = 0xFF46;
41603 t['fmsquare'] = 0x3399;
41604 t['fofanthai'] = 0x0E1F;
41605 t['fofathai'] = 0x0E1D;
41606 t['fongmanthai'] = 0x0E4F;
41607 t['forall'] = 0x2200;
41608 t['four'] = 0x0034;
41609 t['fourarabic'] = 0x0664;
41610 t['fourbengali'] = 0x09EA;
41611 t['fourcircle'] = 0x2463;
41612 t['fourcircleinversesansserif'] = 0x278D;
41613 t['fourdeva'] = 0x096A;
41614 t['fourgujarati'] = 0x0AEA;
41615 t['fourgurmukhi'] = 0x0A6A;
41616 t['fourhackarabic'] = 0x0664;
41617 t['fourhangzhou'] = 0x3024;
41618 t['fourideographicparen'] = 0x3223;
41619 t['fourinferior'] = 0x2084;
41620 t['fourmonospace'] = 0xFF14;
41621 t['fournumeratorbengali'] = 0x09F7;
41622 t['fouroldstyle'] = 0xF734;
41623 t['fourparen'] = 0x2477;
41624 t['fourperiod'] = 0x248B;
41625 t['fourpersian'] = 0x06F4;
41626 t['fourroman'] = 0x2173;
41627 t['foursuperior'] = 0x2074;
41628 t['fourteencircle'] = 0x246D;
41629 t['fourteenparen'] = 0x2481;
41630 t['fourteenperiod'] = 0x2495;
41631 t['fourthai'] = 0x0E54;
41632 t['fourthtonechinese'] = 0x02CB;
41633 t['fparen'] = 0x24A1;
41634 t['fraction'] = 0x2044;
41635 t['franc'] = 0x20A3;
41636 t['g'] = 0x0067;
41637 t['gabengali'] = 0x0997;
41638 t['gacute'] = 0x01F5;
41639 t['gadeva'] = 0x0917;
41640 t['gafarabic'] = 0x06AF;
41641 t['gaffinalarabic'] = 0xFB93;
41642 t['gafinitialarabic'] = 0xFB94;
41643 t['gafmedialarabic'] = 0xFB95;
41644 t['gagujarati'] = 0x0A97;
41645 t['gagurmukhi'] = 0x0A17;
41646 t['gahiragana'] = 0x304C;
41647 t['gakatakana'] = 0x30AC;
41648 t['gamma'] = 0x03B3;
41649 t['gammalatinsmall'] = 0x0263;
41650 t['gammasuperior'] = 0x02E0;
41651 t['gangiacoptic'] = 0x03EB;
41652 t['gbopomofo'] = 0x310D;
41653 t['gbreve'] = 0x011F;
41654 t['gcaron'] = 0x01E7;
41655 t['gcedilla'] = 0x0123;
41656 t['gcircle'] = 0x24D6;
41657 t['gcircumflex'] = 0x011D;
41658 t['gcommaaccent'] = 0x0123;
41659 t['gdot'] = 0x0121;
41660 t['gdotaccent'] = 0x0121;
41661 t['gecyrillic'] = 0x0433;
41662 t['gehiragana'] = 0x3052;
41663 t['gekatakana'] = 0x30B2;
41664 t['geometricallyequal'] = 0x2251;
41665 t['gereshaccenthebrew'] = 0x059C;
41666 t['gereshhebrew'] = 0x05F3;
41667 t['gereshmuqdamhebrew'] = 0x059D;
41668 t['germandbls'] = 0x00DF;
41669 t['gershayimaccenthebrew'] = 0x059E;
41670 t['gershayimhebrew'] = 0x05F4;
41671 t['getamark'] = 0x3013;
41672 t['ghabengali'] = 0x0998;
41673 t['ghadarmenian'] = 0x0572;
41674 t['ghadeva'] = 0x0918;
41675 t['ghagujarati'] = 0x0A98;
41676 t['ghagurmukhi'] = 0x0A18;
41677 t['ghainarabic'] = 0x063A;
41678 t['ghainfinalarabic'] = 0xFECE;
41679 t['ghaininitialarabic'] = 0xFECF;
41680 t['ghainmedialarabic'] = 0xFED0;
41681 t['ghemiddlehookcyrillic'] = 0x0495;
41682 t['ghestrokecyrillic'] = 0x0493;
41683 t['gheupturncyrillic'] = 0x0491;
41684 t['ghhadeva'] = 0x095A;
41685 t['ghhagurmukhi'] = 0x0A5A;
41686 t['ghook'] = 0x0260;
41687 t['ghzsquare'] = 0x3393;
41688 t['gihiragana'] = 0x304E;
41689 t['gikatakana'] = 0x30AE;
41690 t['gimarmenian'] = 0x0563;
41691 t['gimel'] = 0x05D2;
41692 t['gimeldagesh'] = 0xFB32;
41693 t['gimeldageshhebrew'] = 0xFB32;
41694 t['gimelhebrew'] = 0x05D2;
41695 t['gjecyrillic'] = 0x0453;
41696 t['glottalinvertedstroke'] = 0x01BE;
41697 t['glottalstop'] = 0x0294;
41698 t['glottalstopinverted'] = 0x0296;
41699 t['glottalstopmod'] = 0x02C0;
41700 t['glottalstopreversed'] = 0x0295;
41701 t['glottalstopreversedmod'] = 0x02C1;
41702 t['glottalstopreversedsuperior'] = 0x02E4;
41703 t['glottalstopstroke'] = 0x02A1;
41704 t['glottalstopstrokereversed'] = 0x02A2;
41705 t['gmacron'] = 0x1E21;
41706 t['gmonospace'] = 0xFF47;
41707 t['gohiragana'] = 0x3054;
41708 t['gokatakana'] = 0x30B4;
41709 t['gparen'] = 0x24A2;
41710 t['gpasquare'] = 0x33AC;
41711 t['gradient'] = 0x2207;
41712 t['grave'] = 0x0060;
41713 t['gravebelowcmb'] = 0x0316;
41714 t['gravecmb'] = 0x0300;
41715 t['gravecomb'] = 0x0300;
41716 t['gravedeva'] = 0x0953;
41717 t['gravelowmod'] = 0x02CE;
41718 t['gravemonospace'] = 0xFF40;
41719 t['gravetonecmb'] = 0x0340;
41720 t['greater'] = 0x003E;
41721 t['greaterequal'] = 0x2265;
41722 t['greaterequalorless'] = 0x22DB;
41723 t['greatermonospace'] = 0xFF1E;
41724 t['greaterorequivalent'] = 0x2273;
41725 t['greaterorless'] = 0x2277;
41726 t['greateroverequal'] = 0x2267;
41727 t['greatersmall'] = 0xFE65;
41728 t['gscript'] = 0x0261;
41729 t['gstroke'] = 0x01E5;
41730 t['guhiragana'] = 0x3050;
41731 t['guillemotleft'] = 0x00AB;
41732 t['guillemotright'] = 0x00BB;
41733 t['guilsinglleft'] = 0x2039;
41734 t['guilsinglright'] = 0x203A;
41735 t['gukatakana'] = 0x30B0;
41736 t['guramusquare'] = 0x3318;
41737 t['gysquare'] = 0x33C9;
41738 t['h'] = 0x0068;
41739 t['haabkhasiancyrillic'] = 0x04A9;
41740 t['haaltonearabic'] = 0x06C1;
41741 t['habengali'] = 0x09B9;
41742 t['hadescendercyrillic'] = 0x04B3;
41743 t['hadeva'] = 0x0939;
41744 t['hagujarati'] = 0x0AB9;
41745 t['hagurmukhi'] = 0x0A39;
41746 t['haharabic'] = 0x062D;
41747 t['hahfinalarabic'] = 0xFEA2;
41748 t['hahinitialarabic'] = 0xFEA3;
41749 t['hahiragana'] = 0x306F;
41750 t['hahmedialarabic'] = 0xFEA4;
41751 t['haitusquare'] = 0x332A;
41752 t['hakatakana'] = 0x30CF;
41753 t['hakatakanahalfwidth'] = 0xFF8A;
41754 t['halantgurmukhi'] = 0x0A4D;
41755 t['hamzaarabic'] = 0x0621;
41756 t['hamzalowarabic'] = 0x0621;
41757 t['hangulfiller'] = 0x3164;
41758 t['hardsigncyrillic'] = 0x044A;
41759 t['harpoonleftbarbup'] = 0x21BC;
41760 t['harpoonrightbarbup'] = 0x21C0;
41761 t['hasquare'] = 0x33CA;
41762 t['hatafpatah'] = 0x05B2;
41763 t['hatafpatah16'] = 0x05B2;
41764 t['hatafpatah23'] = 0x05B2;
41765 t['hatafpatah2f'] = 0x05B2;
41766 t['hatafpatahhebrew'] = 0x05B2;
41767 t['hatafpatahnarrowhebrew'] = 0x05B2;
41768 t['hatafpatahquarterhebrew'] = 0x05B2;
41769 t['hatafpatahwidehebrew'] = 0x05B2;
41770 t['hatafqamats'] = 0x05B3;
41771 t['hatafqamats1b'] = 0x05B3;
41772 t['hatafqamats28'] = 0x05B3;
41773 t['hatafqamats34'] = 0x05B3;
41774 t['hatafqamatshebrew'] = 0x05B3;
41775 t['hatafqamatsnarrowhebrew'] = 0x05B3;
41776 t['hatafqamatsquarterhebrew'] = 0x05B3;
41777 t['hatafqamatswidehebrew'] = 0x05B3;
41778 t['hatafsegol'] = 0x05B1;
41779 t['hatafsegol17'] = 0x05B1;
41780 t['hatafsegol24'] = 0x05B1;
41781 t['hatafsegol30'] = 0x05B1;
41782 t['hatafsegolhebrew'] = 0x05B1;
41783 t['hatafsegolnarrowhebrew'] = 0x05B1;
41784 t['hatafsegolquarterhebrew'] = 0x05B1;
41785 t['hatafsegolwidehebrew'] = 0x05B1;
41786 t['hbar'] = 0x0127;
41787 t['hbopomofo'] = 0x310F;
41788 t['hbrevebelow'] = 0x1E2B;
41789 t['hcedilla'] = 0x1E29;
41790 t['hcircle'] = 0x24D7;
41791 t['hcircumflex'] = 0x0125;
41792 t['hdieresis'] = 0x1E27;
41793 t['hdotaccent'] = 0x1E23;
41794 t['hdotbelow'] = 0x1E25;
41795 t['he'] = 0x05D4;
41796 t['heart'] = 0x2665;
41797 t['heartsuitblack'] = 0x2665;
41798 t['heartsuitwhite'] = 0x2661;
41799 t['hedagesh'] = 0xFB34;
41800 t['hedageshhebrew'] = 0xFB34;
41801 t['hehaltonearabic'] = 0x06C1;
41802 t['heharabic'] = 0x0647;
41803 t['hehebrew'] = 0x05D4;
41804 t['hehfinalaltonearabic'] = 0xFBA7;
41805 t['hehfinalalttwoarabic'] = 0xFEEA;
41806 t['hehfinalarabic'] = 0xFEEA;
41807 t['hehhamzaabovefinalarabic'] = 0xFBA5;
41808 t['hehhamzaaboveisolatedarabic'] = 0xFBA4;
41809 t['hehinitialaltonearabic'] = 0xFBA8;
41810 t['hehinitialarabic'] = 0xFEEB;
41811 t['hehiragana'] = 0x3078;
41812 t['hehmedialaltonearabic'] = 0xFBA9;
41813 t['hehmedialarabic'] = 0xFEEC;
41814 t['heiseierasquare'] = 0x337B;
41815 t['hekatakana'] = 0x30D8;
41816 t['hekatakanahalfwidth'] = 0xFF8D;
41817 t['hekutaarusquare'] = 0x3336;
41818 t['henghook'] = 0x0267;
41819 t['herutusquare'] = 0x3339;
41820 t['het'] = 0x05D7;
41821 t['hethebrew'] = 0x05D7;
41822 t['hhook'] = 0x0266;
41823 t['hhooksuperior'] = 0x02B1;
41824 t['hieuhacirclekorean'] = 0x327B;
41825 t['hieuhaparenkorean'] = 0x321B;
41826 t['hieuhcirclekorean'] = 0x326D;
41827 t['hieuhkorean'] = 0x314E;
41828 t['hieuhparenkorean'] = 0x320D;
41829 t['hihiragana'] = 0x3072;
41830 t['hikatakana'] = 0x30D2;
41831 t['hikatakanahalfwidth'] = 0xFF8B;
41832 t['hiriq'] = 0x05B4;
41833 t['hiriq14'] = 0x05B4;
41834 t['hiriq21'] = 0x05B4;
41835 t['hiriq2d'] = 0x05B4;
41836 t['hiriqhebrew'] = 0x05B4;
41837 t['hiriqnarrowhebrew'] = 0x05B4;
41838 t['hiriqquarterhebrew'] = 0x05B4;
41839 t['hiriqwidehebrew'] = 0x05B4;
41840 t['hlinebelow'] = 0x1E96;
41841 t['hmonospace'] = 0xFF48;
41842 t['hoarmenian'] = 0x0570;
41843 t['hohipthai'] = 0x0E2B;
41844 t['hohiragana'] = 0x307B;
41845 t['hokatakana'] = 0x30DB;
41846 t['hokatakanahalfwidth'] = 0xFF8E;
41847 t['holam'] = 0x05B9;
41848 t['holam19'] = 0x05B9;
41849 t['holam26'] = 0x05B9;
41850 t['holam32'] = 0x05B9;
41851 t['holamhebrew'] = 0x05B9;
41852 t['holamnarrowhebrew'] = 0x05B9;
41853 t['holamquarterhebrew'] = 0x05B9;
41854 t['holamwidehebrew'] = 0x05B9;
41855 t['honokhukthai'] = 0x0E2E;
41856 t['hookabovecomb'] = 0x0309;
41857 t['hookcmb'] = 0x0309;
41858 t['hookpalatalizedbelowcmb'] = 0x0321;
41859 t['hookretroflexbelowcmb'] = 0x0322;
41860 t['hoonsquare'] = 0x3342;
41861 t['horicoptic'] = 0x03E9;
41862 t['horizontalbar'] = 0x2015;
41863 t['horncmb'] = 0x031B;
41864 t['hotsprings'] = 0x2668;
41865 t['house'] = 0x2302;
41866 t['hparen'] = 0x24A3;
41867 t['hsuperior'] = 0x02B0;
41868 t['hturned'] = 0x0265;
41869 t['huhiragana'] = 0x3075;
41870 t['huiitosquare'] = 0x3333;
41871 t['hukatakana'] = 0x30D5;
41872 t['hukatakanahalfwidth'] = 0xFF8C;
41873 t['hungarumlaut'] = 0x02DD;
41874 t['hungarumlautcmb'] = 0x030B;
41875 t['hv'] = 0x0195;
41876 t['hyphen'] = 0x002D;
41877 t['hypheninferior'] = 0xF6E5;
41878 t['hyphenmonospace'] = 0xFF0D;
41879 t['hyphensmall'] = 0xFE63;
41880 t['hyphensuperior'] = 0xF6E6;
41881 t['hyphentwo'] = 0x2010;
41882 t['i'] = 0x0069;
41883 t['iacute'] = 0x00ED;
41884 t['iacyrillic'] = 0x044F;
41885 t['ibengali'] = 0x0987;
41886 t['ibopomofo'] = 0x3127;
41887 t['ibreve'] = 0x012D;
41888 t['icaron'] = 0x01D0;
41889 t['icircle'] = 0x24D8;
41890 t['icircumflex'] = 0x00EE;
41891 t['icyrillic'] = 0x0456;
41892 t['idblgrave'] = 0x0209;
41893 t['ideographearthcircle'] = 0x328F;
41894 t['ideographfirecircle'] = 0x328B;
41895 t['ideographicallianceparen'] = 0x323F;
41896 t['ideographiccallparen'] = 0x323A;
41897 t['ideographiccentrecircle'] = 0x32A5;
41898 t['ideographicclose'] = 0x3006;
41899 t['ideographiccomma'] = 0x3001;
41900 t['ideographiccommaleft'] = 0xFF64;
41901 t['ideographiccongratulationparen'] = 0x3237;
41902 t['ideographiccorrectcircle'] = 0x32A3;
41903 t['ideographicearthparen'] = 0x322F;
41904 t['ideographicenterpriseparen'] = 0x323D;
41905 t['ideographicexcellentcircle'] = 0x329D;
41906 t['ideographicfestivalparen'] = 0x3240;
41907 t['ideographicfinancialcircle'] = 0x3296;
41908 t['ideographicfinancialparen'] = 0x3236;
41909 t['ideographicfireparen'] = 0x322B;
41910 t['ideographichaveparen'] = 0x3232;
41911 t['ideographichighcircle'] = 0x32A4;
41912 t['ideographiciterationmark'] = 0x3005;
41913 t['ideographiclaborcircle'] = 0x3298;
41914 t['ideographiclaborparen'] = 0x3238;
41915 t['ideographicleftcircle'] = 0x32A7;
41916 t['ideographiclowcircle'] = 0x32A6;
41917 t['ideographicmedicinecircle'] = 0x32A9;
41918 t['ideographicmetalparen'] = 0x322E;
41919 t['ideographicmoonparen'] = 0x322A;
41920 t['ideographicnameparen'] = 0x3234;
41921 t['ideographicperiod'] = 0x3002;
41922 t['ideographicprintcircle'] = 0x329E;
41923 t['ideographicreachparen'] = 0x3243;
41924 t['ideographicrepresentparen'] = 0x3239;
41925 t['ideographicresourceparen'] = 0x323E;
41926 t['ideographicrightcircle'] = 0x32A8;
41927 t['ideographicsecretcircle'] = 0x3299;
41928 t['ideographicselfparen'] = 0x3242;
41929 t['ideographicsocietyparen'] = 0x3233;
41930 t['ideographicspace'] = 0x3000;
41931 t['ideographicspecialparen'] = 0x3235;
41932 t['ideographicstockparen'] = 0x3231;
41933 t['ideographicstudyparen'] = 0x323B;
41934 t['ideographicsunparen'] = 0x3230;
41935 t['ideographicsuperviseparen'] = 0x323C;
41936 t['ideographicwaterparen'] = 0x322C;
41937 t['ideographicwoodparen'] = 0x322D;
41938 t['ideographiczero'] = 0x3007;
41939 t['ideographmetalcircle'] = 0x328E;
41940 t['ideographmooncircle'] = 0x328A;
41941 t['ideographnamecircle'] = 0x3294;
41942 t['ideographsuncircle'] = 0x3290;
41943 t['ideographwatercircle'] = 0x328C;
41944 t['ideographwoodcircle'] = 0x328D;
41945 t['ideva'] = 0x0907;
41946 t['idieresis'] = 0x00EF;
41947 t['idieresisacute'] = 0x1E2F;
41948 t['idieresiscyrillic'] = 0x04E5;
41949 t['idotbelow'] = 0x1ECB;
41950 t['iebrevecyrillic'] = 0x04D7;
41951 t['iecyrillic'] = 0x0435;
41952 t['ieungacirclekorean'] = 0x3275;
41953 t['ieungaparenkorean'] = 0x3215;
41954 t['ieungcirclekorean'] = 0x3267;
41955 t['ieungkorean'] = 0x3147;
41956 t['ieungparenkorean'] = 0x3207;
41957 t['igrave'] = 0x00EC;
41958 t['igujarati'] = 0x0A87;
41959 t['igurmukhi'] = 0x0A07;
41960 t['ihiragana'] = 0x3044;
41961 t['ihookabove'] = 0x1EC9;
41962 t['iibengali'] = 0x0988;
41963 t['iicyrillic'] = 0x0438;
41964 t['iideva'] = 0x0908;
41965 t['iigujarati'] = 0x0A88;
41966 t['iigurmukhi'] = 0x0A08;
41967 t['iimatragurmukhi'] = 0x0A40;
41968 t['iinvertedbreve'] = 0x020B;
41969 t['iishortcyrillic'] = 0x0439;
41970 t['iivowelsignbengali'] = 0x09C0;
41971 t['iivowelsigndeva'] = 0x0940;
41972 t['iivowelsigngujarati'] = 0x0AC0;
41973 t['ij'] = 0x0133;
41974 t['ikatakana'] = 0x30A4;
41975 t['ikatakanahalfwidth'] = 0xFF72;
41976 t['ikorean'] = 0x3163;
41977 t['ilde'] = 0x02DC;
41978 t['iluyhebrew'] = 0x05AC;
41979 t['imacron'] = 0x012B;
41980 t['imacroncyrillic'] = 0x04E3;
41981 t['imageorapproximatelyequal'] = 0x2253;
41982 t['imatragurmukhi'] = 0x0A3F;
41983 t['imonospace'] = 0xFF49;
41984 t['increment'] = 0x2206;
41985 t['infinity'] = 0x221E;
41986 t['iniarmenian'] = 0x056B;
41987 t['integral'] = 0x222B;
41988 t['integralbottom'] = 0x2321;
41989 t['integralbt'] = 0x2321;
41990 t['integralex'] = 0xF8F5;
41991 t['integraltop'] = 0x2320;
41992 t['integraltp'] = 0x2320;
41993 t['intersection'] = 0x2229;
41994 t['intisquare'] = 0x3305;
41995 t['invbullet'] = 0x25D8;
41996 t['invcircle'] = 0x25D9;
41997 t['invsmileface'] = 0x263B;
41998 t['iocyrillic'] = 0x0451;
41999 t['iogonek'] = 0x012F;
42000 t['iota'] = 0x03B9;
42001 t['iotadieresis'] = 0x03CA;
42002 t['iotadieresistonos'] = 0x0390;
42003 t['iotalatin'] = 0x0269;
42004 t['iotatonos'] = 0x03AF;
42005 t['iparen'] = 0x24A4;
42006 t['irigurmukhi'] = 0x0A72;
42007 t['ismallhiragana'] = 0x3043;
42008 t['ismallkatakana'] = 0x30A3;
42009 t['ismallkatakanahalfwidth'] = 0xFF68;
42010 t['issharbengali'] = 0x09FA;
42011 t['istroke'] = 0x0268;
42012 t['isuperior'] = 0xF6ED;
42013 t['iterationhiragana'] = 0x309D;
42014 t['iterationkatakana'] = 0x30FD;
42015 t['itilde'] = 0x0129;
42016 t['itildebelow'] = 0x1E2D;
42017 t['iubopomofo'] = 0x3129;
42018 t['iucyrillic'] = 0x044E;
42019 t['ivowelsignbengali'] = 0x09BF;
42020 t['ivowelsigndeva'] = 0x093F;
42021 t['ivowelsigngujarati'] = 0x0ABF;
42022 t['izhitsacyrillic'] = 0x0475;
42023 t['izhitsadblgravecyrillic'] = 0x0477;
42024 t['j'] = 0x006A;
42025 t['jaarmenian'] = 0x0571;
42026 t['jabengali'] = 0x099C;
42027 t['jadeva'] = 0x091C;
42028 t['jagujarati'] = 0x0A9C;
42029 t['jagurmukhi'] = 0x0A1C;
42030 t['jbopomofo'] = 0x3110;
42031 t['jcaron'] = 0x01F0;
42032 t['jcircle'] = 0x24D9;
42033 t['jcircumflex'] = 0x0135;
42034 t['jcrossedtail'] = 0x029D;
42035 t['jdotlessstroke'] = 0x025F;
42036 t['jecyrillic'] = 0x0458;
42037 t['jeemarabic'] = 0x062C;
42038 t['jeemfinalarabic'] = 0xFE9E;
42039 t['jeeminitialarabic'] = 0xFE9F;
42040 t['jeemmedialarabic'] = 0xFEA0;
42041 t['jeharabic'] = 0x0698;
42042 t['jehfinalarabic'] = 0xFB8B;
42043 t['jhabengali'] = 0x099D;
42044 t['jhadeva'] = 0x091D;
42045 t['jhagujarati'] = 0x0A9D;
42046 t['jhagurmukhi'] = 0x0A1D;
42047 t['jheharmenian'] = 0x057B;
42048 t['jis'] = 0x3004;
42049 t['jmonospace'] = 0xFF4A;
42050 t['jparen'] = 0x24A5;
42051 t['jsuperior'] = 0x02B2;
42052 t['k'] = 0x006B;
42053 t['kabashkircyrillic'] = 0x04A1;
42054 t['kabengali'] = 0x0995;
42055 t['kacute'] = 0x1E31;
42056 t['kacyrillic'] = 0x043A;
42057 t['kadescendercyrillic'] = 0x049B;
42058 t['kadeva'] = 0x0915;
42059 t['kaf'] = 0x05DB;
42060 t['kafarabic'] = 0x0643;
42061 t['kafdagesh'] = 0xFB3B;
42062 t['kafdageshhebrew'] = 0xFB3B;
42063 t['kaffinalarabic'] = 0xFEDA;
42064 t['kafhebrew'] = 0x05DB;
42065 t['kafinitialarabic'] = 0xFEDB;
42066 t['kafmedialarabic'] = 0xFEDC;
42067 t['kafrafehebrew'] = 0xFB4D;
42068 t['kagujarati'] = 0x0A95;
42069 t['kagurmukhi'] = 0x0A15;
42070 t['kahiragana'] = 0x304B;
42071 t['kahookcyrillic'] = 0x04C4;
42072 t['kakatakana'] = 0x30AB;
42073 t['kakatakanahalfwidth'] = 0xFF76;
42074 t['kappa'] = 0x03BA;
42075 t['kappasymbolgreek'] = 0x03F0;
42076 t['kapyeounmieumkorean'] = 0x3171;
42077 t['kapyeounphieuphkorean'] = 0x3184;
42078 t['kapyeounpieupkorean'] = 0x3178;
42079 t['kapyeounssangpieupkorean'] = 0x3179;
42080 t['karoriisquare'] = 0x330D;
42081 t['kashidaautoarabic'] = 0x0640;
42082 t['kashidaautonosidebearingarabic'] = 0x0640;
42083 t['kasmallkatakana'] = 0x30F5;
42084 t['kasquare'] = 0x3384;
42085 t['kasraarabic'] = 0x0650;
42086 t['kasratanarabic'] = 0x064D;
42087 t['kastrokecyrillic'] = 0x049F;
42088 t['katahiraprolongmarkhalfwidth'] = 0xFF70;
42089 t['kaverticalstrokecyrillic'] = 0x049D;
42090 t['kbopomofo'] = 0x310E;
42091 t['kcalsquare'] = 0x3389;
42092 t['kcaron'] = 0x01E9;
42093 t['kcedilla'] = 0x0137;
42094 t['kcircle'] = 0x24DA;
42095 t['kcommaaccent'] = 0x0137;
42096 t['kdotbelow'] = 0x1E33;
42097 t['keharmenian'] = 0x0584;
42098 t['kehiragana'] = 0x3051;
42099 t['kekatakana'] = 0x30B1;
42100 t['kekatakanahalfwidth'] = 0xFF79;
42101 t['kenarmenian'] = 0x056F;
42102 t['kesmallkatakana'] = 0x30F6;
42103 t['kgreenlandic'] = 0x0138;
42104 t['khabengali'] = 0x0996;
42105 t['khacyrillic'] = 0x0445;
42106 t['khadeva'] = 0x0916;
42107 t['khagujarati'] = 0x0A96;
42108 t['khagurmukhi'] = 0x0A16;
42109 t['khaharabic'] = 0x062E;
42110 t['khahfinalarabic'] = 0xFEA6;
42111 t['khahinitialarabic'] = 0xFEA7;
42112 t['khahmedialarabic'] = 0xFEA8;
42113 t['kheicoptic'] = 0x03E7;
42114 t['khhadeva'] = 0x0959;
42115 t['khhagurmukhi'] = 0x0A59;
42116 t['khieukhacirclekorean'] = 0x3278;
42117 t['khieukhaparenkorean'] = 0x3218;
42118 t['khieukhcirclekorean'] = 0x326A;
42119 t['khieukhkorean'] = 0x314B;
42120 t['khieukhparenkorean'] = 0x320A;
42121 t['khokhaithai'] = 0x0E02;
42122 t['khokhonthai'] = 0x0E05;
42123 t['khokhuatthai'] = 0x0E03;
42124 t['khokhwaithai'] = 0x0E04;
42125 t['khomutthai'] = 0x0E5B;
42126 t['khook'] = 0x0199;
42127 t['khorakhangthai'] = 0x0E06;
42128 t['khzsquare'] = 0x3391;
42129 t['kihiragana'] = 0x304D;
42130 t['kikatakana'] = 0x30AD;
42131 t['kikatakanahalfwidth'] = 0xFF77;
42132 t['kiroguramusquare'] = 0x3315;
42133 t['kiromeetorusquare'] = 0x3316;
42134 t['kirosquare'] = 0x3314;
42135 t['kiyeokacirclekorean'] = 0x326E;
42136 t['kiyeokaparenkorean'] = 0x320E;
42137 t['kiyeokcirclekorean'] = 0x3260;
42138 t['kiyeokkorean'] = 0x3131;
42139 t['kiyeokparenkorean'] = 0x3200;
42140 t['kiyeoksioskorean'] = 0x3133;
42141 t['kjecyrillic'] = 0x045C;
42142 t['klinebelow'] = 0x1E35;
42143 t['klsquare'] = 0x3398;
42144 t['kmcubedsquare'] = 0x33A6;
42145 t['kmonospace'] = 0xFF4B;
42146 t['kmsquaredsquare'] = 0x33A2;
42147 t['kohiragana'] = 0x3053;
42148 t['kohmsquare'] = 0x33C0;
42149 t['kokaithai'] = 0x0E01;
42150 t['kokatakana'] = 0x30B3;
42151 t['kokatakanahalfwidth'] = 0xFF7A;
42152 t['kooposquare'] = 0x331E;
42153 t['koppacyrillic'] = 0x0481;
42154 t['koreanstandardsymbol'] = 0x327F;
42155 t['koroniscmb'] = 0x0343;
42156 t['kparen'] = 0x24A6;
42157 t['kpasquare'] = 0x33AA;
42158 t['ksicyrillic'] = 0x046F;
42159 t['ktsquare'] = 0x33CF;
42160 t['kturned'] = 0x029E;
42161 t['kuhiragana'] = 0x304F;
42162 t['kukatakana'] = 0x30AF;
42163 t['kukatakanahalfwidth'] = 0xFF78;
42164 t['kvsquare'] = 0x33B8;
42165 t['kwsquare'] = 0x33BE;
42166 t['l'] = 0x006C;
42167 t['labengali'] = 0x09B2;
42168 t['lacute'] = 0x013A;
42169 t['ladeva'] = 0x0932;
42170 t['lagujarati'] = 0x0AB2;
42171 t['lagurmukhi'] = 0x0A32;
42172 t['lakkhangyaothai'] = 0x0E45;
42173 t['lamaleffinalarabic'] = 0xFEFC;
42174 t['lamalefhamzaabovefinalarabic'] = 0xFEF8;
42175 t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7;
42176 t['lamalefhamzabelowfinalarabic'] = 0xFEFA;
42177 t['lamalefhamzabelowisolatedarabic'] = 0xFEF9;
42178 t['lamalefisolatedarabic'] = 0xFEFB;
42179 t['lamalefmaddaabovefinalarabic'] = 0xFEF6;
42180 t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5;
42181 t['lamarabic'] = 0x0644;
42182 t['lambda'] = 0x03BB;
42183 t['lambdastroke'] = 0x019B;
42184 t['lamed'] = 0x05DC;
42185 t['lameddagesh'] = 0xFB3C;
42186 t['lameddageshhebrew'] = 0xFB3C;
42187 t['lamedhebrew'] = 0x05DC;
42188 t['lamfinalarabic'] = 0xFEDE;
42189 t['lamhahinitialarabic'] = 0xFCCA;
42190 t['laminitialarabic'] = 0xFEDF;
42191 t['lamjeeminitialarabic'] = 0xFCC9;
42192 t['lamkhahinitialarabic'] = 0xFCCB;
42193 t['lamlamhehisolatedarabic'] = 0xFDF2;
42194 t['lammedialarabic'] = 0xFEE0;
42195 t['lammeemhahinitialarabic'] = 0xFD88;
42196 t['lammeeminitialarabic'] = 0xFCCC;
42197 t['largecircle'] = 0x25EF;
42198 t['lbar'] = 0x019A;
42199 t['lbelt'] = 0x026C;
42200 t['lbopomofo'] = 0x310C;
42201 t['lcaron'] = 0x013E;
42202 t['lcedilla'] = 0x013C;
42203 t['lcircle'] = 0x24DB;
42204 t['lcircumflexbelow'] = 0x1E3D;
42205 t['lcommaaccent'] = 0x013C;
42206 t['ldot'] = 0x0140;
42207 t['ldotaccent'] = 0x0140;
42208 t['ldotbelow'] = 0x1E37;
42209 t['ldotbelowmacron'] = 0x1E39;
42210 t['leftangleabovecmb'] = 0x031A;
42211 t['lefttackbelowcmb'] = 0x0318;
42212 t['less'] = 0x003C;
42213 t['lessequal'] = 0x2264;
42214 t['lessequalorgreater'] = 0x22DA;
42215 t['lessmonospace'] = 0xFF1C;
42216 t['lessorequivalent'] = 0x2272;
42217 t['lessorgreater'] = 0x2276;
42218 t['lessoverequal'] = 0x2266;
42219 t['lesssmall'] = 0xFE64;
42220 t['lezh'] = 0x026E;
42221 t['lfblock'] = 0x258C;
42222 t['lhookretroflex'] = 0x026D;
42223 t['lira'] = 0x20A4;
42224 t['liwnarmenian'] = 0x056C;
42225 t['lj'] = 0x01C9;
42226 t['ljecyrillic'] = 0x0459;
42227 t['ll'] = 0xF6C0;
42228 t['lladeva'] = 0x0933;
42229 t['llagujarati'] = 0x0AB3;
42230 t['llinebelow'] = 0x1E3B;
42231 t['llladeva'] = 0x0934;
42232 t['llvocalicbengali'] = 0x09E1;
42233 t['llvocalicdeva'] = 0x0961;
42234 t['llvocalicvowelsignbengali'] = 0x09E3;
42235 t['llvocalicvowelsigndeva'] = 0x0963;
42236 t['lmiddletilde'] = 0x026B;
42237 t['lmonospace'] = 0xFF4C;
42238 t['lmsquare'] = 0x33D0;
42239 t['lochulathai'] = 0x0E2C;
42240 t['logicaland'] = 0x2227;
42241 t['logicalnot'] = 0x00AC;
42242 t['logicalnotreversed'] = 0x2310;
42243 t['logicalor'] = 0x2228;
42244 t['lolingthai'] = 0x0E25;
42245 t['longs'] = 0x017F;
42246 t['lowlinecenterline'] = 0xFE4E;
42247 t['lowlinecmb'] = 0x0332;
42248 t['lowlinedashed'] = 0xFE4D;
42249 t['lozenge'] = 0x25CA;
42250 t['lparen'] = 0x24A7;
42251 t['lslash'] = 0x0142;
42252 t['lsquare'] = 0x2113;
42253 t['lsuperior'] = 0xF6EE;
42254 t['ltshade'] = 0x2591;
42255 t['luthai'] = 0x0E26;
42256 t['lvocalicbengali'] = 0x098C;
42257 t['lvocalicdeva'] = 0x090C;
42258 t['lvocalicvowelsignbengali'] = 0x09E2;
42259 t['lvocalicvowelsigndeva'] = 0x0962;
42260 t['lxsquare'] = 0x33D3;
42261 t['m'] = 0x006D;
42262 t['mabengali'] = 0x09AE;
42263 t['macron'] = 0x00AF;
42264 t['macronbelowcmb'] = 0x0331;
42265 t['macroncmb'] = 0x0304;
42266 t['macronlowmod'] = 0x02CD;
42267 t['macronmonospace'] = 0xFFE3;
42268 t['macute'] = 0x1E3F;
42269 t['madeva'] = 0x092E;
42270 t['magujarati'] = 0x0AAE;
42271 t['magurmukhi'] = 0x0A2E;
42272 t['mahapakhhebrew'] = 0x05A4;
42273 t['mahapakhlefthebrew'] = 0x05A4;
42274 t['mahiragana'] = 0x307E;
42275 t['maichattawalowleftthai'] = 0xF895;
42276 t['maichattawalowrightthai'] = 0xF894;
42277 t['maichattawathai'] = 0x0E4B;
42278 t['maichattawaupperleftthai'] = 0xF893;
42279 t['maieklowleftthai'] = 0xF88C;
42280 t['maieklowrightthai'] = 0xF88B;
42281 t['maiekthai'] = 0x0E48;
42282 t['maiekupperleftthai'] = 0xF88A;
42283 t['maihanakatleftthai'] = 0xF884;
42284 t['maihanakatthai'] = 0x0E31;
42285 t['maitaikhuleftthai'] = 0xF889;
42286 t['maitaikhuthai'] = 0x0E47;
42287 t['maitholowleftthai'] = 0xF88F;
42288 t['maitholowrightthai'] = 0xF88E;
42289 t['maithothai'] = 0x0E49;
42290 t['maithoupperleftthai'] = 0xF88D;
42291 t['maitrilowleftthai'] = 0xF892;
42292 t['maitrilowrightthai'] = 0xF891;
42293 t['maitrithai'] = 0x0E4A;
42294 t['maitriupperleftthai'] = 0xF890;
42295 t['maiyamokthai'] = 0x0E46;
42296 t['makatakana'] = 0x30DE;
42297 t['makatakanahalfwidth'] = 0xFF8F;
42298 t['male'] = 0x2642;
42299 t['mansyonsquare'] = 0x3347;
42300 t['maqafhebrew'] = 0x05BE;
42301 t['mars'] = 0x2642;
42302 t['masoracirclehebrew'] = 0x05AF;
42303 t['masquare'] = 0x3383;
42304 t['mbopomofo'] = 0x3107;
42305 t['mbsquare'] = 0x33D4;
42306 t['mcircle'] = 0x24DC;
42307 t['mcubedsquare'] = 0x33A5;
42308 t['mdotaccent'] = 0x1E41;
42309 t['mdotbelow'] = 0x1E43;
42310 t['meemarabic'] = 0x0645;
42311 t['meemfinalarabic'] = 0xFEE2;
42312 t['meeminitialarabic'] = 0xFEE3;
42313 t['meemmedialarabic'] = 0xFEE4;
42314 t['meemmeeminitialarabic'] = 0xFCD1;
42315 t['meemmeemisolatedarabic'] = 0xFC48;
42316 t['meetorusquare'] = 0x334D;
42317 t['mehiragana'] = 0x3081;
42318 t['meizierasquare'] = 0x337E;
42319 t['mekatakana'] = 0x30E1;
42320 t['mekatakanahalfwidth'] = 0xFF92;
42321 t['mem'] = 0x05DE;
42322 t['memdagesh'] = 0xFB3E;
42323 t['memdageshhebrew'] = 0xFB3E;
42324 t['memhebrew'] = 0x05DE;
42325 t['menarmenian'] = 0x0574;
42326 t['merkhahebrew'] = 0x05A5;
42327 t['merkhakefulahebrew'] = 0x05A6;
42328 t['merkhakefulalefthebrew'] = 0x05A6;
42329 t['merkhalefthebrew'] = 0x05A5;
42330 t['mhook'] = 0x0271;
42331 t['mhzsquare'] = 0x3392;
42332 t['middledotkatakanahalfwidth'] = 0xFF65;
42333 t['middot'] = 0x00B7;
42334 t['mieumacirclekorean'] = 0x3272;
42335 t['mieumaparenkorean'] = 0x3212;
42336 t['mieumcirclekorean'] = 0x3264;
42337 t['mieumkorean'] = 0x3141;
42338 t['mieumpansioskorean'] = 0x3170;
42339 t['mieumparenkorean'] = 0x3204;
42340 t['mieumpieupkorean'] = 0x316E;
42341 t['mieumsioskorean'] = 0x316F;
42342 t['mihiragana'] = 0x307F;
42343 t['mikatakana'] = 0x30DF;
42344 t['mikatakanahalfwidth'] = 0xFF90;
42345 t['minus'] = 0x2212;
42346 t['minusbelowcmb'] = 0x0320;
42347 t['minuscircle'] = 0x2296;
42348 t['minusmod'] = 0x02D7;
42349 t['minusplus'] = 0x2213;
42350 t['minute'] = 0x2032;
42351 t['miribaarusquare'] = 0x334A;
42352 t['mirisquare'] = 0x3349;
42353 t['mlonglegturned'] = 0x0270;
42354 t['mlsquare'] = 0x3396;
42355 t['mmcubedsquare'] = 0x33A3;
42356 t['mmonospace'] = 0xFF4D;
42357 t['mmsquaredsquare'] = 0x339F;
42358 t['mohiragana'] = 0x3082;
42359 t['mohmsquare'] = 0x33C1;
42360 t['mokatakana'] = 0x30E2;
42361 t['mokatakanahalfwidth'] = 0xFF93;
42362 t['molsquare'] = 0x33D6;
42363 t['momathai'] = 0x0E21;
42364 t['moverssquare'] = 0x33A7;
42365 t['moverssquaredsquare'] = 0x33A8;
42366 t['mparen'] = 0x24A8;
42367 t['mpasquare'] = 0x33AB;
42368 t['mssquare'] = 0x33B3;
42369 t['msuperior'] = 0xF6EF;
42370 t['mturned'] = 0x026F;
42371 t['mu'] = 0x00B5;
42372 t['mu1'] = 0x00B5;
42373 t['muasquare'] = 0x3382;
42374 t['muchgreater'] = 0x226B;
42375 t['muchless'] = 0x226A;
42376 t['mufsquare'] = 0x338C;
42377 t['mugreek'] = 0x03BC;
42378 t['mugsquare'] = 0x338D;
42379 t['muhiragana'] = 0x3080;
42380 t['mukatakana'] = 0x30E0;
42381 t['mukatakanahalfwidth'] = 0xFF91;
42382 t['mulsquare'] = 0x3395;
42383 t['multiply'] = 0x00D7;
42384 t['mumsquare'] = 0x339B;
42385 t['munahhebrew'] = 0x05A3;
42386 t['munahlefthebrew'] = 0x05A3;
42387 t['musicalnote'] = 0x266A;
42388 t['musicalnotedbl'] = 0x266B;
42389 t['musicflatsign'] = 0x266D;
42390 t['musicsharpsign'] = 0x266F;
42391 t['mussquare'] = 0x33B2;
42392 t['muvsquare'] = 0x33B6;
42393 t['muwsquare'] = 0x33BC;
42394 t['mvmegasquare'] = 0x33B9;
42395 t['mvsquare'] = 0x33B7;
42396 t['mwmegasquare'] = 0x33BF;
42397 t['mwsquare'] = 0x33BD;
42398 t['n'] = 0x006E;
42399 t['nabengali'] = 0x09A8;
42400 t['nabla'] = 0x2207;
42401 t['nacute'] = 0x0144;
42402 t['nadeva'] = 0x0928;
42403 t['nagujarati'] = 0x0AA8;
42404 t['nagurmukhi'] = 0x0A28;
42405 t['nahiragana'] = 0x306A;
42406 t['nakatakana'] = 0x30CA;
42407 t['nakatakanahalfwidth'] = 0xFF85;
42408 t['napostrophe'] = 0x0149;
42409 t['nasquare'] = 0x3381;
42410 t['nbopomofo'] = 0x310B;
42411 t['nbspace'] = 0x00A0;
42412 t['ncaron'] = 0x0148;
42413 t['ncedilla'] = 0x0146;
42414 t['ncircle'] = 0x24DD;
42415 t['ncircumflexbelow'] = 0x1E4B;
42416 t['ncommaaccent'] = 0x0146;
42417 t['ndotaccent'] = 0x1E45;
42418 t['ndotbelow'] = 0x1E47;
42419 t['nehiragana'] = 0x306D;
42420 t['nekatakana'] = 0x30CD;
42421 t['nekatakanahalfwidth'] = 0xFF88;
42422 t['newsheqelsign'] = 0x20AA;
42423 t['nfsquare'] = 0x338B;
42424 t['ngabengali'] = 0x0999;
42425 t['ngadeva'] = 0x0919;
42426 t['ngagujarati'] = 0x0A99;
42427 t['ngagurmukhi'] = 0x0A19;
42428 t['ngonguthai'] = 0x0E07;
42429 t['nhiragana'] = 0x3093;
42430 t['nhookleft'] = 0x0272;
42431 t['nhookretroflex'] = 0x0273;
42432 t['nieunacirclekorean'] = 0x326F;
42433 t['nieunaparenkorean'] = 0x320F;
42434 t['nieuncieuckorean'] = 0x3135;
42435 t['nieuncirclekorean'] = 0x3261;
42436 t['nieunhieuhkorean'] = 0x3136;
42437 t['nieunkorean'] = 0x3134;
42438 t['nieunpansioskorean'] = 0x3168;
42439 t['nieunparenkorean'] = 0x3201;
42440 t['nieunsioskorean'] = 0x3167;
42441 t['nieuntikeutkorean'] = 0x3166;
42442 t['nihiragana'] = 0x306B;
42443 t['nikatakana'] = 0x30CB;
42444 t['nikatakanahalfwidth'] = 0xFF86;
42445 t['nikhahitleftthai'] = 0xF899;
42446 t['nikhahitthai'] = 0x0E4D;
42447 t['nine'] = 0x0039;
42448 t['ninearabic'] = 0x0669;
42449 t['ninebengali'] = 0x09EF;
42450 t['ninecircle'] = 0x2468;
42451 t['ninecircleinversesansserif'] = 0x2792;
42452 t['ninedeva'] = 0x096F;
42453 t['ninegujarati'] = 0x0AEF;
42454 t['ninegurmukhi'] = 0x0A6F;
42455 t['ninehackarabic'] = 0x0669;
42456 t['ninehangzhou'] = 0x3029;
42457 t['nineideographicparen'] = 0x3228;
42458 t['nineinferior'] = 0x2089;
42459 t['ninemonospace'] = 0xFF19;
42460 t['nineoldstyle'] = 0xF739;
42461 t['nineparen'] = 0x247C;
42462 t['nineperiod'] = 0x2490;
42463 t['ninepersian'] = 0x06F9;
42464 t['nineroman'] = 0x2178;
42465 t['ninesuperior'] = 0x2079;
42466 t['nineteencircle'] = 0x2472;
42467 t['nineteenparen'] = 0x2486;
42468 t['nineteenperiod'] = 0x249A;
42469 t['ninethai'] = 0x0E59;
42470 t['nj'] = 0x01CC;
42471 t['njecyrillic'] = 0x045A;
42472 t['nkatakana'] = 0x30F3;
42473 t['nkatakanahalfwidth'] = 0xFF9D;
42474 t['nlegrightlong'] = 0x019E;
42475 t['nlinebelow'] = 0x1E49;
42476 t['nmonospace'] = 0xFF4E;
42477 t['nmsquare'] = 0x339A;
42478 t['nnabengali'] = 0x09A3;
42479 t['nnadeva'] = 0x0923;
42480 t['nnagujarati'] = 0x0AA3;
42481 t['nnagurmukhi'] = 0x0A23;
42482 t['nnnadeva'] = 0x0929;
42483 t['nohiragana'] = 0x306E;
42484 t['nokatakana'] = 0x30CE;
42485 t['nokatakanahalfwidth'] = 0xFF89;
42486 t['nonbreakingspace'] = 0x00A0;
42487 t['nonenthai'] = 0x0E13;
42488 t['nonuthai'] = 0x0E19;
42489 t['noonarabic'] = 0x0646;
42490 t['noonfinalarabic'] = 0xFEE6;
42491 t['noonghunnaarabic'] = 0x06BA;
42492 t['noonghunnafinalarabic'] = 0xFB9F;
42493 t['nooninitialarabic'] = 0xFEE7;
42494 t['noonjeeminitialarabic'] = 0xFCD2;
42495 t['noonjeemisolatedarabic'] = 0xFC4B;
42496 t['noonmedialarabic'] = 0xFEE8;
42497 t['noonmeeminitialarabic'] = 0xFCD5;
42498 t['noonmeemisolatedarabic'] = 0xFC4E;
42499 t['noonnoonfinalarabic'] = 0xFC8D;
42500 t['notcontains'] = 0x220C;
42501 t['notelement'] = 0x2209;
42502 t['notelementof'] = 0x2209;
42503 t['notequal'] = 0x2260;
42504 t['notgreater'] = 0x226F;
42505 t['notgreaternorequal'] = 0x2271;
42506 t['notgreaternorless'] = 0x2279;
42507 t['notidentical'] = 0x2262;
42508 t['notless'] = 0x226E;
42509 t['notlessnorequal'] = 0x2270;
42510 t['notparallel'] = 0x2226;
42511 t['notprecedes'] = 0x2280;
42512 t['notsubset'] = 0x2284;
42513 t['notsucceeds'] = 0x2281;
42514 t['notsuperset'] = 0x2285;
42515 t['nowarmenian'] = 0x0576;
42516 t['nparen'] = 0x24A9;
42517 t['nssquare'] = 0x33B1;
42518 t['nsuperior'] = 0x207F;
42519 t['ntilde'] = 0x00F1;
42520 t['nu'] = 0x03BD;
42521 t['nuhiragana'] = 0x306C;
42522 t['nukatakana'] = 0x30CC;
42523 t['nukatakanahalfwidth'] = 0xFF87;
42524 t['nuktabengali'] = 0x09BC;
42525 t['nuktadeva'] = 0x093C;
42526 t['nuktagujarati'] = 0x0ABC;
42527 t['nuktagurmukhi'] = 0x0A3C;
42528 t['numbersign'] = 0x0023;
42529 t['numbersignmonospace'] = 0xFF03;
42530 t['numbersignsmall'] = 0xFE5F;
42531 t['numeralsigngreek'] = 0x0374;
42532 t['numeralsignlowergreek'] = 0x0375;
42533 t['numero'] = 0x2116;
42534 t['nun'] = 0x05E0;
42535 t['nundagesh'] = 0xFB40;
42536 t['nundageshhebrew'] = 0xFB40;
42537 t['nunhebrew'] = 0x05E0;
42538 t['nvsquare'] = 0x33B5;
42539 t['nwsquare'] = 0x33BB;
42540 t['nyabengali'] = 0x099E;
42541 t['nyadeva'] = 0x091E;
42542 t['nyagujarati'] = 0x0A9E;
42543 t['nyagurmukhi'] = 0x0A1E;
42544 t['o'] = 0x006F;
42545 t['oacute'] = 0x00F3;
42546 t['oangthai'] = 0x0E2D;
42547 t['obarred'] = 0x0275;
42548 t['obarredcyrillic'] = 0x04E9;
42549 t['obarreddieresiscyrillic'] = 0x04EB;
42550 t['obengali'] = 0x0993;
42551 t['obopomofo'] = 0x311B;
42552 t['obreve'] = 0x014F;
42553 t['ocandradeva'] = 0x0911;
42554 t['ocandragujarati'] = 0x0A91;
42555 t['ocandravowelsigndeva'] = 0x0949;
42556 t['ocandravowelsigngujarati'] = 0x0AC9;
42557 t['ocaron'] = 0x01D2;
42558 t['ocircle'] = 0x24DE;
42559 t['ocircumflex'] = 0x00F4;
42560 t['ocircumflexacute'] = 0x1ED1;
42561 t['ocircumflexdotbelow'] = 0x1ED9;
42562 t['ocircumflexgrave'] = 0x1ED3;
42563 t['ocircumflexhookabove'] = 0x1ED5;
42564 t['ocircumflextilde'] = 0x1ED7;
42565 t['ocyrillic'] = 0x043E;
42566 t['odblacute'] = 0x0151;
42567 t['odblgrave'] = 0x020D;
42568 t['odeva'] = 0x0913;
42569 t['odieresis'] = 0x00F6;
42570 t['odieresiscyrillic'] = 0x04E7;
42571 t['odotbelow'] = 0x1ECD;
42572 t['oe'] = 0x0153;
42573 t['oekorean'] = 0x315A;
42574 t['ogonek'] = 0x02DB;
42575 t['ogonekcmb'] = 0x0328;
42576 t['ograve'] = 0x00F2;
42577 t['ogujarati'] = 0x0A93;
42578 t['oharmenian'] = 0x0585;
42579 t['ohiragana'] = 0x304A;
42580 t['ohookabove'] = 0x1ECF;
42581 t['ohorn'] = 0x01A1;
42582 t['ohornacute'] = 0x1EDB;
42583 t['ohorndotbelow'] = 0x1EE3;
42584 t['ohorngrave'] = 0x1EDD;
42585 t['ohornhookabove'] = 0x1EDF;
42586 t['ohorntilde'] = 0x1EE1;
42587 t['ohungarumlaut'] = 0x0151;
42588 t['oi'] = 0x01A3;
42589 t['oinvertedbreve'] = 0x020F;
42590 t['okatakana'] = 0x30AA;
42591 t['okatakanahalfwidth'] = 0xFF75;
42592 t['okorean'] = 0x3157;
42593 t['olehebrew'] = 0x05AB;
42594 t['omacron'] = 0x014D;
42595 t['omacronacute'] = 0x1E53;
42596 t['omacrongrave'] = 0x1E51;
42597 t['omdeva'] = 0x0950;
42598 t['omega'] = 0x03C9;
42599 t['omega1'] = 0x03D6;
42600 t['omegacyrillic'] = 0x0461;
42601 t['omegalatinclosed'] = 0x0277;
42602 t['omegaroundcyrillic'] = 0x047B;
42603 t['omegatitlocyrillic'] = 0x047D;
42604 t['omegatonos'] = 0x03CE;
42605 t['omgujarati'] = 0x0AD0;
42606 t['omicron'] = 0x03BF;
42607 t['omicrontonos'] = 0x03CC;
42608 t['omonospace'] = 0xFF4F;
42609 t['one'] = 0x0031;
42610 t['onearabic'] = 0x0661;
42611 t['onebengali'] = 0x09E7;
42612 t['onecircle'] = 0x2460;
42613 t['onecircleinversesansserif'] = 0x278A;
42614 t['onedeva'] = 0x0967;
42615 t['onedotenleader'] = 0x2024;
42616 t['oneeighth'] = 0x215B;
42617 t['onefitted'] = 0xF6DC;
42618 t['onegujarati'] = 0x0AE7;
42619 t['onegurmukhi'] = 0x0A67;
42620 t['onehackarabic'] = 0x0661;
42621 t['onehalf'] = 0x00BD;
42622 t['onehangzhou'] = 0x3021;
42623 t['oneideographicparen'] = 0x3220;
42624 t['oneinferior'] = 0x2081;
42625 t['onemonospace'] = 0xFF11;
42626 t['onenumeratorbengali'] = 0x09F4;
42627 t['oneoldstyle'] = 0xF731;
42628 t['oneparen'] = 0x2474;
42629 t['oneperiod'] = 0x2488;
42630 t['onepersian'] = 0x06F1;
42631 t['onequarter'] = 0x00BC;
42632 t['oneroman'] = 0x2170;
42633 t['onesuperior'] = 0x00B9;
42634 t['onethai'] = 0x0E51;
42635 t['onethird'] = 0x2153;
42636 t['oogonek'] = 0x01EB;
42637 t['oogonekmacron'] = 0x01ED;
42638 t['oogurmukhi'] = 0x0A13;
42639 t['oomatragurmukhi'] = 0x0A4B;
42640 t['oopen'] = 0x0254;
42641 t['oparen'] = 0x24AA;
42642 t['openbullet'] = 0x25E6;
42643 t['option'] = 0x2325;
42644 t['ordfeminine'] = 0x00AA;
42645 t['ordmasculine'] = 0x00BA;
42646 t['orthogonal'] = 0x221F;
42647 t['oshortdeva'] = 0x0912;
42648 t['oshortvowelsigndeva'] = 0x094A;
42649 t['oslash'] = 0x00F8;
42650 t['oslashacute'] = 0x01FF;
42651 t['osmallhiragana'] = 0x3049;
42652 t['osmallkatakana'] = 0x30A9;
42653 t['osmallkatakanahalfwidth'] = 0xFF6B;
42654 t['ostrokeacute'] = 0x01FF;
42655 t['osuperior'] = 0xF6F0;
42656 t['otcyrillic'] = 0x047F;
42657 t['otilde'] = 0x00F5;
42658 t['otildeacute'] = 0x1E4D;
42659 t['otildedieresis'] = 0x1E4F;
42660 t['oubopomofo'] = 0x3121;
42661 t['overline'] = 0x203E;
42662 t['overlinecenterline'] = 0xFE4A;
42663 t['overlinecmb'] = 0x0305;
42664 t['overlinedashed'] = 0xFE49;
42665 t['overlinedblwavy'] = 0xFE4C;
42666 t['overlinewavy'] = 0xFE4B;
42667 t['overscore'] = 0x00AF;
42668 t['ovowelsignbengali'] = 0x09CB;
42669 t['ovowelsigndeva'] = 0x094B;
42670 t['ovowelsigngujarati'] = 0x0ACB;
42671 t['p'] = 0x0070;
42672 t['paampssquare'] = 0x3380;
42673 t['paasentosquare'] = 0x332B;
42674 t['pabengali'] = 0x09AA;
42675 t['pacute'] = 0x1E55;
42676 t['padeva'] = 0x092A;
42677 t['pagedown'] = 0x21DF;
42678 t['pageup'] = 0x21DE;
42679 t['pagujarati'] = 0x0AAA;
42680 t['pagurmukhi'] = 0x0A2A;
42681 t['pahiragana'] = 0x3071;
42682 t['paiyannoithai'] = 0x0E2F;
42683 t['pakatakana'] = 0x30D1;
42684 t['palatalizationcyrilliccmb'] = 0x0484;
42685 t['palochkacyrillic'] = 0x04C0;
42686 t['pansioskorean'] = 0x317F;
42687 t['paragraph'] = 0x00B6;
42688 t['parallel'] = 0x2225;
42689 t['parenleft'] = 0x0028;
42690 t['parenleftaltonearabic'] = 0xFD3E;
42691 t['parenleftbt'] = 0xF8ED;
42692 t['parenleftex'] = 0xF8EC;
42693 t['parenleftinferior'] = 0x208D;
42694 t['parenleftmonospace'] = 0xFF08;
42695 t['parenleftsmall'] = 0xFE59;
42696 t['parenleftsuperior'] = 0x207D;
42697 t['parenlefttp'] = 0xF8EB;
42698 t['parenleftvertical'] = 0xFE35;
42699 t['parenright'] = 0x0029;
42700 t['parenrightaltonearabic'] = 0xFD3F;
42701 t['parenrightbt'] = 0xF8F8;
42702 t['parenrightex'] = 0xF8F7;
42703 t['parenrightinferior'] = 0x208E;
42704 t['parenrightmonospace'] = 0xFF09;
42705 t['parenrightsmall'] = 0xFE5A;
42706 t['parenrightsuperior'] = 0x207E;
42707 t['parenrighttp'] = 0xF8F6;
42708 t['parenrightvertical'] = 0xFE36;
42709 t['partialdiff'] = 0x2202;
42710 t['paseqhebrew'] = 0x05C0;
42711 t['pashtahebrew'] = 0x0599;
42712 t['pasquare'] = 0x33A9;
42713 t['patah'] = 0x05B7;
42714 t['patah11'] = 0x05B7;
42715 t['patah1d'] = 0x05B7;
42716 t['patah2a'] = 0x05B7;
42717 t['patahhebrew'] = 0x05B7;
42718 t['patahnarrowhebrew'] = 0x05B7;
42719 t['patahquarterhebrew'] = 0x05B7;
42720 t['patahwidehebrew'] = 0x05B7;
42721 t['pazerhebrew'] = 0x05A1;
42722 t['pbopomofo'] = 0x3106;
42723 t['pcircle'] = 0x24DF;
42724 t['pdotaccent'] = 0x1E57;
42725 t['pe'] = 0x05E4;
42726 t['pecyrillic'] = 0x043F;
42727 t['pedagesh'] = 0xFB44;
42728 t['pedageshhebrew'] = 0xFB44;
42729 t['peezisquare'] = 0x333B;
42730 t['pefinaldageshhebrew'] = 0xFB43;
42731 t['peharabic'] = 0x067E;
42732 t['peharmenian'] = 0x057A;
42733 t['pehebrew'] = 0x05E4;
42734 t['pehfinalarabic'] = 0xFB57;
42735 t['pehinitialarabic'] = 0xFB58;
42736 t['pehiragana'] = 0x307A;
42737 t['pehmedialarabic'] = 0xFB59;
42738 t['pekatakana'] = 0x30DA;
42739 t['pemiddlehookcyrillic'] = 0x04A7;
42740 t['perafehebrew'] = 0xFB4E;
42741 t['percent'] = 0x0025;
42742 t['percentarabic'] = 0x066A;
42743 t['percentmonospace'] = 0xFF05;
42744 t['percentsmall'] = 0xFE6A;
42745 t['period'] = 0x002E;
42746 t['periodarmenian'] = 0x0589;
42747 t['periodcentered'] = 0x00B7;
42748 t['periodhalfwidth'] = 0xFF61;
42749 t['periodinferior'] = 0xF6E7;
42750 t['periodmonospace'] = 0xFF0E;
42751 t['periodsmall'] = 0xFE52;
42752 t['periodsuperior'] = 0xF6E8;
42753 t['perispomenigreekcmb'] = 0x0342;
42754 t['perpendicular'] = 0x22A5;
42755 t['perthousand'] = 0x2030;
42756 t['peseta'] = 0x20A7;
42757 t['pfsquare'] = 0x338A;
42758 t['phabengali'] = 0x09AB;
42759 t['phadeva'] = 0x092B;
42760 t['phagujarati'] = 0x0AAB;
42761 t['phagurmukhi'] = 0x0A2B;
42762 t['phi'] = 0x03C6;
42763 t['phi1'] = 0x03D5;
42764 t['phieuphacirclekorean'] = 0x327A;
42765 t['phieuphaparenkorean'] = 0x321A;
42766 t['phieuphcirclekorean'] = 0x326C;
42767 t['phieuphkorean'] = 0x314D;
42768 t['phieuphparenkorean'] = 0x320C;
42769 t['philatin'] = 0x0278;
42770 t['phinthuthai'] = 0x0E3A;
42771 t['phisymbolgreek'] = 0x03D5;
42772 t['phook'] = 0x01A5;
42773 t['phophanthai'] = 0x0E1E;
42774 t['phophungthai'] = 0x0E1C;
42775 t['phosamphaothai'] = 0x0E20;
42776 t['pi'] = 0x03C0;
42777 t['pieupacirclekorean'] = 0x3273;
42778 t['pieupaparenkorean'] = 0x3213;
42779 t['pieupcieuckorean'] = 0x3176;
42780 t['pieupcirclekorean'] = 0x3265;
42781 t['pieupkiyeokkorean'] = 0x3172;
42782 t['pieupkorean'] = 0x3142;
42783 t['pieupparenkorean'] = 0x3205;
42784 t['pieupsioskiyeokkorean'] = 0x3174;
42785 t['pieupsioskorean'] = 0x3144;
42786 t['pieupsiostikeutkorean'] = 0x3175;
42787 t['pieupthieuthkorean'] = 0x3177;
42788 t['pieuptikeutkorean'] = 0x3173;
42789 t['pihiragana'] = 0x3074;
42790 t['pikatakana'] = 0x30D4;
42791 t['pisymbolgreek'] = 0x03D6;
42792 t['piwrarmenian'] = 0x0583;
42793 t['plus'] = 0x002B;
42794 t['plusbelowcmb'] = 0x031F;
42795 t['pluscircle'] = 0x2295;
42796 t['plusminus'] = 0x00B1;
42797 t['plusmod'] = 0x02D6;
42798 t['plusmonospace'] = 0xFF0B;
42799 t['plussmall'] = 0xFE62;
42800 t['plussuperior'] = 0x207A;
42801 t['pmonospace'] = 0xFF50;
42802 t['pmsquare'] = 0x33D8;
42803 t['pohiragana'] = 0x307D;
42804 t['pointingindexdownwhite'] = 0x261F;
42805 t['pointingindexleftwhite'] = 0x261C;
42806 t['pointingindexrightwhite'] = 0x261E;
42807 t['pointingindexupwhite'] = 0x261D;
42808 t['pokatakana'] = 0x30DD;
42809 t['poplathai'] = 0x0E1B;
42810 t['postalmark'] = 0x3012;
42811 t['postalmarkface'] = 0x3020;
42812 t['pparen'] = 0x24AB;
42813 t['precedes'] = 0x227A;
42814 t['prescription'] = 0x211E;
42815 t['primemod'] = 0x02B9;
42816 t['primereversed'] = 0x2035;
42817 t['product'] = 0x220F;
42818 t['projective'] = 0x2305;
42819 t['prolongedkana'] = 0x30FC;
42820 t['propellor'] = 0x2318;
42821 t['propersubset'] = 0x2282;
42822 t['propersuperset'] = 0x2283;
42823 t['proportion'] = 0x2237;
42824 t['proportional'] = 0x221D;
42825 t['psi'] = 0x03C8;
42826 t['psicyrillic'] = 0x0471;
42827 t['psilipneumatacyrilliccmb'] = 0x0486;
42828 t['pssquare'] = 0x33B0;
42829 t['puhiragana'] = 0x3077;
42830 t['pukatakana'] = 0x30D7;
42831 t['pvsquare'] = 0x33B4;
42832 t['pwsquare'] = 0x33BA;
42833 t['q'] = 0x0071;
42834 t['qadeva'] = 0x0958;
42835 t['qadmahebrew'] = 0x05A8;
42836 t['qafarabic'] = 0x0642;
42837 t['qaffinalarabic'] = 0xFED6;
42838 t['qafinitialarabic'] = 0xFED7;
42839 t['qafmedialarabic'] = 0xFED8;
42840 t['qamats'] = 0x05B8;
42841 t['qamats10'] = 0x05B8;
42842 t['qamats1a'] = 0x05B8;
42843 t['qamats1c'] = 0x05B8;
42844 t['qamats27'] = 0x05B8;
42845 t['qamats29'] = 0x05B8;
42846 t['qamats33'] = 0x05B8;
42847 t['qamatsde'] = 0x05B8;
42848 t['qamatshebrew'] = 0x05B8;
42849 t['qamatsnarrowhebrew'] = 0x05B8;
42850 t['qamatsqatanhebrew'] = 0x05B8;
42851 t['qamatsqatannarrowhebrew'] = 0x05B8;
42852 t['qamatsqatanquarterhebrew'] = 0x05B8;
42853 t['qamatsqatanwidehebrew'] = 0x05B8;
42854 t['qamatsquarterhebrew'] = 0x05B8;
42855 t['qamatswidehebrew'] = 0x05B8;
42856 t['qarneyparahebrew'] = 0x059F;
42857 t['qbopomofo'] = 0x3111;
42858 t['qcircle'] = 0x24E0;
42859 t['qhook'] = 0x02A0;
42860 t['qmonospace'] = 0xFF51;
42861 t['qof'] = 0x05E7;
42862 t['qofdagesh'] = 0xFB47;
42863 t['qofdageshhebrew'] = 0xFB47;
42864 t['qofhebrew'] = 0x05E7;
42865 t['qparen'] = 0x24AC;
42866 t['quarternote'] = 0x2669;
42867 t['qubuts'] = 0x05BB;
42868 t['qubuts18'] = 0x05BB;
42869 t['qubuts25'] = 0x05BB;
42870 t['qubuts31'] = 0x05BB;
42871 t['qubutshebrew'] = 0x05BB;
42872 t['qubutsnarrowhebrew'] = 0x05BB;
42873 t['qubutsquarterhebrew'] = 0x05BB;
42874 t['qubutswidehebrew'] = 0x05BB;
42875 t['question'] = 0x003F;
42876 t['questionarabic'] = 0x061F;
42877 t['questionarmenian'] = 0x055E;
42878 t['questiondown'] = 0x00BF;
42879 t['questiondownsmall'] = 0xF7BF;
42880 t['questiongreek'] = 0x037E;
42881 t['questionmonospace'] = 0xFF1F;
42882 t['questionsmall'] = 0xF73F;
42883 t['quotedbl'] = 0x0022;
42884 t['quotedblbase'] = 0x201E;
42885 t['quotedblleft'] = 0x201C;
42886 t['quotedblmonospace'] = 0xFF02;
42887 t['quotedblprime'] = 0x301E;
42888 t['quotedblprimereversed'] = 0x301D;
42889 t['quotedblright'] = 0x201D;
42890 t['quoteleft'] = 0x2018;
42891 t['quoteleftreversed'] = 0x201B;
42892 t['quotereversed'] = 0x201B;
42893 t['quoteright'] = 0x2019;
42894 t['quoterightn'] = 0x0149;
42895 t['quotesinglbase'] = 0x201A;
42896 t['quotesingle'] = 0x0027;
42897 t['quotesinglemonospace'] = 0xFF07;
42898 t['r'] = 0x0072;
42899 t['raarmenian'] = 0x057C;
42900 t['rabengali'] = 0x09B0;
42901 t['racute'] = 0x0155;
42902 t['radeva'] = 0x0930;
42903 t['radical'] = 0x221A;
42904 t['radicalex'] = 0xF8E5;
42905 t['radoverssquare'] = 0x33AE;
42906 t['radoverssquaredsquare'] = 0x33AF;
42907 t['radsquare'] = 0x33AD;
42908 t['rafe'] = 0x05BF;
42909 t['rafehebrew'] = 0x05BF;
42910 t['ragujarati'] = 0x0AB0;
42911 t['ragurmukhi'] = 0x0A30;
42912 t['rahiragana'] = 0x3089;
42913 t['rakatakana'] = 0x30E9;
42914 t['rakatakanahalfwidth'] = 0xFF97;
42915 t['ralowerdiagonalbengali'] = 0x09F1;
42916 t['ramiddlediagonalbengali'] = 0x09F0;
42917 t['ramshorn'] = 0x0264;
42918 t['ratio'] = 0x2236;
42919 t['rbopomofo'] = 0x3116;
42920 t['rcaron'] = 0x0159;
42921 t['rcedilla'] = 0x0157;
42922 t['rcircle'] = 0x24E1;
42923 t['rcommaaccent'] = 0x0157;
42924 t['rdblgrave'] = 0x0211;
42925 t['rdotaccent'] = 0x1E59;
42926 t['rdotbelow'] = 0x1E5B;
42927 t['rdotbelowmacron'] = 0x1E5D;
42928 t['referencemark'] = 0x203B;
42929 t['reflexsubset'] = 0x2286;
42930 t['reflexsuperset'] = 0x2287;
42931 t['registered'] = 0x00AE;
42932 t['registersans'] = 0xF8E8;
42933 t['registerserif'] = 0xF6DA;
42934 t['reharabic'] = 0x0631;
42935 t['reharmenian'] = 0x0580;
42936 t['rehfinalarabic'] = 0xFEAE;
42937 t['rehiragana'] = 0x308C;
42938 t['rekatakana'] = 0x30EC;
42939 t['rekatakanahalfwidth'] = 0xFF9A;
42940 t['resh'] = 0x05E8;
42941 t['reshdageshhebrew'] = 0xFB48;
42942 t['reshhebrew'] = 0x05E8;
42943 t['reversedtilde'] = 0x223D;
42944 t['reviahebrew'] = 0x0597;
42945 t['reviamugrashhebrew'] = 0x0597;
42946 t['revlogicalnot'] = 0x2310;
42947 t['rfishhook'] = 0x027E;
42948 t['rfishhookreversed'] = 0x027F;
42949 t['rhabengali'] = 0x09DD;
42950 t['rhadeva'] = 0x095D;
42951 t['rho'] = 0x03C1;
42952 t['rhook'] = 0x027D;
42953 t['rhookturned'] = 0x027B;
42954 t['rhookturnedsuperior'] = 0x02B5;
42955 t['rhosymbolgreek'] = 0x03F1;
42956 t['rhotichookmod'] = 0x02DE;
42957 t['rieulacirclekorean'] = 0x3271;
42958 t['rieulaparenkorean'] = 0x3211;
42959 t['rieulcirclekorean'] = 0x3263;
42960 t['rieulhieuhkorean'] = 0x3140;
42961 t['rieulkiyeokkorean'] = 0x313A;
42962 t['rieulkiyeoksioskorean'] = 0x3169;
42963 t['rieulkorean'] = 0x3139;
42964 t['rieulmieumkorean'] = 0x313B;
42965 t['rieulpansioskorean'] = 0x316C;
42966 t['rieulparenkorean'] = 0x3203;
42967 t['rieulphieuphkorean'] = 0x313F;
42968 t['rieulpieupkorean'] = 0x313C;
42969 t['rieulpieupsioskorean'] = 0x316B;
42970 t['rieulsioskorean'] = 0x313D;
42971 t['rieulthieuthkorean'] = 0x313E;
42972 t['rieultikeutkorean'] = 0x316A;
42973 t['rieulyeorinhieuhkorean'] = 0x316D;
42974 t['rightangle'] = 0x221F;
42975 t['righttackbelowcmb'] = 0x0319;
42976 t['righttriangle'] = 0x22BF;
42977 t['rihiragana'] = 0x308A;
42978 t['rikatakana'] = 0x30EA;
42979 t['rikatakanahalfwidth'] = 0xFF98;
42980 t['ring'] = 0x02DA;
42981 t['ringbelowcmb'] = 0x0325;
42982 t['ringcmb'] = 0x030A;
42983 t['ringhalfleft'] = 0x02BF;
42984 t['ringhalfleftarmenian'] = 0x0559;
42985 t['ringhalfleftbelowcmb'] = 0x031C;
42986 t['ringhalfleftcentered'] = 0x02D3;
42987 t['ringhalfright'] = 0x02BE;
42988 t['ringhalfrightbelowcmb'] = 0x0339;
42989 t['ringhalfrightcentered'] = 0x02D2;
42990 t['rinvertedbreve'] = 0x0213;
42991 t['rittorusquare'] = 0x3351;
42992 t['rlinebelow'] = 0x1E5F;
42993 t['rlongleg'] = 0x027C;
42994 t['rlonglegturned'] = 0x027A;
42995 t['rmonospace'] = 0xFF52;
42996 t['rohiragana'] = 0x308D;
42997 t['rokatakana'] = 0x30ED;
42998 t['rokatakanahalfwidth'] = 0xFF9B;
42999 t['roruathai'] = 0x0E23;
43000 t['rparen'] = 0x24AD;
43001 t['rrabengali'] = 0x09DC;
43002 t['rradeva'] = 0x0931;
43003 t['rragurmukhi'] = 0x0A5C;
43004 t['rreharabic'] = 0x0691;
43005 t['rrehfinalarabic'] = 0xFB8D;
43006 t['rrvocalicbengali'] = 0x09E0;
43007 t['rrvocalicdeva'] = 0x0960;
43008 t['rrvocalicgujarati'] = 0x0AE0;
43009 t['rrvocalicvowelsignbengali'] = 0x09C4;
43010 t['rrvocalicvowelsigndeva'] = 0x0944;
43011 t['rrvocalicvowelsigngujarati'] = 0x0AC4;
43012 t['rsuperior'] = 0xF6F1;
43013 t['rtblock'] = 0x2590;
43014 t['rturned'] = 0x0279;
43015 t['rturnedsuperior'] = 0x02B4;
43016 t['ruhiragana'] = 0x308B;
43017 t['rukatakana'] = 0x30EB;
43018 t['rukatakanahalfwidth'] = 0xFF99;
43019 t['rupeemarkbengali'] = 0x09F2;
43020 t['rupeesignbengali'] = 0x09F3;
43021 t['rupiah'] = 0xF6DD;
43022 t['ruthai'] = 0x0E24;
43023 t['rvocalicbengali'] = 0x098B;
43024 t['rvocalicdeva'] = 0x090B;
43025 t['rvocalicgujarati'] = 0x0A8B;
43026 t['rvocalicvowelsignbengali'] = 0x09C3;
43027 t['rvocalicvowelsigndeva'] = 0x0943;
43028 t['rvocalicvowelsigngujarati'] = 0x0AC3;
43029 t['s'] = 0x0073;
43030 t['sabengali'] = 0x09B8;
43031 t['sacute'] = 0x015B;
43032 t['sacutedotaccent'] = 0x1E65;
43033 t['sadarabic'] = 0x0635;
43034 t['sadeva'] = 0x0938;
43035 t['sadfinalarabic'] = 0xFEBA;
43036 t['sadinitialarabic'] = 0xFEBB;
43037 t['sadmedialarabic'] = 0xFEBC;
43038 t['sagujarati'] = 0x0AB8;
43039 t['sagurmukhi'] = 0x0A38;
43040 t['sahiragana'] = 0x3055;
43041 t['sakatakana'] = 0x30B5;
43042 t['sakatakanahalfwidth'] = 0xFF7B;
43043 t['sallallahoualayhewasallamarabic'] = 0xFDFA;
43044 t['samekh'] = 0x05E1;
43045 t['samekhdagesh'] = 0xFB41;
43046 t['samekhdageshhebrew'] = 0xFB41;
43047 t['samekhhebrew'] = 0x05E1;
43048 t['saraaathai'] = 0x0E32;
43049 t['saraaethai'] = 0x0E41;
43050 t['saraaimaimalaithai'] = 0x0E44;
43051 t['saraaimaimuanthai'] = 0x0E43;
43052 t['saraamthai'] = 0x0E33;
43053 t['saraathai'] = 0x0E30;
43054 t['saraethai'] = 0x0E40;
43055 t['saraiileftthai'] = 0xF886;
43056 t['saraiithai'] = 0x0E35;
43057 t['saraileftthai'] = 0xF885;
43058 t['saraithai'] = 0x0E34;
43059 t['saraothai'] = 0x0E42;
43060 t['saraueeleftthai'] = 0xF888;
43061 t['saraueethai'] = 0x0E37;
43062 t['saraueleftthai'] = 0xF887;
43063 t['sarauethai'] = 0x0E36;
43064 t['sarauthai'] = 0x0E38;
43065 t['sarauuthai'] = 0x0E39;
43066 t['sbopomofo'] = 0x3119;
43067 t['scaron'] = 0x0161;
43068 t['scarondotaccent'] = 0x1E67;
43069 t['scedilla'] = 0x015F;
43070 t['schwa'] = 0x0259;
43071 t['schwacyrillic'] = 0x04D9;
43072 t['schwadieresiscyrillic'] = 0x04DB;
43073 t['schwahook'] = 0x025A;
43074 t['scircle'] = 0x24E2;
43075 t['scircumflex'] = 0x015D;
43076 t['scommaaccent'] = 0x0219;
43077 t['sdotaccent'] = 0x1E61;
43078 t['sdotbelow'] = 0x1E63;
43079 t['sdotbelowdotaccent'] = 0x1E69;
43080 t['seagullbelowcmb'] = 0x033C;
43081 t['second'] = 0x2033;
43082 t['secondtonechinese'] = 0x02CA;
43083 t['section'] = 0x00A7;
43084 t['seenarabic'] = 0x0633;
43085 t['seenfinalarabic'] = 0xFEB2;
43086 t['seeninitialarabic'] = 0xFEB3;
43087 t['seenmedialarabic'] = 0xFEB4;
43088 t['segol'] = 0x05B6;
43089 t['segol13'] = 0x05B6;
43090 t['segol1f'] = 0x05B6;
43091 t['segol2c'] = 0x05B6;
43092 t['segolhebrew'] = 0x05B6;
43093 t['segolnarrowhebrew'] = 0x05B6;
43094 t['segolquarterhebrew'] = 0x05B6;
43095 t['segoltahebrew'] = 0x0592;
43096 t['segolwidehebrew'] = 0x05B6;
43097 t['seharmenian'] = 0x057D;
43098 t['sehiragana'] = 0x305B;
43099 t['sekatakana'] = 0x30BB;
43100 t['sekatakanahalfwidth'] = 0xFF7E;
43101 t['semicolon'] = 0x003B;
43102 t['semicolonarabic'] = 0x061B;
43103 t['semicolonmonospace'] = 0xFF1B;
43104 t['semicolonsmall'] = 0xFE54;
43105 t['semivoicedmarkkana'] = 0x309C;
43106 t['semivoicedmarkkanahalfwidth'] = 0xFF9F;
43107 t['sentisquare'] = 0x3322;
43108 t['sentosquare'] = 0x3323;
43109 t['seven'] = 0x0037;
43110 t['sevenarabic'] = 0x0667;
43111 t['sevenbengali'] = 0x09ED;
43112 t['sevencircle'] = 0x2466;
43113 t['sevencircleinversesansserif'] = 0x2790;
43114 t['sevendeva'] = 0x096D;
43115 t['seveneighths'] = 0x215E;
43116 t['sevengujarati'] = 0x0AED;
43117 t['sevengurmukhi'] = 0x0A6D;
43118 t['sevenhackarabic'] = 0x0667;
43119 t['sevenhangzhou'] = 0x3027;
43120 t['sevenideographicparen'] = 0x3226;
43121 t['seveninferior'] = 0x2087;
43122 t['sevenmonospace'] = 0xFF17;
43123 t['sevenoldstyle'] = 0xF737;
43124 t['sevenparen'] = 0x247A;
43125 t['sevenperiod'] = 0x248E;
43126 t['sevenpersian'] = 0x06F7;
43127 t['sevenroman'] = 0x2176;
43128 t['sevensuperior'] = 0x2077;
43129 t['seventeencircle'] = 0x2470;
43130 t['seventeenparen'] = 0x2484;
43131 t['seventeenperiod'] = 0x2498;
43132 t['seventhai'] = 0x0E57;
43133 t['sfthyphen'] = 0x00AD;
43134 t['shaarmenian'] = 0x0577;
43135 t['shabengali'] = 0x09B6;
43136 t['shacyrillic'] = 0x0448;
43137 t['shaddaarabic'] = 0x0651;
43138 t['shaddadammaarabic'] = 0xFC61;
43139 t['shaddadammatanarabic'] = 0xFC5E;
43140 t['shaddafathaarabic'] = 0xFC60;
43141 t['shaddakasraarabic'] = 0xFC62;
43142 t['shaddakasratanarabic'] = 0xFC5F;
43143 t['shade'] = 0x2592;
43144 t['shadedark'] = 0x2593;
43145 t['shadelight'] = 0x2591;
43146 t['shademedium'] = 0x2592;
43147 t['shadeva'] = 0x0936;
43148 t['shagujarati'] = 0x0AB6;
43149 t['shagurmukhi'] = 0x0A36;
43150 t['shalshelethebrew'] = 0x0593;
43151 t['shbopomofo'] = 0x3115;
43152 t['shchacyrillic'] = 0x0449;
43153 t['sheenarabic'] = 0x0634;
43154 t['sheenfinalarabic'] = 0xFEB6;
43155 t['sheeninitialarabic'] = 0xFEB7;
43156 t['sheenmedialarabic'] = 0xFEB8;
43157 t['sheicoptic'] = 0x03E3;
43158 t['sheqel'] = 0x20AA;
43159 t['sheqelhebrew'] = 0x20AA;
43160 t['sheva'] = 0x05B0;
43161 t['sheva115'] = 0x05B0;
43162 t['sheva15'] = 0x05B0;
43163 t['sheva22'] = 0x05B0;
43164 t['sheva2e'] = 0x05B0;
43165 t['shevahebrew'] = 0x05B0;
43166 t['shevanarrowhebrew'] = 0x05B0;
43167 t['shevaquarterhebrew'] = 0x05B0;
43168 t['shevawidehebrew'] = 0x05B0;
43169 t['shhacyrillic'] = 0x04BB;
43170 t['shimacoptic'] = 0x03ED;
43171 t['shin'] = 0x05E9;
43172 t['shindagesh'] = 0xFB49;
43173 t['shindageshhebrew'] = 0xFB49;
43174 t['shindageshshindot'] = 0xFB2C;
43175 t['shindageshshindothebrew'] = 0xFB2C;
43176 t['shindageshsindot'] = 0xFB2D;
43177 t['shindageshsindothebrew'] = 0xFB2D;
43178 t['shindothebrew'] = 0x05C1;
43179 t['shinhebrew'] = 0x05E9;
43180 t['shinshindot'] = 0xFB2A;
43181 t['shinshindothebrew'] = 0xFB2A;
43182 t['shinsindot'] = 0xFB2B;
43183 t['shinsindothebrew'] = 0xFB2B;
43184 t['shook'] = 0x0282;
43185 t['sigma'] = 0x03C3;
43186 t['sigma1'] = 0x03C2;
43187 t['sigmafinal'] = 0x03C2;
43188 t['sigmalunatesymbolgreek'] = 0x03F2;
43189 t['sihiragana'] = 0x3057;
43190 t['sikatakana'] = 0x30B7;
43191 t['sikatakanahalfwidth'] = 0xFF7C;
43192 t['siluqhebrew'] = 0x05BD;
43193 t['siluqlefthebrew'] = 0x05BD;
43194 t['similar'] = 0x223C;
43195 t['sindothebrew'] = 0x05C2;
43196 t['siosacirclekorean'] = 0x3274;
43197 t['siosaparenkorean'] = 0x3214;
43198 t['sioscieuckorean'] = 0x317E;
43199 t['sioscirclekorean'] = 0x3266;
43200 t['sioskiyeokkorean'] = 0x317A;
43201 t['sioskorean'] = 0x3145;
43202 t['siosnieunkorean'] = 0x317B;
43203 t['siosparenkorean'] = 0x3206;
43204 t['siospieupkorean'] = 0x317D;
43205 t['siostikeutkorean'] = 0x317C;
43206 t['six'] = 0x0036;
43207 t['sixarabic'] = 0x0666;
43208 t['sixbengali'] = 0x09EC;
43209 t['sixcircle'] = 0x2465;
43210 t['sixcircleinversesansserif'] = 0x278F;
43211 t['sixdeva'] = 0x096C;
43212 t['sixgujarati'] = 0x0AEC;
43213 t['sixgurmukhi'] = 0x0A6C;
43214 t['sixhackarabic'] = 0x0666;
43215 t['sixhangzhou'] = 0x3026;
43216 t['sixideographicparen'] = 0x3225;
43217 t['sixinferior'] = 0x2086;
43218 t['sixmonospace'] = 0xFF16;
43219 t['sixoldstyle'] = 0xF736;
43220 t['sixparen'] = 0x2479;
43221 t['sixperiod'] = 0x248D;
43222 t['sixpersian'] = 0x06F6;
43223 t['sixroman'] = 0x2175;
43224 t['sixsuperior'] = 0x2076;
43225 t['sixteencircle'] = 0x246F;
43226 t['sixteencurrencydenominatorbengali'] = 0x09F9;
43227 t['sixteenparen'] = 0x2483;
43228 t['sixteenperiod'] = 0x2497;
43229 t['sixthai'] = 0x0E56;
43230 t['slash'] = 0x002F;
43231 t['slashmonospace'] = 0xFF0F;
43232 t['slong'] = 0x017F;
43233 t['slongdotaccent'] = 0x1E9B;
43234 t['smileface'] = 0x263A;
43235 t['smonospace'] = 0xFF53;
43236 t['sofpasuqhebrew'] = 0x05C3;
43237 t['softhyphen'] = 0x00AD;
43238 t['softsigncyrillic'] = 0x044C;
43239 t['sohiragana'] = 0x305D;
43240 t['sokatakana'] = 0x30BD;
43241 t['sokatakanahalfwidth'] = 0xFF7F;
43242 t['soliduslongoverlaycmb'] = 0x0338;
43243 t['solidusshortoverlaycmb'] = 0x0337;
43244 t['sorusithai'] = 0x0E29;
43245 t['sosalathai'] = 0x0E28;
43246 t['sosothai'] = 0x0E0B;
43247 t['sosuathai'] = 0x0E2A;
43248 t['space'] = 0x0020;
43249 t['spacehackarabic'] = 0x0020;
43250 t['spade'] = 0x2660;
43251 t['spadesuitblack'] = 0x2660;
43252 t['spadesuitwhite'] = 0x2664;
43253 t['sparen'] = 0x24AE;
43254 t['squarebelowcmb'] = 0x033B;
43255 t['squarecc'] = 0x33C4;
43256 t['squarecm'] = 0x339D;
43257 t['squarediagonalcrosshatchfill'] = 0x25A9;
43258 t['squarehorizontalfill'] = 0x25A4;
43259 t['squarekg'] = 0x338F;
43260 t['squarekm'] = 0x339E;
43261 t['squarekmcapital'] = 0x33CE;
43262 t['squareln'] = 0x33D1;
43263 t['squarelog'] = 0x33D2;
43264 t['squaremg'] = 0x338E;
43265 t['squaremil'] = 0x33D5;
43266 t['squaremm'] = 0x339C;
43267 t['squaremsquared'] = 0x33A1;
43268 t['squareorthogonalcrosshatchfill'] = 0x25A6;
43269 t['squareupperlefttolowerrightfill'] = 0x25A7;
43270 t['squareupperrighttolowerleftfill'] = 0x25A8;
43271 t['squareverticalfill'] = 0x25A5;
43272 t['squarewhitewithsmallblack'] = 0x25A3;
43273 t['srsquare'] = 0x33DB;
43274 t['ssabengali'] = 0x09B7;
43275 t['ssadeva'] = 0x0937;
43276 t['ssagujarati'] = 0x0AB7;
43277 t['ssangcieuckorean'] = 0x3149;
43278 t['ssanghieuhkorean'] = 0x3185;
43279 t['ssangieungkorean'] = 0x3180;
43280 t['ssangkiyeokkorean'] = 0x3132;
43281 t['ssangnieunkorean'] = 0x3165;
43282 t['ssangpieupkorean'] = 0x3143;
43283 t['ssangsioskorean'] = 0x3146;
43284 t['ssangtikeutkorean'] = 0x3138;
43285 t['ssuperior'] = 0xF6F2;
43286 t['sterling'] = 0x00A3;
43287 t['sterlingmonospace'] = 0xFFE1;
43288 t['strokelongoverlaycmb'] = 0x0336;
43289 t['strokeshortoverlaycmb'] = 0x0335;
43290 t['subset'] = 0x2282;
43291 t['subsetnotequal'] = 0x228A;
43292 t['subsetorequal'] = 0x2286;
43293 t['succeeds'] = 0x227B;
43294 t['suchthat'] = 0x220B;
43295 t['suhiragana'] = 0x3059;
43296 t['sukatakana'] = 0x30B9;
43297 t['sukatakanahalfwidth'] = 0xFF7D;
43298 t['sukunarabic'] = 0x0652;
43299 t['summation'] = 0x2211;
43300 t['sun'] = 0x263C;
43301 t['superset'] = 0x2283;
43302 t['supersetnotequal'] = 0x228B;
43303 t['supersetorequal'] = 0x2287;
43304 t['svsquare'] = 0x33DC;
43305 t['syouwaerasquare'] = 0x337C;
43306 t['t'] = 0x0074;
43307 t['tabengali'] = 0x09A4;
43308 t['tackdown'] = 0x22A4;
43309 t['tackleft'] = 0x22A3;
43310 t['tadeva'] = 0x0924;
43311 t['tagujarati'] = 0x0AA4;
43312 t['tagurmukhi'] = 0x0A24;
43313 t['taharabic'] = 0x0637;
43314 t['tahfinalarabic'] = 0xFEC2;
43315 t['tahinitialarabic'] = 0xFEC3;
43316 t['tahiragana'] = 0x305F;
43317 t['tahmedialarabic'] = 0xFEC4;
43318 t['taisyouerasquare'] = 0x337D;
43319 t['takatakana'] = 0x30BF;
43320 t['takatakanahalfwidth'] = 0xFF80;
43321 t['tatweelarabic'] = 0x0640;
43322 t['tau'] = 0x03C4;
43323 t['tav'] = 0x05EA;
43324 t['tavdages'] = 0xFB4A;
43325 t['tavdagesh'] = 0xFB4A;
43326 t['tavdageshhebrew'] = 0xFB4A;
43327 t['tavhebrew'] = 0x05EA;
43328 t['tbar'] = 0x0167;
43329 t['tbopomofo'] = 0x310A;
43330 t['tcaron'] = 0x0165;
43331 t['tccurl'] = 0x02A8;
43332 t['tcedilla'] = 0x0163;
43333 t['tcheharabic'] = 0x0686;
43334 t['tchehfinalarabic'] = 0xFB7B;
43335 t['tchehinitialarabic'] = 0xFB7C;
43336 t['tchehmedialarabic'] = 0xFB7D;
43337 t['tcircle'] = 0x24E3;
43338 t['tcircumflexbelow'] = 0x1E71;
43339 t['tcommaaccent'] = 0x0163;
43340 t['tdieresis'] = 0x1E97;
43341 t['tdotaccent'] = 0x1E6B;
43342 t['tdotbelow'] = 0x1E6D;
43343 t['tecyrillic'] = 0x0442;
43344 t['tedescendercyrillic'] = 0x04AD;
43345 t['teharabic'] = 0x062A;
43346 t['tehfinalarabic'] = 0xFE96;
43347 t['tehhahinitialarabic'] = 0xFCA2;
43348 t['tehhahisolatedarabic'] = 0xFC0C;
43349 t['tehinitialarabic'] = 0xFE97;
43350 t['tehiragana'] = 0x3066;
43351 t['tehjeeminitialarabic'] = 0xFCA1;
43352 t['tehjeemisolatedarabic'] = 0xFC0B;
43353 t['tehmarbutaarabic'] = 0x0629;
43354 t['tehmarbutafinalarabic'] = 0xFE94;
43355 t['tehmedialarabic'] = 0xFE98;
43356 t['tehmeeminitialarabic'] = 0xFCA4;
43357 t['tehmeemisolatedarabic'] = 0xFC0E;
43358 t['tehnoonfinalarabic'] = 0xFC73;
43359 t['tekatakana'] = 0x30C6;
43360 t['tekatakanahalfwidth'] = 0xFF83;
43361 t['telephone'] = 0x2121;
43362 t['telephoneblack'] = 0x260E;
43363 t['telishagedolahebrew'] = 0x05A0;
43364 t['telishaqetanahebrew'] = 0x05A9;
43365 t['tencircle'] = 0x2469;
43366 t['tenideographicparen'] = 0x3229;
43367 t['tenparen'] = 0x247D;
43368 t['tenperiod'] = 0x2491;
43369 t['tenroman'] = 0x2179;
43370 t['tesh'] = 0x02A7;
43371 t['tet'] = 0x05D8;
43372 t['tetdagesh'] = 0xFB38;
43373 t['tetdageshhebrew'] = 0xFB38;
43374 t['tethebrew'] = 0x05D8;
43375 t['tetsecyrillic'] = 0x04B5;
43376 t['tevirhebrew'] = 0x059B;
43377 t['tevirlefthebrew'] = 0x059B;
43378 t['thabengali'] = 0x09A5;
43379 t['thadeva'] = 0x0925;
43380 t['thagujarati'] = 0x0AA5;
43381 t['thagurmukhi'] = 0x0A25;
43382 t['thalarabic'] = 0x0630;
43383 t['thalfinalarabic'] = 0xFEAC;
43384 t['thanthakhatlowleftthai'] = 0xF898;
43385 t['thanthakhatlowrightthai'] = 0xF897;
43386 t['thanthakhatthai'] = 0x0E4C;
43387 t['thanthakhatupperleftthai'] = 0xF896;
43388 t['theharabic'] = 0x062B;
43389 t['thehfinalarabic'] = 0xFE9A;
43390 t['thehinitialarabic'] = 0xFE9B;
43391 t['thehmedialarabic'] = 0xFE9C;
43392 t['thereexists'] = 0x2203;
43393 t['therefore'] = 0x2234;
43394 t['theta'] = 0x03B8;
43395 t['theta1'] = 0x03D1;
43396 t['thetasymbolgreek'] = 0x03D1;
43397 t['thieuthacirclekorean'] = 0x3279;
43398 t['thieuthaparenkorean'] = 0x3219;
43399 t['thieuthcirclekorean'] = 0x326B;
43400 t['thieuthkorean'] = 0x314C;
43401 t['thieuthparenkorean'] = 0x320B;
43402 t['thirteencircle'] = 0x246C;
43403 t['thirteenparen'] = 0x2480;
43404 t['thirteenperiod'] = 0x2494;
43405 t['thonangmonthothai'] = 0x0E11;
43406 t['thook'] = 0x01AD;
43407 t['thophuthaothai'] = 0x0E12;
43408 t['thorn'] = 0x00FE;
43409 t['thothahanthai'] = 0x0E17;
43410 t['thothanthai'] = 0x0E10;
43411 t['thothongthai'] = 0x0E18;
43412 t['thothungthai'] = 0x0E16;
43413 t['thousandcyrillic'] = 0x0482;
43414 t['thousandsseparatorarabic'] = 0x066C;
43415 t['thousandsseparatorpersian'] = 0x066C;
43416 t['three'] = 0x0033;
43417 t['threearabic'] = 0x0663;
43418 t['threebengali'] = 0x09E9;
43419 t['threecircle'] = 0x2462;
43420 t['threecircleinversesansserif'] = 0x278C;
43421 t['threedeva'] = 0x0969;
43422 t['threeeighths'] = 0x215C;
43423 t['threegujarati'] = 0x0AE9;
43424 t['threegurmukhi'] = 0x0A69;
43425 t['threehackarabic'] = 0x0663;
43426 t['threehangzhou'] = 0x3023;
43427 t['threeideographicparen'] = 0x3222;
43428 t['threeinferior'] = 0x2083;
43429 t['threemonospace'] = 0xFF13;
43430 t['threenumeratorbengali'] = 0x09F6;
43431 t['threeoldstyle'] = 0xF733;
43432 t['threeparen'] = 0x2476;
43433 t['threeperiod'] = 0x248A;
43434 t['threepersian'] = 0x06F3;
43435 t['threequarters'] = 0x00BE;
43436 t['threequartersemdash'] = 0xF6DE;
43437 t['threeroman'] = 0x2172;
43438 t['threesuperior'] = 0x00B3;
43439 t['threethai'] = 0x0E53;
43440 t['thzsquare'] = 0x3394;
43441 t['tihiragana'] = 0x3061;
43442 t['tikatakana'] = 0x30C1;
43443 t['tikatakanahalfwidth'] = 0xFF81;
43444 t['tikeutacirclekorean'] = 0x3270;
43445 t['tikeutaparenkorean'] = 0x3210;
43446 t['tikeutcirclekorean'] = 0x3262;
43447 t['tikeutkorean'] = 0x3137;
43448 t['tikeutparenkorean'] = 0x3202;
43449 t['tilde'] = 0x02DC;
43450 t['tildebelowcmb'] = 0x0330;
43451 t['tildecmb'] = 0x0303;
43452 t['tildecomb'] = 0x0303;
43453 t['tildedoublecmb'] = 0x0360;
43454 t['tildeoperator'] = 0x223C;
43455 t['tildeoverlaycmb'] = 0x0334;
43456 t['tildeverticalcmb'] = 0x033E;
43457 t['timescircle'] = 0x2297;
43458 t['tipehahebrew'] = 0x0596;
43459 t['tipehalefthebrew'] = 0x0596;
43460 t['tippigurmukhi'] = 0x0A70;
43461 t['titlocyrilliccmb'] = 0x0483;
43462 t['tiwnarmenian'] = 0x057F;
43463 t['tlinebelow'] = 0x1E6F;
43464 t['tmonospace'] = 0xFF54;
43465 t['toarmenian'] = 0x0569;
43466 t['tohiragana'] = 0x3068;
43467 t['tokatakana'] = 0x30C8;
43468 t['tokatakanahalfwidth'] = 0xFF84;
43469 t['tonebarextrahighmod'] = 0x02E5;
43470 t['tonebarextralowmod'] = 0x02E9;
43471 t['tonebarhighmod'] = 0x02E6;
43472 t['tonebarlowmod'] = 0x02E8;
43473 t['tonebarmidmod'] = 0x02E7;
43474 t['tonefive'] = 0x01BD;
43475 t['tonesix'] = 0x0185;
43476 t['tonetwo'] = 0x01A8;
43477 t['tonos'] = 0x0384;
43478 t['tonsquare'] = 0x3327;
43479 t['topatakthai'] = 0x0E0F;
43480 t['tortoiseshellbracketleft'] = 0x3014;
43481 t['tortoiseshellbracketleftsmall'] = 0xFE5D;
43482 t['tortoiseshellbracketleftvertical'] = 0xFE39;
43483 t['tortoiseshellbracketright'] = 0x3015;
43484 t['tortoiseshellbracketrightsmall'] = 0xFE5E;
43485 t['tortoiseshellbracketrightvertical'] = 0xFE3A;
43486 t['totaothai'] = 0x0E15;
43487 t['tpalatalhook'] = 0x01AB;
43488 t['tparen'] = 0x24AF;
43489 t['trademark'] = 0x2122;
43490 t['trademarksans'] = 0xF8EA;
43491 t['trademarkserif'] = 0xF6DB;
43492 t['tretroflexhook'] = 0x0288;
43493 t['triagdn'] = 0x25BC;
43494 t['triaglf'] = 0x25C4;
43495 t['triagrt'] = 0x25BA;
43496 t['triagup'] = 0x25B2;
43497 t['ts'] = 0x02A6;
43498 t['tsadi'] = 0x05E6;
43499 t['tsadidagesh'] = 0xFB46;
43500 t['tsadidageshhebrew'] = 0xFB46;
43501 t['tsadihebrew'] = 0x05E6;
43502 t['tsecyrillic'] = 0x0446;
43503 t['tsere'] = 0x05B5;
43504 t['tsere12'] = 0x05B5;
43505 t['tsere1e'] = 0x05B5;
43506 t['tsere2b'] = 0x05B5;
43507 t['tserehebrew'] = 0x05B5;
43508 t['tserenarrowhebrew'] = 0x05B5;
43509 t['tserequarterhebrew'] = 0x05B5;
43510 t['tserewidehebrew'] = 0x05B5;
43511 t['tshecyrillic'] = 0x045B;
43512 t['tsuperior'] = 0xF6F3;
43513 t['ttabengali'] = 0x099F;
43514 t['ttadeva'] = 0x091F;
43515 t['ttagujarati'] = 0x0A9F;
43516 t['ttagurmukhi'] = 0x0A1F;
43517 t['tteharabic'] = 0x0679;
43518 t['ttehfinalarabic'] = 0xFB67;
43519 t['ttehinitialarabic'] = 0xFB68;
43520 t['ttehmedialarabic'] = 0xFB69;
43521 t['tthabengali'] = 0x09A0;
43522 t['tthadeva'] = 0x0920;
43523 t['tthagujarati'] = 0x0AA0;
43524 t['tthagurmukhi'] = 0x0A20;
43525 t['tturned'] = 0x0287;
43526 t['tuhiragana'] = 0x3064;
43527 t['tukatakana'] = 0x30C4;
43528 t['tukatakanahalfwidth'] = 0xFF82;
43529 t['tusmallhiragana'] = 0x3063;
43530 t['tusmallkatakana'] = 0x30C3;
43531 t['tusmallkatakanahalfwidth'] = 0xFF6F;
43532 t['twelvecircle'] = 0x246B;
43533 t['twelveparen'] = 0x247F;
43534 t['twelveperiod'] = 0x2493;
43535 t['twelveroman'] = 0x217B;
43536 t['twentycircle'] = 0x2473;
43537 t['twentyhangzhou'] = 0x5344;
43538 t['twentyparen'] = 0x2487;
43539 t['twentyperiod'] = 0x249B;
43540 t['two'] = 0x0032;
43541 t['twoarabic'] = 0x0662;
43542 t['twobengali'] = 0x09E8;
43543 t['twocircle'] = 0x2461;
43544 t['twocircleinversesansserif'] = 0x278B;
43545 t['twodeva'] = 0x0968;
43546 t['twodotenleader'] = 0x2025;
43547 t['twodotleader'] = 0x2025;
43548 t['twodotleadervertical'] = 0xFE30;
43549 t['twogujarati'] = 0x0AE8;
43550 t['twogurmukhi'] = 0x0A68;
43551 t['twohackarabic'] = 0x0662;
43552 t['twohangzhou'] = 0x3022;
43553 t['twoideographicparen'] = 0x3221;
43554 t['twoinferior'] = 0x2082;
43555 t['twomonospace'] = 0xFF12;
43556 t['twonumeratorbengali'] = 0x09F5;
43557 t['twooldstyle'] = 0xF732;
43558 t['twoparen'] = 0x2475;
43559 t['twoperiod'] = 0x2489;
43560 t['twopersian'] = 0x06F2;
43561 t['tworoman'] = 0x2171;
43562 t['twostroke'] = 0x01BB;
43563 t['twosuperior'] = 0x00B2;
43564 t['twothai'] = 0x0E52;
43565 t['twothirds'] = 0x2154;
43566 t['u'] = 0x0075;
43567 t['uacute'] = 0x00FA;
43568 t['ubar'] = 0x0289;
43569 t['ubengali'] = 0x0989;
43570 t['ubopomofo'] = 0x3128;
43571 t['ubreve'] = 0x016D;
43572 t['ucaron'] = 0x01D4;
43573 t['ucircle'] = 0x24E4;
43574 t['ucircumflex'] = 0x00FB;
43575 t['ucircumflexbelow'] = 0x1E77;
43576 t['ucyrillic'] = 0x0443;
43577 t['udattadeva'] = 0x0951;
43578 t['udblacute'] = 0x0171;
43579 t['udblgrave'] = 0x0215;
43580 t['udeva'] = 0x0909;
43581 t['udieresis'] = 0x00FC;
43582 t['udieresisacute'] = 0x01D8;
43583 t['udieresisbelow'] = 0x1E73;
43584 t['udieresiscaron'] = 0x01DA;
43585 t['udieresiscyrillic'] = 0x04F1;
43586 t['udieresisgrave'] = 0x01DC;
43587 t['udieresismacron'] = 0x01D6;
43588 t['udotbelow'] = 0x1EE5;
43589 t['ugrave'] = 0x00F9;
43590 t['ugujarati'] = 0x0A89;
43591 t['ugurmukhi'] = 0x0A09;
43592 t['uhiragana'] = 0x3046;
43593 t['uhookabove'] = 0x1EE7;
43594 t['uhorn'] = 0x01B0;
43595 t['uhornacute'] = 0x1EE9;
43596 t['uhorndotbelow'] = 0x1EF1;
43597 t['uhorngrave'] = 0x1EEB;
43598 t['uhornhookabove'] = 0x1EED;
43599 t['uhorntilde'] = 0x1EEF;
43600 t['uhungarumlaut'] = 0x0171;
43601 t['uhungarumlautcyrillic'] = 0x04F3;
43602 t['uinvertedbreve'] = 0x0217;
43603 t['ukatakana'] = 0x30A6;
43604 t['ukatakanahalfwidth'] = 0xFF73;
43605 t['ukcyrillic'] = 0x0479;
43606 t['ukorean'] = 0x315C;
43607 t['umacron'] = 0x016B;
43608 t['umacroncyrillic'] = 0x04EF;
43609 t['umacrondieresis'] = 0x1E7B;
43610 t['umatragurmukhi'] = 0x0A41;
43611 t['umonospace'] = 0xFF55;
43612 t['underscore'] = 0x005F;
43613 t['underscoredbl'] = 0x2017;
43614 t['underscoremonospace'] = 0xFF3F;
43615 t['underscorevertical'] = 0xFE33;
43616 t['underscorewavy'] = 0xFE4F;
43617 t['union'] = 0x222A;
43618 t['universal'] = 0x2200;
43619 t['uogonek'] = 0x0173;
43620 t['uparen'] = 0x24B0;
43621 t['upblock'] = 0x2580;
43622 t['upperdothebrew'] = 0x05C4;
43623 t['upsilon'] = 0x03C5;
43624 t['upsilondieresis'] = 0x03CB;
43625 t['upsilondieresistonos'] = 0x03B0;
43626 t['upsilonlatin'] = 0x028A;
43627 t['upsilontonos'] = 0x03CD;
43628 t['uptackbelowcmb'] = 0x031D;
43629 t['uptackmod'] = 0x02D4;
43630 t['uragurmukhi'] = 0x0A73;
43631 t['uring'] = 0x016F;
43632 t['ushortcyrillic'] = 0x045E;
43633 t['usmallhiragana'] = 0x3045;
43634 t['usmallkatakana'] = 0x30A5;
43635 t['usmallkatakanahalfwidth'] = 0xFF69;
43636 t['ustraightcyrillic'] = 0x04AF;
43637 t['ustraightstrokecyrillic'] = 0x04B1;
43638 t['utilde'] = 0x0169;
43639 t['utildeacute'] = 0x1E79;
43640 t['utildebelow'] = 0x1E75;
43641 t['uubengali'] = 0x098A;
43642 t['uudeva'] = 0x090A;
43643 t['uugujarati'] = 0x0A8A;
43644 t['uugurmukhi'] = 0x0A0A;
43645 t['uumatragurmukhi'] = 0x0A42;
43646 t['uuvowelsignbengali'] = 0x09C2;
43647 t['uuvowelsigndeva'] = 0x0942;
43648 t['uuvowelsigngujarati'] = 0x0AC2;
43649 t['uvowelsignbengali'] = 0x09C1;
43650 t['uvowelsigndeva'] = 0x0941;
43651 t['uvowelsigngujarati'] = 0x0AC1;
43652 t['v'] = 0x0076;
43653 t['vadeva'] = 0x0935;
43654 t['vagujarati'] = 0x0AB5;
43655 t['vagurmukhi'] = 0x0A35;
43656 t['vakatakana'] = 0x30F7;
43657 t['vav'] = 0x05D5;
43658 t['vavdagesh'] = 0xFB35;
43659 t['vavdagesh65'] = 0xFB35;
43660 t['vavdageshhebrew'] = 0xFB35;
43661 t['vavhebrew'] = 0x05D5;
43662 t['vavholam'] = 0xFB4B;
43663 t['vavholamhebrew'] = 0xFB4B;
43664 t['vavvavhebrew'] = 0x05F0;
43665 t['vavyodhebrew'] = 0x05F1;
43666 t['vcircle'] = 0x24E5;
43667 t['vdotbelow'] = 0x1E7F;
43668 t['vecyrillic'] = 0x0432;
43669 t['veharabic'] = 0x06A4;
43670 t['vehfinalarabic'] = 0xFB6B;
43671 t['vehinitialarabic'] = 0xFB6C;
43672 t['vehmedialarabic'] = 0xFB6D;
43673 t['vekatakana'] = 0x30F9;
43674 t['venus'] = 0x2640;
43675 t['verticalbar'] = 0x007C;
43676 t['verticallineabovecmb'] = 0x030D;
43677 t['verticallinebelowcmb'] = 0x0329;
43678 t['verticallinelowmod'] = 0x02CC;
43679 t['verticallinemod'] = 0x02C8;
43680 t['vewarmenian'] = 0x057E;
43681 t['vhook'] = 0x028B;
43682 t['vikatakana'] = 0x30F8;
43683 t['viramabengali'] = 0x09CD;
43684 t['viramadeva'] = 0x094D;
43685 t['viramagujarati'] = 0x0ACD;
43686 t['visargabengali'] = 0x0983;
43687 t['visargadeva'] = 0x0903;
43688 t['visargagujarati'] = 0x0A83;
43689 t['vmonospace'] = 0xFF56;
43690 t['voarmenian'] = 0x0578;
43691 t['voicediterationhiragana'] = 0x309E;
43692 t['voicediterationkatakana'] = 0x30FE;
43693 t['voicedmarkkana'] = 0x309B;
43694 t['voicedmarkkanahalfwidth'] = 0xFF9E;
43695 t['vokatakana'] = 0x30FA;
43696 t['vparen'] = 0x24B1;
43697 t['vtilde'] = 0x1E7D;
43698 t['vturned'] = 0x028C;
43699 t['vuhiragana'] = 0x3094;
43700 t['vukatakana'] = 0x30F4;
43701 t['w'] = 0x0077;
43702 t['wacute'] = 0x1E83;
43703 t['waekorean'] = 0x3159;
43704 t['wahiragana'] = 0x308F;
43705 t['wakatakana'] = 0x30EF;
43706 t['wakatakanahalfwidth'] = 0xFF9C;
43707 t['wakorean'] = 0x3158;
43708 t['wasmallhiragana'] = 0x308E;
43709 t['wasmallkatakana'] = 0x30EE;
43710 t['wattosquare'] = 0x3357;
43711 t['wavedash'] = 0x301C;
43712 t['wavyunderscorevertical'] = 0xFE34;
43713 t['wawarabic'] = 0x0648;
43714 t['wawfinalarabic'] = 0xFEEE;
43715 t['wawhamzaabovearabic'] = 0x0624;
43716 t['wawhamzaabovefinalarabic'] = 0xFE86;
43717 t['wbsquare'] = 0x33DD;
43718 t['wcircle'] = 0x24E6;
43719 t['wcircumflex'] = 0x0175;
43720 t['wdieresis'] = 0x1E85;
43721 t['wdotaccent'] = 0x1E87;
43722 t['wdotbelow'] = 0x1E89;
43723 t['wehiragana'] = 0x3091;
43724 t['weierstrass'] = 0x2118;
43725 t['wekatakana'] = 0x30F1;
43726 t['wekorean'] = 0x315E;
43727 t['weokorean'] = 0x315D;
43728 t['wgrave'] = 0x1E81;
43729 t['whitebullet'] = 0x25E6;
43730 t['whitecircle'] = 0x25CB;
43731 t['whitecircleinverse'] = 0x25D9;
43732 t['whitecornerbracketleft'] = 0x300E;
43733 t['whitecornerbracketleftvertical'] = 0xFE43;
43734 t['whitecornerbracketright'] = 0x300F;
43735 t['whitecornerbracketrightvertical'] = 0xFE44;
43736 t['whitediamond'] = 0x25C7;
43737 t['whitediamondcontainingblacksmalldiamond'] = 0x25C8;
43738 t['whitedownpointingsmalltriangle'] = 0x25BF;
43739 t['whitedownpointingtriangle'] = 0x25BD;
43740 t['whiteleftpointingsmalltriangle'] = 0x25C3;
43741 t['whiteleftpointingtriangle'] = 0x25C1;
43742 t['whitelenticularbracketleft'] = 0x3016;
43743 t['whitelenticularbracketright'] = 0x3017;
43744 t['whiterightpointingsmalltriangle'] = 0x25B9;
43745 t['whiterightpointingtriangle'] = 0x25B7;
43746 t['whitesmallsquare'] = 0x25AB;
43747 t['whitesmilingface'] = 0x263A;
43748 t['whitesquare'] = 0x25A1;
43749 t['whitestar'] = 0x2606;
43750 t['whitetelephone'] = 0x260F;
43751 t['whitetortoiseshellbracketleft'] = 0x3018;
43752 t['whitetortoiseshellbracketright'] = 0x3019;
43753 t['whiteuppointingsmalltriangle'] = 0x25B5;
43754 t['whiteuppointingtriangle'] = 0x25B3;
43755 t['wihiragana'] = 0x3090;
43756 t['wikatakana'] = 0x30F0;
43757 t['wikorean'] = 0x315F;
43758 t['wmonospace'] = 0xFF57;
43759 t['wohiragana'] = 0x3092;
43760 t['wokatakana'] = 0x30F2;
43761 t['wokatakanahalfwidth'] = 0xFF66;
43762 t['won'] = 0x20A9;
43763 t['wonmonospace'] = 0xFFE6;
43764 t['wowaenthai'] = 0x0E27;
43765 t['wparen'] = 0x24B2;
43766 t['wring'] = 0x1E98;
43767 t['wsuperior'] = 0x02B7;
43768 t['wturned'] = 0x028D;
43769 t['wynn'] = 0x01BF;
43770 t['x'] = 0x0078;
43771 t['xabovecmb'] = 0x033D;
43772 t['xbopomofo'] = 0x3112;
43773 t['xcircle'] = 0x24E7;
43774 t['xdieresis'] = 0x1E8D;
43775 t['xdotaccent'] = 0x1E8B;
43776 t['xeharmenian'] = 0x056D;
43777 t['xi'] = 0x03BE;
43778 t['xmonospace'] = 0xFF58;
43779 t['xparen'] = 0x24B3;
43780 t['xsuperior'] = 0x02E3;
43781 t['y'] = 0x0079;
43782 t['yaadosquare'] = 0x334E;
43783 t['yabengali'] = 0x09AF;
43784 t['yacute'] = 0x00FD;
43785 t['yadeva'] = 0x092F;
43786 t['yaekorean'] = 0x3152;
43787 t['yagujarati'] = 0x0AAF;
43788 t['yagurmukhi'] = 0x0A2F;
43789 t['yahiragana'] = 0x3084;
43790 t['yakatakana'] = 0x30E4;
43791 t['yakatakanahalfwidth'] = 0xFF94;
43792 t['yakorean'] = 0x3151;
43793 t['yamakkanthai'] = 0x0E4E;
43794 t['yasmallhiragana'] = 0x3083;
43795 t['yasmallkatakana'] = 0x30E3;
43796 t['yasmallkatakanahalfwidth'] = 0xFF6C;
43797 t['yatcyrillic'] = 0x0463;
43798 t['ycircle'] = 0x24E8;
43799 t['ycircumflex'] = 0x0177;
43800 t['ydieresis'] = 0x00FF;
43801 t['ydotaccent'] = 0x1E8F;
43802 t['ydotbelow'] = 0x1EF5;
43803 t['yeharabic'] = 0x064A;
43804 t['yehbarreearabic'] = 0x06D2;
43805 t['yehbarreefinalarabic'] = 0xFBAF;
43806 t['yehfinalarabic'] = 0xFEF2;
43807 t['yehhamzaabovearabic'] = 0x0626;
43808 t['yehhamzaabovefinalarabic'] = 0xFE8A;
43809 t['yehhamzaaboveinitialarabic'] = 0xFE8B;
43810 t['yehhamzaabovemedialarabic'] = 0xFE8C;
43811 t['yehinitialarabic'] = 0xFEF3;
43812 t['yehmedialarabic'] = 0xFEF4;
43813 t['yehmeeminitialarabic'] = 0xFCDD;
43814 t['yehmeemisolatedarabic'] = 0xFC58;
43815 t['yehnoonfinalarabic'] = 0xFC94;
43816 t['yehthreedotsbelowarabic'] = 0x06D1;
43817 t['yekorean'] = 0x3156;
43818 t['yen'] = 0x00A5;
43819 t['yenmonospace'] = 0xFFE5;
43820 t['yeokorean'] = 0x3155;
43821 t['yeorinhieuhkorean'] = 0x3186;
43822 t['yerahbenyomohebrew'] = 0x05AA;
43823 t['yerahbenyomolefthebrew'] = 0x05AA;
43824 t['yericyrillic'] = 0x044B;
43825 t['yerudieresiscyrillic'] = 0x04F9;
43826 t['yesieungkorean'] = 0x3181;
43827 t['yesieungpansioskorean'] = 0x3183;
43828 t['yesieungsioskorean'] = 0x3182;
43829 t['yetivhebrew'] = 0x059A;
43830 t['ygrave'] = 0x1EF3;
43831 t['yhook'] = 0x01B4;
43832 t['yhookabove'] = 0x1EF7;
43833 t['yiarmenian'] = 0x0575;
43834 t['yicyrillic'] = 0x0457;
43835 t['yikorean'] = 0x3162;
43836 t['yinyang'] = 0x262F;
43837 t['yiwnarmenian'] = 0x0582;
43838 t['ymonospace'] = 0xFF59;
43839 t['yod'] = 0x05D9;
43840 t['yoddagesh'] = 0xFB39;
43841 t['yoddageshhebrew'] = 0xFB39;
43842 t['yodhebrew'] = 0x05D9;
43843 t['yodyodhebrew'] = 0x05F2;
43844 t['yodyodpatahhebrew'] = 0xFB1F;
43845 t['yohiragana'] = 0x3088;
43846 t['yoikorean'] = 0x3189;
43847 t['yokatakana'] = 0x30E8;
43848 t['yokatakanahalfwidth'] = 0xFF96;
43849 t['yokorean'] = 0x315B;
43850 t['yosmallhiragana'] = 0x3087;
43851 t['yosmallkatakana'] = 0x30E7;
43852 t['yosmallkatakanahalfwidth'] = 0xFF6E;
43853 t['yotgreek'] = 0x03F3;
43854 t['yoyaekorean'] = 0x3188;
43855 t['yoyakorean'] = 0x3187;
43856 t['yoyakthai'] = 0x0E22;
43857 t['yoyingthai'] = 0x0E0D;
43858 t['yparen'] = 0x24B4;
43859 t['ypogegrammeni'] = 0x037A;
43860 t['ypogegrammenigreekcmb'] = 0x0345;
43861 t['yr'] = 0x01A6;
43862 t['yring'] = 0x1E99;
43863 t['ysuperior'] = 0x02B8;
43864 t['ytilde'] = 0x1EF9;
43865 t['yturned'] = 0x028E;
43866 t['yuhiragana'] = 0x3086;
43867 t['yuikorean'] = 0x318C;
43868 t['yukatakana'] = 0x30E6;
43869 t['yukatakanahalfwidth'] = 0xFF95;
43870 t['yukorean'] = 0x3160;
43871 t['yusbigcyrillic'] = 0x046B;
43872 t['yusbigiotifiedcyrillic'] = 0x046D;
43873 t['yuslittlecyrillic'] = 0x0467;
43874 t['yuslittleiotifiedcyrillic'] = 0x0469;
43875 t['yusmallhiragana'] = 0x3085;
43876 t['yusmallkatakana'] = 0x30E5;
43877 t['yusmallkatakanahalfwidth'] = 0xFF6D;
43878 t['yuyekorean'] = 0x318B;
43879 t['yuyeokorean'] = 0x318A;
43880 t['yyabengali'] = 0x09DF;
43881 t['yyadeva'] = 0x095F;
43882 t['z'] = 0x007A;
43883 t['zaarmenian'] = 0x0566;
43884 t['zacute'] = 0x017A;
43885 t['zadeva'] = 0x095B;
43886 t['zagurmukhi'] = 0x0A5B;
43887 t['zaharabic'] = 0x0638;
43888 t['zahfinalarabic'] = 0xFEC6;
43889 t['zahinitialarabic'] = 0xFEC7;
43890 t['zahiragana'] = 0x3056;
43891 t['zahmedialarabic'] = 0xFEC8;
43892 t['zainarabic'] = 0x0632;
43893 t['zainfinalarabic'] = 0xFEB0;
43894 t['zakatakana'] = 0x30B6;
43895 t['zaqefgadolhebrew'] = 0x0595;
43896 t['zaqefqatanhebrew'] = 0x0594;
43897 t['zarqahebrew'] = 0x0598;
43898 t['zayin'] = 0x05D6;
43899 t['zayindagesh'] = 0xFB36;
43900 t['zayindageshhebrew'] = 0xFB36;
43901 t['zayinhebrew'] = 0x05D6;
43902 t['zbopomofo'] = 0x3117;
43903 t['zcaron'] = 0x017E;
43904 t['zcircle'] = 0x24E9;
43905 t['zcircumflex'] = 0x1E91;
43906 t['zcurl'] = 0x0291;
43907 t['zdot'] = 0x017C;
43908 t['zdotaccent'] = 0x017C;
43909 t['zdotbelow'] = 0x1E93;
43910 t['zecyrillic'] = 0x0437;
43911 t['zedescendercyrillic'] = 0x0499;
43912 t['zedieresiscyrillic'] = 0x04DF;
43913 t['zehiragana'] = 0x305C;
43914 t['zekatakana'] = 0x30BC;
43915 t['zero'] = 0x0030;
43916 t['zeroarabic'] = 0x0660;
43917 t['zerobengali'] = 0x09E6;
43918 t['zerodeva'] = 0x0966;
43919 t['zerogujarati'] = 0x0AE6;
43920 t['zerogurmukhi'] = 0x0A66;
43921 t['zerohackarabic'] = 0x0660;
43922 t['zeroinferior'] = 0x2080;
43923 t['zeromonospace'] = 0xFF10;
43924 t['zerooldstyle'] = 0xF730;
43925 t['zeropersian'] = 0x06F0;
43926 t['zerosuperior'] = 0x2070;
43927 t['zerothai'] = 0x0E50;
43928 t['zerowidthjoiner'] = 0xFEFF;
43929 t['zerowidthnonjoiner'] = 0x200C;
43930 t['zerowidthspace'] = 0x200B;
43931 t['zeta'] = 0x03B6;
43932 t['zhbopomofo'] = 0x3113;
43933 t['zhearmenian'] = 0x056A;
43934 t['zhebrevecyrillic'] = 0x04C2;
43935 t['zhecyrillic'] = 0x0436;
43936 t['zhedescendercyrillic'] = 0x0497;
43937 t['zhedieresiscyrillic'] = 0x04DD;
43938 t['zihiragana'] = 0x3058;
43939 t['zikatakana'] = 0x30B8;
43940 t['zinorhebrew'] = 0x05AE;
43941 t['zlinebelow'] = 0x1E95;
43942 t['zmonospace'] = 0xFF5A;
43943 t['zohiragana'] = 0x305E;
43944 t['zokatakana'] = 0x30BE;
43945 t['zparen'] = 0x24B5;
43946 t['zretroflexhook'] = 0x0290;
43947 t['zstroke'] = 0x01B6;
43948 t['zuhiragana'] = 0x305A;
43949 t['zukatakana'] = 0x30BA;
43950 t['.notdef'] = 0x0000;
43951 t['angbracketleftbig'] = 0x2329;
43952 t['angbracketleftBig'] = 0x2329;
43953 t['angbracketleftbigg'] = 0x2329;
43954 t['angbracketleftBigg'] = 0x2329;
43955 t['angbracketrightBig'] = 0x232A;
43956 t['angbracketrightbig'] = 0x232A;
43957 t['angbracketrightBigg'] = 0x232A;
43958 t['angbracketrightbigg'] = 0x232A;
43959 t['arrowhookleft'] = 0x21AA;
43960 t['arrowhookright'] = 0x21A9;
43961 t['arrowlefttophalf'] = 0x21BC;
43962 t['arrowleftbothalf'] = 0x21BD;
43963 t['arrownortheast'] = 0x2197;
43964 t['arrownorthwest'] = 0x2196;
43965 t['arrowrighttophalf'] = 0x21C0;
43966 t['arrowrightbothalf'] = 0x21C1;
43967 t['arrowsoutheast'] = 0x2198;
43968 t['arrowsouthwest'] = 0x2199;
43969 t['backslashbig'] = 0x2216;
43970 t['backslashBig'] = 0x2216;
43971 t['backslashBigg'] = 0x2216;
43972 t['backslashbigg'] = 0x2216;
43973 t['bardbl'] = 0x2016;
43974 t['bracehtipdownleft'] = 0xFE37;
43975 t['bracehtipdownright'] = 0xFE37;
43976 t['bracehtipupleft'] = 0xFE38;
43977 t['bracehtipupright'] = 0xFE38;
43978 t['braceleftBig'] = 0x007B;
43979 t['braceleftbig'] = 0x007B;
43980 t['braceleftbigg'] = 0x007B;
43981 t['braceleftBigg'] = 0x007B;
43982 t['bracerightBig'] = 0x007D;
43983 t['bracerightbig'] = 0x007D;
43984 t['bracerightbigg'] = 0x007D;
43985 t['bracerightBigg'] = 0x007D;
43986 t['bracketleftbig'] = 0x005B;
43987 t['bracketleftBig'] = 0x005B;
43988 t['bracketleftbigg'] = 0x005B;
43989 t['bracketleftBigg'] = 0x005B;
43990 t['bracketrightBig'] = 0x005D;
43991 t['bracketrightbig'] = 0x005D;
43992 t['bracketrightbigg'] = 0x005D;
43993 t['bracketrightBigg'] = 0x005D;
43994 t['ceilingleftbig'] = 0x2308;
43995 t['ceilingleftBig'] = 0x2308;
43996 t['ceilingleftBigg'] = 0x2308;
43997 t['ceilingleftbigg'] = 0x2308;
43998 t['ceilingrightbig'] = 0x2309;
43999 t['ceilingrightBig'] = 0x2309;
44000 t['ceilingrightbigg'] = 0x2309;
44001 t['ceilingrightBigg'] = 0x2309;
44002 t['circledotdisplay'] = 0x2299;
44003 t['circledottext'] = 0x2299;
44004 t['circlemultiplydisplay'] = 0x2297;
44005 t['circlemultiplytext'] = 0x2297;
44006 t['circleplusdisplay'] = 0x2295;
44007 t['circleplustext'] = 0x2295;
44008 t['contintegraldisplay'] = 0x222E;
44009 t['contintegraltext'] = 0x222E;
44010 t['coproductdisplay'] = 0x2210;
44011 t['coproducttext'] = 0x2210;
44012 t['floorleftBig'] = 0x230A;
44013 t['floorleftbig'] = 0x230A;
44014 t['floorleftbigg'] = 0x230A;
44015 t['floorleftBigg'] = 0x230A;
44016 t['floorrightbig'] = 0x230B;
44017 t['floorrightBig'] = 0x230B;
44018 t['floorrightBigg'] = 0x230B;
44019 t['floorrightbigg'] = 0x230B;
44020 t['hatwide'] = 0x0302;
44021 t['hatwider'] = 0x0302;
44022 t['hatwidest'] = 0x0302;
44023 t['intercal'] = 0x1D40;
44024 t['integraldisplay'] = 0x222B;
44025 t['integraltext'] = 0x222B;
44026 t['intersectiondisplay'] = 0x22C2;
44027 t['intersectiontext'] = 0x22C2;
44028 t['logicalanddisplay'] = 0x2227;
44029 t['logicalandtext'] = 0x2227;
44030 t['logicalordisplay'] = 0x2228;
44031 t['logicalortext'] = 0x2228;
44032 t['parenleftBig'] = 0x0028;
44033 t['parenleftbig'] = 0x0028;
44034 t['parenleftBigg'] = 0x0028;
44035 t['parenleftbigg'] = 0x0028;
44036 t['parenrightBig'] = 0x0029;
44037 t['parenrightbig'] = 0x0029;
44038 t['parenrightBigg'] = 0x0029;
44039 t['parenrightbigg'] = 0x0029;
44040 t['prime'] = 0x2032;
44041 t['productdisplay'] = 0x220F;
44042 t['producttext'] = 0x220F;
44043 t['radicalbig'] = 0x221A;
44044 t['radicalBig'] = 0x221A;
44045 t['radicalBigg'] = 0x221A;
44046 t['radicalbigg'] = 0x221A;
44047 t['radicalbt'] = 0x221A;
44048 t['radicaltp'] = 0x221A;
44049 t['radicalvertex'] = 0x221A;
44050 t['slashbig'] = 0x002F;
44051 t['slashBig'] = 0x002F;
44052 t['slashBigg'] = 0x002F;
44053 t['slashbigg'] = 0x002F;
44054 t['summationdisplay'] = 0x2211;
44055 t['summationtext'] = 0x2211;
44056 t['tildewide'] = 0x02DC;
44057 t['tildewider'] = 0x02DC;
44058 t['tildewidest'] = 0x02DC;
44059 t['uniondisplay'] = 0x22C3;
44060 t['unionmultidisplay'] = 0x228E;
44061 t['unionmultitext'] = 0x228E;
44062 t['unionsqdisplay'] = 0x2294;
44063 t['unionsqtext'] = 0x2294;
44064 t['uniontext'] = 0x22C3;
44065 t['vextenddouble'] = 0x2225;
44066 t['vextendsingle'] = 0x2223;
44067});
44068var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {
44069 t['space'] = 0x0020;
44070 t['a1'] = 0x2701;
44071 t['a2'] = 0x2702;
44072 t['a202'] = 0x2703;
44073 t['a3'] = 0x2704;
44074 t['a4'] = 0x260E;
44075 t['a5'] = 0x2706;
44076 t['a119'] = 0x2707;
44077 t['a118'] = 0x2708;
44078 t['a117'] = 0x2709;
44079 t['a11'] = 0x261B;
44080 t['a12'] = 0x261E;
44081 t['a13'] = 0x270C;
44082 t['a14'] = 0x270D;
44083 t['a15'] = 0x270E;
44084 t['a16'] = 0x270F;
44085 t['a105'] = 0x2710;
44086 t['a17'] = 0x2711;
44087 t['a18'] = 0x2712;
44088 t['a19'] = 0x2713;
44089 t['a20'] = 0x2714;
44090 t['a21'] = 0x2715;
44091 t['a22'] = 0x2716;
44092 t['a23'] = 0x2717;
44093 t['a24'] = 0x2718;
44094 t['a25'] = 0x2719;
44095 t['a26'] = 0x271A;
44096 t['a27'] = 0x271B;
44097 t['a28'] = 0x271C;
44098 t['a6'] = 0x271D;
44099 t['a7'] = 0x271E;
44100 t['a8'] = 0x271F;
44101 t['a9'] = 0x2720;
44102 t['a10'] = 0x2721;
44103 t['a29'] = 0x2722;
44104 t['a30'] = 0x2723;
44105 t['a31'] = 0x2724;
44106 t['a32'] = 0x2725;
44107 t['a33'] = 0x2726;
44108 t['a34'] = 0x2727;
44109 t['a35'] = 0x2605;
44110 t['a36'] = 0x2729;
44111 t['a37'] = 0x272A;
44112 t['a38'] = 0x272B;
44113 t['a39'] = 0x272C;
44114 t['a40'] = 0x272D;
44115 t['a41'] = 0x272E;
44116 t['a42'] = 0x272F;
44117 t['a43'] = 0x2730;
44118 t['a44'] = 0x2731;
44119 t['a45'] = 0x2732;
44120 t['a46'] = 0x2733;
44121 t['a47'] = 0x2734;
44122 t['a48'] = 0x2735;
44123 t['a49'] = 0x2736;
44124 t['a50'] = 0x2737;
44125 t['a51'] = 0x2738;
44126 t['a52'] = 0x2739;
44127 t['a53'] = 0x273A;
44128 t['a54'] = 0x273B;
44129 t['a55'] = 0x273C;
44130 t['a56'] = 0x273D;
44131 t['a57'] = 0x273E;
44132 t['a58'] = 0x273F;
44133 t['a59'] = 0x2740;
44134 t['a60'] = 0x2741;
44135 t['a61'] = 0x2742;
44136 t['a62'] = 0x2743;
44137 t['a63'] = 0x2744;
44138 t['a64'] = 0x2745;
44139 t['a65'] = 0x2746;
44140 t['a66'] = 0x2747;
44141 t['a67'] = 0x2748;
44142 t['a68'] = 0x2749;
44143 t['a69'] = 0x274A;
44144 t['a70'] = 0x274B;
44145 t['a71'] = 0x25CF;
44146 t['a72'] = 0x274D;
44147 t['a73'] = 0x25A0;
44148 t['a74'] = 0x274F;
44149 t['a203'] = 0x2750;
44150 t['a75'] = 0x2751;
44151 t['a204'] = 0x2752;
44152 t['a76'] = 0x25B2;
44153 t['a77'] = 0x25BC;
44154 t['a78'] = 0x25C6;
44155 t['a79'] = 0x2756;
44156 t['a81'] = 0x25D7;
44157 t['a82'] = 0x2758;
44158 t['a83'] = 0x2759;
44159 t['a84'] = 0x275A;
44160 t['a97'] = 0x275B;
44161 t['a98'] = 0x275C;
44162 t['a99'] = 0x275D;
44163 t['a100'] = 0x275E;
44164 t['a101'] = 0x2761;
44165 t['a102'] = 0x2762;
44166 t['a103'] = 0x2763;
44167 t['a104'] = 0x2764;
44168 t['a106'] = 0x2765;
44169 t['a107'] = 0x2766;
44170 t['a108'] = 0x2767;
44171 t['a112'] = 0x2663;
44172 t['a111'] = 0x2666;
44173 t['a110'] = 0x2665;
44174 t['a109'] = 0x2660;
44175 t['a120'] = 0x2460;
44176 t['a121'] = 0x2461;
44177 t['a122'] = 0x2462;
44178 t['a123'] = 0x2463;
44179 t['a124'] = 0x2464;
44180 t['a125'] = 0x2465;
44181 t['a126'] = 0x2466;
44182 t['a127'] = 0x2467;
44183 t['a128'] = 0x2468;
44184 t['a129'] = 0x2469;
44185 t['a130'] = 0x2776;
44186 t['a131'] = 0x2777;
44187 t['a132'] = 0x2778;
44188 t['a133'] = 0x2779;
44189 t['a134'] = 0x277A;
44190 t['a135'] = 0x277B;
44191 t['a136'] = 0x277C;
44192 t['a137'] = 0x277D;
44193 t['a138'] = 0x277E;
44194 t['a139'] = 0x277F;
44195 t['a140'] = 0x2780;
44196 t['a141'] = 0x2781;
44197 t['a142'] = 0x2782;
44198 t['a143'] = 0x2783;
44199 t['a144'] = 0x2784;
44200 t['a145'] = 0x2785;
44201 t['a146'] = 0x2786;
44202 t['a147'] = 0x2787;
44203 t['a148'] = 0x2788;
44204 t['a149'] = 0x2789;
44205 t['a150'] = 0x278A;
44206 t['a151'] = 0x278B;
44207 t['a152'] = 0x278C;
44208 t['a153'] = 0x278D;
44209 t['a154'] = 0x278E;
44210 t['a155'] = 0x278F;
44211 t['a156'] = 0x2790;
44212 t['a157'] = 0x2791;
44213 t['a158'] = 0x2792;
44214 t['a159'] = 0x2793;
44215 t['a160'] = 0x2794;
44216 t['a161'] = 0x2192;
44217 t['a163'] = 0x2194;
44218 t['a164'] = 0x2195;
44219 t['a196'] = 0x2798;
44220 t['a165'] = 0x2799;
44221 t['a192'] = 0x279A;
44222 t['a166'] = 0x279B;
44223 t['a167'] = 0x279C;
44224 t['a168'] = 0x279D;
44225 t['a169'] = 0x279E;
44226 t['a170'] = 0x279F;
44227 t['a171'] = 0x27A0;
44228 t['a172'] = 0x27A1;
44229 t['a173'] = 0x27A2;
44230 t['a162'] = 0x27A3;
44231 t['a174'] = 0x27A4;
44232 t['a175'] = 0x27A5;
44233 t['a176'] = 0x27A6;
44234 t['a177'] = 0x27A7;
44235 t['a178'] = 0x27A8;
44236 t['a179'] = 0x27A9;
44237 t['a193'] = 0x27AA;
44238 t['a180'] = 0x27AB;
44239 t['a199'] = 0x27AC;
44240 t['a181'] = 0x27AD;
44241 t['a200'] = 0x27AE;
44242 t['a182'] = 0x27AF;
44243 t['a201'] = 0x27B1;
44244 t['a183'] = 0x27B2;
44245 t['a184'] = 0x27B3;
44246 t['a197'] = 0x27B4;
44247 t['a185'] = 0x27B5;
44248 t['a194'] = 0x27B6;
44249 t['a198'] = 0x27B7;
44250 t['a186'] = 0x27B8;
44251 t['a195'] = 0x27B9;
44252 t['a187'] = 0x27BA;
44253 t['a188'] = 0x27BB;
44254 t['a189'] = 0x27BC;
44255 t['a190'] = 0x27BD;
44256 t['a191'] = 0x27BE;
44257 t['a89'] = 0x2768;
44258 t['a90'] = 0x2769;
44259 t['a93'] = 0x276A;
44260 t['a94'] = 0x276B;
44261 t['a91'] = 0x276C;
44262 t['a92'] = 0x276D;
44263 t['a205'] = 0x276E;
44264 t['a85'] = 0x276F;
44265 t['a206'] = 0x2770;
44266 t['a86'] = 0x2771;
44267 t['a87'] = 0x2772;
44268 t['a88'] = 0x2773;
44269 t['a95'] = 0x2774;
44270 t['a96'] = 0x2775;
44271 t['.notdef'] = 0x0000;
44272});
44273exports.getGlyphsUnicode = getGlyphsUnicode;
44274exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;
44275
44276/***/ }),
44277/* 179 */
44278/***/ (function(module, exports, __w_pdfjs_require__) {
44279
44280"use strict";
44281
44282
44283Object.defineProperty(exports, "__esModule", {
44284 value: true
44285});
44286exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = void 0;
44287
44288var _core_utils = __w_pdfjs_require__(154);
44289
44290var getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
44291 t['ArialNarrow'] = 'Helvetica';
44292 t['ArialNarrow-Bold'] = 'Helvetica-Bold';
44293 t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';
44294 t['ArialNarrow-Italic'] = 'Helvetica-Oblique';
44295 t['ArialBlack'] = 'Helvetica';
44296 t['ArialBlack-Bold'] = 'Helvetica-Bold';
44297 t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';
44298 t['ArialBlack-Italic'] = 'Helvetica-Oblique';
44299 t['Arial-Black'] = 'Helvetica';
44300 t['Arial-Black-Bold'] = 'Helvetica-Bold';
44301 t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique';
44302 t['Arial-Black-Italic'] = 'Helvetica-Oblique';
44303 t['Arial'] = 'Helvetica';
44304 t['Arial-Bold'] = 'Helvetica-Bold';
44305 t['Arial-BoldItalic'] = 'Helvetica-BoldOblique';
44306 t['Arial-Italic'] = 'Helvetica-Oblique';
44307 t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique';
44308 t['Arial-BoldMT'] = 'Helvetica-Bold';
44309 t['Arial-ItalicMT'] = 'Helvetica-Oblique';
44310 t['ArialMT'] = 'Helvetica';
44311 t['Courier-Bold'] = 'Courier-Bold';
44312 t['Courier-BoldItalic'] = 'Courier-BoldOblique';
44313 t['Courier-Italic'] = 'Courier-Oblique';
44314 t['CourierNew'] = 'Courier';
44315 t['CourierNew-Bold'] = 'Courier-Bold';
44316 t['CourierNew-BoldItalic'] = 'Courier-BoldOblique';
44317 t['CourierNew-Italic'] = 'Courier-Oblique';
44318 t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique';
44319 t['CourierNewPS-BoldMT'] = 'Courier-Bold';
44320 t['CourierNewPS-ItalicMT'] = 'Courier-Oblique';
44321 t['CourierNewPSMT'] = 'Courier';
44322 t['Helvetica'] = 'Helvetica';
44323 t['Helvetica-Bold'] = 'Helvetica-Bold';
44324 t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique';
44325 t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique';
44326 t['Helvetica-Italic'] = 'Helvetica-Oblique';
44327 t['Helvetica-Oblique'] = 'Helvetica-Oblique';
44328 t['SegoeUISymbol'] = 'Helvetica';
44329 t['Symbol-Bold'] = 'Symbol';
44330 t['Symbol-BoldItalic'] = 'Symbol';
44331 t['Symbol-Italic'] = 'Symbol';
44332 t['TimesNewRoman'] = 'Times-Roman';
44333 t['TimesNewRoman-Bold'] = 'Times-Bold';
44334 t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic';
44335 t['TimesNewRoman-Italic'] = 'Times-Italic';
44336 t['TimesNewRomanPS'] = 'Times-Roman';
44337 t['TimesNewRomanPS-Bold'] = 'Times-Bold';
44338 t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic';
44339 t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic';
44340 t['TimesNewRomanPS-BoldMT'] = 'Times-Bold';
44341 t['TimesNewRomanPS-Italic'] = 'Times-Italic';
44342 t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';
44343 t['TimesNewRomanPSMT'] = 'Times-Roman';
44344 t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';
44345 t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';
44346 t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';
44347});
44348exports.getStdFontMap = getStdFontMap;
44349var getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
44350 t['Calibri'] = 'Helvetica';
44351 t['Calibri-Bold'] = 'Helvetica-Bold';
44352 t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique';
44353 t['Calibri-Italic'] = 'Helvetica-Oblique';
44354 t['CenturyGothic'] = 'Helvetica';
44355 t['CenturyGothic-Bold'] = 'Helvetica-Bold';
44356 t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';
44357 t['CenturyGothic-Italic'] = 'Helvetica-Oblique';
44358 t['ComicSansMS'] = 'Comic Sans MS';
44359 t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold';
44360 t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic';
44361 t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic';
44362 t['LucidaConsole'] = 'Courier';
44363 t['LucidaConsole-Bold'] = 'Courier-Bold';
44364 t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique';
44365 t['LucidaConsole-Italic'] = 'Courier-Oblique';
44366 t['LucidaSans-Demi'] = 'Helvetica-Bold';
44367 t['MS-Gothic'] = 'MS Gothic';
44368 t['MS-Gothic-Bold'] = 'MS Gothic-Bold';
44369 t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic';
44370 t['MS-Gothic-Italic'] = 'MS Gothic-Italic';
44371 t['MS-Mincho'] = 'MS Mincho';
44372 t['MS-Mincho-Bold'] = 'MS Mincho-Bold';
44373 t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic';
44374 t['MS-Mincho-Italic'] = 'MS Mincho-Italic';
44375 t['MS-PGothic'] = 'MS PGothic';
44376 t['MS-PGothic-Bold'] = 'MS PGothic-Bold';
44377 t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic';
44378 t['MS-PGothic-Italic'] = 'MS PGothic-Italic';
44379 t['MS-PMincho'] = 'MS PMincho';
44380 t['MS-PMincho-Bold'] = 'MS PMincho-Bold';
44381 t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';
44382 t['MS-PMincho-Italic'] = 'MS PMincho-Italic';
44383 t['NuptialScript'] = 'Times-Italic';
44384 t['Wingdings'] = 'ZapfDingbats';
44385});
44386exports.getNonStdFontMap = getNonStdFontMap;
44387var getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) {
44388 t['Adobe Jenson'] = true;
44389 t['Adobe Text'] = true;
44390 t['Albertus'] = true;
44391 t['Aldus'] = true;
44392 t['Alexandria'] = true;
44393 t['Algerian'] = true;
44394 t['American Typewriter'] = true;
44395 t['Antiqua'] = true;
44396 t['Apex'] = true;
44397 t['Arno'] = true;
44398 t['Aster'] = true;
44399 t['Aurora'] = true;
44400 t['Baskerville'] = true;
44401 t['Bell'] = true;
44402 t['Bembo'] = true;
44403 t['Bembo Schoolbook'] = true;
44404 t['Benguiat'] = true;
44405 t['Berkeley Old Style'] = true;
44406 t['Bernhard Modern'] = true;
44407 t['Berthold City'] = true;
44408 t['Bodoni'] = true;
44409 t['Bauer Bodoni'] = true;
44410 t['Book Antiqua'] = true;
44411 t['Bookman'] = true;
44412 t['Bordeaux Roman'] = true;
44413 t['Californian FB'] = true;
44414 t['Calisto'] = true;
44415 t['Calvert'] = true;
44416 t['Capitals'] = true;
44417 t['Cambria'] = true;
44418 t['Cartier'] = true;
44419 t['Caslon'] = true;
44420 t['Catull'] = true;
44421 t['Centaur'] = true;
44422 t['Century Old Style'] = true;
44423 t['Century Schoolbook'] = true;
44424 t['Chaparral'] = true;
44425 t['Charis SIL'] = true;
44426 t['Cheltenham'] = true;
44427 t['Cholla Slab'] = true;
44428 t['Clarendon'] = true;
44429 t['Clearface'] = true;
44430 t['Cochin'] = true;
44431 t['Colonna'] = true;
44432 t['Computer Modern'] = true;
44433 t['Concrete Roman'] = true;
44434 t['Constantia'] = true;
44435 t['Cooper Black'] = true;
44436 t['Corona'] = true;
44437 t['Ecotype'] = true;
44438 t['Egyptienne'] = true;
44439 t['Elephant'] = true;
44440 t['Excelsior'] = true;
44441 t['Fairfield'] = true;
44442 t['FF Scala'] = true;
44443 t['Folkard'] = true;
44444 t['Footlight'] = true;
44445 t['FreeSerif'] = true;
44446 t['Friz Quadrata'] = true;
44447 t['Garamond'] = true;
44448 t['Gentium'] = true;
44449 t['Georgia'] = true;
44450 t['Gloucester'] = true;
44451 t['Goudy Old Style'] = true;
44452 t['Goudy Schoolbook'] = true;
44453 t['Goudy Pro Font'] = true;
44454 t['Granjon'] = true;
44455 t['Guardian Egyptian'] = true;
44456 t['Heather'] = true;
44457 t['Hercules'] = true;
44458 t['High Tower Text'] = true;
44459 t['Hiroshige'] = true;
44460 t['Hoefler Text'] = true;
44461 t['Humana Serif'] = true;
44462 t['Imprint'] = true;
44463 t['Ionic No. 5'] = true;
44464 t['Janson'] = true;
44465 t['Joanna'] = true;
44466 t['Korinna'] = true;
44467 t['Lexicon'] = true;
44468 t['Liberation Serif'] = true;
44469 t['Linux Libertine'] = true;
44470 t['Literaturnaya'] = true;
44471 t['Lucida'] = true;
44472 t['Lucida Bright'] = true;
44473 t['Melior'] = true;
44474 t['Memphis'] = true;
44475 t['Miller'] = true;
44476 t['Minion'] = true;
44477 t['Modern'] = true;
44478 t['Mona Lisa'] = true;
44479 t['Mrs Eaves'] = true;
44480 t['MS Serif'] = true;
44481 t['Museo Slab'] = true;
44482 t['New York'] = true;
44483 t['Nimbus Roman'] = true;
44484 t['NPS Rawlinson Roadway'] = true;
44485 t['NuptialScript'] = true;
44486 t['Palatino'] = true;
44487 t['Perpetua'] = true;
44488 t['Plantin'] = true;
44489 t['Plantin Schoolbook'] = true;
44490 t['Playbill'] = true;
44491 t['Poor Richard'] = true;
44492 t['Rawlinson Roadway'] = true;
44493 t['Renault'] = true;
44494 t['Requiem'] = true;
44495 t['Rockwell'] = true;
44496 t['Roman'] = true;
44497 t['Rotis Serif'] = true;
44498 t['Sabon'] = true;
44499 t['Scala'] = true;
44500 t['Seagull'] = true;
44501 t['Sistina'] = true;
44502 t['Souvenir'] = true;
44503 t['STIX'] = true;
44504 t['Stone Informal'] = true;
44505 t['Stone Serif'] = true;
44506 t['Sylfaen'] = true;
44507 t['Times'] = true;
44508 t['Trajan'] = true;
44509 t['Trinité'] = true;
44510 t['Trump Mediaeval'] = true;
44511 t['Utopia'] = true;
44512 t['Vale Type'] = true;
44513 t['Bitstream Vera'] = true;
44514 t['Vera Serif'] = true;
44515 t['Versailles'] = true;
44516 t['Wanted'] = true;
44517 t['Weiss'] = true;
44518 t['Wide Latin'] = true;
44519 t['Windsor'] = true;
44520 t['XITS'] = true;
44521});
44522exports.getSerifFonts = getSerifFonts;
44523var getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) {
44524 t['Dingbats'] = true;
44525 t['Symbol'] = true;
44526 t['ZapfDingbats'] = true;
44527});
44528exports.getSymbolsFonts = getSymbolsFonts;
44529var getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) {
44530 t[2] = 10;
44531 t[3] = 32;
44532 t[4] = 33;
44533 t[5] = 34;
44534 t[6] = 35;
44535 t[7] = 36;
44536 t[8] = 37;
44537 t[9] = 38;
44538 t[10] = 39;
44539 t[11] = 40;
44540 t[12] = 41;
44541 t[13] = 42;
44542 t[14] = 43;
44543 t[15] = 44;
44544 t[16] = 45;
44545 t[17] = 46;
44546 t[18] = 47;
44547 t[19] = 48;
44548 t[20] = 49;
44549 t[21] = 50;
44550 t[22] = 51;
44551 t[23] = 52;
44552 t[24] = 53;
44553 t[25] = 54;
44554 t[26] = 55;
44555 t[27] = 56;
44556 t[28] = 57;
44557 t[29] = 58;
44558 t[30] = 894;
44559 t[31] = 60;
44560 t[32] = 61;
44561 t[33] = 62;
44562 t[34] = 63;
44563 t[35] = 64;
44564 t[36] = 65;
44565 t[37] = 66;
44566 t[38] = 67;
44567 t[39] = 68;
44568 t[40] = 69;
44569 t[41] = 70;
44570 t[42] = 71;
44571 t[43] = 72;
44572 t[44] = 73;
44573 t[45] = 74;
44574 t[46] = 75;
44575 t[47] = 76;
44576 t[48] = 77;
44577 t[49] = 78;
44578 t[50] = 79;
44579 t[51] = 80;
44580 t[52] = 81;
44581 t[53] = 82;
44582 t[54] = 83;
44583 t[55] = 84;
44584 t[56] = 85;
44585 t[57] = 86;
44586 t[58] = 87;
44587 t[59] = 88;
44588 t[60] = 89;
44589 t[61] = 90;
44590 t[62] = 91;
44591 t[63] = 92;
44592 t[64] = 93;
44593 t[65] = 94;
44594 t[66] = 95;
44595 t[67] = 96;
44596 t[68] = 97;
44597 t[69] = 98;
44598 t[70] = 99;
44599 t[71] = 100;
44600 t[72] = 101;
44601 t[73] = 102;
44602 t[74] = 103;
44603 t[75] = 104;
44604 t[76] = 105;
44605 t[77] = 106;
44606 t[78] = 107;
44607 t[79] = 108;
44608 t[80] = 109;
44609 t[81] = 110;
44610 t[82] = 111;
44611 t[83] = 112;
44612 t[84] = 113;
44613 t[85] = 114;
44614 t[86] = 115;
44615 t[87] = 116;
44616 t[88] = 117;
44617 t[89] = 118;
44618 t[90] = 119;
44619 t[91] = 120;
44620 t[92] = 121;
44621 t[93] = 122;
44622 t[94] = 123;
44623 t[95] = 124;
44624 t[96] = 125;
44625 t[97] = 126;
44626 t[98] = 196;
44627 t[99] = 197;
44628 t[100] = 199;
44629 t[101] = 201;
44630 t[102] = 209;
44631 t[103] = 214;
44632 t[104] = 220;
44633 t[105] = 225;
44634 t[106] = 224;
44635 t[107] = 226;
44636 t[108] = 228;
44637 t[109] = 227;
44638 t[110] = 229;
44639 t[111] = 231;
44640 t[112] = 233;
44641 t[113] = 232;
44642 t[114] = 234;
44643 t[115] = 235;
44644 t[116] = 237;
44645 t[117] = 236;
44646 t[118] = 238;
44647 t[119] = 239;
44648 t[120] = 241;
44649 t[121] = 243;
44650 t[122] = 242;
44651 t[123] = 244;
44652 t[124] = 246;
44653 t[125] = 245;
44654 t[126] = 250;
44655 t[127] = 249;
44656 t[128] = 251;
44657 t[129] = 252;
44658 t[130] = 8224;
44659 t[131] = 176;
44660 t[132] = 162;
44661 t[133] = 163;
44662 t[134] = 167;
44663 t[135] = 8226;
44664 t[136] = 182;
44665 t[137] = 223;
44666 t[138] = 174;
44667 t[139] = 169;
44668 t[140] = 8482;
44669 t[141] = 180;
44670 t[142] = 168;
44671 t[143] = 8800;
44672 t[144] = 198;
44673 t[145] = 216;
44674 t[146] = 8734;
44675 t[147] = 177;
44676 t[148] = 8804;
44677 t[149] = 8805;
44678 t[150] = 165;
44679 t[151] = 181;
44680 t[152] = 8706;
44681 t[153] = 8721;
44682 t[154] = 8719;
44683 t[156] = 8747;
44684 t[157] = 170;
44685 t[158] = 186;
44686 t[159] = 8486;
44687 t[160] = 230;
44688 t[161] = 248;
44689 t[162] = 191;
44690 t[163] = 161;
44691 t[164] = 172;
44692 t[165] = 8730;
44693 t[166] = 402;
44694 t[167] = 8776;
44695 t[168] = 8710;
44696 t[169] = 171;
44697 t[170] = 187;
44698 t[171] = 8230;
44699 t[210] = 218;
44700 t[223] = 711;
44701 t[224] = 321;
44702 t[225] = 322;
44703 t[227] = 353;
44704 t[229] = 382;
44705 t[234] = 253;
44706 t[252] = 263;
44707 t[253] = 268;
44708 t[254] = 269;
44709 t[258] = 258;
44710 t[260] = 260;
44711 t[261] = 261;
44712 t[265] = 280;
44713 t[266] = 281;
44714 t[268] = 283;
44715 t[269] = 313;
44716 t[275] = 323;
44717 t[276] = 324;
44718 t[278] = 328;
44719 t[284] = 345;
44720 t[285] = 346;
44721 t[286] = 347;
44722 t[292] = 367;
44723 t[295] = 377;
44724 t[296] = 378;
44725 t[298] = 380;
44726 t[305] = 963;
44727 t[306] = 964;
44728 t[307] = 966;
44729 t[308] = 8215;
44730 t[309] = 8252;
44731 t[310] = 8319;
44732 t[311] = 8359;
44733 t[312] = 8592;
44734 t[313] = 8593;
44735 t[337] = 9552;
44736 t[493] = 1039;
44737 t[494] = 1040;
44738 t[705] = 1524;
44739 t[706] = 8362;
44740 t[710] = 64288;
44741 t[711] = 64298;
44742 t[759] = 1617;
44743 t[761] = 1776;
44744 t[763] = 1778;
44745 t[775] = 1652;
44746 t[777] = 1764;
44747 t[778] = 1780;
44748 t[779] = 1781;
44749 t[780] = 1782;
44750 t[782] = 771;
44751 t[783] = 64726;
44752 t[786] = 8363;
44753 t[788] = 8532;
44754 t[790] = 768;
44755 t[791] = 769;
44756 t[792] = 768;
44757 t[795] = 803;
44758 t[797] = 64336;
44759 t[798] = 64337;
44760 t[799] = 64342;
44761 t[800] = 64343;
44762 t[801] = 64344;
44763 t[802] = 64345;
44764 t[803] = 64362;
44765 t[804] = 64363;
44766 t[805] = 64364;
44767 t[2424] = 7821;
44768 t[2425] = 7822;
44769 t[2426] = 7823;
44770 t[2427] = 7824;
44771 t[2428] = 7825;
44772 t[2429] = 7826;
44773 t[2430] = 7827;
44774 t[2433] = 7682;
44775 t[2678] = 8045;
44776 t[2679] = 8046;
44777 t[2830] = 1552;
44778 t[2838] = 686;
44779 t[2840] = 751;
44780 t[2842] = 753;
44781 t[2843] = 754;
44782 t[2844] = 755;
44783 t[2846] = 757;
44784 t[2856] = 767;
44785 t[2857] = 848;
44786 t[2858] = 849;
44787 t[2862] = 853;
44788 t[2863] = 854;
44789 t[2864] = 855;
44790 t[2865] = 861;
44791 t[2866] = 862;
44792 t[2906] = 7460;
44793 t[2908] = 7462;
44794 t[2909] = 7463;
44795 t[2910] = 7464;
44796 t[2912] = 7466;
44797 t[2913] = 7467;
44798 t[2914] = 7468;
44799 t[2916] = 7470;
44800 t[2917] = 7471;
44801 t[2918] = 7472;
44802 t[2920] = 7474;
44803 t[2921] = 7475;
44804 t[2922] = 7476;
44805 t[2924] = 7478;
44806 t[2925] = 7479;
44807 t[2926] = 7480;
44808 t[2928] = 7482;
44809 t[2929] = 7483;
44810 t[2930] = 7484;
44811 t[2932] = 7486;
44812 t[2933] = 7487;
44813 t[2934] = 7488;
44814 t[2936] = 7490;
44815 t[2937] = 7491;
44816 t[2938] = 7492;
44817 t[2940] = 7494;
44818 t[2941] = 7495;
44819 t[2942] = 7496;
44820 t[2944] = 7498;
44821 t[2946] = 7500;
44822 t[2948] = 7502;
44823 t[2950] = 7504;
44824 t[2951] = 7505;
44825 t[2952] = 7506;
44826 t[2954] = 7508;
44827 t[2955] = 7509;
44828 t[2956] = 7510;
44829 t[2958] = 7512;
44830 t[2959] = 7513;
44831 t[2960] = 7514;
44832 t[2962] = 7516;
44833 t[2963] = 7517;
44834 t[2964] = 7518;
44835 t[2966] = 7520;
44836 t[2967] = 7521;
44837 t[2968] = 7522;
44838 t[2970] = 7524;
44839 t[2971] = 7525;
44840 t[2972] = 7526;
44841 t[2974] = 7528;
44842 t[2975] = 7529;
44843 t[2976] = 7530;
44844 t[2978] = 1537;
44845 t[2979] = 1538;
44846 t[2980] = 1539;
44847 t[2982] = 1549;
44848 t[2983] = 1551;
44849 t[2984] = 1552;
44850 t[2986] = 1554;
44851 t[2987] = 1555;
44852 t[2988] = 1556;
44853 t[2990] = 1623;
44854 t[2991] = 1624;
44855 t[2995] = 1775;
44856 t[2999] = 1791;
44857 t[3002] = 64290;
44858 t[3003] = 64291;
44859 t[3004] = 64292;
44860 t[3006] = 64294;
44861 t[3007] = 64295;
44862 t[3008] = 64296;
44863 t[3011] = 1900;
44864 t[3014] = 8223;
44865 t[3015] = 8244;
44866 t[3017] = 7532;
44867 t[3018] = 7533;
44868 t[3019] = 7534;
44869 t[3075] = 7590;
44870 t[3076] = 7591;
44871 t[3079] = 7594;
44872 t[3080] = 7595;
44873 t[3083] = 7598;
44874 t[3084] = 7599;
44875 t[3087] = 7602;
44876 t[3088] = 7603;
44877 t[3091] = 7606;
44878 t[3092] = 7607;
44879 t[3095] = 7610;
44880 t[3096] = 7611;
44881 t[3099] = 7614;
44882 t[3100] = 7615;
44883 t[3103] = 7618;
44884 t[3104] = 7619;
44885 t[3107] = 8337;
44886 t[3108] = 8338;
44887 t[3116] = 1884;
44888 t[3119] = 1885;
44889 t[3120] = 1885;
44890 t[3123] = 1886;
44891 t[3124] = 1886;
44892 t[3127] = 1887;
44893 t[3128] = 1887;
44894 t[3131] = 1888;
44895 t[3132] = 1888;
44896 t[3135] = 1889;
44897 t[3136] = 1889;
44898 t[3139] = 1890;
44899 t[3140] = 1890;
44900 t[3143] = 1891;
44901 t[3144] = 1891;
44902 t[3147] = 1892;
44903 t[3148] = 1892;
44904 t[3153] = 580;
44905 t[3154] = 581;
44906 t[3157] = 584;
44907 t[3158] = 585;
44908 t[3161] = 588;
44909 t[3162] = 589;
44910 t[3165] = 891;
44911 t[3166] = 892;
44912 t[3169] = 1274;
44913 t[3170] = 1275;
44914 t[3173] = 1278;
44915 t[3174] = 1279;
44916 t[3181] = 7622;
44917 t[3182] = 7623;
44918 t[3282] = 11799;
44919 t[3316] = 578;
44920 t[3379] = 42785;
44921 t[3393] = 1159;
44922 t[3416] = 8377;
44923});
44924exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;
44925var getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) {
44926 t[227] = 322;
44927 t[264] = 261;
44928 t[291] = 346;
44929});
44930exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;
44931var getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) {
44932 t[1] = 32;
44933 t[4] = 65;
44934 t[17] = 66;
44935 t[18] = 67;
44936 t[24] = 68;
44937 t[28] = 69;
44938 t[38] = 70;
44939 t[39] = 71;
44940 t[44] = 72;
44941 t[47] = 73;
44942 t[58] = 74;
44943 t[60] = 75;
44944 t[62] = 76;
44945 t[68] = 77;
44946 t[69] = 78;
44947 t[75] = 79;
44948 t[87] = 80;
44949 t[89] = 81;
44950 t[90] = 82;
44951 t[94] = 83;
44952 t[100] = 84;
44953 t[104] = 85;
44954 t[115] = 86;
44955 t[116] = 87;
44956 t[121] = 88;
44957 t[122] = 89;
44958 t[127] = 90;
44959 t[258] = 97;
44960 t[268] = 261;
44961 t[271] = 98;
44962 t[272] = 99;
44963 t[273] = 263;
44964 t[282] = 100;
44965 t[286] = 101;
44966 t[295] = 281;
44967 t[296] = 102;
44968 t[336] = 103;
44969 t[346] = 104;
44970 t[349] = 105;
44971 t[361] = 106;
44972 t[364] = 107;
44973 t[367] = 108;
44974 t[371] = 322;
44975 t[373] = 109;
44976 t[374] = 110;
44977 t[381] = 111;
44978 t[383] = 243;
44979 t[393] = 112;
44980 t[395] = 113;
44981 t[396] = 114;
44982 t[400] = 115;
44983 t[401] = 347;
44984 t[410] = 116;
44985 t[437] = 117;
44986 t[448] = 118;
44987 t[449] = 119;
44988 t[454] = 120;
44989 t[455] = 121;
44990 t[460] = 122;
44991 t[463] = 380;
44992 t[853] = 44;
44993 t[855] = 58;
44994 t[856] = 46;
44995 t[876] = 47;
44996 t[878] = 45;
44997 t[882] = 45;
44998 t[894] = 40;
44999 t[895] = 41;
45000 t[896] = 91;
45001 t[897] = 93;
45002 t[923] = 64;
45003 t[1004] = 48;
45004 t[1005] = 49;
45005 t[1006] = 50;
45006 t[1007] = 51;
45007 t[1008] = 52;
45008 t[1009] = 53;
45009 t[1010] = 54;
45010 t[1011] = 55;
45011 t[1012] = 56;
45012 t[1013] = 57;
45013 t[1081] = 37;
45014 t[1085] = 43;
45015 t[1086] = 45;
45016});
45017exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;
45018
45019/***/ }),
45020/* 180 */
45021/***/ (function(module, exports, __w_pdfjs_require__) {
45022
45023var getLookupTableFactory = __w_pdfjs_require__(154).getLookupTableFactory;
45024var getSpecialPUASymbols = getLookupTableFactory(function (t) {
45025 t[63721] = 0x00A9;
45026 t[63193] = 0x00A9;
45027 t[63720] = 0x00AE;
45028 t[63194] = 0x00AE;
45029 t[63722] = 0x2122;
45030 t[63195] = 0x2122;
45031 t[63729] = 0x23A7;
45032 t[63730] = 0x23A8;
45033 t[63731] = 0x23A9;
45034 t[63740] = 0x23AB;
45035 t[63741] = 0x23AC;
45036 t[63742] = 0x23AD;
45037 t[63726] = 0x23A1;
45038 t[63727] = 0x23A2;
45039 t[63728] = 0x23A3;
45040 t[63737] = 0x23A4;
45041 t[63738] = 0x23A5;
45042 t[63739] = 0x23A6;
45043 t[63723] = 0x239B;
45044 t[63724] = 0x239C;
45045 t[63725] = 0x239D;
45046 t[63734] = 0x239E;
45047 t[63735] = 0x239F;
45048 t[63736] = 0x23A0;
45049});
45050function mapSpecialUnicodeValues(code) {
45051 if (code >= 0xFFF0 && code <= 0xFFFF) {
45052 return 0;
45053 } else if (code >= 0xF600 && code <= 0xF8FF) {
45054 return getSpecialPUASymbols()[code] || code;
45055 } else if (code === 0x00AD) {
45056 return 0x002D;
45057 }
45058 return code;
45059}
45060function getUnicodeForGlyph(name, glyphsUnicodeMap) {
45061 var unicode = glyphsUnicodeMap[name];
45062 if (unicode !== undefined) {
45063 return unicode;
45064 }
45065 if (!name) {
45066 return -1;
45067 }
45068 if (name[0] === 'u') {
45069 var nameLen = name.length, hexStr;
45070 if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') {
45071 hexStr = name.substring(3);
45072 } else if (nameLen >= 5 && nameLen <= 7) {
45073 hexStr = name.substring(1);
45074 } else {
45075 return -1;
45076 }
45077 if (hexStr === hexStr.toUpperCase()) {
45078 unicode = parseInt(hexStr, 16);
45079 if (unicode >= 0) {
45080 return unicode;
45081 }
45082 }
45083 }
45084 return -1;
45085}
45086var UnicodeRanges = [
45087 {
45088 'begin': 0x0000,
45089 'end': 0x007F
45090 },
45091 {
45092 'begin': 0x0080,
45093 'end': 0x00FF
45094 },
45095 {
45096 'begin': 0x0100,
45097 'end': 0x017F
45098 },
45099 {
45100 'begin': 0x0180,
45101 'end': 0x024F
45102 },
45103 {
45104 'begin': 0x0250,
45105 'end': 0x02AF
45106 },
45107 {
45108 'begin': 0x02B0,
45109 'end': 0x02FF
45110 },
45111 {
45112 'begin': 0x0300,
45113 'end': 0x036F
45114 },
45115 {
45116 'begin': 0x0370,
45117 'end': 0x03FF
45118 },
45119 {
45120 'begin': 0x2C80,
45121 'end': 0x2CFF
45122 },
45123 {
45124 'begin': 0x0400,
45125 'end': 0x04FF
45126 },
45127 {
45128 'begin': 0x0530,
45129 'end': 0x058F
45130 },
45131 {
45132 'begin': 0x0590,
45133 'end': 0x05FF
45134 },
45135 {
45136 'begin': 0xA500,
45137 'end': 0xA63F
45138 },
45139 {
45140 'begin': 0x0600,
45141 'end': 0x06FF
45142 },
45143 {
45144 'begin': 0x07C0,
45145 'end': 0x07FF
45146 },
45147 {
45148 'begin': 0x0900,
45149 'end': 0x097F
45150 },
45151 {
45152 'begin': 0x0980,
45153 'end': 0x09FF
45154 },
45155 {
45156 'begin': 0x0A00,
45157 'end': 0x0A7F
45158 },
45159 {
45160 'begin': 0x0A80,
45161 'end': 0x0AFF
45162 },
45163 {
45164 'begin': 0x0B00,
45165 'end': 0x0B7F
45166 },
45167 {
45168 'begin': 0x0B80,
45169 'end': 0x0BFF
45170 },
45171 {
45172 'begin': 0x0C00,
45173 'end': 0x0C7F
45174 },
45175 {
45176 'begin': 0x0C80,
45177 'end': 0x0CFF
45178 },
45179 {
45180 'begin': 0x0D00,
45181 'end': 0x0D7F
45182 },
45183 {
45184 'begin': 0x0E00,
45185 'end': 0x0E7F
45186 },
45187 {
45188 'begin': 0x0E80,
45189 'end': 0x0EFF
45190 },
45191 {
45192 'begin': 0x10A0,
45193 'end': 0x10FF
45194 },
45195 {
45196 'begin': 0x1B00,
45197 'end': 0x1B7F
45198 },
45199 {
45200 'begin': 0x1100,
45201 'end': 0x11FF
45202 },
45203 {
45204 'begin': 0x1E00,
45205 'end': 0x1EFF
45206 },
45207 {
45208 'begin': 0x1F00,
45209 'end': 0x1FFF
45210 },
45211 {
45212 'begin': 0x2000,
45213 'end': 0x206F
45214 },
45215 {
45216 'begin': 0x2070,
45217 'end': 0x209F
45218 },
45219 {
45220 'begin': 0x20A0,
45221 'end': 0x20CF
45222 },
45223 {
45224 'begin': 0x20D0,
45225 'end': 0x20FF
45226 },
45227 {
45228 'begin': 0x2100,
45229 'end': 0x214F
45230 },
45231 {
45232 'begin': 0x2150,
45233 'end': 0x218F
45234 },
45235 {
45236 'begin': 0x2190,
45237 'end': 0x21FF
45238 },
45239 {
45240 'begin': 0x2200,
45241 'end': 0x22FF
45242 },
45243 {
45244 'begin': 0x2300,
45245 'end': 0x23FF
45246 },
45247 {
45248 'begin': 0x2400,
45249 'end': 0x243F
45250 },
45251 {
45252 'begin': 0x2440,
45253 'end': 0x245F
45254 },
45255 {
45256 'begin': 0x2460,
45257 'end': 0x24FF
45258 },
45259 {
45260 'begin': 0x2500,
45261 'end': 0x257F
45262 },
45263 {
45264 'begin': 0x2580,
45265 'end': 0x259F
45266 },
45267 {
45268 'begin': 0x25A0,
45269 'end': 0x25FF
45270 },
45271 {
45272 'begin': 0x2600,
45273 'end': 0x26FF
45274 },
45275 {
45276 'begin': 0x2700,
45277 'end': 0x27BF
45278 },
45279 {
45280 'begin': 0x3000,
45281 'end': 0x303F
45282 },
45283 {
45284 'begin': 0x3040,
45285 'end': 0x309F
45286 },
45287 {
45288 'begin': 0x30A0,
45289 'end': 0x30FF
45290 },
45291 {
45292 'begin': 0x3100,
45293 'end': 0x312F
45294 },
45295 {
45296 'begin': 0x3130,
45297 'end': 0x318F
45298 },
45299 {
45300 'begin': 0xA840,
45301 'end': 0xA87F
45302 },
45303 {
45304 'begin': 0x3200,
45305 'end': 0x32FF
45306 },
45307 {
45308 'begin': 0x3300,
45309 'end': 0x33FF
45310 },
45311 {
45312 'begin': 0xAC00,
45313 'end': 0xD7AF
45314 },
45315 {
45316 'begin': 0xD800,
45317 'end': 0xDFFF
45318 },
45319 {
45320 'begin': 0x10900,
45321 'end': 0x1091F
45322 },
45323 {
45324 'begin': 0x4E00,
45325 'end': 0x9FFF
45326 },
45327 {
45328 'begin': 0xE000,
45329 'end': 0xF8FF
45330 },
45331 {
45332 'begin': 0x31C0,
45333 'end': 0x31EF
45334 },
45335 {
45336 'begin': 0xFB00,
45337 'end': 0xFB4F
45338 },
45339 {
45340 'begin': 0xFB50,
45341 'end': 0xFDFF
45342 },
45343 {
45344 'begin': 0xFE20,
45345 'end': 0xFE2F
45346 },
45347 {
45348 'begin': 0xFE10,
45349 'end': 0xFE1F
45350 },
45351 {
45352 'begin': 0xFE50,
45353 'end': 0xFE6F
45354 },
45355 {
45356 'begin': 0xFE70,
45357 'end': 0xFEFF
45358 },
45359 {
45360 'begin': 0xFF00,
45361 'end': 0xFFEF
45362 },
45363 {
45364 'begin': 0xFFF0,
45365 'end': 0xFFFF
45366 },
45367 {
45368 'begin': 0x0F00,
45369 'end': 0x0FFF
45370 },
45371 {
45372 'begin': 0x0700,
45373 'end': 0x074F
45374 },
45375 {
45376 'begin': 0x0780,
45377 'end': 0x07BF
45378 },
45379 {
45380 'begin': 0x0D80,
45381 'end': 0x0DFF
45382 },
45383 {
45384 'begin': 0x1000,
45385 'end': 0x109F
45386 },
45387 {
45388 'begin': 0x1200,
45389 'end': 0x137F
45390 },
45391 {
45392 'begin': 0x13A0,
45393 'end': 0x13FF
45394 },
45395 {
45396 'begin': 0x1400,
45397 'end': 0x167F
45398 },
45399 {
45400 'begin': 0x1680,
45401 'end': 0x169F
45402 },
45403 {
45404 'begin': 0x16A0,
45405 'end': 0x16FF
45406 },
45407 {
45408 'begin': 0x1780,
45409 'end': 0x17FF
45410 },
45411 {
45412 'begin': 0x1800,
45413 'end': 0x18AF
45414 },
45415 {
45416 'begin': 0x2800,
45417 'end': 0x28FF
45418 },
45419 {
45420 'begin': 0xA000,
45421 'end': 0xA48F
45422 },
45423 {
45424 'begin': 0x1700,
45425 'end': 0x171F
45426 },
45427 {
45428 'begin': 0x10300,
45429 'end': 0x1032F
45430 },
45431 {
45432 'begin': 0x10330,
45433 'end': 0x1034F
45434 },
45435 {
45436 'begin': 0x10400,
45437 'end': 0x1044F
45438 },
45439 {
45440 'begin': 0x1D000,
45441 'end': 0x1D0FF
45442 },
45443 {
45444 'begin': 0x1D400,
45445 'end': 0x1D7FF
45446 },
45447 {
45448 'begin': 0xFF000,
45449 'end': 0xFFFFD
45450 },
45451 {
45452 'begin': 0xFE00,
45453 'end': 0xFE0F
45454 },
45455 {
45456 'begin': 0xE0000,
45457 'end': 0xE007F
45458 },
45459 {
45460 'begin': 0x1900,
45461 'end': 0x194F
45462 },
45463 {
45464 'begin': 0x1950,
45465 'end': 0x197F
45466 },
45467 {
45468 'begin': 0x1980,
45469 'end': 0x19DF
45470 },
45471 {
45472 'begin': 0x1A00,
45473 'end': 0x1A1F
45474 },
45475 {
45476 'begin': 0x2C00,
45477 'end': 0x2C5F
45478 },
45479 {
45480 'begin': 0x2D30,
45481 'end': 0x2D7F
45482 },
45483 {
45484 'begin': 0x4DC0,
45485 'end': 0x4DFF
45486 },
45487 {
45488 'begin': 0xA800,
45489 'end': 0xA82F
45490 },
45491 {
45492 'begin': 0x10000,
45493 'end': 0x1007F
45494 },
45495 {
45496 'begin': 0x10140,
45497 'end': 0x1018F
45498 },
45499 {
45500 'begin': 0x10380,
45501 'end': 0x1039F
45502 },
45503 {
45504 'begin': 0x103A0,
45505 'end': 0x103DF
45506 },
45507 {
45508 'begin': 0x10450,
45509 'end': 0x1047F
45510 },
45511 {
45512 'begin': 0x10480,
45513 'end': 0x104AF
45514 },
45515 {
45516 'begin': 0x10800,
45517 'end': 0x1083F
45518 },
45519 {
45520 'begin': 0x10A00,
45521 'end': 0x10A5F
45522 },
45523 {
45524 'begin': 0x1D300,
45525 'end': 0x1D35F
45526 },
45527 {
45528 'begin': 0x12000,
45529 'end': 0x123FF
45530 },
45531 {
45532 'begin': 0x1D360,
45533 'end': 0x1D37F
45534 },
45535 {
45536 'begin': 0x1B80,
45537 'end': 0x1BBF
45538 },
45539 {
45540 'begin': 0x1C00,
45541 'end': 0x1C4F
45542 },
45543 {
45544 'begin': 0x1C50,
45545 'end': 0x1C7F
45546 },
45547 {
45548 'begin': 0xA880,
45549 'end': 0xA8DF
45550 },
45551 {
45552 'begin': 0xA900,
45553 'end': 0xA92F
45554 },
45555 {
45556 'begin': 0xA930,
45557 'end': 0xA95F
45558 },
45559 {
45560 'begin': 0xAA00,
45561 'end': 0xAA5F
45562 },
45563 {
45564 'begin': 0x10190,
45565 'end': 0x101CF
45566 },
45567 {
45568 'begin': 0x101D0,
45569 'end': 0x101FF
45570 },
45571 {
45572 'begin': 0x102A0,
45573 'end': 0x102DF
45574 },
45575 {
45576 'begin': 0x1F030,
45577 'end': 0x1F09F
45578 }
45579];
45580function getUnicodeRangeFor(value) {
45581 for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
45582 var range = UnicodeRanges[i];
45583 if (value >= range.begin && value < range.end) {
45584 return i;
45585 }
45586 }
45587 return -1;
45588}
45589function isRTLRangeFor(value) {
45590 var range = UnicodeRanges[13];
45591 if (value >= range.begin && value < range.end) {
45592 return true;
45593 }
45594 range = UnicodeRanges[11];
45595 if (value >= range.begin && value < range.end) {
45596 return true;
45597 }
45598 return false;
45599}
45600var getNormalizedUnicodes = getLookupTableFactory(function (t) {
45601 t['\u00A8'] = '\u0020\u0308';
45602 t['\u00AF'] = '\u0020\u0304';
45603 t['\u00B4'] = '\u0020\u0301';
45604 t['\u00B5'] = '\u03BC';
45605 t['\u00B8'] = '\u0020\u0327';
45606 t['\u0132'] = '\u0049\u004A';
45607 t['\u0133'] = '\u0069\u006A';
45608 t['\u013F'] = '\u004C\u00B7';
45609 t['\u0140'] = '\u006C\u00B7';
45610 t['\u0149'] = '\u02BC\u006E';
45611 t['\u017F'] = '\u0073';
45612 t['\u01C4'] = '\u0044\u017D';
45613 t['\u01C5'] = '\u0044\u017E';
45614 t['\u01C6'] = '\u0064\u017E';
45615 t['\u01C7'] = '\u004C\u004A';
45616 t['\u01C8'] = '\u004C\u006A';
45617 t['\u01C9'] = '\u006C\u006A';
45618 t['\u01CA'] = '\u004E\u004A';
45619 t['\u01CB'] = '\u004E\u006A';
45620 t['\u01CC'] = '\u006E\u006A';
45621 t['\u01F1'] = '\u0044\u005A';
45622 t['\u01F2'] = '\u0044\u007A';
45623 t['\u01F3'] = '\u0064\u007A';
45624 t['\u02D8'] = '\u0020\u0306';
45625 t['\u02D9'] = '\u0020\u0307';
45626 t['\u02DA'] = '\u0020\u030A';
45627 t['\u02DB'] = '\u0020\u0328';
45628 t['\u02DC'] = '\u0020\u0303';
45629 t['\u02DD'] = '\u0020\u030B';
45630 t['\u037A'] = '\u0020\u0345';
45631 t['\u0384'] = '\u0020\u0301';
45632 t['\u03D0'] = '\u03B2';
45633 t['\u03D1'] = '\u03B8';
45634 t['\u03D2'] = '\u03A5';
45635 t['\u03D5'] = '\u03C6';
45636 t['\u03D6'] = '\u03C0';
45637 t['\u03F0'] = '\u03BA';
45638 t['\u03F1'] = '\u03C1';
45639 t['\u03F2'] = '\u03C2';
45640 t['\u03F4'] = '\u0398';
45641 t['\u03F5'] = '\u03B5';
45642 t['\u03F9'] = '\u03A3';
45643 t['\u0587'] = '\u0565\u0582';
45644 t['\u0675'] = '\u0627\u0674';
45645 t['\u0676'] = '\u0648\u0674';
45646 t['\u0677'] = '\u06C7\u0674';
45647 t['\u0678'] = '\u064A\u0674';
45648 t['\u0E33'] = '\u0E4D\u0E32';
45649 t['\u0EB3'] = '\u0ECD\u0EB2';
45650 t['\u0EDC'] = '\u0EAB\u0E99';
45651 t['\u0EDD'] = '\u0EAB\u0EA1';
45652 t['\u0F77'] = '\u0FB2\u0F81';
45653 t['\u0F79'] = '\u0FB3\u0F81';
45654 t['\u1E9A'] = '\u0061\u02BE';
45655 t['\u1FBD'] = '\u0020\u0313';
45656 t['\u1FBF'] = '\u0020\u0313';
45657 t['\u1FC0'] = '\u0020\u0342';
45658 t['\u1FFE'] = '\u0020\u0314';
45659 t['\u2002'] = '\u0020';
45660 t['\u2003'] = '\u0020';
45661 t['\u2004'] = '\u0020';
45662 t['\u2005'] = '\u0020';
45663 t['\u2006'] = '\u0020';
45664 t['\u2008'] = '\u0020';
45665 t['\u2009'] = '\u0020';
45666 t['\u200A'] = '\u0020';
45667 t['\u2017'] = '\u0020\u0333';
45668 t['\u2024'] = '\u002E';
45669 t['\u2025'] = '\u002E\u002E';
45670 t['\u2026'] = '\u002E\u002E\u002E';
45671 t['\u2033'] = '\u2032\u2032';
45672 t['\u2034'] = '\u2032\u2032\u2032';
45673 t['\u2036'] = '\u2035\u2035';
45674 t['\u2037'] = '\u2035\u2035\u2035';
45675 t['\u203C'] = '\u0021\u0021';
45676 t['\u203E'] = '\u0020\u0305';
45677 t['\u2047'] = '\u003F\u003F';
45678 t['\u2048'] = '\u003F\u0021';
45679 t['\u2049'] = '\u0021\u003F';
45680 t['\u2057'] = '\u2032\u2032\u2032\u2032';
45681 t['\u205F'] = '\u0020';
45682 t['\u20A8'] = '\u0052\u0073';
45683 t['\u2100'] = '\u0061\u002F\u0063';
45684 t['\u2101'] = '\u0061\u002F\u0073';
45685 t['\u2103'] = '\u00B0\u0043';
45686 t['\u2105'] = '\u0063\u002F\u006F';
45687 t['\u2106'] = '\u0063\u002F\u0075';
45688 t['\u2107'] = '\u0190';
45689 t['\u2109'] = '\u00B0\u0046';
45690 t['\u2116'] = '\u004E\u006F';
45691 t['\u2121'] = '\u0054\u0045\u004C';
45692 t['\u2135'] = '\u05D0';
45693 t['\u2136'] = '\u05D1';
45694 t['\u2137'] = '\u05D2';
45695 t['\u2138'] = '\u05D3';
45696 t['\u213B'] = '\u0046\u0041\u0058';
45697 t['\u2160'] = '\u0049';
45698 t['\u2161'] = '\u0049\u0049';
45699 t['\u2162'] = '\u0049\u0049\u0049';
45700 t['\u2163'] = '\u0049\u0056';
45701 t['\u2164'] = '\u0056';
45702 t['\u2165'] = '\u0056\u0049';
45703 t['\u2166'] = '\u0056\u0049\u0049';
45704 t['\u2167'] = '\u0056\u0049\u0049\u0049';
45705 t['\u2168'] = '\u0049\u0058';
45706 t['\u2169'] = '\u0058';
45707 t['\u216A'] = '\u0058\u0049';
45708 t['\u216B'] = '\u0058\u0049\u0049';
45709 t['\u216C'] = '\u004C';
45710 t['\u216D'] = '\u0043';
45711 t['\u216E'] = '\u0044';
45712 t['\u216F'] = '\u004D';
45713 t['\u2170'] = '\u0069';
45714 t['\u2171'] = '\u0069\u0069';
45715 t['\u2172'] = '\u0069\u0069\u0069';
45716 t['\u2173'] = '\u0069\u0076';
45717 t['\u2174'] = '\u0076';
45718 t['\u2175'] = '\u0076\u0069';
45719 t['\u2176'] = '\u0076\u0069\u0069';
45720 t['\u2177'] = '\u0076\u0069\u0069\u0069';
45721 t['\u2178'] = '\u0069\u0078';
45722 t['\u2179'] = '\u0078';
45723 t['\u217A'] = '\u0078\u0069';
45724 t['\u217B'] = '\u0078\u0069\u0069';
45725 t['\u217C'] = '\u006C';
45726 t['\u217D'] = '\u0063';
45727 t['\u217E'] = '\u0064';
45728 t['\u217F'] = '\u006D';
45729 t['\u222C'] = '\u222B\u222B';
45730 t['\u222D'] = '\u222B\u222B\u222B';
45731 t['\u222F'] = '\u222E\u222E';
45732 t['\u2230'] = '\u222E\u222E\u222E';
45733 t['\u2474'] = '\u0028\u0031\u0029';
45734 t['\u2475'] = '\u0028\u0032\u0029';
45735 t['\u2476'] = '\u0028\u0033\u0029';
45736 t['\u2477'] = '\u0028\u0034\u0029';
45737 t['\u2478'] = '\u0028\u0035\u0029';
45738 t['\u2479'] = '\u0028\u0036\u0029';
45739 t['\u247A'] = '\u0028\u0037\u0029';
45740 t['\u247B'] = '\u0028\u0038\u0029';
45741 t['\u247C'] = '\u0028\u0039\u0029';
45742 t['\u247D'] = '\u0028\u0031\u0030\u0029';
45743 t['\u247E'] = '\u0028\u0031\u0031\u0029';
45744 t['\u247F'] = '\u0028\u0031\u0032\u0029';
45745 t['\u2480'] = '\u0028\u0031\u0033\u0029';
45746 t['\u2481'] = '\u0028\u0031\u0034\u0029';
45747 t['\u2482'] = '\u0028\u0031\u0035\u0029';
45748 t['\u2483'] = '\u0028\u0031\u0036\u0029';
45749 t['\u2484'] = '\u0028\u0031\u0037\u0029';
45750 t['\u2485'] = '\u0028\u0031\u0038\u0029';
45751 t['\u2486'] = '\u0028\u0031\u0039\u0029';
45752 t['\u2487'] = '\u0028\u0032\u0030\u0029';
45753 t['\u2488'] = '\u0031\u002E';
45754 t['\u2489'] = '\u0032\u002E';
45755 t['\u248A'] = '\u0033\u002E';
45756 t['\u248B'] = '\u0034\u002E';
45757 t['\u248C'] = '\u0035\u002E';
45758 t['\u248D'] = '\u0036\u002E';
45759 t['\u248E'] = '\u0037\u002E';
45760 t['\u248F'] = '\u0038\u002E';
45761 t['\u2490'] = '\u0039\u002E';
45762 t['\u2491'] = '\u0031\u0030\u002E';
45763 t['\u2492'] = '\u0031\u0031\u002E';
45764 t['\u2493'] = '\u0031\u0032\u002E';
45765 t['\u2494'] = '\u0031\u0033\u002E';
45766 t['\u2495'] = '\u0031\u0034\u002E';
45767 t['\u2496'] = '\u0031\u0035\u002E';
45768 t['\u2497'] = '\u0031\u0036\u002E';
45769 t['\u2498'] = '\u0031\u0037\u002E';
45770 t['\u2499'] = '\u0031\u0038\u002E';
45771 t['\u249A'] = '\u0031\u0039\u002E';
45772 t['\u249B'] = '\u0032\u0030\u002E';
45773 t['\u249C'] = '\u0028\u0061\u0029';
45774 t['\u249D'] = '\u0028\u0062\u0029';
45775 t['\u249E'] = '\u0028\u0063\u0029';
45776 t['\u249F'] = '\u0028\u0064\u0029';
45777 t['\u24A0'] = '\u0028\u0065\u0029';
45778 t['\u24A1'] = '\u0028\u0066\u0029';
45779 t['\u24A2'] = '\u0028\u0067\u0029';
45780 t['\u24A3'] = '\u0028\u0068\u0029';
45781 t['\u24A4'] = '\u0028\u0069\u0029';
45782 t['\u24A5'] = '\u0028\u006A\u0029';
45783 t['\u24A6'] = '\u0028\u006B\u0029';
45784 t['\u24A7'] = '\u0028\u006C\u0029';
45785 t['\u24A8'] = '\u0028\u006D\u0029';
45786 t['\u24A9'] = '\u0028\u006E\u0029';
45787 t['\u24AA'] = '\u0028\u006F\u0029';
45788 t['\u24AB'] = '\u0028\u0070\u0029';
45789 t['\u24AC'] = '\u0028\u0071\u0029';
45790 t['\u24AD'] = '\u0028\u0072\u0029';
45791 t['\u24AE'] = '\u0028\u0073\u0029';
45792 t['\u24AF'] = '\u0028\u0074\u0029';
45793 t['\u24B0'] = '\u0028\u0075\u0029';
45794 t['\u24B1'] = '\u0028\u0076\u0029';
45795 t['\u24B2'] = '\u0028\u0077\u0029';
45796 t['\u24B3'] = '\u0028\u0078\u0029';
45797 t['\u24B4'] = '\u0028\u0079\u0029';
45798 t['\u24B5'] = '\u0028\u007A\u0029';
45799 t['\u2A0C'] = '\u222B\u222B\u222B\u222B';
45800 t['\u2A74'] = '\u003A\u003A\u003D';
45801 t['\u2A75'] = '\u003D\u003D';
45802 t['\u2A76'] = '\u003D\u003D\u003D';
45803 t['\u2E9F'] = '\u6BCD';
45804 t['\u2EF3'] = '\u9F9F';
45805 t['\u2F00'] = '\u4E00';
45806 t['\u2F01'] = '\u4E28';
45807 t['\u2F02'] = '\u4E36';
45808 t['\u2F03'] = '\u4E3F';
45809 t['\u2F04'] = '\u4E59';
45810 t['\u2F05'] = '\u4E85';
45811 t['\u2F06'] = '\u4E8C';
45812 t['\u2F07'] = '\u4EA0';
45813 t['\u2F08'] = '\u4EBA';
45814 t['\u2F09'] = '\u513F';
45815 t['\u2F0A'] = '\u5165';
45816 t['\u2F0B'] = '\u516B';
45817 t['\u2F0C'] = '\u5182';
45818 t['\u2F0D'] = '\u5196';
45819 t['\u2F0E'] = '\u51AB';
45820 t['\u2F0F'] = '\u51E0';
45821 t['\u2F10'] = '\u51F5';
45822 t['\u2F11'] = '\u5200';
45823 t['\u2F12'] = '\u529B';
45824 t['\u2F13'] = '\u52F9';
45825 t['\u2F14'] = '\u5315';
45826 t['\u2F15'] = '\u531A';
45827 t['\u2F16'] = '\u5338';
45828 t['\u2F17'] = '\u5341';
45829 t['\u2F18'] = '\u535C';
45830 t['\u2F19'] = '\u5369';
45831 t['\u2F1A'] = '\u5382';
45832 t['\u2F1B'] = '\u53B6';
45833 t['\u2F1C'] = '\u53C8';
45834 t['\u2F1D'] = '\u53E3';
45835 t['\u2F1E'] = '\u56D7';
45836 t['\u2F1F'] = '\u571F';
45837 t['\u2F20'] = '\u58EB';
45838 t['\u2F21'] = '\u5902';
45839 t['\u2F22'] = '\u590A';
45840 t['\u2F23'] = '\u5915';
45841 t['\u2F24'] = '\u5927';
45842 t['\u2F25'] = '\u5973';
45843 t['\u2F26'] = '\u5B50';
45844 t['\u2F27'] = '\u5B80';
45845 t['\u2F28'] = '\u5BF8';
45846 t['\u2F29'] = '\u5C0F';
45847 t['\u2F2A'] = '\u5C22';
45848 t['\u2F2B'] = '\u5C38';
45849 t['\u2F2C'] = '\u5C6E';
45850 t['\u2F2D'] = '\u5C71';
45851 t['\u2F2E'] = '\u5DDB';
45852 t['\u2F2F'] = '\u5DE5';
45853 t['\u2F30'] = '\u5DF1';
45854 t['\u2F31'] = '\u5DFE';
45855 t['\u2F32'] = '\u5E72';
45856 t['\u2F33'] = '\u5E7A';
45857 t['\u2F34'] = '\u5E7F';
45858 t['\u2F35'] = '\u5EF4';
45859 t['\u2F36'] = '\u5EFE';
45860 t['\u2F37'] = '\u5F0B';
45861 t['\u2F38'] = '\u5F13';
45862 t['\u2F39'] = '\u5F50';
45863 t['\u2F3A'] = '\u5F61';
45864 t['\u2F3B'] = '\u5F73';
45865 t['\u2F3C'] = '\u5FC3';
45866 t['\u2F3D'] = '\u6208';
45867 t['\u2F3E'] = '\u6236';
45868 t['\u2F3F'] = '\u624B';
45869 t['\u2F40'] = '\u652F';
45870 t['\u2F41'] = '\u6534';
45871 t['\u2F42'] = '\u6587';
45872 t['\u2F43'] = '\u6597';
45873 t['\u2F44'] = '\u65A4';
45874 t['\u2F45'] = '\u65B9';
45875 t['\u2F46'] = '\u65E0';
45876 t['\u2F47'] = '\u65E5';
45877 t['\u2F48'] = '\u66F0';
45878 t['\u2F49'] = '\u6708';
45879 t['\u2F4A'] = '\u6728';
45880 t['\u2F4B'] = '\u6B20';
45881 t['\u2F4C'] = '\u6B62';
45882 t['\u2F4D'] = '\u6B79';
45883 t['\u2F4E'] = '\u6BB3';
45884 t['\u2F4F'] = '\u6BCB';
45885 t['\u2F50'] = '\u6BD4';
45886 t['\u2F51'] = '\u6BDB';
45887 t['\u2F52'] = '\u6C0F';
45888 t['\u2F53'] = '\u6C14';
45889 t['\u2F54'] = '\u6C34';
45890 t['\u2F55'] = '\u706B';
45891 t['\u2F56'] = '\u722A';
45892 t['\u2F57'] = '\u7236';
45893 t['\u2F58'] = '\u723B';
45894 t['\u2F59'] = '\u723F';
45895 t['\u2F5A'] = '\u7247';
45896 t['\u2F5B'] = '\u7259';
45897 t['\u2F5C'] = '\u725B';
45898 t['\u2F5D'] = '\u72AC';
45899 t['\u2F5E'] = '\u7384';
45900 t['\u2F5F'] = '\u7389';
45901 t['\u2F60'] = '\u74DC';
45902 t['\u2F61'] = '\u74E6';
45903 t['\u2F62'] = '\u7518';
45904 t['\u2F63'] = '\u751F';
45905 t['\u2F64'] = '\u7528';
45906 t['\u2F65'] = '\u7530';
45907 t['\u2F66'] = '\u758B';
45908 t['\u2F67'] = '\u7592';
45909 t['\u2F68'] = '\u7676';
45910 t['\u2F69'] = '\u767D';
45911 t['\u2F6A'] = '\u76AE';
45912 t['\u2F6B'] = '\u76BF';
45913 t['\u2F6C'] = '\u76EE';
45914 t['\u2F6D'] = '\u77DB';
45915 t['\u2F6E'] = '\u77E2';
45916 t['\u2F6F'] = '\u77F3';
45917 t['\u2F70'] = '\u793A';
45918 t['\u2F71'] = '\u79B8';
45919 t['\u2F72'] = '\u79BE';
45920 t['\u2F73'] = '\u7A74';
45921 t['\u2F74'] = '\u7ACB';
45922 t['\u2F75'] = '\u7AF9';
45923 t['\u2F76'] = '\u7C73';
45924 t['\u2F77'] = '\u7CF8';
45925 t['\u2F78'] = '\u7F36';
45926 t['\u2F79'] = '\u7F51';
45927 t['\u2F7A'] = '\u7F8A';
45928 t['\u2F7B'] = '\u7FBD';
45929 t['\u2F7C'] = '\u8001';
45930 t['\u2F7D'] = '\u800C';
45931 t['\u2F7E'] = '\u8012';
45932 t['\u2F7F'] = '\u8033';
45933 t['\u2F80'] = '\u807F';
45934 t['\u2F81'] = '\u8089';
45935 t['\u2F82'] = '\u81E3';
45936 t['\u2F83'] = '\u81EA';
45937 t['\u2F84'] = '\u81F3';
45938 t['\u2F85'] = '\u81FC';
45939 t['\u2F86'] = '\u820C';
45940 t['\u2F87'] = '\u821B';
45941 t['\u2F88'] = '\u821F';
45942 t['\u2F89'] = '\u826E';
45943 t['\u2F8A'] = '\u8272';
45944 t['\u2F8B'] = '\u8278';
45945 t['\u2F8C'] = '\u864D';
45946 t['\u2F8D'] = '\u866B';
45947 t['\u2F8E'] = '\u8840';
45948 t['\u2F8F'] = '\u884C';
45949 t['\u2F90'] = '\u8863';
45950 t['\u2F91'] = '\u897E';
45951 t['\u2F92'] = '\u898B';
45952 t['\u2F93'] = '\u89D2';
45953 t['\u2F94'] = '\u8A00';
45954 t['\u2F95'] = '\u8C37';
45955 t['\u2F96'] = '\u8C46';
45956 t['\u2F97'] = '\u8C55';
45957 t['\u2F98'] = '\u8C78';
45958 t['\u2F99'] = '\u8C9D';
45959 t['\u2F9A'] = '\u8D64';
45960 t['\u2F9B'] = '\u8D70';
45961 t['\u2F9C'] = '\u8DB3';
45962 t['\u2F9D'] = '\u8EAB';
45963 t['\u2F9E'] = '\u8ECA';
45964 t['\u2F9F'] = '\u8F9B';
45965 t['\u2FA0'] = '\u8FB0';
45966 t['\u2FA1'] = '\u8FB5';
45967 t['\u2FA2'] = '\u9091';
45968 t['\u2FA3'] = '\u9149';
45969 t['\u2FA4'] = '\u91C6';
45970 t['\u2FA5'] = '\u91CC';
45971 t['\u2FA6'] = '\u91D1';
45972 t['\u2FA7'] = '\u9577';
45973 t['\u2FA8'] = '\u9580';
45974 t['\u2FA9'] = '\u961C';
45975 t['\u2FAA'] = '\u96B6';
45976 t['\u2FAB'] = '\u96B9';
45977 t['\u2FAC'] = '\u96E8';
45978 t['\u2FAD'] = '\u9751';
45979 t['\u2FAE'] = '\u975E';
45980 t['\u2FAF'] = '\u9762';
45981 t['\u2FB0'] = '\u9769';
45982 t['\u2FB1'] = '\u97CB';
45983 t['\u2FB2'] = '\u97ED';
45984 t['\u2FB3'] = '\u97F3';
45985 t['\u2FB4'] = '\u9801';
45986 t['\u2FB5'] = '\u98A8';
45987 t['\u2FB6'] = '\u98DB';
45988 t['\u2FB7'] = '\u98DF';
45989 t['\u2FB8'] = '\u9996';
45990 t['\u2FB9'] = '\u9999';
45991 t['\u2FBA'] = '\u99AC';
45992 t['\u2FBB'] = '\u9AA8';
45993 t['\u2FBC'] = '\u9AD8';
45994 t['\u2FBD'] = '\u9ADF';
45995 t['\u2FBE'] = '\u9B25';
45996 t['\u2FBF'] = '\u9B2F';
45997 t['\u2FC0'] = '\u9B32';
45998 t['\u2FC1'] = '\u9B3C';
45999 t['\u2FC2'] = '\u9B5A';
46000 t['\u2FC3'] = '\u9CE5';
46001 t['\u2FC4'] = '\u9E75';
46002 t['\u2FC5'] = '\u9E7F';
46003 t['\u2FC6'] = '\u9EA5';
46004 t['\u2FC7'] = '\u9EBB';
46005 t['\u2FC8'] = '\u9EC3';
46006 t['\u2FC9'] = '\u9ECD';
46007 t['\u2FCA'] = '\u9ED1';
46008 t['\u2FCB'] = '\u9EF9';
46009 t['\u2FCC'] = '\u9EFD';
46010 t['\u2FCD'] = '\u9F0E';
46011 t['\u2FCE'] = '\u9F13';
46012 t['\u2FCF'] = '\u9F20';
46013 t['\u2FD0'] = '\u9F3B';
46014 t['\u2FD1'] = '\u9F4A';
46015 t['\u2FD2'] = '\u9F52';
46016 t['\u2FD3'] = '\u9F8D';
46017 t['\u2FD4'] = '\u9F9C';
46018 t['\u2FD5'] = '\u9FA0';
46019 t['\u3036'] = '\u3012';
46020 t['\u3038'] = '\u5341';
46021 t['\u3039'] = '\u5344';
46022 t['\u303A'] = '\u5345';
46023 t['\u309B'] = '\u0020\u3099';
46024 t['\u309C'] = '\u0020\u309A';
46025 t['\u3131'] = '\u1100';
46026 t['\u3132'] = '\u1101';
46027 t['\u3133'] = '\u11AA';
46028 t['\u3134'] = '\u1102';
46029 t['\u3135'] = '\u11AC';
46030 t['\u3136'] = '\u11AD';
46031 t['\u3137'] = '\u1103';
46032 t['\u3138'] = '\u1104';
46033 t['\u3139'] = '\u1105';
46034 t['\u313A'] = '\u11B0';
46035 t['\u313B'] = '\u11B1';
46036 t['\u313C'] = '\u11B2';
46037 t['\u313D'] = '\u11B3';
46038 t['\u313E'] = '\u11B4';
46039 t['\u313F'] = '\u11B5';
46040 t['\u3140'] = '\u111A';
46041 t['\u3141'] = '\u1106';
46042 t['\u3142'] = '\u1107';
46043 t['\u3143'] = '\u1108';
46044 t['\u3144'] = '\u1121';
46045 t['\u3145'] = '\u1109';
46046 t['\u3146'] = '\u110A';
46047 t['\u3147'] = '\u110B';
46048 t['\u3148'] = '\u110C';
46049 t['\u3149'] = '\u110D';
46050 t['\u314A'] = '\u110E';
46051 t['\u314B'] = '\u110F';
46052 t['\u314C'] = '\u1110';
46053 t['\u314D'] = '\u1111';
46054 t['\u314E'] = '\u1112';
46055 t['\u314F'] = '\u1161';
46056 t['\u3150'] = '\u1162';
46057 t['\u3151'] = '\u1163';
46058 t['\u3152'] = '\u1164';
46059 t['\u3153'] = '\u1165';
46060 t['\u3154'] = '\u1166';
46061 t['\u3155'] = '\u1167';
46062 t['\u3156'] = '\u1168';
46063 t['\u3157'] = '\u1169';
46064 t['\u3158'] = '\u116A';
46065 t['\u3159'] = '\u116B';
46066 t['\u315A'] = '\u116C';
46067 t['\u315B'] = '\u116D';
46068 t['\u315C'] = '\u116E';
46069 t['\u315D'] = '\u116F';
46070 t['\u315E'] = '\u1170';
46071 t['\u315F'] = '\u1171';
46072 t['\u3160'] = '\u1172';
46073 t['\u3161'] = '\u1173';
46074 t['\u3162'] = '\u1174';
46075 t['\u3163'] = '\u1175';
46076 t['\u3164'] = '\u1160';
46077 t['\u3165'] = '\u1114';
46078 t['\u3166'] = '\u1115';
46079 t['\u3167'] = '\u11C7';
46080 t['\u3168'] = '\u11C8';
46081 t['\u3169'] = '\u11CC';
46082 t['\u316A'] = '\u11CE';
46083 t['\u316B'] = '\u11D3';
46084 t['\u316C'] = '\u11D7';
46085 t['\u316D'] = '\u11D9';
46086 t['\u316E'] = '\u111C';
46087 t['\u316F'] = '\u11DD';
46088 t['\u3170'] = '\u11DF';
46089 t['\u3171'] = '\u111D';
46090 t['\u3172'] = '\u111E';
46091 t['\u3173'] = '\u1120';
46092 t['\u3174'] = '\u1122';
46093 t['\u3175'] = '\u1123';
46094 t['\u3176'] = '\u1127';
46095 t['\u3177'] = '\u1129';
46096 t['\u3178'] = '\u112B';
46097 t['\u3179'] = '\u112C';
46098 t['\u317A'] = '\u112D';
46099 t['\u317B'] = '\u112E';
46100 t['\u317C'] = '\u112F';
46101 t['\u317D'] = '\u1132';
46102 t['\u317E'] = '\u1136';
46103 t['\u317F'] = '\u1140';
46104 t['\u3180'] = '\u1147';
46105 t['\u3181'] = '\u114C';
46106 t['\u3182'] = '\u11F1';
46107 t['\u3183'] = '\u11F2';
46108 t['\u3184'] = '\u1157';
46109 t['\u3185'] = '\u1158';
46110 t['\u3186'] = '\u1159';
46111 t['\u3187'] = '\u1184';
46112 t['\u3188'] = '\u1185';
46113 t['\u3189'] = '\u1188';
46114 t['\u318A'] = '\u1191';
46115 t['\u318B'] = '\u1192';
46116 t['\u318C'] = '\u1194';
46117 t['\u318D'] = '\u119E';
46118 t['\u318E'] = '\u11A1';
46119 t['\u3200'] = '\u0028\u1100\u0029';
46120 t['\u3201'] = '\u0028\u1102\u0029';
46121 t['\u3202'] = '\u0028\u1103\u0029';
46122 t['\u3203'] = '\u0028\u1105\u0029';
46123 t['\u3204'] = '\u0028\u1106\u0029';
46124 t['\u3205'] = '\u0028\u1107\u0029';
46125 t['\u3206'] = '\u0028\u1109\u0029';
46126 t['\u3207'] = '\u0028\u110B\u0029';
46127 t['\u3208'] = '\u0028\u110C\u0029';
46128 t['\u3209'] = '\u0028\u110E\u0029';
46129 t['\u320A'] = '\u0028\u110F\u0029';
46130 t['\u320B'] = '\u0028\u1110\u0029';
46131 t['\u320C'] = '\u0028\u1111\u0029';
46132 t['\u320D'] = '\u0028\u1112\u0029';
46133 t['\u320E'] = '\u0028\u1100\u1161\u0029';
46134 t['\u320F'] = '\u0028\u1102\u1161\u0029';
46135 t['\u3210'] = '\u0028\u1103\u1161\u0029';
46136 t['\u3211'] = '\u0028\u1105\u1161\u0029';
46137 t['\u3212'] = '\u0028\u1106\u1161\u0029';
46138 t['\u3213'] = '\u0028\u1107\u1161\u0029';
46139 t['\u3214'] = '\u0028\u1109\u1161\u0029';
46140 t['\u3215'] = '\u0028\u110B\u1161\u0029';
46141 t['\u3216'] = '\u0028\u110C\u1161\u0029';
46142 t['\u3217'] = '\u0028\u110E\u1161\u0029';
46143 t['\u3218'] = '\u0028\u110F\u1161\u0029';
46144 t['\u3219'] = '\u0028\u1110\u1161\u0029';
46145 t['\u321A'] = '\u0028\u1111\u1161\u0029';
46146 t['\u321B'] = '\u0028\u1112\u1161\u0029';
46147 t['\u321C'] = '\u0028\u110C\u116E\u0029';
46148 t['\u321D'] = '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029';
46149 t['\u321E'] = '\u0028\u110B\u1169\u1112\u116E\u0029';
46150 t['\u3220'] = '\u0028\u4E00\u0029';
46151 t['\u3221'] = '\u0028\u4E8C\u0029';
46152 t['\u3222'] = '\u0028\u4E09\u0029';
46153 t['\u3223'] = '\u0028\u56DB\u0029';
46154 t['\u3224'] = '\u0028\u4E94\u0029';
46155 t['\u3225'] = '\u0028\u516D\u0029';
46156 t['\u3226'] = '\u0028\u4E03\u0029';
46157 t['\u3227'] = '\u0028\u516B\u0029';
46158 t['\u3228'] = '\u0028\u4E5D\u0029';
46159 t['\u3229'] = '\u0028\u5341\u0029';
46160 t['\u322A'] = '\u0028\u6708\u0029';
46161 t['\u322B'] = '\u0028\u706B\u0029';
46162 t['\u322C'] = '\u0028\u6C34\u0029';
46163 t['\u322D'] = '\u0028\u6728\u0029';
46164 t['\u322E'] = '\u0028\u91D1\u0029';
46165 t['\u322F'] = '\u0028\u571F\u0029';
46166 t['\u3230'] = '\u0028\u65E5\u0029';
46167 t['\u3231'] = '\u0028\u682A\u0029';
46168 t['\u3232'] = '\u0028\u6709\u0029';
46169 t['\u3233'] = '\u0028\u793E\u0029';
46170 t['\u3234'] = '\u0028\u540D\u0029';
46171 t['\u3235'] = '\u0028\u7279\u0029';
46172 t['\u3236'] = '\u0028\u8CA1\u0029';
46173 t['\u3237'] = '\u0028\u795D\u0029';
46174 t['\u3238'] = '\u0028\u52B4\u0029';
46175 t['\u3239'] = '\u0028\u4EE3\u0029';
46176 t['\u323A'] = '\u0028\u547C\u0029';
46177 t['\u323B'] = '\u0028\u5B66\u0029';
46178 t['\u323C'] = '\u0028\u76E3\u0029';
46179 t['\u323D'] = '\u0028\u4F01\u0029';
46180 t['\u323E'] = '\u0028\u8CC7\u0029';
46181 t['\u323F'] = '\u0028\u5354\u0029';
46182 t['\u3240'] = '\u0028\u796D\u0029';
46183 t['\u3241'] = '\u0028\u4F11\u0029';
46184 t['\u3242'] = '\u0028\u81EA\u0029';
46185 t['\u3243'] = '\u0028\u81F3\u0029';
46186 t['\u32C0'] = '\u0031\u6708';
46187 t['\u32C1'] = '\u0032\u6708';
46188 t['\u32C2'] = '\u0033\u6708';
46189 t['\u32C3'] = '\u0034\u6708';
46190 t['\u32C4'] = '\u0035\u6708';
46191 t['\u32C5'] = '\u0036\u6708';
46192 t['\u32C6'] = '\u0037\u6708';
46193 t['\u32C7'] = '\u0038\u6708';
46194 t['\u32C8'] = '\u0039\u6708';
46195 t['\u32C9'] = '\u0031\u0030\u6708';
46196 t['\u32CA'] = '\u0031\u0031\u6708';
46197 t['\u32CB'] = '\u0031\u0032\u6708';
46198 t['\u3358'] = '\u0030\u70B9';
46199 t['\u3359'] = '\u0031\u70B9';
46200 t['\u335A'] = '\u0032\u70B9';
46201 t['\u335B'] = '\u0033\u70B9';
46202 t['\u335C'] = '\u0034\u70B9';
46203 t['\u335D'] = '\u0035\u70B9';
46204 t['\u335E'] = '\u0036\u70B9';
46205 t['\u335F'] = '\u0037\u70B9';
46206 t['\u3360'] = '\u0038\u70B9';
46207 t['\u3361'] = '\u0039\u70B9';
46208 t['\u3362'] = '\u0031\u0030\u70B9';
46209 t['\u3363'] = '\u0031\u0031\u70B9';
46210 t['\u3364'] = '\u0031\u0032\u70B9';
46211 t['\u3365'] = '\u0031\u0033\u70B9';
46212 t['\u3366'] = '\u0031\u0034\u70B9';
46213 t['\u3367'] = '\u0031\u0035\u70B9';
46214 t['\u3368'] = '\u0031\u0036\u70B9';
46215 t['\u3369'] = '\u0031\u0037\u70B9';
46216 t['\u336A'] = '\u0031\u0038\u70B9';
46217 t['\u336B'] = '\u0031\u0039\u70B9';
46218 t['\u336C'] = '\u0032\u0030\u70B9';
46219 t['\u336D'] = '\u0032\u0031\u70B9';
46220 t['\u336E'] = '\u0032\u0032\u70B9';
46221 t['\u336F'] = '\u0032\u0033\u70B9';
46222 t['\u3370'] = '\u0032\u0034\u70B9';
46223 t['\u33E0'] = '\u0031\u65E5';
46224 t['\u33E1'] = '\u0032\u65E5';
46225 t['\u33E2'] = '\u0033\u65E5';
46226 t['\u33E3'] = '\u0034\u65E5';
46227 t['\u33E4'] = '\u0035\u65E5';
46228 t['\u33E5'] = '\u0036\u65E5';
46229 t['\u33E6'] = '\u0037\u65E5';
46230 t['\u33E7'] = '\u0038\u65E5';
46231 t['\u33E8'] = '\u0039\u65E5';
46232 t['\u33E9'] = '\u0031\u0030\u65E5';
46233 t['\u33EA'] = '\u0031\u0031\u65E5';
46234 t['\u33EB'] = '\u0031\u0032\u65E5';
46235 t['\u33EC'] = '\u0031\u0033\u65E5';
46236 t['\u33ED'] = '\u0031\u0034\u65E5';
46237 t['\u33EE'] = '\u0031\u0035\u65E5';
46238 t['\u33EF'] = '\u0031\u0036\u65E5';
46239 t['\u33F0'] = '\u0031\u0037\u65E5';
46240 t['\u33F1'] = '\u0031\u0038\u65E5';
46241 t['\u33F2'] = '\u0031\u0039\u65E5';
46242 t['\u33F3'] = '\u0032\u0030\u65E5';
46243 t['\u33F4'] = '\u0032\u0031\u65E5';
46244 t['\u33F5'] = '\u0032\u0032\u65E5';
46245 t['\u33F6'] = '\u0032\u0033\u65E5';
46246 t['\u33F7'] = '\u0032\u0034\u65E5';
46247 t['\u33F8'] = '\u0032\u0035\u65E5';
46248 t['\u33F9'] = '\u0032\u0036\u65E5';
46249 t['\u33FA'] = '\u0032\u0037\u65E5';
46250 t['\u33FB'] = '\u0032\u0038\u65E5';
46251 t['\u33FC'] = '\u0032\u0039\u65E5';
46252 t['\u33FD'] = '\u0033\u0030\u65E5';
46253 t['\u33FE'] = '\u0033\u0031\u65E5';
46254 t['\uFB00'] = '\u0066\u0066';
46255 t['\uFB01'] = '\u0066\u0069';
46256 t['\uFB02'] = '\u0066\u006C';
46257 t['\uFB03'] = '\u0066\u0066\u0069';
46258 t['\uFB04'] = '\u0066\u0066\u006C';
46259 t['\uFB05'] = '\u017F\u0074';
46260 t['\uFB06'] = '\u0073\u0074';
46261 t['\uFB13'] = '\u0574\u0576';
46262 t['\uFB14'] = '\u0574\u0565';
46263 t['\uFB15'] = '\u0574\u056B';
46264 t['\uFB16'] = '\u057E\u0576';
46265 t['\uFB17'] = '\u0574\u056D';
46266 t['\uFB4F'] = '\u05D0\u05DC';
46267 t['\uFB50'] = '\u0671';
46268 t['\uFB51'] = '\u0671';
46269 t['\uFB52'] = '\u067B';
46270 t['\uFB53'] = '\u067B';
46271 t['\uFB54'] = '\u067B';
46272 t['\uFB55'] = '\u067B';
46273 t['\uFB56'] = '\u067E';
46274 t['\uFB57'] = '\u067E';
46275 t['\uFB58'] = '\u067E';
46276 t['\uFB59'] = '\u067E';
46277 t['\uFB5A'] = '\u0680';
46278 t['\uFB5B'] = '\u0680';
46279 t['\uFB5C'] = '\u0680';
46280 t['\uFB5D'] = '\u0680';
46281 t['\uFB5E'] = '\u067A';
46282 t['\uFB5F'] = '\u067A';
46283 t['\uFB60'] = '\u067A';
46284 t['\uFB61'] = '\u067A';
46285 t['\uFB62'] = '\u067F';
46286 t['\uFB63'] = '\u067F';
46287 t['\uFB64'] = '\u067F';
46288 t['\uFB65'] = '\u067F';
46289 t['\uFB66'] = '\u0679';
46290 t['\uFB67'] = '\u0679';
46291 t['\uFB68'] = '\u0679';
46292 t['\uFB69'] = '\u0679';
46293 t['\uFB6A'] = '\u06A4';
46294 t['\uFB6B'] = '\u06A4';
46295 t['\uFB6C'] = '\u06A4';
46296 t['\uFB6D'] = '\u06A4';
46297 t['\uFB6E'] = '\u06A6';
46298 t['\uFB6F'] = '\u06A6';
46299 t['\uFB70'] = '\u06A6';
46300 t['\uFB71'] = '\u06A6';
46301 t['\uFB72'] = '\u0684';
46302 t['\uFB73'] = '\u0684';
46303 t['\uFB74'] = '\u0684';
46304 t['\uFB75'] = '\u0684';
46305 t['\uFB76'] = '\u0683';
46306 t['\uFB77'] = '\u0683';
46307 t['\uFB78'] = '\u0683';
46308 t['\uFB79'] = '\u0683';
46309 t['\uFB7A'] = '\u0686';
46310 t['\uFB7B'] = '\u0686';
46311 t['\uFB7C'] = '\u0686';
46312 t['\uFB7D'] = '\u0686';
46313 t['\uFB7E'] = '\u0687';
46314 t['\uFB7F'] = '\u0687';
46315 t['\uFB80'] = '\u0687';
46316 t['\uFB81'] = '\u0687';
46317 t['\uFB82'] = '\u068D';
46318 t['\uFB83'] = '\u068D';
46319 t['\uFB84'] = '\u068C';
46320 t['\uFB85'] = '\u068C';
46321 t['\uFB86'] = '\u068E';
46322 t['\uFB87'] = '\u068E';
46323 t['\uFB88'] = '\u0688';
46324 t['\uFB89'] = '\u0688';
46325 t['\uFB8A'] = '\u0698';
46326 t['\uFB8B'] = '\u0698';
46327 t['\uFB8C'] = '\u0691';
46328 t['\uFB8D'] = '\u0691';
46329 t['\uFB8E'] = '\u06A9';
46330 t['\uFB8F'] = '\u06A9';
46331 t['\uFB90'] = '\u06A9';
46332 t['\uFB91'] = '\u06A9';
46333 t['\uFB92'] = '\u06AF';
46334 t['\uFB93'] = '\u06AF';
46335 t['\uFB94'] = '\u06AF';
46336 t['\uFB95'] = '\u06AF';
46337 t['\uFB96'] = '\u06B3';
46338 t['\uFB97'] = '\u06B3';
46339 t['\uFB98'] = '\u06B3';
46340 t['\uFB99'] = '\u06B3';
46341 t['\uFB9A'] = '\u06B1';
46342 t['\uFB9B'] = '\u06B1';
46343 t['\uFB9C'] = '\u06B1';
46344 t['\uFB9D'] = '\u06B1';
46345 t['\uFB9E'] = '\u06BA';
46346 t['\uFB9F'] = '\u06BA';
46347 t['\uFBA0'] = '\u06BB';
46348 t['\uFBA1'] = '\u06BB';
46349 t['\uFBA2'] = '\u06BB';
46350 t['\uFBA3'] = '\u06BB';
46351 t['\uFBA4'] = '\u06C0';
46352 t['\uFBA5'] = '\u06C0';
46353 t['\uFBA6'] = '\u06C1';
46354 t['\uFBA7'] = '\u06C1';
46355 t['\uFBA8'] = '\u06C1';
46356 t['\uFBA9'] = '\u06C1';
46357 t['\uFBAA'] = '\u06BE';
46358 t['\uFBAB'] = '\u06BE';
46359 t['\uFBAC'] = '\u06BE';
46360 t['\uFBAD'] = '\u06BE';
46361 t['\uFBAE'] = '\u06D2';
46362 t['\uFBAF'] = '\u06D2';
46363 t['\uFBB0'] = '\u06D3';
46364 t['\uFBB1'] = '\u06D3';
46365 t['\uFBD3'] = '\u06AD';
46366 t['\uFBD4'] = '\u06AD';
46367 t['\uFBD5'] = '\u06AD';
46368 t['\uFBD6'] = '\u06AD';
46369 t['\uFBD7'] = '\u06C7';
46370 t['\uFBD8'] = '\u06C7';
46371 t['\uFBD9'] = '\u06C6';
46372 t['\uFBDA'] = '\u06C6';
46373 t['\uFBDB'] = '\u06C8';
46374 t['\uFBDC'] = '\u06C8';
46375 t['\uFBDD'] = '\u0677';
46376 t['\uFBDE'] = '\u06CB';
46377 t['\uFBDF'] = '\u06CB';
46378 t['\uFBE0'] = '\u06C5';
46379 t['\uFBE1'] = '\u06C5';
46380 t['\uFBE2'] = '\u06C9';
46381 t['\uFBE3'] = '\u06C9';
46382 t['\uFBE4'] = '\u06D0';
46383 t['\uFBE5'] = '\u06D0';
46384 t['\uFBE6'] = '\u06D0';
46385 t['\uFBE7'] = '\u06D0';
46386 t['\uFBE8'] = '\u0649';
46387 t['\uFBE9'] = '\u0649';
46388 t['\uFBEA'] = '\u0626\u0627';
46389 t['\uFBEB'] = '\u0626\u0627';
46390 t['\uFBEC'] = '\u0626\u06D5';
46391 t['\uFBED'] = '\u0626\u06D5';
46392 t['\uFBEE'] = '\u0626\u0648';
46393 t['\uFBEF'] = '\u0626\u0648';
46394 t['\uFBF0'] = '\u0626\u06C7';
46395 t['\uFBF1'] = '\u0626\u06C7';
46396 t['\uFBF2'] = '\u0626\u06C6';
46397 t['\uFBF3'] = '\u0626\u06C6';
46398 t['\uFBF4'] = '\u0626\u06C8';
46399 t['\uFBF5'] = '\u0626\u06C8';
46400 t['\uFBF6'] = '\u0626\u06D0';
46401 t['\uFBF7'] = '\u0626\u06D0';
46402 t['\uFBF8'] = '\u0626\u06D0';
46403 t['\uFBF9'] = '\u0626\u0649';
46404 t['\uFBFA'] = '\u0626\u0649';
46405 t['\uFBFB'] = '\u0626\u0649';
46406 t['\uFBFC'] = '\u06CC';
46407 t['\uFBFD'] = '\u06CC';
46408 t['\uFBFE'] = '\u06CC';
46409 t['\uFBFF'] = '\u06CC';
46410 t['\uFC00'] = '\u0626\u062C';
46411 t['\uFC01'] = '\u0626\u062D';
46412 t['\uFC02'] = '\u0626\u0645';
46413 t['\uFC03'] = '\u0626\u0649';
46414 t['\uFC04'] = '\u0626\u064A';
46415 t['\uFC05'] = '\u0628\u062C';
46416 t['\uFC06'] = '\u0628\u062D';
46417 t['\uFC07'] = '\u0628\u062E';
46418 t['\uFC08'] = '\u0628\u0645';
46419 t['\uFC09'] = '\u0628\u0649';
46420 t['\uFC0A'] = '\u0628\u064A';
46421 t['\uFC0B'] = '\u062A\u062C';
46422 t['\uFC0C'] = '\u062A\u062D';
46423 t['\uFC0D'] = '\u062A\u062E';
46424 t['\uFC0E'] = '\u062A\u0645';
46425 t['\uFC0F'] = '\u062A\u0649';
46426 t['\uFC10'] = '\u062A\u064A';
46427 t['\uFC11'] = '\u062B\u062C';
46428 t['\uFC12'] = '\u062B\u0645';
46429 t['\uFC13'] = '\u062B\u0649';
46430 t['\uFC14'] = '\u062B\u064A';
46431 t['\uFC15'] = '\u062C\u062D';
46432 t['\uFC16'] = '\u062C\u0645';
46433 t['\uFC17'] = '\u062D\u062C';
46434 t['\uFC18'] = '\u062D\u0645';
46435 t['\uFC19'] = '\u062E\u062C';
46436 t['\uFC1A'] = '\u062E\u062D';
46437 t['\uFC1B'] = '\u062E\u0645';
46438 t['\uFC1C'] = '\u0633\u062C';
46439 t['\uFC1D'] = '\u0633\u062D';
46440 t['\uFC1E'] = '\u0633\u062E';
46441 t['\uFC1F'] = '\u0633\u0645';
46442 t['\uFC20'] = '\u0635\u062D';
46443 t['\uFC21'] = '\u0635\u0645';
46444 t['\uFC22'] = '\u0636\u062C';
46445 t['\uFC23'] = '\u0636\u062D';
46446 t['\uFC24'] = '\u0636\u062E';
46447 t['\uFC25'] = '\u0636\u0645';
46448 t['\uFC26'] = '\u0637\u062D';
46449 t['\uFC27'] = '\u0637\u0645';
46450 t['\uFC28'] = '\u0638\u0645';
46451 t['\uFC29'] = '\u0639\u062C';
46452 t['\uFC2A'] = '\u0639\u0645';
46453 t['\uFC2B'] = '\u063A\u062C';
46454 t['\uFC2C'] = '\u063A\u0645';
46455 t['\uFC2D'] = '\u0641\u062C';
46456 t['\uFC2E'] = '\u0641\u062D';
46457 t['\uFC2F'] = '\u0641\u062E';
46458 t['\uFC30'] = '\u0641\u0645';
46459 t['\uFC31'] = '\u0641\u0649';
46460 t['\uFC32'] = '\u0641\u064A';
46461 t['\uFC33'] = '\u0642\u062D';
46462 t['\uFC34'] = '\u0642\u0645';
46463 t['\uFC35'] = '\u0642\u0649';
46464 t['\uFC36'] = '\u0642\u064A';
46465 t['\uFC37'] = '\u0643\u0627';
46466 t['\uFC38'] = '\u0643\u062C';
46467 t['\uFC39'] = '\u0643\u062D';
46468 t['\uFC3A'] = '\u0643\u062E';
46469 t['\uFC3B'] = '\u0643\u0644';
46470 t['\uFC3C'] = '\u0643\u0645';
46471 t['\uFC3D'] = '\u0643\u0649';
46472 t['\uFC3E'] = '\u0643\u064A';
46473 t['\uFC3F'] = '\u0644\u062C';
46474 t['\uFC40'] = '\u0644\u062D';
46475 t['\uFC41'] = '\u0644\u062E';
46476 t['\uFC42'] = '\u0644\u0645';
46477 t['\uFC43'] = '\u0644\u0649';
46478 t['\uFC44'] = '\u0644\u064A';
46479 t['\uFC45'] = '\u0645\u062C';
46480 t['\uFC46'] = '\u0645\u062D';
46481 t['\uFC47'] = '\u0645\u062E';
46482 t['\uFC48'] = '\u0645\u0645';
46483 t['\uFC49'] = '\u0645\u0649';
46484 t['\uFC4A'] = '\u0645\u064A';
46485 t['\uFC4B'] = '\u0646\u062C';
46486 t['\uFC4C'] = '\u0646\u062D';
46487 t['\uFC4D'] = '\u0646\u062E';
46488 t['\uFC4E'] = '\u0646\u0645';
46489 t['\uFC4F'] = '\u0646\u0649';
46490 t['\uFC50'] = '\u0646\u064A';
46491 t['\uFC51'] = '\u0647\u062C';
46492 t['\uFC52'] = '\u0647\u0645';
46493 t['\uFC53'] = '\u0647\u0649';
46494 t['\uFC54'] = '\u0647\u064A';
46495 t['\uFC55'] = '\u064A\u062C';
46496 t['\uFC56'] = '\u064A\u062D';
46497 t['\uFC57'] = '\u064A\u062E';
46498 t['\uFC58'] = '\u064A\u0645';
46499 t['\uFC59'] = '\u064A\u0649';
46500 t['\uFC5A'] = '\u064A\u064A';
46501 t['\uFC5B'] = '\u0630\u0670';
46502 t['\uFC5C'] = '\u0631\u0670';
46503 t['\uFC5D'] = '\u0649\u0670';
46504 t['\uFC5E'] = '\u0020\u064C\u0651';
46505 t['\uFC5F'] = '\u0020\u064D\u0651';
46506 t['\uFC60'] = '\u0020\u064E\u0651';
46507 t['\uFC61'] = '\u0020\u064F\u0651';
46508 t['\uFC62'] = '\u0020\u0650\u0651';
46509 t['\uFC63'] = '\u0020\u0651\u0670';
46510 t['\uFC64'] = '\u0626\u0631';
46511 t['\uFC65'] = '\u0626\u0632';
46512 t['\uFC66'] = '\u0626\u0645';
46513 t['\uFC67'] = '\u0626\u0646';
46514 t['\uFC68'] = '\u0626\u0649';
46515 t['\uFC69'] = '\u0626\u064A';
46516 t['\uFC6A'] = '\u0628\u0631';
46517 t['\uFC6B'] = '\u0628\u0632';
46518 t['\uFC6C'] = '\u0628\u0645';
46519 t['\uFC6D'] = '\u0628\u0646';
46520 t['\uFC6E'] = '\u0628\u0649';
46521 t['\uFC6F'] = '\u0628\u064A';
46522 t['\uFC70'] = '\u062A\u0631';
46523 t['\uFC71'] = '\u062A\u0632';
46524 t['\uFC72'] = '\u062A\u0645';
46525 t['\uFC73'] = '\u062A\u0646';
46526 t['\uFC74'] = '\u062A\u0649';
46527 t['\uFC75'] = '\u062A\u064A';
46528 t['\uFC76'] = '\u062B\u0631';
46529 t['\uFC77'] = '\u062B\u0632';
46530 t['\uFC78'] = '\u062B\u0645';
46531 t['\uFC79'] = '\u062B\u0646';
46532 t['\uFC7A'] = '\u062B\u0649';
46533 t['\uFC7B'] = '\u062B\u064A';
46534 t['\uFC7C'] = '\u0641\u0649';
46535 t['\uFC7D'] = '\u0641\u064A';
46536 t['\uFC7E'] = '\u0642\u0649';
46537 t['\uFC7F'] = '\u0642\u064A';
46538 t['\uFC80'] = '\u0643\u0627';
46539 t['\uFC81'] = '\u0643\u0644';
46540 t['\uFC82'] = '\u0643\u0645';
46541 t['\uFC83'] = '\u0643\u0649';
46542 t['\uFC84'] = '\u0643\u064A';
46543 t['\uFC85'] = '\u0644\u0645';
46544 t['\uFC86'] = '\u0644\u0649';
46545 t['\uFC87'] = '\u0644\u064A';
46546 t['\uFC88'] = '\u0645\u0627';
46547 t['\uFC89'] = '\u0645\u0645';
46548 t['\uFC8A'] = '\u0646\u0631';
46549 t['\uFC8B'] = '\u0646\u0632';
46550 t['\uFC8C'] = '\u0646\u0645';
46551 t['\uFC8D'] = '\u0646\u0646';
46552 t['\uFC8E'] = '\u0646\u0649';
46553 t['\uFC8F'] = '\u0646\u064A';
46554 t['\uFC90'] = '\u0649\u0670';
46555 t['\uFC91'] = '\u064A\u0631';
46556 t['\uFC92'] = '\u064A\u0632';
46557 t['\uFC93'] = '\u064A\u0645';
46558 t['\uFC94'] = '\u064A\u0646';
46559 t['\uFC95'] = '\u064A\u0649';
46560 t['\uFC96'] = '\u064A\u064A';
46561 t['\uFC97'] = '\u0626\u062C';
46562 t['\uFC98'] = '\u0626\u062D';
46563 t['\uFC99'] = '\u0626\u062E';
46564 t['\uFC9A'] = '\u0626\u0645';
46565 t['\uFC9B'] = '\u0626\u0647';
46566 t['\uFC9C'] = '\u0628\u062C';
46567 t['\uFC9D'] = '\u0628\u062D';
46568 t['\uFC9E'] = '\u0628\u062E';
46569 t['\uFC9F'] = '\u0628\u0645';
46570 t['\uFCA0'] = '\u0628\u0647';
46571 t['\uFCA1'] = '\u062A\u062C';
46572 t['\uFCA2'] = '\u062A\u062D';
46573 t['\uFCA3'] = '\u062A\u062E';
46574 t['\uFCA4'] = '\u062A\u0645';
46575 t['\uFCA5'] = '\u062A\u0647';
46576 t['\uFCA6'] = '\u062B\u0645';
46577 t['\uFCA7'] = '\u062C\u062D';
46578 t['\uFCA8'] = '\u062C\u0645';
46579 t['\uFCA9'] = '\u062D\u062C';
46580 t['\uFCAA'] = '\u062D\u0645';
46581 t['\uFCAB'] = '\u062E\u062C';
46582 t['\uFCAC'] = '\u062E\u0645';
46583 t['\uFCAD'] = '\u0633\u062C';
46584 t['\uFCAE'] = '\u0633\u062D';
46585 t['\uFCAF'] = '\u0633\u062E';
46586 t['\uFCB0'] = '\u0633\u0645';
46587 t['\uFCB1'] = '\u0635\u062D';
46588 t['\uFCB2'] = '\u0635\u062E';
46589 t['\uFCB3'] = '\u0635\u0645';
46590 t['\uFCB4'] = '\u0636\u062C';
46591 t['\uFCB5'] = '\u0636\u062D';
46592 t['\uFCB6'] = '\u0636\u062E';
46593 t['\uFCB7'] = '\u0636\u0645';
46594 t['\uFCB8'] = '\u0637\u062D';
46595 t['\uFCB9'] = '\u0638\u0645';
46596 t['\uFCBA'] = '\u0639\u062C';
46597 t['\uFCBB'] = '\u0639\u0645';
46598 t['\uFCBC'] = '\u063A\u062C';
46599 t['\uFCBD'] = '\u063A\u0645';
46600 t['\uFCBE'] = '\u0641\u062C';
46601 t['\uFCBF'] = '\u0641\u062D';
46602 t['\uFCC0'] = '\u0641\u062E';
46603 t['\uFCC1'] = '\u0641\u0645';
46604 t['\uFCC2'] = '\u0642\u062D';
46605 t['\uFCC3'] = '\u0642\u0645';
46606 t['\uFCC4'] = '\u0643\u062C';
46607 t['\uFCC5'] = '\u0643\u062D';
46608 t['\uFCC6'] = '\u0643\u062E';
46609 t['\uFCC7'] = '\u0643\u0644';
46610 t['\uFCC8'] = '\u0643\u0645';
46611 t['\uFCC9'] = '\u0644\u062C';
46612 t['\uFCCA'] = '\u0644\u062D';
46613 t['\uFCCB'] = '\u0644\u062E';
46614 t['\uFCCC'] = '\u0644\u0645';
46615 t['\uFCCD'] = '\u0644\u0647';
46616 t['\uFCCE'] = '\u0645\u062C';
46617 t['\uFCCF'] = '\u0645\u062D';
46618 t['\uFCD0'] = '\u0645\u062E';
46619 t['\uFCD1'] = '\u0645\u0645';
46620 t['\uFCD2'] = '\u0646\u062C';
46621 t['\uFCD3'] = '\u0646\u062D';
46622 t['\uFCD4'] = '\u0646\u062E';
46623 t['\uFCD5'] = '\u0646\u0645';
46624 t['\uFCD6'] = '\u0646\u0647';
46625 t['\uFCD7'] = '\u0647\u062C';
46626 t['\uFCD8'] = '\u0647\u0645';
46627 t['\uFCD9'] = '\u0647\u0670';
46628 t['\uFCDA'] = '\u064A\u062C';
46629 t['\uFCDB'] = '\u064A\u062D';
46630 t['\uFCDC'] = '\u064A\u062E';
46631 t['\uFCDD'] = '\u064A\u0645';
46632 t['\uFCDE'] = '\u064A\u0647';
46633 t['\uFCDF'] = '\u0626\u0645';
46634 t['\uFCE0'] = '\u0626\u0647';
46635 t['\uFCE1'] = '\u0628\u0645';
46636 t['\uFCE2'] = '\u0628\u0647';
46637 t['\uFCE3'] = '\u062A\u0645';
46638 t['\uFCE4'] = '\u062A\u0647';
46639 t['\uFCE5'] = '\u062B\u0645';
46640 t['\uFCE6'] = '\u062B\u0647';
46641 t['\uFCE7'] = '\u0633\u0645';
46642 t['\uFCE8'] = '\u0633\u0647';
46643 t['\uFCE9'] = '\u0634\u0645';
46644 t['\uFCEA'] = '\u0634\u0647';
46645 t['\uFCEB'] = '\u0643\u0644';
46646 t['\uFCEC'] = '\u0643\u0645';
46647 t['\uFCED'] = '\u0644\u0645';
46648 t['\uFCEE'] = '\u0646\u0645';
46649 t['\uFCEF'] = '\u0646\u0647';
46650 t['\uFCF0'] = '\u064A\u0645';
46651 t['\uFCF1'] = '\u064A\u0647';
46652 t['\uFCF2'] = '\u0640\u064E\u0651';
46653 t['\uFCF3'] = '\u0640\u064F\u0651';
46654 t['\uFCF4'] = '\u0640\u0650\u0651';
46655 t['\uFCF5'] = '\u0637\u0649';
46656 t['\uFCF6'] = '\u0637\u064A';
46657 t['\uFCF7'] = '\u0639\u0649';
46658 t['\uFCF8'] = '\u0639\u064A';
46659 t['\uFCF9'] = '\u063A\u0649';
46660 t['\uFCFA'] = '\u063A\u064A';
46661 t['\uFCFB'] = '\u0633\u0649';
46662 t['\uFCFC'] = '\u0633\u064A';
46663 t['\uFCFD'] = '\u0634\u0649';
46664 t['\uFCFE'] = '\u0634\u064A';
46665 t['\uFCFF'] = '\u062D\u0649';
46666 t['\uFD00'] = '\u062D\u064A';
46667 t['\uFD01'] = '\u062C\u0649';
46668 t['\uFD02'] = '\u062C\u064A';
46669 t['\uFD03'] = '\u062E\u0649';
46670 t['\uFD04'] = '\u062E\u064A';
46671 t['\uFD05'] = '\u0635\u0649';
46672 t['\uFD06'] = '\u0635\u064A';
46673 t['\uFD07'] = '\u0636\u0649';
46674 t['\uFD08'] = '\u0636\u064A';
46675 t['\uFD09'] = '\u0634\u062C';
46676 t['\uFD0A'] = '\u0634\u062D';
46677 t['\uFD0B'] = '\u0634\u062E';
46678 t['\uFD0C'] = '\u0634\u0645';
46679 t['\uFD0D'] = '\u0634\u0631';
46680 t['\uFD0E'] = '\u0633\u0631';
46681 t['\uFD0F'] = '\u0635\u0631';
46682 t['\uFD10'] = '\u0636\u0631';
46683 t['\uFD11'] = '\u0637\u0649';
46684 t['\uFD12'] = '\u0637\u064A';
46685 t['\uFD13'] = '\u0639\u0649';
46686 t['\uFD14'] = '\u0639\u064A';
46687 t['\uFD15'] = '\u063A\u0649';
46688 t['\uFD16'] = '\u063A\u064A';
46689 t['\uFD17'] = '\u0633\u0649';
46690 t['\uFD18'] = '\u0633\u064A';
46691 t['\uFD19'] = '\u0634\u0649';
46692 t['\uFD1A'] = '\u0634\u064A';
46693 t['\uFD1B'] = '\u062D\u0649';
46694 t['\uFD1C'] = '\u062D\u064A';
46695 t['\uFD1D'] = '\u062C\u0649';
46696 t['\uFD1E'] = '\u062C\u064A';
46697 t['\uFD1F'] = '\u062E\u0649';
46698 t['\uFD20'] = '\u062E\u064A';
46699 t['\uFD21'] = '\u0635\u0649';
46700 t['\uFD22'] = '\u0635\u064A';
46701 t['\uFD23'] = '\u0636\u0649';
46702 t['\uFD24'] = '\u0636\u064A';
46703 t['\uFD25'] = '\u0634\u062C';
46704 t['\uFD26'] = '\u0634\u062D';
46705 t['\uFD27'] = '\u0634\u062E';
46706 t['\uFD28'] = '\u0634\u0645';
46707 t['\uFD29'] = '\u0634\u0631';
46708 t['\uFD2A'] = '\u0633\u0631';
46709 t['\uFD2B'] = '\u0635\u0631';
46710 t['\uFD2C'] = '\u0636\u0631';
46711 t['\uFD2D'] = '\u0634\u062C';
46712 t['\uFD2E'] = '\u0634\u062D';
46713 t['\uFD2F'] = '\u0634\u062E';
46714 t['\uFD30'] = '\u0634\u0645';
46715 t['\uFD31'] = '\u0633\u0647';
46716 t['\uFD32'] = '\u0634\u0647';
46717 t['\uFD33'] = '\u0637\u0645';
46718 t['\uFD34'] = '\u0633\u062C';
46719 t['\uFD35'] = '\u0633\u062D';
46720 t['\uFD36'] = '\u0633\u062E';
46721 t['\uFD37'] = '\u0634\u062C';
46722 t['\uFD38'] = '\u0634\u062D';
46723 t['\uFD39'] = '\u0634\u062E';
46724 t['\uFD3A'] = '\u0637\u0645';
46725 t['\uFD3B'] = '\u0638\u0645';
46726 t['\uFD3C'] = '\u0627\u064B';
46727 t['\uFD3D'] = '\u0627\u064B';
46728 t['\uFD50'] = '\u062A\u062C\u0645';
46729 t['\uFD51'] = '\u062A\u062D\u062C';
46730 t['\uFD52'] = '\u062A\u062D\u062C';
46731 t['\uFD53'] = '\u062A\u062D\u0645';
46732 t['\uFD54'] = '\u062A\u062E\u0645';
46733 t['\uFD55'] = '\u062A\u0645\u062C';
46734 t['\uFD56'] = '\u062A\u0645\u062D';
46735 t['\uFD57'] = '\u062A\u0645\u062E';
46736 t['\uFD58'] = '\u062C\u0645\u062D';
46737 t['\uFD59'] = '\u062C\u0645\u062D';
46738 t['\uFD5A'] = '\u062D\u0645\u064A';
46739 t['\uFD5B'] = '\u062D\u0645\u0649';
46740 t['\uFD5C'] = '\u0633\u062D\u062C';
46741 t['\uFD5D'] = '\u0633\u062C\u062D';
46742 t['\uFD5E'] = '\u0633\u062C\u0649';
46743 t['\uFD5F'] = '\u0633\u0645\u062D';
46744 t['\uFD60'] = '\u0633\u0645\u062D';
46745 t['\uFD61'] = '\u0633\u0645\u062C';
46746 t['\uFD62'] = '\u0633\u0645\u0645';
46747 t['\uFD63'] = '\u0633\u0645\u0645';
46748 t['\uFD64'] = '\u0635\u062D\u062D';
46749 t['\uFD65'] = '\u0635\u062D\u062D';
46750 t['\uFD66'] = '\u0635\u0645\u0645';
46751 t['\uFD67'] = '\u0634\u062D\u0645';
46752 t['\uFD68'] = '\u0634\u062D\u0645';
46753 t['\uFD69'] = '\u0634\u062C\u064A';
46754 t['\uFD6A'] = '\u0634\u0645\u062E';
46755 t['\uFD6B'] = '\u0634\u0645\u062E';
46756 t['\uFD6C'] = '\u0634\u0645\u0645';
46757 t['\uFD6D'] = '\u0634\u0645\u0645';
46758 t['\uFD6E'] = '\u0636\u062D\u0649';
46759 t['\uFD6F'] = '\u0636\u062E\u0645';
46760 t['\uFD70'] = '\u0636\u062E\u0645';
46761 t['\uFD71'] = '\u0637\u0645\u062D';
46762 t['\uFD72'] = '\u0637\u0645\u062D';
46763 t['\uFD73'] = '\u0637\u0645\u0645';
46764 t['\uFD74'] = '\u0637\u0645\u064A';
46765 t['\uFD75'] = '\u0639\u062C\u0645';
46766 t['\uFD76'] = '\u0639\u0645\u0645';
46767 t['\uFD77'] = '\u0639\u0645\u0645';
46768 t['\uFD78'] = '\u0639\u0645\u0649';
46769 t['\uFD79'] = '\u063A\u0645\u0645';
46770 t['\uFD7A'] = '\u063A\u0645\u064A';
46771 t['\uFD7B'] = '\u063A\u0645\u0649';
46772 t['\uFD7C'] = '\u0641\u062E\u0645';
46773 t['\uFD7D'] = '\u0641\u062E\u0645';
46774 t['\uFD7E'] = '\u0642\u0645\u062D';
46775 t['\uFD7F'] = '\u0642\u0645\u0645';
46776 t['\uFD80'] = '\u0644\u062D\u0645';
46777 t['\uFD81'] = '\u0644\u062D\u064A';
46778 t['\uFD82'] = '\u0644\u062D\u0649';
46779 t['\uFD83'] = '\u0644\u062C\u062C';
46780 t['\uFD84'] = '\u0644\u062C\u062C';
46781 t['\uFD85'] = '\u0644\u062E\u0645';
46782 t['\uFD86'] = '\u0644\u062E\u0645';
46783 t['\uFD87'] = '\u0644\u0645\u062D';
46784 t['\uFD88'] = '\u0644\u0645\u062D';
46785 t['\uFD89'] = '\u0645\u062D\u062C';
46786 t['\uFD8A'] = '\u0645\u062D\u0645';
46787 t['\uFD8B'] = '\u0645\u062D\u064A';
46788 t['\uFD8C'] = '\u0645\u062C\u062D';
46789 t['\uFD8D'] = '\u0645\u062C\u0645';
46790 t['\uFD8E'] = '\u0645\u062E\u062C';
46791 t['\uFD8F'] = '\u0645\u062E\u0645';
46792 t['\uFD92'] = '\u0645\u062C\u062E';
46793 t['\uFD93'] = '\u0647\u0645\u062C';
46794 t['\uFD94'] = '\u0647\u0645\u0645';
46795 t['\uFD95'] = '\u0646\u062D\u0645';
46796 t['\uFD96'] = '\u0646\u062D\u0649';
46797 t['\uFD97'] = '\u0646\u062C\u0645';
46798 t['\uFD98'] = '\u0646\u062C\u0645';
46799 t['\uFD99'] = '\u0646\u062C\u0649';
46800 t['\uFD9A'] = '\u0646\u0645\u064A';
46801 t['\uFD9B'] = '\u0646\u0645\u0649';
46802 t['\uFD9C'] = '\u064A\u0645\u0645';
46803 t['\uFD9D'] = '\u064A\u0645\u0645';
46804 t['\uFD9E'] = '\u0628\u062E\u064A';
46805 t['\uFD9F'] = '\u062A\u062C\u064A';
46806 t['\uFDA0'] = '\u062A\u062C\u0649';
46807 t['\uFDA1'] = '\u062A\u062E\u064A';
46808 t['\uFDA2'] = '\u062A\u062E\u0649';
46809 t['\uFDA3'] = '\u062A\u0645\u064A';
46810 t['\uFDA4'] = '\u062A\u0645\u0649';
46811 t['\uFDA5'] = '\u062C\u0645\u064A';
46812 t['\uFDA6'] = '\u062C\u062D\u0649';
46813 t['\uFDA7'] = '\u062C\u0645\u0649';
46814 t['\uFDA8'] = '\u0633\u062E\u0649';
46815 t['\uFDA9'] = '\u0635\u062D\u064A';
46816 t['\uFDAA'] = '\u0634\u062D\u064A';
46817 t['\uFDAB'] = '\u0636\u062D\u064A';
46818 t['\uFDAC'] = '\u0644\u062C\u064A';
46819 t['\uFDAD'] = '\u0644\u0645\u064A';
46820 t['\uFDAE'] = '\u064A\u062D\u064A';
46821 t['\uFDAF'] = '\u064A\u062C\u064A';
46822 t['\uFDB0'] = '\u064A\u0645\u064A';
46823 t['\uFDB1'] = '\u0645\u0645\u064A';
46824 t['\uFDB2'] = '\u0642\u0645\u064A';
46825 t['\uFDB3'] = '\u0646\u062D\u064A';
46826 t['\uFDB4'] = '\u0642\u0645\u062D';
46827 t['\uFDB5'] = '\u0644\u062D\u0645';
46828 t['\uFDB6'] = '\u0639\u0645\u064A';
46829 t['\uFDB7'] = '\u0643\u0645\u064A';
46830 t['\uFDB8'] = '\u0646\u062C\u062D';
46831 t['\uFDB9'] = '\u0645\u062E\u064A';
46832 t['\uFDBA'] = '\u0644\u062C\u0645';
46833 t['\uFDBB'] = '\u0643\u0645\u0645';
46834 t['\uFDBC'] = '\u0644\u062C\u0645';
46835 t['\uFDBD'] = '\u0646\u062C\u062D';
46836 t['\uFDBE'] = '\u062C\u062D\u064A';
46837 t['\uFDBF'] = '\u062D\u062C\u064A';
46838 t['\uFDC0'] = '\u0645\u062C\u064A';
46839 t['\uFDC1'] = '\u0641\u0645\u064A';
46840 t['\uFDC2'] = '\u0628\u062D\u064A';
46841 t['\uFDC3'] = '\u0643\u0645\u0645';
46842 t['\uFDC4'] = '\u0639\u062C\u0645';
46843 t['\uFDC5'] = '\u0635\u0645\u0645';
46844 t['\uFDC6'] = '\u0633\u062E\u064A';
46845 t['\uFDC7'] = '\u0646\u062C\u064A';
46846 t['\uFE49'] = '\u203E';
46847 t['\uFE4A'] = '\u203E';
46848 t['\uFE4B'] = '\u203E';
46849 t['\uFE4C'] = '\u203E';
46850 t['\uFE4D'] = '\u005F';
46851 t['\uFE4E'] = '\u005F';
46852 t['\uFE4F'] = '\u005F';
46853 t['\uFE80'] = '\u0621';
46854 t['\uFE81'] = '\u0622';
46855 t['\uFE82'] = '\u0622';
46856 t['\uFE83'] = '\u0623';
46857 t['\uFE84'] = '\u0623';
46858 t['\uFE85'] = '\u0624';
46859 t['\uFE86'] = '\u0624';
46860 t['\uFE87'] = '\u0625';
46861 t['\uFE88'] = '\u0625';
46862 t['\uFE89'] = '\u0626';
46863 t['\uFE8A'] = '\u0626';
46864 t['\uFE8B'] = '\u0626';
46865 t['\uFE8C'] = '\u0626';
46866 t['\uFE8D'] = '\u0627';
46867 t['\uFE8E'] = '\u0627';
46868 t['\uFE8F'] = '\u0628';
46869 t['\uFE90'] = '\u0628';
46870 t['\uFE91'] = '\u0628';
46871 t['\uFE92'] = '\u0628';
46872 t['\uFE93'] = '\u0629';
46873 t['\uFE94'] = '\u0629';
46874 t['\uFE95'] = '\u062A';
46875 t['\uFE96'] = '\u062A';
46876 t['\uFE97'] = '\u062A';
46877 t['\uFE98'] = '\u062A';
46878 t['\uFE99'] = '\u062B';
46879 t['\uFE9A'] = '\u062B';
46880 t['\uFE9B'] = '\u062B';
46881 t['\uFE9C'] = '\u062B';
46882 t['\uFE9D'] = '\u062C';
46883 t['\uFE9E'] = '\u062C';
46884 t['\uFE9F'] = '\u062C';
46885 t['\uFEA0'] = '\u062C';
46886 t['\uFEA1'] = '\u062D';
46887 t['\uFEA2'] = '\u062D';
46888 t['\uFEA3'] = '\u062D';
46889 t['\uFEA4'] = '\u062D';
46890 t['\uFEA5'] = '\u062E';
46891 t['\uFEA6'] = '\u062E';
46892 t['\uFEA7'] = '\u062E';
46893 t['\uFEA8'] = '\u062E';
46894 t['\uFEA9'] = '\u062F';
46895 t['\uFEAA'] = '\u062F';
46896 t['\uFEAB'] = '\u0630';
46897 t['\uFEAC'] = '\u0630';
46898 t['\uFEAD'] = '\u0631';
46899 t['\uFEAE'] = '\u0631';
46900 t['\uFEAF'] = '\u0632';
46901 t['\uFEB0'] = '\u0632';
46902 t['\uFEB1'] = '\u0633';
46903 t['\uFEB2'] = '\u0633';
46904 t['\uFEB3'] = '\u0633';
46905 t['\uFEB4'] = '\u0633';
46906 t['\uFEB5'] = '\u0634';
46907 t['\uFEB6'] = '\u0634';
46908 t['\uFEB7'] = '\u0634';
46909 t['\uFEB8'] = '\u0634';
46910 t['\uFEB9'] = '\u0635';
46911 t['\uFEBA'] = '\u0635';
46912 t['\uFEBB'] = '\u0635';
46913 t['\uFEBC'] = '\u0635';
46914 t['\uFEBD'] = '\u0636';
46915 t['\uFEBE'] = '\u0636';
46916 t['\uFEBF'] = '\u0636';
46917 t['\uFEC0'] = '\u0636';
46918 t['\uFEC1'] = '\u0637';
46919 t['\uFEC2'] = '\u0637';
46920 t['\uFEC3'] = '\u0637';
46921 t['\uFEC4'] = '\u0637';
46922 t['\uFEC5'] = '\u0638';
46923 t['\uFEC6'] = '\u0638';
46924 t['\uFEC7'] = '\u0638';
46925 t['\uFEC8'] = '\u0638';
46926 t['\uFEC9'] = '\u0639';
46927 t['\uFECA'] = '\u0639';
46928 t['\uFECB'] = '\u0639';
46929 t['\uFECC'] = '\u0639';
46930 t['\uFECD'] = '\u063A';
46931 t['\uFECE'] = '\u063A';
46932 t['\uFECF'] = '\u063A';
46933 t['\uFED0'] = '\u063A';
46934 t['\uFED1'] = '\u0641';
46935 t['\uFED2'] = '\u0641';
46936 t['\uFED3'] = '\u0641';
46937 t['\uFED4'] = '\u0641';
46938 t['\uFED5'] = '\u0642';
46939 t['\uFED6'] = '\u0642';
46940 t['\uFED7'] = '\u0642';
46941 t['\uFED8'] = '\u0642';
46942 t['\uFED9'] = '\u0643';
46943 t['\uFEDA'] = '\u0643';
46944 t['\uFEDB'] = '\u0643';
46945 t['\uFEDC'] = '\u0643';
46946 t['\uFEDD'] = '\u0644';
46947 t['\uFEDE'] = '\u0644';
46948 t['\uFEDF'] = '\u0644';
46949 t['\uFEE0'] = '\u0644';
46950 t['\uFEE1'] = '\u0645';
46951 t['\uFEE2'] = '\u0645';
46952 t['\uFEE3'] = '\u0645';
46953 t['\uFEE4'] = '\u0645';
46954 t['\uFEE5'] = '\u0646';
46955 t['\uFEE6'] = '\u0646';
46956 t['\uFEE7'] = '\u0646';
46957 t['\uFEE8'] = '\u0646';
46958 t['\uFEE9'] = '\u0647';
46959 t['\uFEEA'] = '\u0647';
46960 t['\uFEEB'] = '\u0647';
46961 t['\uFEEC'] = '\u0647';
46962 t['\uFEED'] = '\u0648';
46963 t['\uFEEE'] = '\u0648';
46964 t['\uFEEF'] = '\u0649';
46965 t['\uFEF0'] = '\u0649';
46966 t['\uFEF1'] = '\u064A';
46967 t['\uFEF2'] = '\u064A';
46968 t['\uFEF3'] = '\u064A';
46969 t['\uFEF4'] = '\u064A';
46970 t['\uFEF5'] = '\u0644\u0622';
46971 t['\uFEF6'] = '\u0644\u0622';
46972 t['\uFEF7'] = '\u0644\u0623';
46973 t['\uFEF8'] = '\u0644\u0623';
46974 t['\uFEF9'] = '\u0644\u0625';
46975 t['\uFEFA'] = '\u0644\u0625';
46976 t['\uFEFB'] = '\u0644\u0627';
46977 t['\uFEFC'] = '\u0644\u0627';
46978});
46979function reverseIfRtl(chars) {
46980 var charsLength = chars.length;
46981 if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
46982 return chars;
46983 }
46984 var s = '';
46985 for (var ii = charsLength - 1; ii >= 0; ii--) {
46986 s += chars[ii];
46987 }
46988 return s;
46989}
46990exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;
46991exports.reverseIfRtl = reverseIfRtl;
46992exports.getUnicodeRangeFor = getUnicodeRangeFor;
46993exports.getNormalizedUnicodes = getNormalizedUnicodes;
46994exports.getUnicodeForGlyph = getUnicodeForGlyph;
46995
46996/***/ }),
46997/* 181 */
46998/***/ (function(module, exports, __w_pdfjs_require__) {
46999
47000"use strict";
47001
47002
47003Object.defineProperty(exports, "__esModule", {
47004 value: true
47005});
47006exports.FontRendererFactory = void 0;
47007
47008var _util = __w_pdfjs_require__(5);
47009
47010var _cff_parser = __w_pdfjs_require__(175);
47011
47012var _glyphlist = __w_pdfjs_require__(178);
47013
47014var _encodings = __w_pdfjs_require__(177);
47015
47016var _stream = __w_pdfjs_require__(158);
47017
47018function _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); }
47019
47020function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
47021
47022function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
47023
47024function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
47025
47026function _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); }
47027
47028function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
47029
47030function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
47031
47032function _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); } }
47033
47034function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
47035
47036var FontRendererFactory = function FontRendererFactoryClosure() {
47037 function getLong(data, offset) {
47038 return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
47039 }
47040
47041 function getUshort(data, offset) {
47042 return data[offset] << 8 | data[offset + 1];
47043 }
47044
47045 function parseCmap(data, start, end) {
47046 var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);
47047 var format = getUshort(data, start + offset);
47048 var ranges, p, i;
47049
47050 if (format === 4) {
47051 getUshort(data, start + offset + 2);
47052 var segCount = getUshort(data, start + offset + 6) >> 1;
47053 p = start + offset + 14;
47054 ranges = [];
47055
47056 for (i = 0; i < segCount; i++, p += 2) {
47057 ranges[i] = {
47058 end: getUshort(data, p)
47059 };
47060 }
47061
47062 p += 2;
47063
47064 for (i = 0; i < segCount; i++, p += 2) {
47065 ranges[i].start = getUshort(data, p);
47066 }
47067
47068 for (i = 0; i < segCount; i++, p += 2) {
47069 ranges[i].idDelta = getUshort(data, p);
47070 }
47071
47072 for (i = 0; i < segCount; i++, p += 2) {
47073 var idOffset = getUshort(data, p);
47074
47075 if (idOffset === 0) {
47076 continue;
47077 }
47078
47079 ranges[i].ids = [];
47080
47081 for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {
47082 ranges[i].ids[j] = getUshort(data, p + idOffset);
47083 idOffset += 2;
47084 }
47085 }
47086
47087 return ranges;
47088 } else if (format === 12) {
47089 getLong(data, start + offset + 4);
47090 var groups = getLong(data, start + offset + 12);
47091 p = start + offset + 16;
47092 ranges = [];
47093
47094 for (i = 0; i < groups; i++) {
47095 ranges.push({
47096 start: getLong(data, p),
47097 end: getLong(data, p + 4),
47098 idDelta: getLong(data, p + 8) - getLong(data, p)
47099 });
47100 p += 12;
47101 }
47102
47103 return ranges;
47104 }
47105
47106 throw new _util.FormatError("unsupported cmap: ".concat(format));
47107 }
47108
47109 function parseCff(data, start, end, seacAnalysisEnabled) {
47110 var properties = {};
47111 var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);
47112 var cff = parser.parse();
47113 return {
47114 glyphs: cff.charStrings.objects,
47115 subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,
47116 gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,
47117 isCFFCIDFont: cff.isCIDFont,
47118 fdSelect: cff.fdSelect,
47119 fdArray: cff.fdArray
47120 };
47121 }
47122
47123 function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {
47124 var itemSize, itemDecode;
47125
47126 if (isGlyphLocationsLong) {
47127 itemSize = 4;
47128
47129 itemDecode = function fontItemDecodeLong(data, offset) {
47130 return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
47131 };
47132 } else {
47133 itemSize = 2;
47134
47135 itemDecode = function fontItemDecode(data, offset) {
47136 return data[offset] << 9 | data[offset + 1] << 1;
47137 };
47138 }
47139
47140 var glyphs = [];
47141 var startOffset = itemDecode(loca, 0);
47142
47143 for (var j = itemSize; j < loca.length; j += itemSize) {
47144 var endOffset = itemDecode(loca, j);
47145 glyphs.push(glyf.subarray(startOffset, endOffset));
47146 startOffset = endOffset;
47147 }
47148
47149 return glyphs;
47150 }
47151
47152 function lookupCmap(ranges, unicode) {
47153 var code = unicode.codePointAt(0),
47154 gid = 0;
47155 var l = 0,
47156 r = ranges.length - 1;
47157
47158 while (l < r) {
47159 var c = l + r + 1 >> 1;
47160
47161 if (code < ranges[c].start) {
47162 r = c - 1;
47163 } else {
47164 l = c;
47165 }
47166 }
47167
47168 if (ranges[l].start <= code && code <= ranges[l].end) {
47169 gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xFFFF;
47170 }
47171
47172 return {
47173 charCode: code,
47174 glyphId: gid
47175 };
47176 }
47177
47178 function compileGlyf(code, cmds, font) {
47179 function moveTo(x, y) {
47180 cmds.push({
47181 cmd: 'moveTo',
47182 args: [x, y]
47183 });
47184 }
47185
47186 function lineTo(x, y) {
47187 cmds.push({
47188 cmd: 'lineTo',
47189 args: [x, y]
47190 });
47191 }
47192
47193 function quadraticCurveTo(xa, ya, x, y) {
47194 cmds.push({
47195 cmd: 'quadraticCurveTo',
47196 args: [xa, ya, x, y]
47197 });
47198 }
47199
47200 var i = 0;
47201 var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;
47202 var flags;
47203 var x = 0,
47204 y = 0;
47205 i += 10;
47206
47207 if (numberOfContours < 0) {
47208 do {
47209 flags = code[i] << 8 | code[i + 1];
47210 var glyphIndex = code[i + 2] << 8 | code[i + 3];
47211 i += 4;
47212 var arg1, arg2;
47213
47214 if (flags & 0x01) {
47215 arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;
47216 arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16;
47217 i += 4;
47218 } else {
47219 arg1 = code[i++];
47220 arg2 = code[i++];
47221 }
47222
47223 if (flags & 0x02) {
47224 x = arg1;
47225 y = arg2;
47226 } else {
47227 x = 0;
47228 y = 0;
47229 }
47230
47231 var scaleX = 1,
47232 scaleY = 1,
47233 scale01 = 0,
47234 scale10 = 0;
47235
47236 if (flags & 0x08) {
47237 scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
47238 i += 2;
47239 } else if (flags & 0x40) {
47240 scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
47241 scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
47242 i += 4;
47243 } else if (flags & 0x80) {
47244 scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824;
47245 scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824;
47246 scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824;
47247 scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824;
47248 i += 8;
47249 }
47250
47251 var subglyph = font.glyphs[glyphIndex];
47252
47253 if (subglyph) {
47254 cmds.push({
47255 cmd: 'save'
47256 });
47257 cmds.push({
47258 cmd: 'transform',
47259 args: [scaleX, scale01, scale10, scaleY, x, y]
47260 });
47261 compileGlyf(subglyph, cmds, font);
47262 cmds.push({
47263 cmd: 'restore'
47264 });
47265 }
47266 } while (flags & 0x20);
47267 } else {
47268 var endPtsOfContours = [];
47269 var j, jj;
47270
47271 for (j = 0; j < numberOfContours; j++) {
47272 endPtsOfContours.push(code[i] << 8 | code[i + 1]);
47273 i += 2;
47274 }
47275
47276 var instructionLength = code[i] << 8 | code[i + 1];
47277 i += 2 + instructionLength;
47278 var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
47279 var points = [];
47280
47281 while (points.length < numberOfPoints) {
47282 flags = code[i++];
47283 var repeat = 1;
47284
47285 if (flags & 0x08) {
47286 repeat += code[i++];
47287 }
47288
47289 while (repeat-- > 0) {
47290 points.push({
47291 flags: flags
47292 });
47293 }
47294 }
47295
47296 for (j = 0; j < numberOfPoints; j++) {
47297 switch (points[j].flags & 0x12) {
47298 case 0x00:
47299 x += (code[i] << 24 | code[i + 1] << 16) >> 16;
47300 i += 2;
47301 break;
47302
47303 case 0x02:
47304 x -= code[i++];
47305 break;
47306
47307 case 0x12:
47308 x += code[i++];
47309 break;
47310 }
47311
47312 points[j].x = x;
47313 }
47314
47315 for (j = 0; j < numberOfPoints; j++) {
47316 switch (points[j].flags & 0x24) {
47317 case 0x00:
47318 y += (code[i] << 24 | code[i + 1] << 16) >> 16;
47319 i += 2;
47320 break;
47321
47322 case 0x04:
47323 y -= code[i++];
47324 break;
47325
47326 case 0x24:
47327 y += code[i++];
47328 break;
47329 }
47330
47331 points[j].y = y;
47332 }
47333
47334 var startPoint = 0;
47335
47336 for (i = 0; i < numberOfContours; i++) {
47337 var endPoint = endPtsOfContours[i];
47338 var contour = points.slice(startPoint, endPoint + 1);
47339
47340 if (contour[0].flags & 1) {
47341 contour.push(contour[0]);
47342 } else if (contour[contour.length - 1].flags & 1) {
47343 contour.unshift(contour[contour.length - 1]);
47344 } else {
47345 var p = {
47346 flags: 1,
47347 x: (contour[0].x + contour[contour.length - 1].x) / 2,
47348 y: (contour[0].y + contour[contour.length - 1].y) / 2
47349 };
47350 contour.unshift(p);
47351 contour.push(p);
47352 }
47353
47354 moveTo(contour[0].x, contour[0].y);
47355
47356 for (j = 1, jj = contour.length; j < jj; j++) {
47357 if (contour[j].flags & 1) {
47358 lineTo(contour[j].x, contour[j].y);
47359 } else if (contour[j + 1].flags & 1) {
47360 quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);
47361 j++;
47362 } else {
47363 quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);
47364 }
47365 }
47366
47367 startPoint = endPoint + 1;
47368 }
47369 }
47370 }
47371
47372 function compileCharString(code, cmds, font, glyphId) {
47373 var stack = [];
47374 var x = 0,
47375 y = 0;
47376 var stems = 0;
47377
47378 function moveTo(x, y) {
47379 cmds.push({
47380 cmd: 'moveTo',
47381 args: [x, y]
47382 });
47383 }
47384
47385 function lineTo(x, y) {
47386 cmds.push({
47387 cmd: 'lineTo',
47388 args: [x, y]
47389 });
47390 }
47391
47392 function bezierCurveTo(x1, y1, x2, y2, x, y) {
47393 cmds.push({
47394 cmd: 'bezierCurveTo',
47395 args: [x1, y1, x2, y2, x, y]
47396 });
47397 }
47398
47399 function parse(code) {
47400 var i = 0;
47401
47402 while (i < code.length) {
47403 var stackClean = false;
47404 var v = code[i++];
47405 var xa, xb, ya, yb, y1, y2, y3, n, subrCode;
47406
47407 switch (v) {
47408 case 1:
47409 stems += stack.length >> 1;
47410 stackClean = true;
47411 break;
47412
47413 case 3:
47414 stems += stack.length >> 1;
47415 stackClean = true;
47416 break;
47417
47418 case 4:
47419 y += stack.pop();
47420 moveTo(x, y);
47421 stackClean = true;
47422 break;
47423
47424 case 5:
47425 while (stack.length > 0) {
47426 x += stack.shift();
47427 y += stack.shift();
47428 lineTo(x, y);
47429 }
47430
47431 break;
47432
47433 case 6:
47434 while (stack.length > 0) {
47435 x += stack.shift();
47436 lineTo(x, y);
47437
47438 if (stack.length === 0) {
47439 break;
47440 }
47441
47442 y += stack.shift();
47443 lineTo(x, y);
47444 }
47445
47446 break;
47447
47448 case 7:
47449 while (stack.length > 0) {
47450 y += stack.shift();
47451 lineTo(x, y);
47452
47453 if (stack.length === 0) {
47454 break;
47455 }
47456
47457 x += stack.shift();
47458 lineTo(x, y);
47459 }
47460
47461 break;
47462
47463 case 8:
47464 while (stack.length > 0) {
47465 xa = x + stack.shift();
47466 ya = y + stack.shift();
47467 xb = xa + stack.shift();
47468 yb = ya + stack.shift();
47469 x = xb + stack.shift();
47470 y = yb + stack.shift();
47471 bezierCurveTo(xa, ya, xb, yb, x, y);
47472 }
47473
47474 break;
47475
47476 case 10:
47477 n = stack.pop();
47478 subrCode = null;
47479
47480 if (font.isCFFCIDFont) {
47481 var fdIndex = font.fdSelect.getFDIndex(glyphId);
47482
47483 if (fdIndex >= 0 && fdIndex < font.fdArray.length) {
47484 var fontDict = font.fdArray[fdIndex],
47485 subrs = void 0;
47486
47487 if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {
47488 subrs = fontDict.privateDict.subrsIndex.objects;
47489 }
47490
47491 if (subrs) {
47492 var numSubrs = subrs.length;
47493 n += numSubrs < 1240 ? 107 : numSubrs < 33900 ? 1131 : 32768;
47494 subrCode = subrs[n];
47495 }
47496 } else {
47497 (0, _util.warn)('Invalid fd index for glyph index.');
47498 }
47499 } else {
47500 subrCode = font.subrs[n + font.subrsBias];
47501 }
47502
47503 if (subrCode) {
47504 parse(subrCode);
47505 }
47506
47507 break;
47508
47509 case 11:
47510 return;
47511
47512 case 12:
47513 v = code[i++];
47514
47515 switch (v) {
47516 case 34:
47517 xa = x + stack.shift();
47518 xb = xa + stack.shift();
47519 y1 = y + stack.shift();
47520 x = xb + stack.shift();
47521 bezierCurveTo(xa, y, xb, y1, x, y1);
47522 xa = x + stack.shift();
47523 xb = xa + stack.shift();
47524 x = xb + stack.shift();
47525 bezierCurveTo(xa, y1, xb, y, x, y);
47526 break;
47527
47528 case 35:
47529 xa = x + stack.shift();
47530 ya = y + stack.shift();
47531 xb = xa + stack.shift();
47532 yb = ya + stack.shift();
47533 x = xb + stack.shift();
47534 y = yb + stack.shift();
47535 bezierCurveTo(xa, ya, xb, yb, x, y);
47536 xa = x + stack.shift();
47537 ya = y + stack.shift();
47538 xb = xa + stack.shift();
47539 yb = ya + stack.shift();
47540 x = xb + stack.shift();
47541 y = yb + stack.shift();
47542 bezierCurveTo(xa, ya, xb, yb, x, y);
47543 stack.pop();
47544 break;
47545
47546 case 36:
47547 xa = x + stack.shift();
47548 y1 = y + stack.shift();
47549 xb = xa + stack.shift();
47550 y2 = y1 + stack.shift();
47551 x = xb + stack.shift();
47552 bezierCurveTo(xa, y1, xb, y2, x, y2);
47553 xa = x + stack.shift();
47554 xb = xa + stack.shift();
47555 y3 = y2 + stack.shift();
47556 x = xb + stack.shift();
47557 bezierCurveTo(xa, y2, xb, y3, x, y);
47558 break;
47559
47560 case 37:
47561 var x0 = x,
47562 y0 = y;
47563 xa = x + stack.shift();
47564 ya = y + stack.shift();
47565 xb = xa + stack.shift();
47566 yb = ya + stack.shift();
47567 x = xb + stack.shift();
47568 y = yb + stack.shift();
47569 bezierCurveTo(xa, ya, xb, yb, x, y);
47570 xa = x + stack.shift();
47571 ya = y + stack.shift();
47572 xb = xa + stack.shift();
47573 yb = ya + stack.shift();
47574 x = xb;
47575 y = yb;
47576
47577 if (Math.abs(x - x0) > Math.abs(y - y0)) {
47578 x += stack.shift();
47579 } else {
47580 y += stack.shift();
47581 }
47582
47583 bezierCurveTo(xa, ya, xb, yb, x, y);
47584 break;
47585
47586 default:
47587 throw new _util.FormatError("unknown operator: 12 ".concat(v));
47588 }
47589
47590 break;
47591
47592 case 14:
47593 if (stack.length >= 4) {
47594 var achar = stack.pop();
47595 var bchar = stack.pop();
47596 y = stack.pop();
47597 x = stack.pop();
47598 cmds.push({
47599 cmd: 'save'
47600 });
47601 cmds.push({
47602 cmd: 'translate',
47603 args: [x, y]
47604 });
47605 var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));
47606 compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);
47607 cmds.push({
47608 cmd: 'restore'
47609 });
47610 cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));
47611 compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);
47612 }
47613
47614 return;
47615
47616 case 18:
47617 stems += stack.length >> 1;
47618 stackClean = true;
47619 break;
47620
47621 case 19:
47622 stems += stack.length >> 1;
47623 i += stems + 7 >> 3;
47624 stackClean = true;
47625 break;
47626
47627 case 20:
47628 stems += stack.length >> 1;
47629 i += stems + 7 >> 3;
47630 stackClean = true;
47631 break;
47632
47633 case 21:
47634 y += stack.pop();
47635 x += stack.pop();
47636 moveTo(x, y);
47637 stackClean = true;
47638 break;
47639
47640 case 22:
47641 x += stack.pop();
47642 moveTo(x, y);
47643 stackClean = true;
47644 break;
47645
47646 case 23:
47647 stems += stack.length >> 1;
47648 stackClean = true;
47649 break;
47650
47651 case 24:
47652 while (stack.length > 2) {
47653 xa = x + stack.shift();
47654 ya = y + stack.shift();
47655 xb = xa + stack.shift();
47656 yb = ya + stack.shift();
47657 x = xb + stack.shift();
47658 y = yb + stack.shift();
47659 bezierCurveTo(xa, ya, xb, yb, x, y);
47660 }
47661
47662 x += stack.shift();
47663 y += stack.shift();
47664 lineTo(x, y);
47665 break;
47666
47667 case 25:
47668 while (stack.length > 6) {
47669 x += stack.shift();
47670 y += stack.shift();
47671 lineTo(x, y);
47672 }
47673
47674 xa = x + stack.shift();
47675 ya = y + stack.shift();
47676 xb = xa + stack.shift();
47677 yb = ya + stack.shift();
47678 x = xb + stack.shift();
47679 y = yb + stack.shift();
47680 bezierCurveTo(xa, ya, xb, yb, x, y);
47681 break;
47682
47683 case 26:
47684 if (stack.length % 2) {
47685 x += stack.shift();
47686 }
47687
47688 while (stack.length > 0) {
47689 xa = x;
47690 ya = y + stack.shift();
47691 xb = xa + stack.shift();
47692 yb = ya + stack.shift();
47693 x = xb;
47694 y = yb + stack.shift();
47695 bezierCurveTo(xa, ya, xb, yb, x, y);
47696 }
47697
47698 break;
47699
47700 case 27:
47701 if (stack.length % 2) {
47702 y += stack.shift();
47703 }
47704
47705 while (stack.length > 0) {
47706 xa = x + stack.shift();
47707 ya = y;
47708 xb = xa + stack.shift();
47709 yb = ya + stack.shift();
47710 x = xb + stack.shift();
47711 y = yb;
47712 bezierCurveTo(xa, ya, xb, yb, x, y);
47713 }
47714
47715 break;
47716
47717 case 28:
47718 stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);
47719 i += 2;
47720 break;
47721
47722 case 29:
47723 n = stack.pop() + font.gsubrsBias;
47724 subrCode = font.gsubrs[n];
47725
47726 if (subrCode) {
47727 parse(subrCode);
47728 }
47729
47730 break;
47731
47732 case 30:
47733 while (stack.length > 0) {
47734 xa = x;
47735 ya = y + stack.shift();
47736 xb = xa + stack.shift();
47737 yb = ya + stack.shift();
47738 x = xb + stack.shift();
47739 y = yb + (stack.length === 1 ? stack.shift() : 0);
47740 bezierCurveTo(xa, ya, xb, yb, x, y);
47741
47742 if (stack.length === 0) {
47743 break;
47744 }
47745
47746 xa = x + stack.shift();
47747 ya = y;
47748 xb = xa + stack.shift();
47749 yb = ya + stack.shift();
47750 y = yb + stack.shift();
47751 x = xb + (stack.length === 1 ? stack.shift() : 0);
47752 bezierCurveTo(xa, ya, xb, yb, x, y);
47753 }
47754
47755 break;
47756
47757 case 31:
47758 while (stack.length > 0) {
47759 xa = x + stack.shift();
47760 ya = y;
47761 xb = xa + stack.shift();
47762 yb = ya + stack.shift();
47763 y = yb + stack.shift();
47764 x = xb + (stack.length === 1 ? stack.shift() : 0);
47765 bezierCurveTo(xa, ya, xb, yb, x, y);
47766
47767 if (stack.length === 0) {
47768 break;
47769 }
47770
47771 xa = x;
47772 ya = y + stack.shift();
47773 xb = xa + stack.shift();
47774 yb = ya + stack.shift();
47775 x = xb + stack.shift();
47776 y = yb + (stack.length === 1 ? stack.shift() : 0);
47777 bezierCurveTo(xa, ya, xb, yb, x, y);
47778 }
47779
47780 break;
47781
47782 default:
47783 if (v < 32) {
47784 throw new _util.FormatError("unknown operator: ".concat(v));
47785 }
47786
47787 if (v < 247) {
47788 stack.push(v - 139);
47789 } else if (v < 251) {
47790 stack.push((v - 247) * 256 + code[i++] + 108);
47791 } else if (v < 255) {
47792 stack.push(-(v - 251) * 256 - code[i++] - 108);
47793 } else {
47794 stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);
47795 i += 4;
47796 }
47797
47798 break;
47799 }
47800
47801 if (stackClean) {
47802 stack.length = 0;
47803 }
47804 }
47805 }
47806
47807 parse(code);
47808 }
47809
47810 var NOOP = [];
47811
47812 var CompiledFont =
47813 /*#__PURE__*/
47814 function () {
47815 function CompiledFont(fontMatrix) {
47816 _classCallCheck(this, CompiledFont);
47817
47818 if (this.constructor === CompiledFont) {
47819 (0, _util.unreachable)('Cannot initialize CompiledFont.');
47820 }
47821
47822 this.fontMatrix = fontMatrix;
47823 this.compiledGlyphs = Object.create(null);
47824 this.compiledCharCodeToGlyphId = Object.create(null);
47825 }
47826
47827 _createClass(CompiledFont, [{
47828 key: "getPathJs",
47829 value: function getPathJs(unicode) {
47830 var cmap = lookupCmap(this.cmap, unicode);
47831 var fn = this.compiledGlyphs[cmap.glyphId];
47832
47833 if (!fn) {
47834 fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);
47835 this.compiledGlyphs[cmap.glyphId] = fn;
47836 }
47837
47838 if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {
47839 this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;
47840 }
47841
47842 return fn;
47843 }
47844 }, {
47845 key: "compileGlyph",
47846 value: function compileGlyph(code, glyphId) {
47847 if (!code || code.length === 0 || code[0] === 14) {
47848 return NOOP;
47849 }
47850
47851 var fontMatrix = this.fontMatrix;
47852
47853 if (this.isCFFCIDFont) {
47854 var fdIndex = this.fdSelect.getFDIndex(glyphId);
47855
47856 if (fdIndex >= 0 && fdIndex < this.fdArray.length) {
47857 var fontDict = this.fdArray[fdIndex];
47858 fontMatrix = fontDict.getByName('FontMatrix') || _util.FONT_IDENTITY_MATRIX;
47859 } else {
47860 (0, _util.warn)('Invalid fd index for glyph index.');
47861 }
47862 }
47863
47864 var cmds = [];
47865 cmds.push({
47866 cmd: 'save'
47867 });
47868 cmds.push({
47869 cmd: 'transform',
47870 args: fontMatrix.slice()
47871 });
47872 cmds.push({
47873 cmd: 'scale',
47874 args: ['size', '-size']
47875 });
47876 this.compileGlyphImpl(code, cmds, glyphId);
47877 cmds.push({
47878 cmd: 'restore'
47879 });
47880 return cmds;
47881 }
47882 }, {
47883 key: "compileGlyphImpl",
47884 value: function compileGlyphImpl() {
47885 (0, _util.unreachable)('Children classes should implement this.');
47886 }
47887 }, {
47888 key: "hasBuiltPath",
47889 value: function hasBuiltPath(unicode) {
47890 var cmap = lookupCmap(this.cmap, unicode);
47891 return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined;
47892 }
47893 }]);
47894
47895 return CompiledFont;
47896 }();
47897
47898 var TrueTypeCompiled =
47899 /*#__PURE__*/
47900 function (_CompiledFont) {
47901 _inherits(TrueTypeCompiled, _CompiledFont);
47902
47903 function TrueTypeCompiled(glyphs, cmap, fontMatrix) {
47904 var _this;
47905
47906 _classCallCheck(this, TrueTypeCompiled);
47907
47908 _this = _possibleConstructorReturn(this, _getPrototypeOf(TrueTypeCompiled).call(this, fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]));
47909 _this.glyphs = glyphs;
47910 _this.cmap = cmap;
47911 return _this;
47912 }
47913
47914 _createClass(TrueTypeCompiled, [{
47915 key: "compileGlyphImpl",
47916 value: function compileGlyphImpl(code, cmds) {
47917 compileGlyf(code, cmds, this);
47918 }
47919 }]);
47920
47921 return TrueTypeCompiled;
47922 }(CompiledFont);
47923
47924 var Type2Compiled =
47925 /*#__PURE__*/
47926 function (_CompiledFont2) {
47927 _inherits(Type2Compiled, _CompiledFont2);
47928
47929 function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {
47930 var _this2;
47931
47932 _classCallCheck(this, Type2Compiled);
47933
47934 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(Type2Compiled).call(this, fontMatrix || [0.001, 0, 0, 0.001, 0, 0]));
47935 _this2.glyphs = cffInfo.glyphs;
47936 _this2.gsubrs = cffInfo.gsubrs || [];
47937 _this2.subrs = cffInfo.subrs || [];
47938 _this2.cmap = cmap;
47939 _this2.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();
47940 _this2.gsubrsBias = _this2.gsubrs.length < 1240 ? 107 : _this2.gsubrs.length < 33900 ? 1131 : 32768;
47941 _this2.subrsBias = _this2.subrs.length < 1240 ? 107 : _this2.subrs.length < 33900 ? 1131 : 32768;
47942 _this2.isCFFCIDFont = cffInfo.isCFFCIDFont;
47943 _this2.fdSelect = cffInfo.fdSelect;
47944 _this2.fdArray = cffInfo.fdArray;
47945 return _this2;
47946 }
47947
47948 _createClass(Type2Compiled, [{
47949 key: "compileGlyphImpl",
47950 value: function compileGlyphImpl(code, cmds, glyphId) {
47951 compileCharString(code, cmds, this, glyphId);
47952 }
47953 }]);
47954
47955 return Type2Compiled;
47956 }(CompiledFont);
47957
47958 return {
47959 create: function FontRendererFactory_create(font, seacAnalysisEnabled) {
47960 var data = new Uint8Array(font.data);
47961 var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
47962 var numTables = getUshort(data, 4);
47963
47964 for (var i = 0, p = 12; i < numTables; i++, p += 16) {
47965 var tag = (0, _util.bytesToString)(data.subarray(p, p + 4));
47966 var offset = getLong(data, p + 8);
47967 var length = getLong(data, p + 12);
47968
47969 switch (tag) {
47970 case 'cmap':
47971 cmap = parseCmap(data, offset, offset + length);
47972 break;
47973
47974 case 'glyf':
47975 glyf = data.subarray(offset, offset + length);
47976 break;
47977
47978 case 'loca':
47979 loca = data.subarray(offset, offset + length);
47980 break;
47981
47982 case 'head':
47983 unitsPerEm = getUshort(data, offset + 18);
47984 indexToLocFormat = getUshort(data, offset + 50);
47985 break;
47986
47987 case 'CFF ':
47988 cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);
47989 break;
47990 }
47991 }
47992
47993 if (glyf) {
47994 var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];
47995 return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);
47996 }
47997
47998 return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);
47999 }
48000 };
48001}();
48002
48003exports.FontRendererFactory = FontRendererFactory;
48004
48005/***/ }),
48006/* 182 */
48007/***/ (function(module, exports, __w_pdfjs_require__) {
48008
48009"use strict";
48010
48011
48012Object.defineProperty(exports, "__esModule", {
48013 value: true
48014});
48015exports.Type1Parser = void 0;
48016
48017var _util = __w_pdfjs_require__(5);
48018
48019var _encodings = __w_pdfjs_require__(177);
48020
48021var _stream = __w_pdfjs_require__(158);
48022
48023var HINTING_ENABLED = false;
48024
48025var Type1CharString = function Type1CharStringClosure() {
48026 var COMMAND_MAP = {
48027 'hstem': [1],
48028 'vstem': [3],
48029 'vmoveto': [4],
48030 'rlineto': [5],
48031 'hlineto': [6],
48032 'vlineto': [7],
48033 'rrcurveto': [8],
48034 'callsubr': [10],
48035 'flex': [12, 35],
48036 'drop': [12, 18],
48037 'endchar': [14],
48038 'rmoveto': [21],
48039 'hmoveto': [22],
48040 'vhcurveto': [30],
48041 'hvcurveto': [31]
48042 };
48043
48044 function Type1CharString() {
48045 this.width = 0;
48046 this.lsb = 0;
48047 this.flexing = false;
48048 this.output = [];
48049 this.stack = [];
48050 }
48051
48052 Type1CharString.prototype = {
48053 convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {
48054 var count = encoded.length;
48055 var error = false;
48056 var wx, sbx, subrNumber;
48057
48058 for (var i = 0; i < count; i++) {
48059 var value = encoded[i];
48060
48061 if (value < 32) {
48062 if (value === 12) {
48063 value = (value << 8) + encoded[++i];
48064 }
48065
48066 switch (value) {
48067 case 1:
48068 if (!HINTING_ENABLED) {
48069 this.stack = [];
48070 break;
48071 }
48072
48073 error = this.executeCommand(2, COMMAND_MAP.hstem);
48074 break;
48075
48076 case 3:
48077 if (!HINTING_ENABLED) {
48078 this.stack = [];
48079 break;
48080 }
48081
48082 error = this.executeCommand(2, COMMAND_MAP.vstem);
48083 break;
48084
48085 case 4:
48086 if (this.flexing) {
48087 if (this.stack.length < 1) {
48088 error = true;
48089 break;
48090 }
48091
48092 var dy = this.stack.pop();
48093 this.stack.push(0, dy);
48094 break;
48095 }
48096
48097 error = this.executeCommand(1, COMMAND_MAP.vmoveto);
48098 break;
48099
48100 case 5:
48101 error = this.executeCommand(2, COMMAND_MAP.rlineto);
48102 break;
48103
48104 case 6:
48105 error = this.executeCommand(1, COMMAND_MAP.hlineto);
48106 break;
48107
48108 case 7:
48109 error = this.executeCommand(1, COMMAND_MAP.vlineto);
48110 break;
48111
48112 case 8:
48113 error = this.executeCommand(6, COMMAND_MAP.rrcurveto);
48114 break;
48115
48116 case 9:
48117 this.stack = [];
48118 break;
48119
48120 case 10:
48121 if (this.stack.length < 1) {
48122 error = true;
48123 break;
48124 }
48125
48126 subrNumber = this.stack.pop();
48127
48128 if (!subrs[subrNumber]) {
48129 error = true;
48130 break;
48131 }
48132
48133 error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);
48134 break;
48135
48136 case 11:
48137 return error;
48138
48139 case 13:
48140 if (this.stack.length < 2) {
48141 error = true;
48142 break;
48143 }
48144
48145 wx = this.stack.pop();
48146 sbx = this.stack.pop();
48147 this.lsb = sbx;
48148 this.width = wx;
48149 this.stack.push(wx, sbx);
48150 error = this.executeCommand(2, COMMAND_MAP.hmoveto);
48151 break;
48152
48153 case 14:
48154 this.output.push(COMMAND_MAP.endchar[0]);
48155 break;
48156
48157 case 21:
48158 if (this.flexing) {
48159 break;
48160 }
48161
48162 error = this.executeCommand(2, COMMAND_MAP.rmoveto);
48163 break;
48164
48165 case 22:
48166 if (this.flexing) {
48167 this.stack.push(0);
48168 break;
48169 }
48170
48171 error = this.executeCommand(1, COMMAND_MAP.hmoveto);
48172 break;
48173
48174 case 30:
48175 error = this.executeCommand(4, COMMAND_MAP.vhcurveto);
48176 break;
48177
48178 case 31:
48179 error = this.executeCommand(4, COMMAND_MAP.hvcurveto);
48180 break;
48181
48182 case (12 << 8) + 0:
48183 this.stack = [];
48184 break;
48185
48186 case (12 << 8) + 1:
48187 if (!HINTING_ENABLED) {
48188 this.stack = [];
48189 break;
48190 }
48191
48192 error = this.executeCommand(2, COMMAND_MAP.vstem);
48193 break;
48194
48195 case (12 << 8) + 2:
48196 if (!HINTING_ENABLED) {
48197 this.stack = [];
48198 break;
48199 }
48200
48201 error = this.executeCommand(2, COMMAND_MAP.hstem);
48202 break;
48203
48204 case (12 << 8) + 6:
48205 if (seacAnalysisEnabled) {
48206 this.seac = this.stack.splice(-4, 4);
48207 error = this.executeCommand(0, COMMAND_MAP.endchar);
48208 } else {
48209 error = this.executeCommand(4, COMMAND_MAP.endchar);
48210 }
48211
48212 break;
48213
48214 case (12 << 8) + 7:
48215 if (this.stack.length < 4) {
48216 error = true;
48217 break;
48218 }
48219
48220 this.stack.pop();
48221 wx = this.stack.pop();
48222 var sby = this.stack.pop();
48223 sbx = this.stack.pop();
48224 this.lsb = sbx;
48225 this.width = wx;
48226 this.stack.push(wx, sbx, sby);
48227 error = this.executeCommand(3, COMMAND_MAP.rmoveto);
48228 break;
48229
48230 case (12 << 8) + 12:
48231 if (this.stack.length < 2) {
48232 error = true;
48233 break;
48234 }
48235
48236 var num2 = this.stack.pop();
48237 var num1 = this.stack.pop();
48238 this.stack.push(num1 / num2);
48239 break;
48240
48241 case (12 << 8) + 16:
48242 if (this.stack.length < 2) {
48243 error = true;
48244 break;
48245 }
48246
48247 subrNumber = this.stack.pop();
48248 var numArgs = this.stack.pop();
48249
48250 if (subrNumber === 0 && numArgs === 3) {
48251 var flexArgs = this.stack.splice(this.stack.length - 17, 17);
48252 this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);
48253 error = this.executeCommand(13, COMMAND_MAP.flex, true);
48254 this.flexing = false;
48255 this.stack.push(flexArgs[15], flexArgs[16]);
48256 } else if (subrNumber === 1 && numArgs === 0) {
48257 this.flexing = true;
48258 }
48259
48260 break;
48261
48262 case (12 << 8) + 17:
48263 break;
48264
48265 case (12 << 8) + 33:
48266 this.stack = [];
48267 break;
48268
48269 default:
48270 (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"');
48271 break;
48272 }
48273
48274 if (error) {
48275 break;
48276 }
48277
48278 continue;
48279 } else if (value <= 246) {
48280 value = value - 139;
48281 } else if (value <= 250) {
48282 value = (value - 247) * 256 + encoded[++i] + 108;
48283 } else if (value <= 254) {
48284 value = -((value - 251) * 256) - encoded[++i] - 108;
48285 } else {
48286 value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;
48287 }
48288
48289 this.stack.push(value);
48290 }
48291
48292 return error;
48293 },
48294 executeCommand: function executeCommand(howManyArgs, command, keepStack) {
48295 var stackLength = this.stack.length;
48296
48297 if (howManyArgs > stackLength) {
48298 return true;
48299 }
48300
48301 var start = stackLength - howManyArgs;
48302
48303 for (var i = start; i < stackLength; i++) {
48304 var value = this.stack[i];
48305
48306 if (Number.isInteger(value)) {
48307 this.output.push(28, value >> 8 & 0xff, value & 0xff);
48308 } else {
48309 value = 65536 * value | 0;
48310 this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF);
48311 }
48312 }
48313
48314 this.output.push.apply(this.output, command);
48315
48316 if (keepStack) {
48317 this.stack.splice(start, howManyArgs);
48318 } else {
48319 this.stack.length = 0;
48320 }
48321
48322 return false;
48323 }
48324 };
48325 return Type1CharString;
48326}();
48327
48328var Type1Parser = function Type1ParserClosure() {
48329 var EEXEC_ENCRYPT_KEY = 55665;
48330 var CHAR_STRS_ENCRYPT_KEY = 4330;
48331
48332 function isHexDigit(code) {
48333 return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;
48334 }
48335
48336 function decrypt(data, key, discardNumber) {
48337 if (discardNumber >= data.length) {
48338 return new Uint8Array(0);
48339 }
48340
48341 var r = key | 0,
48342 c1 = 52845,
48343 c2 = 22719,
48344 i,
48345 j;
48346
48347 for (i = 0; i < discardNumber; i++) {
48348 r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;
48349 }
48350
48351 var count = data.length - discardNumber;
48352 var decrypted = new Uint8Array(count);
48353
48354 for (i = discardNumber, j = 0; j < count; i++, j++) {
48355 var value = data[i];
48356 decrypted[j] = value ^ r >> 8;
48357 r = (value + r) * c1 + c2 & (1 << 16) - 1;
48358 }
48359
48360 return decrypted;
48361 }
48362
48363 function decryptAscii(data, key, discardNumber) {
48364 var r = key | 0,
48365 c1 = 52845,
48366 c2 = 22719;
48367 var count = data.length,
48368 maybeLength = count >>> 1;
48369 var decrypted = new Uint8Array(maybeLength);
48370 var i, j;
48371
48372 for (i = 0, j = 0; i < count; i++) {
48373 var digit1 = data[i];
48374
48375 if (!isHexDigit(digit1)) {
48376 continue;
48377 }
48378
48379 i++;
48380 var digit2;
48381
48382 while (i < count && !isHexDigit(digit2 = data[i])) {
48383 i++;
48384 }
48385
48386 if (i < count) {
48387 var value = parseInt(String.fromCharCode(digit1, digit2), 16);
48388 decrypted[j++] = value ^ r >> 8;
48389 r = (value + r) * c1 + c2 & (1 << 16) - 1;
48390 }
48391 }
48392
48393 return Array.prototype.slice.call(decrypted, discardNumber, j);
48394 }
48395
48396 function isSpecial(c) {
48397 return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29;
48398 }
48399
48400 function Type1Parser(stream, encrypted, seacAnalysisEnabled) {
48401 if (encrypted) {
48402 var data = stream.getBytes();
48403 var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]));
48404 stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));
48405 }
48406
48407 this.seacAnalysisEnabled = !!seacAnalysisEnabled;
48408 this.stream = stream;
48409 this.nextChar();
48410 }
48411
48412 Type1Parser.prototype = {
48413 readNumberArray: function Type1Parser_readNumberArray() {
48414 this.getToken();
48415 var array = [];
48416
48417 while (true) {
48418 var token = this.getToken();
48419
48420 if (token === null || token === ']' || token === '}') {
48421 break;
48422 }
48423
48424 array.push(parseFloat(token || 0));
48425 }
48426
48427 return array;
48428 },
48429 readNumber: function Type1Parser_readNumber() {
48430 var token = this.getToken();
48431 return parseFloat(token || 0);
48432 },
48433 readInt: function Type1Parser_readInt() {
48434 var token = this.getToken();
48435 return parseInt(token || 0, 10) | 0;
48436 },
48437 readBoolean: function Type1Parser_readBoolean() {
48438 var token = this.getToken();
48439 return token === 'true' ? 1 : 0;
48440 },
48441 nextChar: function Type1_nextChar() {
48442 return this.currentChar = this.stream.getByte();
48443 },
48444 getToken: function Type1Parser_getToken() {
48445 var comment = false;
48446 var ch = this.currentChar;
48447
48448 while (true) {
48449 if (ch === -1) {
48450 return null;
48451 }
48452
48453 if (comment) {
48454 if (ch === 0x0A || ch === 0x0D) {
48455 comment = false;
48456 }
48457 } else if (ch === 0x25) {
48458 comment = true;
48459 } else if (!(0, _util.isSpace)(ch)) {
48460 break;
48461 }
48462
48463 ch = this.nextChar();
48464 }
48465
48466 if (isSpecial(ch)) {
48467 this.nextChar();
48468 return String.fromCharCode(ch);
48469 }
48470
48471 var token = '';
48472
48473 do {
48474 token += String.fromCharCode(ch);
48475 ch = this.nextChar();
48476 } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch));
48477
48478 return token;
48479 },
48480 readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {
48481 if (lenIV === -1) {
48482 return bytes;
48483 }
48484
48485 return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);
48486 },
48487 extractFontProgram: function Type1Parser_extractFontProgram() {
48488 var stream = this.stream;
48489 var subrs = [],
48490 charstrings = [];
48491 var privateData = Object.create(null);
48492 privateData['lenIV'] = 4;
48493 var program = {
48494 subrs: [],
48495 charstrings: [],
48496 properties: {
48497 'privateData': privateData
48498 }
48499 };
48500 var token, length, data, lenIV, encoded;
48501
48502 while ((token = this.getToken()) !== null) {
48503 if (token !== '/') {
48504 continue;
48505 }
48506
48507 token = this.getToken();
48508
48509 switch (token) {
48510 case 'CharStrings':
48511 this.getToken();
48512 this.getToken();
48513 this.getToken();
48514 this.getToken();
48515
48516 while (true) {
48517 token = this.getToken();
48518
48519 if (token === null || token === 'end') {
48520 break;
48521 }
48522
48523 if (token !== '/') {
48524 continue;
48525 }
48526
48527 var glyph = this.getToken();
48528 length = this.readInt();
48529 this.getToken();
48530 data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
48531 lenIV = program.properties.privateData['lenIV'];
48532 encoded = this.readCharStrings(data, lenIV);
48533 this.nextChar();
48534 token = this.getToken();
48535
48536 if (token === 'noaccess') {
48537 this.getToken();
48538 }
48539
48540 charstrings.push({
48541 glyph: glyph,
48542 encoded: encoded
48543 });
48544 }
48545
48546 break;
48547
48548 case 'Subrs':
48549 this.readInt();
48550 this.getToken();
48551
48552 while (this.getToken() === 'dup') {
48553 var index = this.readInt();
48554 length = this.readInt();
48555 this.getToken();
48556 data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
48557 lenIV = program.properties.privateData['lenIV'];
48558 encoded = this.readCharStrings(data, lenIV);
48559 this.nextChar();
48560 token = this.getToken();
48561
48562 if (token === 'noaccess') {
48563 this.getToken();
48564 }
48565
48566 subrs[index] = encoded;
48567 }
48568
48569 break;
48570
48571 case 'BlueValues':
48572 case 'OtherBlues':
48573 case 'FamilyBlues':
48574 case 'FamilyOtherBlues':
48575 var blueArray = this.readNumberArray();
48576
48577 if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {
48578 program.properties.privateData[token] = blueArray;
48579 }
48580
48581 break;
48582
48583 case 'StemSnapH':
48584 case 'StemSnapV':
48585 program.properties.privateData[token] = this.readNumberArray();
48586 break;
48587
48588 case 'StdHW':
48589 case 'StdVW':
48590 program.properties.privateData[token] = this.readNumberArray()[0];
48591 break;
48592
48593 case 'BlueShift':
48594 case 'lenIV':
48595 case 'BlueFuzz':
48596 case 'BlueScale':
48597 case 'LanguageGroup':
48598 case 'ExpansionFactor':
48599 program.properties.privateData[token] = this.readNumber();
48600 break;
48601
48602 case 'ForceBold':
48603 program.properties.privateData[token] = this.readBoolean();
48604 break;
48605 }
48606 }
48607
48608 for (var i = 0; i < charstrings.length; i++) {
48609 glyph = charstrings[i].glyph;
48610 encoded = charstrings[i].encoded;
48611 var charString = new Type1CharString();
48612 var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);
48613 var output = charString.output;
48614
48615 if (error) {
48616 output = [14];
48617 }
48618
48619 program.charstrings.push({
48620 glyphName: glyph,
48621 charstring: output,
48622 width: charString.width,
48623 lsb: charString.lsb,
48624 seac: charString.seac
48625 });
48626 }
48627
48628 return program;
48629 },
48630 extractFontHeader: function Type1Parser_extractFontHeader(properties) {
48631 var token;
48632
48633 while ((token = this.getToken()) !== null) {
48634 if (token !== '/') {
48635 continue;
48636 }
48637
48638 token = this.getToken();
48639
48640 switch (token) {
48641 case 'FontMatrix':
48642 var matrix = this.readNumberArray();
48643 properties.fontMatrix = matrix;
48644 break;
48645
48646 case 'Encoding':
48647 var encodingArg = this.getToken();
48648 var encoding;
48649
48650 if (!/^\d+$/.test(encodingArg)) {
48651 encoding = (0, _encodings.getEncoding)(encodingArg);
48652 } else {
48653 encoding = [];
48654 var size = parseInt(encodingArg, 10) | 0;
48655 this.getToken();
48656
48657 for (var j = 0; j < size; j++) {
48658 token = this.getToken();
48659
48660 while (token !== 'dup' && token !== 'def') {
48661 token = this.getToken();
48662
48663 if (token === null) {
48664 return;
48665 }
48666 }
48667
48668 if (token === 'def') {
48669 break;
48670 }
48671
48672 var index = this.readInt();
48673 this.getToken();
48674 var glyph = this.getToken();
48675 encoding[index] = glyph;
48676 this.getToken();
48677 }
48678 }
48679
48680 properties.builtInEncoding = encoding;
48681 break;
48682
48683 case 'FontBBox':
48684 var fontBBox = this.readNumberArray();
48685 properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
48686 properties.descent = Math.min(fontBBox[1], fontBBox[3]);
48687 properties.ascentScaled = true;
48688 break;
48689 }
48690 }
48691 }
48692 };
48693 return Type1Parser;
48694}();
48695
48696exports.Type1Parser = Type1Parser;
48697
48698/***/ }),
48699/* 183 */
48700/***/ (function(module, exports, __w_pdfjs_require__) {
48701
48702"use strict";
48703
48704
48705Object.defineProperty(exports, "__esModule", {
48706 value: true
48707});
48708exports.getTilingPatternIR = getTilingPatternIR;
48709exports.Pattern = void 0;
48710
48711var _util = __w_pdfjs_require__(5);
48712
48713var _colorspace = __w_pdfjs_require__(169);
48714
48715var _primitives = __w_pdfjs_require__(151);
48716
48717var _core_utils = __w_pdfjs_require__(154);
48718
48719var ShadingType = {
48720 FUNCTION_BASED: 1,
48721 AXIAL: 2,
48722 RADIAL: 3,
48723 FREE_FORM_MESH: 4,
48724 LATTICE_FORM_MESH: 5,
48725 COONS_PATCH_MESH: 6,
48726 TENSOR_PATCH_MESH: 7
48727};
48728
48729var Pattern = function PatternClosure() {
48730 function Pattern() {
48731 (0, _util.unreachable)('should not call Pattern constructor');
48732 }
48733
48734 Pattern.prototype = {
48735 getPattern: function Pattern_getPattern(ctx) {
48736 (0, _util.unreachable)("Should not call Pattern.getStyle: ".concat(ctx));
48737 }
48738 };
48739
48740 Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {
48741 var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
48742 var type = dict.get('ShadingType');
48743
48744 try {
48745 switch (type) {
48746 case ShadingType.AXIAL:
48747 case ShadingType.RADIAL:
48748 return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);
48749
48750 case ShadingType.FREE_FORM_MESH:
48751 case ShadingType.LATTICE_FORM_MESH:
48752 case ShadingType.COONS_PATCH_MESH:
48753 case ShadingType.TENSOR_PATCH_MESH:
48754 return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);
48755
48756 default:
48757 throw new _util.FormatError('Unsupported ShadingType: ' + type);
48758 }
48759 } catch (ex) {
48760 if (ex instanceof _core_utils.MissingDataException) {
48761 throw ex;
48762 }
48763
48764 handler.send('UnsupportedFeature', {
48765 featureId: _util.UNSUPPORTED_FEATURES.shadingPattern
48766 });
48767 (0, _util.warn)(ex);
48768 return new Shadings.Dummy();
48769 }
48770 };
48771
48772 return Pattern;
48773}();
48774
48775exports.Pattern = Pattern;
48776var Shadings = {};
48777Shadings.SMALL_NUMBER = 1e-6;
48778
48779Shadings.RadialAxial = function RadialAxialClosure() {
48780 function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {
48781 this.matrix = matrix;
48782 this.coordsArr = dict.getArray('Coords');
48783 this.shadingType = dict.get('ShadingType');
48784 this.type = 'Pattern';
48785 var cs = dict.get('ColorSpace', 'CS');
48786 cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
48787 this.cs = cs;
48788 var t0 = 0.0,
48789 t1 = 1.0;
48790
48791 if (dict.has('Domain')) {
48792 var domainArr = dict.getArray('Domain');
48793 t0 = domainArr[0];
48794 t1 = domainArr[1];
48795 }
48796
48797 var extendStart = false,
48798 extendEnd = false;
48799
48800 if (dict.has('Extend')) {
48801 var extendArr = dict.getArray('Extend');
48802 extendStart = extendArr[0];
48803 extendEnd = extendArr[1];
48804 }
48805
48806 if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {
48807 var x1 = this.coordsArr[0];
48808 var y1 = this.coordsArr[1];
48809 var r1 = this.coordsArr[2];
48810 var x2 = this.coordsArr[3];
48811 var y2 = this.coordsArr[4];
48812 var r2 = this.coordsArr[5];
48813 var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
48814
48815 if (r1 <= r2 + distance && r2 <= r1 + distance) {
48816 (0, _util.warn)('Unsupported radial gradient.');
48817 }
48818 }
48819
48820 this.extendStart = extendStart;
48821 this.extendEnd = extendEnd;
48822 var fnObj = dict.get('Function');
48823 var fn = pdfFunctionFactory.createFromArray(fnObj);
48824 var diff = t1 - t0;
48825 var step = diff / 10;
48826 var colorStops = this.colorStops = [];
48827
48828 if (t0 >= t1 || step <= 0) {
48829 (0, _util.info)('Bad shading domain.');
48830 return;
48831 }
48832
48833 var color = new Float32Array(cs.numComps),
48834 ratio = new Float32Array(1);
48835 var rgbColor;
48836
48837 for (var i = t0; i <= t1; i += step) {
48838 ratio[0] = i;
48839 fn(ratio, 0, color, 0);
48840 rgbColor = cs.getRgb(color, 0);
48841
48842 var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
48843
48844 colorStops.push([(i - t0) / diff, cssColor]);
48845 }
48846
48847 var background = 'transparent';
48848
48849 if (dict.has('Background')) {
48850 rgbColor = cs.getRgb(dict.get('Background'), 0);
48851 background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
48852 }
48853
48854 if (!extendStart) {
48855 colorStops.unshift([0, background]);
48856 colorStops[1][0] += Shadings.SMALL_NUMBER;
48857 }
48858
48859 if (!extendEnd) {
48860 colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;
48861 colorStops.push([1, background]);
48862 }
48863
48864 this.colorStops = colorStops;
48865 }
48866
48867 RadialAxial.prototype = {
48868 getIR: function RadialAxial_getIR() {
48869 var coordsArr = this.coordsArr;
48870 var shadingType = this.shadingType;
48871 var type, p0, p1, r0, r1;
48872
48873 if (shadingType === ShadingType.AXIAL) {
48874 p0 = [coordsArr[0], coordsArr[1]];
48875 p1 = [coordsArr[2], coordsArr[3]];
48876 r0 = null;
48877 r1 = null;
48878 type = 'axial';
48879 } else if (shadingType === ShadingType.RADIAL) {
48880 p0 = [coordsArr[0], coordsArr[1]];
48881 p1 = [coordsArr[3], coordsArr[4]];
48882 r0 = coordsArr[2];
48883 r1 = coordsArr[5];
48884 type = 'radial';
48885 } else {
48886 (0, _util.unreachable)("getPattern type unknown: ".concat(shadingType));
48887 }
48888
48889 var matrix = this.matrix;
48890
48891 if (matrix) {
48892 p0 = _util.Util.applyTransform(p0, matrix);
48893 p1 = _util.Util.applyTransform(p1, matrix);
48894
48895 if (shadingType === ShadingType.RADIAL) {
48896 var scale = _util.Util.singularValueDecompose2dScale(matrix);
48897
48898 r0 *= scale[0];
48899 r1 *= scale[1];
48900 }
48901 }
48902
48903 return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
48904 }
48905 };
48906 return RadialAxial;
48907}();
48908
48909Shadings.Mesh = function MeshClosure() {
48910 function MeshStreamReader(stream, context) {
48911 this.stream = stream;
48912 this.context = context;
48913 this.buffer = 0;
48914 this.bufferLength = 0;
48915 var numComps = context.numComps;
48916 this.tmpCompsBuf = new Float32Array(numComps);
48917 var csNumComps = context.colorSpace.numComps;
48918 this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;
48919 }
48920
48921 MeshStreamReader.prototype = {
48922 get hasData() {
48923 if (this.stream.end) {
48924 return this.stream.pos < this.stream.end;
48925 }
48926
48927 if (this.bufferLength > 0) {
48928 return true;
48929 }
48930
48931 var nextByte = this.stream.getByte();
48932
48933 if (nextByte < 0) {
48934 return false;
48935 }
48936
48937 this.buffer = nextByte;
48938 this.bufferLength = 8;
48939 return true;
48940 },
48941
48942 readBits: function MeshStreamReader_readBits(n) {
48943 var buffer = this.buffer;
48944 var bufferLength = this.bufferLength;
48945
48946 if (n === 32) {
48947 if (bufferLength === 0) {
48948 return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;
48949 }
48950
48951 buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();
48952 var nextByte = this.stream.getByte();
48953 this.buffer = nextByte & (1 << bufferLength) - 1;
48954 return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0;
48955 }
48956
48957 if (n === 8 && bufferLength === 0) {
48958 return this.stream.getByte();
48959 }
48960
48961 while (bufferLength < n) {
48962 buffer = buffer << 8 | this.stream.getByte();
48963 bufferLength += 8;
48964 }
48965
48966 bufferLength -= n;
48967 this.bufferLength = bufferLength;
48968 this.buffer = buffer & (1 << bufferLength) - 1;
48969 return buffer >> bufferLength;
48970 },
48971 align: function MeshStreamReader_align() {
48972 this.buffer = 0;
48973 this.bufferLength = 0;
48974 },
48975 readFlag: function MeshStreamReader_readFlag() {
48976 return this.readBits(this.context.bitsPerFlag);
48977 },
48978 readCoordinate: function MeshStreamReader_readCoordinate() {
48979 var bitsPerCoordinate = this.context.bitsPerCoordinate;
48980 var xi = this.readBits(bitsPerCoordinate);
48981 var yi = this.readBits(bitsPerCoordinate);
48982 var decode = this.context.decode;
48983 var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;
48984 return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];
48985 },
48986 readComponents: function MeshStreamReader_readComponents() {
48987 var numComps = this.context.numComps;
48988 var bitsPerComponent = this.context.bitsPerComponent;
48989 var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;
48990 var decode = this.context.decode;
48991 var components = this.tmpCompsBuf;
48992
48993 for (var i = 0, j = 4; i < numComps; i++, j += 2) {
48994 var ci = this.readBits(bitsPerComponent);
48995 components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];
48996 }
48997
48998 var color = this.tmpCsCompsBuf;
48999
49000 if (this.context.colorFn) {
49001 this.context.colorFn(components, 0, color, 0);
49002 }
49003
49004 return this.context.colorSpace.getRgb(color, 0);
49005 }
49006 };
49007
49008 function decodeType4Shading(mesh, reader) {
49009 var coords = mesh.coords;
49010 var colors = mesh.colors;
49011 var operators = [];
49012 var ps = [];
49013 var verticesLeft = 0;
49014
49015 while (reader.hasData) {
49016 var f = reader.readFlag();
49017 var coord = reader.readCoordinate();
49018 var color = reader.readComponents();
49019
49020 if (verticesLeft === 0) {
49021 if (!(0 <= f && f <= 2)) {
49022 throw new _util.FormatError('Unknown type4 flag');
49023 }
49024
49025 switch (f) {
49026 case 0:
49027 verticesLeft = 3;
49028 break;
49029
49030 case 1:
49031 ps.push(ps[ps.length - 2], ps[ps.length - 1]);
49032 verticesLeft = 1;
49033 break;
49034
49035 case 2:
49036 ps.push(ps[ps.length - 3], ps[ps.length - 1]);
49037 verticesLeft = 1;
49038 break;
49039 }
49040
49041 operators.push(f);
49042 }
49043
49044 ps.push(coords.length);
49045 coords.push(coord);
49046 colors.push(color);
49047 verticesLeft--;
49048 reader.align();
49049 }
49050
49051 mesh.figures.push({
49052 type: 'triangles',
49053 coords: new Int32Array(ps),
49054 colors: new Int32Array(ps)
49055 });
49056 }
49057
49058 function decodeType5Shading(mesh, reader, verticesPerRow) {
49059 var coords = mesh.coords;
49060 var colors = mesh.colors;
49061 var ps = [];
49062
49063 while (reader.hasData) {
49064 var coord = reader.readCoordinate();
49065 var color = reader.readComponents();
49066 ps.push(coords.length);
49067 coords.push(coord);
49068 colors.push(color);
49069 }
49070
49071 mesh.figures.push({
49072 type: 'lattice',
49073 coords: new Int32Array(ps),
49074 colors: new Int32Array(ps),
49075 verticesPerRow: verticesPerRow
49076 });
49077 }
49078
49079 var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
49080 var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
49081 var TRIANGLE_DENSITY = 20;
49082
49083 var getB = function getBClosure() {
49084 function buildB(count) {
49085 var lut = [];
49086
49087 for (var i = 0; i <= count; i++) {
49088 var t = i / count,
49089 t_ = 1 - t;
49090 lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));
49091 }
49092
49093 return lut;
49094 }
49095
49096 var cache = [];
49097 return function getB(count) {
49098 if (!cache[count]) {
49099 cache[count] = buildB(count);
49100 }
49101
49102 return cache[count];
49103 };
49104 }();
49105
49106 function buildFigureFromPatch(mesh, index) {
49107 var figure = mesh.figures[index];
49108 (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure');
49109 var coords = mesh.coords,
49110 colors = mesh.colors;
49111 var pi = figure.coords;
49112 var ci = figure.colors;
49113 var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
49114 var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
49115 var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
49116 var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
49117 var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0]));
49118 splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));
49119 var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1]));
49120 splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));
49121 var verticesPerRow = splitXBy + 1;
49122 var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);
49123 var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);
49124 var k = 0;
49125 var cl = new Uint8Array(3),
49126 cr = new Uint8Array(3);
49127 var c0 = colors[ci[0]],
49128 c1 = colors[ci[1]],
49129 c2 = colors[ci[2]],
49130 c3 = colors[ci[3]];
49131 var bRow = getB(splitYBy),
49132 bCol = getB(splitXBy);
49133
49134 for (var row = 0; row <= splitYBy; row++) {
49135 cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;
49136 cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;
49137 cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;
49138 cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;
49139 cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;
49140 cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;
49141
49142 for (var col = 0; col <= splitXBy; col++, k++) {
49143 if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {
49144 continue;
49145 }
49146
49147 var x = 0,
49148 y = 0;
49149 var q = 0;
49150
49151 for (var i = 0; i <= 3; i++) {
49152 for (var j = 0; j <= 3; j++, q++) {
49153 var m = bRow[row][i] * bCol[col][j];
49154 x += coords[pi[q]][0] * m;
49155 y += coords[pi[q]][1] * m;
49156 }
49157 }
49158
49159 figureCoords[k] = coords.length;
49160 coords.push([x, y]);
49161 figureColors[k] = colors.length;
49162 var newColor = new Uint8Array(3);
49163 newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;
49164 newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;
49165 newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;
49166 colors.push(newColor);
49167 }
49168 }
49169
49170 figureCoords[0] = pi[0];
49171 figureColors[0] = ci[0];
49172 figureCoords[splitXBy] = pi[3];
49173 figureColors[splitXBy] = ci[1];
49174 figureCoords[verticesPerRow * splitYBy] = pi[12];
49175 figureColors[verticesPerRow * splitYBy] = ci[2];
49176 figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];
49177 figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];
49178 mesh.figures[index] = {
49179 type: 'lattice',
49180 coords: figureCoords,
49181 colors: figureColors,
49182 verticesPerRow: verticesPerRow
49183 };
49184 }
49185
49186 function decodeType6Shading(mesh, reader) {
49187 var coords = mesh.coords;
49188 var colors = mesh.colors;
49189 var ps = new Int32Array(16);
49190 var cs = new Int32Array(4);
49191
49192 while (reader.hasData) {
49193 var f = reader.readFlag();
49194
49195 if (!(0 <= f && f <= 3)) {
49196 throw new _util.FormatError('Unknown type6 flag');
49197 }
49198
49199 var i, ii;
49200 var pi = coords.length;
49201
49202 for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {
49203 coords.push(reader.readCoordinate());
49204 }
49205
49206 var ci = colors.length;
49207
49208 for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
49209 colors.push(reader.readComponents());
49210 }
49211
49212 var tmp1, tmp2, tmp3, tmp4;
49213
49214 switch (f) {
49215 case 0:
49216 ps[12] = pi + 3;
49217 ps[13] = pi + 4;
49218 ps[14] = pi + 5;
49219 ps[15] = pi + 6;
49220 ps[8] = pi + 2;
49221 ps[11] = pi + 7;
49222 ps[4] = pi + 1;
49223 ps[7] = pi + 8;
49224 ps[0] = pi;
49225 ps[1] = pi + 11;
49226 ps[2] = pi + 10;
49227 ps[3] = pi + 9;
49228 cs[2] = ci + 1;
49229 cs[3] = ci + 2;
49230 cs[0] = ci;
49231 cs[1] = ci + 3;
49232 break;
49233
49234 case 1:
49235 tmp1 = ps[12];
49236 tmp2 = ps[13];
49237 tmp3 = ps[14];
49238 tmp4 = ps[15];
49239 ps[12] = tmp4;
49240 ps[13] = pi + 0;
49241 ps[14] = pi + 1;
49242 ps[15] = pi + 2;
49243 ps[8] = tmp3;
49244 ps[11] = pi + 3;
49245 ps[4] = tmp2;
49246 ps[7] = pi + 4;
49247 ps[0] = tmp1;
49248 ps[1] = pi + 7;
49249 ps[2] = pi + 6;
49250 ps[3] = pi + 5;
49251 tmp1 = cs[2];
49252 tmp2 = cs[3];
49253 cs[2] = tmp2;
49254 cs[3] = ci;
49255 cs[0] = tmp1;
49256 cs[1] = ci + 1;
49257 break;
49258
49259 case 2:
49260 tmp1 = ps[15];
49261 tmp2 = ps[11];
49262 ps[12] = ps[3];
49263 ps[13] = pi + 0;
49264 ps[14] = pi + 1;
49265 ps[15] = pi + 2;
49266 ps[8] = ps[7];
49267 ps[11] = pi + 3;
49268 ps[4] = tmp2;
49269 ps[7] = pi + 4;
49270 ps[0] = tmp1;
49271 ps[1] = pi + 7;
49272 ps[2] = pi + 6;
49273 ps[3] = pi + 5;
49274 tmp1 = cs[3];
49275 cs[2] = cs[1];
49276 cs[3] = ci;
49277 cs[0] = tmp1;
49278 cs[1] = ci + 1;
49279 break;
49280
49281 case 3:
49282 ps[12] = ps[0];
49283 ps[13] = pi + 0;
49284 ps[14] = pi + 1;
49285 ps[15] = pi + 2;
49286 ps[8] = ps[1];
49287 ps[11] = pi + 3;
49288 ps[4] = ps[2];
49289 ps[7] = pi + 4;
49290 ps[0] = ps[3];
49291 ps[1] = pi + 7;
49292 ps[2] = pi + 6;
49293 ps[3] = pi + 5;
49294 cs[2] = cs[0];
49295 cs[3] = ci;
49296 cs[0] = cs[1];
49297 cs[1] = ci + 1;
49298 break;
49299 }
49300
49301 ps[5] = coords.length;
49302 coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);
49303 ps[6] = coords.length;
49304 coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);
49305 ps[9] = coords.length;
49306 coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);
49307 ps[10] = coords.length;
49308 coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);
49309 mesh.figures.push({
49310 type: 'patch',
49311 coords: new Int32Array(ps),
49312 colors: new Int32Array(cs)
49313 });
49314 }
49315 }
49316
49317 function decodeType7Shading(mesh, reader) {
49318 var coords = mesh.coords;
49319 var colors = mesh.colors;
49320 var ps = new Int32Array(16);
49321 var cs = new Int32Array(4);
49322
49323 while (reader.hasData) {
49324 var f = reader.readFlag();
49325
49326 if (!(0 <= f && f <= 3)) {
49327 throw new _util.FormatError('Unknown type7 flag');
49328 }
49329
49330 var i, ii;
49331 var pi = coords.length;
49332
49333 for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {
49334 coords.push(reader.readCoordinate());
49335 }
49336
49337 var ci = colors.length;
49338
49339 for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
49340 colors.push(reader.readComponents());
49341 }
49342
49343 var tmp1, tmp2, tmp3, tmp4;
49344
49345 switch (f) {
49346 case 0:
49347 ps[12] = pi + 3;
49348 ps[13] = pi + 4;
49349 ps[14] = pi + 5;
49350 ps[15] = pi + 6;
49351 ps[8] = pi + 2;
49352 ps[9] = pi + 13;
49353 ps[10] = pi + 14;
49354 ps[11] = pi + 7;
49355 ps[4] = pi + 1;
49356 ps[5] = pi + 12;
49357 ps[6] = pi + 15;
49358 ps[7] = pi + 8;
49359 ps[0] = pi;
49360 ps[1] = pi + 11;
49361 ps[2] = pi + 10;
49362 ps[3] = pi + 9;
49363 cs[2] = ci + 1;
49364 cs[3] = ci + 2;
49365 cs[0] = ci;
49366 cs[1] = ci + 3;
49367 break;
49368
49369 case 1:
49370 tmp1 = ps[12];
49371 tmp2 = ps[13];
49372 tmp3 = ps[14];
49373 tmp4 = ps[15];
49374 ps[12] = tmp4;
49375 ps[13] = pi + 0;
49376 ps[14] = pi + 1;
49377 ps[15] = pi + 2;
49378 ps[8] = tmp3;
49379 ps[9] = pi + 9;
49380 ps[10] = pi + 10;
49381 ps[11] = pi + 3;
49382 ps[4] = tmp2;
49383 ps[5] = pi + 8;
49384 ps[6] = pi + 11;
49385 ps[7] = pi + 4;
49386 ps[0] = tmp1;
49387 ps[1] = pi + 7;
49388 ps[2] = pi + 6;
49389 ps[3] = pi + 5;
49390 tmp1 = cs[2];
49391 tmp2 = cs[3];
49392 cs[2] = tmp2;
49393 cs[3] = ci;
49394 cs[0] = tmp1;
49395 cs[1] = ci + 1;
49396 break;
49397
49398 case 2:
49399 tmp1 = ps[15];
49400 tmp2 = ps[11];
49401 ps[12] = ps[3];
49402 ps[13] = pi + 0;
49403 ps[14] = pi + 1;
49404 ps[15] = pi + 2;
49405 ps[8] = ps[7];
49406 ps[9] = pi + 9;
49407 ps[10] = pi + 10;
49408 ps[11] = pi + 3;
49409 ps[4] = tmp2;
49410 ps[5] = pi + 8;
49411 ps[6] = pi + 11;
49412 ps[7] = pi + 4;
49413 ps[0] = tmp1;
49414 ps[1] = pi + 7;
49415 ps[2] = pi + 6;
49416 ps[3] = pi + 5;
49417 tmp1 = cs[3];
49418 cs[2] = cs[1];
49419 cs[3] = ci;
49420 cs[0] = tmp1;
49421 cs[1] = ci + 1;
49422 break;
49423
49424 case 3:
49425 ps[12] = ps[0];
49426 ps[13] = pi + 0;
49427 ps[14] = pi + 1;
49428 ps[15] = pi + 2;
49429 ps[8] = ps[1];
49430 ps[9] = pi + 9;
49431 ps[10] = pi + 10;
49432 ps[11] = pi + 3;
49433 ps[4] = ps[2];
49434 ps[5] = pi + 8;
49435 ps[6] = pi + 11;
49436 ps[7] = pi + 4;
49437 ps[0] = ps[3];
49438 ps[1] = pi + 7;
49439 ps[2] = pi + 6;
49440 ps[3] = pi + 5;
49441 cs[2] = cs[0];
49442 cs[3] = ci;
49443 cs[0] = cs[1];
49444 cs[1] = ci + 1;
49445 break;
49446 }
49447
49448 mesh.figures.push({
49449 type: 'patch',
49450 coords: new Int32Array(ps),
49451 colors: new Int32Array(cs)
49452 });
49453 }
49454 }
49455
49456 function updateBounds(mesh) {
49457 var minX = mesh.coords[0][0],
49458 minY = mesh.coords[0][1],
49459 maxX = minX,
49460 maxY = minY;
49461
49462 for (var i = 1, ii = mesh.coords.length; i < ii; i++) {
49463 var x = mesh.coords[i][0],
49464 y = mesh.coords[i][1];
49465 minX = minX > x ? x : minX;
49466 minY = minY > y ? y : minY;
49467 maxX = maxX < x ? x : maxX;
49468 maxY = maxY < y ? y : maxY;
49469 }
49470
49471 mesh.bounds = [minX, minY, maxX, maxY];
49472 }
49473
49474 function packData(mesh) {
49475 var i, ii, j, jj;
49476 var coords = mesh.coords;
49477 var coordsPacked = new Float32Array(coords.length * 2);
49478
49479 for (i = 0, j = 0, ii = coords.length; i < ii; i++) {
49480 var xy = coords[i];
49481 coordsPacked[j++] = xy[0];
49482 coordsPacked[j++] = xy[1];
49483 }
49484
49485 mesh.coords = coordsPacked;
49486 var colors = mesh.colors;
49487 var colorsPacked = new Uint8Array(colors.length * 3);
49488
49489 for (i = 0, j = 0, ii = colors.length; i < ii; i++) {
49490 var c = colors[i];
49491 colorsPacked[j++] = c[0];
49492 colorsPacked[j++] = c[1];
49493 colorsPacked[j++] = c[2];
49494 }
49495
49496 mesh.colors = colorsPacked;
49497 var figures = mesh.figures;
49498
49499 for (i = 0, ii = figures.length; i < ii; i++) {
49500 var figure = figures[i],
49501 ps = figure.coords,
49502 cs = figure.colors;
49503
49504 for (j = 0, jj = ps.length; j < jj; j++) {
49505 ps[j] *= 2;
49506 cs[j] *= 3;
49507 }
49508 }
49509 }
49510
49511 function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {
49512 if (!(0, _primitives.isStream)(stream)) {
49513 throw new _util.FormatError('Mesh data is not a stream');
49514 }
49515
49516 var dict = stream.dict;
49517 this.matrix = matrix;
49518 this.shadingType = dict.get('ShadingType');
49519 this.type = 'Pattern';
49520 this.bbox = dict.getArray('BBox');
49521 var cs = dict.get('ColorSpace', 'CS');
49522 cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
49523 this.cs = cs;
49524 this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null;
49525 var fnObj = dict.get('Function');
49526 var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;
49527 this.coords = [];
49528 this.colors = [];
49529 this.figures = [];
49530 var decodeContext = {
49531 bitsPerCoordinate: dict.get('BitsPerCoordinate'),
49532 bitsPerComponent: dict.get('BitsPerComponent'),
49533 bitsPerFlag: dict.get('BitsPerFlag'),
49534 decode: dict.getArray('Decode'),
49535 colorFn: fn,
49536 colorSpace: cs,
49537 numComps: fn ? 1 : cs.numComps
49538 };
49539 var reader = new MeshStreamReader(stream, decodeContext);
49540 var patchMesh = false;
49541
49542 switch (this.shadingType) {
49543 case ShadingType.FREE_FORM_MESH:
49544 decodeType4Shading(this, reader);
49545 break;
49546
49547 case ShadingType.LATTICE_FORM_MESH:
49548 var verticesPerRow = dict.get('VerticesPerRow') | 0;
49549
49550 if (verticesPerRow < 2) {
49551 throw new _util.FormatError('Invalid VerticesPerRow');
49552 }
49553
49554 decodeType5Shading(this, reader, verticesPerRow);
49555 break;
49556
49557 case ShadingType.COONS_PATCH_MESH:
49558 decodeType6Shading(this, reader);
49559 patchMesh = true;
49560 break;
49561
49562 case ShadingType.TENSOR_PATCH_MESH:
49563 decodeType7Shading(this, reader);
49564 patchMesh = true;
49565 break;
49566
49567 default:
49568 (0, _util.unreachable)('Unsupported mesh type.');
49569 break;
49570 }
49571
49572 if (patchMesh) {
49573 updateBounds(this);
49574
49575 for (var i = 0, ii = this.figures.length; i < ii; i++) {
49576 buildFigureFromPatch(this, i);
49577 }
49578 }
49579
49580 updateBounds(this);
49581 packData(this);
49582 }
49583
49584 Mesh.prototype = {
49585 getIR: function Mesh_getIR() {
49586 return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];
49587 }
49588 };
49589 return Mesh;
49590}();
49591
49592Shadings.Dummy = function DummyClosure() {
49593 function Dummy() {
49594 this.type = 'Pattern';
49595 }
49596
49597 Dummy.prototype = {
49598 getIR: function Dummy_getIR() {
49599 return ['Dummy'];
49600 }
49601 };
49602 return Dummy;
49603}();
49604
49605function getTilingPatternIR(operatorList, dict, args) {
49606 var matrix = dict.getArray('Matrix');
49607
49608 var bbox = _util.Util.normalizeRect(dict.getArray('BBox'));
49609
49610 var xstep = dict.get('XStep');
49611 var ystep = dict.get('YStep');
49612 var paintType = dict.get('PaintType');
49613 var tilingType = dict.get('TilingType');
49614
49615 if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {
49616 throw new _util.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(bbox, "]."));
49617 }
49618
49619 return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
49620}
49621
49622/***/ }),
49623/* 184 */
49624/***/ (function(module, exports, __w_pdfjs_require__) {
49625
49626"use strict";
49627
49628
49629Object.defineProperty(exports, "__esModule", {
49630 value: true
49631});
49632exports.bidi = bidi;
49633
49634var _util = __w_pdfjs_require__(5);
49635
49636var baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'];
49637var arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'];
49638
49639function isOdd(i) {
49640 return (i & 1) !== 0;
49641}
49642
49643function isEven(i) {
49644 return (i & 1) === 0;
49645}
49646
49647function findUnequal(arr, start, value) {
49648 for (var j = start, jj = arr.length; j < jj; ++j) {
49649 if (arr[j] !== value) {
49650 return j;
49651 }
49652 }
49653
49654 return j;
49655}
49656
49657function setValues(arr, start, end, value) {
49658 for (var j = start; j < end; ++j) {
49659 arr[j] = value;
49660 }
49661}
49662
49663function reverseValues(arr, start, end) {
49664 for (var i = start, j = end - 1; i < j; ++i, --j) {
49665 var temp = arr[i];
49666 arr[i] = arr[j];
49667 arr[j] = temp;
49668 }
49669}
49670
49671function createBidiText(str, isLTR, vertical) {
49672 return {
49673 str: str,
49674 dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl'
49675 };
49676}
49677
49678var chars = [];
49679var types = [];
49680
49681function bidi(str, startLevel, vertical) {
49682 var isLTR = true;
49683 var strLength = str.length;
49684
49685 if (strLength === 0 || vertical) {
49686 return createBidiText(str, isLTR, vertical);
49687 }
49688
49689 chars.length = strLength;
49690 types.length = strLength;
49691 var numBidi = 0;
49692 var i, ii;
49693
49694 for (i = 0; i < strLength; ++i) {
49695 chars[i] = str.charAt(i);
49696 var charCode = str.charCodeAt(i);
49697 var charType = 'L';
49698
49699 if (charCode <= 0x00ff) {
49700 charType = baseTypes[charCode];
49701 } else if (0x0590 <= charCode && charCode <= 0x05f4) {
49702 charType = 'R';
49703 } else if (0x0600 <= charCode && charCode <= 0x06ff) {
49704 charType = arabicTypes[charCode & 0xff];
49705
49706 if (!charType) {
49707 (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16));
49708 }
49709 } else if (0x0700 <= charCode && charCode <= 0x08AC) {
49710 charType = 'AL';
49711 }
49712
49713 if (charType === 'R' || charType === 'AL' || charType === 'AN') {
49714 numBidi++;
49715 }
49716
49717 types[i] = charType;
49718 }
49719
49720 if (numBidi === 0) {
49721 isLTR = true;
49722 return createBidiText(str, isLTR);
49723 }
49724
49725 if (startLevel === -1) {
49726 if (numBidi / strLength < 0.3) {
49727 isLTR = true;
49728 startLevel = 0;
49729 } else {
49730 isLTR = false;
49731 startLevel = 1;
49732 }
49733 }
49734
49735 var levels = [];
49736
49737 for (i = 0; i < strLength; ++i) {
49738 levels[i] = startLevel;
49739 }
49740
49741 var e = isOdd(startLevel) ? 'R' : 'L';
49742 var sor = e;
49743 var eor = sor;
49744 var lastType = sor;
49745
49746 for (i = 0; i < strLength; ++i) {
49747 if (types[i] === 'NSM') {
49748 types[i] = lastType;
49749 } else {
49750 lastType = types[i];
49751 }
49752 }
49753
49754 lastType = sor;
49755 var t;
49756
49757 for (i = 0; i < strLength; ++i) {
49758 t = types[i];
49759
49760 if (t === 'EN') {
49761 types[i] = lastType === 'AL' ? 'AN' : 'EN';
49762 } else if (t === 'R' || t === 'L' || t === 'AL') {
49763 lastType = t;
49764 }
49765 }
49766
49767 for (i = 0; i < strLength; ++i) {
49768 t = types[i];
49769
49770 if (t === 'AL') {
49771 types[i] = 'R';
49772 }
49773 }
49774
49775 for (i = 1; i < strLength - 1; ++i) {
49776 if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {
49777 types[i] = 'EN';
49778 }
49779
49780 if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) {
49781 types[i] = types[i - 1];
49782 }
49783 }
49784
49785 for (i = 0; i < strLength; ++i) {
49786 if (types[i] === 'EN') {
49787 var j;
49788
49789 for (j = i - 1; j >= 0; --j) {
49790 if (types[j] !== 'ET') {
49791 break;
49792 }
49793
49794 types[j] = 'EN';
49795 }
49796
49797 for (j = i + 1; j < strLength; ++j) {
49798 if (types[j] !== 'ET') {
49799 break;
49800 }
49801
49802 types[j] = 'EN';
49803 }
49804 }
49805 }
49806
49807 for (i = 0; i < strLength; ++i) {
49808 t = types[i];
49809
49810 if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {
49811 types[i] = 'ON';
49812 }
49813 }
49814
49815 lastType = sor;
49816
49817 for (i = 0; i < strLength; ++i) {
49818 t = types[i];
49819
49820 if (t === 'EN') {
49821 types[i] = lastType === 'L' ? 'L' : 'EN';
49822 } else if (t === 'R' || t === 'L') {
49823 lastType = t;
49824 }
49825 }
49826
49827 for (i = 0; i < strLength; ++i) {
49828 if (types[i] === 'ON') {
49829 var end = findUnequal(types, i + 1, 'ON');
49830 var before = sor;
49831
49832 if (i > 0) {
49833 before = types[i - 1];
49834 }
49835
49836 var after = eor;
49837
49838 if (end + 1 < strLength) {
49839 after = types[end + 1];
49840 }
49841
49842 if (before !== 'L') {
49843 before = 'R';
49844 }
49845
49846 if (after !== 'L') {
49847 after = 'R';
49848 }
49849
49850 if (before === after) {
49851 setValues(types, i, end, before);
49852 }
49853
49854 i = end - 1;
49855 }
49856 }
49857
49858 for (i = 0; i < strLength; ++i) {
49859 if (types[i] === 'ON') {
49860 types[i] = e;
49861 }
49862 }
49863
49864 for (i = 0; i < strLength; ++i) {
49865 t = types[i];
49866
49867 if (isEven(levels[i])) {
49868 if (t === 'R') {
49869 levels[i] += 1;
49870 } else if (t === 'AN' || t === 'EN') {
49871 levels[i] += 2;
49872 }
49873 } else {
49874 if (t === 'L' || t === 'AN' || t === 'EN') {
49875 levels[i] += 1;
49876 }
49877 }
49878 }
49879
49880 var highestLevel = -1;
49881 var lowestOddLevel = 99;
49882 var level;
49883
49884 for (i = 0, ii = levels.length; i < ii; ++i) {
49885 level = levels[i];
49886
49887 if (highestLevel < level) {
49888 highestLevel = level;
49889 }
49890
49891 if (lowestOddLevel > level && isOdd(level)) {
49892 lowestOddLevel = level;
49893 }
49894 }
49895
49896 for (level = highestLevel; level >= lowestOddLevel; --level) {
49897 var start = -1;
49898
49899 for (i = 0, ii = levels.length; i < ii; ++i) {
49900 if (levels[i] < level) {
49901 if (start >= 0) {
49902 reverseValues(chars, start, i);
49903 start = -1;
49904 }
49905 } else if (start < 0) {
49906 start = i;
49907 }
49908 }
49909
49910 if (start >= 0) {
49911 reverseValues(chars, start, levels.length);
49912 }
49913 }
49914
49915 for (i = 0, ii = chars.length; i < ii; ++i) {
49916 var ch = chars[i];
49917
49918 if (ch === '<' || ch === '>') {
49919 chars[i] = '';
49920 }
49921 }
49922
49923 return createBidiText(chars.join(''), isLTR);
49924}
49925
49926/***/ }),
49927/* 185 */
49928/***/ (function(module, exports, __w_pdfjs_require__) {
49929
49930"use strict";
49931
49932
49933Object.defineProperty(exports, "__esModule", {
49934 value: true
49935});
49936exports.getMetrics = void 0;
49937
49938var _core_utils = __w_pdfjs_require__(154);
49939
49940var getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
49941 t['Courier'] = 600;
49942 t['Courier-Bold'] = 600;
49943 t['Courier-BoldOblique'] = 600;
49944 t['Courier-Oblique'] = 600;
49945 t['Helvetica'] = (0, _core_utils.getLookupTableFactory)(function (t) {
49946 t['space'] = 278;
49947 t['exclam'] = 278;
49948 t['quotedbl'] = 355;
49949 t['numbersign'] = 556;
49950 t['dollar'] = 556;
49951 t['percent'] = 889;
49952 t['ampersand'] = 667;
49953 t['quoteright'] = 222;
49954 t['parenleft'] = 333;
49955 t['parenright'] = 333;
49956 t['asterisk'] = 389;
49957 t['plus'] = 584;
49958 t['comma'] = 278;
49959 t['hyphen'] = 333;
49960 t['period'] = 278;
49961 t['slash'] = 278;
49962 t['zero'] = 556;
49963 t['one'] = 556;
49964 t['two'] = 556;
49965 t['three'] = 556;
49966 t['four'] = 556;
49967 t['five'] = 556;
49968 t['six'] = 556;
49969 t['seven'] = 556;
49970 t['eight'] = 556;
49971 t['nine'] = 556;
49972 t['colon'] = 278;
49973 t['semicolon'] = 278;
49974 t['less'] = 584;
49975 t['equal'] = 584;
49976 t['greater'] = 584;
49977 t['question'] = 556;
49978 t['at'] = 1015;
49979 t['A'] = 667;
49980 t['B'] = 667;
49981 t['C'] = 722;
49982 t['D'] = 722;
49983 t['E'] = 667;
49984 t['F'] = 611;
49985 t['G'] = 778;
49986 t['H'] = 722;
49987 t['I'] = 278;
49988 t['J'] = 500;
49989 t['K'] = 667;
49990 t['L'] = 556;
49991 t['M'] = 833;
49992 t['N'] = 722;
49993 t['O'] = 778;
49994 t['P'] = 667;
49995 t['Q'] = 778;
49996 t['R'] = 722;
49997 t['S'] = 667;
49998 t['T'] = 611;
49999 t['U'] = 722;
50000 t['V'] = 667;
50001 t['W'] = 944;
50002 t['X'] = 667;
50003 t['Y'] = 667;
50004 t['Z'] = 611;
50005 t['bracketleft'] = 278;
50006 t['backslash'] = 278;
50007 t['bracketright'] = 278;
50008 t['asciicircum'] = 469;
50009 t['underscore'] = 556;
50010 t['quoteleft'] = 222;
50011 t['a'] = 556;
50012 t['b'] = 556;
50013 t['c'] = 500;
50014 t['d'] = 556;
50015 t['e'] = 556;
50016 t['f'] = 278;
50017 t['g'] = 556;
50018 t['h'] = 556;
50019 t['i'] = 222;
50020 t['j'] = 222;
50021 t['k'] = 500;
50022 t['l'] = 222;
50023 t['m'] = 833;
50024 t['n'] = 556;
50025 t['o'] = 556;
50026 t['p'] = 556;
50027 t['q'] = 556;
50028 t['r'] = 333;
50029 t['s'] = 500;
50030 t['t'] = 278;
50031 t['u'] = 556;
50032 t['v'] = 500;
50033 t['w'] = 722;
50034 t['x'] = 500;
50035 t['y'] = 500;
50036 t['z'] = 500;
50037 t['braceleft'] = 334;
50038 t['bar'] = 260;
50039 t['braceright'] = 334;
50040 t['asciitilde'] = 584;
50041 t['exclamdown'] = 333;
50042 t['cent'] = 556;
50043 t['sterling'] = 556;
50044 t['fraction'] = 167;
50045 t['yen'] = 556;
50046 t['florin'] = 556;
50047 t['section'] = 556;
50048 t['currency'] = 556;
50049 t['quotesingle'] = 191;
50050 t['quotedblleft'] = 333;
50051 t['guillemotleft'] = 556;
50052 t['guilsinglleft'] = 333;
50053 t['guilsinglright'] = 333;
50054 t['fi'] = 500;
50055 t['fl'] = 500;
50056 t['endash'] = 556;
50057 t['dagger'] = 556;
50058 t['daggerdbl'] = 556;
50059 t['periodcentered'] = 278;
50060 t['paragraph'] = 537;
50061 t['bullet'] = 350;
50062 t['quotesinglbase'] = 222;
50063 t['quotedblbase'] = 333;
50064 t['quotedblright'] = 333;
50065 t['guillemotright'] = 556;
50066 t['ellipsis'] = 1000;
50067 t['perthousand'] = 1000;
50068 t['questiondown'] = 611;
50069 t['grave'] = 333;
50070 t['acute'] = 333;
50071 t['circumflex'] = 333;
50072 t['tilde'] = 333;
50073 t['macron'] = 333;
50074 t['breve'] = 333;
50075 t['dotaccent'] = 333;
50076 t['dieresis'] = 333;
50077 t['ring'] = 333;
50078 t['cedilla'] = 333;
50079 t['hungarumlaut'] = 333;
50080 t['ogonek'] = 333;
50081 t['caron'] = 333;
50082 t['emdash'] = 1000;
50083 t['AE'] = 1000;
50084 t['ordfeminine'] = 370;
50085 t['Lslash'] = 556;
50086 t['Oslash'] = 778;
50087 t['OE'] = 1000;
50088 t['ordmasculine'] = 365;
50089 t['ae'] = 889;
50090 t['dotlessi'] = 278;
50091 t['lslash'] = 222;
50092 t['oslash'] = 611;
50093 t['oe'] = 944;
50094 t['germandbls'] = 611;
50095 t['Idieresis'] = 278;
50096 t['eacute'] = 556;
50097 t['abreve'] = 556;
50098 t['uhungarumlaut'] = 556;
50099 t['ecaron'] = 556;
50100 t['Ydieresis'] = 667;
50101 t['divide'] = 584;
50102 t['Yacute'] = 667;
50103 t['Acircumflex'] = 667;
50104 t['aacute'] = 556;
50105 t['Ucircumflex'] = 722;
50106 t['yacute'] = 500;
50107 t['scommaaccent'] = 500;
50108 t['ecircumflex'] = 556;
50109 t['Uring'] = 722;
50110 t['Udieresis'] = 722;
50111 t['aogonek'] = 556;
50112 t['Uacute'] = 722;
50113 t['uogonek'] = 556;
50114 t['Edieresis'] = 667;
50115 t['Dcroat'] = 722;
50116 t['commaaccent'] = 250;
50117 t['copyright'] = 737;
50118 t['Emacron'] = 667;
50119 t['ccaron'] = 500;
50120 t['aring'] = 556;
50121 t['Ncommaaccent'] = 722;
50122 t['lacute'] = 222;
50123 t['agrave'] = 556;
50124 t['Tcommaaccent'] = 611;
50125 t['Cacute'] = 722;
50126 t['atilde'] = 556;
50127 t['Edotaccent'] = 667;
50128 t['scaron'] = 500;
50129 t['scedilla'] = 500;
50130 t['iacute'] = 278;
50131 t['lozenge'] = 471;
50132 t['Rcaron'] = 722;
50133 t['Gcommaaccent'] = 778;
50134 t['ucircumflex'] = 556;
50135 t['acircumflex'] = 556;
50136 t['Amacron'] = 667;
50137 t['rcaron'] = 333;
50138 t['ccedilla'] = 500;
50139 t['Zdotaccent'] = 611;
50140 t['Thorn'] = 667;
50141 t['Omacron'] = 778;
50142 t['Racute'] = 722;
50143 t['Sacute'] = 667;
50144 t['dcaron'] = 643;
50145 t['Umacron'] = 722;
50146 t['uring'] = 556;
50147 t['threesuperior'] = 333;
50148 t['Ograve'] = 778;
50149 t['Agrave'] = 667;
50150 t['Abreve'] = 667;
50151 t['multiply'] = 584;
50152 t['uacute'] = 556;
50153 t['Tcaron'] = 611;
50154 t['partialdiff'] = 476;
50155 t['ydieresis'] = 500;
50156 t['Nacute'] = 722;
50157 t['icircumflex'] = 278;
50158 t['Ecircumflex'] = 667;
50159 t['adieresis'] = 556;
50160 t['edieresis'] = 556;
50161 t['cacute'] = 500;
50162 t['nacute'] = 556;
50163 t['umacron'] = 556;
50164 t['Ncaron'] = 722;
50165 t['Iacute'] = 278;
50166 t['plusminus'] = 584;
50167 t['brokenbar'] = 260;
50168 t['registered'] = 737;
50169 t['Gbreve'] = 778;
50170 t['Idotaccent'] = 278;
50171 t['summation'] = 600;
50172 t['Egrave'] = 667;
50173 t['racute'] = 333;
50174 t['omacron'] = 556;
50175 t['Zacute'] = 611;
50176 t['Zcaron'] = 611;
50177 t['greaterequal'] = 549;
50178 t['Eth'] = 722;
50179 t['Ccedilla'] = 722;
50180 t['lcommaaccent'] = 222;
50181 t['tcaron'] = 317;
50182 t['eogonek'] = 556;
50183 t['Uogonek'] = 722;
50184 t['Aacute'] = 667;
50185 t['Adieresis'] = 667;
50186 t['egrave'] = 556;
50187 t['zacute'] = 500;
50188 t['iogonek'] = 222;
50189 t['Oacute'] = 778;
50190 t['oacute'] = 556;
50191 t['amacron'] = 556;
50192 t['sacute'] = 500;
50193 t['idieresis'] = 278;
50194 t['Ocircumflex'] = 778;
50195 t['Ugrave'] = 722;
50196 t['Delta'] = 612;
50197 t['thorn'] = 556;
50198 t['twosuperior'] = 333;
50199 t['Odieresis'] = 778;
50200 t['mu'] = 556;
50201 t['igrave'] = 278;
50202 t['ohungarumlaut'] = 556;
50203 t['Eogonek'] = 667;
50204 t['dcroat'] = 556;
50205 t['threequarters'] = 834;
50206 t['Scedilla'] = 667;
50207 t['lcaron'] = 299;
50208 t['Kcommaaccent'] = 667;
50209 t['Lacute'] = 556;
50210 t['trademark'] = 1000;
50211 t['edotaccent'] = 556;
50212 t['Igrave'] = 278;
50213 t['Imacron'] = 278;
50214 t['Lcaron'] = 556;
50215 t['onehalf'] = 834;
50216 t['lessequal'] = 549;
50217 t['ocircumflex'] = 556;
50218 t['ntilde'] = 556;
50219 t['Uhungarumlaut'] = 722;
50220 t['Eacute'] = 667;
50221 t['emacron'] = 556;
50222 t['gbreve'] = 556;
50223 t['onequarter'] = 834;
50224 t['Scaron'] = 667;
50225 t['Scommaaccent'] = 667;
50226 t['Ohungarumlaut'] = 778;
50227 t['degree'] = 400;
50228 t['ograve'] = 556;
50229 t['Ccaron'] = 722;
50230 t['ugrave'] = 556;
50231 t['radical'] = 453;
50232 t['Dcaron'] = 722;
50233 t['rcommaaccent'] = 333;
50234 t['Ntilde'] = 722;
50235 t['otilde'] = 556;
50236 t['Rcommaaccent'] = 722;
50237 t['Lcommaaccent'] = 556;
50238 t['Atilde'] = 667;
50239 t['Aogonek'] = 667;
50240 t['Aring'] = 667;
50241 t['Otilde'] = 778;
50242 t['zdotaccent'] = 500;
50243 t['Ecaron'] = 667;
50244 t['Iogonek'] = 278;
50245 t['kcommaaccent'] = 500;
50246 t['minus'] = 584;
50247 t['Icircumflex'] = 278;
50248 t['ncaron'] = 556;
50249 t['tcommaaccent'] = 278;
50250 t['logicalnot'] = 584;
50251 t['odieresis'] = 556;
50252 t['udieresis'] = 556;
50253 t['notequal'] = 549;
50254 t['gcommaaccent'] = 556;
50255 t['eth'] = 556;
50256 t['zcaron'] = 500;
50257 t['ncommaaccent'] = 556;
50258 t['onesuperior'] = 333;
50259 t['imacron'] = 278;
50260 t['Euro'] = 556;
50261 });
50262 t['Helvetica-Bold'] = (0, _core_utils.getLookupTableFactory)(function (t) {
50263 t['space'] = 278;
50264 t['exclam'] = 333;
50265 t['quotedbl'] = 474;
50266 t['numbersign'] = 556;
50267 t['dollar'] = 556;
50268 t['percent'] = 889;
50269 t['ampersand'] = 722;
50270 t['quoteright'] = 278;
50271 t['parenleft'] = 333;
50272 t['parenright'] = 333;
50273 t['asterisk'] = 389;
50274 t['plus'] = 584;
50275 t['comma'] = 278;
50276 t['hyphen'] = 333;
50277 t['period'] = 278;
50278 t['slash'] = 278;
50279 t['zero'] = 556;
50280 t['one'] = 556;
50281 t['two'] = 556;
50282 t['three'] = 556;
50283 t['four'] = 556;
50284 t['five'] = 556;
50285 t['six'] = 556;
50286 t['seven'] = 556;
50287 t['eight'] = 556;
50288 t['nine'] = 556;
50289 t['colon'] = 333;
50290 t['semicolon'] = 333;
50291 t['less'] = 584;
50292 t['equal'] = 584;
50293 t['greater'] = 584;
50294 t['question'] = 611;
50295 t['at'] = 975;
50296 t['A'] = 722;
50297 t['B'] = 722;
50298 t['C'] = 722;
50299 t['D'] = 722;
50300 t['E'] = 667;
50301 t['F'] = 611;
50302 t['G'] = 778;
50303 t['H'] = 722;
50304 t['I'] = 278;
50305 t['J'] = 556;
50306 t['K'] = 722;
50307 t['L'] = 611;
50308 t['M'] = 833;
50309 t['N'] = 722;
50310 t['O'] = 778;
50311 t['P'] = 667;
50312 t['Q'] = 778;
50313 t['R'] = 722;
50314 t['S'] = 667;
50315 t['T'] = 611;
50316 t['U'] = 722;
50317 t['V'] = 667;
50318 t['W'] = 944;
50319 t['X'] = 667;
50320 t['Y'] = 667;
50321 t['Z'] = 611;
50322 t['bracketleft'] = 333;
50323 t['backslash'] = 278;
50324 t['bracketright'] = 333;
50325 t['asciicircum'] = 584;
50326 t['underscore'] = 556;
50327 t['quoteleft'] = 278;
50328 t['a'] = 556;
50329 t['b'] = 611;
50330 t['c'] = 556;
50331 t['d'] = 611;
50332 t['e'] = 556;
50333 t['f'] = 333;
50334 t['g'] = 611;
50335 t['h'] = 611;
50336 t['i'] = 278;
50337 t['j'] = 278;
50338 t['k'] = 556;
50339 t['l'] = 278;
50340 t['m'] = 889;
50341 t['n'] = 611;
50342 t['o'] = 611;
50343 t['p'] = 611;
50344 t['q'] = 611;
50345 t['r'] = 389;
50346 t['s'] = 556;
50347 t['t'] = 333;
50348 t['u'] = 611;
50349 t['v'] = 556;
50350 t['w'] = 778;
50351 t['x'] = 556;
50352 t['y'] = 556;
50353 t['z'] = 500;
50354 t['braceleft'] = 389;
50355 t['bar'] = 280;
50356 t['braceright'] = 389;
50357 t['asciitilde'] = 584;
50358 t['exclamdown'] = 333;
50359 t['cent'] = 556;
50360 t['sterling'] = 556;
50361 t['fraction'] = 167;
50362 t['yen'] = 556;
50363 t['florin'] = 556;
50364 t['section'] = 556;
50365 t['currency'] = 556;
50366 t['quotesingle'] = 238;
50367 t['quotedblleft'] = 500;
50368 t['guillemotleft'] = 556;
50369 t['guilsinglleft'] = 333;
50370 t['guilsinglright'] = 333;
50371 t['fi'] = 611;
50372 t['fl'] = 611;
50373 t['endash'] = 556;
50374 t['dagger'] = 556;
50375 t['daggerdbl'] = 556;
50376 t['periodcentered'] = 278;
50377 t['paragraph'] = 556;
50378 t['bullet'] = 350;
50379 t['quotesinglbase'] = 278;
50380 t['quotedblbase'] = 500;
50381 t['quotedblright'] = 500;
50382 t['guillemotright'] = 556;
50383 t['ellipsis'] = 1000;
50384 t['perthousand'] = 1000;
50385 t['questiondown'] = 611;
50386 t['grave'] = 333;
50387 t['acute'] = 333;
50388 t['circumflex'] = 333;
50389 t['tilde'] = 333;
50390 t['macron'] = 333;
50391 t['breve'] = 333;
50392 t['dotaccent'] = 333;
50393 t['dieresis'] = 333;
50394 t['ring'] = 333;
50395 t['cedilla'] = 333;
50396 t['hungarumlaut'] = 333;
50397 t['ogonek'] = 333;
50398 t['caron'] = 333;
50399 t['emdash'] = 1000;
50400 t['AE'] = 1000;
50401 t['ordfeminine'] = 370;
50402 t['Lslash'] = 611;
50403 t['Oslash'] = 778;
50404 t['OE'] = 1000;
50405 t['ordmasculine'] = 365;
50406 t['ae'] = 889;
50407 t['dotlessi'] = 278;
50408 t['lslash'] = 278;
50409 t['oslash'] = 611;
50410 t['oe'] = 944;
50411 t['germandbls'] = 611;
50412 t['Idieresis'] = 278;
50413 t['eacute'] = 556;
50414 t['abreve'] = 556;
50415 t['uhungarumlaut'] = 611;
50416 t['ecaron'] = 556;
50417 t['Ydieresis'] = 667;
50418 t['divide'] = 584;
50419 t['Yacute'] = 667;
50420 t['Acircumflex'] = 722;
50421 t['aacute'] = 556;
50422 t['Ucircumflex'] = 722;
50423 t['yacute'] = 556;
50424 t['scommaaccent'] = 556;
50425 t['ecircumflex'] = 556;
50426 t['Uring'] = 722;
50427 t['Udieresis'] = 722;
50428 t['aogonek'] = 556;
50429 t['Uacute'] = 722;
50430 t['uogonek'] = 611;
50431 t['Edieresis'] = 667;
50432 t['Dcroat'] = 722;
50433 t['commaaccent'] = 250;
50434 t['copyright'] = 737;
50435 t['Emacron'] = 667;
50436 t['ccaron'] = 556;
50437 t['aring'] = 556;
50438 t['Ncommaaccent'] = 722;
50439 t['lacute'] = 278;
50440 t['agrave'] = 556;
50441 t['Tcommaaccent'] = 611;
50442 t['Cacute'] = 722;
50443 t['atilde'] = 556;
50444 t['Edotaccent'] = 667;
50445 t['scaron'] = 556;
50446 t['scedilla'] = 556;
50447 t['iacute'] = 278;
50448 t['lozenge'] = 494;
50449 t['Rcaron'] = 722;
50450 t['Gcommaaccent'] = 778;
50451 t['ucircumflex'] = 611;
50452 t['acircumflex'] = 556;
50453 t['Amacron'] = 722;
50454 t['rcaron'] = 389;
50455 t['ccedilla'] = 556;
50456 t['Zdotaccent'] = 611;
50457 t['Thorn'] = 667;
50458 t['Omacron'] = 778;
50459 t['Racute'] = 722;
50460 t['Sacute'] = 667;
50461 t['dcaron'] = 743;
50462 t['Umacron'] = 722;
50463 t['uring'] = 611;
50464 t['threesuperior'] = 333;
50465 t['Ograve'] = 778;
50466 t['Agrave'] = 722;
50467 t['Abreve'] = 722;
50468 t['multiply'] = 584;
50469 t['uacute'] = 611;
50470 t['Tcaron'] = 611;
50471 t['partialdiff'] = 494;
50472 t['ydieresis'] = 556;
50473 t['Nacute'] = 722;
50474 t['icircumflex'] = 278;
50475 t['Ecircumflex'] = 667;
50476 t['adieresis'] = 556;
50477 t['edieresis'] = 556;
50478 t['cacute'] = 556;
50479 t['nacute'] = 611;
50480 t['umacron'] = 611;
50481 t['Ncaron'] = 722;
50482 t['Iacute'] = 278;
50483 t['plusminus'] = 584;
50484 t['brokenbar'] = 280;
50485 t['registered'] = 737;
50486 t['Gbreve'] = 778;
50487 t['Idotaccent'] = 278;
50488 t['summation'] = 600;
50489 t['Egrave'] = 667;
50490 t['racute'] = 389;
50491 t['omacron'] = 611;
50492 t['Zacute'] = 611;
50493 t['Zcaron'] = 611;
50494 t['greaterequal'] = 549;
50495 t['Eth'] = 722;
50496 t['Ccedilla'] = 722;
50497 t['lcommaaccent'] = 278;
50498 t['tcaron'] = 389;
50499 t['eogonek'] = 556;
50500 t['Uogonek'] = 722;
50501 t['Aacute'] = 722;
50502 t['Adieresis'] = 722;
50503 t['egrave'] = 556;
50504 t['zacute'] = 500;
50505 t['iogonek'] = 278;
50506 t['Oacute'] = 778;
50507 t['oacute'] = 611;
50508 t['amacron'] = 556;
50509 t['sacute'] = 556;
50510 t['idieresis'] = 278;
50511 t['Ocircumflex'] = 778;
50512 t['Ugrave'] = 722;
50513 t['Delta'] = 612;
50514 t['thorn'] = 611;
50515 t['twosuperior'] = 333;
50516 t['Odieresis'] = 778;
50517 t['mu'] = 611;
50518 t['igrave'] = 278;
50519 t['ohungarumlaut'] = 611;
50520 t['Eogonek'] = 667;
50521 t['dcroat'] = 611;
50522 t['threequarters'] = 834;
50523 t['Scedilla'] = 667;
50524 t['lcaron'] = 400;
50525 t['Kcommaaccent'] = 722;
50526 t['Lacute'] = 611;
50527 t['trademark'] = 1000;
50528 t['edotaccent'] = 556;
50529 t['Igrave'] = 278;
50530 t['Imacron'] = 278;
50531 t['Lcaron'] = 611;
50532 t['onehalf'] = 834;
50533 t['lessequal'] = 549;
50534 t['ocircumflex'] = 611;
50535 t['ntilde'] = 611;
50536 t['Uhungarumlaut'] = 722;
50537 t['Eacute'] = 667;
50538 t['emacron'] = 556;
50539 t['gbreve'] = 611;
50540 t['onequarter'] = 834;
50541 t['Scaron'] = 667;
50542 t['Scommaaccent'] = 667;
50543 t['Ohungarumlaut'] = 778;
50544 t['degree'] = 400;
50545 t['ograve'] = 611;
50546 t['Ccaron'] = 722;
50547 t['ugrave'] = 611;
50548 t['radical'] = 549;
50549 t['Dcaron'] = 722;
50550 t['rcommaaccent'] = 389;
50551 t['Ntilde'] = 722;
50552 t['otilde'] = 611;
50553 t['Rcommaaccent'] = 722;
50554 t['Lcommaaccent'] = 611;
50555 t['Atilde'] = 722;
50556 t['Aogonek'] = 722;
50557 t['Aring'] = 722;
50558 t['Otilde'] = 778;
50559 t['zdotaccent'] = 500;
50560 t['Ecaron'] = 667;
50561 t['Iogonek'] = 278;
50562 t['kcommaaccent'] = 556;
50563 t['minus'] = 584;
50564 t['Icircumflex'] = 278;
50565 t['ncaron'] = 611;
50566 t['tcommaaccent'] = 333;
50567 t['logicalnot'] = 584;
50568 t['odieresis'] = 611;
50569 t['udieresis'] = 611;
50570 t['notequal'] = 549;
50571 t['gcommaaccent'] = 611;
50572 t['eth'] = 611;
50573 t['zcaron'] = 500;
50574 t['ncommaaccent'] = 611;
50575 t['onesuperior'] = 333;
50576 t['imacron'] = 278;
50577 t['Euro'] = 556;
50578 });
50579 t['Helvetica-BoldOblique'] = (0, _core_utils.getLookupTableFactory)(function (t) {
50580 t['space'] = 278;
50581 t['exclam'] = 333;
50582 t['quotedbl'] = 474;
50583 t['numbersign'] = 556;
50584 t['dollar'] = 556;
50585 t['percent'] = 889;
50586 t['ampersand'] = 722;
50587 t['quoteright'] = 278;
50588 t['parenleft'] = 333;
50589 t['parenright'] = 333;
50590 t['asterisk'] = 389;
50591 t['plus'] = 584;
50592 t['comma'] = 278;
50593 t['hyphen'] = 333;
50594 t['period'] = 278;
50595 t['slash'] = 278;
50596 t['zero'] = 556;
50597 t['one'] = 556;
50598 t['two'] = 556;
50599 t['three'] = 556;
50600 t['four'] = 556;
50601 t['five'] = 556;
50602 t['six'] = 556;
50603 t['seven'] = 556;
50604 t['eight'] = 556;
50605 t['nine'] = 556;
50606 t['colon'] = 333;
50607 t['semicolon'] = 333;
50608 t['less'] = 584;
50609 t['equal'] = 584;
50610 t['greater'] = 584;
50611 t['question'] = 611;
50612 t['at'] = 975;
50613 t['A'] = 722;
50614 t['B'] = 722;
50615 t['C'] = 722;
50616 t['D'] = 722;
50617 t['E'] = 667;
50618 t['F'] = 611;
50619 t['G'] = 778;
50620 t['H'] = 722;
50621 t['I'] = 278;
50622 t['J'] = 556;
50623 t['K'] = 722;
50624 t['L'] = 611;
50625 t['M'] = 833;
50626 t['N'] = 722;
50627 t['O'] = 778;
50628 t['P'] = 667;
50629 t['Q'] = 778;
50630 t['R'] = 722;
50631 t['S'] = 667;
50632 t['T'] = 611;
50633 t['U'] = 722;
50634 t['V'] = 667;
50635 t['W'] = 944;
50636 t['X'] = 667;
50637 t['Y'] = 667;
50638 t['Z'] = 611;
50639 t['bracketleft'] = 333;
50640 t['backslash'] = 278;
50641 t['bracketright'] = 333;
50642 t['asciicircum'] = 584;
50643 t['underscore'] = 556;
50644 t['quoteleft'] = 278;
50645 t['a'] = 556;
50646 t['b'] = 611;
50647 t['c'] = 556;
50648 t['d'] = 611;
50649 t['e'] = 556;
50650 t['f'] = 333;
50651 t['g'] = 611;
50652 t['h'] = 611;
50653 t['i'] = 278;
50654 t['j'] = 278;
50655 t['k'] = 556;
50656 t['l'] = 278;
50657 t['m'] = 889;
50658 t['n'] = 611;
50659 t['o'] = 611;
50660 t['p'] = 611;
50661 t['q'] = 611;
50662 t['r'] = 389;
50663 t['s'] = 556;
50664 t['t'] = 333;
50665 t['u'] = 611;
50666 t['v'] = 556;
50667 t['w'] = 778;
50668 t['x'] = 556;
50669 t['y'] = 556;
50670 t['z'] = 500;
50671 t['braceleft'] = 389;
50672 t['bar'] = 280;
50673 t['braceright'] = 389;
50674 t['asciitilde'] = 584;
50675 t['exclamdown'] = 333;
50676 t['cent'] = 556;
50677 t['sterling'] = 556;
50678 t['fraction'] = 167;
50679 t['yen'] = 556;
50680 t['florin'] = 556;
50681 t['section'] = 556;
50682 t['currency'] = 556;
50683 t['quotesingle'] = 238;
50684 t['quotedblleft'] = 500;
50685 t['guillemotleft'] = 556;
50686 t['guilsinglleft'] = 333;
50687 t['guilsinglright'] = 333;
50688 t['fi'] = 611;
50689 t['fl'] = 611;
50690 t['endash'] = 556;
50691 t['dagger'] = 556;
50692 t['daggerdbl'] = 556;
50693 t['periodcentered'] = 278;
50694 t['paragraph'] = 556;
50695 t['bullet'] = 350;
50696 t['quotesinglbase'] = 278;
50697 t['quotedblbase'] = 500;
50698 t['quotedblright'] = 500;
50699 t['guillemotright'] = 556;
50700 t['ellipsis'] = 1000;
50701 t['perthousand'] = 1000;
50702 t['questiondown'] = 611;
50703 t['grave'] = 333;
50704 t['acute'] = 333;
50705 t['circumflex'] = 333;
50706 t['tilde'] = 333;
50707 t['macron'] = 333;
50708 t['breve'] = 333;
50709 t['dotaccent'] = 333;
50710 t['dieresis'] = 333;
50711 t['ring'] = 333;
50712 t['cedilla'] = 333;
50713 t['hungarumlaut'] = 333;
50714 t['ogonek'] = 333;
50715 t['caron'] = 333;
50716 t['emdash'] = 1000;
50717 t['AE'] = 1000;
50718 t['ordfeminine'] = 370;
50719 t['Lslash'] = 611;
50720 t['Oslash'] = 778;
50721 t['OE'] = 1000;
50722 t['ordmasculine'] = 365;
50723 t['ae'] = 889;
50724 t['dotlessi'] = 278;
50725 t['lslash'] = 278;
50726 t['oslash'] = 611;
50727 t['oe'] = 944;
50728 t['germandbls'] = 611;
50729 t['Idieresis'] = 278;
50730 t['eacute'] = 556;
50731 t['abreve'] = 556;
50732 t['uhungarumlaut'] = 611;
50733 t['ecaron'] = 556;
50734 t['Ydieresis'] = 667;
50735 t['divide'] = 584;
50736 t['Yacute'] = 667;
50737 t['Acircumflex'] = 722;
50738 t['aacute'] = 556;
50739 t['Ucircumflex'] = 722;
50740 t['yacute'] = 556;
50741 t['scommaaccent'] = 556;
50742 t['ecircumflex'] = 556;
50743 t['Uring'] = 722;
50744 t['Udieresis'] = 722;
50745 t['aogonek'] = 556;
50746 t['Uacute'] = 722;
50747 t['uogonek'] = 611;
50748 t['Edieresis'] = 667;
50749 t['Dcroat'] = 722;
50750 t['commaaccent'] = 250;
50751 t['copyright'] = 737;
50752 t['Emacron'] = 667;
50753 t['ccaron'] = 556;
50754 t['aring'] = 556;
50755 t['Ncommaaccent'] = 722;
50756 t['lacute'] = 278;
50757 t['agrave'] = 556;
50758 t['Tcommaaccent'] = 611;
50759 t['Cacute'] = 722;
50760 t['atilde'] = 556;
50761 t['Edotaccent'] = 667;
50762 t['scaron'] = 556;
50763 t['scedilla'] = 556;
50764 t['iacute'] = 278;
50765 t['lozenge'] = 494;
50766 t['Rcaron'] = 722;
50767 t['Gcommaaccent'] = 778;
50768 t['ucircumflex'] = 611;
50769 t['acircumflex'] = 556;
50770 t['Amacron'] = 722;
50771 t['rcaron'] = 389;
50772 t['ccedilla'] = 556;
50773 t['Zdotaccent'] = 611;
50774 t['Thorn'] = 667;
50775 t['Omacron'] = 778;
50776 t['Racute'] = 722;
50777 t['Sacute'] = 667;
50778 t['dcaron'] = 743;
50779 t['Umacron'] = 722;
50780 t['uring'] = 611;
50781 t['threesuperior'] = 333;
50782 t['Ograve'] = 778;
50783 t['Agrave'] = 722;
50784 t['Abreve'] = 722;
50785 t['multiply'] = 584;
50786 t['uacute'] = 611;
50787 t['Tcaron'] = 611;
50788 t['partialdiff'] = 494;
50789 t['ydieresis'] = 556;
50790 t['Nacute'] = 722;
50791 t['icircumflex'] = 278;
50792 t['Ecircumflex'] = 667;
50793 t['adieresis'] = 556;
50794 t['edieresis'] = 556;
50795 t['cacute'] = 556;
50796 t['nacute'] = 611;
50797 t['umacron'] = 611;
50798 t['Ncaron'] = 722;
50799 t['Iacute'] = 278;
50800 t['plusminus'] = 584;
50801 t['brokenbar'] = 280;
50802 t['registered'] = 737;
50803 t['Gbreve'] = 778;
50804 t['Idotaccent'] = 278;
50805 t['summation'] = 600;
50806 t['Egrave'] = 667;
50807 t['racute'] = 389;
50808 t['omacron'] = 611;
50809 t['Zacute'] = 611;
50810 t['Zcaron'] = 611;
50811 t['greaterequal'] = 549;
50812 t['Eth'] = 722;
50813 t['Ccedilla'] = 722;
50814 t['lcommaaccent'] = 278;
50815 t['tcaron'] = 389;
50816 t['eogonek'] = 556;
50817 t['Uogonek'] = 722;
50818 t['Aacute'] = 722;
50819 t['Adieresis'] = 722;
50820 t['egrave'] = 556;
50821 t['zacute'] = 500;
50822 t['iogonek'] = 278;
50823 t['Oacute'] = 778;
50824 t['oacute'] = 611;
50825 t['amacron'] = 556;
50826 t['sacute'] = 556;
50827 t['idieresis'] = 278;
50828 t['Ocircumflex'] = 778;
50829 t['Ugrave'] = 722;
50830 t['Delta'] = 612;
50831 t['thorn'] = 611;
50832 t['twosuperior'] = 333;
50833 t['Odieresis'] = 778;
50834 t['mu'] = 611;
50835 t['igrave'] = 278;
50836 t['ohungarumlaut'] = 611;
50837 t['Eogonek'] = 667;
50838 t['dcroat'] = 611;
50839 t['threequarters'] = 834;
50840 t['Scedilla'] = 667;
50841 t['lcaron'] = 400;
50842 t['Kcommaaccent'] = 722;
50843 t['Lacute'] = 611;
50844 t['trademark'] = 1000;
50845 t['edotaccent'] = 556;
50846 t['Igrave'] = 278;
50847 t['Imacron'] = 278;
50848 t['Lcaron'] = 611;
50849 t['onehalf'] = 834;
50850 t['lessequal'] = 549;
50851 t['ocircumflex'] = 611;
50852 t['ntilde'] = 611;
50853 t['Uhungarumlaut'] = 722;
50854 t['Eacute'] = 667;
50855 t['emacron'] = 556;
50856 t['gbreve'] = 611;
50857 t['onequarter'] = 834;
50858 t['Scaron'] = 667;
50859 t['Scommaaccent'] = 667;
50860 t['Ohungarumlaut'] = 778;
50861 t['degree'] = 400;
50862 t['ograve'] = 611;
50863 t['Ccaron'] = 722;
50864 t['ugrave'] = 611;
50865 t['radical'] = 549;
50866 t['Dcaron'] = 722;
50867 t['rcommaaccent'] = 389;
50868 t['Ntilde'] = 722;
50869 t['otilde'] = 611;
50870 t['Rcommaaccent'] = 722;
50871 t['Lcommaaccent'] = 611;
50872 t['Atilde'] = 722;
50873 t['Aogonek'] = 722;
50874 t['Aring'] = 722;
50875 t['Otilde'] = 778;
50876 t['zdotaccent'] = 500;
50877 t['Ecaron'] = 667;
50878 t['Iogonek'] = 278;
50879 t['kcommaaccent'] = 556;
50880 t['minus'] = 584;
50881 t['Icircumflex'] = 278;
50882 t['ncaron'] = 611;
50883 t['tcommaaccent'] = 333;
50884 t['logicalnot'] = 584;
50885 t['odieresis'] = 611;
50886 t['udieresis'] = 611;
50887 t['notequal'] = 549;
50888 t['gcommaaccent'] = 611;
50889 t['eth'] = 611;
50890 t['zcaron'] = 500;
50891 t['ncommaaccent'] = 611;
50892 t['onesuperior'] = 333;
50893 t['imacron'] = 278;
50894 t['Euro'] = 556;
50895 });
50896 t['Helvetica-Oblique'] = (0, _core_utils.getLookupTableFactory)(function (t) {
50897 t['space'] = 278;
50898 t['exclam'] = 278;
50899 t['quotedbl'] = 355;
50900 t['numbersign'] = 556;
50901 t['dollar'] = 556;
50902 t['percent'] = 889;
50903 t['ampersand'] = 667;
50904 t['quoteright'] = 222;
50905 t['parenleft'] = 333;
50906 t['parenright'] = 333;
50907 t['asterisk'] = 389;
50908 t['plus'] = 584;
50909 t['comma'] = 278;
50910 t['hyphen'] = 333;
50911 t['period'] = 278;
50912 t['slash'] = 278;
50913 t['zero'] = 556;
50914 t['one'] = 556;
50915 t['two'] = 556;
50916 t['three'] = 556;
50917 t['four'] = 556;
50918 t['five'] = 556;
50919 t['six'] = 556;
50920 t['seven'] = 556;
50921 t['eight'] = 556;
50922 t['nine'] = 556;
50923 t['colon'] = 278;
50924 t['semicolon'] = 278;
50925 t['less'] = 584;
50926 t['equal'] = 584;
50927 t['greater'] = 584;
50928 t['question'] = 556;
50929 t['at'] = 1015;
50930 t['A'] = 667;
50931 t['B'] = 667;
50932 t['C'] = 722;
50933 t['D'] = 722;
50934 t['E'] = 667;
50935 t['F'] = 611;
50936 t['G'] = 778;
50937 t['H'] = 722;
50938 t['I'] = 278;
50939 t['J'] = 500;
50940 t['K'] = 667;
50941 t['L'] = 556;
50942 t['M'] = 833;
50943 t['N'] = 722;
50944 t['O'] = 778;
50945 t['P'] = 667;
50946 t['Q'] = 778;
50947 t['R'] = 722;
50948 t['S'] = 667;
50949 t['T'] = 611;
50950 t['U'] = 722;
50951 t['V'] = 667;
50952 t['W'] = 944;
50953 t['X'] = 667;
50954 t['Y'] = 667;
50955 t['Z'] = 611;
50956 t['bracketleft'] = 278;
50957 t['backslash'] = 278;
50958 t['bracketright'] = 278;
50959 t['asciicircum'] = 469;
50960 t['underscore'] = 556;
50961 t['quoteleft'] = 222;
50962 t['a'] = 556;
50963 t['b'] = 556;
50964 t['c'] = 500;
50965 t['d'] = 556;
50966 t['e'] = 556;
50967 t['f'] = 278;
50968 t['g'] = 556;
50969 t['h'] = 556;
50970 t['i'] = 222;
50971 t['j'] = 222;
50972 t['k'] = 500;
50973 t['l'] = 222;
50974 t['m'] = 833;
50975 t['n'] = 556;
50976 t['o'] = 556;
50977 t['p'] = 556;
50978 t['q'] = 556;
50979 t['r'] = 333;
50980 t['s'] = 500;
50981 t['t'] = 278;
50982 t['u'] = 556;
50983 t['v'] = 500;
50984 t['w'] = 722;
50985 t['x'] = 500;
50986 t['y'] = 500;
50987 t['z'] = 500;
50988 t['braceleft'] = 334;
50989 t['bar'] = 260;
50990 t['braceright'] = 334;
50991 t['asciitilde'] = 584;
50992 t['exclamdown'] = 333;
50993 t['cent'] = 556;
50994 t['sterling'] = 556;
50995 t['fraction'] = 167;
50996 t['yen'] = 556;
50997 t['florin'] = 556;
50998 t['section'] = 556;
50999 t['currency'] = 556;
51000 t['quotesingle'] = 191;
51001 t['quotedblleft'] = 333;
51002 t['guillemotleft'] = 556;
51003 t['guilsinglleft'] = 333;
51004 t['guilsinglright'] = 333;
51005 t['fi'] = 500;
51006 t['fl'] = 500;
51007 t['endash'] = 556;
51008 t['dagger'] = 556;
51009 t['daggerdbl'] = 556;
51010 t['periodcentered'] = 278;
51011 t['paragraph'] = 537;
51012 t['bullet'] = 350;
51013 t['quotesinglbase'] = 222;
51014 t['quotedblbase'] = 333;
51015 t['quotedblright'] = 333;
51016 t['guillemotright'] = 556;
51017 t['ellipsis'] = 1000;
51018 t['perthousand'] = 1000;
51019 t['questiondown'] = 611;
51020 t['grave'] = 333;
51021 t['acute'] = 333;
51022 t['circumflex'] = 333;
51023 t['tilde'] = 333;
51024 t['macron'] = 333;
51025 t['breve'] = 333;
51026 t['dotaccent'] = 333;
51027 t['dieresis'] = 333;
51028 t['ring'] = 333;
51029 t['cedilla'] = 333;
51030 t['hungarumlaut'] = 333;
51031 t['ogonek'] = 333;
51032 t['caron'] = 333;
51033 t['emdash'] = 1000;
51034 t['AE'] = 1000;
51035 t['ordfeminine'] = 370;
51036 t['Lslash'] = 556;
51037 t['Oslash'] = 778;
51038 t['OE'] = 1000;
51039 t['ordmasculine'] = 365;
51040 t['ae'] = 889;
51041 t['dotlessi'] = 278;
51042 t['lslash'] = 222;
51043 t['oslash'] = 611;
51044 t['oe'] = 944;
51045 t['germandbls'] = 611;
51046 t['Idieresis'] = 278;
51047 t['eacute'] = 556;
51048 t['abreve'] = 556;
51049 t['uhungarumlaut'] = 556;
51050 t['ecaron'] = 556;
51051 t['Ydieresis'] = 667;
51052 t['divide'] = 584;
51053 t['Yacute'] = 667;
51054 t['Acircumflex'] = 667;
51055 t['aacute'] = 556;
51056 t['Ucircumflex'] = 722;
51057 t['yacute'] = 500;
51058 t['scommaaccent'] = 500;
51059 t['ecircumflex'] = 556;
51060 t['Uring'] = 722;
51061 t['Udieresis'] = 722;
51062 t['aogonek'] = 556;
51063 t['Uacute'] = 722;
51064 t['uogonek'] = 556;
51065 t['Edieresis'] = 667;
51066 t['Dcroat'] = 722;
51067 t['commaaccent'] = 250;
51068 t['copyright'] = 737;
51069 t['Emacron'] = 667;
51070 t['ccaron'] = 500;
51071 t['aring'] = 556;
51072 t['Ncommaaccent'] = 722;
51073 t['lacute'] = 222;
51074 t['agrave'] = 556;
51075 t['Tcommaaccent'] = 611;
51076 t['Cacute'] = 722;
51077 t['atilde'] = 556;
51078 t['Edotaccent'] = 667;
51079 t['scaron'] = 500;
51080 t['scedilla'] = 500;
51081 t['iacute'] = 278;
51082 t['lozenge'] = 471;
51083 t['Rcaron'] = 722;
51084 t['Gcommaaccent'] = 778;
51085 t['ucircumflex'] = 556;
51086 t['acircumflex'] = 556;
51087 t['Amacron'] = 667;
51088 t['rcaron'] = 333;
51089 t['ccedilla'] = 500;
51090 t['Zdotaccent'] = 611;
51091 t['Thorn'] = 667;
51092 t['Omacron'] = 778;
51093 t['Racute'] = 722;
51094 t['Sacute'] = 667;
51095 t['dcaron'] = 643;
51096 t['Umacron'] = 722;
51097 t['uring'] = 556;
51098 t['threesuperior'] = 333;
51099 t['Ograve'] = 778;
51100 t['Agrave'] = 667;
51101 t['Abreve'] = 667;
51102 t['multiply'] = 584;
51103 t['uacute'] = 556;
51104 t['Tcaron'] = 611;
51105 t['partialdiff'] = 476;
51106 t['ydieresis'] = 500;
51107 t['Nacute'] = 722;
51108 t['icircumflex'] = 278;
51109 t['Ecircumflex'] = 667;
51110 t['adieresis'] = 556;
51111 t['edieresis'] = 556;
51112 t['cacute'] = 500;
51113 t['nacute'] = 556;
51114 t['umacron'] = 556;
51115 t['Ncaron'] = 722;
51116 t['Iacute'] = 278;
51117 t['plusminus'] = 584;
51118 t['brokenbar'] = 260;
51119 t['registered'] = 737;
51120 t['Gbreve'] = 778;
51121 t['Idotaccent'] = 278;
51122 t['summation'] = 600;
51123 t['Egrave'] = 667;
51124 t['racute'] = 333;
51125 t['omacron'] = 556;
51126 t['Zacute'] = 611;
51127 t['Zcaron'] = 611;
51128 t['greaterequal'] = 549;
51129 t['Eth'] = 722;
51130 t['Ccedilla'] = 722;
51131 t['lcommaaccent'] = 222;
51132 t['tcaron'] = 317;
51133 t['eogonek'] = 556;
51134 t['Uogonek'] = 722;
51135 t['Aacute'] = 667;
51136 t['Adieresis'] = 667;
51137 t['egrave'] = 556;
51138 t['zacute'] = 500;
51139 t['iogonek'] = 222;
51140 t['Oacute'] = 778;
51141 t['oacute'] = 556;
51142 t['amacron'] = 556;
51143 t['sacute'] = 500;
51144 t['idieresis'] = 278;
51145 t['Ocircumflex'] = 778;
51146 t['Ugrave'] = 722;
51147 t['Delta'] = 612;
51148 t['thorn'] = 556;
51149 t['twosuperior'] = 333;
51150 t['Odieresis'] = 778;
51151 t['mu'] = 556;
51152 t['igrave'] = 278;
51153 t['ohungarumlaut'] = 556;
51154 t['Eogonek'] = 667;
51155 t['dcroat'] = 556;
51156 t['threequarters'] = 834;
51157 t['Scedilla'] = 667;
51158 t['lcaron'] = 299;
51159 t['Kcommaaccent'] = 667;
51160 t['Lacute'] = 556;
51161 t['trademark'] = 1000;
51162 t['edotaccent'] = 556;
51163 t['Igrave'] = 278;
51164 t['Imacron'] = 278;
51165 t['Lcaron'] = 556;
51166 t['onehalf'] = 834;
51167 t['lessequal'] = 549;
51168 t['ocircumflex'] = 556;
51169 t['ntilde'] = 556;
51170 t['Uhungarumlaut'] = 722;
51171 t['Eacute'] = 667;
51172 t['emacron'] = 556;
51173 t['gbreve'] = 556;
51174 t['onequarter'] = 834;
51175 t['Scaron'] = 667;
51176 t['Scommaaccent'] = 667;
51177 t['Ohungarumlaut'] = 778;
51178 t['degree'] = 400;
51179 t['ograve'] = 556;
51180 t['Ccaron'] = 722;
51181 t['ugrave'] = 556;
51182 t['radical'] = 453;
51183 t['Dcaron'] = 722;
51184 t['rcommaaccent'] = 333;
51185 t['Ntilde'] = 722;
51186 t['otilde'] = 556;
51187 t['Rcommaaccent'] = 722;
51188 t['Lcommaaccent'] = 556;
51189 t['Atilde'] = 667;
51190 t['Aogonek'] = 667;
51191 t['Aring'] = 667;
51192 t['Otilde'] = 778;
51193 t['zdotaccent'] = 500;
51194 t['Ecaron'] = 667;
51195 t['Iogonek'] = 278;
51196 t['kcommaaccent'] = 500;
51197 t['minus'] = 584;
51198 t['Icircumflex'] = 278;
51199 t['ncaron'] = 556;
51200 t['tcommaaccent'] = 278;
51201 t['logicalnot'] = 584;
51202 t['odieresis'] = 556;
51203 t['udieresis'] = 556;
51204 t['notequal'] = 549;
51205 t['gcommaaccent'] = 556;
51206 t['eth'] = 556;
51207 t['zcaron'] = 500;
51208 t['ncommaaccent'] = 556;
51209 t['onesuperior'] = 333;
51210 t['imacron'] = 278;
51211 t['Euro'] = 556;
51212 });
51213 t['Symbol'] = (0, _core_utils.getLookupTableFactory)(function (t) {
51214 t['space'] = 250;
51215 t['exclam'] = 333;
51216 t['universal'] = 713;
51217 t['numbersign'] = 500;
51218 t['existential'] = 549;
51219 t['percent'] = 833;
51220 t['ampersand'] = 778;
51221 t['suchthat'] = 439;
51222 t['parenleft'] = 333;
51223 t['parenright'] = 333;
51224 t['asteriskmath'] = 500;
51225 t['plus'] = 549;
51226 t['comma'] = 250;
51227 t['minus'] = 549;
51228 t['period'] = 250;
51229 t['slash'] = 278;
51230 t['zero'] = 500;
51231 t['one'] = 500;
51232 t['two'] = 500;
51233 t['three'] = 500;
51234 t['four'] = 500;
51235 t['five'] = 500;
51236 t['six'] = 500;
51237 t['seven'] = 500;
51238 t['eight'] = 500;
51239 t['nine'] = 500;
51240 t['colon'] = 278;
51241 t['semicolon'] = 278;
51242 t['less'] = 549;
51243 t['equal'] = 549;
51244 t['greater'] = 549;
51245 t['question'] = 444;
51246 t['congruent'] = 549;
51247 t['Alpha'] = 722;
51248 t['Beta'] = 667;
51249 t['Chi'] = 722;
51250 t['Delta'] = 612;
51251 t['Epsilon'] = 611;
51252 t['Phi'] = 763;
51253 t['Gamma'] = 603;
51254 t['Eta'] = 722;
51255 t['Iota'] = 333;
51256 t['theta1'] = 631;
51257 t['Kappa'] = 722;
51258 t['Lambda'] = 686;
51259 t['Mu'] = 889;
51260 t['Nu'] = 722;
51261 t['Omicron'] = 722;
51262 t['Pi'] = 768;
51263 t['Theta'] = 741;
51264 t['Rho'] = 556;
51265 t['Sigma'] = 592;
51266 t['Tau'] = 611;
51267 t['Upsilon'] = 690;
51268 t['sigma1'] = 439;
51269 t['Omega'] = 768;
51270 t['Xi'] = 645;
51271 t['Psi'] = 795;
51272 t['Zeta'] = 611;
51273 t['bracketleft'] = 333;
51274 t['therefore'] = 863;
51275 t['bracketright'] = 333;
51276 t['perpendicular'] = 658;
51277 t['underscore'] = 500;
51278 t['radicalex'] = 500;
51279 t['alpha'] = 631;
51280 t['beta'] = 549;
51281 t['chi'] = 549;
51282 t['delta'] = 494;
51283 t['epsilon'] = 439;
51284 t['phi'] = 521;
51285 t['gamma'] = 411;
51286 t['eta'] = 603;
51287 t['iota'] = 329;
51288 t['phi1'] = 603;
51289 t['kappa'] = 549;
51290 t['lambda'] = 549;
51291 t['mu'] = 576;
51292 t['nu'] = 521;
51293 t['omicron'] = 549;
51294 t['pi'] = 549;
51295 t['theta'] = 521;
51296 t['rho'] = 549;
51297 t['sigma'] = 603;
51298 t['tau'] = 439;
51299 t['upsilon'] = 576;
51300 t['omega1'] = 713;
51301 t['omega'] = 686;
51302 t['xi'] = 493;
51303 t['psi'] = 686;
51304 t['zeta'] = 494;
51305 t['braceleft'] = 480;
51306 t['bar'] = 200;
51307 t['braceright'] = 480;
51308 t['similar'] = 549;
51309 t['Euro'] = 750;
51310 t['Upsilon1'] = 620;
51311 t['minute'] = 247;
51312 t['lessequal'] = 549;
51313 t['fraction'] = 167;
51314 t['infinity'] = 713;
51315 t['florin'] = 500;
51316 t['club'] = 753;
51317 t['diamond'] = 753;
51318 t['heart'] = 753;
51319 t['spade'] = 753;
51320 t['arrowboth'] = 1042;
51321 t['arrowleft'] = 987;
51322 t['arrowup'] = 603;
51323 t['arrowright'] = 987;
51324 t['arrowdown'] = 603;
51325 t['degree'] = 400;
51326 t['plusminus'] = 549;
51327 t['second'] = 411;
51328 t['greaterequal'] = 549;
51329 t['multiply'] = 549;
51330 t['proportional'] = 713;
51331 t['partialdiff'] = 494;
51332 t['bullet'] = 460;
51333 t['divide'] = 549;
51334 t['notequal'] = 549;
51335 t['equivalence'] = 549;
51336 t['approxequal'] = 549;
51337 t['ellipsis'] = 1000;
51338 t['arrowvertex'] = 603;
51339 t['arrowhorizex'] = 1000;
51340 t['carriagereturn'] = 658;
51341 t['aleph'] = 823;
51342 t['Ifraktur'] = 686;
51343 t['Rfraktur'] = 795;
51344 t['weierstrass'] = 987;
51345 t['circlemultiply'] = 768;
51346 t['circleplus'] = 768;
51347 t['emptyset'] = 823;
51348 t['intersection'] = 768;
51349 t['union'] = 768;
51350 t['propersuperset'] = 713;
51351 t['reflexsuperset'] = 713;
51352 t['notsubset'] = 713;
51353 t['propersubset'] = 713;
51354 t['reflexsubset'] = 713;
51355 t['element'] = 713;
51356 t['notelement'] = 713;
51357 t['angle'] = 768;
51358 t['gradient'] = 713;
51359 t['registerserif'] = 790;
51360 t['copyrightserif'] = 790;
51361 t['trademarkserif'] = 890;
51362 t['product'] = 823;
51363 t['radical'] = 549;
51364 t['dotmath'] = 250;
51365 t['logicalnot'] = 713;
51366 t['logicaland'] = 603;
51367 t['logicalor'] = 603;
51368 t['arrowdblboth'] = 1042;
51369 t['arrowdblleft'] = 987;
51370 t['arrowdblup'] = 603;
51371 t['arrowdblright'] = 987;
51372 t['arrowdbldown'] = 603;
51373 t['lozenge'] = 494;
51374 t['angleleft'] = 329;
51375 t['registersans'] = 790;
51376 t['copyrightsans'] = 790;
51377 t['trademarksans'] = 786;
51378 t['summation'] = 713;
51379 t['parenlefttp'] = 384;
51380 t['parenleftex'] = 384;
51381 t['parenleftbt'] = 384;
51382 t['bracketlefttp'] = 384;
51383 t['bracketleftex'] = 384;
51384 t['bracketleftbt'] = 384;
51385 t['bracelefttp'] = 494;
51386 t['braceleftmid'] = 494;
51387 t['braceleftbt'] = 494;
51388 t['braceex'] = 494;
51389 t['angleright'] = 329;
51390 t['integral'] = 274;
51391 t['integraltp'] = 686;
51392 t['integralex'] = 686;
51393 t['integralbt'] = 686;
51394 t['parenrighttp'] = 384;
51395 t['parenrightex'] = 384;
51396 t['parenrightbt'] = 384;
51397 t['bracketrighttp'] = 384;
51398 t['bracketrightex'] = 384;
51399 t['bracketrightbt'] = 384;
51400 t['bracerighttp'] = 494;
51401 t['bracerightmid'] = 494;
51402 t['bracerightbt'] = 494;
51403 t['apple'] = 790;
51404 });
51405 t['Times-Roman'] = (0, _core_utils.getLookupTableFactory)(function (t) {
51406 t['space'] = 250;
51407 t['exclam'] = 333;
51408 t['quotedbl'] = 408;
51409 t['numbersign'] = 500;
51410 t['dollar'] = 500;
51411 t['percent'] = 833;
51412 t['ampersand'] = 778;
51413 t['quoteright'] = 333;
51414 t['parenleft'] = 333;
51415 t['parenright'] = 333;
51416 t['asterisk'] = 500;
51417 t['plus'] = 564;
51418 t['comma'] = 250;
51419 t['hyphen'] = 333;
51420 t['period'] = 250;
51421 t['slash'] = 278;
51422 t['zero'] = 500;
51423 t['one'] = 500;
51424 t['two'] = 500;
51425 t['three'] = 500;
51426 t['four'] = 500;
51427 t['five'] = 500;
51428 t['six'] = 500;
51429 t['seven'] = 500;
51430 t['eight'] = 500;
51431 t['nine'] = 500;
51432 t['colon'] = 278;
51433 t['semicolon'] = 278;
51434 t['less'] = 564;
51435 t['equal'] = 564;
51436 t['greater'] = 564;
51437 t['question'] = 444;
51438 t['at'] = 921;
51439 t['A'] = 722;
51440 t['B'] = 667;
51441 t['C'] = 667;
51442 t['D'] = 722;
51443 t['E'] = 611;
51444 t['F'] = 556;
51445 t['G'] = 722;
51446 t['H'] = 722;
51447 t['I'] = 333;
51448 t['J'] = 389;
51449 t['K'] = 722;
51450 t['L'] = 611;
51451 t['M'] = 889;
51452 t['N'] = 722;
51453 t['O'] = 722;
51454 t['P'] = 556;
51455 t['Q'] = 722;
51456 t['R'] = 667;
51457 t['S'] = 556;
51458 t['T'] = 611;
51459 t['U'] = 722;
51460 t['V'] = 722;
51461 t['W'] = 944;
51462 t['X'] = 722;
51463 t['Y'] = 722;
51464 t['Z'] = 611;
51465 t['bracketleft'] = 333;
51466 t['backslash'] = 278;
51467 t['bracketright'] = 333;
51468 t['asciicircum'] = 469;
51469 t['underscore'] = 500;
51470 t['quoteleft'] = 333;
51471 t['a'] = 444;
51472 t['b'] = 500;
51473 t['c'] = 444;
51474 t['d'] = 500;
51475 t['e'] = 444;
51476 t['f'] = 333;
51477 t['g'] = 500;
51478 t['h'] = 500;
51479 t['i'] = 278;
51480 t['j'] = 278;
51481 t['k'] = 500;
51482 t['l'] = 278;
51483 t['m'] = 778;
51484 t['n'] = 500;
51485 t['o'] = 500;
51486 t['p'] = 500;
51487 t['q'] = 500;
51488 t['r'] = 333;
51489 t['s'] = 389;
51490 t['t'] = 278;
51491 t['u'] = 500;
51492 t['v'] = 500;
51493 t['w'] = 722;
51494 t['x'] = 500;
51495 t['y'] = 500;
51496 t['z'] = 444;
51497 t['braceleft'] = 480;
51498 t['bar'] = 200;
51499 t['braceright'] = 480;
51500 t['asciitilde'] = 541;
51501 t['exclamdown'] = 333;
51502 t['cent'] = 500;
51503 t['sterling'] = 500;
51504 t['fraction'] = 167;
51505 t['yen'] = 500;
51506 t['florin'] = 500;
51507 t['section'] = 500;
51508 t['currency'] = 500;
51509 t['quotesingle'] = 180;
51510 t['quotedblleft'] = 444;
51511 t['guillemotleft'] = 500;
51512 t['guilsinglleft'] = 333;
51513 t['guilsinglright'] = 333;
51514 t['fi'] = 556;
51515 t['fl'] = 556;
51516 t['endash'] = 500;
51517 t['dagger'] = 500;
51518 t['daggerdbl'] = 500;
51519 t['periodcentered'] = 250;
51520 t['paragraph'] = 453;
51521 t['bullet'] = 350;
51522 t['quotesinglbase'] = 333;
51523 t['quotedblbase'] = 444;
51524 t['quotedblright'] = 444;
51525 t['guillemotright'] = 500;
51526 t['ellipsis'] = 1000;
51527 t['perthousand'] = 1000;
51528 t['questiondown'] = 444;
51529 t['grave'] = 333;
51530 t['acute'] = 333;
51531 t['circumflex'] = 333;
51532 t['tilde'] = 333;
51533 t['macron'] = 333;
51534 t['breve'] = 333;
51535 t['dotaccent'] = 333;
51536 t['dieresis'] = 333;
51537 t['ring'] = 333;
51538 t['cedilla'] = 333;
51539 t['hungarumlaut'] = 333;
51540 t['ogonek'] = 333;
51541 t['caron'] = 333;
51542 t['emdash'] = 1000;
51543 t['AE'] = 889;
51544 t['ordfeminine'] = 276;
51545 t['Lslash'] = 611;
51546 t['Oslash'] = 722;
51547 t['OE'] = 889;
51548 t['ordmasculine'] = 310;
51549 t['ae'] = 667;
51550 t['dotlessi'] = 278;
51551 t['lslash'] = 278;
51552 t['oslash'] = 500;
51553 t['oe'] = 722;
51554 t['germandbls'] = 500;
51555 t['Idieresis'] = 333;
51556 t['eacute'] = 444;
51557 t['abreve'] = 444;
51558 t['uhungarumlaut'] = 500;
51559 t['ecaron'] = 444;
51560 t['Ydieresis'] = 722;
51561 t['divide'] = 564;
51562 t['Yacute'] = 722;
51563 t['Acircumflex'] = 722;
51564 t['aacute'] = 444;
51565 t['Ucircumflex'] = 722;
51566 t['yacute'] = 500;
51567 t['scommaaccent'] = 389;
51568 t['ecircumflex'] = 444;
51569 t['Uring'] = 722;
51570 t['Udieresis'] = 722;
51571 t['aogonek'] = 444;
51572 t['Uacute'] = 722;
51573 t['uogonek'] = 500;
51574 t['Edieresis'] = 611;
51575 t['Dcroat'] = 722;
51576 t['commaaccent'] = 250;
51577 t['copyright'] = 760;
51578 t['Emacron'] = 611;
51579 t['ccaron'] = 444;
51580 t['aring'] = 444;
51581 t['Ncommaaccent'] = 722;
51582 t['lacute'] = 278;
51583 t['agrave'] = 444;
51584 t['Tcommaaccent'] = 611;
51585 t['Cacute'] = 667;
51586 t['atilde'] = 444;
51587 t['Edotaccent'] = 611;
51588 t['scaron'] = 389;
51589 t['scedilla'] = 389;
51590 t['iacute'] = 278;
51591 t['lozenge'] = 471;
51592 t['Rcaron'] = 667;
51593 t['Gcommaaccent'] = 722;
51594 t['ucircumflex'] = 500;
51595 t['acircumflex'] = 444;
51596 t['Amacron'] = 722;
51597 t['rcaron'] = 333;
51598 t['ccedilla'] = 444;
51599 t['Zdotaccent'] = 611;
51600 t['Thorn'] = 556;
51601 t['Omacron'] = 722;
51602 t['Racute'] = 667;
51603 t['Sacute'] = 556;
51604 t['dcaron'] = 588;
51605 t['Umacron'] = 722;
51606 t['uring'] = 500;
51607 t['threesuperior'] = 300;
51608 t['Ograve'] = 722;
51609 t['Agrave'] = 722;
51610 t['Abreve'] = 722;
51611 t['multiply'] = 564;
51612 t['uacute'] = 500;
51613 t['Tcaron'] = 611;
51614 t['partialdiff'] = 476;
51615 t['ydieresis'] = 500;
51616 t['Nacute'] = 722;
51617 t['icircumflex'] = 278;
51618 t['Ecircumflex'] = 611;
51619 t['adieresis'] = 444;
51620 t['edieresis'] = 444;
51621 t['cacute'] = 444;
51622 t['nacute'] = 500;
51623 t['umacron'] = 500;
51624 t['Ncaron'] = 722;
51625 t['Iacute'] = 333;
51626 t['plusminus'] = 564;
51627 t['brokenbar'] = 200;
51628 t['registered'] = 760;
51629 t['Gbreve'] = 722;
51630 t['Idotaccent'] = 333;
51631 t['summation'] = 600;
51632 t['Egrave'] = 611;
51633 t['racute'] = 333;
51634 t['omacron'] = 500;
51635 t['Zacute'] = 611;
51636 t['Zcaron'] = 611;
51637 t['greaterequal'] = 549;
51638 t['Eth'] = 722;
51639 t['Ccedilla'] = 667;
51640 t['lcommaaccent'] = 278;
51641 t['tcaron'] = 326;
51642 t['eogonek'] = 444;
51643 t['Uogonek'] = 722;
51644 t['Aacute'] = 722;
51645 t['Adieresis'] = 722;
51646 t['egrave'] = 444;
51647 t['zacute'] = 444;
51648 t['iogonek'] = 278;
51649 t['Oacute'] = 722;
51650 t['oacute'] = 500;
51651 t['amacron'] = 444;
51652 t['sacute'] = 389;
51653 t['idieresis'] = 278;
51654 t['Ocircumflex'] = 722;
51655 t['Ugrave'] = 722;
51656 t['Delta'] = 612;
51657 t['thorn'] = 500;
51658 t['twosuperior'] = 300;
51659 t['Odieresis'] = 722;
51660 t['mu'] = 500;
51661 t['igrave'] = 278;
51662 t['ohungarumlaut'] = 500;
51663 t['Eogonek'] = 611;
51664 t['dcroat'] = 500;
51665 t['threequarters'] = 750;
51666 t['Scedilla'] = 556;
51667 t['lcaron'] = 344;
51668 t['Kcommaaccent'] = 722;
51669 t['Lacute'] = 611;
51670 t['trademark'] = 980;
51671 t['edotaccent'] = 444;
51672 t['Igrave'] = 333;
51673 t['Imacron'] = 333;
51674 t['Lcaron'] = 611;
51675 t['onehalf'] = 750;
51676 t['lessequal'] = 549;
51677 t['ocircumflex'] = 500;
51678 t['ntilde'] = 500;
51679 t['Uhungarumlaut'] = 722;
51680 t['Eacute'] = 611;
51681 t['emacron'] = 444;
51682 t['gbreve'] = 500;
51683 t['onequarter'] = 750;
51684 t['Scaron'] = 556;
51685 t['Scommaaccent'] = 556;
51686 t['Ohungarumlaut'] = 722;
51687 t['degree'] = 400;
51688 t['ograve'] = 500;
51689 t['Ccaron'] = 667;
51690 t['ugrave'] = 500;
51691 t['radical'] = 453;
51692 t['Dcaron'] = 722;
51693 t['rcommaaccent'] = 333;
51694 t['Ntilde'] = 722;
51695 t['otilde'] = 500;
51696 t['Rcommaaccent'] = 667;
51697 t['Lcommaaccent'] = 611;
51698 t['Atilde'] = 722;
51699 t['Aogonek'] = 722;
51700 t['Aring'] = 722;
51701 t['Otilde'] = 722;
51702 t['zdotaccent'] = 444;
51703 t['Ecaron'] = 611;
51704 t['Iogonek'] = 333;
51705 t['kcommaaccent'] = 500;
51706 t['minus'] = 564;
51707 t['Icircumflex'] = 333;
51708 t['ncaron'] = 500;
51709 t['tcommaaccent'] = 278;
51710 t['logicalnot'] = 564;
51711 t['odieresis'] = 500;
51712 t['udieresis'] = 500;
51713 t['notequal'] = 549;
51714 t['gcommaaccent'] = 500;
51715 t['eth'] = 500;
51716 t['zcaron'] = 444;
51717 t['ncommaaccent'] = 500;
51718 t['onesuperior'] = 300;
51719 t['imacron'] = 278;
51720 t['Euro'] = 500;
51721 });
51722 t['Times-Bold'] = (0, _core_utils.getLookupTableFactory)(function (t) {
51723 t['space'] = 250;
51724 t['exclam'] = 333;
51725 t['quotedbl'] = 555;
51726 t['numbersign'] = 500;
51727 t['dollar'] = 500;
51728 t['percent'] = 1000;
51729 t['ampersand'] = 833;
51730 t['quoteright'] = 333;
51731 t['parenleft'] = 333;
51732 t['parenright'] = 333;
51733 t['asterisk'] = 500;
51734 t['plus'] = 570;
51735 t['comma'] = 250;
51736 t['hyphen'] = 333;
51737 t['period'] = 250;
51738 t['slash'] = 278;
51739 t['zero'] = 500;
51740 t['one'] = 500;
51741 t['two'] = 500;
51742 t['three'] = 500;
51743 t['four'] = 500;
51744 t['five'] = 500;
51745 t['six'] = 500;
51746 t['seven'] = 500;
51747 t['eight'] = 500;
51748 t['nine'] = 500;
51749 t['colon'] = 333;
51750 t['semicolon'] = 333;
51751 t['less'] = 570;
51752 t['equal'] = 570;
51753 t['greater'] = 570;
51754 t['question'] = 500;
51755 t['at'] = 930;
51756 t['A'] = 722;
51757 t['B'] = 667;
51758 t['C'] = 722;
51759 t['D'] = 722;
51760 t['E'] = 667;
51761 t['F'] = 611;
51762 t['G'] = 778;
51763 t['H'] = 778;
51764 t['I'] = 389;
51765 t['J'] = 500;
51766 t['K'] = 778;
51767 t['L'] = 667;
51768 t['M'] = 944;
51769 t['N'] = 722;
51770 t['O'] = 778;
51771 t['P'] = 611;
51772 t['Q'] = 778;
51773 t['R'] = 722;
51774 t['S'] = 556;
51775 t['T'] = 667;
51776 t['U'] = 722;
51777 t['V'] = 722;
51778 t['W'] = 1000;
51779 t['X'] = 722;
51780 t['Y'] = 722;
51781 t['Z'] = 667;
51782 t['bracketleft'] = 333;
51783 t['backslash'] = 278;
51784 t['bracketright'] = 333;
51785 t['asciicircum'] = 581;
51786 t['underscore'] = 500;
51787 t['quoteleft'] = 333;
51788 t['a'] = 500;
51789 t['b'] = 556;
51790 t['c'] = 444;
51791 t['d'] = 556;
51792 t['e'] = 444;
51793 t['f'] = 333;
51794 t['g'] = 500;
51795 t['h'] = 556;
51796 t['i'] = 278;
51797 t['j'] = 333;
51798 t['k'] = 556;
51799 t['l'] = 278;
51800 t['m'] = 833;
51801 t['n'] = 556;
51802 t['o'] = 500;
51803 t['p'] = 556;
51804 t['q'] = 556;
51805 t['r'] = 444;
51806 t['s'] = 389;
51807 t['t'] = 333;
51808 t['u'] = 556;
51809 t['v'] = 500;
51810 t['w'] = 722;
51811 t['x'] = 500;
51812 t['y'] = 500;
51813 t['z'] = 444;
51814 t['braceleft'] = 394;
51815 t['bar'] = 220;
51816 t['braceright'] = 394;
51817 t['asciitilde'] = 520;
51818 t['exclamdown'] = 333;
51819 t['cent'] = 500;
51820 t['sterling'] = 500;
51821 t['fraction'] = 167;
51822 t['yen'] = 500;
51823 t['florin'] = 500;
51824 t['section'] = 500;
51825 t['currency'] = 500;
51826 t['quotesingle'] = 278;
51827 t['quotedblleft'] = 500;
51828 t['guillemotleft'] = 500;
51829 t['guilsinglleft'] = 333;
51830 t['guilsinglright'] = 333;
51831 t['fi'] = 556;
51832 t['fl'] = 556;
51833 t['endash'] = 500;
51834 t['dagger'] = 500;
51835 t['daggerdbl'] = 500;
51836 t['periodcentered'] = 250;
51837 t['paragraph'] = 540;
51838 t['bullet'] = 350;
51839 t['quotesinglbase'] = 333;
51840 t['quotedblbase'] = 500;
51841 t['quotedblright'] = 500;
51842 t['guillemotright'] = 500;
51843 t['ellipsis'] = 1000;
51844 t['perthousand'] = 1000;
51845 t['questiondown'] = 500;
51846 t['grave'] = 333;
51847 t['acute'] = 333;
51848 t['circumflex'] = 333;
51849 t['tilde'] = 333;
51850 t['macron'] = 333;
51851 t['breve'] = 333;
51852 t['dotaccent'] = 333;
51853 t['dieresis'] = 333;
51854 t['ring'] = 333;
51855 t['cedilla'] = 333;
51856 t['hungarumlaut'] = 333;
51857 t['ogonek'] = 333;
51858 t['caron'] = 333;
51859 t['emdash'] = 1000;
51860 t['AE'] = 1000;
51861 t['ordfeminine'] = 300;
51862 t['Lslash'] = 667;
51863 t['Oslash'] = 778;
51864 t['OE'] = 1000;
51865 t['ordmasculine'] = 330;
51866 t['ae'] = 722;
51867 t['dotlessi'] = 278;
51868 t['lslash'] = 278;
51869 t['oslash'] = 500;
51870 t['oe'] = 722;
51871 t['germandbls'] = 556;
51872 t['Idieresis'] = 389;
51873 t['eacute'] = 444;
51874 t['abreve'] = 500;
51875 t['uhungarumlaut'] = 556;
51876 t['ecaron'] = 444;
51877 t['Ydieresis'] = 722;
51878 t['divide'] = 570;
51879 t['Yacute'] = 722;
51880 t['Acircumflex'] = 722;
51881 t['aacute'] = 500;
51882 t['Ucircumflex'] = 722;
51883 t['yacute'] = 500;
51884 t['scommaaccent'] = 389;
51885 t['ecircumflex'] = 444;
51886 t['Uring'] = 722;
51887 t['Udieresis'] = 722;
51888 t['aogonek'] = 500;
51889 t['Uacute'] = 722;
51890 t['uogonek'] = 556;
51891 t['Edieresis'] = 667;
51892 t['Dcroat'] = 722;
51893 t['commaaccent'] = 250;
51894 t['copyright'] = 747;
51895 t['Emacron'] = 667;
51896 t['ccaron'] = 444;
51897 t['aring'] = 500;
51898 t['Ncommaaccent'] = 722;
51899 t['lacute'] = 278;
51900 t['agrave'] = 500;
51901 t['Tcommaaccent'] = 667;
51902 t['Cacute'] = 722;
51903 t['atilde'] = 500;
51904 t['Edotaccent'] = 667;
51905 t['scaron'] = 389;
51906 t['scedilla'] = 389;
51907 t['iacute'] = 278;
51908 t['lozenge'] = 494;
51909 t['Rcaron'] = 722;
51910 t['Gcommaaccent'] = 778;
51911 t['ucircumflex'] = 556;
51912 t['acircumflex'] = 500;
51913 t['Amacron'] = 722;
51914 t['rcaron'] = 444;
51915 t['ccedilla'] = 444;
51916 t['Zdotaccent'] = 667;
51917 t['Thorn'] = 611;
51918 t['Omacron'] = 778;
51919 t['Racute'] = 722;
51920 t['Sacute'] = 556;
51921 t['dcaron'] = 672;
51922 t['Umacron'] = 722;
51923 t['uring'] = 556;
51924 t['threesuperior'] = 300;
51925 t['Ograve'] = 778;
51926 t['Agrave'] = 722;
51927 t['Abreve'] = 722;
51928 t['multiply'] = 570;
51929 t['uacute'] = 556;
51930 t['Tcaron'] = 667;
51931 t['partialdiff'] = 494;
51932 t['ydieresis'] = 500;
51933 t['Nacute'] = 722;
51934 t['icircumflex'] = 278;
51935 t['Ecircumflex'] = 667;
51936 t['adieresis'] = 500;
51937 t['edieresis'] = 444;
51938 t['cacute'] = 444;
51939 t['nacute'] = 556;
51940 t['umacron'] = 556;
51941 t['Ncaron'] = 722;
51942 t['Iacute'] = 389;
51943 t['plusminus'] = 570;
51944 t['brokenbar'] = 220;
51945 t['registered'] = 747;
51946 t['Gbreve'] = 778;
51947 t['Idotaccent'] = 389;
51948 t['summation'] = 600;
51949 t['Egrave'] = 667;
51950 t['racute'] = 444;
51951 t['omacron'] = 500;
51952 t['Zacute'] = 667;
51953 t['Zcaron'] = 667;
51954 t['greaterequal'] = 549;
51955 t['Eth'] = 722;
51956 t['Ccedilla'] = 722;
51957 t['lcommaaccent'] = 278;
51958 t['tcaron'] = 416;
51959 t['eogonek'] = 444;
51960 t['Uogonek'] = 722;
51961 t['Aacute'] = 722;
51962 t['Adieresis'] = 722;
51963 t['egrave'] = 444;
51964 t['zacute'] = 444;
51965 t['iogonek'] = 278;
51966 t['Oacute'] = 778;
51967 t['oacute'] = 500;
51968 t['amacron'] = 500;
51969 t['sacute'] = 389;
51970 t['idieresis'] = 278;
51971 t['Ocircumflex'] = 778;
51972 t['Ugrave'] = 722;
51973 t['Delta'] = 612;
51974 t['thorn'] = 556;
51975 t['twosuperior'] = 300;
51976 t['Odieresis'] = 778;
51977 t['mu'] = 556;
51978 t['igrave'] = 278;
51979 t['ohungarumlaut'] = 500;
51980 t['Eogonek'] = 667;
51981 t['dcroat'] = 556;
51982 t['threequarters'] = 750;
51983 t['Scedilla'] = 556;
51984 t['lcaron'] = 394;
51985 t['Kcommaaccent'] = 778;
51986 t['Lacute'] = 667;
51987 t['trademark'] = 1000;
51988 t['edotaccent'] = 444;
51989 t['Igrave'] = 389;
51990 t['Imacron'] = 389;
51991 t['Lcaron'] = 667;
51992 t['onehalf'] = 750;
51993 t['lessequal'] = 549;
51994 t['ocircumflex'] = 500;
51995 t['ntilde'] = 556;
51996 t['Uhungarumlaut'] = 722;
51997 t['Eacute'] = 667;
51998 t['emacron'] = 444;
51999 t['gbreve'] = 500;
52000 t['onequarter'] = 750;
52001 t['Scaron'] = 556;
52002 t['Scommaaccent'] = 556;
52003 t['Ohungarumlaut'] = 778;
52004 t['degree'] = 400;
52005 t['ograve'] = 500;
52006 t['Ccaron'] = 722;
52007 t['ugrave'] = 556;
52008 t['radical'] = 549;
52009 t['Dcaron'] = 722;
52010 t['rcommaaccent'] = 444;
52011 t['Ntilde'] = 722;
52012 t['otilde'] = 500;
52013 t['Rcommaaccent'] = 722;
52014 t['Lcommaaccent'] = 667;
52015 t['Atilde'] = 722;
52016 t['Aogonek'] = 722;
52017 t['Aring'] = 722;
52018 t['Otilde'] = 778;
52019 t['zdotaccent'] = 444;
52020 t['Ecaron'] = 667;
52021 t['Iogonek'] = 389;
52022 t['kcommaaccent'] = 556;
52023 t['minus'] = 570;
52024 t['Icircumflex'] = 389;
52025 t['ncaron'] = 556;
52026 t['tcommaaccent'] = 333;
52027 t['logicalnot'] = 570;
52028 t['odieresis'] = 500;
52029 t['udieresis'] = 556;
52030 t['notequal'] = 549;
52031 t['gcommaaccent'] = 500;
52032 t['eth'] = 500;
52033 t['zcaron'] = 444;
52034 t['ncommaaccent'] = 556;
52035 t['onesuperior'] = 300;
52036 t['imacron'] = 278;
52037 t['Euro'] = 500;
52038 });
52039 t['Times-BoldItalic'] = (0, _core_utils.getLookupTableFactory)(function (t) {
52040 t['space'] = 250;
52041 t['exclam'] = 389;
52042 t['quotedbl'] = 555;
52043 t['numbersign'] = 500;
52044 t['dollar'] = 500;
52045 t['percent'] = 833;
52046 t['ampersand'] = 778;
52047 t['quoteright'] = 333;
52048 t['parenleft'] = 333;
52049 t['parenright'] = 333;
52050 t['asterisk'] = 500;
52051 t['plus'] = 570;
52052 t['comma'] = 250;
52053 t['hyphen'] = 333;
52054 t['period'] = 250;
52055 t['slash'] = 278;
52056 t['zero'] = 500;
52057 t['one'] = 500;
52058 t['two'] = 500;
52059 t['three'] = 500;
52060 t['four'] = 500;
52061 t['five'] = 500;
52062 t['six'] = 500;
52063 t['seven'] = 500;
52064 t['eight'] = 500;
52065 t['nine'] = 500;
52066 t['colon'] = 333;
52067 t['semicolon'] = 333;
52068 t['less'] = 570;
52069 t['equal'] = 570;
52070 t['greater'] = 570;
52071 t['question'] = 500;
52072 t['at'] = 832;
52073 t['A'] = 667;
52074 t['B'] = 667;
52075 t['C'] = 667;
52076 t['D'] = 722;
52077 t['E'] = 667;
52078 t['F'] = 667;
52079 t['G'] = 722;
52080 t['H'] = 778;
52081 t['I'] = 389;
52082 t['J'] = 500;
52083 t['K'] = 667;
52084 t['L'] = 611;
52085 t['M'] = 889;
52086 t['N'] = 722;
52087 t['O'] = 722;
52088 t['P'] = 611;
52089 t['Q'] = 722;
52090 t['R'] = 667;
52091 t['S'] = 556;
52092 t['T'] = 611;
52093 t['U'] = 722;
52094 t['V'] = 667;
52095 t['W'] = 889;
52096 t['X'] = 667;
52097 t['Y'] = 611;
52098 t['Z'] = 611;
52099 t['bracketleft'] = 333;
52100 t['backslash'] = 278;
52101 t['bracketright'] = 333;
52102 t['asciicircum'] = 570;
52103 t['underscore'] = 500;
52104 t['quoteleft'] = 333;
52105 t['a'] = 500;
52106 t['b'] = 500;
52107 t['c'] = 444;
52108 t['d'] = 500;
52109 t['e'] = 444;
52110 t['f'] = 333;
52111 t['g'] = 500;
52112 t['h'] = 556;
52113 t['i'] = 278;
52114 t['j'] = 278;
52115 t['k'] = 500;
52116 t['l'] = 278;
52117 t['m'] = 778;
52118 t['n'] = 556;
52119 t['o'] = 500;
52120 t['p'] = 500;
52121 t['q'] = 500;
52122 t['r'] = 389;
52123 t['s'] = 389;
52124 t['t'] = 278;
52125 t['u'] = 556;
52126 t['v'] = 444;
52127 t['w'] = 667;
52128 t['x'] = 500;
52129 t['y'] = 444;
52130 t['z'] = 389;
52131 t['braceleft'] = 348;
52132 t['bar'] = 220;
52133 t['braceright'] = 348;
52134 t['asciitilde'] = 570;
52135 t['exclamdown'] = 389;
52136 t['cent'] = 500;
52137 t['sterling'] = 500;
52138 t['fraction'] = 167;
52139 t['yen'] = 500;
52140 t['florin'] = 500;
52141 t['section'] = 500;
52142 t['currency'] = 500;
52143 t['quotesingle'] = 278;
52144 t['quotedblleft'] = 500;
52145 t['guillemotleft'] = 500;
52146 t['guilsinglleft'] = 333;
52147 t['guilsinglright'] = 333;
52148 t['fi'] = 556;
52149 t['fl'] = 556;
52150 t['endash'] = 500;
52151 t['dagger'] = 500;
52152 t['daggerdbl'] = 500;
52153 t['periodcentered'] = 250;
52154 t['paragraph'] = 500;
52155 t['bullet'] = 350;
52156 t['quotesinglbase'] = 333;
52157 t['quotedblbase'] = 500;
52158 t['quotedblright'] = 500;
52159 t['guillemotright'] = 500;
52160 t['ellipsis'] = 1000;
52161 t['perthousand'] = 1000;
52162 t['questiondown'] = 500;
52163 t['grave'] = 333;
52164 t['acute'] = 333;
52165 t['circumflex'] = 333;
52166 t['tilde'] = 333;
52167 t['macron'] = 333;
52168 t['breve'] = 333;
52169 t['dotaccent'] = 333;
52170 t['dieresis'] = 333;
52171 t['ring'] = 333;
52172 t['cedilla'] = 333;
52173 t['hungarumlaut'] = 333;
52174 t['ogonek'] = 333;
52175 t['caron'] = 333;
52176 t['emdash'] = 1000;
52177 t['AE'] = 944;
52178 t['ordfeminine'] = 266;
52179 t['Lslash'] = 611;
52180 t['Oslash'] = 722;
52181 t['OE'] = 944;
52182 t['ordmasculine'] = 300;
52183 t['ae'] = 722;
52184 t['dotlessi'] = 278;
52185 t['lslash'] = 278;
52186 t['oslash'] = 500;
52187 t['oe'] = 722;
52188 t['germandbls'] = 500;
52189 t['Idieresis'] = 389;
52190 t['eacute'] = 444;
52191 t['abreve'] = 500;
52192 t['uhungarumlaut'] = 556;
52193 t['ecaron'] = 444;
52194 t['Ydieresis'] = 611;
52195 t['divide'] = 570;
52196 t['Yacute'] = 611;
52197 t['Acircumflex'] = 667;
52198 t['aacute'] = 500;
52199 t['Ucircumflex'] = 722;
52200 t['yacute'] = 444;
52201 t['scommaaccent'] = 389;
52202 t['ecircumflex'] = 444;
52203 t['Uring'] = 722;
52204 t['Udieresis'] = 722;
52205 t['aogonek'] = 500;
52206 t['Uacute'] = 722;
52207 t['uogonek'] = 556;
52208 t['Edieresis'] = 667;
52209 t['Dcroat'] = 722;
52210 t['commaaccent'] = 250;
52211 t['copyright'] = 747;
52212 t['Emacron'] = 667;
52213 t['ccaron'] = 444;
52214 t['aring'] = 500;
52215 t['Ncommaaccent'] = 722;
52216 t['lacute'] = 278;
52217 t['agrave'] = 500;
52218 t['Tcommaaccent'] = 611;
52219 t['Cacute'] = 667;
52220 t['atilde'] = 500;
52221 t['Edotaccent'] = 667;
52222 t['scaron'] = 389;
52223 t['scedilla'] = 389;
52224 t['iacute'] = 278;
52225 t['lozenge'] = 494;
52226 t['Rcaron'] = 667;
52227 t['Gcommaaccent'] = 722;
52228 t['ucircumflex'] = 556;
52229 t['acircumflex'] = 500;
52230 t['Amacron'] = 667;
52231 t['rcaron'] = 389;
52232 t['ccedilla'] = 444;
52233 t['Zdotaccent'] = 611;
52234 t['Thorn'] = 611;
52235 t['Omacron'] = 722;
52236 t['Racute'] = 667;
52237 t['Sacute'] = 556;
52238 t['dcaron'] = 608;
52239 t['Umacron'] = 722;
52240 t['uring'] = 556;
52241 t['threesuperior'] = 300;
52242 t['Ograve'] = 722;
52243 t['Agrave'] = 667;
52244 t['Abreve'] = 667;
52245 t['multiply'] = 570;
52246 t['uacute'] = 556;
52247 t['Tcaron'] = 611;
52248 t['partialdiff'] = 494;
52249 t['ydieresis'] = 444;
52250 t['Nacute'] = 722;
52251 t['icircumflex'] = 278;
52252 t['Ecircumflex'] = 667;
52253 t['adieresis'] = 500;
52254 t['edieresis'] = 444;
52255 t['cacute'] = 444;
52256 t['nacute'] = 556;
52257 t['umacron'] = 556;
52258 t['Ncaron'] = 722;
52259 t['Iacute'] = 389;
52260 t['plusminus'] = 570;
52261 t['brokenbar'] = 220;
52262 t['registered'] = 747;
52263 t['Gbreve'] = 722;
52264 t['Idotaccent'] = 389;
52265 t['summation'] = 600;
52266 t['Egrave'] = 667;
52267 t['racute'] = 389;
52268 t['omacron'] = 500;
52269 t['Zacute'] = 611;
52270 t['Zcaron'] = 611;
52271 t['greaterequal'] = 549;
52272 t['Eth'] = 722;
52273 t['Ccedilla'] = 667;
52274 t['lcommaaccent'] = 278;
52275 t['tcaron'] = 366;
52276 t['eogonek'] = 444;
52277 t['Uogonek'] = 722;
52278 t['Aacute'] = 667;
52279 t['Adieresis'] = 667;
52280 t['egrave'] = 444;
52281 t['zacute'] = 389;
52282 t['iogonek'] = 278;
52283 t['Oacute'] = 722;
52284 t['oacute'] = 500;
52285 t['amacron'] = 500;
52286 t['sacute'] = 389;
52287 t['idieresis'] = 278;
52288 t['Ocircumflex'] = 722;
52289 t['Ugrave'] = 722;
52290 t['Delta'] = 612;
52291 t['thorn'] = 500;
52292 t['twosuperior'] = 300;
52293 t['Odieresis'] = 722;
52294 t['mu'] = 576;
52295 t['igrave'] = 278;
52296 t['ohungarumlaut'] = 500;
52297 t['Eogonek'] = 667;
52298 t['dcroat'] = 500;
52299 t['threequarters'] = 750;
52300 t['Scedilla'] = 556;
52301 t['lcaron'] = 382;
52302 t['Kcommaaccent'] = 667;
52303 t['Lacute'] = 611;
52304 t['trademark'] = 1000;
52305 t['edotaccent'] = 444;
52306 t['Igrave'] = 389;
52307 t['Imacron'] = 389;
52308 t['Lcaron'] = 611;
52309 t['onehalf'] = 750;
52310 t['lessequal'] = 549;
52311 t['ocircumflex'] = 500;
52312 t['ntilde'] = 556;
52313 t['Uhungarumlaut'] = 722;
52314 t['Eacute'] = 667;
52315 t['emacron'] = 444;
52316 t['gbreve'] = 500;
52317 t['onequarter'] = 750;
52318 t['Scaron'] = 556;
52319 t['Scommaaccent'] = 556;
52320 t['Ohungarumlaut'] = 722;
52321 t['degree'] = 400;
52322 t['ograve'] = 500;
52323 t['Ccaron'] = 667;
52324 t['ugrave'] = 556;
52325 t['radical'] = 549;
52326 t['Dcaron'] = 722;
52327 t['rcommaaccent'] = 389;
52328 t['Ntilde'] = 722;
52329 t['otilde'] = 500;
52330 t['Rcommaaccent'] = 667;
52331 t['Lcommaaccent'] = 611;
52332 t['Atilde'] = 667;
52333 t['Aogonek'] = 667;
52334 t['Aring'] = 667;
52335 t['Otilde'] = 722;
52336 t['zdotaccent'] = 389;
52337 t['Ecaron'] = 667;
52338 t['Iogonek'] = 389;
52339 t['kcommaaccent'] = 500;
52340 t['minus'] = 606;
52341 t['Icircumflex'] = 389;
52342 t['ncaron'] = 556;
52343 t['tcommaaccent'] = 278;
52344 t['logicalnot'] = 606;
52345 t['odieresis'] = 500;
52346 t['udieresis'] = 556;
52347 t['notequal'] = 549;
52348 t['gcommaaccent'] = 500;
52349 t['eth'] = 500;
52350 t['zcaron'] = 389;
52351 t['ncommaaccent'] = 556;
52352 t['onesuperior'] = 300;
52353 t['imacron'] = 278;
52354 t['Euro'] = 500;
52355 });
52356 t['Times-Italic'] = (0, _core_utils.getLookupTableFactory)(function (t) {
52357 t['space'] = 250;
52358 t['exclam'] = 333;
52359 t['quotedbl'] = 420;
52360 t['numbersign'] = 500;
52361 t['dollar'] = 500;
52362 t['percent'] = 833;
52363 t['ampersand'] = 778;
52364 t['quoteright'] = 333;
52365 t['parenleft'] = 333;
52366 t['parenright'] = 333;
52367 t['asterisk'] = 500;
52368 t['plus'] = 675;
52369 t['comma'] = 250;
52370 t['hyphen'] = 333;
52371 t['period'] = 250;
52372 t['slash'] = 278;
52373 t['zero'] = 500;
52374 t['one'] = 500;
52375 t['two'] = 500;
52376 t['three'] = 500;
52377 t['four'] = 500;
52378 t['five'] = 500;
52379 t['six'] = 500;
52380 t['seven'] = 500;
52381 t['eight'] = 500;
52382 t['nine'] = 500;
52383 t['colon'] = 333;
52384 t['semicolon'] = 333;
52385 t['less'] = 675;
52386 t['equal'] = 675;
52387 t['greater'] = 675;
52388 t['question'] = 500;
52389 t['at'] = 920;
52390 t['A'] = 611;
52391 t['B'] = 611;
52392 t['C'] = 667;
52393 t['D'] = 722;
52394 t['E'] = 611;
52395 t['F'] = 611;
52396 t['G'] = 722;
52397 t['H'] = 722;
52398 t['I'] = 333;
52399 t['J'] = 444;
52400 t['K'] = 667;
52401 t['L'] = 556;
52402 t['M'] = 833;
52403 t['N'] = 667;
52404 t['O'] = 722;
52405 t['P'] = 611;
52406 t['Q'] = 722;
52407 t['R'] = 611;
52408 t['S'] = 500;
52409 t['T'] = 556;
52410 t['U'] = 722;
52411 t['V'] = 611;
52412 t['W'] = 833;
52413 t['X'] = 611;
52414 t['Y'] = 556;
52415 t['Z'] = 556;
52416 t['bracketleft'] = 389;
52417 t['backslash'] = 278;
52418 t['bracketright'] = 389;
52419 t['asciicircum'] = 422;
52420 t['underscore'] = 500;
52421 t['quoteleft'] = 333;
52422 t['a'] = 500;
52423 t['b'] = 500;
52424 t['c'] = 444;
52425 t['d'] = 500;
52426 t['e'] = 444;
52427 t['f'] = 278;
52428 t['g'] = 500;
52429 t['h'] = 500;
52430 t['i'] = 278;
52431 t['j'] = 278;
52432 t['k'] = 444;
52433 t['l'] = 278;
52434 t['m'] = 722;
52435 t['n'] = 500;
52436 t['o'] = 500;
52437 t['p'] = 500;
52438 t['q'] = 500;
52439 t['r'] = 389;
52440 t['s'] = 389;
52441 t['t'] = 278;
52442 t['u'] = 500;
52443 t['v'] = 444;
52444 t['w'] = 667;
52445 t['x'] = 444;
52446 t['y'] = 444;
52447 t['z'] = 389;
52448 t['braceleft'] = 400;
52449 t['bar'] = 275;
52450 t['braceright'] = 400;
52451 t['asciitilde'] = 541;
52452 t['exclamdown'] = 389;
52453 t['cent'] = 500;
52454 t['sterling'] = 500;
52455 t['fraction'] = 167;
52456 t['yen'] = 500;
52457 t['florin'] = 500;
52458 t['section'] = 500;
52459 t['currency'] = 500;
52460 t['quotesingle'] = 214;
52461 t['quotedblleft'] = 556;
52462 t['guillemotleft'] = 500;
52463 t['guilsinglleft'] = 333;
52464 t['guilsinglright'] = 333;
52465 t['fi'] = 500;
52466 t['fl'] = 500;
52467 t['endash'] = 500;
52468 t['dagger'] = 500;
52469 t['daggerdbl'] = 500;
52470 t['periodcentered'] = 250;
52471 t['paragraph'] = 523;
52472 t['bullet'] = 350;
52473 t['quotesinglbase'] = 333;
52474 t['quotedblbase'] = 556;
52475 t['quotedblright'] = 556;
52476 t['guillemotright'] = 500;
52477 t['ellipsis'] = 889;
52478 t['perthousand'] = 1000;
52479 t['questiondown'] = 500;
52480 t['grave'] = 333;
52481 t['acute'] = 333;
52482 t['circumflex'] = 333;
52483 t['tilde'] = 333;
52484 t['macron'] = 333;
52485 t['breve'] = 333;
52486 t['dotaccent'] = 333;
52487 t['dieresis'] = 333;
52488 t['ring'] = 333;
52489 t['cedilla'] = 333;
52490 t['hungarumlaut'] = 333;
52491 t['ogonek'] = 333;
52492 t['caron'] = 333;
52493 t['emdash'] = 889;
52494 t['AE'] = 889;
52495 t['ordfeminine'] = 276;
52496 t['Lslash'] = 556;
52497 t['Oslash'] = 722;
52498 t['OE'] = 944;
52499 t['ordmasculine'] = 310;
52500 t['ae'] = 667;
52501 t['dotlessi'] = 278;
52502 t['lslash'] = 278;
52503 t['oslash'] = 500;
52504 t['oe'] = 667;
52505 t['germandbls'] = 500;
52506 t['Idieresis'] = 333;
52507 t['eacute'] = 444;
52508 t['abreve'] = 500;
52509 t['uhungarumlaut'] = 500;
52510 t['ecaron'] = 444;
52511 t['Ydieresis'] = 556;
52512 t['divide'] = 675;
52513 t['Yacute'] = 556;
52514 t['Acircumflex'] = 611;
52515 t['aacute'] = 500;
52516 t['Ucircumflex'] = 722;
52517 t['yacute'] = 444;
52518 t['scommaaccent'] = 389;
52519 t['ecircumflex'] = 444;
52520 t['Uring'] = 722;
52521 t['Udieresis'] = 722;
52522 t['aogonek'] = 500;
52523 t['Uacute'] = 722;
52524 t['uogonek'] = 500;
52525 t['Edieresis'] = 611;
52526 t['Dcroat'] = 722;
52527 t['commaaccent'] = 250;
52528 t['copyright'] = 760;
52529 t['Emacron'] = 611;
52530 t['ccaron'] = 444;
52531 t['aring'] = 500;
52532 t['Ncommaaccent'] = 667;
52533 t['lacute'] = 278;
52534 t['agrave'] = 500;
52535 t['Tcommaaccent'] = 556;
52536 t['Cacute'] = 667;
52537 t['atilde'] = 500;
52538 t['Edotaccent'] = 611;
52539 t['scaron'] = 389;
52540 t['scedilla'] = 389;
52541 t['iacute'] = 278;
52542 t['lozenge'] = 471;
52543 t['Rcaron'] = 611;
52544 t['Gcommaaccent'] = 722;
52545 t['ucircumflex'] = 500;
52546 t['acircumflex'] = 500;
52547 t['Amacron'] = 611;
52548 t['rcaron'] = 389;
52549 t['ccedilla'] = 444;
52550 t['Zdotaccent'] = 556;
52551 t['Thorn'] = 611;
52552 t['Omacron'] = 722;
52553 t['Racute'] = 611;
52554 t['Sacute'] = 500;
52555 t['dcaron'] = 544;
52556 t['Umacron'] = 722;
52557 t['uring'] = 500;
52558 t['threesuperior'] = 300;
52559 t['Ograve'] = 722;
52560 t['Agrave'] = 611;
52561 t['Abreve'] = 611;
52562 t['multiply'] = 675;
52563 t['uacute'] = 500;
52564 t['Tcaron'] = 556;
52565 t['partialdiff'] = 476;
52566 t['ydieresis'] = 444;
52567 t['Nacute'] = 667;
52568 t['icircumflex'] = 278;
52569 t['Ecircumflex'] = 611;
52570 t['adieresis'] = 500;
52571 t['edieresis'] = 444;
52572 t['cacute'] = 444;
52573 t['nacute'] = 500;
52574 t['umacron'] = 500;
52575 t['Ncaron'] = 667;
52576 t['Iacute'] = 333;
52577 t['plusminus'] = 675;
52578 t['brokenbar'] = 275;
52579 t['registered'] = 760;
52580 t['Gbreve'] = 722;
52581 t['Idotaccent'] = 333;
52582 t['summation'] = 600;
52583 t['Egrave'] = 611;
52584 t['racute'] = 389;
52585 t['omacron'] = 500;
52586 t['Zacute'] = 556;
52587 t['Zcaron'] = 556;
52588 t['greaterequal'] = 549;
52589 t['Eth'] = 722;
52590 t['Ccedilla'] = 667;
52591 t['lcommaaccent'] = 278;
52592 t['tcaron'] = 300;
52593 t['eogonek'] = 444;
52594 t['Uogonek'] = 722;
52595 t['Aacute'] = 611;
52596 t['Adieresis'] = 611;
52597 t['egrave'] = 444;
52598 t['zacute'] = 389;
52599 t['iogonek'] = 278;
52600 t['Oacute'] = 722;
52601 t['oacute'] = 500;
52602 t['amacron'] = 500;
52603 t['sacute'] = 389;
52604 t['idieresis'] = 278;
52605 t['Ocircumflex'] = 722;
52606 t['Ugrave'] = 722;
52607 t['Delta'] = 612;
52608 t['thorn'] = 500;
52609 t['twosuperior'] = 300;
52610 t['Odieresis'] = 722;
52611 t['mu'] = 500;
52612 t['igrave'] = 278;
52613 t['ohungarumlaut'] = 500;
52614 t['Eogonek'] = 611;
52615 t['dcroat'] = 500;
52616 t['threequarters'] = 750;
52617 t['Scedilla'] = 500;
52618 t['lcaron'] = 300;
52619 t['Kcommaaccent'] = 667;
52620 t['Lacute'] = 556;
52621 t['trademark'] = 980;
52622 t['edotaccent'] = 444;
52623 t['Igrave'] = 333;
52624 t['Imacron'] = 333;
52625 t['Lcaron'] = 611;
52626 t['onehalf'] = 750;
52627 t['lessequal'] = 549;
52628 t['ocircumflex'] = 500;
52629 t['ntilde'] = 500;
52630 t['Uhungarumlaut'] = 722;
52631 t['Eacute'] = 611;
52632 t['emacron'] = 444;
52633 t['gbreve'] = 500;
52634 t['onequarter'] = 750;
52635 t['Scaron'] = 500;
52636 t['Scommaaccent'] = 500;
52637 t['Ohungarumlaut'] = 722;
52638 t['degree'] = 400;
52639 t['ograve'] = 500;
52640 t['Ccaron'] = 667;
52641 t['ugrave'] = 500;
52642 t['radical'] = 453;
52643 t['Dcaron'] = 722;
52644 t['rcommaaccent'] = 389;
52645 t['Ntilde'] = 667;
52646 t['otilde'] = 500;
52647 t['Rcommaaccent'] = 611;
52648 t['Lcommaaccent'] = 556;
52649 t['Atilde'] = 611;
52650 t['Aogonek'] = 611;
52651 t['Aring'] = 611;
52652 t['Otilde'] = 722;
52653 t['zdotaccent'] = 389;
52654 t['Ecaron'] = 611;
52655 t['Iogonek'] = 333;
52656 t['kcommaaccent'] = 444;
52657 t['minus'] = 675;
52658 t['Icircumflex'] = 333;
52659 t['ncaron'] = 500;
52660 t['tcommaaccent'] = 278;
52661 t['logicalnot'] = 675;
52662 t['odieresis'] = 500;
52663 t['udieresis'] = 500;
52664 t['notequal'] = 549;
52665 t['gcommaaccent'] = 500;
52666 t['eth'] = 500;
52667 t['zcaron'] = 389;
52668 t['ncommaaccent'] = 500;
52669 t['onesuperior'] = 300;
52670 t['imacron'] = 278;
52671 t['Euro'] = 500;
52672 });
52673 t['ZapfDingbats'] = (0, _core_utils.getLookupTableFactory)(function (t) {
52674 t['space'] = 278;
52675 t['a1'] = 974;
52676 t['a2'] = 961;
52677 t['a202'] = 974;
52678 t['a3'] = 980;
52679 t['a4'] = 719;
52680 t['a5'] = 789;
52681 t['a119'] = 790;
52682 t['a118'] = 791;
52683 t['a117'] = 690;
52684 t['a11'] = 960;
52685 t['a12'] = 939;
52686 t['a13'] = 549;
52687 t['a14'] = 855;
52688 t['a15'] = 911;
52689 t['a16'] = 933;
52690 t['a105'] = 911;
52691 t['a17'] = 945;
52692 t['a18'] = 974;
52693 t['a19'] = 755;
52694 t['a20'] = 846;
52695 t['a21'] = 762;
52696 t['a22'] = 761;
52697 t['a23'] = 571;
52698 t['a24'] = 677;
52699 t['a25'] = 763;
52700 t['a26'] = 760;
52701 t['a27'] = 759;
52702 t['a28'] = 754;
52703 t['a6'] = 494;
52704 t['a7'] = 552;
52705 t['a8'] = 537;
52706 t['a9'] = 577;
52707 t['a10'] = 692;
52708 t['a29'] = 786;
52709 t['a30'] = 788;
52710 t['a31'] = 788;
52711 t['a32'] = 790;
52712 t['a33'] = 793;
52713 t['a34'] = 794;
52714 t['a35'] = 816;
52715 t['a36'] = 823;
52716 t['a37'] = 789;
52717 t['a38'] = 841;
52718 t['a39'] = 823;
52719 t['a40'] = 833;
52720 t['a41'] = 816;
52721 t['a42'] = 831;
52722 t['a43'] = 923;
52723 t['a44'] = 744;
52724 t['a45'] = 723;
52725 t['a46'] = 749;
52726 t['a47'] = 790;
52727 t['a48'] = 792;
52728 t['a49'] = 695;
52729 t['a50'] = 776;
52730 t['a51'] = 768;
52731 t['a52'] = 792;
52732 t['a53'] = 759;
52733 t['a54'] = 707;
52734 t['a55'] = 708;
52735 t['a56'] = 682;
52736 t['a57'] = 701;
52737 t['a58'] = 826;
52738 t['a59'] = 815;
52739 t['a60'] = 789;
52740 t['a61'] = 789;
52741 t['a62'] = 707;
52742 t['a63'] = 687;
52743 t['a64'] = 696;
52744 t['a65'] = 689;
52745 t['a66'] = 786;
52746 t['a67'] = 787;
52747 t['a68'] = 713;
52748 t['a69'] = 791;
52749 t['a70'] = 785;
52750 t['a71'] = 791;
52751 t['a72'] = 873;
52752 t['a73'] = 761;
52753 t['a74'] = 762;
52754 t['a203'] = 762;
52755 t['a75'] = 759;
52756 t['a204'] = 759;
52757 t['a76'] = 892;
52758 t['a77'] = 892;
52759 t['a78'] = 788;
52760 t['a79'] = 784;
52761 t['a81'] = 438;
52762 t['a82'] = 138;
52763 t['a83'] = 277;
52764 t['a84'] = 415;
52765 t['a97'] = 392;
52766 t['a98'] = 392;
52767 t['a99'] = 668;
52768 t['a100'] = 668;
52769 t['a89'] = 390;
52770 t['a90'] = 390;
52771 t['a93'] = 317;
52772 t['a94'] = 317;
52773 t['a91'] = 276;
52774 t['a92'] = 276;
52775 t['a205'] = 509;
52776 t['a85'] = 509;
52777 t['a206'] = 410;
52778 t['a86'] = 410;
52779 t['a87'] = 234;
52780 t['a88'] = 234;
52781 t['a95'] = 334;
52782 t['a96'] = 334;
52783 t['a101'] = 732;
52784 t['a102'] = 544;
52785 t['a103'] = 544;
52786 t['a104'] = 910;
52787 t['a106'] = 667;
52788 t['a107'] = 760;
52789 t['a108'] = 760;
52790 t['a112'] = 776;
52791 t['a111'] = 595;
52792 t['a110'] = 694;
52793 t['a109'] = 626;
52794 t['a120'] = 788;
52795 t['a121'] = 788;
52796 t['a122'] = 788;
52797 t['a123'] = 788;
52798 t['a124'] = 788;
52799 t['a125'] = 788;
52800 t['a126'] = 788;
52801 t['a127'] = 788;
52802 t['a128'] = 788;
52803 t['a129'] = 788;
52804 t['a130'] = 788;
52805 t['a131'] = 788;
52806 t['a132'] = 788;
52807 t['a133'] = 788;
52808 t['a134'] = 788;
52809 t['a135'] = 788;
52810 t['a136'] = 788;
52811 t['a137'] = 788;
52812 t['a138'] = 788;
52813 t['a139'] = 788;
52814 t['a140'] = 788;
52815 t['a141'] = 788;
52816 t['a142'] = 788;
52817 t['a143'] = 788;
52818 t['a144'] = 788;
52819 t['a145'] = 788;
52820 t['a146'] = 788;
52821 t['a147'] = 788;
52822 t['a148'] = 788;
52823 t['a149'] = 788;
52824 t['a150'] = 788;
52825 t['a151'] = 788;
52826 t['a152'] = 788;
52827 t['a153'] = 788;
52828 t['a154'] = 788;
52829 t['a155'] = 788;
52830 t['a156'] = 788;
52831 t['a157'] = 788;
52832 t['a158'] = 788;
52833 t['a159'] = 788;
52834 t['a160'] = 894;
52835 t['a161'] = 838;
52836 t['a163'] = 1016;
52837 t['a164'] = 458;
52838 t['a196'] = 748;
52839 t['a165'] = 924;
52840 t['a192'] = 748;
52841 t['a166'] = 918;
52842 t['a167'] = 927;
52843 t['a168'] = 928;
52844 t['a169'] = 928;
52845 t['a170'] = 834;
52846 t['a171'] = 873;
52847 t['a172'] = 828;
52848 t['a173'] = 924;
52849 t['a162'] = 924;
52850 t['a174'] = 917;
52851 t['a175'] = 930;
52852 t['a176'] = 931;
52853 t['a177'] = 463;
52854 t['a178'] = 883;
52855 t['a179'] = 836;
52856 t['a193'] = 836;
52857 t['a180'] = 867;
52858 t['a199'] = 867;
52859 t['a181'] = 696;
52860 t['a200'] = 696;
52861 t['a182'] = 874;
52862 t['a201'] = 874;
52863 t['a183'] = 760;
52864 t['a184'] = 946;
52865 t['a197'] = 771;
52866 t['a185'] = 865;
52867 t['a194'] = 771;
52868 t['a198'] = 888;
52869 t['a186'] = 967;
52870 t['a195'] = 888;
52871 t['a187'] = 831;
52872 t['a188'] = 873;
52873 t['a189'] = 927;
52874 t['a190'] = 970;
52875 t['a191'] = 918;
52876 });
52877});
52878exports.getMetrics = getMetrics;
52879
52880/***/ }),
52881/* 186 */
52882/***/ (function(module, exports, __w_pdfjs_require__) {
52883
52884"use strict";
52885
52886
52887Object.defineProperty(exports, "__esModule", {
52888 value: true
52889});
52890exports.isPDFFunction = isPDFFunction;
52891exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = void 0;
52892
52893var _util = __w_pdfjs_require__(5);
52894
52895var _primitives = __w_pdfjs_require__(151);
52896
52897var _ps_parser = __w_pdfjs_require__(187);
52898
52899function _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); }
52900
52901function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
52902
52903function _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); } }
52904
52905function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
52906
52907var IsEvalSupportedCached = {
52908 get value() {
52909 return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
52910 }
52911
52912};
52913
52914var PDFFunctionFactory =
52915/*#__PURE__*/
52916function () {
52917 function PDFFunctionFactory(_ref) {
52918 var xref = _ref.xref,
52919 _ref$isEvalSupported = _ref.isEvalSupported,
52920 isEvalSupported = _ref$isEvalSupported === void 0 ? true : _ref$isEvalSupported;
52921
52922 _classCallCheck(this, PDFFunctionFactory);
52923
52924 this.xref = xref;
52925 this.isEvalSupported = isEvalSupported !== false;
52926 }
52927
52928 _createClass(PDFFunctionFactory, [{
52929 key: "create",
52930 value: function create(fn) {
52931 return PDFFunction.parse({
52932 xref: this.xref,
52933 isEvalSupported: this.isEvalSupported,
52934 fn: fn
52935 });
52936 }
52937 }, {
52938 key: "createFromArray",
52939 value: function createFromArray(fnObj) {
52940 return PDFFunction.parseArray({
52941 xref: this.xref,
52942 isEvalSupported: this.isEvalSupported,
52943 fnObj: fnObj
52944 });
52945 }
52946 }]);
52947
52948 return PDFFunctionFactory;
52949}();
52950
52951exports.PDFFunctionFactory = PDFFunctionFactory;
52952
52953function toNumberArray(arr) {
52954 if (!Array.isArray(arr)) {
52955 return null;
52956 }
52957
52958 var length = arr.length;
52959
52960 for (var i = 0; i < length; i++) {
52961 if (typeof arr[i] !== 'number') {
52962 var result = new Array(length);
52963
52964 for (var _i = 0; _i < length; _i++) {
52965 result[_i] = +arr[_i];
52966 }
52967
52968 return result;
52969 }
52970 }
52971
52972 return arr;
52973}
52974
52975var PDFFunction = function PDFFunctionClosure() {
52976 var CONSTRUCT_SAMPLED = 0;
52977 var CONSTRUCT_INTERPOLATED = 2;
52978 var CONSTRUCT_STICHED = 3;
52979 var CONSTRUCT_POSTSCRIPT = 4;
52980 return {
52981 getSampleArray: function getSampleArray(size, outputSize, bps, stream) {
52982 var i, ii;
52983 var length = 1;
52984
52985 for (i = 0, ii = size.length; i < ii; i++) {
52986 length *= size[i];
52987 }
52988
52989 length *= outputSize;
52990 var array = new Array(length);
52991 var codeSize = 0;
52992 var codeBuf = 0;
52993 var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);
52994 var strBytes = stream.getBytes((length * bps + 7) / 8);
52995 var strIdx = 0;
52996
52997 for (i = 0; i < length; i++) {
52998 while (codeSize < bps) {
52999 codeBuf <<= 8;
53000 codeBuf |= strBytes[strIdx++];
53001 codeSize += 8;
53002 }
53003
53004 codeSize -= bps;
53005 array[i] = (codeBuf >> codeSize) * sampleMul;
53006 codeBuf &= (1 << codeSize) - 1;
53007 }
53008
53009 return array;
53010 },
53011 getIR: function getIR(_ref2) {
53012 var xref = _ref2.xref,
53013 isEvalSupported = _ref2.isEvalSupported,
53014 fn = _ref2.fn;
53015 var dict = fn.dict;
53016
53017 if (!dict) {
53018 dict = fn;
53019 }
53020
53021 var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript];
53022 var typeNum = dict.get('FunctionType');
53023 var typeFn = types[typeNum];
53024
53025 if (!typeFn) {
53026 throw new _util.FormatError('Unknown type of function');
53027 }
53028
53029 return typeFn.call(this, {
53030 xref: xref,
53031 isEvalSupported: isEvalSupported,
53032 fn: fn,
53033 dict: dict
53034 });
53035 },
53036 fromIR: function fromIR(_ref3) {
53037 var xref = _ref3.xref,
53038 isEvalSupported = _ref3.isEvalSupported,
53039 IR = _ref3.IR;
53040 var type = IR[0];
53041
53042 switch (type) {
53043 case CONSTRUCT_SAMPLED:
53044 return this.constructSampledFromIR({
53045 xref: xref,
53046 isEvalSupported: isEvalSupported,
53047 IR: IR
53048 });
53049
53050 case CONSTRUCT_INTERPOLATED:
53051 return this.constructInterpolatedFromIR({
53052 xref: xref,
53053 isEvalSupported: isEvalSupported,
53054 IR: IR
53055 });
53056
53057 case CONSTRUCT_STICHED:
53058 return this.constructStichedFromIR({
53059 xref: xref,
53060 isEvalSupported: isEvalSupported,
53061 IR: IR
53062 });
53063
53064 default:
53065 return this.constructPostScriptFromIR({
53066 xref: xref,
53067 isEvalSupported: isEvalSupported,
53068 IR: IR
53069 });
53070 }
53071 },
53072 parse: function parse(_ref4) {
53073 var xref = _ref4.xref,
53074 isEvalSupported = _ref4.isEvalSupported,
53075 fn = _ref4.fn;
53076 var IR = this.getIR({
53077 xref: xref,
53078 isEvalSupported: isEvalSupported,
53079 fn: fn
53080 });
53081 return this.fromIR({
53082 xref: xref,
53083 isEvalSupported: isEvalSupported,
53084 IR: IR
53085 });
53086 },
53087 parseArray: function parseArray(_ref5) {
53088 var xref = _ref5.xref,
53089 isEvalSupported = _ref5.isEvalSupported,
53090 fnObj = _ref5.fnObj;
53091
53092 if (!Array.isArray(fnObj)) {
53093 return this.parse({
53094 xref: xref,
53095 isEvalSupported: isEvalSupported,
53096 fn: fnObj
53097 });
53098 }
53099
53100 var fnArray = [];
53101
53102 for (var j = 0, jj = fnObj.length; j < jj; j++) {
53103 fnArray.push(this.parse({
53104 xref: xref,
53105 isEvalSupported: isEvalSupported,
53106 fn: xref.fetchIfRef(fnObj[j])
53107 }));
53108 }
53109
53110 return function (src, srcOffset, dest, destOffset) {
53111 for (var i = 0, ii = fnArray.length; i < ii; i++) {
53112 fnArray[i](src, srcOffset, dest, destOffset + i);
53113 }
53114 };
53115 },
53116 constructSampled: function constructSampled(_ref6) {
53117 var xref = _ref6.xref,
53118 isEvalSupported = _ref6.isEvalSupported,
53119 fn = _ref6.fn,
53120 dict = _ref6.dict;
53121
53122 function toMultiArray(arr) {
53123 var inputLength = arr.length;
53124 var out = [];
53125 var index = 0;
53126
53127 for (var i = 0; i < inputLength; i += 2) {
53128 out[index] = [arr[i], arr[i + 1]];
53129 ++index;
53130 }
53131
53132 return out;
53133 }
53134
53135 var domain = toNumberArray(dict.getArray('Domain'));
53136 var range = toNumberArray(dict.getArray('Range'));
53137
53138 if (!domain || !range) {
53139 throw new _util.FormatError('No domain or range');
53140 }
53141
53142 var inputSize = domain.length / 2;
53143 var outputSize = range.length / 2;
53144 domain = toMultiArray(domain);
53145 range = toMultiArray(range);
53146 var size = toNumberArray(dict.getArray('Size'));
53147 var bps = dict.get('BitsPerSample');
53148 var order = dict.get('Order') || 1;
53149
53150 if (order !== 1) {
53151 (0, _util.info)('No support for cubic spline interpolation: ' + order);
53152 }
53153
53154 var encode = toNumberArray(dict.getArray('Encode'));
53155
53156 if (!encode) {
53157 encode = [];
53158
53159 for (var i = 0; i < inputSize; ++i) {
53160 encode.push([0, size[i] - 1]);
53161 }
53162 } else {
53163 encode = toMultiArray(encode);
53164 }
53165
53166 var decode = toNumberArray(dict.getArray('Decode'));
53167
53168 if (!decode) {
53169 decode = range;
53170 } else {
53171 decode = toMultiArray(decode);
53172 }
53173
53174 var samples = this.getSampleArray(size, outputSize, bps, fn);
53175 return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range];
53176 },
53177 constructSampledFromIR: function constructSampledFromIR(_ref7) {
53178 var xref = _ref7.xref,
53179 isEvalSupported = _ref7.isEvalSupported,
53180 IR = _ref7.IR;
53181
53182 function interpolate(x, xmin, xmax, ymin, ymax) {
53183 return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));
53184 }
53185
53186 return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {
53187 var m = IR[1];
53188 var domain = IR[2];
53189 var encode = IR[3];
53190 var decode = IR[4];
53191 var samples = IR[5];
53192 var size = IR[6];
53193 var n = IR[7];
53194 var range = IR[9];
53195 var cubeVertices = 1 << m;
53196 var cubeN = new Float64Array(cubeVertices);
53197 var cubeVertex = new Uint32Array(cubeVertices);
53198 var i, j;
53199
53200 for (j = 0; j < cubeVertices; j++) {
53201 cubeN[j] = 1;
53202 }
53203
53204 var k = n,
53205 pos = 1;
53206
53207 for (i = 0; i < m; ++i) {
53208 var domain_2i = domain[i][0];
53209 var domain_2i_1 = domain[i][1];
53210 var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);
53211 var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);
53212 var size_i = size[i];
53213 e = Math.min(Math.max(e, 0), size_i - 1);
53214 var e0 = e < size_i - 1 ? Math.floor(e) : e - 1;
53215 var n0 = e0 + 1 - e;
53216 var n1 = e - e0;
53217 var offset0 = e0 * k;
53218 var offset1 = offset0 + k;
53219
53220 for (j = 0; j < cubeVertices; j++) {
53221 if (j & pos) {
53222 cubeN[j] *= n1;
53223 cubeVertex[j] += offset1;
53224 } else {
53225 cubeN[j] *= n0;
53226 cubeVertex[j] += offset0;
53227 }
53228 }
53229
53230 k *= size_i;
53231 pos <<= 1;
53232 }
53233
53234 for (j = 0; j < n; ++j) {
53235 var rj = 0;
53236
53237 for (i = 0; i < cubeVertices; i++) {
53238 rj += samples[cubeVertex[i] + j] * cubeN[i];
53239 }
53240
53241 rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
53242 dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
53243 }
53244 };
53245 },
53246 constructInterpolated: function constructInterpolated(_ref8) {
53247 var xref = _ref8.xref,
53248 isEvalSupported = _ref8.isEvalSupported,
53249 fn = _ref8.fn,
53250 dict = _ref8.dict;
53251 var c0 = toNumberArray(dict.getArray('C0')) || [0];
53252 var c1 = toNumberArray(dict.getArray('C1')) || [1];
53253 var n = dict.get('N');
53254 var length = c0.length;
53255 var diff = [];
53256
53257 for (var i = 0; i < length; ++i) {
53258 diff.push(c1[i] - c0[i]);
53259 }
53260
53261 return [CONSTRUCT_INTERPOLATED, c0, diff, n];
53262 },
53263 constructInterpolatedFromIR: function constructInterpolatedFromIR(_ref9) {
53264 var xref = _ref9.xref,
53265 isEvalSupported = _ref9.isEvalSupported,
53266 IR = _ref9.IR;
53267 var c0 = IR[1];
53268 var diff = IR[2];
53269 var n = IR[3];
53270 var length = diff.length;
53271 return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {
53272 var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);
53273
53274 for (var j = 0; j < length; ++j) {
53275 dest[destOffset + j] = c0[j] + x * diff[j];
53276 }
53277 };
53278 },
53279 constructStiched: function constructStiched(_ref10) {
53280 var xref = _ref10.xref,
53281 isEvalSupported = _ref10.isEvalSupported,
53282 fn = _ref10.fn,
53283 dict = _ref10.dict;
53284 var domain = toNumberArray(dict.getArray('Domain'));
53285
53286 if (!domain) {
53287 throw new _util.FormatError('No domain');
53288 }
53289
53290 var inputSize = domain.length / 2;
53291
53292 if (inputSize !== 1) {
53293 throw new _util.FormatError('Bad domain for stiched function');
53294 }
53295
53296 var fnRefs = dict.get('Functions');
53297 var fns = [];
53298
53299 for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
53300 fns.push(this.parse({
53301 xref: xref,
53302 isEvalSupported: isEvalSupported,
53303 fn: xref.fetchIfRef(fnRefs[i])
53304 }));
53305 }
53306
53307 var bounds = toNumberArray(dict.getArray('Bounds'));
53308 var encode = toNumberArray(dict.getArray('Encode'));
53309 return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
53310 },
53311 constructStichedFromIR: function constructStichedFromIR(_ref11) {
53312 var xref = _ref11.xref,
53313 isEvalSupported = _ref11.isEvalSupported,
53314 IR = _ref11.IR;
53315 var domain = IR[1];
53316 var bounds = IR[2];
53317 var encode = IR[3];
53318 var fns = IR[4];
53319 var tmpBuf = new Float32Array(1);
53320 return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
53321 var clip = function constructStichedFromIRClip(v, min, max) {
53322 if (v > max) {
53323 v = max;
53324 } else if (v < min) {
53325 v = min;
53326 }
53327
53328 return v;
53329 };
53330
53331 var v = clip(src[srcOffset], domain[0], domain[1]);
53332
53333 for (var i = 0, ii = bounds.length; i < ii; ++i) {
53334 if (v < bounds[i]) {
53335 break;
53336 }
53337 }
53338
53339 var dmin = domain[0];
53340
53341 if (i > 0) {
53342 dmin = bounds[i - 1];
53343 }
53344
53345 var dmax = domain[1];
53346
53347 if (i < bounds.length) {
53348 dmax = bounds[i];
53349 }
53350
53351 var rmin = encode[2 * i];
53352 var rmax = encode[2 * i + 1];
53353 tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
53354 fns[i](tmpBuf, 0, dest, destOffset);
53355 };
53356 },
53357 constructPostScript: function constructPostScript(_ref12) {
53358 var xref = _ref12.xref,
53359 isEvalSupported = _ref12.isEvalSupported,
53360 fn = _ref12.fn,
53361 dict = _ref12.dict;
53362 var domain = toNumberArray(dict.getArray('Domain'));
53363 var range = toNumberArray(dict.getArray('Range'));
53364
53365 if (!domain) {
53366 throw new _util.FormatError('No domain.');
53367 }
53368
53369 if (!range) {
53370 throw new _util.FormatError('No range.');
53371 }
53372
53373 var lexer = new _ps_parser.PostScriptLexer(fn);
53374 var parser = new _ps_parser.PostScriptParser(lexer);
53375 var code = parser.parse();
53376 return [CONSTRUCT_POSTSCRIPT, domain, range, code];
53377 },
53378 constructPostScriptFromIR: function constructPostScriptFromIR(_ref13) {
53379 var xref = _ref13.xref,
53380 isEvalSupported = _ref13.isEvalSupported,
53381 IR = _ref13.IR;
53382 var domain = IR[1];
53383 var range = IR[2];
53384 var code = IR[3];
53385
53386 if (isEvalSupported && IsEvalSupportedCached.value) {
53387 var compiled = new PostScriptCompiler().compile(code, domain, range);
53388
53389 if (compiled) {
53390 return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled);
53391 }
53392 }
53393
53394 (0, _util.info)('Unable to compile PS function');
53395 var numOutputs = range.length >> 1;
53396 var numInputs = domain.length >> 1;
53397 var evaluator = new PostScriptEvaluator(code);
53398 var cache = Object.create(null);
53399 var MAX_CACHE_SIZE = 2048 * 4;
53400 var cache_available = MAX_CACHE_SIZE;
53401 var tmpBuf = new Float32Array(numInputs);
53402 return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {
53403 var i, value;
53404 var key = '';
53405 var input = tmpBuf;
53406
53407 for (i = 0; i < numInputs; i++) {
53408 value = src[srcOffset + i];
53409 input[i] = value;
53410 key += value + '_';
53411 }
53412
53413 var cachedValue = cache[key];
53414
53415 if (cachedValue !== undefined) {
53416 dest.set(cachedValue, destOffset);
53417 return;
53418 }
53419
53420 var output = new Float32Array(numOutputs);
53421 var stack = evaluator.execute(input);
53422 var stackIndex = stack.length - numOutputs;
53423
53424 for (i = 0; i < numOutputs; i++) {
53425 value = stack[stackIndex + i];
53426 var bound = range[i * 2];
53427
53428 if (value < bound) {
53429 value = bound;
53430 } else {
53431 bound = range[i * 2 + 1];
53432
53433 if (value > bound) {
53434 value = bound;
53435 }
53436 }
53437
53438 output[i] = value;
53439 }
53440
53441 if (cache_available > 0) {
53442 cache_available--;
53443 cache[key] = output;
53444 }
53445
53446 dest.set(output, destOffset);
53447 };
53448 }
53449 };
53450}();
53451
53452function isPDFFunction(v) {
53453 var fnDict;
53454
53455 if (_typeof(v) !== 'object') {
53456 return false;
53457 } else if ((0, _primitives.isDict)(v)) {
53458 fnDict = v;
53459 } else if ((0, _primitives.isStream)(v)) {
53460 fnDict = v.dict;
53461 } else {
53462 return false;
53463 }
53464
53465 return fnDict.has('FunctionType');
53466}
53467
53468var PostScriptStack = function PostScriptStackClosure() {
53469 var MAX_STACK_SIZE = 100;
53470
53471 function PostScriptStack(initialStack) {
53472 this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
53473 }
53474
53475 PostScriptStack.prototype = {
53476 push: function PostScriptStack_push(value) {
53477 if (this.stack.length >= MAX_STACK_SIZE) {
53478 throw new Error('PostScript function stack overflow.');
53479 }
53480
53481 this.stack.push(value);
53482 },
53483 pop: function PostScriptStack_pop() {
53484 if (this.stack.length <= 0) {
53485 throw new Error('PostScript function stack underflow.');
53486 }
53487
53488 return this.stack.pop();
53489 },
53490 copy: function PostScriptStack_copy(n) {
53491 if (this.stack.length + n >= MAX_STACK_SIZE) {
53492 throw new Error('PostScript function stack overflow.');
53493 }
53494
53495 var stack = this.stack;
53496
53497 for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
53498 stack.push(stack[i]);
53499 }
53500 },
53501 index: function PostScriptStack_index(n) {
53502 this.push(this.stack[this.stack.length - n - 1]);
53503 },
53504 roll: function PostScriptStack_roll(n, p) {
53505 var stack = this.stack;
53506 var l = stack.length - n;
53507 var r = stack.length - 1,
53508 c = l + (p - Math.floor(p / n) * n),
53509 i,
53510 j,
53511 t;
53512
53513 for (i = l, j = r; i < j; i++, j--) {
53514 t = stack[i];
53515 stack[i] = stack[j];
53516 stack[j] = t;
53517 }
53518
53519 for (i = l, j = c - 1; i < j; i++, j--) {
53520 t = stack[i];
53521 stack[i] = stack[j];
53522 stack[j] = t;
53523 }
53524
53525 for (i = c, j = r; i < j; i++, j--) {
53526 t = stack[i];
53527 stack[i] = stack[j];
53528 stack[j] = t;
53529 }
53530 }
53531 };
53532 return PostScriptStack;
53533}();
53534
53535var PostScriptEvaluator = function PostScriptEvaluatorClosure() {
53536 function PostScriptEvaluator(operators) {
53537 this.operators = operators;
53538 }
53539
53540 PostScriptEvaluator.prototype = {
53541 execute: function PostScriptEvaluator_execute(initialStack) {
53542 var stack = new PostScriptStack(initialStack);
53543 var counter = 0;
53544 var operators = this.operators;
53545 var length = operators.length;
53546 var operator, a, b;
53547
53548 while (counter < length) {
53549 operator = operators[counter++];
53550
53551 if (typeof operator === 'number') {
53552 stack.push(operator);
53553 continue;
53554 }
53555
53556 switch (operator) {
53557 case 'jz':
53558 b = stack.pop();
53559 a = stack.pop();
53560
53561 if (!a) {
53562 counter = b;
53563 }
53564
53565 break;
53566
53567 case 'j':
53568 a = stack.pop();
53569 counter = a;
53570 break;
53571
53572 case 'abs':
53573 a = stack.pop();
53574 stack.push(Math.abs(a));
53575 break;
53576
53577 case 'add':
53578 b = stack.pop();
53579 a = stack.pop();
53580 stack.push(a + b);
53581 break;
53582
53583 case 'and':
53584 b = stack.pop();
53585 a = stack.pop();
53586
53587 if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
53588 stack.push(a && b);
53589 } else {
53590 stack.push(a & b);
53591 }
53592
53593 break;
53594
53595 case 'atan':
53596 a = stack.pop();
53597 stack.push(Math.atan(a));
53598 break;
53599
53600 case 'bitshift':
53601 b = stack.pop();
53602 a = stack.pop();
53603
53604 if (a > 0) {
53605 stack.push(a << b);
53606 } else {
53607 stack.push(a >> b);
53608 }
53609
53610 break;
53611
53612 case 'ceiling':
53613 a = stack.pop();
53614 stack.push(Math.ceil(a));
53615 break;
53616
53617 case 'copy':
53618 a = stack.pop();
53619 stack.copy(a);
53620 break;
53621
53622 case 'cos':
53623 a = stack.pop();
53624 stack.push(Math.cos(a));
53625 break;
53626
53627 case 'cvi':
53628 a = stack.pop() | 0;
53629 stack.push(a);
53630 break;
53631
53632 case 'cvr':
53633 break;
53634
53635 case 'div':
53636 b = stack.pop();
53637 a = stack.pop();
53638 stack.push(a / b);
53639 break;
53640
53641 case 'dup':
53642 stack.copy(1);
53643 break;
53644
53645 case 'eq':
53646 b = stack.pop();
53647 a = stack.pop();
53648 stack.push(a === b);
53649 break;
53650
53651 case 'exch':
53652 stack.roll(2, 1);
53653 break;
53654
53655 case 'exp':
53656 b = stack.pop();
53657 a = stack.pop();
53658 stack.push(Math.pow(a, b));
53659 break;
53660
53661 case 'false':
53662 stack.push(false);
53663 break;
53664
53665 case 'floor':
53666 a = stack.pop();
53667 stack.push(Math.floor(a));
53668 break;
53669
53670 case 'ge':
53671 b = stack.pop();
53672 a = stack.pop();
53673 stack.push(a >= b);
53674 break;
53675
53676 case 'gt':
53677 b = stack.pop();
53678 a = stack.pop();
53679 stack.push(a > b);
53680 break;
53681
53682 case 'idiv':
53683 b = stack.pop();
53684 a = stack.pop();
53685 stack.push(a / b | 0);
53686 break;
53687
53688 case 'index':
53689 a = stack.pop();
53690 stack.index(a);
53691 break;
53692
53693 case 'le':
53694 b = stack.pop();
53695 a = stack.pop();
53696 stack.push(a <= b);
53697 break;
53698
53699 case 'ln':
53700 a = stack.pop();
53701 stack.push(Math.log(a));
53702 break;
53703
53704 case 'log':
53705 a = stack.pop();
53706 stack.push(Math.log(a) / Math.LN10);
53707 break;
53708
53709 case 'lt':
53710 b = stack.pop();
53711 a = stack.pop();
53712 stack.push(a < b);
53713 break;
53714
53715 case 'mod':
53716 b = stack.pop();
53717 a = stack.pop();
53718 stack.push(a % b);
53719 break;
53720
53721 case 'mul':
53722 b = stack.pop();
53723 a = stack.pop();
53724 stack.push(a * b);
53725 break;
53726
53727 case 'ne':
53728 b = stack.pop();
53729 a = stack.pop();
53730 stack.push(a !== b);
53731 break;
53732
53733 case 'neg':
53734 a = stack.pop();
53735 stack.push(-a);
53736 break;
53737
53738 case 'not':
53739 a = stack.pop();
53740
53741 if ((0, _util.isBool)(a)) {
53742 stack.push(!a);
53743 } else {
53744 stack.push(~a);
53745 }
53746
53747 break;
53748
53749 case 'or':
53750 b = stack.pop();
53751 a = stack.pop();
53752
53753 if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
53754 stack.push(a || b);
53755 } else {
53756 stack.push(a | b);
53757 }
53758
53759 break;
53760
53761 case 'pop':
53762 stack.pop();
53763 break;
53764
53765 case 'roll':
53766 b = stack.pop();
53767 a = stack.pop();
53768 stack.roll(a, b);
53769 break;
53770
53771 case 'round':
53772 a = stack.pop();
53773 stack.push(Math.round(a));
53774 break;
53775
53776 case 'sin':
53777 a = stack.pop();
53778 stack.push(Math.sin(a));
53779 break;
53780
53781 case 'sqrt':
53782 a = stack.pop();
53783 stack.push(Math.sqrt(a));
53784 break;
53785
53786 case 'sub':
53787 b = stack.pop();
53788 a = stack.pop();
53789 stack.push(a - b);
53790 break;
53791
53792 case 'true':
53793 stack.push(true);
53794 break;
53795
53796 case 'truncate':
53797 a = stack.pop();
53798 a = a < 0 ? Math.ceil(a) : Math.floor(a);
53799 stack.push(a);
53800 break;
53801
53802 case 'xor':
53803 b = stack.pop();
53804 a = stack.pop();
53805
53806 if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
53807 stack.push(a !== b);
53808 } else {
53809 stack.push(a ^ b);
53810 }
53811
53812 break;
53813
53814 default:
53815 throw new _util.FormatError("Unknown operator ".concat(operator));
53816 }
53817 }
53818
53819 return stack.stack;
53820 }
53821 };
53822 return PostScriptEvaluator;
53823}();
53824
53825exports.PostScriptEvaluator = PostScriptEvaluator;
53826
53827var PostScriptCompiler = function PostScriptCompilerClosure() {
53828 function AstNode(type) {
53829 this.type = type;
53830 }
53831
53832 AstNode.prototype.visit = function (visitor) {
53833 (0, _util.unreachable)('abstract method');
53834 };
53835
53836 function AstArgument(index, min, max) {
53837 AstNode.call(this, 'args');
53838 this.index = index;
53839 this.min = min;
53840 this.max = max;
53841 }
53842
53843 AstArgument.prototype = Object.create(AstNode.prototype);
53844
53845 AstArgument.prototype.visit = function (visitor) {
53846 visitor.visitArgument(this);
53847 };
53848
53849 function AstLiteral(number) {
53850 AstNode.call(this, 'literal');
53851 this.number = number;
53852 this.min = number;
53853 this.max = number;
53854 }
53855
53856 AstLiteral.prototype = Object.create(AstNode.prototype);
53857
53858 AstLiteral.prototype.visit = function (visitor) {
53859 visitor.visitLiteral(this);
53860 };
53861
53862 function AstBinaryOperation(op, arg1, arg2, min, max) {
53863 AstNode.call(this, 'binary');
53864 this.op = op;
53865 this.arg1 = arg1;
53866 this.arg2 = arg2;
53867 this.min = min;
53868 this.max = max;
53869 }
53870
53871 AstBinaryOperation.prototype = Object.create(AstNode.prototype);
53872
53873 AstBinaryOperation.prototype.visit = function (visitor) {
53874 visitor.visitBinaryOperation(this);
53875 };
53876
53877 function AstMin(arg, max) {
53878 AstNode.call(this, 'max');
53879 this.arg = arg;
53880 this.min = arg.min;
53881 this.max = max;
53882 }
53883
53884 AstMin.prototype = Object.create(AstNode.prototype);
53885
53886 AstMin.prototype.visit = function (visitor) {
53887 visitor.visitMin(this);
53888 };
53889
53890 function AstVariable(index, min, max) {
53891 AstNode.call(this, 'var');
53892 this.index = index;
53893 this.min = min;
53894 this.max = max;
53895 }
53896
53897 AstVariable.prototype = Object.create(AstNode.prototype);
53898
53899 AstVariable.prototype.visit = function (visitor) {
53900 visitor.visitVariable(this);
53901 };
53902
53903 function AstVariableDefinition(variable, arg) {
53904 AstNode.call(this, 'definition');
53905 this.variable = variable;
53906 this.arg = arg;
53907 }
53908
53909 AstVariableDefinition.prototype = Object.create(AstNode.prototype);
53910
53911 AstVariableDefinition.prototype.visit = function (visitor) {
53912 visitor.visitVariableDefinition(this);
53913 };
53914
53915 function ExpressionBuilderVisitor() {
53916 this.parts = [];
53917 }
53918
53919 ExpressionBuilderVisitor.prototype = {
53920 visitArgument: function visitArgument(arg) {
53921 this.parts.push('Math.max(', arg.min, ', Math.min(', arg.max, ', src[srcOffset + ', arg.index, ']))');
53922 },
53923 visitVariable: function visitVariable(variable) {
53924 this.parts.push('v', variable.index);
53925 },
53926 visitLiteral: function visitLiteral(literal) {
53927 this.parts.push(literal.number);
53928 },
53929 visitBinaryOperation: function visitBinaryOperation(operation) {
53930 this.parts.push('(');
53931 operation.arg1.visit(this);
53932 this.parts.push(' ', operation.op, ' ');
53933 operation.arg2.visit(this);
53934 this.parts.push(')');
53935 },
53936 visitVariableDefinition: function visitVariableDefinition(definition) {
53937 this.parts.push('var ');
53938 definition.variable.visit(this);
53939 this.parts.push(' = ');
53940 definition.arg.visit(this);
53941 this.parts.push(';');
53942 },
53943 visitMin: function visitMin(max) {
53944 this.parts.push('Math.min(');
53945 max.arg.visit(this);
53946 this.parts.push(', ', max.max, ')');
53947 },
53948 toString: function toString() {
53949 return this.parts.join('');
53950 }
53951 };
53952
53953 function buildAddOperation(num1, num2) {
53954 if (num2.type === 'literal' && num2.number === 0) {
53955 return num1;
53956 }
53957
53958 if (num1.type === 'literal' && num1.number === 0) {
53959 return num2;
53960 }
53961
53962 if (num2.type === 'literal' && num1.type === 'literal') {
53963 return new AstLiteral(num1.number + num2.number);
53964 }
53965
53966 return new AstBinaryOperation('+', num1, num2, num1.min + num2.min, num1.max + num2.max);
53967 }
53968
53969 function buildMulOperation(num1, num2) {
53970 if (num2.type === 'literal') {
53971 if (num2.number === 0) {
53972 return new AstLiteral(0);
53973 } else if (num2.number === 1) {
53974 return num1;
53975 } else if (num1.type === 'literal') {
53976 return new AstLiteral(num1.number * num2.number);
53977 }
53978 }
53979
53980 if (num1.type === 'literal') {
53981 if (num1.number === 0) {
53982 return new AstLiteral(0);
53983 } else if (num1.number === 1) {
53984 return num2;
53985 }
53986 }
53987
53988 var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);
53989 var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);
53990 return new AstBinaryOperation('*', num1, num2, min, max);
53991 }
53992
53993 function buildSubOperation(num1, num2) {
53994 if (num2.type === 'literal') {
53995 if (num2.number === 0) {
53996 return num1;
53997 } else if (num1.type === 'literal') {
53998 return new AstLiteral(num1.number - num2.number);
53999 }
54000 }
54001
54002 if (num2.type === 'binary' && num2.op === '-' && num1.type === 'literal' && num1.number === 1 && num2.arg1.type === 'literal' && num2.arg1.number === 1) {
54003 return num2.arg2;
54004 }
54005
54006 return new AstBinaryOperation('-', num1, num2, num1.min - num2.max, num1.max - num2.min);
54007 }
54008
54009 function buildMinOperation(num1, max) {
54010 if (num1.min >= max) {
54011 return new AstLiteral(max);
54012 } else if (num1.max <= max) {
54013 return num1;
54014 }
54015
54016 return new AstMin(num1, max);
54017 }
54018
54019 function PostScriptCompiler() {}
54020
54021 PostScriptCompiler.prototype = {
54022 compile: function PostScriptCompiler_compile(code, domain, range) {
54023 var stack = [];
54024 var i, ii;
54025 var instructions = [];
54026 var inputSize = domain.length >> 1,
54027 outputSize = range.length >> 1;
54028 var lastRegister = 0;
54029 var n, j;
54030 var num1, num2, ast1, ast2, tmpVar, item;
54031
54032 for (i = 0; i < inputSize; i++) {
54033 stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));
54034 }
54035
54036 for (i = 0, ii = code.length; i < ii; i++) {
54037 item = code[i];
54038
54039 if (typeof item === 'number') {
54040 stack.push(new AstLiteral(item));
54041 continue;
54042 }
54043
54044 switch (item) {
54045 case 'add':
54046 if (stack.length < 2) {
54047 return null;
54048 }
54049
54050 num2 = stack.pop();
54051 num1 = stack.pop();
54052 stack.push(buildAddOperation(num1, num2));
54053 break;
54054
54055 case 'cvr':
54056 if (stack.length < 1) {
54057 return null;
54058 }
54059
54060 break;
54061
54062 case 'mul':
54063 if (stack.length < 2) {
54064 return null;
54065 }
54066
54067 num2 = stack.pop();
54068 num1 = stack.pop();
54069 stack.push(buildMulOperation(num1, num2));
54070 break;
54071
54072 case 'sub':
54073 if (stack.length < 2) {
54074 return null;
54075 }
54076
54077 num2 = stack.pop();
54078 num1 = stack.pop();
54079 stack.push(buildSubOperation(num1, num2));
54080 break;
54081
54082 case 'exch':
54083 if (stack.length < 2) {
54084 return null;
54085 }
54086
54087 ast1 = stack.pop();
54088 ast2 = stack.pop();
54089 stack.push(ast1, ast2);
54090 break;
54091
54092 case 'pop':
54093 if (stack.length < 1) {
54094 return null;
54095 }
54096
54097 stack.pop();
54098 break;
54099
54100 case 'index':
54101 if (stack.length < 1) {
54102 return null;
54103 }
54104
54105 num1 = stack.pop();
54106
54107 if (num1.type !== 'literal') {
54108 return null;
54109 }
54110
54111 n = num1.number;
54112
54113 if (n < 0 || !Number.isInteger(n) || stack.length < n) {
54114 return null;
54115 }
54116
54117 ast1 = stack[stack.length - n - 1];
54118
54119 if (ast1.type === 'literal' || ast1.type === 'var') {
54120 stack.push(ast1);
54121 break;
54122 }
54123
54124 tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
54125 stack[stack.length - n - 1] = tmpVar;
54126 stack.push(tmpVar);
54127 instructions.push(new AstVariableDefinition(tmpVar, ast1));
54128 break;
54129
54130 case 'dup':
54131 if (stack.length < 1) {
54132 return null;
54133 }
54134
54135 if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && code[i + 3] === i + 7 && code[i + 4] === 'jz' && code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {
54136 num1 = stack.pop();
54137 stack.push(buildMinOperation(num1, code[i + 1]));
54138 i += 6;
54139 break;
54140 }
54141
54142 ast1 = stack[stack.length - 1];
54143
54144 if (ast1.type === 'literal' || ast1.type === 'var') {
54145 stack.push(ast1);
54146 break;
54147 }
54148
54149 tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);
54150 stack[stack.length - 1] = tmpVar;
54151 stack.push(tmpVar);
54152 instructions.push(new AstVariableDefinition(tmpVar, ast1));
54153 break;
54154
54155 case 'roll':
54156 if (stack.length < 2) {
54157 return null;
54158 }
54159
54160 num2 = stack.pop();
54161 num1 = stack.pop();
54162
54163 if (num2.type !== 'literal' || num1.type !== 'literal') {
54164 return null;
54165 }
54166
54167 j = num2.number;
54168 n = num1.number;
54169
54170 if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {
54171 return null;
54172 }
54173
54174 j = (j % n + n) % n;
54175
54176 if (j === 0) {
54177 break;
54178 }
54179
54180 Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));
54181 break;
54182
54183 default:
54184 return null;
54185 }
54186 }
54187
54188 if (stack.length !== outputSize) {
54189 return null;
54190 }
54191
54192 var result = [];
54193 instructions.forEach(function (instruction) {
54194 var statementBuilder = new ExpressionBuilderVisitor();
54195 instruction.visit(statementBuilder);
54196 result.push(statementBuilder.toString());
54197 });
54198 stack.forEach(function (expr, i) {
54199 var statementBuilder = new ExpressionBuilderVisitor();
54200 expr.visit(statementBuilder);
54201 var min = range[i * 2],
54202 max = range[i * 2 + 1];
54203 var out = [statementBuilder.toString()];
54204
54205 if (min > expr.min) {
54206 out.unshift('Math.max(', min, ', ');
54207 out.push(')');
54208 }
54209
54210 if (max < expr.max) {
54211 out.unshift('Math.min(', max, ', ');
54212 out.push(')');
54213 }
54214
54215 out.unshift('dest[destOffset + ', i, '] = ');
54216 out.push(';');
54217 result.push(out.join(''));
54218 });
54219 return result.join('\n');
54220 }
54221 };
54222 return PostScriptCompiler;
54223}();
54224
54225exports.PostScriptCompiler = PostScriptCompiler;
54226
54227/***/ }),
54228/* 187 */
54229/***/ (function(module, exports, __w_pdfjs_require__) {
54230
54231"use strict";
54232
54233
54234Object.defineProperty(exports, "__esModule", {
54235 value: true
54236});
54237exports.PostScriptParser = exports.PostScriptLexer = void 0;
54238
54239var _util = __w_pdfjs_require__(5);
54240
54241var _primitives = __w_pdfjs_require__(151);
54242
54243function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
54244
54245function _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); } }
54246
54247function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
54248
54249var PostScriptParser =
54250/*#__PURE__*/
54251function () {
54252 function PostScriptParser(lexer) {
54253 _classCallCheck(this, PostScriptParser);
54254
54255 this.lexer = lexer;
54256 this.operators = [];
54257 this.token = null;
54258 this.prev = null;
54259 }
54260
54261 _createClass(PostScriptParser, [{
54262 key: "nextToken",
54263 value: function nextToken() {
54264 this.prev = this.token;
54265 this.token = this.lexer.getToken();
54266 }
54267 }, {
54268 key: "accept",
54269 value: function accept(type) {
54270 if (this.token.type === type) {
54271 this.nextToken();
54272 return true;
54273 }
54274
54275 return false;
54276 }
54277 }, {
54278 key: "expect",
54279 value: function expect(type) {
54280 if (this.accept(type)) {
54281 return true;
54282 }
54283
54284 throw new _util.FormatError("Unexpected symbol: found ".concat(this.token.type, " expected ").concat(type, "."));
54285 }
54286 }, {
54287 key: "parse",
54288 value: function parse() {
54289 this.nextToken();
54290 this.expect(PostScriptTokenTypes.LBRACE);
54291 this.parseBlock();
54292 this.expect(PostScriptTokenTypes.RBRACE);
54293 return this.operators;
54294 }
54295 }, {
54296 key: "parseBlock",
54297 value: function parseBlock() {
54298 while (true) {
54299 if (this.accept(PostScriptTokenTypes.NUMBER)) {
54300 this.operators.push(this.prev.value);
54301 } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
54302 this.operators.push(this.prev.value);
54303 } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
54304 this.parseCondition();
54305 } else {
54306 return;
54307 }
54308 }
54309 }
54310 }, {
54311 key: "parseCondition",
54312 value: function parseCondition() {
54313 var conditionLocation = this.operators.length;
54314 this.operators.push(null, null);
54315 this.parseBlock();
54316 this.expect(PostScriptTokenTypes.RBRACE);
54317
54318 if (this.accept(PostScriptTokenTypes.IF)) {
54319 this.operators[conditionLocation] = this.operators.length;
54320 this.operators[conditionLocation + 1] = 'jz';
54321 } else if (this.accept(PostScriptTokenTypes.LBRACE)) {
54322 var jumpLocation = this.operators.length;
54323 this.operators.push(null, null);
54324 var endOfTrue = this.operators.length;
54325 this.parseBlock();
54326 this.expect(PostScriptTokenTypes.RBRACE);
54327 this.expect(PostScriptTokenTypes.IFELSE);
54328 this.operators[jumpLocation] = this.operators.length;
54329 this.operators[jumpLocation + 1] = 'j';
54330 this.operators[conditionLocation] = endOfTrue;
54331 this.operators[conditionLocation + 1] = 'jz';
54332 } else {
54333 throw new _util.FormatError('PS Function: error parsing conditional.');
54334 }
54335 }
54336 }]);
54337
54338 return PostScriptParser;
54339}();
54340
54341exports.PostScriptParser = PostScriptParser;
54342var PostScriptTokenTypes = {
54343 LBRACE: 0,
54344 RBRACE: 1,
54345 NUMBER: 2,
54346 OPERATOR: 3,
54347 IF: 4,
54348 IFELSE: 5
54349};
54350
54351var PostScriptToken = function PostScriptTokenClosure() {
54352 var opCache = Object.create(null);
54353
54354 var PostScriptToken =
54355 /*#__PURE__*/
54356 function () {
54357 function PostScriptToken(type, value) {
54358 _classCallCheck(this, PostScriptToken);
54359
54360 this.type = type;
54361 this.value = value;
54362 }
54363
54364 _createClass(PostScriptToken, null, [{
54365 key: "getOperator",
54366 value: function getOperator(op) {
54367 var opValue = opCache[op];
54368
54369 if (opValue) {
54370 return opValue;
54371 }
54372
54373 return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
54374 }
54375 }, {
54376 key: "LBRACE",
54377 get: function get() {
54378 return (0, _util.shadow)(this, 'LBRACE', new PostScriptToken(PostScriptTokenTypes.LBRACE, '{'));
54379 }
54380 }, {
54381 key: "RBRACE",
54382 get: function get() {
54383 return (0, _util.shadow)(this, 'RBRACE', new PostScriptToken(PostScriptTokenTypes.RBRACE, '}'));
54384 }
54385 }, {
54386 key: "IF",
54387 get: function get() {
54388 return (0, _util.shadow)(this, 'IF', new PostScriptToken(PostScriptTokenTypes.IF, 'IF'));
54389 }
54390 }, {
54391 key: "IFELSE",
54392 get: function get() {
54393 return (0, _util.shadow)(this, 'IFELSE', new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE'));
54394 }
54395 }]);
54396
54397 return PostScriptToken;
54398 }();
54399
54400 return PostScriptToken;
54401}();
54402
54403var PostScriptLexer =
54404/*#__PURE__*/
54405function () {
54406 function PostScriptLexer(stream) {
54407 _classCallCheck(this, PostScriptLexer);
54408
54409 this.stream = stream;
54410 this.nextChar();
54411 this.strBuf = [];
54412 }
54413
54414 _createClass(PostScriptLexer, [{
54415 key: "nextChar",
54416 value: function nextChar() {
54417 return this.currentChar = this.stream.getByte();
54418 }
54419 }, {
54420 key: "getToken",
54421 value: function getToken() {
54422 var comment = false;
54423 var ch = this.currentChar;
54424
54425 while (true) {
54426 if (ch < 0) {
54427 return _primitives.EOF;
54428 }
54429
54430 if (comment) {
54431 if (ch === 0x0A || ch === 0x0D) {
54432 comment = false;
54433 }
54434 } else if (ch === 0x25) {
54435 comment = true;
54436 } else if (!(0, _util.isSpace)(ch)) {
54437 break;
54438 }
54439
54440 ch = this.nextChar();
54441 }
54442
54443 switch (ch | 0) {
54444 case 0x30:
54445 case 0x31:
54446 case 0x32:
54447 case 0x33:
54448 case 0x34:
54449 case 0x35:
54450 case 0x36:
54451 case 0x37:
54452 case 0x38:
54453 case 0x39:
54454 case 0x2B:
54455 case 0x2D:
54456 case 0x2E:
54457 return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());
54458
54459 case 0x7B:
54460 this.nextChar();
54461 return PostScriptToken.LBRACE;
54462
54463 case 0x7D:
54464 this.nextChar();
54465 return PostScriptToken.RBRACE;
54466 }
54467
54468 var strBuf = this.strBuf;
54469 strBuf.length = 0;
54470 strBuf[0] = String.fromCharCode(ch);
54471
54472 while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) {
54473 strBuf.push(String.fromCharCode(ch));
54474 }
54475
54476 var str = strBuf.join('');
54477
54478 switch (str.toLowerCase()) {
54479 case 'if':
54480 return PostScriptToken.IF;
54481
54482 case 'ifelse':
54483 return PostScriptToken.IFELSE;
54484
54485 default:
54486 return PostScriptToken.getOperator(str);
54487 }
54488 }
54489 }, {
54490 key: "getNumber",
54491 value: function getNumber() {
54492 var ch = this.currentChar;
54493 var strBuf = this.strBuf;
54494 strBuf.length = 0;
54495 strBuf[0] = String.fromCharCode(ch);
54496
54497 while ((ch = this.nextChar()) >= 0) {
54498 if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) {
54499 strBuf.push(String.fromCharCode(ch));
54500 } else {
54501 break;
54502 }
54503 }
54504
54505 var value = parseFloat(strBuf.join(''));
54506
54507 if (isNaN(value)) {
54508 throw new _util.FormatError("Invalid floating point number: ".concat(value));
54509 }
54510
54511 return value;
54512 }
54513 }]);
54514
54515 return PostScriptLexer;
54516}();
54517
54518exports.PostScriptLexer = PostScriptLexer;
54519
54520/***/ }),
54521/* 188 */
54522/***/ (function(module, exports, __w_pdfjs_require__) {
54523
54524"use strict";
54525
54526
54527Object.defineProperty(exports, "__esModule", {
54528 value: true
54529});
54530exports.MurmurHash3_64 = void 0;
54531
54532var _util = __w_pdfjs_require__(5);
54533
54534function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
54535
54536function _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); } }
54537
54538function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
54539
54540var SEED = 0xc3d2e1f0;
54541var MASK_HIGH = 0xffff0000;
54542var MASK_LOW = 0xffff;
54543
54544var MurmurHash3_64 =
54545/*#__PURE__*/
54546function () {
54547 function MurmurHash3_64(seed) {
54548 _classCallCheck(this, MurmurHash3_64);
54549
54550 this.h1 = seed ? seed & 0xffffffff : SEED;
54551 this.h2 = seed ? seed & 0xffffffff : SEED;
54552 }
54553
54554 _createClass(MurmurHash3_64, [{
54555 key: "update",
54556 value: function update(input) {
54557 var data, length;
54558
54559 if ((0, _util.isString)(input)) {
54560 data = new Uint8Array(input.length * 2);
54561 length = 0;
54562
54563 for (var i = 0, ii = input.length; i < ii; i++) {
54564 var code = input.charCodeAt(i);
54565
54566 if (code <= 0xff) {
54567 data[length++] = code;
54568 } else {
54569 data[length++] = code >>> 8;
54570 data[length++] = code & 0xff;
54571 }
54572 }
54573 } else if ((0, _util.isArrayBuffer)(input)) {
54574 data = input;
54575 length = data.byteLength;
54576 } else {
54577 throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.');
54578 }
54579
54580 var blockCounts = length >> 2;
54581 var tailLength = length - blockCounts * 4;
54582 var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
54583 var k1 = 0,
54584 k2 = 0;
54585 var h1 = this.h1,
54586 h2 = this.h2;
54587 var C1 = 0xcc9e2d51,
54588 C2 = 0x1b873593;
54589 var C1_LOW = C1 & MASK_LOW,
54590 C2_LOW = C2 & MASK_LOW;
54591
54592 for (var _i = 0; _i < blockCounts; _i++) {
54593 if (_i & 1) {
54594 k1 = dataUint32[_i];
54595 k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
54596 k1 = k1 << 15 | k1 >>> 17;
54597 k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
54598 h1 ^= k1;
54599 h1 = h1 << 13 | h1 >>> 19;
54600 h1 = h1 * 5 + 0xe6546b64;
54601 } else {
54602 k2 = dataUint32[_i];
54603 k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
54604 k2 = k2 << 15 | k2 >>> 17;
54605 k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
54606 h2 ^= k2;
54607 h2 = h2 << 13 | h2 >>> 19;
54608 h2 = h2 * 5 + 0xe6546b64;
54609 }
54610 }
54611
54612 k1 = 0;
54613
54614 switch (tailLength) {
54615 case 3:
54616 k1 ^= data[blockCounts * 4 + 2] << 16;
54617
54618 case 2:
54619 k1 ^= data[blockCounts * 4 + 1] << 8;
54620
54621 case 1:
54622 k1 ^= data[blockCounts * 4];
54623 k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
54624 k1 = k1 << 15 | k1 >>> 17;
54625 k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
54626
54627 if (blockCounts & 1) {
54628 h1 ^= k1;
54629 } else {
54630 h2 ^= k1;
54631 }
54632
54633 }
54634
54635 this.h1 = h1;
54636 this.h2 = h2;
54637 }
54638 }, {
54639 key: "hexdigest",
54640 value: function hexdigest() {
54641 var h1 = this.h1,
54642 h2 = this.h2;
54643 h1 ^= h2 >>> 1;
54644 h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
54645 h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
54646 h1 ^= h2 >>> 1;
54647 h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
54648 h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
54649 h1 ^= h2 >>> 1;
54650 var hex1 = (h1 >>> 0).toString(16),
54651 hex2 = (h2 >>> 0).toString(16);
54652 return hex1.padStart(8, '0') + hex2.padStart(8, '0');
54653 }
54654 }]);
54655
54656 return MurmurHash3_64;
54657}();
54658
54659exports.MurmurHash3_64 = MurmurHash3_64;
54660
54661/***/ }),
54662/* 189 */
54663/***/ (function(module, exports, __w_pdfjs_require__) {
54664
54665"use strict";
54666
54667
54668Object.defineProperty(exports, "__esModule", {
54669 value: true
54670});
54671exports.NativeImageDecoder = void 0;
54672
54673var _colorspace = __w_pdfjs_require__(169);
54674
54675var _jpeg_stream = __w_pdfjs_require__(164);
54676
54677var _stream = __w_pdfjs_require__(158);
54678
54679function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
54680
54681function _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); } }
54682
54683function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
54684
54685var NativeImageDecoder =
54686/*#__PURE__*/
54687function () {
54688 function NativeImageDecoder(_ref) {
54689 var xref = _ref.xref,
54690 resources = _ref.resources,
54691 handler = _ref.handler,
54692 _ref$forceDataSchema = _ref.forceDataSchema,
54693 forceDataSchema = _ref$forceDataSchema === void 0 ? false : _ref$forceDataSchema,
54694 pdfFunctionFactory = _ref.pdfFunctionFactory;
54695
54696 _classCallCheck(this, NativeImageDecoder);
54697
54698 this.xref = xref;
54699 this.resources = resources;
54700 this.handler = handler;
54701 this.forceDataSchema = forceDataSchema;
54702 this.pdfFunctionFactory = pdfFunctionFactory;
54703 }
54704
54705 _createClass(NativeImageDecoder, [{
54706 key: "canDecode",
54707 value: function canDecode(image) {
54708 return image instanceof _jpeg_stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources, this.pdfFunctionFactory);
54709 }
54710 }, {
54711 key: "decode",
54712 value: function decode(image) {
54713 var dict = image.dict;
54714 var colorSpace = dict.get('ColorSpace', 'CS');
54715 colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources, this.pdfFunctionFactory);
54716 return this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), colorSpace.numComps]).then(function (_ref2) {
54717 var data = _ref2.data,
54718 width = _ref2.width,
54719 height = _ref2.height;
54720 return new _stream.Stream(data, 0, data.length, dict);
54721 });
54722 }
54723 }], [{
54724 key: "isSupported",
54725 value: function isSupported(image, xref, res, pdfFunctionFactory) {
54726 var dict = image.dict;
54727
54728 if (dict.has('DecodeParms') || dict.has('DP')) {
54729 return false;
54730 }
54731
54732 var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
54733
54734 return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D'));
54735 }
54736 }, {
54737 key: "isDecodable",
54738 value: function isDecodable(image, xref, res, pdfFunctionFactory) {
54739 var dict = image.dict;
54740
54741 if (dict.has('DecodeParms') || dict.has('DP')) {
54742 return false;
54743 }
54744
54745 var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res, pdfFunctionFactory);
54746
54747 var bpc = dict.get('BitsPerComponent', 'BPC') || 1;
54748 return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D'), bpc);
54749 }
54750 }]);
54751
54752 return NativeImageDecoder;
54753}();
54754
54755exports.NativeImageDecoder = NativeImageDecoder;
54756
54757/***/ }),
54758/* 190 */
54759/***/ (function(module, exports, __w_pdfjs_require__) {
54760
54761"use strict";
54762
54763
54764Object.defineProperty(exports, "__esModule", {
54765 value: true
54766});
54767exports.PDFImage = void 0;
54768
54769var _util = __w_pdfjs_require__(5);
54770
54771var _primitives = __w_pdfjs_require__(151);
54772
54773var _colorspace = __w_pdfjs_require__(169);
54774
54775var _stream = __w_pdfjs_require__(158);
54776
54777var _jpeg_stream = __w_pdfjs_require__(164);
54778
54779var _jpx = __w_pdfjs_require__(167);
54780
54781function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
54782
54783function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
54784
54785function _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; }
54786
54787function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
54788
54789var PDFImage = function PDFImageClosure() {
54790 function handleImageData(image, nativeDecoder) {
54791 if (nativeDecoder && nativeDecoder.canDecode(image)) {
54792 return nativeDecoder.decode(image)["catch"](function (reason) {
54793 (0, _util.warn)('Native image decoding failed -- trying to recover: ' + (reason && reason.message));
54794 return image;
54795 });
54796 }
54797
54798 return Promise.resolve(image);
54799 }
54800
54801 function decodeAndClamp(value, addend, coefficient, max) {
54802 value = addend + value * coefficient;
54803 return value < 0 ? 0 : value > max ? max : value;
54804 }
54805
54806 function resizeImageMask(src, bpc, w1, h1, w2, h2) {
54807 var length = w2 * h2;
54808 var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
54809 var xRatio = w1 / w2;
54810 var yRatio = h1 / h2;
54811 var i,
54812 j,
54813 py,
54814 newIndex = 0,
54815 oldIndex;
54816 var xScaled = new Uint16Array(w2);
54817 var w1Scanline = w1;
54818
54819 for (i = 0; i < w2; i++) {
54820 xScaled[i] = Math.floor(i * xRatio);
54821 }
54822
54823 for (i = 0; i < h2; i++) {
54824 py = Math.floor(i * yRatio) * w1Scanline;
54825
54826 for (j = 0; j < w2; j++) {
54827 oldIndex = py + xScaled[j];
54828 dest[newIndex++] = src[oldIndex];
54829 }
54830 }
54831
54832 return dest;
54833 }
54834
54835 function PDFImage(_ref) {
54836 var xref = _ref.xref,
54837 res = _ref.res,
54838 image = _ref.image,
54839 _ref$isInline = _ref.isInline,
54840 isInline = _ref$isInline === void 0 ? false : _ref$isInline,
54841 _ref$smask = _ref.smask,
54842 smask = _ref$smask === void 0 ? null : _ref$smask,
54843 _ref$mask = _ref.mask,
54844 mask = _ref$mask === void 0 ? null : _ref$mask,
54845 _ref$isMask = _ref.isMask,
54846 isMask = _ref$isMask === void 0 ? false : _ref$isMask,
54847 pdfFunctionFactory = _ref.pdfFunctionFactory;
54848 this.image = image;
54849 var dict = image.dict;
54850 var filter = dict.get('Filter');
54851
54852 if ((0, _primitives.isName)(filter)) {
54853 switch (filter.name) {
54854 case 'JPXDecode':
54855 var jpxImage = new _jpx.JpxImage();
54856 jpxImage.parseImageProperties(image.stream);
54857 image.stream.reset();
54858 image.width = jpxImage.width;
54859 image.height = jpxImage.height;
54860 image.bitsPerComponent = jpxImage.bitsPerComponent;
54861 image.numComps = jpxImage.componentsCount;
54862 break;
54863
54864 case 'JBIG2Decode':
54865 image.bitsPerComponent = 1;
54866 image.numComps = 1;
54867 break;
54868 }
54869 }
54870
54871 var width = dict.get('Width', 'W');
54872 var height = dict.get('Height', 'H');
54873
54874 if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {
54875 (0, _util.warn)('PDFImage - using the Width/Height of the image data, ' + 'rather than the image dictionary.');
54876 width = image.width;
54877 height = image.height;
54878 }
54879
54880 if (width < 1 || height < 1) {
54881 throw new _util.FormatError("Invalid image width: ".concat(width, " or ") + "height: ".concat(height));
54882 }
54883
54884 this.width = width;
54885 this.height = height;
54886 this.interpolate = dict.get('Interpolate', 'I') || false;
54887 this.imageMask = dict.get('ImageMask', 'IM') || false;
54888 this.matte = dict.get('Matte') || false;
54889 var bitsPerComponent = image.bitsPerComponent;
54890
54891 if (!bitsPerComponent) {
54892 bitsPerComponent = dict.get('BitsPerComponent', 'BPC');
54893
54894 if (!bitsPerComponent) {
54895 if (this.imageMask) {
54896 bitsPerComponent = 1;
54897 } else {
54898 throw new _util.FormatError("Bits per component missing in image: ".concat(this.imageMask));
54899 }
54900 }
54901 }
54902
54903 this.bpc = bitsPerComponent;
54904
54905 if (!this.imageMask) {
54906 var colorSpace = dict.get('ColorSpace', 'CS');
54907
54908 if (!colorSpace) {
54909 (0, _util.info)('JPX images (which do not require color spaces)');
54910
54911 switch (image.numComps) {
54912 case 1:
54913 colorSpace = _primitives.Name.get('DeviceGray');
54914 break;
54915
54916 case 3:
54917 colorSpace = _primitives.Name.get('DeviceRGB');
54918 break;
54919
54920 case 4:
54921 colorSpace = _primitives.Name.get('DeviceCMYK');
54922 break;
54923
54924 default:
54925 throw new Error("JPX images with ".concat(image.numComps, " ") + 'color components not supported.');
54926 }
54927 }
54928
54929 var resources = isInline ? res : null;
54930 this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);
54931 this.numComps = this.colorSpace.numComps;
54932 }
54933
54934 this.decode = dict.getArray('Decode', 'D');
54935 this.needsDecode = false;
54936
54937 if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
54938 this.needsDecode = true;
54939 var max = (1 << bitsPerComponent) - 1;
54940 this.decodeCoefficients = [];
54941 this.decodeAddends = [];
54942 var isIndexed = this.colorSpace && this.colorSpace.name === 'Indexed';
54943
54944 for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
54945 var dmin = this.decode[i];
54946 var dmax = this.decode[i + 1];
54947 this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
54948 this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
54949 }
54950 }
54951
54952 if (smask) {
54953 this.smask = new PDFImage({
54954 xref: xref,
54955 res: res,
54956 image: smask,
54957 isInline: isInline,
54958 pdfFunctionFactory: pdfFunctionFactory
54959 });
54960 } else if (mask) {
54961 if ((0, _primitives.isStream)(mask)) {
54962 var maskDict = mask.dict,
54963 imageMask = maskDict.get('ImageMask', 'IM');
54964
54965 if (!imageMask) {
54966 (0, _util.warn)('Ignoring /Mask in image without /ImageMask.');
54967 } else {
54968 this.mask = new PDFImage({
54969 xref: xref,
54970 res: res,
54971 image: mask,
54972 isInline: isInline,
54973 isMask: true,
54974 pdfFunctionFactory: pdfFunctionFactory
54975 });
54976 }
54977 } else {
54978 this.mask = mask;
54979 }
54980 }
54981 }
54982
54983 PDFImage.buildImage = function (_ref2) {
54984 var handler = _ref2.handler,
54985 xref = _ref2.xref,
54986 res = _ref2.res,
54987 image = _ref2.image,
54988 _ref2$isInline = _ref2.isInline,
54989 isInline = _ref2$isInline === void 0 ? false : _ref2$isInline,
54990 _ref2$nativeDecoder = _ref2.nativeDecoder,
54991 nativeDecoder = _ref2$nativeDecoder === void 0 ? null : _ref2$nativeDecoder,
54992 pdfFunctionFactory = _ref2.pdfFunctionFactory;
54993 var imagePromise = handleImageData(image, nativeDecoder);
54994 var smaskPromise;
54995 var maskPromise;
54996 var smask = image.dict.get('SMask');
54997 var mask = image.dict.get('Mask');
54998
54999 if (smask) {
55000 smaskPromise = handleImageData(smask, nativeDecoder);
55001 maskPromise = Promise.resolve(null);
55002 } else {
55003 smaskPromise = Promise.resolve(null);
55004
55005 if (mask) {
55006 if ((0, _primitives.isStream)(mask)) {
55007 maskPromise = handleImageData(mask, nativeDecoder);
55008 } else if (Array.isArray(mask)) {
55009 maskPromise = Promise.resolve(mask);
55010 } else {
55011 (0, _util.warn)('Unsupported mask format.');
55012 maskPromise = Promise.resolve(null);
55013 }
55014 } else {
55015 maskPromise = Promise.resolve(null);
55016 }
55017 }
55018
55019 return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (_ref3) {
55020 var _ref4 = _slicedToArray(_ref3, 3),
55021 imageData = _ref4[0],
55022 smaskData = _ref4[1],
55023 maskData = _ref4[2];
55024
55025 return new PDFImage({
55026 xref: xref,
55027 res: res,
55028 image: imageData,
55029 isInline: isInline,
55030 smask: smaskData,
55031 mask: maskData,
55032 pdfFunctionFactory: pdfFunctionFactory
55033 });
55034 });
55035 };
55036
55037 PDFImage.createMask = function (_ref5) {
55038 var imgArray = _ref5.imgArray,
55039 width = _ref5.width,
55040 height = _ref5.height,
55041 imageIsFromDecodeStream = _ref5.imageIsFromDecodeStream,
55042 inverseDecode = _ref5.inverseDecode;
55043 var computedLength = (width + 7 >> 3) * height;
55044 var actualLength = imgArray.byteLength;
55045 var haveFullData = computedLength === actualLength;
55046 var data, i;
55047
55048 if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
55049 data = imgArray;
55050 } else if (!inverseDecode) {
55051 data = new Uint8ClampedArray(actualLength);
55052 data.set(imgArray);
55053 } else {
55054 data = new Uint8ClampedArray(computedLength);
55055 data.set(imgArray);
55056
55057 for (i = actualLength; i < computedLength; i++) {
55058 data[i] = 0xff;
55059 }
55060 }
55061
55062 if (inverseDecode) {
55063 for (i = 0; i < actualLength; i++) {
55064 data[i] ^= 0xFF;
55065 }
55066 }
55067
55068 return {
55069 data: data,
55070 width: width,
55071 height: height
55072 };
55073 };
55074
55075 PDFImage.prototype = {
55076 get drawWidth() {
55077 return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
55078 },
55079
55080 get drawHeight() {
55081 return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
55082 },
55083
55084 decodeBuffer: function decodeBuffer(buffer) {
55085 var bpc = this.bpc;
55086 var numComps = this.numComps;
55087 var decodeAddends = this.decodeAddends;
55088 var decodeCoefficients = this.decodeCoefficients;
55089 var max = (1 << bpc) - 1;
55090 var i, ii;
55091
55092 if (bpc === 1) {
55093 for (i = 0, ii = buffer.length; i < ii; i++) {
55094 buffer[i] = +!buffer[i];
55095 }
55096
55097 return;
55098 }
55099
55100 var index = 0;
55101
55102 for (i = 0, ii = this.width * this.height; i < ii; i++) {
55103 for (var j = 0; j < numComps; j++) {
55104 buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
55105 index++;
55106 }
55107 }
55108 },
55109 getComponents: function getComponents(buffer) {
55110 var bpc = this.bpc;
55111
55112 if (bpc === 8) {
55113 return buffer;
55114 }
55115
55116 var width = this.width;
55117 var height = this.height;
55118 var numComps = this.numComps;
55119 var length = width * height * numComps;
55120 var bufferPos = 0;
55121 var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
55122 var rowComps = width * numComps;
55123 var max = (1 << bpc) - 1;
55124 var i = 0,
55125 ii,
55126 buf;
55127
55128 if (bpc === 1) {
55129 var mask, loop1End, loop2End;
55130
55131 for (var j = 0; j < height; j++) {
55132 loop1End = i + (rowComps & ~7);
55133 loop2End = i + rowComps;
55134
55135 while (i < loop1End) {
55136 buf = buffer[bufferPos++];
55137 output[i] = buf >> 7 & 1;
55138 output[i + 1] = buf >> 6 & 1;
55139 output[i + 2] = buf >> 5 & 1;
55140 output[i + 3] = buf >> 4 & 1;
55141 output[i + 4] = buf >> 3 & 1;
55142 output[i + 5] = buf >> 2 & 1;
55143 output[i + 6] = buf >> 1 & 1;
55144 output[i + 7] = buf & 1;
55145 i += 8;
55146 }
55147
55148 if (i < loop2End) {
55149 buf = buffer[bufferPos++];
55150 mask = 128;
55151
55152 while (i < loop2End) {
55153 output[i++] = +!!(buf & mask);
55154 mask >>= 1;
55155 }
55156 }
55157 }
55158 } else {
55159 var bits = 0;
55160 buf = 0;
55161
55162 for (i = 0, ii = length; i < ii; ++i) {
55163 if (i % rowComps === 0) {
55164 buf = 0;
55165 bits = 0;
55166 }
55167
55168 while (bits < bpc) {
55169 buf = buf << 8 | buffer[bufferPos++];
55170 bits += 8;
55171 }
55172
55173 var remainingBits = bits - bpc;
55174 var value = buf >> remainingBits;
55175 output[i] = value < 0 ? 0 : value > max ? max : value;
55176 buf = buf & (1 << remainingBits) - 1;
55177 bits = remainingBits;
55178 }
55179 }
55180
55181 return output;
55182 },
55183 fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) {
55184 var smask = this.smask;
55185 var mask = this.mask;
55186 var alphaBuf, sw, sh, i, ii, j;
55187
55188 if (smask) {
55189 sw = smask.width;
55190 sh = smask.height;
55191 alphaBuf = new Uint8ClampedArray(sw * sh);
55192 smask.fillGrayBuffer(alphaBuf);
55193
55194 if (sw !== width || sh !== height) {
55195 alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
55196 }
55197 } else if (mask) {
55198 if (mask instanceof PDFImage) {
55199 sw = mask.width;
55200 sh = mask.height;
55201 alphaBuf = new Uint8ClampedArray(sw * sh);
55202 mask.numComps = 1;
55203 mask.fillGrayBuffer(alphaBuf);
55204
55205 for (i = 0, ii = sw * sh; i < ii; ++i) {
55206 alphaBuf[i] = 255 - alphaBuf[i];
55207 }
55208
55209 if (sw !== width || sh !== height) {
55210 alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
55211 }
55212 } else if (Array.isArray(mask)) {
55213 alphaBuf = new Uint8ClampedArray(width * height);
55214 var numComps = this.numComps;
55215
55216 for (i = 0, ii = width * height; i < ii; ++i) {
55217 var opacity = 0;
55218 var imageOffset = i * numComps;
55219
55220 for (j = 0; j < numComps; ++j) {
55221 var color = image[imageOffset + j];
55222 var maskOffset = j * 2;
55223
55224 if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
55225 opacity = 255;
55226 break;
55227 }
55228 }
55229
55230 alphaBuf[i] = opacity;
55231 }
55232 } else {
55233 throw new _util.FormatError('Unknown mask format.');
55234 }
55235 }
55236
55237 if (alphaBuf) {
55238 for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
55239 rgbaBuf[j] = alphaBuf[i];
55240 }
55241 } else {
55242 for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
55243 rgbaBuf[j] = 255;
55244 }
55245 }
55246 },
55247 undoPreblend: function undoPreblend(buffer, width, height) {
55248 var matte = this.smask && this.smask.matte;
55249
55250 if (!matte) {
55251 return;
55252 }
55253
55254 var matteRgb = this.colorSpace.getRgb(matte, 0);
55255 var matteR = matteRgb[0];
55256 var matteG = matteRgb[1];
55257 var matteB = matteRgb[2];
55258 var length = width * height * 4;
55259
55260 for (var i = 0; i < length; i += 4) {
55261 var alpha = buffer[i + 3];
55262
55263 if (alpha === 0) {
55264 buffer[i] = 255;
55265 buffer[i + 1] = 255;
55266 buffer[i + 2] = 255;
55267 continue;
55268 }
55269
55270 var k = 255 / alpha;
55271 buffer[i] = (buffer[i] - matteR) * k + matteR;
55272 buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
55273 buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
55274 }
55275 },
55276 createImageData: function createImageData() {
55277 var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
55278 var drawWidth = this.drawWidth;
55279 var drawHeight = this.drawHeight;
55280 var imgData = {
55281 width: drawWidth,
55282 height: drawHeight,
55283 kind: 0,
55284 data: null
55285 };
55286 var numComps = this.numComps;
55287 var originalWidth = this.width;
55288 var originalHeight = this.height;
55289 var bpc = this.bpc;
55290 var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
55291 var imgArray;
55292
55293 if (!forceRGBA) {
55294 var kind;
55295
55296 if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {
55297 kind = _util.ImageKind.GRAYSCALE_1BPP;
55298 } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) {
55299 kind = _util.ImageKind.RGB_24BPP;
55300 }
55301
55302 if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
55303 imgData.kind = kind;
55304 imgArray = this.getImageBytes(originalHeight * rowBytes);
55305
55306 if (this.image instanceof _stream.DecodeStream) {
55307 imgData.data = imgArray;
55308 } else {
55309 var newArray = new Uint8ClampedArray(imgArray.length);
55310 newArray.set(imgArray);
55311 imgData.data = newArray;
55312 }
55313
55314 if (this.needsDecode) {
55315 (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, 'PDFImage.createImageData: The image must be grayscale.');
55316 var buffer = imgData.data;
55317
55318 for (var i = 0, ii = buffer.length; i < ii; i++) {
55319 buffer[i] ^= 0xff;
55320 }
55321 }
55322
55323 return imgData;
55324 }
55325
55326 if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
55327 var imageLength = originalHeight * rowBytes;
55328
55329 switch (this.colorSpace.name) {
55330 case 'DeviceGray':
55331 imageLength *= 3;
55332
55333 case 'DeviceRGB':
55334 case 'DeviceCMYK':
55335 imgData.kind = _util.ImageKind.RGB_24BPP;
55336 imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
55337 return imgData;
55338 }
55339 }
55340 }
55341
55342 imgArray = this.getImageBytes(originalHeight * rowBytes);
55343 var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
55344 var comps = this.getComponents(imgArray);
55345 var alpha01, maybeUndoPreblend;
55346
55347 if (!forceRGBA && !this.smask && !this.mask) {
55348 imgData.kind = _util.ImageKind.RGB_24BPP;
55349 imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
55350 alpha01 = 0;
55351 maybeUndoPreblend = false;
55352 } else {
55353 imgData.kind = _util.ImageKind.RGBA_32BPP;
55354 imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
55355 alpha01 = 1;
55356 maybeUndoPreblend = true;
55357 this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
55358 }
55359
55360 if (this.needsDecode) {
55361 this.decodeBuffer(comps);
55362 }
55363
55364 this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);
55365
55366 if (maybeUndoPreblend) {
55367 this.undoPreblend(imgData.data, drawWidth, actualHeight);
55368 }
55369
55370 return imgData;
55371 },
55372 fillGrayBuffer: function fillGrayBuffer(buffer) {
55373 var numComps = this.numComps;
55374
55375 if (numComps !== 1) {
55376 throw new _util.FormatError("Reading gray scale from a color image: ".concat(numComps));
55377 }
55378
55379 var width = this.width;
55380 var height = this.height;
55381 var bpc = this.bpc;
55382 var rowBytes = width * numComps * bpc + 7 >> 3;
55383 var imgArray = this.getImageBytes(height * rowBytes);
55384 var comps = this.getComponents(imgArray);
55385 var i, length;
55386
55387 if (bpc === 1) {
55388 length = width * height;
55389
55390 if (this.needsDecode) {
55391 for (i = 0; i < length; ++i) {
55392 buffer[i] = comps[i] - 1 & 255;
55393 }
55394 } else {
55395 for (i = 0; i < length; ++i) {
55396 buffer[i] = -comps[i] & 255;
55397 }
55398 }
55399
55400 return;
55401 }
55402
55403 if (this.needsDecode) {
55404 this.decodeBuffer(comps);
55405 }
55406
55407 length = width * height;
55408 var scale = 255 / ((1 << bpc) - 1);
55409
55410 for (i = 0; i < length; ++i) {
55411 buffer[i] = scale * comps[i];
55412 }
55413 },
55414 getImageBytes: function getImageBytes(length, drawWidth, drawHeight) {
55415 var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
55416 this.image.reset();
55417 this.image.drawWidth = drawWidth || this.width;
55418 this.image.drawHeight = drawHeight || this.height;
55419 this.image.forceRGB = !!forceRGB;
55420 return this.image.getBytes(length, true);
55421 }
55422 };
55423 return PDFImage;
55424}();
55425
55426exports.PDFImage = PDFImage;
55427
55428/***/ }),
55429/* 191 */
55430/***/ (function(module, exports, __w_pdfjs_require__) {
55431
55432"use strict";
55433
55434
55435Object.defineProperty(exports, "__esModule", {
55436 value: true
55437});
55438exports.MessageHandler = MessageHandler;
55439
55440var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
55441
55442var _util = __w_pdfjs_require__(5);
55443
55444function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
55445
55446function _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); }
55447
55448function 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); } }
55449
55450function _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); }); }; }
55451
55452function resolveCall(_x, _x2) {
55453 return _resolveCall.apply(this, arguments);
55454}
55455
55456function _resolveCall() {
55457 _resolveCall = _asyncToGenerator(
55458 /*#__PURE__*/
55459 _regenerator["default"].mark(function _callee(fn, args) {
55460 var thisArg,
55461 _args = arguments;
55462 return _regenerator["default"].wrap(function _callee$(_context) {
55463 while (1) {
55464 switch (_context.prev = _context.next) {
55465 case 0:
55466 thisArg = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;
55467
55468 if (fn) {
55469 _context.next = 3;
55470 break;
55471 }
55472
55473 return _context.abrupt("return", undefined);
55474
55475 case 3:
55476 return _context.abrupt("return", fn.apply(thisArg, args));
55477
55478 case 4:
55479 case "end":
55480 return _context.stop();
55481 }
55482 }
55483 }, _callee);
55484 }));
55485 return _resolveCall.apply(this, arguments);
55486}
55487
55488function wrapReason(reason) {
55489 if (_typeof(reason) !== 'object') {
55490 return reason;
55491 }
55492
55493 switch (reason.name) {
55494 case 'AbortException':
55495 return new _util.AbortException(reason.message);
55496
55497 case 'MissingPDFException':
55498 return new _util.MissingPDFException(reason.message);
55499
55500 case 'UnexpectedResponseException':
55501 return new _util.UnexpectedResponseException(reason.message, reason.status);
55502
55503 default:
55504 return new _util.UnknownErrorException(reason.message, reason.details);
55505 }
55506}
55507
55508function makeReasonSerializable(reason) {
55509 if (!(reason instanceof Error) || reason instanceof _util.AbortException || reason instanceof _util.MissingPDFException || reason instanceof _util.UnexpectedResponseException || reason instanceof _util.UnknownErrorException) {
55510 return reason;
55511 }
55512
55513 return new _util.UnknownErrorException(reason.message, reason.toString());
55514}
55515
55516function resolveOrReject(capability, success, reason) {
55517 if (success) {
55518 capability.resolve();
55519 } else {
55520 capability.reject(reason);
55521 }
55522}
55523
55524function finalize(promise) {
55525 return Promise.resolve(promise)["catch"](function () {});
55526}
55527
55528function MessageHandler(sourceName, targetName, comObj) {
55529 var _this = this;
55530
55531 this.sourceName = sourceName;
55532 this.targetName = targetName;
55533 this.comObj = comObj;
55534 this.callbackId = 1;
55535 this.streamId = 1;
55536 this.postMessageTransfers = true;
55537 this.streamSinks = Object.create(null);
55538 this.streamControllers = Object.create(null);
55539 var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
55540 var ah = this.actionHandler = Object.create(null);
55541
55542 this._onComObjOnMessage = function (event) {
55543 var data = event.data;
55544
55545 if (data.targetName !== _this.sourceName) {
55546 return;
55547 }
55548
55549 if (data.stream) {
55550 _this._processStreamMessage(data);
55551 } else if (data.isReply) {
55552 var callbackId = data.callbackId;
55553
55554 if (data.callbackId in callbacksCapabilities) {
55555 var callback = callbacksCapabilities[callbackId];
55556 delete callbacksCapabilities[callbackId];
55557
55558 if ('error' in data) {
55559 callback.reject(wrapReason(data.error));
55560 } else {
55561 callback.resolve(data.data);
55562 }
55563 } else {
55564 throw new Error("Cannot resolve callback ".concat(callbackId));
55565 }
55566 } else if (data.action in ah) {
55567 var action = ah[data.action];
55568
55569 if (data.callbackId) {
55570 var _sourceName = _this.sourceName;
55571 var _targetName = data.sourceName;
55572 Promise.resolve().then(function () {
55573 return action[0].call(action[1], data.data);
55574 }).then(function (result) {
55575 comObj.postMessage({
55576 sourceName: _sourceName,
55577 targetName: _targetName,
55578 isReply: true,
55579 callbackId: data.callbackId,
55580 data: result
55581 });
55582 }, function (reason) {
55583 comObj.postMessage({
55584 sourceName: _sourceName,
55585 targetName: _targetName,
55586 isReply: true,
55587 callbackId: data.callbackId,
55588 error: makeReasonSerializable(reason)
55589 });
55590 });
55591 } else if (data.streamId) {
55592 _this._createStreamSink(data);
55593 } else {
55594 action[0].call(action[1], data.data);
55595 }
55596 } else {
55597 throw new Error("Unknown action from worker: ".concat(data.action));
55598 }
55599 };
55600
55601 comObj.addEventListener('message', this._onComObjOnMessage);
55602}
55603
55604MessageHandler.prototype = {
55605 on: function on(actionName, handler, scope) {
55606 var ah = this.actionHandler;
55607
55608 if (ah[actionName]) {
55609 throw new Error("There is already an actionName called \"".concat(actionName, "\""));
55610 }
55611
55612 ah[actionName] = [handler, scope];
55613 },
55614 send: function send(actionName, data, transfers) {
55615 var message = {
55616 sourceName: this.sourceName,
55617 targetName: this.targetName,
55618 action: actionName,
55619 data: data
55620 };
55621 this.postMessage(message, transfers);
55622 },
55623 sendWithPromise: function sendWithPromise(actionName, data, transfers) {
55624 var callbackId = this.callbackId++;
55625 var message = {
55626 sourceName: this.sourceName,
55627 targetName: this.targetName,
55628 action: actionName,
55629 data: data,
55630 callbackId: callbackId
55631 };
55632 var capability = (0, _util.createPromiseCapability)();
55633 this.callbacksCapabilities[callbackId] = capability;
55634
55635 try {
55636 this.postMessage(message, transfers);
55637 } catch (e) {
55638 capability.reject(e);
55639 }
55640
55641 return capability.promise;
55642 },
55643 sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) {
55644 var _this2 = this;
55645
55646 var streamId = this.streamId++;
55647 var sourceName = this.sourceName;
55648 var targetName = this.targetName;
55649 return new _util.ReadableStream({
55650 start: function start(controller) {
55651 var startCapability = (0, _util.createPromiseCapability)();
55652 _this2.streamControllers[streamId] = {
55653 controller: controller,
55654 startCall: startCapability,
55655 isClosed: false
55656 };
55657
55658 _this2.postMessage({
55659 sourceName: sourceName,
55660 targetName: targetName,
55661 action: actionName,
55662 streamId: streamId,
55663 data: data,
55664 desiredSize: controller.desiredSize
55665 });
55666
55667 return startCapability.promise;
55668 },
55669 pull: function pull(controller) {
55670 var pullCapability = (0, _util.createPromiseCapability)();
55671 _this2.streamControllers[streamId].pullCall = pullCapability;
55672
55673 _this2.postMessage({
55674 sourceName: sourceName,
55675 targetName: targetName,
55676 stream: 'pull',
55677 streamId: streamId,
55678 desiredSize: controller.desiredSize
55679 });
55680
55681 return pullCapability.promise;
55682 },
55683 cancel: function cancel(reason) {
55684 var cancelCapability = (0, _util.createPromiseCapability)();
55685 _this2.streamControllers[streamId].cancelCall = cancelCapability;
55686 _this2.streamControllers[streamId].isClosed = true;
55687
55688 _this2.postMessage({
55689 sourceName: sourceName,
55690 targetName: targetName,
55691 stream: 'cancel',
55692 reason: reason,
55693 streamId: streamId
55694 });
55695
55696 return cancelCapability.promise;
55697 }
55698 }, queueingStrategy);
55699 },
55700 _createStreamSink: function _createStreamSink(data) {
55701 var _this3 = this;
55702
55703 var self = this;
55704 var action = this.actionHandler[data.action];
55705 var streamId = data.streamId;
55706 var desiredSize = data.desiredSize;
55707 var sourceName = this.sourceName;
55708 var targetName = data.sourceName;
55709 var capability = (0, _util.createPromiseCapability)();
55710
55711 var sendStreamRequest = function sendStreamRequest(_ref) {
55712 var stream = _ref.stream,
55713 chunk = _ref.chunk,
55714 transfers = _ref.transfers,
55715 success = _ref.success,
55716 reason = _ref.reason;
55717
55718 _this3.postMessage({
55719 sourceName: sourceName,
55720 targetName: targetName,
55721 stream: stream,
55722 streamId: streamId,
55723 chunk: chunk,
55724 success: success,
55725 reason: reason
55726 }, transfers);
55727 };
55728
55729 var streamSink = {
55730 enqueue: function enqueue(chunk) {
55731 var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
55732 var transfers = arguments.length > 2 ? arguments[2] : undefined;
55733
55734 if (this.isCancelled) {
55735 return;
55736 }
55737
55738 var lastDesiredSize = this.desiredSize;
55739 this.desiredSize -= size;
55740
55741 if (lastDesiredSize > 0 && this.desiredSize <= 0) {
55742 this.sinkCapability = (0, _util.createPromiseCapability)();
55743 this.ready = this.sinkCapability.promise;
55744 }
55745
55746 sendStreamRequest({
55747 stream: 'enqueue',
55748 chunk: chunk,
55749 transfers: transfers
55750 });
55751 },
55752 close: function close() {
55753 if (this.isCancelled) {
55754 return;
55755 }
55756
55757 this.isCancelled = true;
55758 sendStreamRequest({
55759 stream: 'close'
55760 });
55761 delete self.streamSinks[streamId];
55762 },
55763 error: function error(reason) {
55764 if (this.isCancelled) {
55765 return;
55766 }
55767
55768 this.isCancelled = true;
55769 sendStreamRequest({
55770 stream: 'error',
55771 reason: reason
55772 });
55773 },
55774 sinkCapability: capability,
55775 onPull: null,
55776 onCancel: null,
55777 isCancelled: false,
55778 desiredSize: desiredSize,
55779 ready: null
55780 };
55781 streamSink.sinkCapability.resolve();
55782 streamSink.ready = streamSink.sinkCapability.promise;
55783 this.streamSinks[streamId] = streamSink;
55784 resolveCall(action[0], [data.data, streamSink], action[1]).then(function () {
55785 sendStreamRequest({
55786 stream: 'start_complete',
55787 success: true
55788 });
55789 }, function (reason) {
55790 sendStreamRequest({
55791 stream: 'start_complete',
55792 success: false,
55793 reason: reason
55794 });
55795 });
55796 },
55797 _processStreamMessage: function _processStreamMessage(data) {
55798 var _this4 = this;
55799
55800 var sourceName = this.sourceName;
55801 var targetName = data.sourceName;
55802 var streamId = data.streamId;
55803
55804 var sendStreamResponse = function sendStreamResponse(_ref2) {
55805 var stream = _ref2.stream,
55806 success = _ref2.success,
55807 reason = _ref2.reason;
55808
55809 _this4.comObj.postMessage({
55810 sourceName: sourceName,
55811 targetName: targetName,
55812 stream: stream,
55813 success: success,
55814 streamId: streamId,
55815 reason: reason
55816 });
55817 };
55818
55819 var deleteStreamController = function deleteStreamController() {
55820 Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) {
55821 return capability && finalize(capability.promise);
55822 })).then(function () {
55823 delete _this4.streamControllers[data.streamId];
55824 });
55825 };
55826
55827 switch (data.stream) {
55828 case 'start_complete':
55829 resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason));
55830 break;
55831
55832 case 'pull_complete':
55833 resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason));
55834 break;
55835
55836 case 'pull':
55837 if (!this.streamSinks[data.streamId]) {
55838 sendStreamResponse({
55839 stream: 'pull_complete',
55840 success: true
55841 });
55842 break;
55843 }
55844
55845 if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) {
55846 this.streamSinks[data.streamId].sinkCapability.resolve();
55847 }
55848
55849 this.streamSinks[data.streamId].desiredSize = data.desiredSize;
55850 resolveCall(this.streamSinks[data.streamId].onPull).then(function () {
55851 sendStreamResponse({
55852 stream: 'pull_complete',
55853 success: true
55854 });
55855 }, function (reason) {
55856 sendStreamResponse({
55857 stream: 'pull_complete',
55858 success: false,
55859 reason: reason
55860 });
55861 });
55862 break;
55863
55864 case 'enqueue':
55865 (0, _util.assert)(this.streamControllers[data.streamId], 'enqueue should have stream controller');
55866
55867 if (!this.streamControllers[data.streamId].isClosed) {
55868 this.streamControllers[data.streamId].controller.enqueue(data.chunk);
55869 }
55870
55871 break;
55872
55873 case 'close':
55874 (0, _util.assert)(this.streamControllers[data.streamId], 'close should have stream controller');
55875
55876 if (this.streamControllers[data.streamId].isClosed) {
55877 break;
55878 }
55879
55880 this.streamControllers[data.streamId].isClosed = true;
55881 this.streamControllers[data.streamId].controller.close();
55882 deleteStreamController();
55883 break;
55884
55885 case 'error':
55886 (0, _util.assert)(this.streamControllers[data.streamId], 'error should have stream controller');
55887 this.streamControllers[data.streamId].controller.error(wrapReason(data.reason));
55888 deleteStreamController();
55889 break;
55890
55891 case 'cancel_complete':
55892 resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason));
55893 deleteStreamController();
55894 break;
55895
55896 case 'cancel':
55897 if (!this.streamSinks[data.streamId]) {
55898 break;
55899 }
55900
55901 resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () {
55902 sendStreamResponse({
55903 stream: 'cancel_complete',
55904 success: true
55905 });
55906 }, function (reason) {
55907 sendStreamResponse({
55908 stream: 'cancel_complete',
55909 success: false,
55910 reason: reason
55911 });
55912 });
55913 this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason));
55914 this.streamSinks[data.streamId].isCancelled = true;
55915 delete this.streamSinks[data.streamId];
55916 break;
55917
55918 default:
55919 throw new Error('Unexpected stream case');
55920 }
55921 },
55922 postMessage: function postMessage(message, transfers) {
55923 if (transfers && this.postMessageTransfers) {
55924 this.comObj.postMessage(message, transfers);
55925 } else {
55926 this.comObj.postMessage(message);
55927 }
55928 },
55929 destroy: function destroy() {
55930 this.comObj.removeEventListener('message', this._onComObjOnMessage);
55931 }
55932};
55933
55934/***/ }),
55935/* 192 */
55936/***/ (function(module, exports, __w_pdfjs_require__) {
55937
55938"use strict";
55939
55940
55941Object.defineProperty(exports, "__esModule", {
55942 value: true
55943});
55944exports.PDFWorkerStream = void 0;
55945
55946var _regenerator = _interopRequireDefault(__w_pdfjs_require__(2));
55947
55948var _util = __w_pdfjs_require__(5);
55949
55950function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55951
55952function 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); } }
55953
55954function _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); }); }; }
55955
55956function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
55957
55958function _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); } }
55959
55960function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
55961
55962var PDFWorkerStream =
55963/*#__PURE__*/
55964function () {
55965 function PDFWorkerStream(msgHandler) {
55966 _classCallCheck(this, PDFWorkerStream);
55967
55968 this._msgHandler = msgHandler;
55969 this._contentLength = null;
55970 this._fullRequestReader = null;
55971 this._rangeRequestReaders = [];
55972 }
55973
55974 _createClass(PDFWorkerStream, [{
55975 key: "getFullReader",
55976 value: function getFullReader() {
55977 (0, _util.assert)(!this._fullRequestReader);
55978 this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);
55979 return this._fullRequestReader;
55980 }
55981 }, {
55982 key: "getRangeReader",
55983 value: function getRangeReader(begin, end) {
55984 var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);
55985
55986 this._rangeRequestReaders.push(reader);
55987
55988 return reader;
55989 }
55990 }, {
55991 key: "cancelAllRequests",
55992 value: function cancelAllRequests(reason) {
55993 if (this._fullRequestReader) {
55994 this._fullRequestReader.cancel(reason);
55995 }
55996
55997 var readers = this._rangeRequestReaders.slice(0);
55998
55999 readers.forEach(function (reader) {
56000 reader.cancel(reason);
56001 });
56002 }
56003 }]);
56004
56005 return PDFWorkerStream;
56006}();
56007
56008exports.PDFWorkerStream = PDFWorkerStream;
56009
56010var PDFWorkerStreamReader =
56011/*#__PURE__*/
56012function () {
56013 function PDFWorkerStreamReader(msgHandler) {
56014 var _this = this;
56015
56016 _classCallCheck(this, PDFWorkerStreamReader);
56017
56018 this._msgHandler = msgHandler;
56019 this.onProgress = null;
56020 this._contentLength = null;
56021 this._isRangeSupported = false;
56022 this._isStreamingSupported = false;
56023
56024 var readableStream = this._msgHandler.sendWithStream('GetReader');
56025
56026 this._reader = readableStream.getReader();
56027 this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) {
56028 _this._isStreamingSupported = data.isStreamingSupported;
56029 _this._isRangeSupported = data.isRangeSupported;
56030 _this._contentLength = data.contentLength;
56031 });
56032 }
56033
56034 _createClass(PDFWorkerStreamReader, [{
56035 key: "read",
56036 value: function () {
56037 var _read = _asyncToGenerator(
56038 /*#__PURE__*/
56039 _regenerator["default"].mark(function _callee() {
56040 var _ref, value, done;
56041
56042 return _regenerator["default"].wrap(function _callee$(_context) {
56043 while (1) {
56044 switch (_context.prev = _context.next) {
56045 case 0:
56046 _context.next = 2;
56047 return this._reader.read();
56048
56049 case 2:
56050 _ref = _context.sent;
56051 value = _ref.value;
56052 done = _ref.done;
56053
56054 if (!done) {
56055 _context.next = 7;
56056 break;
56057 }
56058
56059 return _context.abrupt("return", {
56060 value: undefined,
56061 done: true
56062 });
56063
56064 case 7:
56065 return _context.abrupt("return", {
56066 value: value.buffer,
56067 done: false
56068 });
56069
56070 case 8:
56071 case "end":
56072 return _context.stop();
56073 }
56074 }
56075 }, _callee, this);
56076 }));
56077
56078 function read() {
56079 return _read.apply(this, arguments);
56080 }
56081
56082 return read;
56083 }()
56084 }, {
56085 key: "cancel",
56086 value: function cancel(reason) {
56087 this._reader.cancel(reason);
56088 }
56089 }, {
56090 key: "headersReady",
56091 get: function get() {
56092 return this._headersReady;
56093 }
56094 }, {
56095 key: "contentLength",
56096 get: function get() {
56097 return this._contentLength;
56098 }
56099 }, {
56100 key: "isStreamingSupported",
56101 get: function get() {
56102 return this._isStreamingSupported;
56103 }
56104 }, {
56105 key: "isRangeSupported",
56106 get: function get() {
56107 return this._isRangeSupported;
56108 }
56109 }]);
56110
56111 return PDFWorkerStreamReader;
56112}();
56113
56114var PDFWorkerStreamRangeReader =
56115/*#__PURE__*/
56116function () {
56117 function PDFWorkerStreamRangeReader(begin, end, msgHandler) {
56118 _classCallCheck(this, PDFWorkerStreamRangeReader);
56119
56120 this._msgHandler = msgHandler;
56121 this.onProgress = null;
56122
56123 var readableStream = this._msgHandler.sendWithStream('GetRangeReader', {
56124 begin: begin,
56125 end: end
56126 });
56127
56128 this._reader = readableStream.getReader();
56129 }
56130
56131 _createClass(PDFWorkerStreamRangeReader, [{
56132 key: "read",
56133 value: function () {
56134 var _read2 = _asyncToGenerator(
56135 /*#__PURE__*/
56136 _regenerator["default"].mark(function _callee2() {
56137 var _ref2, value, done;
56138
56139 return _regenerator["default"].wrap(function _callee2$(_context2) {
56140 while (1) {
56141 switch (_context2.prev = _context2.next) {
56142 case 0:
56143 _context2.next = 2;
56144 return this._reader.read();
56145
56146 case 2:
56147 _ref2 = _context2.sent;
56148 value = _ref2.value;
56149 done = _ref2.done;
56150
56151 if (!done) {
56152 _context2.next = 7;
56153 break;
56154 }
56155
56156 return _context2.abrupt("return", {
56157 value: undefined,
56158 done: true
56159 });
56160
56161 case 7:
56162 return _context2.abrupt("return", {
56163 value: value.buffer,
56164 done: false
56165 });
56166
56167 case 8:
56168 case "end":
56169 return _context2.stop();
56170 }
56171 }
56172 }, _callee2, this);
56173 }));
56174
56175 function read() {
56176 return _read2.apply(this, arguments);
56177 }
56178
56179 return read;
56180 }()
56181 }, {
56182 key: "cancel",
56183 value: function cancel(reason) {
56184 this._reader.cancel(reason);
56185 }
56186 }, {
56187 key: "isStreamingSupported",
56188 get: function get() {
56189 return false;
56190 }
56191 }]);
56192
56193 return PDFWorkerStreamRangeReader;
56194}();
56195
56196/***/ })
56197/******/ ]);
56198});
56199//# sourceMappingURL=pdf.worker.js.map
\No newline at end of file